@ttt-productions/ttt-core 0.79.48 → 0.79.49

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 (123) hide show
  1. package/dist/constants/business-admin.d.ts +7 -0
  2. package/dist/constants/business-admin.d.ts.map +1 -1
  3. package/dist/constants/business-admin.js +7 -0
  4. package/dist/constants/business-admin.js.map +1 -1
  5. package/dist/constants/index.d.ts +3 -0
  6. package/dist/constants/index.d.ts.map +1 -1
  7. package/dist/constants/index.js +3 -0
  8. package/dist/constants/index.js.map +1 -1
  9. package/dist/constants/legal-review-notice-state.d.ts +5 -0
  10. package/dist/constants/legal-review-notice-state.d.ts.map +1 -0
  11. package/dist/constants/legal-review-notice-state.js +19 -0
  12. package/dist/constants/legal-review-notice-state.js.map +1 -0
  13. package/dist/constants/legal-review-notice.d.ts +102 -0
  14. package/dist/constants/legal-review-notice.d.ts.map +1 -0
  15. package/dist/constants/legal-review-notice.js +171 -0
  16. package/dist/constants/legal-review-notice.js.map +1 -0
  17. package/dist/constants/public-documents.d.ts +20 -0
  18. package/dist/constants/public-documents.d.ts.map +1 -0
  19. package/dist/constants/public-documents.js +48 -0
  20. package/dist/constants/public-documents.js.map +1 -0
  21. package/dist/doc-schemas/content.d.ts +56 -0
  22. package/dist/doc-schemas/content.d.ts.map +1 -1
  23. package/dist/doc-schemas/content.js +34 -0
  24. package/dist/doc-schemas/content.js.map +1 -1
  25. package/dist/doc-schemas/index.d.ts +2 -0
  26. package/dist/doc-schemas/index.d.ts.map +1 -1
  27. package/dist/doc-schemas/index.js +2 -0
  28. package/dist/doc-schemas/index.js.map +1 -1
  29. package/dist/doc-schemas/legal-review-notice.d.ts +8 -0
  30. package/dist/doc-schemas/legal-review-notice.d.ts.map +1 -0
  31. package/dist/doc-schemas/legal-review-notice.js +14 -0
  32. package/dist/doc-schemas/legal-review-notice.js.map +1 -0
  33. package/dist/doc-schemas/payments.d.ts +4 -0
  34. package/dist/doc-schemas/payments.d.ts.map +1 -1
  35. package/dist/doc-schemas/payments.js +6 -0
  36. package/dist/doc-schemas/payments.js.map +1 -1
  37. package/dist/doc-schemas/public-documents.d.ts +677 -0
  38. package/dist/doc-schemas/public-documents.d.ts.map +1 -0
  39. package/dist/doc-schemas/public-documents.js +158 -0
  40. package/dist/doc-schemas/public-documents.js.map +1 -0
  41. package/dist/doc-schemas/registry.d.ts +338 -23
  42. package/dist/doc-schemas/registry.d.ts.map +1 -1
  43. package/dist/doc-schemas/registry.js +8 -1
  44. package/dist/doc-schemas/registry.js.map +1 -1
  45. package/dist/doc-schemas/safety/case.d.ts +3 -3
  46. package/dist/doc-schemas/system.d.ts +14 -0
  47. package/dist/doc-schemas/system.d.ts.map +1 -1
  48. package/dist/doc-schemas/system.js +7 -0
  49. package/dist/doc-schemas/system.js.map +1 -1
  50. package/dist/doc-schemas/user.d.ts +14 -1
  51. package/dist/doc-schemas/user.d.ts.map +1 -1
  52. package/dist/doc-schemas/user.js +13 -7
  53. package/dist/doc-schemas/user.js.map +1 -1
  54. package/dist/media/domain-events-admin.d.ts +0 -6
  55. package/dist/media/domain-events-admin.d.ts.map +1 -1
  56. package/dist/media/domain-events-admin.js +0 -10
  57. package/dist/media/domain-events-admin.js.map +1 -1
  58. package/dist/media/domain-events.d.ts +0 -5
  59. package/dist/media/domain-events.d.ts.map +1 -1
  60. package/dist/media/domain-events.js +1 -2
  61. package/dist/media/domain-events.js.map +1 -1
  62. package/dist/media/pending-media.d.ts +0 -55
  63. package/dist/media/pending-media.d.ts.map +1 -1
  64. package/dist/paths/collection-refs.d.ts +2 -0
  65. package/dist/paths/collection-refs.d.ts.map +1 -1
  66. package/dist/paths/collection-refs.js +3 -0
  67. package/dist/paths/collection-refs.js.map +1 -1
  68. package/dist/paths/collections.d.ts +5 -0
  69. package/dist/paths/collections.d.ts.map +1 -1
  70. package/dist/paths/collections.js +14 -0
  71. package/dist/paths/collections.js.map +1 -1
  72. package/dist/paths/path-builders.d.ts +8 -0
  73. package/dist/paths/path-builders.d.ts.map +1 -1
  74. package/dist/paths/path-builders.js +17 -0
  75. package/dist/paths/path-builders.js.map +1 -1
  76. package/dist/schemas/admin.d.ts +119 -42
  77. package/dist/schemas/admin.d.ts.map +1 -1
  78. package/dist/schemas/admin.js +49 -30
  79. package/dist/schemas/admin.js.map +1 -1
  80. package/dist/schemas/atoms.d.ts +8 -0
  81. package/dist/schemas/atoms.d.ts.map +1 -1
  82. package/dist/schemas/atoms.js +8 -0
  83. package/dist/schemas/atoms.js.map +1 -1
  84. package/dist/schemas/hall-library.d.ts +1 -0
  85. package/dist/schemas/hall-library.d.ts.map +1 -1
  86. package/dist/schemas/hall-library.js +6 -1
  87. package/dist/schemas/hall-library.js.map +1 -1
  88. package/dist/schemas/index.d.ts +1 -0
  89. package/dist/schemas/index.d.ts.map +1 -1
  90. package/dist/schemas/index.js +1 -0
  91. package/dist/schemas/index.js.map +1 -1
  92. package/dist/schemas/notification.d.ts +1 -1
  93. package/dist/schemas/payments.d.ts +1 -0
  94. package/dist/schemas/payments.d.ts.map +1 -1
  95. package/dist/schemas/payments.js +5 -0
  96. package/dist/schemas/payments.js.map +1 -1
  97. package/dist/schemas/public-documents.d.ts +399 -0
  98. package/dist/schemas/public-documents.d.ts.map +1 -0
  99. package/dist/schemas/public-documents.js +147 -0
  100. package/dist/schemas/public-documents.js.map +1 -0
  101. package/dist/schemas/safety.d.ts +1 -1
  102. package/dist/types/audit.d.ts +1 -1
  103. package/dist/types/audit.d.ts.map +1 -1
  104. package/dist/types/audit.js.map +1 -1
  105. package/dist/types/index.d.ts +1 -0
  106. package/dist/types/index.d.ts.map +1 -1
  107. package/dist/types/index.js +1 -0
  108. package/dist/types/index.js.map +1 -1
  109. package/dist/types/public-documents.d.ts +3 -0
  110. package/dist/types/public-documents.d.ts.map +1 -0
  111. package/dist/types/public-documents.js +2 -0
  112. package/dist/types/public-documents.js.map +1 -0
  113. package/dist/types/system.d.ts +3 -3
  114. package/dist/types/system.js.map +1 -1
  115. package/dist/utils/index.d.ts +1 -0
  116. package/dist/utils/index.d.ts.map +1 -1
  117. package/dist/utils/index.js +1 -0
  118. package/dist/utils/index.js.map +1 -1
  119. package/dist/utils/public-documents.d.ts +63 -0
  120. package/dist/utils/public-documents.d.ts.map +1 -0
  121. package/dist/utils/public-documents.js +143 -0
  122. package/dist/utils/public-documents.js.map +1 -0
  123. package/package.json +4 -4
@@ -1 +1 @@
1
- {"version":3,"file":"user.js","sourceRoot":"","sources":["../../src/doc-schemas/user.ts"],"names":[],"mappings":"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","sourcesContent":["// User-related Firestore document SCHEMAS — the single source of truth for the\n// `userProfiles/{uid}` doc, its `privateData/{uid}` subdoc, and craft-skill shapes.\n// (The `publicUsers/{uid}` mirror lives in ./publicUser.) TypeScript types are\n// inferred from these schemas via `z.infer`, so a document's shape and its type\n// cannot drift apart. See docs/design/firestore-schema-registry.md (ttt-prod).\n\nimport { z } from 'zod';\nimport { HALL_WING_TYPE_KEYS } from '../types/content.js';\nimport { MAX_ARTISAN_LOCATION_LENGTH } from '../constants/business.js';\nimport { CRAFT_SKILL_TAG_VALUES } from '../constants/options.js';\nimport { userPrivateDataAgeFieldsShape } from './safety/age.js';\nimport { ContentMediaKindSchema } from './media-assets.js';\nimport { calendarDateSchema } from '../schemas/atoms.js';\n\n// The canonical stored media kind — declared once in doc-schemas/media-assets.ts.\nconst mediaKindSchema = ContentMediaKindSchema;\n\n/** The ONE canonical application account status (userProfiles.status is the\n * authoritative value; the chat access projection and the status-reconcile queue\n * derive from the same set). Never re-declare inline. */\nexport const UserAccountStatusSchema = z.enum(['active', 'suspended', 'banned']);\nexport type UserAccountStatus = z.infer<typeof UserAccountStatusSchema>;\n\n// Craft-skill kind — mandatory choice at upload, no default (see ttt-prod\n// docs/design/profile-and-craft-skills.md). 'original' = the artisan's own original creation;\n// 'mimicOnTtt' = a performance/recreation of work that originated in the TTT community\n// (requires a source reference); 'mimicOffTtt' = a performance/recreation of work from\n// outside TTT (covers covers + public-domain works, no source reference).\nexport const CraftSkillKindSchema = z.enum(['original', 'mimicOnTtt', 'mimicOffTtt']);\nexport type CraftSkillKind = z.infer<typeof CraftSkillKindSchema>;\n\n/** The ONE craft-skill kind that carries a `source` reference. The discriminated\n * CraftSkillSchema arm below and every upload-time validator derive from this named\n * declaration rather than re-quoting the member (ENG-005 / ARCH-102). */\nexport const CRAFT_SKILL_KIND_REQUIRING_SOURCE: CraftSkillKind = 'mimicOnTtt';\n\n// Source reference for a 'mimicOnTtt' skill — the original artisan OR the original work,\n// linked mention-style (id only, no name snapshots, resolved at render per the Display\n// Identity Invariant). 'workProject' is the safe framing today; linking a specific hall\n// item is optional future scope.\nexport const CraftSkillSourceReferenceSchema = z\n .object({\n type: z.enum(['user', 'workProject']),\n id: z.string().min(1),\n })\n .strict();\nexport type CraftSkillSourceReference = z.infer<typeof CraftSkillSourceReferenceSchema>;\n\n// The agreed attestation recorded on the doc: which statement (keyed by kind) the\n// uploader agreed to, its version, and when (epoch ms, always a number — never a\n// Firestore Timestamp).\nexport const CraftSkillAttestationSchema = z\n .object({\n statementKind: CraftSkillKindSchema,\n statementVersion: z.number().int().min(1),\n agreedAt: z.number(),\n })\n .strict();\nexport type CraftSkillAttestation = z.infer<typeof CraftSkillAttestationSchema>;\n\n// Base craft-skill fields shared across all kinds. The `kind` + `source` relationship is\n// layered on top as a discriminated union so an invalid combination (e.g. a source on an\n// 'original', or a missing source on a 'mimicOnTtt') fails schema validation.\nconst craftSkillBaseShape = {\n id: z.string(),\n name: z.string(),\n mediaAssetId: z.string(),\n // Canonical discipline-tag allowlist — never open strings (DJ ruling 2026-07-13).\n tags: z.array(z.enum(CRAFT_SKILL_TAG_VALUES)),\n createdAt: z.number(),\n type: mediaKindSchema,\n // Moderation visibility flag. Absent/false = visible; true = hidden by the\n // craft-skill hide cascade (report auto-hide or admin action). Mirrored onto\n // every taggedCraftSkills index doc so discovery surfaces can filter it.\n hidden: z.boolean(),\n attestation: CraftSkillAttestationSchema,\n};\n\nexport const CraftSkillSchema = z.discriminatedUnion('kind', [\n z.object({\n ...craftSkillBaseShape,\n kind: z.literal('original'),\n }),\n z.object({\n ...craftSkillBaseShape,\n kind: z.literal('mimicOnTtt'),\n // REQUIRED for the on-TTT mimic kind: the linked original artisan or work.\n source: CraftSkillSourceReferenceSchema,\n }),\n z.object({\n ...craftSkillBaseShape,\n kind: z.literal('mimicOffTtt'),\n }),\n]);\nexport type CraftSkill = z.infer<typeof CraftSkillSchema>;\n\nexport const CraftSkillReferenceSchema = z.object({\n craftSkillId: z.string(),\n compositeId: z.string(),\n userId: z.string(),\n craftSkillName: z.string(),\n craftSkillAssetId: z.string(),\n craftSkillType: mediaKindSchema,\n tags: z.array(z.enum(CRAFT_SKILL_TAG_VALUES)),\n createdAt: z.number(),\n // Mirror of CraftSkill.hidden; lets the tag-browse filter hidden skills out.\n hidden: z.boolean(),\n // Mirror of CraftSkill.kind so the tag-browse card can render the kind badge without a\n // second read.\n kind: CraftSkillKindSchema,\n // Mirror of CraftSkill.source — present ONLY when kind === 'mimicOnTtt' (the source-doc\n // discriminated union guarantees that invariant on the authoritative side). Lets the\n // browse card render the clickable \"someone performed my work\" source link.\n source: CraftSkillSourceReferenceSchema.optional(),\n});\nexport type CraftSkillReference = z.infer<typeof CraftSkillReferenceSchema>;\n\nexport const MinimalCraftSkillSchema = z.object({\n id: z.string(),\n name: z.string(),\n mediaAssetId: z.string(),\n type: mediaKindSchema,\n});\nexport type MinimalCraftSkill = z.infer<typeof MinimalCraftSkillSchema>;\n\nexport const OwnedWorkProjectSchema = z.object({\n workProjectId: z.string(),\n workingTitle: z.string(),\n workingDescription: z.string(),\n type: z.string(),\n createdOn: z.number(),\n hallWingType: z.enum(HALL_WING_TYPE_KEYS),\n});\nexport type OwnedWorkProject = z.infer<typeof OwnedWorkProjectSchema>;\n\nexport const AssociatedWorkProjectSchema = z.object({\n workProjectId: z.string(),\n workingTitle: z.string(),\n workingDescription: z.string(),\n type: z.string(),\n joinedOn: z.number(),\n});\nexport type AssociatedWorkProject = z.infer<typeof AssociatedWorkProjectSchema>;\n\nexport const FullUserSchema = z.object({\n uid: z.string(),\n displayName: z.string(),\n displayName_lowercase: z.string(),\n // One asset, variants full/medium/small in the mediaAssets registry; URLs\n // are built at render time (media-assets-and-protected-serving.md).\n profilePictureAssetId: z.string().nullable().optional(),\n artisanCreator: z.number().optional(),\n // Cosmetic supporter badge. Set true via the Admin SDK inside the Stripe webhook's\n // pledge-record transaction once the user completes a pledge; rendered on the profile\n // page. Lives here (not publicUsers) because userProfiles/{uid} is already readable by\n // any authenticated user, so other viewers see the badge with no mirror. Not PII.\n // Revoked (→ false) on refund once refunds ship.\n hasPledged: z.boolean().optional(),\n // Charter honor stamp: written once at registration by /api/register/complete as\n // byMode(true, false) — true only for accounts created during Charter Season. The\n // flip publish makes new signups false automatically; no backfill, no date math.\n // Backend-only-writable, cosmetic, not PII (ttt-prod docs/charter-season/honor-roll-and-badges.md).\n charterSignupMember: z.boolean().optional(),\n status: UserAccountStatusSchema.optional(),\n // Stamped by the one status writer on every status change: when, and the acting admin/operator\n // uid (a system actor writes its own id). Absent on an account whose status never changed.\n statusUpdatedAt: z.number().optional(),\n // Either the authenticated actor's uid or a stable namespaced system actor\n // identifier (for example `system:autoHashLock`); never null.\n statusUpdatedBy: z.string().min(1).optional(),\n // Chat-edge-rebuild account-access domain (Contract B / round-10 blocker 1): the\n // single ban/unban ordering version + state the chat `accountAccess` sync events key\n // on. Backend-only-writable. Deliberate defaults when ABSENT: a never-touched account\n // is `{ accountAccessVersion: 0, accountAccessState: 'active' }` (NOT banned) — bumped\n // atomically on suspend/ban/unban, which enqueue the accountAccessChanged fanout.\n accountAccessVersion: z.number().optional(),\n accountAccessState: UserAccountStatusSchema.optional(),\n // Moderation: set true by the forceDisplayNameReset callable when an admin resets an\n // abusive display name. The app gates the user into a forced \"pick a new name\" flow until\n // they complete it via setMyDisplayName (which clears this). Backend-only-writable (like `status`).\n displayNameResetRequired: z.boolean().optional(),\n ownedWorkProjects: z.array(OwnedWorkProjectSchema).optional(),\n associatedWorkProjects: z.array(AssociatedWorkProjectSchema).optional(),\n createdAt: z.number(),\n // N3 data-deletion / GDPR erasure: epoch ms when the account-deletion scrub\n // anonymized this profile in place. When set, the identity fields have been\n // scrubbed (displayName → the FORMER_MEMBER_DISPLAY_NAME sentinel) and the\n // account is a tombstone. Backend-only-writable.\n anonymizedAt: z.number().optional(),\n});\nexport type FullUser = z.infer<typeof FullUserSchema>;\n\nexport const UserAgreementsSchema = z.object({\n age: z.boolean().optional(),\n nudity: z.boolean().optional(),\n meet: z.boolean().optional(),\n cookies: z.boolean().optional(),\n terms: z.boolean().optional(),\n agreedOn: z.number().optional(),\n /**\n * The legal-document versions this account actually accepted, read server-side from the live\n * terms/privacy docs at acceptance time — never client-supplied, never a hardcoded constant.\n *\n * `0` is the sentinel for \"registered while no legal document was published\" (a fresh\n * environment's first account). Published versions start at 1, so 0 can never equal a live\n * version — which is deliberate: it keeps the record from claiming consent that never\n * happened, and leaves the version-bump re-acceptance path free to catch the account once\n * real legal content ships.\n */\n termsVersion: z.number().int().nonnegative().optional(),\n privacyVersion: z.number().int().nonnegative().optional(),\n});\nexport type UserAgreements = z.infer<typeof UserAgreementsSchema>;\n\n/**\n * First-visit site-tour state (account-durable, server-written) stored on\n * `privateData/{uid}.siteTour`. A missing `siteTour` field means the member has never\n * handled the tour. Automatic-invitation eligibility is evaluated in this order:\n * 1. `automaticInvitesDisabledAt` present → never invite automatically (\"Don't show\n * this again\");\n * 2. `notTodayDate` equals the member's current LOCAL calendar date → do not invite\n * that day (\"Not today\");\n * 3. `completedVersion` equals `SITE_TOUR_CURRENT_VERSION` → already handled;\n * 4. otherwise → offer the tour.\n * Written ONLY by the `updateSiteTourPreference` callable via the Admin SDK; never\n * client-written. `notTodayDate` is a strict `YYYY-MM-DD` local-date string (same\n * date-string convention as the age cluster's `attestedDateOfBirth`). See\n * docs/design/landing-backstage-guide-and-first-visit-plan.md §10.\n */\nexport const UserSiteTourStateSchema = z.object({\n // The tour version the member completed. The callable stamps SITE_TOUR_CURRENT_VERSION\n // server-side at completion (the version is server-owned, never client-supplied);\n // absent until a completion is recorded.\n completedVersion: z.number().int().optional(),\n // Epoch ms when the tour was completed.\n completedAt: z.number().optional(),\n // The member's LOCAL calendar date (YYYY-MM-DD) recorded by \"Not today\"; the automatic\n // invitation is suppressed for exactly that date, then offered again on a later date.\n notTodayDate: calendarDateSchema.optional(), // 'YYYY-MM-DD'\n // Epoch ms when the member chose \"Don't show this again\" (permanent automatic-invite\n // dismissal). Manual replay from Help ignores this without clearing it.\n automaticInvitesDisabledAt: z.number().optional(),\n});\nexport type UserSiteTourState = z.infer<typeof UserSiteTourStateSchema>;\n\n/**\n * Owner-only account state at `userProfiles/{uid}/privateData/{uid}` (readable\n * only by the owner; never mirrored to publicUsers).\n */\nexport const UserPrivateDataSchema = z.object({\n email: z.string(),\n // Epoch ms when the user applied for news/political posting (not a boolean) so the\n // applicant queue can be ordered/triaged by application date. Mirrors the\n // `artisanCreator?: number` grant-timestamp pattern. Truthy when set, so existing\n // truthiness reads keep working; absent until the user applies.\n isWaitingForNewsApproval: z.number().optional(),\n // Epoch ms when the user attested they are a U.S.-based person while becoming an artisan\n // (required at artisan signup for now). Mirrors the ageAttested attestation pattern; written\n // server-side by becomeArtisanCreator.\n usPersonAttestedAt: z.number().optional(),\n // Non-U.S. artisan-interest \"waitlist\" recorded ONLY for adult accounts when a non-U.S. person\n // asks to be notified once creator signups open in their region. Owner-only, backend-written.\n // `requestedAt` is the immutable first-come-first-serve timestamp; `country`/`region` let signups\n // be opened by jurisdiction as each region's laws clear. Mirrors isWaitingForNewsApproval.\n nonUsArtisanInterest: z\n .object({\n country: z.string().min(1).max(MAX_ARTISAN_LOCATION_LENGTH),\n region: z.string().max(MAX_ARTISAN_LOCATION_LENGTH).optional(),\n requestedAt: z.number(),\n })\n .optional(),\n squareStreetzAgreementsDate: z.number().optional(),\n // The rules-and-agreements `version` in force when the user accepted; 0 when no versioned\n // rules doc existed yet, so a later real version 1 still re-prompts.\n squareStreetzAgreementsVersion: z.number().optional(),\n // Epoch ms when the user accepted the one-time Hall download acknowledgement\n // (personal offline use only, no redistribution). Written server-side by the\n // acceptHallDownloadAcknowledgement callable; gates the Hall download button.\n hallDownloadAcknowledgedAt: z.number().optional(),\n agreements: UserAgreementsSchema.optional(),\n // First-visit site-tour state (account-durable; the SOLE authority for tour\n // eligibility — no local-storage cache/mirror). Absent = never handled. Written only\n // by the updateSiteTourPreference callable. See UserSiteTourStateSchema above.\n siteTour: UserSiteTourStateSchema.optional(),\n // Moderation: human-readable reason for the current account status (set when an\n // admin suspends/bans the user). Written by the setUserStatus callable via the\n // Admin SDK; readable only by the owner (shown in their restricted view).\n // Cleared when the account is reinstated to 'active'.\n statusReason: z.string().optional(),\n statusReasonAt: z.number().optional(),\n // Trust & Safety (§A8): silent interim safety-lock flag. Backend-only-writable,\n // restricted to the owner's view. Set true while a child-safety/NCII action is\n // pending against the account; the app gates the user accordingly.\n safetyLocked: z.boolean().optional(),\n // Trust & Safety (§A7): server-write-only age/registration fields, merged from the\n // standalone age cluster shape (./safety/age.js) so the canonical schema and the\n // age cluster cannot drift.\n ...userPrivateDataAgeFieldsShape,\n});\nexport type UserPrivateData = z.infer<typeof UserPrivateDataSchema>;\n"]}
1
+ {"version":3,"file":"user.js","sourceRoot":"","sources":["../../src/doc-schemas/user.ts"],"names":[],"mappings":"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","sourcesContent":["// User-related Firestore document SCHEMAS — the single source of truth for the\n// `userProfiles/{uid}` doc, its `privateData/{uid}` subdoc, and craft-skill shapes.\n// (The `publicUsers/{uid}` mirror lives in ./publicUser.) TypeScript types are\n// inferred from these schemas via `z.infer`, so a document's shape and its type\n// cannot drift apart. See docs/design/firestore-schema-registry.md (ttt-prod).\n\nimport { z } from 'zod';\nimport { HALL_WING_TYPE_KEYS } from '../types/content.js';\nimport { MAX_ARTISAN_LOCATION_LENGTH } from '../constants/business.js';\nimport { CRAFT_SKILL_TAG_VALUES } from '../constants/options.js';\nimport { userPrivateDataAgeFieldsShape } from './safety/age.js';\nimport { ContentMediaKindSchema } from './media-assets.js';\nimport { calendarDateSchema } from '../schemas/atoms.js';\nimport { PublicDocumentAcceptanceSchema } from './public-documents.js';\n\n// The canonical stored media kind — declared once in doc-schemas/media-assets.ts.\nconst mediaKindSchema = ContentMediaKindSchema;\n\n/** The ONE canonical application account status (userProfiles.status is the\n * authoritative value; the chat access projection and the status-reconcile queue\n * derive from the same set). Never re-declare inline. */\nexport const UserAccountStatusSchema = z.enum(['active', 'suspended', 'banned']);\nexport type UserAccountStatus = z.infer<typeof UserAccountStatusSchema>;\n\n// Craft-skill kind — mandatory choice at upload, no default (see ttt-prod\n// docs/design/profile-and-craft-skills.md). 'original' = the artisan's own original creation;\n// 'mimicOnTtt' = a performance/recreation of work that originated in the TTT community\n// (requires a source reference); 'mimicOffTtt' = a performance/recreation of work from\n// outside TTT (covers covers + public-domain works, no source reference).\nexport const CraftSkillKindSchema = z.enum(['original', 'mimicOnTtt', 'mimicOffTtt']);\nexport type CraftSkillKind = z.infer<typeof CraftSkillKindSchema>;\n\n/** The ONE craft-skill kind that carries a `source` reference. The discriminated\n * CraftSkillSchema arm below and every upload-time validator derive from this named\n * declaration rather than re-quoting the member (ENG-005 / ARCH-102). */\nexport const CRAFT_SKILL_KIND_REQUIRING_SOURCE: CraftSkillKind = 'mimicOnTtt';\n\n// Source reference for a 'mimicOnTtt' skill — the original artisan OR the original work,\n// linked mention-style (id only, no name snapshots, resolved at render per the Display\n// Identity Invariant). 'workProject' is the safe framing today; linking a specific hall\n// item is optional future scope.\nexport const CraftSkillSourceReferenceSchema = z\n .object({\n type: z.enum(['user', 'workProject']),\n id: z.string().min(1),\n })\n .strict();\nexport type CraftSkillSourceReference = z.infer<typeof CraftSkillSourceReferenceSchema>;\n\n// The agreed attestation recorded on the doc: which statement (keyed by kind) the\n// uploader agreed to, its version, and when (epoch ms, always a number — never a\n// Firestore Timestamp).\nexport const CraftSkillAttestationSchema = z\n .object({\n statementKind: CraftSkillKindSchema,\n statementVersion: z.number().int().min(1),\n agreedAt: z.number(),\n })\n .strict();\nexport type CraftSkillAttestation = z.infer<typeof CraftSkillAttestationSchema>;\n\n// Base craft-skill fields shared across all kinds. The `kind` + `source` relationship is\n// layered on top as a discriminated union so an invalid combination (e.g. a source on an\n// 'original', or a missing source on a 'mimicOnTtt') fails schema validation.\nconst craftSkillBaseShape = {\n id: z.string(),\n name: z.string(),\n mediaAssetId: z.string(),\n // Canonical discipline-tag allowlist — never open strings (DJ ruling 2026-07-13).\n tags: z.array(z.enum(CRAFT_SKILL_TAG_VALUES)),\n createdAt: z.number(),\n type: mediaKindSchema,\n // Moderation visibility flag. Absent/false = visible; true = hidden by the\n // craft-skill hide cascade (report auto-hide or admin action). Mirrored onto\n // every taggedCraftSkills index doc so discovery surfaces can filter it.\n hidden: z.boolean(),\n attestation: CraftSkillAttestationSchema,\n};\n\nexport const CraftSkillSchema = z.discriminatedUnion('kind', [\n z.object({\n ...craftSkillBaseShape,\n kind: z.literal('original'),\n }),\n z.object({\n ...craftSkillBaseShape,\n kind: z.literal('mimicOnTtt'),\n // REQUIRED for the on-TTT mimic kind: the linked original artisan or work.\n source: CraftSkillSourceReferenceSchema,\n }),\n z.object({\n ...craftSkillBaseShape,\n kind: z.literal('mimicOffTtt'),\n }),\n]);\nexport type CraftSkill = z.infer<typeof CraftSkillSchema>;\n\nexport const CraftSkillReferenceSchema = z.object({\n craftSkillId: z.string(),\n compositeId: z.string(),\n userId: z.string(),\n craftSkillName: z.string(),\n craftSkillAssetId: z.string(),\n craftSkillType: mediaKindSchema,\n tags: z.array(z.enum(CRAFT_SKILL_TAG_VALUES)),\n createdAt: z.number(),\n // Mirror of CraftSkill.hidden; lets the tag-browse filter hidden skills out.\n hidden: z.boolean(),\n // Mirror of CraftSkill.kind so the tag-browse card can render the kind badge without a\n // second read.\n kind: CraftSkillKindSchema,\n // Mirror of CraftSkill.source — present ONLY when kind === 'mimicOnTtt' (the source-doc\n // discriminated union guarantees that invariant on the authoritative side). Lets the\n // browse card render the clickable \"someone performed my work\" source link.\n source: CraftSkillSourceReferenceSchema.optional(),\n});\nexport type CraftSkillReference = z.infer<typeof CraftSkillReferenceSchema>;\n\nexport const MinimalCraftSkillSchema = z.object({\n id: z.string(),\n name: z.string(),\n mediaAssetId: z.string(),\n type: mediaKindSchema,\n});\nexport type MinimalCraftSkill = z.infer<typeof MinimalCraftSkillSchema>;\n\nexport const OwnedWorkProjectSchema = z.object({\n workProjectId: z.string(),\n workingTitle: z.string(),\n workingDescription: z.string(),\n type: z.string(),\n createdOn: z.number(),\n hallWingType: z.enum(HALL_WING_TYPE_KEYS),\n});\nexport type OwnedWorkProject = z.infer<typeof OwnedWorkProjectSchema>;\n\nexport const AssociatedWorkProjectSchema = z.object({\n workProjectId: z.string(),\n workingTitle: z.string(),\n workingDescription: z.string(),\n type: z.string(),\n joinedOn: z.number(),\n});\nexport type AssociatedWorkProject = z.infer<typeof AssociatedWorkProjectSchema>;\n\nexport const FullUserSchema = z.object({\n uid: z.string(),\n displayName: z.string(),\n displayName_lowercase: z.string(),\n // One asset, variants full/medium/small in the mediaAssets registry; URLs\n // are built at render time (media-assets-and-protected-serving.md).\n profilePictureAssetId: z.string().nullable().optional(),\n artisanCreator: z.number().optional(),\n // Cosmetic supporter badge. Set true via the Admin SDK inside the Stripe webhook's\n // pledge-record transaction once the user completes a pledge; rendered on the profile\n // page. Lives here (not publicUsers) because userProfiles/{uid} is already readable by\n // any authenticated user, so other viewers see the badge with no mirror. Not PII.\n // Revoked (→ false) on refund once refunds ship.\n hasPledged: z.boolean().optional(),\n status: UserAccountStatusSchema.optional(),\n // Stamped by the one status writer on every status change: when, and the acting admin/operator\n // uid (a system actor writes its own id). Absent on an account whose status never changed.\n statusUpdatedAt: z.number().optional(),\n // Either the authenticated actor's uid or a stable namespaced system actor\n // identifier (for example `system:autoHashLock`); never null.\n statusUpdatedBy: z.string().min(1).optional(),\n // Chat-edge-rebuild account-access domain (Contract B / round-10 blocker 1): the\n // single ban/unban ordering version + state the chat `accountAccess` sync events key\n // on. Backend-only-writable. Deliberate defaults when ABSENT: a never-touched account\n // is `{ accountAccessVersion: 0, accountAccessState: 'active' }` (NOT banned) — bumped\n // atomically on suspend/ban/unban, which enqueue the accountAccessChanged fanout.\n accountAccessVersion: z.number().optional(),\n accountAccessState: UserAccountStatusSchema.optional(),\n // Moderation: set true by the forceDisplayNameReset callable when an admin resets an\n // abusive display name. The app gates the user into a forced \"pick a new name\" flow until\n // they complete it via setMyDisplayName (which clears this). Backend-only-writable (like `status`).\n displayNameResetRequired: z.boolean().optional(),\n ownedWorkProjects: z.array(OwnedWorkProjectSchema).optional(),\n associatedWorkProjects: z.array(AssociatedWorkProjectSchema).optional(),\n createdAt: z.number(),\n // N3 data-deletion / GDPR erasure: epoch ms when the account-deletion scrub\n // anonymized this profile in place. When set, the identity fields have been\n // scrubbed (displayName → the FORMER_MEMBER_DISPLAY_NAME sentinel) and the\n // account is a tombstone. Backend-only-writable.\n anonymizedAt: z.number().optional(),\n});\nexport type FullUser = z.infer<typeof FullUserSchema>;\n\nexport const UserAgreementsSchema = z.object({\n age: z.boolean().optional(),\n nudity: z.boolean().optional(),\n meet: z.boolean().optional(),\n cookies: z.boolean().optional(),\n terms: z.boolean().optional(),\n agreedOn: z.number().optional(),\n /**\n * The Terms / Privacy versions accepted at registration, read server-side from the live\n * docs at acceptance time — never client-supplied, never a hardcoded constant. Kept for the\n * accounts that recorded them; the current per-document record is\n * `privateData.publicDocumentAcceptance`.\n *\n * `0` is the sentinel for \"registered while no legal document was published\" (a fresh\n * environment's first account). Published versions start at 1, so 0 can never equal a live\n * version — which is deliberate: it keeps the record from claiming consent that never\n * happened, and leaves the version-bump re-acceptance path free to catch the account once\n * real legal content ships.\n */\n termsVersion: z.number().int().nonnegative().optional(),\n privacyVersion: z.number().int().nonnegative().optional(),\n});\nexport type UserAgreements = z.infer<typeof UserAgreementsSchema>;\n\n/**\n * First-visit site-tour state (account-durable, server-written) stored on\n * `privateData/{uid}.siteTour`. A missing `siteTour` field means the member has never\n * handled the tour. Automatic-invitation eligibility is evaluated in this order:\n * 1. `automaticInvitesDisabledAt` present → never invite automatically (\"Don't show\n * this again\");\n * 2. `notTodayDate` equals the member's current LOCAL calendar date → do not invite\n * that day (\"Not today\");\n * 3. `completedVersion` equals `SITE_TOUR_CURRENT_VERSION` → already handled;\n * 4. otherwise → offer the tour.\n * Written ONLY by the `updateSiteTourPreference` callable via the Admin SDK; never\n * client-written. `notTodayDate` is a strict `YYYY-MM-DD` local-date string (same\n * date-string convention as the age cluster's `attestedDateOfBirth`). See\n * docs/design/landing-backstage-guide-and-first-visit-plan.md §10.\n */\nexport const UserSiteTourStateSchema = z.object({\n // The tour version the member completed. The callable stamps SITE_TOUR_CURRENT_VERSION\n // server-side at completion (the version is server-owned, never client-supplied);\n // absent until a completion is recorded.\n completedVersion: z.number().int().optional(),\n // Epoch ms when the tour was completed.\n completedAt: z.number().optional(),\n // The member's LOCAL calendar date (YYYY-MM-DD) recorded by \"Not today\"; the automatic\n // invitation is suppressed for exactly that date, then offered again on a later date.\n notTodayDate: calendarDateSchema.optional(), // 'YYYY-MM-DD'\n // Epoch ms when the member chose \"Don't show this again\" (permanent automatic-invite\n // dismissal). Manual replay from Help ignores this without clearing it.\n automaticInvitesDisabledAt: z.number().optional(),\n});\nexport type UserSiteTourState = z.infer<typeof UserSiteTourStateSchema>;\n\n/**\n * Owner-only account state at `userProfiles/{uid}/privateData/{uid}` (readable\n * only by the owner; never mirrored to publicUsers).\n */\nexport const UserPrivateDataSchema = z.object({\n email: z.string(),\n // Epoch ms when the user applied for news/political posting (not a boolean) so the\n // applicant queue can be ordered/triaged by application date. Mirrors the\n // `artisanCreator?: number` grant-timestamp pattern. Truthy when set, so existing\n // truthiness reads keep working; absent until the user applies.\n isWaitingForNewsApproval: z.number().optional(),\n // Epoch ms when the user attested they are a U.S.-based person while becoming an artisan\n // (required at artisan signup for now). Mirrors the ageAttested attestation pattern; written\n // server-side by becomeArtisanCreator.\n usPersonAttestedAt: z.number().optional(),\n // Non-U.S. artisan-interest \"waitlist\" recorded ONLY for adult accounts when a non-U.S. person\n // asks to be notified once creator signups open in their region. Owner-only, backend-written.\n // `requestedAt` is the immutable first-come-first-serve timestamp; `country`/`region` let signups\n // be opened by jurisdiction as each region's laws clear. Mirrors isWaitingForNewsApproval.\n nonUsArtisanInterest: z\n .object({\n country: z.string().min(1).max(MAX_ARTISAN_LOCATION_LENGTH),\n region: z.string().max(MAX_ARTISAN_LOCATION_LENGTH).optional(),\n requestedAt: z.number(),\n })\n .optional(),\n squareStreetzAgreementsDate: z.number().optional(),\n // The rules-and-agreements `version` in force when the user accepted; 0 when no versioned\n // rules doc existed yet, so a later real version 1 still re-prompts.\n squareStreetzAgreementsVersion: z.number().optional(),\n // The rules-and-agreements version in force when the user accepted the Artisan upgrade's\n // agreement, read server-side in the grant transaction (the grant time is the profile's\n // `artisanCreator` stamp). Same 0 sentinel as `squareStreetzAgreementsVersion`.\n artisanCreatorAgreementsVersion: z.number().int().nonnegative().optional(),\n // Epoch ms when the user accepted the one-time Hall download acknowledgement\n // (personal offline use only, no redistribution). Written server-side by the\n // acceptHallDownloadAcknowledgement callable; gates the Hall download button.\n hallDownloadAcknowledgedAt: z.number().optional(),\n agreements: UserAgreementsSchema.optional(),\n // The latest accepted version of each public document and the accepted level (see\n // PublicDocumentAcceptanceSchema). Written by registration and the acceptance callable only;\n // the `docsAccepted` claim mirrors `acceptedLevel`. Absent = nothing accepted (level 0).\n publicDocumentAcceptance: PublicDocumentAcceptanceSchema.optional(),\n // First-visit site-tour state (account-durable; the SOLE authority for tour\n // eligibility — no local-storage cache/mirror). Absent = never handled. Written only\n // by the updateSiteTourPreference callable. See UserSiteTourStateSchema above.\n siteTour: UserSiteTourStateSchema.optional(),\n // Moderation: human-readable reason for the current account status (set when an\n // admin suspends/bans the user). Written by the setUserStatus callable via the\n // Admin SDK; readable only by the owner (shown in their restricted view).\n // Cleared when the account is reinstated to 'active'.\n statusReason: z.string().optional(),\n statusReasonAt: z.number().optional(),\n // Trust & Safety (§A8): silent interim safety-lock flag. Backend-only-writable,\n // restricted to the owner's view. Set true while a child-safety/NCII action is\n // pending against the account; the app gates the user accordingly.\n safetyLocked: z.boolean().optional(),\n // Trust & Safety (§A7): server-write-only age/registration fields, merged from the\n // standalone age cluster shape (./safety/age.js) so the canonical schema and the\n // age cluster cannot drift.\n ...userPrivateDataAgeFieldsShape,\n});\nexport type UserPrivateData = z.infer<typeof UserPrivateDataSchema>;\n"]}
@@ -43,12 +43,6 @@ export declare const ThresholdLibraryNeedsRevisionEventSchema: z.ZodObject<{
43
43
  hallItemId: z.ZodString;
44
44
  }, z.core.$strict>;
45
45
  }, z.core.$strict>;
46
- export declare const AdminDispatchSystemMarkedEventSchema: z.ZodObject<{
47
- type: z.ZodLiteral<"adminDispatch.systemMarked">;
48
- ids: z.ZodObject<{
49
- userId: z.ZodString;
50
- }, z.core.$strict>;
51
- }, z.core.$strict>;
52
46
  export declare const AdminDispatchThreadUpdatedEventSchema: z.ZodObject<{
53
47
  type: z.ZodLiteral<"adminDispatch.threadUpdated">;
54
48
  ids: z.ZodObject<{
@@ -1 +1 @@
1
- {"version":3,"file":"domain-events-admin.d.ts","sourceRoot":"","sources":["../../src/media/domain-events-admin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAOxB,eAAO,MAAM,qCAAqC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAYvC,CAAC;AAEZ,eAAO,MAAM,mCAAmC;;;;;;kBAUrC,CAAC;AAEZ,eAAO,MAAM,wCAAwC;;;;;;kBAU1C,CAAC;AAEZ,eAAO,MAAM,oCAAoC;;;;;kBAStC,CAAC;AAEZ,eAAO,MAAM,qCAAqC;;;;;kBASvC,CAAC;AAEZ,eAAO,MAAM,8BAA8B;;;;;;kBAUhC,CAAC;AAEZ,eAAO,MAAM,gCAAgC;;;kBAKlC,CAAC;AAKZ,eAAO,MAAM,sCAAsC;;;;;kBASxC,CAAC;AAMZ,eAAO,MAAM,2CAA2C;;;;;;kBAU7C,CAAC;AAEZ,eAAO,MAAM,mCAAmC;;;;;;kBAUrC,CAAC"}
1
+ {"version":3,"file":"domain-events-admin.d.ts","sourceRoot":"","sources":["../../src/media/domain-events-admin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAOxB,eAAO,MAAM,qCAAqC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAYvC,CAAC;AAEZ,eAAO,MAAM,mCAAmC;;;;;;kBAUrC,CAAC;AAEZ,eAAO,MAAM,wCAAwC;;;;;;kBAU1C,CAAC;AAEZ,eAAO,MAAM,qCAAqC;;;;;kBASvC,CAAC;AAEZ,eAAO,MAAM,8BAA8B;;;;;;kBAUhC,CAAC;AAEZ,eAAO,MAAM,gCAAgC;;;kBAKlC,CAAC;AAKZ,eAAO,MAAM,sCAAsC;;;;;kBASxC,CAAC;AAMZ,eAAO,MAAM,2CAA2C;;;;;;kBAU7C,CAAC;AAEZ,eAAO,MAAM,mCAAmC;;;;;;kBAUrC,CAAC"}
@@ -38,16 +38,6 @@ export const ThresholdLibraryNeedsRevisionEventSchema = z
38
38
  .strict(),
39
39
  })
40
40
  .strict();
41
- export const AdminDispatchSystemMarkedEventSchema = z
42
- .object({
43
- type: z.literal('adminDispatch.systemMarked'),
44
- ids: z
45
- .object({
46
- userId: z.string().min(1),
47
- })
48
- .strict(),
49
- })
50
- .strict();
51
41
  export const AdminDispatchThreadUpdatedEventSchema = z
52
42
  .object({
53
43
  type: z.literal('adminDispatch.threadUpdated'),
@@ -1 +1 @@
1
- {"version":3,"file":"domain-events-admin.js","sourceRoot":"","sources":["../../src/media/domain-events-admin.ts"],"names":[],"mappings":"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","sourcesContent":["import { z } from \"zod\";\nimport { FileOriginSchema } from \"./file-origin.js\";\n\n// DomainEvent schemas for the admin/moderation domain — content violations,\n// threshold-library review decisions, admin dispatch, and appeals. Assembled\n// into the discriminated union in ./domain-events.ts.\n\nexport const ModerationViolationCreatedEventSchema = z\n .object({\n type: z.literal('moderation.violationCreated'),\n ids: z\n .object({\n userId: z.string().min(1),\n violationId: z.string().min(1),\n fileOrigin: FileOriginSchema,\n pendingMediaId: z.string().min(1),\n })\n .strict(),\n })\n .strict();\n\nexport const ThresholdLibraryApprovedEventSchema = z\n .object({\n type: z.literal('thresholdLibrary.approved'),\n ids: z\n .object({\n thresholdItemId: z.string().min(1),\n hallItemId: z.string().min(1),\n })\n .strict(),\n })\n .strict();\n\nexport const ThresholdLibraryNeedsRevisionEventSchema = z\n .object({\n type: z.literal('thresholdLibrary.needsRevision'),\n ids: z\n .object({\n thresholdItemId: z.string().min(1),\n hallItemId: z.string().min(1),\n })\n .strict(),\n })\n .strict();\n\nexport const AdminDispatchSystemMarkedEventSchema = z\n .object({\n type: z.literal('adminDispatch.systemMarked'),\n ids: z\n .object({\n userId: z.string().min(1),\n })\n .strict(),\n })\n .strict();\n\nexport const AdminDispatchThreadUpdatedEventSchema = z\n .object({\n type: z.literal('adminDispatch.threadUpdated'),\n ids: z\n .object({\n adminDispatchId: z.string().min(1).nullable(),\n })\n .strict(),\n })\n .strict();\n\nexport const AdminAppealReviewedEventSchema = z\n .object({\n type: z.literal('admin.appealReviewed'),\n ids: z\n .object({\n violationId: z.string().min(1),\n userId: z.string().min(1),\n })\n .strict(),\n })\n .strict();\n\nexport const AdminDispatchReviewedEventSchema = z\n .object({\n type: z.literal('admin.adminDispatchReviewed'),\n ids: z.object({}).strict(),\n })\n .strict();\n\n// An admin forced a display-name reset on a member. The target's displayName is\n// a publicUsers-mirrored field; the actor is an admin, never the member, which\n// is why this is separate from profile.displayNameChanged.\nexport const AdminDisplayNameResetForcedEventSchema = z\n .object({\n type: z.literal('admin.displayNameResetForced'),\n ids: z\n .object({\n userId: z.string().min(1),\n })\n .strict(),\n })\n .strict();\n\n// A hall content change request was APPROVED — the only decision that writes\n// anything. An approval updates the public Work shell and, on the realm grain,\n// the Realm doc, so both ids ride the event; `workRealmId` is absent on the hall\n// grains. A denial changes no content and emits nothing.\nexport const HallContentChangeRequestApprovedEventSchema = z\n .object({\n type: z.literal('hallContentChangeRequest.approved'),\n ids: z\n .object({\n workProjectId: z.string().min(1),\n workRealmId: z.string().min(1).optional(),\n })\n .strict(),\n })\n .strict();\n\nexport const ViolationAppealSubmittedEventSchema = z\n .object({\n type: z.literal('violation.appealSubmitted'),\n ids: z\n .object({\n userId: z.string().min(1),\n violationId: z.string().min(1),\n })\n .strict(),\n })\n .strict();\n"]}
1
+ {"version":3,"file":"domain-events-admin.js","sourceRoot":"","sources":["../../src/media/domain-events-admin.ts"],"names":[],"mappings":"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","sourcesContent":["import { z } from \"zod\";\nimport { FileOriginSchema } from \"./file-origin.js\";\n\n// DomainEvent schemas for the admin/moderation domain — content violations,\n// threshold-library review decisions, admin dispatch, and appeals. Assembled\n// into the discriminated union in ./domain-events.ts.\n\nexport const ModerationViolationCreatedEventSchema = z\n .object({\n type: z.literal('moderation.violationCreated'),\n ids: z\n .object({\n userId: z.string().min(1),\n violationId: z.string().min(1),\n fileOrigin: FileOriginSchema,\n pendingMediaId: z.string().min(1),\n })\n .strict(),\n })\n .strict();\n\nexport const ThresholdLibraryApprovedEventSchema = z\n .object({\n type: z.literal('thresholdLibrary.approved'),\n ids: z\n .object({\n thresholdItemId: z.string().min(1),\n hallItemId: z.string().min(1),\n })\n .strict(),\n })\n .strict();\n\nexport const ThresholdLibraryNeedsRevisionEventSchema = z\n .object({\n type: z.literal('thresholdLibrary.needsRevision'),\n ids: z\n .object({\n thresholdItemId: z.string().min(1),\n hallItemId: z.string().min(1),\n })\n .strict(),\n })\n .strict();\n\nexport const AdminDispatchThreadUpdatedEventSchema = z\n .object({\n type: z.literal('adminDispatch.threadUpdated'),\n ids: z\n .object({\n adminDispatchId: z.string().min(1).nullable(),\n })\n .strict(),\n })\n .strict();\n\nexport const AdminAppealReviewedEventSchema = z\n .object({\n type: z.literal('admin.appealReviewed'),\n ids: z\n .object({\n violationId: z.string().min(1),\n userId: z.string().min(1),\n })\n .strict(),\n })\n .strict();\n\nexport const AdminDispatchReviewedEventSchema = z\n .object({\n type: z.literal('admin.adminDispatchReviewed'),\n ids: z.object({}).strict(),\n })\n .strict();\n\n// An admin forced a display-name reset on a member. The target's displayName is\n// a publicUsers-mirrored field; the actor is an admin, never the member, which\n// is why this is separate from profile.displayNameChanged.\nexport const AdminDisplayNameResetForcedEventSchema = z\n .object({\n type: z.literal('admin.displayNameResetForced'),\n ids: z\n .object({\n userId: z.string().min(1),\n })\n .strict(),\n })\n .strict();\n\n// A hall content change request was APPROVED — the only decision that writes\n// anything. An approval updates the public Work shell and, on the realm grain,\n// the Realm doc, so both ids ride the event; `workRealmId` is absent on the hall\n// grains. A denial changes no content and emits nothing.\nexport const HallContentChangeRequestApprovedEventSchema = z\n .object({\n type: z.literal('hallContentChangeRequest.approved'),\n ids: z\n .object({\n workProjectId: z.string().min(1),\n workRealmId: z.string().min(1).optional(),\n })\n .strict(),\n })\n .strict();\n\nexport const ViolationAppealSubmittedEventSchema = z\n .object({\n type: z.literal('violation.appealSubmitted'),\n ids: z\n .object({\n userId: z.string().min(1),\n violationId: z.string().min(1),\n })\n .strict(),\n })\n .strict();\n"]}
@@ -262,11 +262,6 @@ export declare const DomainEventSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
262
262
  thresholdItemId: z.ZodString;
263
263
  hallItemId: z.ZodString;
264
264
  }, z.core.$strict>;
265
- }, z.core.$strict>, z.ZodObject<{
266
- type: z.ZodLiteral<"adminDispatch.systemMarked">;
267
- ids: z.ZodObject<{
268
- userId: z.ZodString;
269
- }, z.core.$strict>;
270
265
  }, z.core.$strict>, z.ZodObject<{
271
266
  type: z.ZodLiteral<"adminDispatch.threadUpdated">;
272
267
  ids: z.ZodObject<{
@@ -1 +1 @@
1
- {"version":3,"file":"domain-events.d.ts","sourceRoot":"","sources":["../../src/media/domain-events.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAuDxB,cAAc,yBAAyB,CAAC;AACxC,cAAc,yBAAyB,CAAC;AACxC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,0BAA0B,CAAC;AAgBzC,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4BA8C5B,CAAC;AAEH,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAI5D,MAAM,MAAM,iBAAiB,CAAC,CAAC,SAAS,WAAW,CAAC,MAAM,CAAC,IAAI,OAAO,CACpE,WAAW,EACX;IAAE,IAAI,EAAE,CAAC,CAAA;CAAE,CACZ,CAAC,KAAK,CAAC,CAAC"}
1
+ {"version":3,"file":"domain-events.d.ts","sourceRoot":"","sources":["../../src/media/domain-events.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAsDxB,cAAc,yBAAyB,CAAC;AACxC,cAAc,yBAAyB,CAAC;AACxC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,0BAA0B,CAAC;AAgBzC,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4BA6C5B,CAAC;AAEH,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAI5D,MAAM,MAAM,iBAAiB,CAAC,CAAC,SAAS,WAAW,CAAC,MAAM,CAAC,IAAI,OAAO,CACpE,WAAW,EACX;IAAE,IAAI,EAAE,CAAC,CAAA;CAAE,CACZ,CAAC,KAAK,CAAC,CAAC"}
@@ -2,7 +2,7 @@ import { z } from "zod";
2
2
  import { ProfilePictureUpdatedEventSchema, ProfilePreferencesUpdatedEventSchema, CraftSkillCreatedEventSchema, CraftSkillUpdatedEventSchema, CraftSkillDeletedEventSchema, FollowCreatedEventSchema, FollowRemovedEventSchema, MentionReadEventSchema, AuthStatusChangedEventSchema, ProfileDisplayNameChangedEventSchema, } from "./domain-events-user.js";
3
3
  import { WorkProjectCreatedEventSchema, WorkProjectUpdatedEventSchema, WorkProjectPublishedEventSchema, WorkProjectStakeSharesUpdatedEventSchema, GuildInviteSentEventSchema, GuildInviteAcceptedEventSchema, GuildInviteDeclinedEventSchema, GuildInviteCancelledEventSchema, AuditionPromptCreatedEventSchema, AuditionEntrySubmittedEventSchema, AuditionEntryVoteRecordedEventSchema, AuditionClosedEventSchema, CommissionCreatedEventSchema, CommissionProposalSubmittedEventSchema, CommissionClosedEventSchema, CommissionProposalSavedEventSchema, CommissionProposalRemovedEventSchema, HallLibraryCoverUpdatedEventSchema, WorkRealmCoverUpdatedEventSchema, WorkRealmDetailsUpdatedEventSchema, HallLibrarySubItemUpdatedEventSchema, ThresholdLibrarySubmittedEventSchema, } from "./domain-events-work.js";
4
4
  import { SquareStreetzPostCreatedEventSchema, SquareStreetzPostLikedEventSchema, SquareStreetzPostUnlikedEventSchema, } from "./domain-events-social.js";
5
- import { ModerationViolationCreatedEventSchema, ThresholdLibraryApprovedEventSchema, ThresholdLibraryNeedsRevisionEventSchema, AdminDispatchSystemMarkedEventSchema, AdminDispatchThreadUpdatedEventSchema, AdminAppealReviewedEventSchema, AdminDispatchReviewedEventSchema, ViolationAppealSubmittedEventSchema, AdminDisplayNameResetForcedEventSchema, HallContentChangeRequestApprovedEventSchema, } from "./domain-events-admin.js";
5
+ import { ModerationViolationCreatedEventSchema, ThresholdLibraryApprovedEventSchema, ThresholdLibraryNeedsRevisionEventSchema, AdminDispatchThreadUpdatedEventSchema, AdminAppealReviewedEventSchema, AdminDispatchReviewedEventSchema, ViolationAppealSubmittedEventSchema, AdminDisplayNameResetForcedEventSchema, HallContentChangeRequestApprovedEventSchema, } from "./domain-events-admin.js";
6
6
  export * from "./domain-events-user.js";
7
7
  export * from "./domain-events-work.js";
8
8
  export * from "./domain-events-social.js";
@@ -55,7 +55,6 @@ export const DomainEventSchema = z.discriminatedUnion('type', [
55
55
  ThresholdLibrarySubmittedEventSchema,
56
56
  ThresholdLibraryApprovedEventSchema,
57
57
  ThresholdLibraryNeedsRevisionEventSchema,
58
- AdminDispatchSystemMarkedEventSchema,
59
58
  AdminDispatchThreadUpdatedEventSchema,
60
59
  AdminAppealReviewedEventSchema,
61
60
  AdminDispatchReviewedEventSchema,
@@ -1 +1 @@
1
- {"version":3,"file":"domain-events.js","sourceRoot":"","sources":["../../src/media/domain-events.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EACL,gCAAgC,EAChC,oCAAoC,EACpC,4BAA4B,EAC5B,4BAA4B,EAC5B,4BAA4B,EAC5B,wBAAwB,EACxB,wBAAwB,EACxB,sBAAsB,EACtB,4BAA4B,EAC5B,oCAAoC,GACrC,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,6BAA6B,EAC7B,6BAA6B,EAC7B,+BAA+B,EAC/B,wCAAwC,EACxC,0BAA0B,EAC1B,8BAA8B,EAC9B,8BAA8B,EAC9B,+BAA+B,EAC/B,gCAAgC,EAChC,iCAAiC,EACjC,oCAAoC,EACpC,yBAAyB,EACzB,4BAA4B,EAC5B,sCAAsC,EACtC,2BAA2B,EAC3B,kCAAkC,EAClC,oCAAoC,EACpC,kCAAkC,EAClC,gCAAgC,EAChC,kCAAkC,EAClC,oCAAoC,EACpC,oCAAoC,GACrC,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,mCAAmC,EACnC,iCAAiC,EACjC,mCAAmC,GACpC,MAAM,2BAA2B,CAAC;AACnC,OAAO,EACL,qCAAqC,EACrC,mCAAmC,EACnC,wCAAwC,EACxC,oCAAoC,EACpC,qCAAqC,EACrC,8BAA8B,EAC9B,gCAAgC,EAChC,mCAAmC,EACnC,sCAAsC,EACtC,2CAA2C,GAC5C,MAAM,0BAA0B,CAAC;AAElC,cAAc,yBAAyB,CAAC;AACxC,cAAc,yBAAyB,CAAC;AACxC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,0BAA0B,CAAC;AAEzC,+EAA+E;AAC/E,uEAAuE;AACvE,6EAA6E;AAC7E,gEAAgE;AAChE,EAAE;AACF,gDAAgD;AAChD,0CAA0C;AAC1C,iDAAiD;AACjD,mEAAmE;AACnE,EAAE;AACF,0EAA0E;AAC1E,mEAAmE;AACnE,+EAA+E;AAE/E,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC,kBAAkB,CAAC,MAAM,EAAE;IAC5D,gCAAgC;IAChC,4BAA4B;IAC5B,mCAAmC;IACnC,gCAAgC;IAChC,iCAAiC;IACjC,4BAA4B;IAC5B,sCAAsC;IACtC,6BAA6B;IAC7B,kCAAkC;IAClC,gCAAgC;IAChC,oCAAoC;IACpC,qCAAqC;IACrC,wBAAwB;IACxB,wBAAwB;IACxB,iCAAiC;IACjC,mCAAmC;IACnC,oCAAoC;IACpC,4BAA4B;IAC5B,4BAA4B;IAC5B,6BAA6B;IAC7B,+BAA+B;IAC/B,wCAAwC;IACxC,0BAA0B;IAC1B,8BAA8B;IAC9B,8BAA8B;IAC9B,+BAA+B;IAC/B,oCAAoC;IACpC,yBAAyB;IACzB,2BAA2B;IAC3B,kCAAkC;IAClC,oCAAoC;IACpC,oCAAoC;IACpC,mCAAmC;IACnC,wCAAwC;IACxC,oCAAoC;IACpC,qCAAqC;IACrC,8BAA8B;IAC9B,gCAAgC;IAChC,sBAAsB;IACtB,4BAA4B;IAC5B,mCAAmC;IACnC,oCAAoC;IACpC,sCAAsC;IACtC,kCAAkC;IAClC,2CAA2C;CAC5C,CAAC,CAAC","sourcesContent":["import { z } from \"zod\";\nimport {\n ProfilePictureUpdatedEventSchema,\n ProfilePreferencesUpdatedEventSchema,\n CraftSkillCreatedEventSchema,\n CraftSkillUpdatedEventSchema,\n CraftSkillDeletedEventSchema,\n FollowCreatedEventSchema,\n FollowRemovedEventSchema,\n MentionReadEventSchema,\n AuthStatusChangedEventSchema,\n ProfileDisplayNameChangedEventSchema,\n} from \"./domain-events-user.js\";\nimport {\n WorkProjectCreatedEventSchema,\n WorkProjectUpdatedEventSchema,\n WorkProjectPublishedEventSchema,\n WorkProjectStakeSharesUpdatedEventSchema,\n GuildInviteSentEventSchema,\n GuildInviteAcceptedEventSchema,\n GuildInviteDeclinedEventSchema,\n GuildInviteCancelledEventSchema,\n AuditionPromptCreatedEventSchema,\n AuditionEntrySubmittedEventSchema,\n AuditionEntryVoteRecordedEventSchema,\n AuditionClosedEventSchema,\n CommissionCreatedEventSchema,\n CommissionProposalSubmittedEventSchema,\n CommissionClosedEventSchema,\n CommissionProposalSavedEventSchema,\n CommissionProposalRemovedEventSchema,\n HallLibraryCoverUpdatedEventSchema,\n WorkRealmCoverUpdatedEventSchema,\n WorkRealmDetailsUpdatedEventSchema,\n HallLibrarySubItemUpdatedEventSchema,\n ThresholdLibrarySubmittedEventSchema,\n} from \"./domain-events-work.js\";\nimport {\n SquareStreetzPostCreatedEventSchema,\n SquareStreetzPostLikedEventSchema,\n SquareStreetzPostUnlikedEventSchema,\n} from \"./domain-events-social.js\";\nimport {\n ModerationViolationCreatedEventSchema,\n ThresholdLibraryApprovedEventSchema,\n ThresholdLibraryNeedsRevisionEventSchema,\n AdminDispatchSystemMarkedEventSchema,\n AdminDispatchThreadUpdatedEventSchema,\n AdminAppealReviewedEventSchema,\n AdminDispatchReviewedEventSchema,\n ViolationAppealSubmittedEventSchema,\n AdminDisplayNameResetForcedEventSchema,\n HallContentChangeRequestApprovedEventSchema,\n} from \"./domain-events-admin.js\";\n\nexport * from \"./domain-events-user.js\";\nexport * from \"./domain-events-work.js\";\nexport * from \"./domain-events-social.js\";\nexport * from \"./domain-events-admin.js\";\n\n// ============================================================================\n// DomainEvent — typed business actions emitted by mutations and upload\n// processors. The frontend registry (ttt-prod/src/lib/domain-events.ts) maps\n// each variant to a list of TanStack Query cache invalidations.\n//\n// Adding a new variant is a coordinated deploy:\n// 1. Add it here. Publish this package.\n// 2. Add a registry entry in ttt-prod. Deploy.\n// 3. Update producers (mutation hooks or processors) to emit it.\n//\n// The schema is .strict() end-to-end — unknown event types fail parse and\n// the consuming hook in ttt-prod logs to Sentry and skips the doc.\n// ============================================================================\n\nexport const DomainEventSchema = z.discriminatedUnion('type', [\n ProfilePictureUpdatedEventSchema,\n CraftSkillCreatedEventSchema,\n SquareStreetzPostCreatedEventSchema,\n AuditionPromptCreatedEventSchema,\n AuditionEntrySubmittedEventSchema,\n CommissionCreatedEventSchema,\n CommissionProposalSubmittedEventSchema,\n WorkProjectUpdatedEventSchema,\n HallLibraryCoverUpdatedEventSchema,\n WorkRealmCoverUpdatedEventSchema,\n HallLibrarySubItemUpdatedEventSchema,\n ModerationViolationCreatedEventSchema,\n FollowCreatedEventSchema,\n FollowRemovedEventSchema,\n SquareStreetzPostLikedEventSchema,\n SquareStreetzPostUnlikedEventSchema,\n ProfilePreferencesUpdatedEventSchema,\n CraftSkillDeletedEventSchema,\n CraftSkillUpdatedEventSchema,\n WorkProjectCreatedEventSchema,\n WorkProjectPublishedEventSchema,\n WorkProjectStakeSharesUpdatedEventSchema,\n GuildInviteSentEventSchema,\n GuildInviteAcceptedEventSchema,\n GuildInviteDeclinedEventSchema,\n GuildInviteCancelledEventSchema,\n AuditionEntryVoteRecordedEventSchema,\n AuditionClosedEventSchema,\n CommissionClosedEventSchema,\n CommissionProposalSavedEventSchema,\n CommissionProposalRemovedEventSchema,\n ThresholdLibrarySubmittedEventSchema,\n ThresholdLibraryApprovedEventSchema,\n ThresholdLibraryNeedsRevisionEventSchema,\n AdminDispatchSystemMarkedEventSchema,\n AdminDispatchThreadUpdatedEventSchema,\n AdminAppealReviewedEventSchema,\n AdminDispatchReviewedEventSchema,\n MentionReadEventSchema,\n AuthStatusChangedEventSchema,\n ViolationAppealSubmittedEventSchema,\n ProfileDisplayNameChangedEventSchema,\n AdminDisplayNameResetForcedEventSchema,\n WorkRealmDetailsUpdatedEventSchema,\n HallContentChangeRequestApprovedEventSchema,\n]);\n\nexport type DomainEvent = z.infer<typeof DomainEventSchema>;\n\n// Helper for callers that need to extract the ids type for a specific\n// event variant (e.g. registry entries in the consuming repo).\nexport type DomainEventIdsFor<T extends DomainEvent['type']> = Extract<\n DomainEvent,\n { type: T }\n>['ids'];\n\n\n\n\n\n"]}
1
+ {"version":3,"file":"domain-events.js","sourceRoot":"","sources":["../../src/media/domain-events.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EACL,gCAAgC,EAChC,oCAAoC,EACpC,4BAA4B,EAC5B,4BAA4B,EAC5B,4BAA4B,EAC5B,wBAAwB,EACxB,wBAAwB,EACxB,sBAAsB,EACtB,4BAA4B,EAC5B,oCAAoC,GACrC,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,6BAA6B,EAC7B,6BAA6B,EAC7B,+BAA+B,EAC/B,wCAAwC,EACxC,0BAA0B,EAC1B,8BAA8B,EAC9B,8BAA8B,EAC9B,+BAA+B,EAC/B,gCAAgC,EAChC,iCAAiC,EACjC,oCAAoC,EACpC,yBAAyB,EACzB,4BAA4B,EAC5B,sCAAsC,EACtC,2BAA2B,EAC3B,kCAAkC,EAClC,oCAAoC,EACpC,kCAAkC,EAClC,gCAAgC,EAChC,kCAAkC,EAClC,oCAAoC,EACpC,oCAAoC,GACrC,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,mCAAmC,EACnC,iCAAiC,EACjC,mCAAmC,GACpC,MAAM,2BAA2B,CAAC;AACnC,OAAO,EACL,qCAAqC,EACrC,mCAAmC,EACnC,wCAAwC,EACxC,qCAAqC,EACrC,8BAA8B,EAC9B,gCAAgC,EAChC,mCAAmC,EACnC,sCAAsC,EACtC,2CAA2C,GAC5C,MAAM,0BAA0B,CAAC;AAElC,cAAc,yBAAyB,CAAC;AACxC,cAAc,yBAAyB,CAAC;AACxC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,0BAA0B,CAAC;AAEzC,+EAA+E;AAC/E,uEAAuE;AACvE,6EAA6E;AAC7E,gEAAgE;AAChE,EAAE;AACF,gDAAgD;AAChD,0CAA0C;AAC1C,iDAAiD;AACjD,mEAAmE;AACnE,EAAE;AACF,0EAA0E;AAC1E,mEAAmE;AACnE,+EAA+E;AAE/E,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC,kBAAkB,CAAC,MAAM,EAAE;IAC5D,gCAAgC;IAChC,4BAA4B;IAC5B,mCAAmC;IACnC,gCAAgC;IAChC,iCAAiC;IACjC,4BAA4B;IAC5B,sCAAsC;IACtC,6BAA6B;IAC7B,kCAAkC;IAClC,gCAAgC;IAChC,oCAAoC;IACpC,qCAAqC;IACrC,wBAAwB;IACxB,wBAAwB;IACxB,iCAAiC;IACjC,mCAAmC;IACnC,oCAAoC;IACpC,4BAA4B;IAC5B,4BAA4B;IAC5B,6BAA6B;IAC7B,+BAA+B;IAC/B,wCAAwC;IACxC,0BAA0B;IAC1B,8BAA8B;IAC9B,8BAA8B;IAC9B,+BAA+B;IAC/B,oCAAoC;IACpC,yBAAyB;IACzB,2BAA2B;IAC3B,kCAAkC;IAClC,oCAAoC;IACpC,oCAAoC;IACpC,mCAAmC;IACnC,wCAAwC;IACxC,qCAAqC;IACrC,8BAA8B;IAC9B,gCAAgC;IAChC,sBAAsB;IACtB,4BAA4B;IAC5B,mCAAmC;IACnC,oCAAoC;IACpC,sCAAsC;IACtC,kCAAkC;IAClC,2CAA2C;CAC5C,CAAC,CAAC","sourcesContent":["import { z } from \"zod\";\nimport {\n ProfilePictureUpdatedEventSchema,\n ProfilePreferencesUpdatedEventSchema,\n CraftSkillCreatedEventSchema,\n CraftSkillUpdatedEventSchema,\n CraftSkillDeletedEventSchema,\n FollowCreatedEventSchema,\n FollowRemovedEventSchema,\n MentionReadEventSchema,\n AuthStatusChangedEventSchema,\n ProfileDisplayNameChangedEventSchema,\n} from \"./domain-events-user.js\";\nimport {\n WorkProjectCreatedEventSchema,\n WorkProjectUpdatedEventSchema,\n WorkProjectPublishedEventSchema,\n WorkProjectStakeSharesUpdatedEventSchema,\n GuildInviteSentEventSchema,\n GuildInviteAcceptedEventSchema,\n GuildInviteDeclinedEventSchema,\n GuildInviteCancelledEventSchema,\n AuditionPromptCreatedEventSchema,\n AuditionEntrySubmittedEventSchema,\n AuditionEntryVoteRecordedEventSchema,\n AuditionClosedEventSchema,\n CommissionCreatedEventSchema,\n CommissionProposalSubmittedEventSchema,\n CommissionClosedEventSchema,\n CommissionProposalSavedEventSchema,\n CommissionProposalRemovedEventSchema,\n HallLibraryCoverUpdatedEventSchema,\n WorkRealmCoverUpdatedEventSchema,\n WorkRealmDetailsUpdatedEventSchema,\n HallLibrarySubItemUpdatedEventSchema,\n ThresholdLibrarySubmittedEventSchema,\n} from \"./domain-events-work.js\";\nimport {\n SquareStreetzPostCreatedEventSchema,\n SquareStreetzPostLikedEventSchema,\n SquareStreetzPostUnlikedEventSchema,\n} from \"./domain-events-social.js\";\nimport {\n ModerationViolationCreatedEventSchema,\n ThresholdLibraryApprovedEventSchema,\n ThresholdLibraryNeedsRevisionEventSchema,\n AdminDispatchThreadUpdatedEventSchema,\n AdminAppealReviewedEventSchema,\n AdminDispatchReviewedEventSchema,\n ViolationAppealSubmittedEventSchema,\n AdminDisplayNameResetForcedEventSchema,\n HallContentChangeRequestApprovedEventSchema,\n} from \"./domain-events-admin.js\";\n\nexport * from \"./domain-events-user.js\";\nexport * from \"./domain-events-work.js\";\nexport * from \"./domain-events-social.js\";\nexport * from \"./domain-events-admin.js\";\n\n// ============================================================================\n// DomainEvent — typed business actions emitted by mutations and upload\n// processors. The frontend registry (ttt-prod/src/lib/domain-events.ts) maps\n// each variant to a list of TanStack Query cache invalidations.\n//\n// Adding a new variant is a coordinated deploy:\n// 1. Add it here. Publish this package.\n// 2. Add a registry entry in ttt-prod. Deploy.\n// 3. Update producers (mutation hooks or processors) to emit it.\n//\n// The schema is .strict() end-to-end — unknown event types fail parse and\n// the consuming hook in ttt-prod logs to Sentry and skips the doc.\n// ============================================================================\n\nexport const DomainEventSchema = z.discriminatedUnion('type', [\n ProfilePictureUpdatedEventSchema,\n CraftSkillCreatedEventSchema,\n SquareStreetzPostCreatedEventSchema,\n AuditionPromptCreatedEventSchema,\n AuditionEntrySubmittedEventSchema,\n CommissionCreatedEventSchema,\n CommissionProposalSubmittedEventSchema,\n WorkProjectUpdatedEventSchema,\n HallLibraryCoverUpdatedEventSchema,\n WorkRealmCoverUpdatedEventSchema,\n HallLibrarySubItemUpdatedEventSchema,\n ModerationViolationCreatedEventSchema,\n FollowCreatedEventSchema,\n FollowRemovedEventSchema,\n SquareStreetzPostLikedEventSchema,\n SquareStreetzPostUnlikedEventSchema,\n ProfilePreferencesUpdatedEventSchema,\n CraftSkillDeletedEventSchema,\n CraftSkillUpdatedEventSchema,\n WorkProjectCreatedEventSchema,\n WorkProjectPublishedEventSchema,\n WorkProjectStakeSharesUpdatedEventSchema,\n GuildInviteSentEventSchema,\n GuildInviteAcceptedEventSchema,\n GuildInviteDeclinedEventSchema,\n GuildInviteCancelledEventSchema,\n AuditionEntryVoteRecordedEventSchema,\n AuditionClosedEventSchema,\n CommissionClosedEventSchema,\n CommissionProposalSavedEventSchema,\n CommissionProposalRemovedEventSchema,\n ThresholdLibrarySubmittedEventSchema,\n ThresholdLibraryApprovedEventSchema,\n ThresholdLibraryNeedsRevisionEventSchema,\n AdminDispatchThreadUpdatedEventSchema,\n AdminAppealReviewedEventSchema,\n AdminDispatchReviewedEventSchema,\n MentionReadEventSchema,\n AuthStatusChangedEventSchema,\n ViolationAppealSubmittedEventSchema,\n ProfileDisplayNameChangedEventSchema,\n AdminDisplayNameResetForcedEventSchema,\n WorkRealmDetailsUpdatedEventSchema,\n HallContentChangeRequestApprovedEventSchema,\n]);\n\nexport type DomainEvent = z.infer<typeof DomainEventSchema>;\n\n// Helper for callers that need to extract the ids type for a specific\n// event variant (e.g. registry entries in the consuming repo).\nexport type DomainEventIdsFor<T extends DomainEvent['type']> = Extract<\n DomainEvent,\n { type: T }\n>['ids'];\n\n\n\n\n\n"]}
@@ -267,11 +267,6 @@ export declare const PendingMediaResultSchema: z.ZodObject<{
267
267
  thresholdItemId: z.ZodString;
268
268
  hallItemId: z.ZodString;
269
269
  }, z.core.$strict>;
270
- }, z.core.$strict>, z.ZodObject<{
271
- type: z.ZodLiteral<"adminDispatch.systemMarked">;
272
- ids: z.ZodObject<{
273
- userId: z.ZodString;
274
- }, z.core.$strict>;
275
270
  }, z.core.$strict>, z.ZodObject<{
276
271
  type: z.ZodLiteral<"adminDispatch.threadUpdated">;
277
272
  ids: z.ZodObject<{
@@ -730,11 +725,6 @@ export declare const PendingMediaCompletedSchema: z.ZodObject<{
730
725
  thresholdItemId: z.ZodString;
731
726
  hallItemId: z.ZodString;
732
727
  }, z.core.$strict>;
733
- }, z.core.$strict>, z.ZodObject<{
734
- type: z.ZodLiteral<"adminDispatch.systemMarked">;
735
- ids: z.ZodObject<{
736
- userId: z.ZodString;
737
- }, z.core.$strict>;
738
728
  }, z.core.$strict>, z.ZodObject<{
739
729
  type: z.ZodLiteral<"adminDispatch.threadUpdated">;
740
730
  ids: z.ZodObject<{
@@ -1210,11 +1200,6 @@ export declare const PendingMediaRejectedSchema: z.ZodObject<{
1210
1200
  thresholdItemId: z.ZodString;
1211
1201
  hallItemId: z.ZodString;
1212
1202
  }, z.core.$strict>;
1213
- }, z.core.$strict>, z.ZodObject<{
1214
- type: z.ZodLiteral<"adminDispatch.systemMarked">;
1215
- ids: z.ZodObject<{
1216
- userId: z.ZodString;
1217
- }, z.core.$strict>;
1218
1203
  }, z.core.$strict>, z.ZodObject<{
1219
1204
  type: z.ZodLiteral<"adminDispatch.threadUpdated">;
1220
1205
  ids: z.ZodObject<{
@@ -1732,11 +1717,6 @@ export declare const PendingMediaSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
1732
1717
  thresholdItemId: z.ZodString;
1733
1718
  hallItemId: z.ZodString;
1734
1719
  }, z.core.$strict>;
1735
- }, z.core.$strict>, z.ZodObject<{
1736
- type: z.ZodLiteral<"adminDispatch.systemMarked">;
1737
- ids: z.ZodObject<{
1738
- userId: z.ZodString;
1739
- }, z.core.$strict>;
1740
1720
  }, z.core.$strict>, z.ZodObject<{
1741
1721
  type: z.ZodLiteral<"adminDispatch.threadUpdated">;
1742
1722
  ids: z.ZodObject<{
@@ -2210,11 +2190,6 @@ export declare const PendingMediaSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
2210
2190
  thresholdItemId: z.ZodString;
2211
2191
  hallItemId: z.ZodString;
2212
2192
  }, z.core.$strict>;
2213
- }, z.core.$strict>, z.ZodObject<{
2214
- type: z.ZodLiteral<"adminDispatch.systemMarked">;
2215
- ids: z.ZodObject<{
2216
- userId: z.ZodString;
2217
- }, z.core.$strict>;
2218
2193
  }, z.core.$strict>, z.ZodObject<{
2219
2194
  type: z.ZodLiteral<"adminDispatch.threadUpdated">;
2220
2195
  ids: z.ZodObject<{
@@ -2606,11 +2581,6 @@ export declare const ArchivedPendingMediaCompletedSchema: z.ZodObject<{
2606
2581
  thresholdItemId: z.ZodString;
2607
2582
  hallItemId: z.ZodString;
2608
2583
  }, z.core.$strict>;
2609
- }, z.core.$strict>, z.ZodObject<{
2610
- type: z.ZodLiteral<"adminDispatch.systemMarked">;
2611
- ids: z.ZodObject<{
2612
- userId: z.ZodString;
2613
- }, z.core.$strict>;
2614
2584
  }, z.core.$strict>, z.ZodObject<{
2615
2585
  type: z.ZodLiteral<"adminDispatch.threadUpdated">;
2616
2586
  ids: z.ZodObject<{
@@ -3088,11 +3058,6 @@ export declare const ArchivedPendingMediaRejectedSchema: z.ZodObject<{
3088
3058
  thresholdItemId: z.ZodString;
3089
3059
  hallItemId: z.ZodString;
3090
3060
  }, z.core.$strict>;
3091
- }, z.core.$strict>, z.ZodObject<{
3092
- type: z.ZodLiteral<"adminDispatch.systemMarked">;
3093
- ids: z.ZodObject<{
3094
- userId: z.ZodString;
3095
- }, z.core.$strict>;
3096
3061
  }, z.core.$strict>, z.ZodObject<{
3097
3062
  type: z.ZodLiteral<"adminDispatch.threadUpdated">;
3098
3063
  ids: z.ZodObject<{
@@ -3485,11 +3450,6 @@ export declare const ArchivedPendingMediaSchema: z.ZodDiscriminatedUnion<[z.ZodO
3485
3450
  thresholdItemId: z.ZodString;
3486
3451
  hallItemId: z.ZodString;
3487
3452
  }, z.core.$strict>;
3488
- }, z.core.$strict>, z.ZodObject<{
3489
- type: z.ZodLiteral<"adminDispatch.systemMarked">;
3490
- ids: z.ZodObject<{
3491
- userId: z.ZodString;
3492
- }, z.core.$strict>;
3493
3453
  }, z.core.$strict>, z.ZodObject<{
3494
3454
  type: z.ZodLiteral<"adminDispatch.threadUpdated">;
3495
3455
  ids: z.ZodObject<{
@@ -3965,11 +3925,6 @@ export declare const ArchivedPendingMediaSchema: z.ZodDiscriminatedUnion<[z.ZodO
3965
3925
  thresholdItemId: z.ZodString;
3966
3926
  hallItemId: z.ZodString;
3967
3927
  }, z.core.$strict>;
3968
- }, z.core.$strict>, z.ZodObject<{
3969
- type: z.ZodLiteral<"adminDispatch.systemMarked">;
3970
- ids: z.ZodObject<{
3971
- userId: z.ZodString;
3972
- }, z.core.$strict>;
3973
3928
  }, z.core.$strict>, z.ZodObject<{
3974
3929
  type: z.ZodLiteral<"adminDispatch.threadUpdated">;
3975
3930
  ids: z.ZodObject<{
@@ -4367,11 +4322,6 @@ export declare const ArchivedPendingMediaDocSchema: z.ZodUnion<readonly [z.ZodDi
4367
4322
  thresholdItemId: z.ZodString;
4368
4323
  hallItemId: z.ZodString;
4369
4324
  }, z.core.$strict>;
4370
- }, z.core.$strict>, z.ZodObject<{
4371
- type: z.ZodLiteral<"adminDispatch.systemMarked">;
4372
- ids: z.ZodObject<{
4373
- userId: z.ZodString;
4374
- }, z.core.$strict>;
4375
4325
  }, z.core.$strict>, z.ZodObject<{
4376
4326
  type: z.ZodLiteral<"adminDispatch.threadUpdated">;
4377
4327
  ids: z.ZodObject<{
@@ -4847,11 +4797,6 @@ export declare const ArchivedPendingMediaDocSchema: z.ZodUnion<readonly [z.ZodDi
4847
4797
  thresholdItemId: z.ZodString;
4848
4798
  hallItemId: z.ZodString;
4849
4799
  }, z.core.$strict>;
4850
- }, z.core.$strict>, z.ZodObject<{
4851
- type: z.ZodLiteral<"adminDispatch.systemMarked">;
4852
- ids: z.ZodObject<{
4853
- userId: z.ZodString;
4854
- }, z.core.$strict>;
4855
4800
  }, z.core.$strict>, z.ZodObject<{
4856
4801
  type: z.ZodLiteral<"adminDispatch.threadUpdated">;
4857
4802
  ids: z.ZodObject<{
@@ -1 +1 @@
1
- {"version":3,"file":"pending-media.d.ts","sourceRoot":"","sources":["../../src/media/pending-media.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAS7B,eAAO,MAAM,+BAA+B;;;;;;;EAA0C,CAAC;AACvF,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAAmC,CAAC;AACzE,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAAoC,CAAC;AAC3E,eAAO,MAAM,4BAA4B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAAuC,CAAC;AACjF,eAAO,MAAM,2BAA2B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAAsC,CAAC;AAC/E,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAAmC,CAAC;AACzE,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAAqC,CAAC;AAC7E,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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"}
1
+ {"version":3,"file":"pending-media.d.ts","sourceRoot":"","sources":["../../src/media/pending-media.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAS7B,eAAO,MAAM,+BAA+B;;;;;;;EAA0C,CAAC;AACvF,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAAmC,CAAC;AACzE,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAAoC,CAAC;AAC3E,eAAO,MAAM,4BAA4B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAAuC,CAAC;AACjF,eAAO,MAAM,2BAA2B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAAsC,CAAC;AAC/E,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAAmC,CAAC;AACzE,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAAqC,CAAC;AAC7E,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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"}
@@ -1,3 +1,4 @@
1
+ import type { PublicDocumentId } from '../constants/public-documents.js';
1
2
  export declare const COLLECTION_REFS: {
2
3
  readonly userProfiles: () => [string];
3
4
  readonly allWorkProjects: () => [string];
@@ -30,5 +31,6 @@ export declare const COLLECTION_REFS: {
30
31
  readonly adminDispatchConversationMessages: (adminDispatchId: string) => [string, string, string];
31
32
  readonly pendingMedia: () => [string];
32
33
  readonly pendingMediaArchive: () => [string];
34
+ readonly publicDocumentVersions: (documentId: PublicDocumentId) => [string, string, string];
33
35
  };
34
36
  //# sourceMappingURL=collection-refs.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"collection-refs.d.ts","sourceRoot":"","sources":["../../src/paths/collection-refs.ts"],"names":[],"mappings":"AAaA,eAAO,MAAM,eAAe;iCAER,CAAC,MAAM,CAAC;oCACL,CAAC,MAAM,CAAC;uCACL,CAAC,MAAM,CAAC;+BAChB,CAAC,MAAM,CAAC;sCACD,CAAC,MAAM,CAAC;uCACP,CAAC,MAAM,CAAC;kCACb,CAAC,MAAM,CAAC;gCACV,CAAC,MAAM,CAAC;mCACL,CAAC,MAAM,CAAC;4CAIC,CAAC,MAAM,CAAC;6CACP,CAAC,MAAM,CAAC;uCAGZ,MAAM,KAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;+CAIzB,MAAM,KAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;+CAGjC,MAAM,KAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;oDAG5B,MAAM,KAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;8DAGvB,MAAM,KAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;gDAG/C,MAAM,KAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;6CAMpC,MAAM,KAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;gCAIhD,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;mCAIrB,CAAC,MAAM,CAAC;8BAEb,CAAC,MAAM,CAAC;8CAEQ,CAAC,MAAM,CAAC;wDAGI,MAAM,KAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;2CAG9C,MAAM,KAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;yCAGnC,MAAM,UAAU,MAAM,KAAG,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;uDAG5D,MAAM,KAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;2DAK7B,MAAM,KAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;+DAG7B,MAAM,KAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;kEAO9B,MAAM,KAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;iCAOpE,CAAC,MAAM,CAAC;wCAED,CAAC,MAAM,CAAC;CACzB,CAAC"}
1
+ {"version":3,"file":"collection-refs.d.ts","sourceRoot":"","sources":["../../src/paths/collection-refs.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AAEzE,eAAO,MAAM,eAAe;iCAER,CAAC,MAAM,CAAC;oCACL,CAAC,MAAM,CAAC;uCACL,CAAC,MAAM,CAAC;+BAChB,CAAC,MAAM,CAAC;sCACD,CAAC,MAAM,CAAC;uCACP,CAAC,MAAM,CAAC;kCACb,CAAC,MAAM,CAAC;gCACV,CAAC,MAAM,CAAC;mCACL,CAAC,MAAM,CAAC;4CAIC,CAAC,MAAM,CAAC;6CACP,CAAC,MAAM,CAAC;uCAGZ,MAAM,KAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;+CAIzB,MAAM,KAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;+CAGjC,MAAM,KAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;oDAG5B,MAAM,KAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;8DAGvB,MAAM,KAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;gDAG/C,MAAM,KAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;6CAMpC,MAAM,KAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;gCAIhD,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;mCAIrB,CAAC,MAAM,CAAC;8BAEb,CAAC,MAAM,CAAC;8CAEQ,CAAC,MAAM,CAAC;wDAGI,MAAM,KAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;2CAG9C,MAAM,KAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;yCAGnC,MAAM,UAAU,MAAM,KAAG,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;uDAG5D,MAAM,KAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;2DAK7B,MAAM,KAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;+DAG7B,MAAM,KAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;kEAO9B,MAAM,KAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;iCAOpE,CAAC,MAAM,CAAC;wCAED,CAAC,MAAM,CAAC;kDAII,gBAAgB,KAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;CAExE,CAAC"}
@@ -56,5 +56,8 @@ export const COLLECTION_REFS = {
56
56
  // PATH_BUILDERS.pendingMediaArchive.
57
57
  pendingMedia: () => [COLLECTIONS.PENDING_MEDIA],
58
58
  pendingMediaArchive: () => [COLLECTIONS.PENDING_MEDIA_ARCHIVE],
59
+ // One public document's immutable version history (queried newest-first by `version` for
60
+ // the admin history read). The per-document counterpart is PATH_BUILDERS.publicDocumentVersion.
61
+ publicDocumentVersions: (documentId) => [COLLECTIONS.PUBLIC_DOCUMENTS, documentId, NESTED_SUBCOLLECTIONS.PUBLIC_DOCUMENT_VERSIONS],
59
62
  };
60
63
  //# sourceMappingURL=collection-refs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"collection-refs.js","sourceRoot":"","sources":["../../src/paths/collection-refs.ts"],"names":[],"mappings":"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","sourcesContent":["// Collection reference builders — for collection-level operations.\n//\n// Frontend: collection(db, ...COLLECTION_REFS.userProfiles())\n// Backend: db.collection(toPath(COLLECTION_REFS.userProfiles()))\n\nimport {\n COLLECTIONS,\n USER_SUBCOLLECTIONS,\n WORK_PROJECT_SUBCOLLECTIONS,\n WORK_REALM_SUBCOLLECTIONS,\n NESTED_SUBCOLLECTIONS,\n} from './collections.js';\n\nexport const COLLECTION_REFS = {\n // Top-level collections\n userProfiles: (): [string] => [COLLECTIONS.USER_PROFILES],\n allWorkProjects: (): [string] => [COLLECTIONS.ALL_WORK_PROJECTS],\n publicWorkProjects: (): [string] => [COLLECTIONS.PUBLIC_WORK_PROJECTS],\n workRealms: (): [string] => [COLLECTIONS.WORK_REALMS],\n squareStreetzFeed: (): [string] => [COLLECTIONS.SQUARE_STREETZ_FEED],\n commissionListings: (): [string] => [COLLECTIONS.COMMISSION_LISTINGS],\n auditionBoard: (): [string] => [COLLECTIONS.AUDITION_BOARD],\n followEdges: (): [string] => [COLLECTIONS.FOLLOW_EDGES],\n followCounters: (): [string] => [COLLECTIONS.FOLLOW_COUNTERS],\n\n // Active notification lanes. Both collections are top-level and are selected by\n // notification category; callers never hand-roll their collection names.\n activeUserNotifications: (): [string] => [COLLECTIONS.ACTIVE_USER_NOTIFICATIONS],\n activeAdminNotifications: (): [string] => [COLLECTIONS.ACTIVE_ADMIN_NOTIFICATIONS],\n\n // User subcollections\n userCraftSkills: (userId: string): [string, string, string] =>\n [COLLECTIONS.USER_PROFILES, userId, USER_SUBCOLLECTIONS.PROFILE_CRAFT_SKILLS],\n\n // WorkProject subcollections\n workProjectTales: (workProjectId: string): [string, string, string] =>\n [COLLECTIONS.ALL_WORK_PROJECTS, workProjectId, WORK_PROJECT_SUBCOLLECTIONS.WORK_PROJECT_TALES],\n\n workProjectTunes: (workProjectId: string): [string, string, string] =>\n [COLLECTIONS.ALL_WORK_PROJECTS, workProjectId, WORK_PROJECT_SUBCOLLECTIONS.WORK_PROJECT_TUNES],\n\n workProjectTelevision: (workProjectId: string): [string, string, string] =>\n [COLLECTIONS.ALL_WORK_PROJECTS, workProjectId, WORK_PROJECT_SUBCOLLECTIONS.WORK_PROJECT_TELEVISION],\n\n workProjectPublicGuildmateUsers: (workProjectId: string): [string, string, string] =>\n [COLLECTIONS.ALL_WORK_PROJECTS, workProjectId, WORK_PROJECT_SUBCOLLECTIONS.PUBLIC_GUILDMATE_USERS],\n\n guildChatChannels: (workProjectId: string): [string, string, string] =>\n [COLLECTIONS.ALL_WORK_PROJECTS, workProjectId, WORK_PROJECT_SUBCOLLECTIONS.GUILD_CHAT_CHANNELS],\n\n // WorkRealm subcollections — the steward's realm shared-file folders. The projection owner\n // lists this collection (bounded by MAX_REALM_FILE_FOLDERS) and the folder-cap /\n // name-uniqueness checks query it; clients never read it directly.\n realmFileFolders: (workRealmId: string): [string, string, string] =>\n [COLLECTIONS.WORK_REALMS, workRealmId, WORK_REALM_SUBCOLLECTIONS.REALM_FILE_FOLDERS],\n\n // SquareStreetz collections\n activePosts: (): [string, string, string] =>\n [COLLECTIONS.SQUARE_STREETZ_FEED, NESTED_SUBCOLLECTIONS.ACTIVE_POSTS, NESTED_SUBCOLLECTIONS.SOCIAL_POSTS],\n\n // HallLibrary collections\n thresholdItems: (): [string] => [COLLECTIONS.THRESHOLD_ITEMS],\n\n hallItems: (): [string] => [COLLECTIONS.HALL_ITEMS],\n\n hallContentChangeRequests: (): [string] => [COLLECTIONS.HALL_CONTENT_CHANGE_REQUESTS],\n\n // Commission/Audition collections\n commissionProposals: (commissionListingId: string): [string, string, string] =>\n [COLLECTIONS.COMMISSION_LISTINGS, commissionListingId, NESTED_SUBCOLLECTIONS.COMMISSION_PROPOSALS],\n\n auditionEntries: (auditionId: string): [string, string, string] =>\n [COLLECTIONS.AUDITION_BOARD, auditionId, NESTED_SUBCOLLECTIONS.AUDITION_ENTRIES],\n\n tuneTracks: (workProjectId: string, tuneId: string): readonly [string, string, string, string, string] =>\n [COLLECTIONS.ALL_WORK_PROJECTS, workProjectId, WORK_PROJECT_SUBCOLLECTIONS.WORK_PROJECT_TUNES, tuneId, NESTED_SUBCOLLECTIONS.TUNE_TRACKS] as const,\n\n moderationCascadeChangedDocs: (cascadeId: string): [string, string, string] =>\n [COLLECTIONS.MODERATION_CASCADE_MANIFESTS, cascadeId, NESTED_SUBCOLLECTIONS.CHANGED_DOCS],\n\n // Conversation Files list for each supported ConversationFileRef scope (the panel\n // subscribes to the collection; the backend writes the docs).\n guildInviteConversationFiles: (guildInviteId: string): [string, string, string] =>\n [COLLECTIONS.GUILD_INVITE_CONVERSATIONS, guildInviteId, NESTED_SUBCOLLECTIONS.CONVERSATION_FILES],\n\n adminDispatchConversationFiles: (adminDispatchId: string): [string, string, string] =>\n [COLLECTIONS.PENDING_ADMIN_DISPATCHES, adminDispatchId, NESTED_SUBCOLLECTIONS.CONVERSATION_FILES],\n\n // The admin-support thread's message subcollection. Backend writers mint a new message\n // document with `db.collection(toPath(...)).doc()` so the id is a Firestore auto-id; the\n // admin-dispatch panel subscribes to the same collection. The per-document counterpart is\n // PATH_BUILDERS.adminConversationMessage.\n adminDispatchConversationMessages: (adminDispatchId: string): [string, string, string] =>\n [COLLECTIONS.PENDING_ADMIN_DISPATCHES, adminDispatchId, NESTED_SUBCOLLECTIONS.CONVERSATION_MESSAGES],\n\n // The upload pipeline's pending-row collection and the archive it sweeps terminal rows\n // into. The sweep addresses both as COLLECTIONS (query the live one, write a row per\n // archived doc); the per-document counterparts are PATH_BUILDERS.pendingMedia /\n // PATH_BUILDERS.pendingMediaArchive.\n pendingMedia: (): [string] => [COLLECTIONS.PENDING_MEDIA],\n\n pendingMediaArchive: (): [string] => [COLLECTIONS.PENDING_MEDIA_ARCHIVE],\n} as const;\n"]}
1
+ {"version":3,"file":"collection-refs.js","sourceRoot":"","sources":["../../src/paths/collection-refs.ts"],"names":[],"mappings":"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","sourcesContent":["// Collection reference builders — for collection-level operations.\n//\n// Frontend: collection(db, ...COLLECTION_REFS.userProfiles())\n// Backend: db.collection(toPath(COLLECTION_REFS.userProfiles()))\n\nimport {\n COLLECTIONS,\n USER_SUBCOLLECTIONS,\n WORK_PROJECT_SUBCOLLECTIONS,\n WORK_REALM_SUBCOLLECTIONS,\n NESTED_SUBCOLLECTIONS,\n} from './collections.js';\nimport type { PublicDocumentId } from '../constants/public-documents.js';\n\nexport const COLLECTION_REFS = {\n // Top-level collections\n userProfiles: (): [string] => [COLLECTIONS.USER_PROFILES],\n allWorkProjects: (): [string] => [COLLECTIONS.ALL_WORK_PROJECTS],\n publicWorkProjects: (): [string] => [COLLECTIONS.PUBLIC_WORK_PROJECTS],\n workRealms: (): [string] => [COLLECTIONS.WORK_REALMS],\n squareStreetzFeed: (): [string] => [COLLECTIONS.SQUARE_STREETZ_FEED],\n commissionListings: (): [string] => [COLLECTIONS.COMMISSION_LISTINGS],\n auditionBoard: (): [string] => [COLLECTIONS.AUDITION_BOARD],\n followEdges: (): [string] => [COLLECTIONS.FOLLOW_EDGES],\n followCounters: (): [string] => [COLLECTIONS.FOLLOW_COUNTERS],\n\n // Active notification lanes. Both collections are top-level and are selected by\n // notification category; callers never hand-roll their collection names.\n activeUserNotifications: (): [string] => [COLLECTIONS.ACTIVE_USER_NOTIFICATIONS],\n activeAdminNotifications: (): [string] => [COLLECTIONS.ACTIVE_ADMIN_NOTIFICATIONS],\n\n // User subcollections\n userCraftSkills: (userId: string): [string, string, string] =>\n [COLLECTIONS.USER_PROFILES, userId, USER_SUBCOLLECTIONS.PROFILE_CRAFT_SKILLS],\n\n // WorkProject subcollections\n workProjectTales: (workProjectId: string): [string, string, string] =>\n [COLLECTIONS.ALL_WORK_PROJECTS, workProjectId, WORK_PROJECT_SUBCOLLECTIONS.WORK_PROJECT_TALES],\n\n workProjectTunes: (workProjectId: string): [string, string, string] =>\n [COLLECTIONS.ALL_WORK_PROJECTS, workProjectId, WORK_PROJECT_SUBCOLLECTIONS.WORK_PROJECT_TUNES],\n\n workProjectTelevision: (workProjectId: string): [string, string, string] =>\n [COLLECTIONS.ALL_WORK_PROJECTS, workProjectId, WORK_PROJECT_SUBCOLLECTIONS.WORK_PROJECT_TELEVISION],\n\n workProjectPublicGuildmateUsers: (workProjectId: string): [string, string, string] =>\n [COLLECTIONS.ALL_WORK_PROJECTS, workProjectId, WORK_PROJECT_SUBCOLLECTIONS.PUBLIC_GUILDMATE_USERS],\n\n guildChatChannels: (workProjectId: string): [string, string, string] =>\n [COLLECTIONS.ALL_WORK_PROJECTS, workProjectId, WORK_PROJECT_SUBCOLLECTIONS.GUILD_CHAT_CHANNELS],\n\n // WorkRealm subcollections — the steward's realm shared-file folders. The projection owner\n // lists this collection (bounded by MAX_REALM_FILE_FOLDERS) and the folder-cap /\n // name-uniqueness checks query it; clients never read it directly.\n realmFileFolders: (workRealmId: string): [string, string, string] =>\n [COLLECTIONS.WORK_REALMS, workRealmId, WORK_REALM_SUBCOLLECTIONS.REALM_FILE_FOLDERS],\n\n // SquareStreetz collections\n activePosts: (): [string, string, string] =>\n [COLLECTIONS.SQUARE_STREETZ_FEED, NESTED_SUBCOLLECTIONS.ACTIVE_POSTS, NESTED_SUBCOLLECTIONS.SOCIAL_POSTS],\n\n // HallLibrary collections\n thresholdItems: (): [string] => [COLLECTIONS.THRESHOLD_ITEMS],\n\n hallItems: (): [string] => [COLLECTIONS.HALL_ITEMS],\n\n hallContentChangeRequests: (): [string] => [COLLECTIONS.HALL_CONTENT_CHANGE_REQUESTS],\n\n // Commission/Audition collections\n commissionProposals: (commissionListingId: string): [string, string, string] =>\n [COLLECTIONS.COMMISSION_LISTINGS, commissionListingId, NESTED_SUBCOLLECTIONS.COMMISSION_PROPOSALS],\n\n auditionEntries: (auditionId: string): [string, string, string] =>\n [COLLECTIONS.AUDITION_BOARD, auditionId, NESTED_SUBCOLLECTIONS.AUDITION_ENTRIES],\n\n tuneTracks: (workProjectId: string, tuneId: string): readonly [string, string, string, string, string] =>\n [COLLECTIONS.ALL_WORK_PROJECTS, workProjectId, WORK_PROJECT_SUBCOLLECTIONS.WORK_PROJECT_TUNES, tuneId, NESTED_SUBCOLLECTIONS.TUNE_TRACKS] as const,\n\n moderationCascadeChangedDocs: (cascadeId: string): [string, string, string] =>\n [COLLECTIONS.MODERATION_CASCADE_MANIFESTS, cascadeId, NESTED_SUBCOLLECTIONS.CHANGED_DOCS],\n\n // Conversation Files list for each supported ConversationFileRef scope (the panel\n // subscribes to the collection; the backend writes the docs).\n guildInviteConversationFiles: (guildInviteId: string): [string, string, string] =>\n [COLLECTIONS.GUILD_INVITE_CONVERSATIONS, guildInviteId, NESTED_SUBCOLLECTIONS.CONVERSATION_FILES],\n\n adminDispatchConversationFiles: (adminDispatchId: string): [string, string, string] =>\n [COLLECTIONS.PENDING_ADMIN_DISPATCHES, adminDispatchId, NESTED_SUBCOLLECTIONS.CONVERSATION_FILES],\n\n // The admin-support thread's message subcollection. Backend writers mint a new message\n // document with `db.collection(toPath(...)).doc()` so the id is a Firestore auto-id; the\n // admin-dispatch panel subscribes to the same collection. The per-document counterpart is\n // PATH_BUILDERS.adminConversationMessage.\n adminDispatchConversationMessages: (adminDispatchId: string): [string, string, string] =>\n [COLLECTIONS.PENDING_ADMIN_DISPATCHES, adminDispatchId, NESTED_SUBCOLLECTIONS.CONVERSATION_MESSAGES],\n\n // The upload pipeline's pending-row collection and the archive it sweeps terminal rows\n // into. The sweep addresses both as COLLECTIONS (query the live one, write a row per\n // archived doc); the per-document counterparts are PATH_BUILDERS.pendingMedia /\n // PATH_BUILDERS.pendingMediaArchive.\n pendingMedia: (): [string] => [COLLECTIONS.PENDING_MEDIA],\n\n pendingMediaArchive: (): [string] => [COLLECTIONS.PENDING_MEDIA_ARCHIVE],\n\n // One public document's immutable version history (queried newest-first by `version` for\n // the admin history read). The per-document counterpart is PATH_BUILDERS.publicDocumentVersion.\n publicDocumentVersions: (documentId: PublicDocumentId): [string, string, string] =>\n [COLLECTIONS.PUBLIC_DOCUMENTS, documentId, NESTED_SUBCOLLECTIONS.PUBLIC_DOCUMENT_VERSIONS],\n} as const;\n"]}
@@ -87,6 +87,9 @@ export declare const COLLECTIONS: {
87
87
  readonly OPERATOR_STEP_UP: "operatorStepUp";
88
88
  readonly SAFETY_RECONCILER_CURSORS: "safetyReconcilerCursors";
89
89
  readonly SWEEP_STATE: "sweepState";
90
+ readonly PUBLIC_DOCUMENTS: "publicDocuments";
91
+ readonly PUBLIC_DOCUMENT_DRAFTS: "publicDocumentDrafts";
92
+ readonly PUBLIC_DOCUMENT_RELEASES: "publicDocumentReleases";
90
93
  };
91
94
  /**
92
95
  * USER PROFILE SUBCOLLECTIONS
@@ -199,6 +202,7 @@ export declare const NESTED_SUBCOLLECTIONS: {
199
202
  readonly NCII_REMOVAL_TARGETS: "nciiRemovalTargets";
200
203
  readonly FEEDBACK_ALIASES: "feedbackAliases";
201
204
  readonly FEEDBACK_DENYLIST: "feedbackDenylist";
205
+ readonly PUBLIC_DOCUMENT_VERSIONS: "publicDocumentVersions";
202
206
  };
203
207
  /**
204
208
  * SPECIAL DOCUMENT PATHS
@@ -220,6 +224,7 @@ export declare const SPECIAL_DOCS: {
220
224
  readonly TERMS_PAGE: "termsOfService";
221
225
  readonly PRIVACY_PAGE: "privacyPolicy";
222
226
  readonly TAKE_IT_DOWN_PAGE_COPY: "takeItDownPageCopy";
227
+ readonly DMCA_POLICY: "dmcaPolicy";
223
228
  readonly SUMMARY: "summary";
224
229
  readonly SAFETY_MONITOR_HEARTBEAT_GLOBAL: "global";
225
230
  readonly AGE_POLICY: "agePolicy";
@@ -1 +1 @@
1
- {"version":3,"file":"collections.d.ts","sourceRoot":"","sources":["../../src/paths/collections.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAE3D;;GAEG;AACH,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2Jd,CAAC;AAEX;;;GAGG;AACH,eAAO,MAAM,mBAAmB;;;;;;;;CAStB,CAAC;AAEX;;;GAGG;AACH,eAAO,MAAM,2BAA2B;;;;;;;;;CAY9B,CAAC;AAEX;;;GAGG;AACH,eAAO,MAAM,yBAAyB;;CAK5B,CAAC;AAEX;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,wBAAwB;;;;CAI3B,CAAC;AAEX,MAAM,MAAM,qBAAqB,GAC/B,CAAC,OAAO,wBAAwB,CAAC,CAAC,MAAM,OAAO,wBAAwB,CAAC,CAAC;AAE3E,uEAAuE;AACvE,eAAO,MAAM,oCAAoC,EAAE,MAAM,CAAC,eAAe,EAAE,qBAAqB,CAI/F,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoIxB,CAAC;AAEX;;;GAGG;AACH,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6Df,CAAC"}
1
+ {"version":3,"file":"collections.d.ts","sourceRoot":"","sources":["../../src/paths/collections.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAE3D;;GAEG;AACH,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoKd,CAAC;AAEX;;;GAGG;AACH,eAAO,MAAM,mBAAmB;;;;;;;;CAStB,CAAC;AAEX;;;GAGG;AACH,eAAO,MAAM,2BAA2B;;;;;;;;;CAY9B,CAAC;AAEX;;;GAGG;AACH,eAAO,MAAM,yBAAyB;;CAK5B,CAAC;AAEX;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,wBAAwB;;;;CAI3B,CAAC;AAEX,MAAM,MAAM,qBAAqB,GAC/B,CAAC,OAAO,wBAAwB,CAAC,CAAC,MAAM,OAAO,wBAAwB,CAAC,CAAC;AAE3E,uEAAuE;AACvE,eAAO,MAAM,oCAAoC,EAAE,MAAM,CAAC,eAAe,EAAE,qBAAqB,CAI/F,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAwIxB,CAAC;AAEX;;;GAGG;AACH,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgEf,CAAC"}
@@ -138,6 +138,14 @@ export const COLLECTIONS = {
138
138
  // container recycle, so a "~once/day" or "~once/week" pass fires on real elapsed time instead
139
139
  // of an in-memory counter. Admin-SDK-only.
140
140
  SWEEP_STATE: 'sweepState',
141
+ // Versioned public documents (Terms, Privacy, Rules & Agreements, Future Plans, DMCA,
142
+ // Take It Down copy). `publicDocuments/{documentId}` is a field-less container whose
143
+ // `publicDocumentVersions` subcollection holds the immutable published versions; the one
144
+ // private working copy per document and the release records are top-level. All three are
145
+ // backend-written; the public reads the `_appConfig/{documentId}` current projection.
146
+ PUBLIC_DOCUMENTS: 'publicDocuments',
147
+ PUBLIC_DOCUMENT_DRAFTS: 'publicDocumentDrafts',
148
+ PUBLIC_DOCUMENT_RELEASES: 'publicDocumentReleases',
141
149
  };
142
150
  /**
143
151
  * USER PROFILE SUBCOLLECTIONS
@@ -321,6 +329,9 @@ export const NESTED_SUBCOLLECTIONS = {
321
329
  // which were anonymously readable with no client reader.
322
330
  FEEDBACK_ALIASES: 'feedbackAliases',
323
331
  FEEDBACK_DENYLIST: 'feedbackDenylist',
332
+ // Immutable published versions of one public document
333
+ // (publicDocuments/{documentId}/publicDocumentVersions/{versionId}).
334
+ PUBLIC_DOCUMENT_VERSIONS: 'publicDocumentVersions',
324
335
  };
325
336
  /**
326
337
  * SPECIAL DOCUMENT PATHS
@@ -352,6 +363,9 @@ export const SPECIAL_DOCS = {
352
363
  TERMS_PAGE: 'termsOfService',
353
364
  PRIVACY_PAGE: 'privacyPolicy',
354
365
  TAKE_IT_DOWN_PAGE_COPY: 'takeItDownPageCopy',
366
+ // The /dmca page's current projection (_appConfig/dmcaPolicy). Each of these page ids is
367
+ // also that document's PublicDocumentId (constants/public-documents.ts).
368
+ DMCA_POLICY: 'dmcaPolicy',
355
369
  // Also the doc id of the pledge running-totals singleton (pledgePaymentTotals/summary).
356
370
  SUMMARY: 'summary',
357
371
  // Trust & Safety — singleton global SLA-monitor heartbeat (safetyMonitorHeartbeat/global).