@ttt-productions/ttt-core 0.79.47 → 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.
- package/dist/constants/business-admin.d.ts +7 -0
- package/dist/constants/business-admin.d.ts.map +1 -1
- package/dist/constants/business-admin.js +7 -0
- package/dist/constants/business-admin.js.map +1 -1
- package/dist/constants/index.d.ts +3 -0
- package/dist/constants/index.d.ts.map +1 -1
- package/dist/constants/index.js +3 -0
- package/dist/constants/index.js.map +1 -1
- package/dist/constants/legal-review-notice-state.d.ts +5 -0
- package/dist/constants/legal-review-notice-state.d.ts.map +1 -0
- package/dist/constants/legal-review-notice-state.js +19 -0
- package/dist/constants/legal-review-notice-state.js.map +1 -0
- package/dist/constants/legal-review-notice.d.ts +102 -0
- package/dist/constants/legal-review-notice.d.ts.map +1 -0
- package/dist/constants/legal-review-notice.js +171 -0
- package/dist/constants/legal-review-notice.js.map +1 -0
- package/dist/constants/public-documents.d.ts +20 -0
- package/dist/constants/public-documents.d.ts.map +1 -0
- package/dist/constants/public-documents.js +48 -0
- package/dist/constants/public-documents.js.map +1 -0
- package/dist/doc-schemas/content.d.ts +56 -0
- package/dist/doc-schemas/content.d.ts.map +1 -1
- package/dist/doc-schemas/content.js +34 -0
- package/dist/doc-schemas/content.js.map +1 -1
- package/dist/doc-schemas/index.d.ts +2 -0
- package/dist/doc-schemas/index.d.ts.map +1 -1
- package/dist/doc-schemas/index.js +2 -0
- package/dist/doc-schemas/index.js.map +1 -1
- package/dist/doc-schemas/legal-review-notice.d.ts +8 -0
- package/dist/doc-schemas/legal-review-notice.d.ts.map +1 -0
- package/dist/doc-schemas/legal-review-notice.js +14 -0
- package/dist/doc-schemas/legal-review-notice.js.map +1 -0
- package/dist/doc-schemas/notifications.d.ts +24 -8
- package/dist/doc-schemas/notifications.d.ts.map +1 -1
- package/dist/doc-schemas/notifications.js +10 -4
- package/dist/doc-schemas/notifications.js.map +1 -1
- package/dist/doc-schemas/payments.d.ts +4 -0
- package/dist/doc-schemas/payments.d.ts.map +1 -1
- package/dist/doc-schemas/payments.js +6 -0
- package/dist/doc-schemas/payments.js.map +1 -1
- package/dist/doc-schemas/public-documents.d.ts +677 -0
- package/dist/doc-schemas/public-documents.d.ts.map +1 -0
- package/dist/doc-schemas/public-documents.js +158 -0
- package/dist/doc-schemas/public-documents.js.map +1 -0
- package/dist/doc-schemas/registry.d.ts +352 -39
- package/dist/doc-schemas/registry.d.ts.map +1 -1
- package/dist/doc-schemas/registry.js +8 -1
- package/dist/doc-schemas/registry.js.map +1 -1
- package/dist/doc-schemas/safety/case.d.ts +3 -3
- package/dist/doc-schemas/system.d.ts +14 -0
- package/dist/doc-schemas/system.d.ts.map +1 -1
- package/dist/doc-schemas/system.js +7 -0
- package/dist/doc-schemas/system.js.map +1 -1
- package/dist/doc-schemas/user.d.ts +14 -1
- package/dist/doc-schemas/user.d.ts.map +1 -1
- package/dist/doc-schemas/user.js +13 -7
- package/dist/doc-schemas/user.js.map +1 -1
- package/dist/media/domain-events-admin.d.ts +0 -6
- package/dist/media/domain-events-admin.d.ts.map +1 -1
- package/dist/media/domain-events-admin.js +0 -10
- package/dist/media/domain-events-admin.js.map +1 -1
- package/dist/media/domain-events.d.ts +0 -5
- package/dist/media/domain-events.d.ts.map +1 -1
- package/dist/media/domain-events.js +1 -2
- package/dist/media/domain-events.js.map +1 -1
- package/dist/media/pending-media.d.ts +0 -55
- package/dist/media/pending-media.d.ts.map +1 -1
- package/dist/paths/collection-refs.d.ts +2 -0
- package/dist/paths/collection-refs.d.ts.map +1 -1
- package/dist/paths/collection-refs.js +3 -0
- package/dist/paths/collection-refs.js.map +1 -1
- package/dist/paths/collections.d.ts +5 -0
- package/dist/paths/collections.d.ts.map +1 -1
- package/dist/paths/collections.js +14 -0
- package/dist/paths/collections.js.map +1 -1
- package/dist/paths/path-builders.d.ts +8 -0
- package/dist/paths/path-builders.d.ts.map +1 -1
- package/dist/paths/path-builders.js +17 -0
- package/dist/paths/path-builders.js.map +1 -1
- package/dist/schemas/admin.d.ts +119 -42
- package/dist/schemas/admin.d.ts.map +1 -1
- package/dist/schemas/admin.js +49 -30
- package/dist/schemas/admin.js.map +1 -1
- package/dist/schemas/atoms.d.ts +8 -0
- package/dist/schemas/atoms.d.ts.map +1 -1
- package/dist/schemas/atoms.js +8 -0
- package/dist/schemas/atoms.js.map +1 -1
- package/dist/schemas/hall-library.d.ts +1 -0
- package/dist/schemas/hall-library.d.ts.map +1 -1
- package/dist/schemas/hall-library.js +6 -1
- package/dist/schemas/hall-library.js.map +1 -1
- package/dist/schemas/index.d.ts +1 -0
- package/dist/schemas/index.d.ts.map +1 -1
- package/dist/schemas/index.js +1 -0
- package/dist/schemas/index.js.map +1 -1
- package/dist/schemas/notification.d.ts +1 -1
- package/dist/schemas/payments.d.ts +1 -0
- package/dist/schemas/payments.d.ts.map +1 -1
- package/dist/schemas/payments.js +5 -0
- package/dist/schemas/payments.js.map +1 -1
- package/dist/schemas/public-documents.d.ts +399 -0
- package/dist/schemas/public-documents.d.ts.map +1 -0
- package/dist/schemas/public-documents.js +147 -0
- package/dist/schemas/public-documents.js.map +1 -0
- package/dist/schemas/safety.d.ts +1 -1
- package/dist/types/audit.d.ts +1 -1
- package/dist/types/audit.d.ts.map +1 -1
- package/dist/types/audit.js.map +1 -1
- package/dist/types/index.d.ts +1 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +1 -0
- package/dist/types/index.js.map +1 -1
- package/dist/types/public-documents.d.ts +3 -0
- package/dist/types/public-documents.d.ts.map +1 -0
- package/dist/types/public-documents.js +2 -0
- package/dist/types/public-documents.js.map +1 -0
- package/dist/types/system.d.ts +3 -3
- package/dist/types/system.js.map +1 -1
- package/dist/utils/index.d.ts +1 -0
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +1 -0
- package/dist/utils/index.js.map +1 -1
- package/dist/utils/public-documents.d.ts +63 -0
- package/dist/utils/public-documents.d.ts.map +1 -0
- package/dist/utils/public-documents.js +143 -0
- package/dist/utils/public-documents.js.map +1 -0
- package/package.json +4 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"domain-events-admin.js","sourceRoot":"","sources":["../../src/media/domain-events-admin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAEpD,4EAA4E;AAC5E,6EAA6E;AAC7E,sDAAsD;AAEtD,MAAM,CAAC,MAAM,qCAAqC,GAAG,CAAC;KACnD,MAAM,CAAC;IACN,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,6BAA6B,CAAC;IAC9C,GAAG,EAAE,CAAC;SACH,MAAM,CAAC;QACN,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;QACzB,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;QAC9B,UAAU,EAAE,gBAAgB;QAC5B,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;KAClC,CAAC;SACD,MAAM,EAAE;CACZ,CAAC;KACD,MAAM,EAAE,CAAC;AAEZ,MAAM,CAAC,MAAM,mCAAmC,GAAG,CAAC;KACjD,MAAM,CAAC;IACN,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,2BAA2B,CAAC;IAC5C,GAAG,EAAE,CAAC;SACH,MAAM,CAAC;QACN,eAAe,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;QAClC,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;KAC9B,CAAC;SACD,MAAM,EAAE;CACZ,CAAC;KACD,MAAM,EAAE,CAAC;AAEZ,MAAM,CAAC,MAAM,wCAAwC,GAAG,CAAC;KACtD,MAAM,CAAC;IACN,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,gCAAgC,CAAC;IACjD,GAAG,EAAE,CAAC;SACH,MAAM,CAAC;QACN,eAAe,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;QAClC,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;KAC9B,CAAC;SACD,MAAM,EAAE;CACZ,CAAC;KACD,MAAM,EAAE,CAAC;AAEZ,MAAM,CAAC,MAAM,
|
|
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;
|
|
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,
|
|
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,
|
|
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
|
|
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":"
|
|
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":"AAAA,mEAAmE;AACnE,EAAE;AACF,8DAA8D;AAC9D,kEAAkE;AAElE,OAAO,EACL,WAAW,EACX,mBAAmB,EACnB,2BAA2B,EAC3B,yBAAyB,EACzB,qBAAqB,GACtB,MAAM,kBAAkB,CAAC;
|
|
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
|
|
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).
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"collections.js","sourceRoot":"","sources":["../../src/paths/collections.ts"],"names":[],"mappings":"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","sourcesContent":["// Firestore collection name constants — canonical source of truth\n// Changes to these values require database migration.\n\nimport type { WorkProjectType } from '../types/content.js';\n\n/**\n * TOP-LEVEL COLLECTIONS\n */\nexport const COLLECTIONS = {\n // Core entities\n USER_PROFILES: 'userProfiles',\n PUBLIC_USERS: 'publicUsers',\n ALL_WORK_PROJECTS: 'allWorkProjects',\n PUBLIC_WORK_PROJECTS: 'publicWorkProjects',\n WORK_REALMS: 'workRealms',\n\n // Content & Social\n SQUARE_STREETZ_FEED: 'squareStreetzFeed',\n THRESHOLD_ITEMS: 'thresholdItems',\n HALL_ITEMS: 'hallItems',\n HALL_CONTENT_CHANGE_REQUESTS: 'hallContentChangeRequests',\n COMMISSION_LISTINGS: 'commissionListings',\n AUDITION_BOARD: 'auditionBoard',\n FOLLOW_EDGES: 'followEdges',\n FOLLOW_COUNTERS: 'followCounters',\n\n // System & Utility\n RESERVED_DISPLAY_NAMES: 'reservedDisplayNames',\n RESERVED_REALM_NAMES: 'reservedRealmNames',\n ACCOUNT_DELETION_REQUESTS: 'accountDeletionRequests',\n CONTENT_REPORTS: 'contentReports',\n PENDING_MEDIA: 'pendingMedia',\n PENDING_MEDIA_ARCHIVE: 'pendingMediaArchive',\n MEDIA_ASSETS: 'mediaAssets',\n MEDIA_ACTIVATION_JOBS: 'mediaActivationJobs',\n PENDING_ADMIN_DISPATCHES: 'pendingAdminDispatches',\n ACTIVE_REPORT_GROUPS: 'activeReportGroups',\n CONTENT_VIOLATIONS: 'contentViolations',\n ADMIN_TASKS: 'adminTasks',\n SHORT_LINKS: 'shortLinks',\n GUILD_INVITE_CONVERSATIONS: 'guildInviteConversations',\n STAKE_SHARE_AUDIT_EVENTS: 'stakeShareAuditEvents',\n MODERATION_CASCADE_MANIFESTS: 'moderationCascadeManifests',\n // Backend-only append-only audit ledger (audit-core shape; auditEvents/{eventId}). Was a\n // rules-only name written through a literal until the constant landed here.\n AUDIT_EVENTS: 'auditEvents',\n\n // Notification system\n ACTIVE_USER_NOTIFICATIONS: 'activeUserNotifications',\n ACTIVE_ADMIN_NOTIFICATIONS: 'activeAdminNotifications',\n ADMIN_NOTIFICATION_HISTORY: 'adminNotificationHistory',\n PENDING_NOTIFICATIONS: 'pendingNotifications',\n\n // Notification redesign — delivery ledger + unified fanout engine (Admin-SDK-only).\n NOTIFICATION_DELIVERIES: 'notificationDeliveries',\n NOTIFICATION_FANOUT_JOBS: 'notificationFanoutJobs',\n // Server-owned \"archive all\" jobs (one per user+category+requestId; CF-only, never\n // client-readable — the client learns state through getArchiveAllStatus).\n NOTIFICATION_ARCHIVE_ALL_JOBS: 'notificationArchiveAllJobs',\n\n // Chat realtime sync / projection / command collections (Admin-SDK-only).\n CHAT_CHANNEL_AUTH_PROJECTIONS: 'chatChannelAuthProjections',\n CHAT_SCOPE_DEGRADED: 'chatScopeDegraded',\n CHAT_SYNC_EVENTS: 'chatSyncEvents',\n CHAT_SYNC_FANOUT_JOBS: 'chatSyncFanoutJobs',\n CHAT_MESSAGE_OUTBOX: 'chatMessageOutbox',\n CHAT_ADMIN_ACTION_COMMANDS: 'chatAdminActionCommands',\n CHAT_HISTORY_ANONYMIZATION_JOBS: 'chatHistoryAnonymizationJobs',\n\n // Square Streetz announcement outbox (Admin-SDK-only): durable jobs enqueued in the\n // announcing domain's transaction and drained by the outbox trigger worker. Job ids\n // are deterministic so a replayed transaction collides instead of duplicating —\n // ALWAYS derive them via buildSquareAnnouncementJobId (doc-schemas/square-announcement-jobs.ts).\n SQUARE_ANNOUNCEMENT_JOBS: 'squareAnnouncementJobs',\n\n // Feedback & Metadata\n FEEDBACK_SUBMISSIONS: 'feedbackSubmissions',\n CRAFT_SKILLS_BY_TAG: 'craftSkillsByTag',\n SYSTEM_DATA: '_systemData',\n APP_CONFIG: '_appConfig',\n // Server-only singleton bucket (BACKEND-108 — least-privileged reader). Docs whose ONLY\n // readers are Cloud Functions (Admin SDK) live here, never in the public `_appConfig`\n // bucket. Firestore rules deny all client reads/writes on `_serverData`.\n // Docs: agePolicy, nciiPolicy, privilegedReviewerSecurity, and the feedbackLists\n // container whose feedbackAliases / feedbackDenylist subcollections back submitFeedback.\n SERVER_DATA: '_serverData',\n\n // Payments & pledge ledger\n PLEDGE_PAYMENTS: 'pledgePayments',\n PLEDGE_PAYMENT_PROVIDER_REFS: 'pledgePaymentProviderRefs',\n PROCESSED_STRIPE_EVENTS: 'processedStripeEvents',\n PLEDGE_PAYMENT_LEDGER_EVENTS: 'pledgePaymentLedgerEvents',\n PAYMENT_WEBHOOK_QUARANTINE: 'paymentWebhookQuarantine',\n // Running-totals singleton (pledgePaymentTotals/current) — auth-readable, server-only writes.\n PLEDGE_PAYMENT_TOTALS: 'pledgePaymentTotals',\n // User-initiated pledge refund requests (post-launch handler; keyed by requestId). No Stripe ids\n // here — those stay on pledgePaymentProviderRefs. Server-only writes.\n PLEDGE_REFUND_REQUESTS: 'pledgeRefundRequests',\n\n // Trust & Safety — child-safety case spine (§A1b, §A2)\n CHILD_SAFETY_CASE_LIST: 'childSafetyCaseList',\n CHILD_SAFETY_CASES: 'childSafetyCases',\n CHILD_SAFETY_OWNING_ALIASES: 'childSafetyOwningAliases',\n\n // Trust & Safety — time-sensitive admin-tray \"case needs work\" pins (admin-readable\n // projection; the 5th notification-tray tab reads it, the Safety Case Console owns detail).\n ACTIVE_SAFETY_CASE_ALERTS: 'activeSafetyCaseAlerts',\n\n // Trust & Safety — holds + resource commands (§A3)\n SAFETY_HOLD_REFS: 'safetyHoldRefs',\n SAFETY_HOLD_RESOURCES: 'safetyHoldResources',\n SAFETY_RESOURCE_COMMANDS: 'safetyResourceCommands',\n\n // Trust & Safety — evidence + provenance (§A4, §A6)\n SAFETY_EVIDENCE_MANIFESTS: 'safetyEvidenceManifests',\n SAFETY_EVIDENCE_JOBS: 'safetyEvidenceJobs',\n EVENT_PROVENANCE: 'eventProvenance',\n\n // Trust & Safety — sagas + closure (§A5)\n QUARANTINE_SAGA_JOBS: 'quarantineSagaJobs',\n NCMEC_SUBMISSION_JOBS: 'ncmecSubmissionJobs',\n ACCOUNT_ACTION_COMMANDS: 'accountActionCommands',\n\n // Trust & Safety — SLA monitors + heartbeat (§A8)\n SAFETY_SLA_MONITORS: 'safetySlaMonitors',\n SAFETY_MONITOR_HEARTBEAT: 'safetyMonitorHeartbeat',\n\n // Trust & Safety — age attestation nonces (§A7)\n AGE_ATTESTATION_NONCES: 'ageAttestationNonces',\n\n // Trust & Safety — NCII / TAKE IT DOWN (§A11)\n NCII_ALLEGATIONS: 'nciiAllegations',\n TAKE_IT_DOWN_REQUESTS: 'takeItDownRequests',\n NCII_CASES: 'nciiCases',\n NCII_TEMPORARY_HOLDS: 'nciiTemporaryHolds',\n NCII_REMOVAL_JOBS: 'nciiRemovalJobs',\n // [H-01] durable operator-visible inventory of NCII-evidence objects RETAINED but never recorded\n // as evidence (orphan / oversized / spoof / unknown-reference). Never auto-deleted.\n NCII_RETAINED_EVIDENCE_INVENTORY: 'nciiRetainedEvidenceInventory',\n // [H-01] app-only dead-letter sink for NCII retained-evidence inventory rows that could not be\n // written to the primary nciiRetainedEvidenceInventory collection (e.g. write failure during\n // the onNciiEvidenceUploaded trigger). Never auto-deleted; operator-visible for manual triage.\n NCII_INVENTORY_DEAD_LETTER: 'nciiInventoryDeadLetter',\n\n // Backend-only retry queue for post-commit auth-effect reconciliation: when an account-status\n // change committed to Firestore but the follow-on Auth effect (custom-claim / disable) failed,\n // a queue entry keyed by uid drives a retry loop toward the target status. Admin-SDK-only.\n STATUS_RECONCILE_QUEUE: 'statusReconcileQueue',\n\n // Trust & Safety — [H-08] per-operator TOTP step-up state (secret + active grant window),\n // keyed by uid. Cloud-Functions-only: the secret is returned to the client exactly once by\n // the enroll callable and is NEVER readable through Firestore.\n OPERATOR_STEP_UP: 'operatorStepUp',\n\n // Trust & Safety — one persisted pagination-cursor doc per reconciler needs-work backstop\n // sweep (quarantine enqueue, NCMEC enqueue), keyed by the sweep's cursor key. Admin-SDK-only.\n SAFETY_RECONCILER_CURSORS: 'safetyReconcilerCursors',\n\n // Durable per-sweep cadence/cursor state for the scheduled user sweeps, keyed by the sweep\n // name (orphanRegistrationCleanup, reconcileAccountStatus). Wall-clock stamps that survive a\n // container recycle, so a \"~once/day\" or \"~once/week\" pass fires on real elapsed time instead\n // of an in-memory counter. Admin-SDK-only.\n SWEEP_STATE: 'sweepState',\n} as const;\n\n/**\n * USER PROFILE SUBCOLLECTIONS\n * Nested under userProfiles/{userId}/\n */\nexport const USER_SUBCOLLECTIONS = {\n PROFILE_CRAFT_SKILLS: 'profileCraftSkills',\n PRIVATE_DATA: 'privateData',\n USER_METADATA: 'userMetadata',\n USER_LIKES: 'userLikes',\n MENTION_HISTORY: 'mentionHistory',\n AUDITION_VOTES: 'auditionVotes',\n // Archived personal notification history (userProfiles/{uid}/notificationHistory/{id}).\n NOTIFICATION_HISTORY: 'notificationHistory',\n} as const;\n\n/**\n * WORKPROJECT SUBCOLLECTIONS\n * Nested under allWorkProjects/{workProjectId}/\n */\nexport const WORK_PROJECT_SUBCOLLECTIONS = {\n WORK_PROJECT_TALES: 'workProjectTales',\n WORK_PROJECT_TUNES: 'workProjectTunes',\n WORK_PROJECT_TELEVISION: 'workProjectTelevision',\n GUILDMATE_USERS: 'guildmateUsers',\n PUBLIC_GUILDMATE_USERS: 'publicGuildmateUsers',\n WORK_FILE_FOLDERS: 'workFileFolders',\n GUILD_CHAT_CHANNELS: 'guildChatChannels',\n // The Work's single hall-entry reservation (allWorkProjects/{id}/hallSubmissionReservation/\n // reservation): claimed create-only inside the first threshold submit's transaction so a\n // project can only ever own ONE hall item.\n HALL_SUBMISSION_RESERVATION: 'hallSubmissionReservation',\n} as const;\n\n/**\n * WORKREALM SUBCOLLECTIONS\n * Nested under workRealms/{workRealmId}/\n */\nexport const WORK_REALM_SUBCOLLECTIONS = {\n // The Realm steward's folders for the realm shared-file pool. The FILES themselves are\n // never docs here — a shared file stays a `workFile` under its owning Work and carries\n // `realmFileFolderId` on its mediaAssets doc.\n REALM_FILE_FOLDERS: 'realmFileFolders',\n} as const;\n\n/**\n * HALL ITEM SUBCOLLECTIONS\n * Nested under hallItems/{hallItemId}/ — the PUBLISHED sub-item projections\n * (chapters/tracks/episodes copied out of the Work at publish time by\n * runPublishApprovedHallLibraryItem).\n *\n * The segment is an INDEPENDENT compound-camelCase collection name (ARCH-104) — it is\n * NOT any transformation of `WorkProjectType`. Map a work type to its segment through\n * HALL_ITEM_SUBCOLLECTION_BY_WORK_TYPE; `workProjectType.toLowerCase()` is not merely\n * discouraged, it produces a segment that DOES NOT EXIST ('tales', 'tunes',\n * 'television'), so the resulting path silently reads/writes an empty collection.\n */\nexport const HALL_ITEM_SUBCOLLECTIONS = {\n TALES: 'hallItemTales',\n TUNES: 'hallItemTunes',\n TELEVISION: 'hallItemTelevision',\n} as const;\n\nexport type HallItemSubcollection =\n (typeof HALL_ITEM_SUBCOLLECTIONS)[keyof typeof HALL_ITEM_SUBCOLLECTIONS];\n\n/** WorkProjectType → published hall sub-item subcollection segment. */\nexport const HALL_ITEM_SUBCOLLECTION_BY_WORK_TYPE: Record<WorkProjectType, HallItemSubcollection> = {\n Tales: HALL_ITEM_SUBCOLLECTIONS.TALES,\n Tunes: HALL_ITEM_SUBCOLLECTIONS.TUNES,\n Television: HALL_ITEM_SUBCOLLECTIONS.TELEVISION,\n};\n\n/**\n * DEEPLY NESTED SUBCOLLECTIONS\n * Third level and beyond\n */\nexport const NESTED_SUBCOLLECTIONS = {\n // Content subcollections\n TALE_CHAPTERS: 'taleChapters',\n TUNE_TRACKS: 'tuneTracks',\n TELEVISION_EPISODES: 'televisionEpisodes',\n\n // Work-project file folders (S7): files nested under each folder.\n WORK_FILES: 'workFiles',\n\n // Communication — guild channel + invite messages are REALTIME-ONLY (chat Worker\n // Durable Object, never Firestore); only admin-support conversationMessages persist here.\n CONVERSATION_MESSAGES: 'conversationMessages',\n\n // Conversation Files — the flat per-conversation file list. Nested under the\n // conversation's NATURAL Firestore parent, so the same subcollection segment serves\n // both supported scopes:\n // guildInviteConversations/{guildInviteId}/conversationFiles/{conversationFileId}\n // pendingAdminDispatches/{adminDispatchId}/conversationFiles/{conversationFileId}\n // Guild chat channels deliberately have NO conversationFiles subcollection.\n CONVERSATION_FILES: 'conversationFiles',\n\n // SquareStreetz & Social\n SOCIAL_POSTS: 'socialPosts',\n ACTIVE_POSTS: 'activePosts',\n TRENDING_POSTS: 'trendingPosts',\n\n // Commissions & Auditions\n COMMISSION_PROPOSALS: 'commissionProposals',\n AUDITION_ENTRIES: 'auditionEntries',\n\n // User history\n LIKE_HISTORY: 'likeHistory',\n SQUARE_STREETZ_LIKES: 'squareStreetzLikes',\n\n // Craft Skills & Feedback\n TAGGED_CRAFT_SKILLS: 'taggedCraftSkills',\n USER_SUGGESTIONS: 'userSuggestions',\n\n // Moderation\n CHANGED_DOCS: 'changedDocs',\n\n // Trust & Safety — report spine (§A1): the public, reporter-identity-free projection\n // is a deterministic child of the protected report root\n // (contentReports/{reportId}/publicProjection/{reportId}).\n REPORT_PUBLIC_PROJECTION: 'publicProjection',\n // Per-report idempotency markers under a report group\n // (activeReportGroups/{groupKey}/reportGroupCountedReports/{reportId}): the group's\n // totalReports increment is gated on the marker's ABSENCE, so a redelivered create event\n // never double-counts. Backend-only.\n REPORT_GROUP_COUNTED_REPORTS: 'reportGroupCountedReports',\n // Restricted reporter/requester PII subcollection, shared by the report spine\n // (contentReports/{reportId}/privateDetails/{snapshot,narrative}) and TAKE IT DOWN\n // (takeItDownRequests/{requestId}/privateDetails/requester). ONE shared compound value\n // serves both parents — never split per parent. Admin-read-only / server-only.\n PRIVATE: 'privateDetails',\n\n // Chat degraded-scope causes\n // (chatScopeDegraded/{scopeKey}/chatScopeDegradedCauses/{causeId}).\n CHAT_SCOPE_DEGRADED_CAUSES: 'chatScopeDegradedCauses',\n // Anonymization affected-chunk set (chatHistoryAnonymizationJobs/{jobId}/affectedChunks/{chunkOrdinal}).\n CHAT_ANONYMIZATION_AFFECTED_CHUNKS: 'affectedChunks',\n\n // Trust & Safety — child-safety case append-only detail (NEVER arrays).\n CHILD_SAFETY_SOURCE_SIGNALS: 'sourceSignals',\n CHILD_SAFETY_DECISIONS: 'childSafetyDecisions',\n CHILD_SAFETY_DECISION_VIEWS: 'childSafetyDecisionViews',\n CHILD_SAFETY_CASE_ACCOUNTS: 'childSafetyCaseAccounts',\n CHILD_SAFETY_CASE_ACCOUNT_HISTORY: 'childSafetyCaseAccountHistory',\n CHILD_SAFETY_NCMEC_SUBMISSIONS: 'ncmecSubmissions',\n CHILD_SAFETY_NCMEC_SUBMISSION_FILES: 'ncmecSubmissionFiles',\n // Per-submission NCMEC transmission attempts\n // (childSafetyCases/{caseId}/ncmecSubmissions/{submissionId}/ncmecSubmissionAttempts/{attemptId}).\n // Rules-only until now — registered here so the segment has a single owner.\n NCMEC_SUBMISSION_ATTEMPTS: 'ncmecSubmissionAttempts',\n CHILD_SAFETY_LEGAL_PROCESS: 'legalProcess',\n // Immutable portal-filed NCMEC artifacts recorded on the case by the two step-up-gated\n // operator callables — the receipt artifact that gates `markNcmecPortalComplete`\n // (childSafetyCases/{caseId}/portalReceiptArtifacts/{artifactId}) and the correction record\n // that gates the corrected-no-apparent-violation disposition\n // (childSafetyCases/{caseId}/ncmecPortalCorrections/{correctionId}). Admin-SDK-only; both\n // segments were app-local literals until now.\n NCMEC_PORTAL_RECEIPT_ARTIFACTS: 'portalReceiptArtifacts',\n NCMEC_PORTAL_CORRECTIONS: 'ncmecPortalCorrections',\n // The single immutable completion-proof record bound to one NCMEC submission\n // (childSafetyCases/{caseId}/ncmecSubmissions/{submissionId}/ncmecCompletionProof/record).\n // A submission can never reach `completed` without this record existing — it is written\n // create-if-absent in the SAME transaction as the state transition.\n NCMEC_COMPLETION_PROOF: 'ncmecCompletionProof',\n\n // Trust & Safety — resource-command subcollections (§A3).\n SAFETY_RESOURCE_COMMAND_AUTHORIZED_REQUESTS: 'authorizedRequests',\n SAFETY_RESOURCE_COMMAND_BYPASS_REFS: 'bypassRefs',\n\n // Trust & Safety — evidence-job subcollections (§A4).\n SAFETY_EVIDENCE_JOB_ITEMS: 'safetyEvidenceJobItems',\n SAFETY_EVIDENCE_JOB_DISPOSITION: 'safetyEvidenceJobDisposition',\n\n // Trust & Safety — quarantine-saga subcollection (§A5).\n QUARANTINE_SAGA_RELATED_ASSETS: 'relatedAssets',\n\n // Trust & Safety — TAKE IT DOWN request subcollections (§A11). The restricted\n // requester-PII subcollection uses the shared `PRIVATE` constant above.\n TAKE_IT_DOWN_SUBMISSIONS: 'takeItDownSubmissions',\n TAKE_IT_DOWN_VALIDITY_DECISIONS: 'validityDecisions',\n TAKE_IT_DOWN_ACTIONS: 'takeItDownActions',\n TAKE_IT_DOWN_EVIDENCE: 'takeItDownEvidence',\n // The deletion-verification record the retention sweep keeps for each evidence object it removes\n // (…/takeItDownEvidenceDisposition/{evidenceId}). Its own subcollection, mirroring\n // `safetyEvidenceJobDisposition`, so `takeItDownActions` holds action rows only. Backend-only.\n TAKE_IT_DOWN_EVIDENCE_DISPOSITION: 'takeItDownEvidenceDisposition',\n // The RESTRICTED operator rationale row bound to one validity decision\n // (…/validityDecisions/{decisionId}/takeItDownValidityRationale/record) — the row the\n // decision's rationaleRef and the action's detailRef point at. Backend-only.\n TAKE_IT_DOWN_VALIDITY_RATIONALE: 'takeItDownValidityRationale',\n\n // Trust & Safety — NCII case subcollections (§A11).\n NCII_CASE_ALLEGATION_LINKS: 'allegationLinks',\n NCII_CASE_REQUEST_LINKS: 'requestLinks',\n NCII_CASE_REMOVAL_ACTIONS: 'removalActions',\n NCII_CASE_BLOCKED_HASHES: 'blockedHashes',\n // Append-only NCII case closure/reopen events (nciiCases/{caseId}/closureEvents/{eventId}).\n NCII_CASE_CLOSURE_EVENTS: 'closureEvents',\n\n // Trust & Safety — NCII removal-job targets (§A11).\n NCII_REMOVAL_TARGETS: 'nciiRemovalTargets',\n\n // Feedback lists under the server-only `_serverData/feedbackLists` container doc\n // (BACKEND-108): the alias map and the denylist submitFeedback consults via the Admin\n // SDK. Moved out of the top-level `feedbackAliases` / `feedbackDenylist` collections,\n // which were anonymously readable with no client reader.\n FEEDBACK_ALIASES: 'feedbackAliases',\n FEEDBACK_DENYLIST: 'feedbackDenylist',\n} as const;\n\n/**\n * SPECIAL DOCUMENT PATHS\n * Static document IDs for singleton documents\n */\nexport const SPECIAL_DOCS = {\n ADMIN_LIST: 'adminList',\n APP_CONFIG: 'app',\n // Charter→full app-mode marker doc (_systemData/appMode) that recordAppModeFlip writes.\n APP_MODE: 'appMode',\n FUTURE_PLANS: 'futurePlans',\n NOTIFICATION_SETTINGS: 'notificationSettings',\n // Hall viewing-state doc id under userProfiles/{uid}/privateData/ (hall-viewing-experience\n // Area 2, ruled 2026-07-04). Mirrors the NOTIFICATION_SETTINGS fixed-id privateData pattern.\n HALL_LIBRARY_PREFERENCES: 'hallLibraryPreferences',\n PROFANITY_LIST: 'profanityList',\n RESERVED_USERNAMES: 'reservedUsernames',\n BLOCKED_FRANCHISE_NAMES: 'blockedFranchiseNames',\n RULES_AND_AGREEMENTS: 'rulesAndAgreements',\n // _systemData/hallMediaReaperCursor — the reapOrphanedHallMediaCopies scan cursor\n // (highest `createdAt` the reaper has positively cleared). Backend-only.\n HALL_MEDIA_REAPER_CURSOR: 'hallMediaReaperCursor',\n // _systemData/publicUsersReconcilerCursor — the reconcilePublicUsers sweep cursor (last\n // userProfiles document id positively cleared; '' = start). Backend-only.\n PUBLIC_USERS_RECONCILER_CURSOR: 'publicUsersReconcilerCursor',\n // Editable content-page singletons under _appConfig (content-pages Firestore\n // migration, DJ ruling 2026-07-06): the ONLY source for /terms, /privacy, and\n // the /take-it-down page copy — no hardcoded fallbacks anywhere.\n TERMS_PAGE: 'termsOfService',\n PRIVACY_PAGE: 'privacyPolicy',\n TAKE_IT_DOWN_PAGE_COPY: 'takeItDownPageCopy',\n // Also the doc id of the pledge running-totals singleton (pledgePaymentTotals/summary).\n SUMMARY: 'summary',\n\n // Trust & Safety — singleton global SLA-monitor heartbeat (safetyMonitorHeartbeat/global).\n SAFETY_MONITOR_HEARTBEAT_GLOBAL: 'global',\n\n // Trust & Safety — _serverData (server-only) singletons (§A7, §A11). Moved out of the\n // public _appConfig bucket: their only readers are Cloud Functions (BACKEND-108).\n AGE_POLICY: 'agePolicy',\n NCII_POLICY: 'nciiPolicy',\n PRIVILEGED_REVIEWER_SECURITY: 'privilegedReviewerSecurity',\n\n // _serverData container doc for the two submitFeedback lists. It holds no fields — it\n // exists only as the parent of the feedbackAliases / feedbackDenylist subcollections,\n // which moved out of the anonymously-readable top-level collections (BACKEND-108).\n FEEDBACK_LISTS: 'feedbackLists',\n\n // Trust & Safety — fixed-id TAKE IT DOWN request subdocs (§A11).\n TAKE_IT_DOWN_REQUESTER: 'requester', // takeItDownRequests/{requestId}/privateDetails/requester\n\n // The fixed doc id of a one-per-parent singleton row: the NCMEC completion proof\n // (…/ncmecCompletionProof/record) and the TAKE IT DOWN validity rationale\n // (…/takeItDownValidityRationale/record). ONE shared value serves both — never split.\n RECORD: 'record',\n\n // The Work's single hall-entry reservation doc (…/hallSubmissionReservation/reservation).\n HALL_SUBMISSION_RESERVATION: 'reservation',\n\n // Trust & Safety — fixed-id report-spine private subdocs (§A1).\n REPORT_SNAPSHOT: 'snapshot', // contentReports/{reportId}/privateDetails/snapshot\n REPORT_NARRATIVE: 'narrative', // contentReports/{reportId}/privateDetails/narrative\n // contentReports/{reportId}/privateDetails/narrativeEscalation — the NEW narrative typed\n // when an EXISTING ordinary report is escalated into a protected case (the original\n // narrative doc already exists, so a re-create would collide).\n REPORT_NARRATIVE_ESCALATION: 'narrativeEscalation',\n} as const;\n"]}
|
|
1
|
+
{"version":3,"file":"collections.js","sourceRoot":"","sources":["../../src/paths/collections.ts"],"names":[],"mappings":"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","sourcesContent":["// Firestore collection name constants — canonical source of truth\n// Changes to these values require database migration.\n\nimport type { WorkProjectType } from '../types/content.js';\n\n/**\n * TOP-LEVEL COLLECTIONS\n */\nexport const COLLECTIONS = {\n // Core entities\n USER_PROFILES: 'userProfiles',\n PUBLIC_USERS: 'publicUsers',\n ALL_WORK_PROJECTS: 'allWorkProjects',\n PUBLIC_WORK_PROJECTS: 'publicWorkProjects',\n WORK_REALMS: 'workRealms',\n\n // Content & Social\n SQUARE_STREETZ_FEED: 'squareStreetzFeed',\n THRESHOLD_ITEMS: 'thresholdItems',\n HALL_ITEMS: 'hallItems',\n HALL_CONTENT_CHANGE_REQUESTS: 'hallContentChangeRequests',\n COMMISSION_LISTINGS: 'commissionListings',\n AUDITION_BOARD: 'auditionBoard',\n FOLLOW_EDGES: 'followEdges',\n FOLLOW_COUNTERS: 'followCounters',\n\n // System & Utility\n RESERVED_DISPLAY_NAMES: 'reservedDisplayNames',\n RESERVED_REALM_NAMES: 'reservedRealmNames',\n ACCOUNT_DELETION_REQUESTS: 'accountDeletionRequests',\n CONTENT_REPORTS: 'contentReports',\n PENDING_MEDIA: 'pendingMedia',\n PENDING_MEDIA_ARCHIVE: 'pendingMediaArchive',\n MEDIA_ASSETS: 'mediaAssets',\n MEDIA_ACTIVATION_JOBS: 'mediaActivationJobs',\n PENDING_ADMIN_DISPATCHES: 'pendingAdminDispatches',\n ACTIVE_REPORT_GROUPS: 'activeReportGroups',\n CONTENT_VIOLATIONS: 'contentViolations',\n ADMIN_TASKS: 'adminTasks',\n SHORT_LINKS: 'shortLinks',\n GUILD_INVITE_CONVERSATIONS: 'guildInviteConversations',\n STAKE_SHARE_AUDIT_EVENTS: 'stakeShareAuditEvents',\n MODERATION_CASCADE_MANIFESTS: 'moderationCascadeManifests',\n // Backend-only append-only audit ledger (audit-core shape; auditEvents/{eventId}). Was a\n // rules-only name written through a literal until the constant landed here.\n AUDIT_EVENTS: 'auditEvents',\n\n // Notification system\n ACTIVE_USER_NOTIFICATIONS: 'activeUserNotifications',\n ACTIVE_ADMIN_NOTIFICATIONS: 'activeAdminNotifications',\n ADMIN_NOTIFICATION_HISTORY: 'adminNotificationHistory',\n PENDING_NOTIFICATIONS: 'pendingNotifications',\n\n // Notification redesign — delivery ledger + unified fanout engine (Admin-SDK-only).\n NOTIFICATION_DELIVERIES: 'notificationDeliveries',\n NOTIFICATION_FANOUT_JOBS: 'notificationFanoutJobs',\n // Server-owned \"archive all\" jobs (one per user+category+requestId; CF-only, never\n // client-readable — the client learns state through getArchiveAllStatus).\n NOTIFICATION_ARCHIVE_ALL_JOBS: 'notificationArchiveAllJobs',\n\n // Chat realtime sync / projection / command collections (Admin-SDK-only).\n CHAT_CHANNEL_AUTH_PROJECTIONS: 'chatChannelAuthProjections',\n CHAT_SCOPE_DEGRADED: 'chatScopeDegraded',\n CHAT_SYNC_EVENTS: 'chatSyncEvents',\n CHAT_SYNC_FANOUT_JOBS: 'chatSyncFanoutJobs',\n CHAT_MESSAGE_OUTBOX: 'chatMessageOutbox',\n CHAT_ADMIN_ACTION_COMMANDS: 'chatAdminActionCommands',\n CHAT_HISTORY_ANONYMIZATION_JOBS: 'chatHistoryAnonymizationJobs',\n\n // Square Streetz announcement outbox (Admin-SDK-only): durable jobs enqueued in the\n // announcing domain's transaction and drained by the outbox trigger worker. Job ids\n // are deterministic so a replayed transaction collides instead of duplicating —\n // ALWAYS derive them via buildSquareAnnouncementJobId (doc-schemas/square-announcement-jobs.ts).\n SQUARE_ANNOUNCEMENT_JOBS: 'squareAnnouncementJobs',\n\n // Feedback & Metadata\n FEEDBACK_SUBMISSIONS: 'feedbackSubmissions',\n CRAFT_SKILLS_BY_TAG: 'craftSkillsByTag',\n SYSTEM_DATA: '_systemData',\n APP_CONFIG: '_appConfig',\n // Server-only singleton bucket (BACKEND-108 — least-privileged reader). Docs whose ONLY\n // readers are Cloud Functions (Admin SDK) live here, never in the public `_appConfig`\n // bucket. Firestore rules deny all client reads/writes on `_serverData`.\n // Docs: agePolicy, nciiPolicy, privilegedReviewerSecurity, and the feedbackLists\n // container whose feedbackAliases / feedbackDenylist subcollections back submitFeedback.\n SERVER_DATA: '_serverData',\n\n // Payments & pledge ledger\n PLEDGE_PAYMENTS: 'pledgePayments',\n PLEDGE_PAYMENT_PROVIDER_REFS: 'pledgePaymentProviderRefs',\n PROCESSED_STRIPE_EVENTS: 'processedStripeEvents',\n PLEDGE_PAYMENT_LEDGER_EVENTS: 'pledgePaymentLedgerEvents',\n PAYMENT_WEBHOOK_QUARANTINE: 'paymentWebhookQuarantine',\n // Running-totals singleton (pledgePaymentTotals/current) — auth-readable, server-only writes.\n PLEDGE_PAYMENT_TOTALS: 'pledgePaymentTotals',\n // User-initiated pledge refund requests (post-launch handler; keyed by requestId). No Stripe ids\n // here — those stay on pledgePaymentProviderRefs. Server-only writes.\n PLEDGE_REFUND_REQUESTS: 'pledgeRefundRequests',\n\n // Trust & Safety — child-safety case spine (§A1b, §A2)\n CHILD_SAFETY_CASE_LIST: 'childSafetyCaseList',\n CHILD_SAFETY_CASES: 'childSafetyCases',\n CHILD_SAFETY_OWNING_ALIASES: 'childSafetyOwningAliases',\n\n // Trust & Safety — time-sensitive admin-tray \"case needs work\" pins (admin-readable\n // projection; the 5th notification-tray tab reads it, the Safety Case Console owns detail).\n ACTIVE_SAFETY_CASE_ALERTS: 'activeSafetyCaseAlerts',\n\n // Trust & Safety — holds + resource commands (§A3)\n SAFETY_HOLD_REFS: 'safetyHoldRefs',\n SAFETY_HOLD_RESOURCES: 'safetyHoldResources',\n SAFETY_RESOURCE_COMMANDS: 'safetyResourceCommands',\n\n // Trust & Safety — evidence + provenance (§A4, §A6)\n SAFETY_EVIDENCE_MANIFESTS: 'safetyEvidenceManifests',\n SAFETY_EVIDENCE_JOBS: 'safetyEvidenceJobs',\n EVENT_PROVENANCE: 'eventProvenance',\n\n // Trust & Safety — sagas + closure (§A5)\n QUARANTINE_SAGA_JOBS: 'quarantineSagaJobs',\n NCMEC_SUBMISSION_JOBS: 'ncmecSubmissionJobs',\n ACCOUNT_ACTION_COMMANDS: 'accountActionCommands',\n\n // Trust & Safety — SLA monitors + heartbeat (§A8)\n SAFETY_SLA_MONITORS: 'safetySlaMonitors',\n SAFETY_MONITOR_HEARTBEAT: 'safetyMonitorHeartbeat',\n\n // Trust & Safety — age attestation nonces (§A7)\n AGE_ATTESTATION_NONCES: 'ageAttestationNonces',\n\n // Trust & Safety — NCII / TAKE IT DOWN (§A11)\n NCII_ALLEGATIONS: 'nciiAllegations',\n TAKE_IT_DOWN_REQUESTS: 'takeItDownRequests',\n NCII_CASES: 'nciiCases',\n NCII_TEMPORARY_HOLDS: 'nciiTemporaryHolds',\n NCII_REMOVAL_JOBS: 'nciiRemovalJobs',\n // [H-01] durable operator-visible inventory of NCII-evidence objects RETAINED but never recorded\n // as evidence (orphan / oversized / spoof / unknown-reference). Never auto-deleted.\n NCII_RETAINED_EVIDENCE_INVENTORY: 'nciiRetainedEvidenceInventory',\n // [H-01] app-only dead-letter sink for NCII retained-evidence inventory rows that could not be\n // written to the primary nciiRetainedEvidenceInventory collection (e.g. write failure during\n // the onNciiEvidenceUploaded trigger). Never auto-deleted; operator-visible for manual triage.\n NCII_INVENTORY_DEAD_LETTER: 'nciiInventoryDeadLetter',\n\n // Backend-only retry queue for post-commit auth-effect reconciliation: when an account-status\n // change committed to Firestore but the follow-on Auth effect (custom-claim / disable) failed,\n // a queue entry keyed by uid drives a retry loop toward the target status. Admin-SDK-only.\n STATUS_RECONCILE_QUEUE: 'statusReconcileQueue',\n\n // Trust & Safety — [H-08] per-operator TOTP step-up state (secret + active grant window),\n // keyed by uid. Cloud-Functions-only: the secret is returned to the client exactly once by\n // the enroll callable and is NEVER readable through Firestore.\n OPERATOR_STEP_UP: 'operatorStepUp',\n\n // Trust & Safety — one persisted pagination-cursor doc per reconciler needs-work backstop\n // sweep (quarantine enqueue, NCMEC enqueue), keyed by the sweep's cursor key. Admin-SDK-only.\n SAFETY_RECONCILER_CURSORS: 'safetyReconcilerCursors',\n\n // Durable per-sweep cadence/cursor state for the scheduled user sweeps, keyed by the sweep\n // name (orphanRegistrationCleanup, reconcileAccountStatus). Wall-clock stamps that survive a\n // container recycle, so a \"~once/day\" or \"~once/week\" pass fires on real elapsed time instead\n // of an in-memory counter. Admin-SDK-only.\n SWEEP_STATE: 'sweepState',\n\n // Versioned public documents (Terms, Privacy, Rules & Agreements, Future Plans, DMCA,\n // Take It Down copy). `publicDocuments/{documentId}` is a field-less container whose\n // `publicDocumentVersions` subcollection holds the immutable published versions; the one\n // private working copy per document and the release records are top-level. All three are\n // backend-written; the public reads the `_appConfig/{documentId}` current projection.\n PUBLIC_DOCUMENTS: 'publicDocuments',\n PUBLIC_DOCUMENT_DRAFTS: 'publicDocumentDrafts',\n PUBLIC_DOCUMENT_RELEASES: 'publicDocumentReleases',\n} as const;\n\n/**\n * USER PROFILE SUBCOLLECTIONS\n * Nested under userProfiles/{userId}/\n */\nexport const USER_SUBCOLLECTIONS = {\n PROFILE_CRAFT_SKILLS: 'profileCraftSkills',\n PRIVATE_DATA: 'privateData',\n USER_METADATA: 'userMetadata',\n USER_LIKES: 'userLikes',\n MENTION_HISTORY: 'mentionHistory',\n AUDITION_VOTES: 'auditionVotes',\n // Archived personal notification history (userProfiles/{uid}/notificationHistory/{id}).\n NOTIFICATION_HISTORY: 'notificationHistory',\n} as const;\n\n/**\n * WORKPROJECT SUBCOLLECTIONS\n * Nested under allWorkProjects/{workProjectId}/\n */\nexport const WORK_PROJECT_SUBCOLLECTIONS = {\n WORK_PROJECT_TALES: 'workProjectTales',\n WORK_PROJECT_TUNES: 'workProjectTunes',\n WORK_PROJECT_TELEVISION: 'workProjectTelevision',\n GUILDMATE_USERS: 'guildmateUsers',\n PUBLIC_GUILDMATE_USERS: 'publicGuildmateUsers',\n WORK_FILE_FOLDERS: 'workFileFolders',\n GUILD_CHAT_CHANNELS: 'guildChatChannels',\n // The Work's single hall-entry reservation (allWorkProjects/{id}/hallSubmissionReservation/\n // reservation): claimed create-only inside the first threshold submit's transaction so a\n // project can only ever own ONE hall item.\n HALL_SUBMISSION_RESERVATION: 'hallSubmissionReservation',\n} as const;\n\n/**\n * WORKREALM SUBCOLLECTIONS\n * Nested under workRealms/{workRealmId}/\n */\nexport const WORK_REALM_SUBCOLLECTIONS = {\n // The Realm steward's folders for the realm shared-file pool. The FILES themselves are\n // never docs here — a shared file stays a `workFile` under its owning Work and carries\n // `realmFileFolderId` on its mediaAssets doc.\n REALM_FILE_FOLDERS: 'realmFileFolders',\n} as const;\n\n/**\n * HALL ITEM SUBCOLLECTIONS\n * Nested under hallItems/{hallItemId}/ — the PUBLISHED sub-item projections\n * (chapters/tracks/episodes copied out of the Work at publish time by\n * runPublishApprovedHallLibraryItem).\n *\n * The segment is an INDEPENDENT compound-camelCase collection name (ARCH-104) — it is\n * NOT any transformation of `WorkProjectType`. Map a work type to its segment through\n * HALL_ITEM_SUBCOLLECTION_BY_WORK_TYPE; `workProjectType.toLowerCase()` is not merely\n * discouraged, it produces a segment that DOES NOT EXIST ('tales', 'tunes',\n * 'television'), so the resulting path silently reads/writes an empty collection.\n */\nexport const HALL_ITEM_SUBCOLLECTIONS = {\n TALES: 'hallItemTales',\n TUNES: 'hallItemTunes',\n TELEVISION: 'hallItemTelevision',\n} as const;\n\nexport type HallItemSubcollection =\n (typeof HALL_ITEM_SUBCOLLECTIONS)[keyof typeof HALL_ITEM_SUBCOLLECTIONS];\n\n/** WorkProjectType → published hall sub-item subcollection segment. */\nexport const HALL_ITEM_SUBCOLLECTION_BY_WORK_TYPE: Record<WorkProjectType, HallItemSubcollection> = {\n Tales: HALL_ITEM_SUBCOLLECTIONS.TALES,\n Tunes: HALL_ITEM_SUBCOLLECTIONS.TUNES,\n Television: HALL_ITEM_SUBCOLLECTIONS.TELEVISION,\n};\n\n/**\n * DEEPLY NESTED SUBCOLLECTIONS\n * Third level and beyond\n */\nexport const NESTED_SUBCOLLECTIONS = {\n // Content subcollections\n TALE_CHAPTERS: 'taleChapters',\n TUNE_TRACKS: 'tuneTracks',\n TELEVISION_EPISODES: 'televisionEpisodes',\n\n // Work-project file folders (S7): files nested under each folder.\n WORK_FILES: 'workFiles',\n\n // Communication — guild channel + invite messages are REALTIME-ONLY (chat Worker\n // Durable Object, never Firestore); only admin-support conversationMessages persist here.\n CONVERSATION_MESSAGES: 'conversationMessages',\n\n // Conversation Files — the flat per-conversation file list. Nested under the\n // conversation's NATURAL Firestore parent, so the same subcollection segment serves\n // both supported scopes:\n // guildInviteConversations/{guildInviteId}/conversationFiles/{conversationFileId}\n // pendingAdminDispatches/{adminDispatchId}/conversationFiles/{conversationFileId}\n // Guild chat channels deliberately have NO conversationFiles subcollection.\n CONVERSATION_FILES: 'conversationFiles',\n\n // SquareStreetz & Social\n SOCIAL_POSTS: 'socialPosts',\n ACTIVE_POSTS: 'activePosts',\n TRENDING_POSTS: 'trendingPosts',\n\n // Commissions & Auditions\n COMMISSION_PROPOSALS: 'commissionProposals',\n AUDITION_ENTRIES: 'auditionEntries',\n\n // User history\n LIKE_HISTORY: 'likeHistory',\n SQUARE_STREETZ_LIKES: 'squareStreetzLikes',\n\n // Craft Skills & Feedback\n TAGGED_CRAFT_SKILLS: 'taggedCraftSkills',\n USER_SUGGESTIONS: 'userSuggestions',\n\n // Moderation\n CHANGED_DOCS: 'changedDocs',\n\n // Trust & Safety — report spine (§A1): the public, reporter-identity-free projection\n // is a deterministic child of the protected report root\n // (contentReports/{reportId}/publicProjection/{reportId}).\n REPORT_PUBLIC_PROJECTION: 'publicProjection',\n // Per-report idempotency markers under a report group\n // (activeReportGroups/{groupKey}/reportGroupCountedReports/{reportId}): the group's\n // totalReports increment is gated on the marker's ABSENCE, so a redelivered create event\n // never double-counts. Backend-only.\n REPORT_GROUP_COUNTED_REPORTS: 'reportGroupCountedReports',\n // Restricted reporter/requester PII subcollection, shared by the report spine\n // (contentReports/{reportId}/privateDetails/{snapshot,narrative}) and TAKE IT DOWN\n // (takeItDownRequests/{requestId}/privateDetails/requester). ONE shared compound value\n // serves both parents — never split per parent. Admin-read-only / server-only.\n PRIVATE: 'privateDetails',\n\n // Chat degraded-scope causes\n // (chatScopeDegraded/{scopeKey}/chatScopeDegradedCauses/{causeId}).\n CHAT_SCOPE_DEGRADED_CAUSES: 'chatScopeDegradedCauses',\n // Anonymization affected-chunk set (chatHistoryAnonymizationJobs/{jobId}/affectedChunks/{chunkOrdinal}).\n CHAT_ANONYMIZATION_AFFECTED_CHUNKS: 'affectedChunks',\n\n // Trust & Safety — child-safety case append-only detail (NEVER arrays).\n CHILD_SAFETY_SOURCE_SIGNALS: 'sourceSignals',\n CHILD_SAFETY_DECISIONS: 'childSafetyDecisions',\n CHILD_SAFETY_DECISION_VIEWS: 'childSafetyDecisionViews',\n CHILD_SAFETY_CASE_ACCOUNTS: 'childSafetyCaseAccounts',\n CHILD_SAFETY_CASE_ACCOUNT_HISTORY: 'childSafetyCaseAccountHistory',\n CHILD_SAFETY_NCMEC_SUBMISSIONS: 'ncmecSubmissions',\n CHILD_SAFETY_NCMEC_SUBMISSION_FILES: 'ncmecSubmissionFiles',\n // Per-submission NCMEC transmission attempts\n // (childSafetyCases/{caseId}/ncmecSubmissions/{submissionId}/ncmecSubmissionAttempts/{attemptId}).\n // Rules-only until now — registered here so the segment has a single owner.\n NCMEC_SUBMISSION_ATTEMPTS: 'ncmecSubmissionAttempts',\n CHILD_SAFETY_LEGAL_PROCESS: 'legalProcess',\n // Immutable portal-filed NCMEC artifacts recorded on the case by the two step-up-gated\n // operator callables — the receipt artifact that gates `markNcmecPortalComplete`\n // (childSafetyCases/{caseId}/portalReceiptArtifacts/{artifactId}) and the correction record\n // that gates the corrected-no-apparent-violation disposition\n // (childSafetyCases/{caseId}/ncmecPortalCorrections/{correctionId}). Admin-SDK-only; both\n // segments were app-local literals until now.\n NCMEC_PORTAL_RECEIPT_ARTIFACTS: 'portalReceiptArtifacts',\n NCMEC_PORTAL_CORRECTIONS: 'ncmecPortalCorrections',\n // The single immutable completion-proof record bound to one NCMEC submission\n // (childSafetyCases/{caseId}/ncmecSubmissions/{submissionId}/ncmecCompletionProof/record).\n // A submission can never reach `completed` without this record existing — it is written\n // create-if-absent in the SAME transaction as the state transition.\n NCMEC_COMPLETION_PROOF: 'ncmecCompletionProof',\n\n // Trust & Safety — resource-command subcollections (§A3).\n SAFETY_RESOURCE_COMMAND_AUTHORIZED_REQUESTS: 'authorizedRequests',\n SAFETY_RESOURCE_COMMAND_BYPASS_REFS: 'bypassRefs',\n\n // Trust & Safety — evidence-job subcollections (§A4).\n SAFETY_EVIDENCE_JOB_ITEMS: 'safetyEvidenceJobItems',\n SAFETY_EVIDENCE_JOB_DISPOSITION: 'safetyEvidenceJobDisposition',\n\n // Trust & Safety — quarantine-saga subcollection (§A5).\n QUARANTINE_SAGA_RELATED_ASSETS: 'relatedAssets',\n\n // Trust & Safety — TAKE IT DOWN request subcollections (§A11). The restricted\n // requester-PII subcollection uses the shared `PRIVATE` constant above.\n TAKE_IT_DOWN_SUBMISSIONS: 'takeItDownSubmissions',\n TAKE_IT_DOWN_VALIDITY_DECISIONS: 'validityDecisions',\n TAKE_IT_DOWN_ACTIONS: 'takeItDownActions',\n TAKE_IT_DOWN_EVIDENCE: 'takeItDownEvidence',\n // The deletion-verification record the retention sweep keeps for each evidence object it removes\n // (…/takeItDownEvidenceDisposition/{evidenceId}). Its own subcollection, mirroring\n // `safetyEvidenceJobDisposition`, so `takeItDownActions` holds action rows only. Backend-only.\n TAKE_IT_DOWN_EVIDENCE_DISPOSITION: 'takeItDownEvidenceDisposition',\n // The RESTRICTED operator rationale row bound to one validity decision\n // (…/validityDecisions/{decisionId}/takeItDownValidityRationale/record) — the row the\n // decision's rationaleRef and the action's detailRef point at. Backend-only.\n TAKE_IT_DOWN_VALIDITY_RATIONALE: 'takeItDownValidityRationale',\n\n // Trust & Safety — NCII case subcollections (§A11).\n NCII_CASE_ALLEGATION_LINKS: 'allegationLinks',\n NCII_CASE_REQUEST_LINKS: 'requestLinks',\n NCII_CASE_REMOVAL_ACTIONS: 'removalActions',\n NCII_CASE_BLOCKED_HASHES: 'blockedHashes',\n // Append-only NCII case closure/reopen events (nciiCases/{caseId}/closureEvents/{eventId}).\n NCII_CASE_CLOSURE_EVENTS: 'closureEvents',\n\n // Trust & Safety — NCII removal-job targets (§A11).\n NCII_REMOVAL_TARGETS: 'nciiRemovalTargets',\n\n // Feedback lists under the server-only `_serverData/feedbackLists` container doc\n // (BACKEND-108): the alias map and the denylist submitFeedback consults via the Admin\n // SDK. Moved out of the top-level `feedbackAliases` / `feedbackDenylist` collections,\n // which were anonymously readable with no client reader.\n FEEDBACK_ALIASES: 'feedbackAliases',\n FEEDBACK_DENYLIST: 'feedbackDenylist',\n\n // Immutable published versions of one public document\n // (publicDocuments/{documentId}/publicDocumentVersions/{versionId}).\n PUBLIC_DOCUMENT_VERSIONS: 'publicDocumentVersions',\n} as const;\n\n/**\n * SPECIAL DOCUMENT PATHS\n * Static document IDs for singleton documents\n */\nexport const SPECIAL_DOCS = {\n ADMIN_LIST: 'adminList',\n APP_CONFIG: 'app',\n // Charter→full app-mode marker doc (_systemData/appMode) that recordAppModeFlip writes.\n APP_MODE: 'appMode',\n FUTURE_PLANS: 'futurePlans',\n NOTIFICATION_SETTINGS: 'notificationSettings',\n // Hall viewing-state doc id under userProfiles/{uid}/privateData/ (hall-viewing-experience\n // Area 2, ruled 2026-07-04). Mirrors the NOTIFICATION_SETTINGS fixed-id privateData pattern.\n HALL_LIBRARY_PREFERENCES: 'hallLibraryPreferences',\n PROFANITY_LIST: 'profanityList',\n RESERVED_USERNAMES: 'reservedUsernames',\n BLOCKED_FRANCHISE_NAMES: 'blockedFranchiseNames',\n RULES_AND_AGREEMENTS: 'rulesAndAgreements',\n // _systemData/hallMediaReaperCursor — the reapOrphanedHallMediaCopies scan cursor\n // (highest `createdAt` the reaper has positively cleared). Backend-only.\n HALL_MEDIA_REAPER_CURSOR: 'hallMediaReaperCursor',\n // _systemData/publicUsersReconcilerCursor — the reconcilePublicUsers sweep cursor (last\n // userProfiles document id positively cleared; '' = start). Backend-only.\n PUBLIC_USERS_RECONCILER_CURSOR: 'publicUsersReconcilerCursor',\n // Editable content-page singletons under _appConfig (content-pages Firestore\n // migration, DJ ruling 2026-07-06): the ONLY source for /terms, /privacy, and\n // the /take-it-down page copy — no hardcoded fallbacks anywhere.\n TERMS_PAGE: 'termsOfService',\n PRIVACY_PAGE: 'privacyPolicy',\n TAKE_IT_DOWN_PAGE_COPY: 'takeItDownPageCopy',\n // The /dmca page's current projection (_appConfig/dmcaPolicy). Each of these page ids is\n // also that document's PublicDocumentId (constants/public-documents.ts).\n DMCA_POLICY: 'dmcaPolicy',\n // Also the doc id of the pledge running-totals singleton (pledgePaymentTotals/summary).\n SUMMARY: 'summary',\n\n // Trust & Safety — singleton global SLA-monitor heartbeat (safetyMonitorHeartbeat/global).\n SAFETY_MONITOR_HEARTBEAT_GLOBAL: 'global',\n\n // Trust & Safety — _serverData (server-only) singletons (§A7, §A11). Moved out of the\n // public _appConfig bucket: their only readers are Cloud Functions (BACKEND-108).\n AGE_POLICY: 'agePolicy',\n NCII_POLICY: 'nciiPolicy',\n PRIVILEGED_REVIEWER_SECURITY: 'privilegedReviewerSecurity',\n\n // _serverData container doc for the two submitFeedback lists. It holds no fields — it\n // exists only as the parent of the feedbackAliases / feedbackDenylist subcollections,\n // which moved out of the anonymously-readable top-level collections (BACKEND-108).\n FEEDBACK_LISTS: 'feedbackLists',\n\n // Trust & Safety — fixed-id TAKE IT DOWN request subdocs (§A11).\n TAKE_IT_DOWN_REQUESTER: 'requester', // takeItDownRequests/{requestId}/privateDetails/requester\n\n // The fixed doc id of a one-per-parent singleton row: the NCMEC completion proof\n // (…/ncmecCompletionProof/record) and the TAKE IT DOWN validity rationale\n // (…/takeItDownValidityRationale/record). ONE shared value serves both — never split.\n RECORD: 'record',\n\n // The Work's single hall-entry reservation doc (…/hallSubmissionReservation/reservation).\n HALL_SUBMISSION_RESERVATION: 'reservation',\n\n // Trust & Safety — fixed-id report-spine private subdocs (§A1).\n REPORT_SNAPSHOT: 'snapshot', // contentReports/{reportId}/privateDetails/snapshot\n REPORT_NARRATIVE: 'narrative', // contentReports/{reportId}/privateDetails/narrative\n // contentReports/{reportId}/privateDetails/narrativeEscalation — the NEW narrative typed\n // when an EXISTING ordinary report is escalated into a protected case (the original\n // narrative doc already exists, so a re-create would collide).\n REPORT_NARRATIVE_ESCALATION: 'narrativeEscalation',\n} as const;\n"]}
|
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
import { type HallItemSubcollection } from './collections.js';
|
|
2
2
|
import type { FollowableTargetType } from '../schemas/social.js';
|
|
3
3
|
import type { WorkProjectType } from '../types/content.js';
|
|
4
|
+
import type { PublicDocumentId } from '../constants/public-documents.js';
|
|
5
|
+
/** The doc id of a published public-document version: `v1`, `v2`, … (whole numbers from 1). */
|
|
6
|
+
export declare const publicDocumentVersionDocId: (version: number) => string;
|
|
4
7
|
export declare const PATH_BUILDERS: {
|
|
5
8
|
readonly userProfile: (userId: string) => [string, string];
|
|
6
9
|
readonly publicUser: (uid: string) => [string, string];
|
|
@@ -107,6 +110,11 @@ export declare const PATH_BUILDERS: {
|
|
|
107
110
|
readonly termsPage: () => [string, string];
|
|
108
111
|
readonly privacyPage: () => [string, string];
|
|
109
112
|
readonly takeItDownPageCopy: () => [string, string];
|
|
113
|
+
readonly dmcaPolicy: () => [string, string];
|
|
114
|
+
readonly publicDocumentProjection: (documentId: PublicDocumentId) => [string, string];
|
|
115
|
+
readonly publicDocumentVersion: (documentId: PublicDocumentId, version: number) => [string, string, string, string];
|
|
116
|
+
readonly publicDocumentDraft: (documentId: PublicDocumentId) => [string, string];
|
|
117
|
+
readonly publicDocumentRelease: (releaseId: string) => [string, string];
|
|
110
118
|
readonly appConfig: () => [string, string];
|
|
111
119
|
readonly appModeMarker: () => [string, string];
|
|
112
120
|
readonly hallMediaReaperCursor: () => [string, string];
|