@ttt-productions/ttt-core 0.79.44 → 0.79.46
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-content.d.ts +7 -6
- package/dist/constants/business-content.d.ts.map +1 -1
- package/dist/constants/business-content.js +14 -12
- package/dist/constants/business-content.js.map +1 -1
- package/dist/constants/hall-content-routing.d.ts +32 -0
- package/dist/constants/hall-content-routing.d.ts.map +1 -0
- package/dist/constants/hall-content-routing.js +37 -0
- package/dist/constants/hall-content-routing.js.map +1 -0
- package/dist/doc-schemas/content.d.ts +4 -4
- package/dist/doc-schemas/content.d.ts.map +1 -1
- package/dist/doc-schemas/content.js +3 -6
- package/dist/doc-schemas/content.js.map +1 -1
- package/dist/doc-schemas/registry.d.ts +2 -2
- package/dist/doc-schemas/work-project.d.ts +12 -0
- package/dist/doc-schemas/work-project.d.ts.map +1 -1
- package/dist/doc-schemas/work-project.js +10 -2
- package/dist/doc-schemas/work-project.js.map +1 -1
- package/dist/media/domain-events-work.d.ts.map +1 -1
- package/dist/media/domain-events-work.js +3 -2
- package/dist/media/domain-events-work.js.map +1 -1
- package/dist/media/hall-library-target-fields.d.ts +2 -2
- package/dist/media/hall-library-target-fields.d.ts.map +1 -1
- package/dist/media/hall-library-target-fields.js +6 -5
- package/dist/media/hall-library-target-fields.js.map +1 -1
- package/dist/media/target-info.d.ts.map +1 -1
- package/dist/media/target-info.js +2 -1
- package/dist/media/target-info.js.map +1 -1
- package/dist/schemas/admin.d.ts +2 -2
- package/dist/schemas/atoms.d.ts +2 -2
- package/dist/types/work-project.d.ts +1 -1
- package/dist/types/work-project.d.ts.map +1 -1
- package/dist/types/work-project.js.map +1 -1
- package/package.json +1 -1
|
@@ -4,6 +4,18 @@ export declare const GuildmateStatusSchema: z.ZodEnum<{
|
|
|
4
4
|
departed: "departed";
|
|
5
5
|
}>;
|
|
6
6
|
export type GuildmateStatus = z.infer<typeof GuildmateStatusSchema>;
|
|
7
|
+
/**
|
|
8
|
+
* The ONE canonical standing of a Work INSIDE its Realm — whether the Work counts as part of
|
|
9
|
+
* the Realm's canon. Carried on the Work shell and its public projection, and used as a query
|
|
10
|
+
* filter by the Realm page. Distinct from `RealmFileCanonStatus` (media-assets.ts), which is the
|
|
11
|
+
* approval gate of a FILE shared into a Realm and carries two further unshared/awaiting states.
|
|
12
|
+
* Consumers derive from this instead of re-quoting the members.
|
|
13
|
+
*/
|
|
14
|
+
export declare const RealmCanonStatusSchema: z.ZodEnum<{
|
|
15
|
+
nonCanon: "nonCanon";
|
|
16
|
+
canon: "canon";
|
|
17
|
+
}>;
|
|
18
|
+
export type RealmCanonStatus = z.infer<typeof RealmCanonStatusSchema>;
|
|
7
19
|
/**
|
|
8
20
|
* The realm founding-Work stake holder — a non-person ledger entry keyed by the founding
|
|
9
21
|
* workProjectId, never a user uid. It must never reach the public collaborator roster.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"work-project.d.ts","sourceRoot":"","sources":["../../src/doc-schemas/work-project.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAOxB,eAAO,MAAM,qBAAqB;;;EAAiC,CAAC;AACpE,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAEpE;;;;GAIG;AACH,eAAO,MAAM,yBAAyB,EAAG,cAAuB,CAAC;AAEjE,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;iBAyC9B,CAAC;AACH,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAEhE,eAAO,MAAM,yBAAyB;;;;;;;;iBAKpC,CAAC;AACH,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,yBAAyB,CAAC,CAAC;AAE5E,eAAO,MAAM,wBAAwB;;;kBAGpC,CAAC;AACF,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAC;AAE1E,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBA8BhC,CAAC;AACH,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAGpE,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAgBlC,CAAC;AACH,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC;AAWxE,4EAA4E;AAC5E,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;iBAoB/B,CAAC;AACH,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAElE,mGAAmG;AACnG,eAAO,MAAM,cAAc;;;;;;;;;;;;iBAUzB,CAAC;AACH,MAAM,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC;AAGtD,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;iBAoC1B,CAAC;AACH,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC;AA0BxD,8FAA8F;AAC9F,eAAO,MAAM,qBAAqB;;;;;;;;;;iBAWhC,CAAC;AACH,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"work-project.d.ts","sourceRoot":"","sources":["../../src/doc-schemas/work-project.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAOxB,eAAO,MAAM,qBAAqB;;;EAAiC,CAAC;AACpE,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAEpE;;;;;;GAMG;AACH,eAAO,MAAM,sBAAsB;;;EAAgC,CAAC;AACpE,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC;AAEtE;;;;GAIG;AACH,eAAO,MAAM,yBAAyB,EAAG,cAAuB,CAAC;AAEjE,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;iBAyC9B,CAAC;AACH,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAEhE,eAAO,MAAM,yBAAyB;;;;;;;;iBAKpC,CAAC;AACH,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,yBAAyB,CAAC,CAAC;AAE5E,eAAO,MAAM,wBAAwB;;;kBAGpC,CAAC;AACF,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAC;AAE1E,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBA8BhC,CAAC;AACH,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAGpE,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAgBlC,CAAC;AACH,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC;AAWxE,4EAA4E;AAC5E,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;iBAoB/B,CAAC;AACH,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAElE,mGAAmG;AACnG,eAAO,MAAM,cAAc;;;;;;;;;;;;iBAUzB,CAAC;AACH,MAAM,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC;AAGtD,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;iBAoC1B,CAAC;AACH,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC;AA0BxD,8FAA8F;AAC9F,eAAO,MAAM,qBAAqB;;;;;;;;;;iBAWhC,CAAC;AACH,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC"}
|
|
@@ -13,6 +13,14 @@ import { isGuildStandingId } from '../permissions/index.js';
|
|
|
13
13
|
const guildStandingIdSchema = z.custom(isGuildStandingId);
|
|
14
14
|
const userRefSchema = z.object({ uid: z.string() });
|
|
15
15
|
export const GuildmateStatusSchema = z.enum(['active', 'departed']);
|
|
16
|
+
/**
|
|
17
|
+
* The ONE canonical standing of a Work INSIDE its Realm — whether the Work counts as part of
|
|
18
|
+
* the Realm's canon. Carried on the Work shell and its public projection, and used as a query
|
|
19
|
+
* filter by the Realm page. Distinct from `RealmFileCanonStatus` (media-assets.ts), which is the
|
|
20
|
+
* approval gate of a FILE shared into a Realm and carries two further unshared/awaiting states.
|
|
21
|
+
* Consumers derive from this instead of re-quoting the members.
|
|
22
|
+
*/
|
|
23
|
+
export const RealmCanonStatusSchema = z.enum(['canon', 'nonCanon']);
|
|
16
24
|
/**
|
|
17
25
|
* The realm founding-Work stake holder — a non-person ledger entry keyed by the founding
|
|
18
26
|
* workProjectId, never a user uid. It must never reach the public collaborator roster.
|
|
@@ -80,7 +88,7 @@ export const FullWorkProjectSchema = z.object({
|
|
|
80
88
|
guildmateUserIds: z.record(z.string(), z.boolean()).optional(),
|
|
81
89
|
invitedUserIds: z.record(z.string(), z.boolean()).optional(),
|
|
82
90
|
workRealmId: z.string(),
|
|
83
|
-
realmCanonStatus:
|
|
91
|
+
realmCanonStatus: RealmCanonStatusSchema,
|
|
84
92
|
pendingStakeShares: PendingStakeSharesSchema.optional(),
|
|
85
93
|
// Moderation "require retitle" remedy (work/realm report path). When an admin
|
|
86
94
|
// upholds a report on an abusive public title/description, they may replace the
|
|
@@ -105,7 +113,7 @@ export const PublicWorkProjectSchema = z.object({
|
|
|
105
113
|
publicWorkStatus: z.enum(['draft', 'released']),
|
|
106
114
|
publicWorkHidden: z.boolean(),
|
|
107
115
|
workRealmId: z.string(),
|
|
108
|
-
realmCanonStatus:
|
|
116
|
+
realmCanonStatus: RealmCanonStatusSchema,
|
|
109
117
|
type: z.enum(WORK_PROJECT_TYPE_KEYS),
|
|
110
118
|
hallWingType: z.enum(HALL_WING_TYPE_KEYS),
|
|
111
119
|
workingTitle: z.string(),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"work-project.js","sourceRoot":"","sources":["../../src/doc-schemas/work-project.ts"],"names":[],"mappings":"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","sourcesContent":["// WorkProject / Realm / Guild Firestore document SCHEMAS — single source of truth.\n// Covers allWorkProjects/{workProjectId}, its guildmateUsers/publicGuildmateUsers/\n// workAssets subcollections, publicWorkProjects/{workProjectId}, workRealms/{workRealmId},\n// and the guildInviteConversations invite shell. Types are inferred via z.infer so a\n// document's shape and its TypeScript type cannot drift apart.\n//\n// Terminology: the current-owner field is `workStewardUid` (locked rename from the old\n// `ownerUid`; see ttt-prod docs/design/terminology-naming-convention.md — Steward row). The original\n// creator is `foundingArtisanUid` (locked rename from the old `createdByUid`; Founding Artisan).\n\nimport { z } from 'zod';\nimport { HALL_WING_TYPE_KEYS, WORK_PROJECT_TYPE_KEYS } from '../types/content.js';\nimport { isGuildStandingId, type GuildStandingId } from '../permissions/index.js';\n\nconst guildStandingIdSchema = z.custom<GuildStandingId>(isGuildStandingId);\nconst userRefSchema = z.object({ uid: z.string() });\n\nexport const GuildmateStatusSchema = z.enum(['active', 'departed']);\nexport type GuildmateStatus = z.infer<typeof GuildmateStatusSchema>;\n\n/**\n * The realm founding-Work stake holder — a non-person ledger entry keyed by the founding\n * workProjectId, never a user uid. It must never reach the public collaborator roster.\n * Consumers branch on this rather than re-quoting the member.\n */\nexport const FOUNDING_WORK_HOLDER_TYPE = 'foundingWork' as const;\n\nexport const GuildmateUserSchema = z.object({\n uid: z.string(),\n guildStandings: z.array(guildStandingIdSchema),\n tradeProfessions: z.array(z.string()),\n stakeShareCount: z.number(),\n joinedAt: z.number(),\n status: GuildmateStatusSchema,\n /**\n * Holder kind for this stake entry. Absent/`'user'` = a real guildmate person.\n * `'foundingWork'` = the realm founding-Work holder (keyed by the founding\n * workProjectId, NOT a user uid).\n */\n holderType: z.enum(['user', FOUNDING_WORK_HOLDER_TYPE]).optional(),\n /**\n * Per-(user, workProject) monotonic INPUT-trigger version for the chat\n * channel-auth projection (chat-edge-rebuild Contract B / P3). Absent ⇒ 0.\n * Bumped atomically in the authoritative mutation on member create/reactivate,\n * departure/removal, standing change, AND trade-profession change; the\n * `workChannelsForUser` fanout keys on the POST-increment value. It NEVER\n * increments or replaces the per-pair OUTPUT `channelAuthVersion`.\n */\n guildAuthInputVersion: z.number().optional(),\n /**\n * N3 data-deletion / account-end forfeiture tombstone. Set together with\n * `status: 'departed'` when a member leaves involuntarily-of-record: their\n * stake shares STAY in the immutable 1000-split (never removed) but are\n * forfeited — the future payout engine routes a tombstone's slice to the\n * community fund and excludes it from active distribution. `departedReason`\n * distinguishes the cause; `'bannedForCause'` is reserved for the future\n * ban-forfeiture path (included now so it needs no second package publish).\n *\n * `'selfLeave'` is DIFFERENT share semantics: a PRE-PUBLISH voluntary guild\n * exit (leaveWorkProject). There the 1000-split is still fluid, so the\n * member's `stakeShareCount` is ZEROED and returned to the pool for the\n * steward to re-allocate — NOT retained as a community-fund tombstone. A\n * self-leave is impossible once `status: 'published'` (the stake-share freeze\n * blocks it), so the tombstone and the pool-return dispositions never overlap\n * in a single Work's lifecycle.\n */\n departedReason: z.enum(['voluntaryDeletion', 'bannedForCause', 'selfLeave']).optional(),\n departedAt: z.number().optional(),\n});\nexport type GuildmateUser = z.infer<typeof GuildmateUserSchema>;\n\nexport const PublicGuildmateUserSchema = z.object({\n uid: z.string(),\n tradeProfessions: z.array(z.string()),\n joinedAt: z.number(),\n status: GuildmateStatusSchema,\n});\nexport type PublicGuildmateUser = z.infer<typeof PublicGuildmateUserSchema>;\n\nexport const PendingStakeSharesSchema = z.record(\n z.string(),\n z.object({ amount: z.number(), createdAt: z.number() }),\n);\nexport type PendingStakeShares = z.infer<typeof PendingStakeSharesSchema>;\n\nexport const FullWorkProjectSchema = z.object({\n workProjectId: z.string(),\n createdOn: z.number(),\n type: z.string(),\n workingDescription: z.string(),\n workingTitle: z.string(),\n hallWingType: z.enum(HALL_WING_TYPE_KEYS),\n createdBy: userRefSchema,\n status: z.enum(['open', 'pendingVerification', 'published', 'rejected']),\n guildmateUserIds: z.record(z.string(), z.boolean()).optional(),\n invitedUserIds: z.record(z.string(), z.boolean()).optional(),\n workRealmId: z.string(),\n realmCanonStatus: z.enum(['canon', 'nonCanon']),\n pendingStakeShares: PendingStakeSharesSchema.optional(),\n // Moderation \"require retitle\" remedy (work/realm report path). When an admin\n // upholds a report on an abusive public title/description, they may replace the\n // text with a generic placeholder and set this flag; the steward is prompted to\n // re-enter compliant text the next time they open the work (unpublished = direct\n // self-edit clears it; published = via the post-launch change-request flow).\n // Distinct from the `publicWorkHidden` hide (DMCA/copyright) — this keeps the\n // work visible under the placeholder. Backend-only-writable.\n moderationRetitleRequired: z.boolean().optional(),\n moderationRetitleReason: z.string().optional(),\n // Per-field extension of the retitle remedy (uniform with the Tale/Tune/Television content family):\n // which text fields ('title', 'description', …) an admin cleared to a placeholder — \"all or any\",\n // instead of the always-both retitle — and the operator's reason surfaced on the steward's edit\n // surface. Empty/absent when nothing was cleared. Backend-only-writable.\n moderationClearedFields: z.array(z.string()).optional(),\n moderationClearedReason: z.string().optional(),\n moderatedAt: z.number().optional(),\n});\nexport type FullWorkProject = z.infer<typeof FullWorkProjectSchema>;\n\n// Top-level safe signed-in-user Work shell / search projection. Server/callable-written only.\nexport const PublicWorkProjectSchema = z.object({\n workProjectId: z.string(),\n publicWorkStatus: z.enum(['draft', 'released']),\n publicWorkHidden: z.boolean(),\n workRealmId: z.string(),\n realmCanonStatus: z.enum(['canon', 'nonCanon']),\n type: z.enum(WORK_PROJECT_TYPE_KEYS),\n hallWingType: z.enum(HALL_WING_TYPE_KEYS),\n workingTitle: z.string(),\n workingTitle_lowercase: z.string(),\n workingDescription: z.string(),\n coverAssetId: z.string().optional(),\n workStewardUid: z.string(),\n foundingArtisanUid: z.string(),\n createdOn: z.number(),\n updatedOn: z.number(),\n});\nexport type PublicWorkProject = z.infer<typeof PublicWorkProjectSchema>;\n\n// ===========================================================================\n// Work-project FILE FOLDER system (S7) — supersedes the flat workAssets model.\n// A default folder (every active guildmate views/uploads) + custom folders whose\n// audience is controlled by TRADE PROFESSIONS, while file-system ADMINISTRATION is\n// controlled by guild standings (StewardOwner / WorkProjectManager / WorkAssetAdmin).\n// See ttt-prod docs/design/work-project-file-folders.md. Realm sharing of a file is the\n// `realmFileCanonStatus` seam on the file's mediaAssets doc (media-assets.ts).\n// ===========================================================================\n\n/** `allWorkProjects/{workProjectId}/workFileFolders/{workFileFolderId}`. */\nexport const WorkFileFolderSchema = z.object({\n workFileFolderId: z.string(),\n workProjectId: z.string(),\n name: z.string(),\n // The auto-created \"All Guildmates\" folder (view/upload open to every active\n // guildmate; delete/manage needs file-admin). Exactly one per work project.\n isDefault: z.boolean(),\n // Custom-folder access — trade-profession ids (TRADE_PROFESSION_OPTIONS). Empty\n // on the default folder; file admins always see/manage every folder regardless.\n canViewTradeProfessions: z.array(z.string()),\n canUploadTradeProfessions: z.array(z.string()),\n canDeleteTradeProfessions: z.array(z.string()),\n fileCount: z.number(),\n /** Sum of this folder's files' `sizeBytes`. Maintained alongside `fileCount`\n * (increment on upload, decrement on delete); the project-wide storage usage +\n * `MAX_WORK_FILE_STORAGE_BYTES` cap are computed by summing this across folders. */\n storageBytes: z.number(),\n createdBy: userRefSchema,\n createdAt: z.number(),\n updatedAt: z.number(),\n});\nexport type WorkFileFolder = z.infer<typeof WorkFileFolderSchema>;\n\n/** `allWorkProjects/{workProjectId}/workFileFolders/{workFileFolderId}/workFiles/{workFileId}`. */\nexport const WorkFileSchema = z.object({\n workFileId: z.string(),\n workProjectId: z.string(),\n workFileFolderId: z.string(),\n name: z.string(),\n mediaAssetId: z.string(),\n contentType: z.string(),\n sizeBytes: z.number(),\n uploadedBy: userRefSchema,\n createdAt: z.number(),\n});\nexport type WorkFile = z.infer<typeof WorkFileSchema>;\n\n// Realm source of truth and Realm search/tag surface. Server/callable-written only.\nexport const WorkRealmSchema = z.object({\n workRealmId: z.string(),\n realmType: z.enum(['public', 'standalone']),\n realmStatus: z.enum(['draft', 'released']),\n realmHidden: z.boolean(),\n workingTitle: z.string(),\n workingTitle_lowercase: z.string(),\n workingDescription: z.string(),\n // Square realm cover art (the 'realm-cover' upload origin; processor-written).\n // Optional while the realm is a DRAFT; releasing the realm REQUIRES it — the\n // realm release callable enforces presence (never required at founding, so a\n // work creation is never blocked on realm art).\n realmCoverAssetId: z.string().optional(),\n workStewardUid: z.string(),\n foundingArtisanUid: z.string(),\n foundingWorkProjectId: z.string(),\n createdOn: z.number(),\n updatedOn: z.number(),\n // MONOTONIC publish lock (R1 ruling, 2026-07-12): set true by the hall publish\n // core the first time any work in this realm publishes, and never unset — even\n // if that work later unpublishes (the realm name already went public). While\n // absent/false, realm info is direct-edit; once true, realm text changes route\n // exclusively through the change-request pipeline (surface 'workRealm').\n // Backend-only-writable.\n hasEverPublishedWork: z.boolean().optional(),\n // Moderation \"require retitle\" remedy (see FullWorkProject above) — admin\n // replaces an abusive realm title/description with a placeholder + sets this so\n // the steward must re-enter compliant text. Distinct from `realmHidden` (the\n // DMCA/copyright takedown). Backend-only-writable.\n moderationRetitleRequired: z.boolean().optional(),\n moderationRetitleReason: z.string().optional(),\n // Per-field extension of the retitle remedy (see FullWorkProject) — which realm text fields an\n // admin cleared to a placeholder (\"all or any\"), plus the operator's reason. Backend-only-writable.\n moderationClearedFields: z.array(z.string()).optional(),\n moderationClearedReason: z.string().optional(),\n moderatedAt: z.number().optional(),\n});\nexport type WorkRealm = z.infer<typeof WorkRealmSchema>;\n\n// ===========================================================================\n// Realm FILE FOLDERS — the steward's organization of the realm's shared-file pool.\n// `workRealms/{workRealmId}/realmFileFolders/{realmFileFolderId}`.\n//\n// A shared file is NOT a document under the Realm: it stays a `workFile` under its owning\n// Work, and \"shared\" is the `realmFileCanonStatus` + `realmId` + `realmFileFolderId` seam on\n// the file's ONE `mediaAssets` doc (media-assets.ts). These folder docs are pure containers.\n//\n// Deliberately ABSENT, and each absence is load-bearing:\n// - no `isDefault` — there is no default realm folder. Approval IS folder assignment, so\n// every approved file is in a steward-chosen folder by construction.\n// - no access lists — Realm-level visibility is the whole access model at launch (contrast\n// the Work-side folder, whose trade-profession lists gate a private workspace). Folder\n// management becomes standing-gated when Realm standings exist; that is a capability-check\n// swap, not a field on this doc.\n// - no stored counts — file counts are derived from the gallery projection, so a count can\n// never disagree with the files actually served.\n//\n// Client reads are DENIED: `mediaAssets` is client-unreadable and the artisan/admin/hidden-\n// Realm access decision lives in ONE backend projection owner, so folders are returned\n// through that same projection rather than opened to direct client reads.\n// See ttt-prod docs/design/work-project-file-folders.md (Realm promotion).\n// ===========================================================================\n\n/** `workRealms/{workRealmId}/realmFileFolders/{realmFileFolderId}`. Callable-written only. */\nexport const RealmFileFolderSchema = z.object({\n realmFileFolderId: z.string(),\n workRealmId: z.string(),\n name: z.string(),\n /** SERVER-DERIVED normalized name, following the Realm `*_lowercase` convention\n * (`WorkRealmSchema.workingTitle_lowercase`). Backs case-insensitive uniqueness within\n * the bounded folder collection; never client-supplied. */\n name_lowercase: z.string(),\n createdBy: userRefSchema,\n createdAt: z.number(),\n updatedAt: z.number(),\n});\nexport type RealmFileFolder = z.infer<typeof RealmFileFolderSchema>;\n"]}
|
|
1
|
+
{"version":3,"file":"work-project.js","sourceRoot":"","sources":["../../src/doc-schemas/work-project.ts"],"names":[],"mappings":"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","sourcesContent":["// WorkProject / Realm / Guild Firestore document SCHEMAS — single source of truth.\n// Covers allWorkProjects/{workProjectId}, its guildmateUsers/publicGuildmateUsers/\n// workAssets subcollections, publicWorkProjects/{workProjectId}, workRealms/{workRealmId},\n// and the guildInviteConversations invite shell. Types are inferred via z.infer so a\n// document's shape and its TypeScript type cannot drift apart.\n//\n// Terminology: the current-owner field is `workStewardUid` (locked rename from the old\n// `ownerUid`; see ttt-prod docs/design/terminology-naming-convention.md — Steward row). The original\n// creator is `foundingArtisanUid` (locked rename from the old `createdByUid`; Founding Artisan).\n\nimport { z } from 'zod';\nimport { HALL_WING_TYPE_KEYS, WORK_PROJECT_TYPE_KEYS } from '../types/content.js';\nimport { isGuildStandingId, type GuildStandingId } from '../permissions/index.js';\n\nconst guildStandingIdSchema = z.custom<GuildStandingId>(isGuildStandingId);\nconst userRefSchema = z.object({ uid: z.string() });\n\nexport const GuildmateStatusSchema = z.enum(['active', 'departed']);\nexport type GuildmateStatus = z.infer<typeof GuildmateStatusSchema>;\n\n/**\n * The ONE canonical standing of a Work INSIDE its Realm — whether the Work counts as part of\n * the Realm's canon. Carried on the Work shell and its public projection, and used as a query\n * filter by the Realm page. Distinct from `RealmFileCanonStatus` (media-assets.ts), which is the\n * approval gate of a FILE shared into a Realm and carries two further unshared/awaiting states.\n * Consumers derive from this instead of re-quoting the members.\n */\nexport const RealmCanonStatusSchema = z.enum(['canon', 'nonCanon']);\nexport type RealmCanonStatus = z.infer<typeof RealmCanonStatusSchema>;\n\n/**\n * The realm founding-Work stake holder — a non-person ledger entry keyed by the founding\n * workProjectId, never a user uid. It must never reach the public collaborator roster.\n * Consumers branch on this rather than re-quoting the member.\n */\nexport const FOUNDING_WORK_HOLDER_TYPE = 'foundingWork' as const;\n\nexport const GuildmateUserSchema = z.object({\n uid: z.string(),\n guildStandings: z.array(guildStandingIdSchema),\n tradeProfessions: z.array(z.string()),\n stakeShareCount: z.number(),\n joinedAt: z.number(),\n status: GuildmateStatusSchema,\n /**\n * Holder kind for this stake entry. Absent/`'user'` = a real guildmate person.\n * `'foundingWork'` = the realm founding-Work holder (keyed by the founding\n * workProjectId, NOT a user uid).\n */\n holderType: z.enum(['user', FOUNDING_WORK_HOLDER_TYPE]).optional(),\n /**\n * Per-(user, workProject) monotonic INPUT-trigger version for the chat\n * channel-auth projection (chat-edge-rebuild Contract B / P3). Absent ⇒ 0.\n * Bumped atomically in the authoritative mutation on member create/reactivate,\n * departure/removal, standing change, AND trade-profession change; the\n * `workChannelsForUser` fanout keys on the POST-increment value. It NEVER\n * increments or replaces the per-pair OUTPUT `channelAuthVersion`.\n */\n guildAuthInputVersion: z.number().optional(),\n /**\n * N3 data-deletion / account-end forfeiture tombstone. Set together with\n * `status: 'departed'` when a member leaves involuntarily-of-record: their\n * stake shares STAY in the immutable 1000-split (never removed) but are\n * forfeited — the future payout engine routes a tombstone's slice to the\n * community fund and excludes it from active distribution. `departedReason`\n * distinguishes the cause; `'bannedForCause'` is reserved for the future\n * ban-forfeiture path (included now so it needs no second package publish).\n *\n * `'selfLeave'` is DIFFERENT share semantics: a PRE-PUBLISH voluntary guild\n * exit (leaveWorkProject). There the 1000-split is still fluid, so the\n * member's `stakeShareCount` is ZEROED and returned to the pool for the\n * steward to re-allocate — NOT retained as a community-fund tombstone. A\n * self-leave is impossible once `status: 'published'` (the stake-share freeze\n * blocks it), so the tombstone and the pool-return dispositions never overlap\n * in a single Work's lifecycle.\n */\n departedReason: z.enum(['voluntaryDeletion', 'bannedForCause', 'selfLeave']).optional(),\n departedAt: z.number().optional(),\n});\nexport type GuildmateUser = z.infer<typeof GuildmateUserSchema>;\n\nexport const PublicGuildmateUserSchema = z.object({\n uid: z.string(),\n tradeProfessions: z.array(z.string()),\n joinedAt: z.number(),\n status: GuildmateStatusSchema,\n});\nexport type PublicGuildmateUser = z.infer<typeof PublicGuildmateUserSchema>;\n\nexport const PendingStakeSharesSchema = z.record(\n z.string(),\n z.object({ amount: z.number(), createdAt: z.number() }),\n);\nexport type PendingStakeShares = z.infer<typeof PendingStakeSharesSchema>;\n\nexport const FullWorkProjectSchema = z.object({\n workProjectId: z.string(),\n createdOn: z.number(),\n type: z.string(),\n workingDescription: z.string(),\n workingTitle: z.string(),\n hallWingType: z.enum(HALL_WING_TYPE_KEYS),\n createdBy: userRefSchema,\n status: z.enum(['open', 'pendingVerification', 'published', 'rejected']),\n guildmateUserIds: z.record(z.string(), z.boolean()).optional(),\n invitedUserIds: z.record(z.string(), z.boolean()).optional(),\n workRealmId: z.string(),\n realmCanonStatus: RealmCanonStatusSchema,\n pendingStakeShares: PendingStakeSharesSchema.optional(),\n // Moderation \"require retitle\" remedy (work/realm report path). When an admin\n // upholds a report on an abusive public title/description, they may replace the\n // text with a generic placeholder and set this flag; the steward is prompted to\n // re-enter compliant text the next time they open the work (unpublished = direct\n // self-edit clears it; published = via the post-launch change-request flow).\n // Distinct from the `publicWorkHidden` hide (DMCA/copyright) — this keeps the\n // work visible under the placeholder. Backend-only-writable.\n moderationRetitleRequired: z.boolean().optional(),\n moderationRetitleReason: z.string().optional(),\n // Per-field extension of the retitle remedy (uniform with the Tale/Tune/Television content family):\n // which text fields ('title', 'description', …) an admin cleared to a placeholder — \"all or any\",\n // instead of the always-both retitle — and the operator's reason surfaced on the steward's edit\n // surface. Empty/absent when nothing was cleared. Backend-only-writable.\n moderationClearedFields: z.array(z.string()).optional(),\n moderationClearedReason: z.string().optional(),\n moderatedAt: z.number().optional(),\n});\nexport type FullWorkProject = z.infer<typeof FullWorkProjectSchema>;\n\n// Top-level safe signed-in-user Work shell / search projection. Server/callable-written only.\nexport const PublicWorkProjectSchema = z.object({\n workProjectId: z.string(),\n publicWorkStatus: z.enum(['draft', 'released']),\n publicWorkHidden: z.boolean(),\n workRealmId: z.string(),\n realmCanonStatus: RealmCanonStatusSchema,\n type: z.enum(WORK_PROJECT_TYPE_KEYS),\n hallWingType: z.enum(HALL_WING_TYPE_KEYS),\n workingTitle: z.string(),\n workingTitle_lowercase: z.string(),\n workingDescription: z.string(),\n coverAssetId: z.string().optional(),\n workStewardUid: z.string(),\n foundingArtisanUid: z.string(),\n createdOn: z.number(),\n updatedOn: z.number(),\n});\nexport type PublicWorkProject = z.infer<typeof PublicWorkProjectSchema>;\n\n// ===========================================================================\n// Work-project FILE FOLDER system (S7) — supersedes the flat workAssets model.\n// A default folder (every active guildmate views/uploads) + custom folders whose\n// audience is controlled by TRADE PROFESSIONS, while file-system ADMINISTRATION is\n// controlled by guild standings (StewardOwner / WorkProjectManager / WorkAssetAdmin).\n// See ttt-prod docs/design/work-project-file-folders.md. Realm sharing of a file is the\n// `realmFileCanonStatus` seam on the file's mediaAssets doc (media-assets.ts).\n// ===========================================================================\n\n/** `allWorkProjects/{workProjectId}/workFileFolders/{workFileFolderId}`. */\nexport const WorkFileFolderSchema = z.object({\n workFileFolderId: z.string(),\n workProjectId: z.string(),\n name: z.string(),\n // The auto-created \"All Guildmates\" folder (view/upload open to every active\n // guildmate; delete/manage needs file-admin). Exactly one per work project.\n isDefault: z.boolean(),\n // Custom-folder access — trade-profession ids (TRADE_PROFESSION_OPTIONS). Empty\n // on the default folder; file admins always see/manage every folder regardless.\n canViewTradeProfessions: z.array(z.string()),\n canUploadTradeProfessions: z.array(z.string()),\n canDeleteTradeProfessions: z.array(z.string()),\n fileCount: z.number(),\n /** Sum of this folder's files' `sizeBytes`. Maintained alongside `fileCount`\n * (increment on upload, decrement on delete); the project-wide storage usage +\n * `MAX_WORK_FILE_STORAGE_BYTES` cap are computed by summing this across folders. */\n storageBytes: z.number(),\n createdBy: userRefSchema,\n createdAt: z.number(),\n updatedAt: z.number(),\n});\nexport type WorkFileFolder = z.infer<typeof WorkFileFolderSchema>;\n\n/** `allWorkProjects/{workProjectId}/workFileFolders/{workFileFolderId}/workFiles/{workFileId}`. */\nexport const WorkFileSchema = z.object({\n workFileId: z.string(),\n workProjectId: z.string(),\n workFileFolderId: z.string(),\n name: z.string(),\n mediaAssetId: z.string(),\n contentType: z.string(),\n sizeBytes: z.number(),\n uploadedBy: userRefSchema,\n createdAt: z.number(),\n});\nexport type WorkFile = z.infer<typeof WorkFileSchema>;\n\n// Realm source of truth and Realm search/tag surface. Server/callable-written only.\nexport const WorkRealmSchema = z.object({\n workRealmId: z.string(),\n realmType: z.enum(['public', 'standalone']),\n realmStatus: z.enum(['draft', 'released']),\n realmHidden: z.boolean(),\n workingTitle: z.string(),\n workingTitle_lowercase: z.string(),\n workingDescription: z.string(),\n // Square realm cover art (the 'realm-cover' upload origin; processor-written).\n // Optional while the realm is a DRAFT; releasing the realm REQUIRES it — the\n // realm release callable enforces presence (never required at founding, so a\n // work creation is never blocked on realm art).\n realmCoverAssetId: z.string().optional(),\n workStewardUid: z.string(),\n foundingArtisanUid: z.string(),\n foundingWorkProjectId: z.string(),\n createdOn: z.number(),\n updatedOn: z.number(),\n // MONOTONIC publish lock (R1 ruling, 2026-07-12): set true by the hall publish\n // core the first time any work in this realm publishes, and never unset — even\n // if that work later unpublishes (the realm name already went public). While\n // absent/false, realm info is direct-edit; once true, realm text changes route\n // exclusively through the change-request pipeline (surface 'workRealm').\n // Backend-only-writable.\n hasEverPublishedWork: z.boolean().optional(),\n // Moderation \"require retitle\" remedy (see FullWorkProject above) — admin\n // replaces an abusive realm title/description with a placeholder + sets this so\n // the steward must re-enter compliant text. Distinct from `realmHidden` (the\n // DMCA/copyright takedown). Backend-only-writable.\n moderationRetitleRequired: z.boolean().optional(),\n moderationRetitleReason: z.string().optional(),\n // Per-field extension of the retitle remedy (see FullWorkProject) — which realm text fields an\n // admin cleared to a placeholder (\"all or any\"), plus the operator's reason. Backend-only-writable.\n moderationClearedFields: z.array(z.string()).optional(),\n moderationClearedReason: z.string().optional(),\n moderatedAt: z.number().optional(),\n});\nexport type WorkRealm = z.infer<typeof WorkRealmSchema>;\n\n// ===========================================================================\n// Realm FILE FOLDERS — the steward's organization of the realm's shared-file pool.\n// `workRealms/{workRealmId}/realmFileFolders/{realmFileFolderId}`.\n//\n// A shared file is NOT a document under the Realm: it stays a `workFile` under its owning\n// Work, and \"shared\" is the `realmFileCanonStatus` + `realmId` + `realmFileFolderId` seam on\n// the file's ONE `mediaAssets` doc (media-assets.ts). These folder docs are pure containers.\n//\n// Deliberately ABSENT, and each absence is load-bearing:\n// - no `isDefault` — there is no default realm folder. Approval IS folder assignment, so\n// every approved file is in a steward-chosen folder by construction.\n// - no access lists — Realm-level visibility is the whole access model at launch (contrast\n// the Work-side folder, whose trade-profession lists gate a private workspace). Folder\n// management becomes standing-gated when Realm standings exist; that is a capability-check\n// swap, not a field on this doc.\n// - no stored counts — file counts are derived from the gallery projection, so a count can\n// never disagree with the files actually served.\n//\n// Client reads are DENIED: `mediaAssets` is client-unreadable and the artisan/admin/hidden-\n// Realm access decision lives in ONE backend projection owner, so folders are returned\n// through that same projection rather than opened to direct client reads.\n// See ttt-prod docs/design/work-project-file-folders.md (Realm promotion).\n// ===========================================================================\n\n/** `workRealms/{workRealmId}/realmFileFolders/{realmFileFolderId}`. Callable-written only. */\nexport const RealmFileFolderSchema = z.object({\n realmFileFolderId: z.string(),\n workRealmId: z.string(),\n name: z.string(),\n /** SERVER-DERIVED normalized name, following the Realm `*_lowercase` convention\n * (`WorkRealmSchema.workingTitle_lowercase`). Backs case-insensitive uniqueness within\n * the bounded folder collection; never client-supplied. */\n name_lowercase: z.string(),\n createdBy: userRefSchema,\n createdAt: z.number(),\n updatedAt: z.number(),\n});\nexport type RealmFileFolder = z.infer<typeof RealmFileFolderSchema>;\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"domain-events-work.d.ts","sourceRoot":"","sources":["../../src/media/domain-events-work.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"domain-events-work.d.ts","sourceRoot":"","sources":["../../src/media/domain-events-work.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAUxB,eAAO,MAAM,6BAA6B;;;;;;kBAU/B,CAAC;AAEZ,eAAO,MAAM,6BAA6B;;;;;kBAK/B,CAAC;AAEZ,eAAO,MAAM,+BAA+B;;;;;;;kBAWjC,CAAC;AAEZ,eAAO,MAAM,wCAAwC;;;;;kBAS1C,CAAC;AAEZ,eAAO,MAAM,0BAA0B;;;;;;;;kBAY5B,CAAC;AAEZ,eAAO,MAAM,8BAA8B;;;;;;;kBAWhC,CAAC;AAEZ,eAAO,MAAM,8BAA8B;;;;;;;kBAWhC,CAAC;AAEZ,eAAO,MAAM,+BAA+B;;;;;;kBAUjC,CAAC;AAEZ,eAAO,MAAM,gCAAgC;;;;;;;kBAWlC,CAAC;AAEZ,eAAO,MAAM,iCAAiC;;;;;;;;kBAYnC,CAAC;AAEZ,eAAO,MAAM,oCAAoC;;;;;;;;kBAYtC,CAAC;AAEZ,eAAO,MAAM,yBAAyB;;;;;;kBAU3B,CAAC;AAEZ,eAAO,MAAM,4BAA4B;;;;;;;kBAW9B,CAAC;AAEZ,eAAO,MAAM,sCAAsC;;;;;;;;kBAYxC,CAAC;AAKZ,eAAO,MAAM,2BAA2B;;;;;;kBAU7B,CAAC;AAEZ,eAAO,MAAM,kCAAkC;;;;;;;kBAWpC,CAAC;AAEZ,eAAO,MAAM,oCAAoC;;;;;;;kBAWtC,CAAC;AAEZ,eAAO,MAAM,kCAAkC;;;;;;;;;;;kBAWpC,CAAC;AAIZ,eAAO,MAAM,gCAAgC;;;;;kBASlC,CAAC;AAIZ,eAAO,MAAM,kCAAkC;;;;;kBASpC,CAAC;AAEZ,eAAO,MAAM,oCAAoC;;;;;;;;;;;;kBAYtC,CAAC;AAEZ,eAAO,MAAM,oCAAoC;;;;;kBAStC,CAAC"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
|
+
import { HALL_CONTENT_DETAIL_SURFACES, HALL_CONTENT_SUB_ITEM_SURFACES, } from '../constants/hall-content-routing.js';
|
|
2
3
|
// DomainEvent schemas for the work-project domain — work projects, guild
|
|
3
4
|
// invites, auditions, commissions, hall library, and threshold-library
|
|
4
5
|
// submission. Assembled into the discriminated union in ./domain-events.ts.
|
|
@@ -207,7 +208,7 @@ export const HallLibraryCoverUpdatedEventSchema = z
|
|
|
207
208
|
ids: z
|
|
208
209
|
.object({
|
|
209
210
|
workProjectId: z.string().min(1),
|
|
210
|
-
itemType: z.enum(
|
|
211
|
+
itemType: z.enum(HALL_CONTENT_DETAIL_SURFACES),
|
|
211
212
|
itemId: z.string().min(1),
|
|
212
213
|
})
|
|
213
214
|
.strict(),
|
|
@@ -243,7 +244,7 @@ export const HallLibrarySubItemUpdatedEventSchema = z
|
|
|
243
244
|
ids: z
|
|
244
245
|
.object({
|
|
245
246
|
workProjectId: z.string().min(1),
|
|
246
|
-
itemType: z.enum(
|
|
247
|
+
itemType: z.enum(HALL_CONTENT_SUB_ITEM_SURFACES),
|
|
247
248
|
parentId: z.string().min(1),
|
|
248
249
|
itemId: z.string().min(1),
|
|
249
250
|
})
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"domain-events-work.js","sourceRoot":"","sources":["../../src/media/domain-events-work.ts"],"names":[],"mappings":"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","sourcesContent":["import { z } from \"zod\";\n\n// DomainEvent schemas for the work-project domain — work projects, guild\n// invites, auditions, commissions, hall library, and threshold-library\n// submission. Assembled into the discriminated union in ./domain-events.ts.\n\nexport const WorkProjectCreatedEventSchema = z\n .object({\n type: z.literal('workProject.created'),\n ids: z\n .object({\n userId: z.string().min(1),\n workProjectId: z.string().min(1),\n })\n .strict(),\n })\n .strict();\n\nexport const WorkProjectUpdatedEventSchema = z\n .object({\n type: z.literal('workProject.updated'),\n ids: z.object({ workProjectId: z.string().min(1) }).strict(),\n })\n .strict();\n\nexport const WorkProjectPublishedEventSchema = z\n .object({\n type: z.literal('workProject.published'),\n ids: z\n .object({\n workProjectId: z.string().min(1),\n userId: z.string().min(1),\n workRealmId: z.string().min(1).optional(),\n })\n .strict(),\n })\n .strict();\n\nexport const WorkProjectStakeSharesUpdatedEventSchema = z\n .object({\n type: z.literal('workProject.stakeSharesUpdated'),\n ids: z\n .object({\n workProjectId: z.string().min(1),\n })\n .strict(),\n })\n .strict();\n\nexport const GuildInviteSentEventSchema = z\n .object({\n type: z.literal('workProject.guildInviteSent'),\n ids: z\n .object({\n workProjectId: z.string().min(1),\n guildInviteId: z.string().min(1),\n inviterId: z.string().min(1),\n inviteeId: z.string().min(1),\n })\n .strict(),\n })\n .strict();\n\nexport const GuildInviteAcceptedEventSchema = z\n .object({\n type: z.literal('workProject.guildInviteAccepted'),\n ids: z\n .object({\n workProjectId: z.string().min(1),\n guildInviteId: z.string().min(1),\n userId: z.string().min(1),\n })\n .strict(),\n })\n .strict();\n\nexport const GuildInviteDeclinedEventSchema = z\n .object({\n type: z.literal('workProject.guildInviteDeclined'),\n ids: z\n .object({\n workProjectId: z.string().min(1),\n guildInviteId: z.string().min(1),\n userId: z.string().min(1),\n })\n .strict(),\n })\n .strict();\n\nexport const GuildInviteCancelledEventSchema = z\n .object({\n type: z.literal('workProject.guildInviteCancelled'),\n ids: z\n .object({\n workProjectId: z.string().min(1),\n guildInviteId: z.string().min(1),\n })\n .strict(),\n })\n .strict();\n\nexport const AuditionPromptCreatedEventSchema = z\n .object({\n type: z.literal('audition.promptCreated'),\n ids: z\n .object({\n userId: z.string().min(1),\n auditionId: z.string().min(1),\n workProjectId: z.string().min(1).optional(),\n })\n .strict(),\n })\n .strict();\n\nexport const AuditionEntrySubmittedEventSchema = z\n .object({\n type: z.literal('audition.entryCreated'),\n ids: z\n .object({\n userId: z.string().min(1),\n auditionId: z.string().min(1),\n auditionEntryId: z.string().min(1),\n workProjectId: z.string().min(1).optional(),\n })\n .strict(),\n })\n .strict();\n\nexport const AuditionEntryVoteRecordedEventSchema = z\n .object({\n type: z.literal('audition.entryVoted'),\n ids: z\n .object({\n userId: z.string().min(1),\n auditionId: z.string().min(1),\n auditionEntryId: z.string().min(1),\n workProjectId: z.string().min(1),\n })\n .strict(),\n })\n .strict();\n\nexport const AuditionClosedEventSchema = z\n .object({\n type: z.literal('audition.closed'),\n ids: z\n .object({\n auditionId: z.string().min(1),\n workProjectId: z.string().min(1).optional(),\n })\n .strict(),\n })\n .strict();\n\nexport const CommissionCreatedEventSchema = z\n .object({\n type: z.literal('commission.created'),\n ids: z\n .object({\n userId: z.string().min(1),\n commissionListingId: z.string().min(1),\n workProjectId: z.string().min(1),\n })\n .strict(),\n })\n .strict();\n\nexport const CommissionProposalSubmittedEventSchema = z\n .object({\n type: z.literal('commission.commissionProposalSubmitted'),\n ids: z\n .object({\n userId: z.string().min(1),\n commissionListingId: z.string().min(1),\n workProjectId: z.string().min(1),\n commissionProposalId: z.string().min(1),\n })\n .strict(),\n })\n .strict();\n\n// Commission closed — the closeCommission callable's terminal transition. A\n// commission listing is never deleted; closing is the only way it leaves the\n// board, so the event name says closed.\nexport const CommissionClosedEventSchema = z\n .object({\n type: z.literal('commission.closed'),\n ids: z\n .object({\n commissionListingId: z.string().min(1),\n workProjectId: z.string().min(1),\n })\n .strict(),\n })\n .strict();\n\nexport const CommissionProposalSavedEventSchema = z\n .object({\n type: z.literal('commission.commissionProposalSaved'),\n ids: z\n .object({\n commissionListingId: z.string().min(1),\n commissionProposalId: z.string().min(1),\n userId: z.string().min(1),\n })\n .strict(),\n })\n .strict();\n\nexport const CommissionProposalRemovedEventSchema = z\n .object({\n type: z.literal('commission.commissionProposalRemoved'),\n ids: z\n .object({\n commissionListingId: z.string().min(1),\n commissionProposalId: z.string().min(1),\n userId: z.string().min(1),\n })\n .strict(),\n })\n .strict();\n\nexport const HallLibraryCoverUpdatedEventSchema = z\n .object({\n type: z.literal('hallLibrary.coverUpdated'),\n ids: z\n .object({\n workProjectId: z.string().min(1),\n itemType: z.enum(['tale', 'tune', 'television']),\n itemId: z.string().min(1),\n })\n .strict(),\n })\n .strict();\n\n// Realm cover published — the 'realm-cover' upload origin's publication adapter\n// wrote `realmCoverAssetId` onto workRealms/{workRealmId}.\nexport const WorkRealmCoverUpdatedEventSchema = z\n .object({\n type: z.literal('workRealm.coverUpdated'),\n ids: z\n .object({\n workRealmId: z.string().min(1),\n })\n .strict(),\n })\n .strict();\n\n// Realm details edited — the realm doc's own text/detail fields, as opposed to\n// workRealm.coverUpdated's `realmCoverAssetId`.\nexport const WorkRealmDetailsUpdatedEventSchema = z\n .object({\n type: z.literal('workRealm.detailsUpdated'),\n ids: z\n .object({\n workRealmId: z.string().min(1),\n })\n .strict(),\n })\n .strict();\n\nexport const HallLibrarySubItemUpdatedEventSchema = z\n .object({\n type: z.literal('hallLibrary.subItemUpdated'),\n ids: z\n .object({\n workProjectId: z.string().min(1),\n itemType: z.enum(['chapter', 'tuneTrack', 'televisionEpisode']),\n parentId: z.string().min(1),\n itemId: z.string().min(1),\n })\n .strict(),\n })\n .strict();\n\nexport const ThresholdLibrarySubmittedEventSchema = z\n .object({\n type: z.literal('thresholdLibrary.submitted'),\n ids: z\n .object({\n workProjectId: z.string().min(1),\n })\n .strict(),\n })\n .strict();\n"]}
|
|
1
|
+
{"version":3,"file":"domain-events-work.js","sourceRoot":"","sources":["../../src/media/domain-events-work.ts"],"names":[],"mappings":"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","sourcesContent":["import { z } from \"zod\";\nimport {\n HALL_CONTENT_DETAIL_SURFACES,\n HALL_CONTENT_SUB_ITEM_SURFACES,\n} from '../constants/hall-content-routing.js';\n\n// DomainEvent schemas for the work-project domain — work projects, guild\n// invites, auditions, commissions, hall library, and threshold-library\n// submission. Assembled into the discriminated union in ./domain-events.ts.\n\nexport const WorkProjectCreatedEventSchema = z\n .object({\n type: z.literal('workProject.created'),\n ids: z\n .object({\n userId: z.string().min(1),\n workProjectId: z.string().min(1),\n })\n .strict(),\n })\n .strict();\n\nexport const WorkProjectUpdatedEventSchema = z\n .object({\n type: z.literal('workProject.updated'),\n ids: z.object({ workProjectId: z.string().min(1) }).strict(),\n })\n .strict();\n\nexport const WorkProjectPublishedEventSchema = z\n .object({\n type: z.literal('workProject.published'),\n ids: z\n .object({\n workProjectId: z.string().min(1),\n userId: z.string().min(1),\n workRealmId: z.string().min(1).optional(),\n })\n .strict(),\n })\n .strict();\n\nexport const WorkProjectStakeSharesUpdatedEventSchema = z\n .object({\n type: z.literal('workProject.stakeSharesUpdated'),\n ids: z\n .object({\n workProjectId: z.string().min(1),\n })\n .strict(),\n })\n .strict();\n\nexport const GuildInviteSentEventSchema = z\n .object({\n type: z.literal('workProject.guildInviteSent'),\n ids: z\n .object({\n workProjectId: z.string().min(1),\n guildInviteId: z.string().min(1),\n inviterId: z.string().min(1),\n inviteeId: z.string().min(1),\n })\n .strict(),\n })\n .strict();\n\nexport const GuildInviteAcceptedEventSchema = z\n .object({\n type: z.literal('workProject.guildInviteAccepted'),\n ids: z\n .object({\n workProjectId: z.string().min(1),\n guildInviteId: z.string().min(1),\n userId: z.string().min(1),\n })\n .strict(),\n })\n .strict();\n\nexport const GuildInviteDeclinedEventSchema = z\n .object({\n type: z.literal('workProject.guildInviteDeclined'),\n ids: z\n .object({\n workProjectId: z.string().min(1),\n guildInviteId: z.string().min(1),\n userId: z.string().min(1),\n })\n .strict(),\n })\n .strict();\n\nexport const GuildInviteCancelledEventSchema = z\n .object({\n type: z.literal('workProject.guildInviteCancelled'),\n ids: z\n .object({\n workProjectId: z.string().min(1),\n guildInviteId: z.string().min(1),\n })\n .strict(),\n })\n .strict();\n\nexport const AuditionPromptCreatedEventSchema = z\n .object({\n type: z.literal('audition.promptCreated'),\n ids: z\n .object({\n userId: z.string().min(1),\n auditionId: z.string().min(1),\n workProjectId: z.string().min(1).optional(),\n })\n .strict(),\n })\n .strict();\n\nexport const AuditionEntrySubmittedEventSchema = z\n .object({\n type: z.literal('audition.entryCreated'),\n ids: z\n .object({\n userId: z.string().min(1),\n auditionId: z.string().min(1),\n auditionEntryId: z.string().min(1),\n workProjectId: z.string().min(1).optional(),\n })\n .strict(),\n })\n .strict();\n\nexport const AuditionEntryVoteRecordedEventSchema = z\n .object({\n type: z.literal('audition.entryVoted'),\n ids: z\n .object({\n userId: z.string().min(1),\n auditionId: z.string().min(1),\n auditionEntryId: z.string().min(1),\n workProjectId: z.string().min(1),\n })\n .strict(),\n })\n .strict();\n\nexport const AuditionClosedEventSchema = z\n .object({\n type: z.literal('audition.closed'),\n ids: z\n .object({\n auditionId: z.string().min(1),\n workProjectId: z.string().min(1).optional(),\n })\n .strict(),\n })\n .strict();\n\nexport const CommissionCreatedEventSchema = z\n .object({\n type: z.literal('commission.created'),\n ids: z\n .object({\n userId: z.string().min(1),\n commissionListingId: z.string().min(1),\n workProjectId: z.string().min(1),\n })\n .strict(),\n })\n .strict();\n\nexport const CommissionProposalSubmittedEventSchema = z\n .object({\n type: z.literal('commission.commissionProposalSubmitted'),\n ids: z\n .object({\n userId: z.string().min(1),\n commissionListingId: z.string().min(1),\n workProjectId: z.string().min(1),\n commissionProposalId: z.string().min(1),\n })\n .strict(),\n })\n .strict();\n\n// Commission closed — the closeCommission callable's terminal transition. A\n// commission listing is never deleted; closing is the only way it leaves the\n// board, so the event name says closed.\nexport const CommissionClosedEventSchema = z\n .object({\n type: z.literal('commission.closed'),\n ids: z\n .object({\n commissionListingId: z.string().min(1),\n workProjectId: z.string().min(1),\n })\n .strict(),\n })\n .strict();\n\nexport const CommissionProposalSavedEventSchema = z\n .object({\n type: z.literal('commission.commissionProposalSaved'),\n ids: z\n .object({\n commissionListingId: z.string().min(1),\n commissionProposalId: z.string().min(1),\n userId: z.string().min(1),\n })\n .strict(),\n })\n .strict();\n\nexport const CommissionProposalRemovedEventSchema = z\n .object({\n type: z.literal('commission.commissionProposalRemoved'),\n ids: z\n .object({\n commissionListingId: z.string().min(1),\n commissionProposalId: z.string().min(1),\n userId: z.string().min(1),\n })\n .strict(),\n })\n .strict();\n\nexport const HallLibraryCoverUpdatedEventSchema = z\n .object({\n type: z.literal('hallLibrary.coverUpdated'),\n ids: z\n .object({\n workProjectId: z.string().min(1),\n itemType: z.enum(HALL_CONTENT_DETAIL_SURFACES),\n itemId: z.string().min(1),\n })\n .strict(),\n })\n .strict();\n\n// Realm cover published — the 'realm-cover' upload origin's publication adapter\n// wrote `realmCoverAssetId` onto workRealms/{workRealmId}.\nexport const WorkRealmCoverUpdatedEventSchema = z\n .object({\n type: z.literal('workRealm.coverUpdated'),\n ids: z\n .object({\n workRealmId: z.string().min(1),\n })\n .strict(),\n })\n .strict();\n\n// Realm details edited — the realm doc's own text/detail fields, as opposed to\n// workRealm.coverUpdated's `realmCoverAssetId`.\nexport const WorkRealmDetailsUpdatedEventSchema = z\n .object({\n type: z.literal('workRealm.detailsUpdated'),\n ids: z\n .object({\n workRealmId: z.string().min(1),\n })\n .strict(),\n })\n .strict();\n\nexport const HallLibrarySubItemUpdatedEventSchema = z\n .object({\n type: z.literal('hallLibrary.subItemUpdated'),\n ids: z\n .object({\n workProjectId: z.string().min(1),\n itemType: z.enum(HALL_CONTENT_SUB_ITEM_SURFACES),\n parentId: z.string().min(1),\n itemId: z.string().min(1),\n })\n .strict(),\n })\n .strict();\n\nexport const ThresholdLibrarySubmittedEventSchema = z\n .object({\n type: z.literal('thresholdLibrary.submitted'),\n ids: z\n .object({\n workProjectId: z.string().min(1),\n })\n .strict(),\n })\n .strict();\n"]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type
|
|
1
|
+
import { type HallContentSubItemSurface } from '../constants/hall-content-routing.js';
|
|
2
2
|
export declare const HALL_LIBRARY_TARGET_FIELDS: {
|
|
3
3
|
readonly 'hallLibrary-cover-square': "coverSquareAssetId";
|
|
4
4
|
readonly 'hallLibrary-cover-poster': "coverPosterAssetId";
|
|
@@ -28,7 +28,7 @@ export declare const HALL_LIBRARY_SUB_ITEM_TARGET_FIELDS: {
|
|
|
28
28
|
export type HallLibraryCoverTargetField = typeof HALL_LIBRARY_COVER_TARGET_FIELDS[HallLibraryCoverFileOrigin];
|
|
29
29
|
export type HallLibrarySubItemTargetField = typeof HALL_LIBRARY_SUB_ITEM_TARGET_FIELDS[HallLibrarySubItemFileOrigin];
|
|
30
30
|
/** The working sub-item surface addressed by a Hall-library sub-item upload. */
|
|
31
|
-
export type HallLibrarySubItemSurface =
|
|
31
|
+
export type HallLibrarySubItemSurface = HallContentSubItemSurface;
|
|
32
32
|
/**
|
|
33
33
|
* Canonical upload-origin → working-sub-item routing. The processor uses this to derive
|
|
34
34
|
* publicationArgs, and the publication adapter uses the same declaration to reject a
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hall-library-target-fields.d.ts","sourceRoot":"","sources":["../../src/media/hall-library-target-fields.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"hall-library-target-fields.d.ts","sourceRoot":"","sources":["../../src/media/hall-library-target-fields.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,KAAK,yBAAyB,EAC/B,MAAM,sCAAsC,CAAC;AAa9C,eAAO,MAAM,0BAA0B;;;;;;;;;CASiB,CAAC;AAEzD,MAAM,MAAM,qBAAqB,GAAG,MAAM,OAAO,0BAA0B,CAAC;AAC5E,MAAM,MAAM,sBAAsB,GAAG,OAAO,0BAA0B,CAAC,qBAAqB,CAAC,CAAC;AAU9F,MAAM,MAAM,0BAA0B,GACpC,OAAO,CAAC,qBAAqB,EAAE,qBAAqB,MAAM,EAAE,CAAC,CAAC;AAChE,MAAM,MAAM,4BAA4B,GACtC,OAAO,CAAC,qBAAqB,EAAE,0BAA0B,CAAC,CAAC;AAE7D,eAAO,MAAM,gCAAgC;;;;CAI2C,CAAC;AAEzF,eAAO,MAAM,mCAAmC;;;;;;CAM0C,CAAC;AAE3F,MAAM,MAAM,2BAA2B,GACrC,OAAO,gCAAgC,CAAC,0BAA0B,CAAC,CAAC;AACtE,MAAM,MAAM,6BAA6B,GACvC,OAAO,mCAAmC,CAAC,4BAA4B,CAAC,CAAC;AAE3E,gFAAgF;AAChF,MAAM,MAAM,yBAAyB,GAAG,yBAAyB,CAAC;AAElE;;;;GAIG;AACH,eAAO,MAAM,uCAAuC;;;;;;CAMgC,CAAC;AAErF,iFAAiF;AACjF,wBAAgB,oCAAoC,CAClD,MAAM,EAAE,4BAA4B,EACpC,OAAO,EAAE,yBAAyB,GACjC,OAAO,CAET;AAED,uFAAuF;AACvF,wBAAgB,4BAA4B,CAC1C,MAAM,EAAE,MAAM,GACb,MAAM,IAAI,0BAA0B,CAEtC;AAED,oFAAoF;AACpF,wBAAgB,8BAA8B,CAC5C,MAAM,EAAE,MAAM,GACb,MAAM,IAAI,4BAA4B,CAExC"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { HALL_CONTENT_SURFACE_NAMES_BY_WORK_TYPE, } from '../constants/hall-content-routing.js';
|
|
1
2
|
// Server-side mapping from hallLibrary/sub-item fileOrigin to the doc field
|
|
2
3
|
// that receives the processed media-asset reference (never a URL — see
|
|
3
4
|
// ttt-prod docs/design/media-assets-and-protected-serving.md).
|
|
@@ -37,11 +38,11 @@ export const HALL_LIBRARY_SUB_ITEM_TARGET_FIELDS = {
|
|
|
37
38
|
* malformed persisted job before it can attach a media field to the wrong document shape.
|
|
38
39
|
*/
|
|
39
40
|
export const HALL_LIBRARY_SUB_ITEM_SURFACE_BY_ORIGIN = {
|
|
40
|
-
'chapter-photo':
|
|
41
|
-
'tune-track-photo':
|
|
42
|
-
'tune-track-audio':
|
|
43
|
-
'television-episode-photo':
|
|
44
|
-
'television-episode-video':
|
|
41
|
+
'chapter-photo': HALL_CONTENT_SURFACE_NAMES_BY_WORK_TYPE.Tales.subItemSurface,
|
|
42
|
+
'tune-track-photo': HALL_CONTENT_SURFACE_NAMES_BY_WORK_TYPE.Tunes.subItemSurface,
|
|
43
|
+
'tune-track-audio': HALL_CONTENT_SURFACE_NAMES_BY_WORK_TYPE.Tunes.subItemSurface,
|
|
44
|
+
'television-episode-photo': HALL_CONTENT_SURFACE_NAMES_BY_WORK_TYPE.Television.subItemSurface,
|
|
45
|
+
'television-episode-video': HALL_CONTENT_SURFACE_NAMES_BY_WORK_TYPE.Television.subItemSurface,
|
|
45
46
|
};
|
|
46
47
|
/** True when this origin is valid for the addressed working sub-item surface. */
|
|
47
48
|
export function isHallLibrarySubItemOriginForSurface(origin, surface) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hall-library-target-fields.js","sourceRoot":"","sources":["../../src/media/hall-library-target-fields.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"hall-library-target-fields.js","sourceRoot":"","sources":["../../src/media/hall-library-target-fields.ts"],"names":[],"mappings":"AACA,OAAO,EACL,uCAAuC,GAExC,MAAM,sCAAsC,CAAC;AAE9C,4EAA4E;AAC5E,uEAAuE;AACvE,+DAA+D;AAC/D,EAAE;AACF,kEAAkE;AAClE,sEAAsE;AACtE,oEAAoE;AACpE,oDAAoD;AACpD,EAAE;AACF,qEAAqE;AACrE,qCAAqC;AACrC,MAAM,CAAC,MAAM,0BAA0B,GAAG;IACxC,0BAA0B,EAAK,oBAAoB;IACnD,0BAA0B,EAAK,oBAAoB;IACnD,6BAA6B,EAAE,uBAAuB;IACtD,eAAe,EAAY,cAAc;IACzC,kBAAkB,EAAe,cAAc;IAC/C,kBAAkB,EAAe,cAAc;IAC/C,0BAA0B,EAAe,cAAc;IACvD,0BAA0B,EAAe,cAAc;CACD,CAAC;AAkBzD,MAAM,CAAC,MAAM,gCAAgC,GAAG;IAC9C,0BAA0B,EAAK,0BAA0B,CAAC,0BAA0B,CAAC;IACrF,0BAA0B,EAAK,0BAA0B,CAAC,0BAA0B,CAAC;IACrF,6BAA6B,EAAE,0BAA0B,CAAC,6BAA6B,CAAC;CACF,CAAC;AAEzF,MAAM,CAAC,MAAM,mCAAmC,GAAG;IACjD,eAAe,EAAa,0BAA0B,CAAC,eAAe,CAAC;IACvE,kBAAkB,EAAU,0BAA0B,CAAC,kBAAkB,CAAC;IAC1E,kBAAkB,EAAU,0BAA0B,CAAC,kBAAkB,CAAC;IAC1E,0BAA0B,EAAE,0BAA0B,CAAC,0BAA0B,CAAC;IAClF,0BAA0B,EAAE,0BAA0B,CAAC,0BAA0B,CAAC;CACM,CAAC;AAU3F;;;;GAIG;AACH,MAAM,CAAC,MAAM,uCAAuC,GAAG;IACrD,eAAe,EAAE,uCAAuC,CAAC,KAAK,CAAC,cAAc;IAC7E,kBAAkB,EAAE,uCAAuC,CAAC,KAAK,CAAC,cAAc;IAChF,kBAAkB,EAAE,uCAAuC,CAAC,KAAK,CAAC,cAAc;IAChF,0BAA0B,EAAE,uCAAuC,CAAC,UAAU,CAAC,cAAc;IAC7F,0BAA0B,EAAE,uCAAuC,CAAC,UAAU,CAAC,cAAc;CACX,CAAC;AAErF,iFAAiF;AACjF,MAAM,UAAU,oCAAoC,CAClD,MAAoC,EACpC,OAAkC;IAElC,OAAO,uCAAuC,CAAC,MAAM,CAAC,KAAK,OAAO,CAAC;AACrE,CAAC;AAED,uFAAuF;AACvF,MAAM,UAAU,4BAA4B,CAC1C,MAAc;IAEd,OAAO,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,gCAAgC,EAAE,MAAM,CAAC,CAAC;AACxF,CAAC;AAED,oFAAoF;AACpF,MAAM,UAAU,8BAA8B,CAC5C,MAAc;IAEd,OAAO,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,mCAAmC,EAAE,MAAM,CAAC,CAAC;AAC3F,CAAC","sourcesContent":["import type { FileOrigin } from './file-origin.js';\nimport {\n HALL_CONTENT_SURFACE_NAMES_BY_WORK_TYPE,\n type HallContentSubItemSurface,\n} from '../constants/hall-content-routing.js';\n\n// Server-side mapping from hallLibrary/sub-item fileOrigin to the doc field\n// that receives the processed media-asset reference (never a URL — see\n// ttt-prod docs/design/media-assets-and-protected-serving.md).\n//\n// Owned in ttt-core because it's a contract fact about the upload\n// pipeline — same tier as TTT_MEDIA_SPECS and PATH_BUILDERS. Frontend\n// never reads this. Processors look the field up after deriving the\n// target doc path from the typed IDs in targetInfo.\n//\n// The Partial<Record<FileOrigin, string>> constraint guarantees only\n// valid FileOrigin strings are keys.\nexport const HALL_LIBRARY_TARGET_FIELDS = {\n 'hallLibrary-cover-square': 'coverSquareAssetId',\n 'hallLibrary-cover-poster': 'coverPosterAssetId',\n 'hallLibrary-cover-cinematic': 'coverCinematicAssetId',\n 'chapter-photo': 'photoAssetId',\n 'tune-track-photo': 'photoAssetId',\n 'tune-track-audio': 'audioAssetId',\n 'television-episode-photo': 'photoAssetId',\n 'television-episode-video': 'videoAssetId',\n} as const satisfies Partial<Record<FileOrigin, string>>;\n\nexport type HallLibraryFileOrigin = keyof typeof HALL_LIBRARY_TARGET_FIELDS;\nexport type HallLibraryTargetField = typeof HALL_LIBRARY_TARGET_FIELDS[HallLibraryFileOrigin];\n\n// The same map split by WRITE LEVEL. A cover origin attaches its field on the hall\n// PARENT (the Work's tale/tune/television section doc); a sub-item origin attaches on a\n// chapter / track / episode doc. A processor owns exactly one level, so indexing the whole\n// map there types the write against fields the document it writes never declares.\n//\n// Both subsets are derived from the one map above — no field name is restated — and the\n// `satisfies Pick<...>` constraints close the partition at compile time: an origin added to\n// the parent map lands in one of the two key unions and fails to build until it is listed.\nexport type HallLibraryCoverFileOrigin =\n Extract<HallLibraryFileOrigin, `hallLibrary-cover-${string}`>;\nexport type HallLibrarySubItemFileOrigin =\n Exclude<HallLibraryFileOrigin, HallLibraryCoverFileOrigin>;\n\nexport const HALL_LIBRARY_COVER_TARGET_FIELDS = {\n 'hallLibrary-cover-square': HALL_LIBRARY_TARGET_FIELDS['hallLibrary-cover-square'],\n 'hallLibrary-cover-poster': HALL_LIBRARY_TARGET_FIELDS['hallLibrary-cover-poster'],\n 'hallLibrary-cover-cinematic': HALL_LIBRARY_TARGET_FIELDS['hallLibrary-cover-cinematic'],\n} as const satisfies Pick<typeof HALL_LIBRARY_TARGET_FIELDS, HallLibraryCoverFileOrigin>;\n\nexport const HALL_LIBRARY_SUB_ITEM_TARGET_FIELDS = {\n 'chapter-photo': HALL_LIBRARY_TARGET_FIELDS['chapter-photo'],\n 'tune-track-photo': HALL_LIBRARY_TARGET_FIELDS['tune-track-photo'],\n 'tune-track-audio': HALL_LIBRARY_TARGET_FIELDS['tune-track-audio'],\n 'television-episode-photo': HALL_LIBRARY_TARGET_FIELDS['television-episode-photo'],\n 'television-episode-video': HALL_LIBRARY_TARGET_FIELDS['television-episode-video'],\n} as const satisfies Pick<typeof HALL_LIBRARY_TARGET_FIELDS, HallLibrarySubItemFileOrigin>;\n\nexport type HallLibraryCoverTargetField =\n typeof HALL_LIBRARY_COVER_TARGET_FIELDS[HallLibraryCoverFileOrigin];\nexport type HallLibrarySubItemTargetField =\n typeof HALL_LIBRARY_SUB_ITEM_TARGET_FIELDS[HallLibrarySubItemFileOrigin];\n\n/** The working sub-item surface addressed by a Hall-library sub-item upload. */\nexport type HallLibrarySubItemSurface = HallContentSubItemSurface;\n\n/**\n * Canonical upload-origin → working-sub-item routing. The processor uses this to derive\n * publicationArgs, and the publication adapter uses the same declaration to reject a\n * malformed persisted job before it can attach a media field to the wrong document shape.\n */\nexport const HALL_LIBRARY_SUB_ITEM_SURFACE_BY_ORIGIN = {\n 'chapter-photo': HALL_CONTENT_SURFACE_NAMES_BY_WORK_TYPE.Tales.subItemSurface,\n 'tune-track-photo': HALL_CONTENT_SURFACE_NAMES_BY_WORK_TYPE.Tunes.subItemSurface,\n 'tune-track-audio': HALL_CONTENT_SURFACE_NAMES_BY_WORK_TYPE.Tunes.subItemSurface,\n 'television-episode-photo': HALL_CONTENT_SURFACE_NAMES_BY_WORK_TYPE.Television.subItemSurface,\n 'television-episode-video': HALL_CONTENT_SURFACE_NAMES_BY_WORK_TYPE.Television.subItemSurface,\n} as const satisfies Record<HallLibrarySubItemFileOrigin, HallLibrarySubItemSurface>;\n\n/** True when this origin is valid for the addressed working sub-item surface. */\nexport function isHallLibrarySubItemOriginForSurface(\n origin: HallLibrarySubItemFileOrigin,\n surface: HallLibrarySubItemSurface,\n): boolean {\n return HALL_LIBRARY_SUB_ITEM_SURFACE_BY_ORIGIN[origin] === surface;\n}\n\n/** True when the origin writes a cover field on the hall parent / Work section doc. */\nexport function isHallLibraryCoverFileOrigin(\n origin: string,\n): origin is HallLibraryCoverFileOrigin {\n return Object.prototype.hasOwnProperty.call(HALL_LIBRARY_COVER_TARGET_FIELDS, origin);\n}\n\n/** True when the origin writes a media field on a chapter / track / episode doc. */\nexport function isHallLibrarySubItemFileOrigin(\n origin: string,\n): origin is HallLibrarySubItemFileOrigin {\n return Object.prototype.hasOwnProperty.call(HALL_LIBRARY_SUB_ITEM_TARGET_FIELDS, origin);\n}\n\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"target-info.d.ts","sourceRoot":"","sources":["../../src/media/target-info.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"target-info.d.ts","sourceRoot":"","sources":["../../src/media/target-info.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,6 +5,7 @@ import { TRADE_PROFESSION_OPTIONS, TRADE_PROFESSION_VALUES, CRAFT_SKILL_TAG_VALU
|
|
|
5
5
|
import { MediaTypeSchema } from "../doc-schemas/social.js";
|
|
6
6
|
import { CraftSkillKindSchema, CraftSkillAttestationSchema, CraftSkillSourceReferenceSchema, CRAFT_SKILL_KIND_REQUIRING_SOURCE, } from "../doc-schemas/user.js";
|
|
7
7
|
import { CRAFT_SKILL_STATEMENT_VERSION } from "../constants/craft-skill-statements.js";
|
|
8
|
+
import { HALL_CONTENT_DETAIL_SURFACES } from "../constants/hall-content-routing.js";
|
|
8
9
|
import { MAX_MENTIONS, MAX_POST_LENGTH, MAX_CRAFT_SKILL_TAGS, MAX_COMMISSION_TITLE_LENGTH, MAX_COMMISSION_DESCRIPTION_LENGTH, MAX_AUDITION_TITLE_LENGTH, MAX_AUDITION_DESCRIPTION_LENGTH, MAX_WORK_PROJECT_STAKE_SHARES, MAX_SPONSORED_AUDITION_AMOUNT_USD, MIN_CURATED_AUDITION_OPTIONS, MAX_CURATED_AUDITION_OPTIONS, } from "../constants/business.js";
|
|
9
10
|
export const ProfilePictureTargetInfoSchema = z.object({}).strict();
|
|
10
11
|
/**
|
|
@@ -192,7 +193,7 @@ export const AuditionEntryTargetInfoSchema = z
|
|
|
192
193
|
const HallLibraryCoverTargetInfoSchema = z
|
|
193
194
|
.object({
|
|
194
195
|
workProjectId: z.string().min(1),
|
|
195
|
-
itemType: z.enum(
|
|
196
|
+
itemType: z.enum(HALL_CONTENT_DETAIL_SURFACES),
|
|
196
197
|
itemId: z.string().min(1),
|
|
197
198
|
})
|
|
198
199
|
.strict();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"target-info.js","sourceRoot":"","sources":["../../src/media/target-info.ts"],"names":[],"mappings":"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","sourcesContent":["import { z } from \"zod\";\nimport type { FileOrigin } from \"./file-origin.js\";\nimport { ConversationFileRefSchema } from \"./conversation-file-ref.js\";\nimport { MentionSchema, rejectDuplicateMentionPlaceholders } from \"./atoms.js\";\nimport {\n TRADE_PROFESSION_OPTIONS,\n TRADE_PROFESSION_VALUES,\n CRAFT_SKILL_TAG_VALUES,\n} from \"../constants/options.js\";\nimport { MediaTypeSchema } from \"../doc-schemas/social.js\";\nimport {\n CraftSkillKindSchema,\n CraftSkillAttestationSchema,\n CraftSkillSourceReferenceSchema,\n CRAFT_SKILL_KIND_REQUIRING_SOURCE,\n type CraftSkillKind,\n type CraftSkillAttestation,\n type CraftSkillSourceReference,\n} from \"../doc-schemas/user.js\";\nimport { CRAFT_SKILL_STATEMENT_VERSION } from \"../constants/craft-skill-statements.js\";\nimport {\n MAX_MENTIONS,\n MAX_POST_LENGTH,\n MAX_CRAFT_SKILL_TAGS,\n MAX_COMMISSION_TITLE_LENGTH,\n MAX_COMMISSION_DESCRIPTION_LENGTH,\n MAX_AUDITION_TITLE_LENGTH,\n MAX_AUDITION_DESCRIPTION_LENGTH,\n MAX_WORK_PROJECT_STAKE_SHARES,\n MAX_SPONSORED_AUDITION_AMOUNT_USD,\n MIN_CURATED_AUDITION_OPTIONS,\n MAX_CURATED_AUDITION_OPTIONS,\n} from \"../constants/business.js\";\n\nexport const ProfilePictureTargetInfoSchema = z.object({}).strict();\n\n/**\n * The three-kind craft-skill upload attestation — `kind` + the agreed `attestation` + the\n * TTT-mimic-only `source` + the creation `tags`. It crosses the backend↔frontend boundary\n * (the client collects it in the add-a-craft dialog; `startUpload` and `processCraftSkill`\n * re-validate it), so it is declared ONCE here (ARCH-101/ARCH-102) — never app-locally on\n * either side.\n *\n * `source` is REQUIRED for the TTT-mimic kind (CRAFT_SKILL_KIND_REQUIRING_SOURCE) and FORBIDDEN\n * otherwise, and `attestation.statementKind` must match `kind` — enforced by the shared\n * refinement below, so a client-sent payload is fully re-validated server-side.\n * `attestation.agreedAt` is shape-validated here; the SERVER re-stamps it at `startUpload`\n * (MEDIA-004 — never trust a client timestamp on a rights-consent record).\n *\n * See ttt-prod docs/design/profile-and-craft-skills.md § \"The three-kind system\".\n */\nconst craftSkillUploadAttestationShape = {\n kind: CraftSkillKindSchema,\n attestation: CraftSkillAttestationSchema,\n source: CraftSkillSourceReferenceSchema.optional(),\n // At least 1 tag is required at creation (three-kind flow) and the floor of 1 can never drop\n // (updateCraftSkillTags refuses the last remove). Deduped, allowlisted, capped at the max.\n tags: z\n .array(z.enum(CRAFT_SKILL_TAG_VALUES))\n .min(1, \"Select at least one tag for your craft.\")\n .max(MAX_CRAFT_SKILL_TAGS)\n .refine((t) => new Set(t).size === t.length, \"Duplicate tags are not allowed.\"),\n};\n\nfunction refineCraftSkillUploadAttestation(\n val: {\n kind: CraftSkillKind;\n attestation: CraftSkillAttestation;\n source?: CraftSkillSourceReference;\n },\n ctx: z.RefinementCtx,\n): void {\n if (val.attestation.statementKind !== val.kind) {\n ctx.addIssue({\n code: \"custom\",\n message: \"attestation.statementKind must match kind\",\n path: [\"attestation\", \"statementKind\"],\n });\n }\n if (val.attestation.statementVersion !== CRAFT_SKILL_STATEMENT_VERSION) {\n ctx.addIssue({\n code: \"custom\",\n message: `attestation.statementVersion must be ${CRAFT_SKILL_STATEMENT_VERSION}`,\n path: [\"attestation\", \"statementVersion\"],\n });\n }\n const needsSource = val.kind === CRAFT_SKILL_KIND_REQUIRING_SOURCE;\n if (needsSource && !val.source) {\n ctx.addIssue({\n code: \"custom\",\n message: \"A source link (user or work project) is required for a TTT mimic\",\n path: [\"source\"],\n });\n }\n if (!needsSource && val.source) {\n ctx.addIssue({\n code: \"custom\",\n message: \"A source link is only allowed for a TTT mimic\",\n path: [\"source\"],\n });\n }\n}\n\n/** The attestation triple + tags on their own — for a caller that already holds the base\n * targetInfo fields separately, or that re-validates the consent record in isolation. */\nexport const CraftSkillUploadAttestationSchema = z\n .object(craftSkillUploadAttestationShape)\n .strict()\n .superRefine(refineCraftSkillUploadAttestation);\nexport type CraftSkillUploadAttestation = z.infer<typeof CraftSkillUploadAttestationSchema>;\n\n// craft-skill-media: the WHOLE craft-skill upload targetInfo — the base media fields plus the\n// three-kind attestation above. One declaration, so `parseTargetInfo('craft-skill-media', …)`\n// validates the complete payload the client actually sends; there is no split-and-revalidate\n// dance and no app-local copy of the attestation shape on either layer.\nexport const CraftSkillMediaTargetInfoSchema = z\n .object({\n // No craftSkillId: the backend mints the craft-skill doc id from the pendingMedia id;\n // a client-supplied id was dead input the processor ignored, so it is not accepted.\n // The canonical display/transport media-type family — never re-declared (ARCH-102).\n skillType: MediaTypeSchema,\n originalFileName: z.string().min(1),\n ...craftSkillUploadAttestationShape,\n })\n .strict()\n .superRefine(refineCraftSkillUploadAttestation);\n\n// squareStreetz: mentions array of structured Mention objects. Capped at\n// MAX_MENTIONS with unique placeholders (duplicate placeholders collide at render\n// time — both tokens resolve to the later entity).\nexport const SquareStreetzTargetInfoSchema = z\n .object({\n mentions: z\n .array(MentionSchema)\n .max(MAX_MENTIONS)\n .superRefine(rejectDuplicateMentionPlaceholders),\n })\n .strict();\n\n// Per-origin text (caption) rule for the squareStreetz media-upload path. The caption\n// travels as StartUploadRequest.textContent (top-level, generic + optional) — not inside\n// targetInfo — so `startUpload` validates it with THIS schema when\n// fileOrigin === 'squareStreetz', mirroring the text-post callable's\n// CreateSquareStreetzTextPostInputSchema.textContent (min 1, max MAX_POST_LENGTH). This\n// closes the media-path gap where a caption was accepted unbounded / empty.\nexport const SquareStreetzCaptionSchema = z.string().min(1).max(MAX_POST_LENGTH);\n\n// commission-posting: full commission creation payload.\nexport const CommissionPostingTargetInfoSchema = z\n .object({\n // No commissionListingId: the backend mints the listing id server-side at publish;\n // it is not accepted from the client.\n title: z.string().min(1).max(MAX_COMMISSION_TITLE_LENGTH),\n description: z.string().max(MAX_COMMISSION_DESCRIPTION_LENGTH),\n requiredTradeProfessions: z.array(z.enum(TRADE_PROFESSION_VALUES)).max(TRADE_PROFESSION_OPTIONS.length),\n // min(1): the create core rejects 0 shares (invalid-argument) at PUBLISH — after\n // upload/transcode/moderation — so fail fast at the trust boundary instead of burning\n // the activation-job retry budget on a deterministic dead-letter.\n stakeSharesOffered: z.number().int().min(1).max(MAX_WORK_PROJECT_STAKE_SHARES),\n workProjectId: z.string().min(1),\n })\n .strict();\n\nexport const CommissionProposalTargetInfoSchema = z\n .object({\n commissionListingId: z.string().min(1),\n replyText: z.string().max(MAX_COMMISSION_DESCRIPTION_LENGTH),\n })\n .strict();\n\n// audition-prompt: workProject-owned audition creation payload (workAudition only).\nexport const AuditionPromptTargetInfoSchema = z\n .object({\n // SANCTIONED client-minted upload-batch correlation ID. A curated audition uploads\n // MULTIPLE files that must all share ONE audition id before any Audition doc exists,\n // so the client mints it and stamps every file in the batch with it. The backend must\n // treat it with create-no-overwrite semantics (first write wins; a colliding id from a\n // different actor/batch is rejected, never overwritten). This is NOT a reference to an\n // existing audition (contrast audition-entry's auditionId).\n auditionId: z.string().min(1),\n type: z.literal('workAudition'),\n title: z.string().min(1).max(MAX_AUDITION_TITLE_LENGTH),\n description: z.string().max(MAX_AUDITION_DESCRIPTION_LENGTH),\n openTill: z.number().int().positive(),\n workProjectId: z.string().min(1),\n // min(1): the create core rejects <1 shares at PUBLISH (see CommissionPosting above).\n // Optional — defaults to a floor of 1 at invite time when absent.\n stakeSharesOffered: z.number().int().min(1).max(MAX_WORK_PROJECT_STAKE_SHARES).optional(),\n // Curated vs open audition. Absent ⇒ 'open' (community replies + votes). 'curated' ⇒ the\n // creating work posts the option entries itself and users may ONLY vote (the create/reply\n // callable derives each option entry's isCreatorOption server-side and rejects community replies).\n mode: z.enum(['open', 'curated']).optional(),\n // Curated ONLY: the fixed number of creator option videos (2..8) in the atomic batch, carried from\n // the Create click through targetInfo so the create core sets it on the Audition doc and the reveal\n // coordinator knows when ALL options have landed. Required by the create core when mode==='curated'.\n expectedOptionCount: z.number().int().min(MIN_CURATED_AUDITION_OPTIONS).max(MAX_CURATED_AUDITION_OPTIONS).optional(),\n })\n .strict();\n\n// admin-audition-prompt: admin-operated featured/sponsored audition creation payload.\nexport const AdminAuditionPromptTargetInfoSchema = z\n .object({\n // SANCTIONED client-minted upload-batch correlation ID (see AuditionPromptTargetInfoSchema.\n // auditionId): a curated audition's multiple option videos share this one id before any\n // Audition doc exists; the backend uses create-no-overwrite semantics. NOT a reference to\n // an existing audition.\n auditionId: z.string().min(1),\n type: z.enum(['platformAudition', 'sponsoredAudition']),\n title: z.string().min(1).max(MAX_AUDITION_TITLE_LENGTH),\n description: z.string().max(MAX_AUDITION_DESCRIPTION_LENGTH),\n openTill: z.number().int().positive(),\n sponsoredAuditionAmountUSD: z.number().nonnegative().finite().max(MAX_SPONSORED_AUDITION_AMOUNT_USD).optional(),\n // Curated vs open (see AuditionPromptTargetInfoSchema.mode). Absent ⇒ 'open'.\n mode: z.enum(['open', 'curated']).optional(),\n // Curated ONLY: fixed number of option videos (2..8) in the atomic batch (see\n // AuditionPromptTargetInfoSchema.expectedOptionCount). Required by the create core when curated.\n expectedOptionCount: z.number().int().min(MIN_CURATED_AUDITION_OPTIONS).max(MAX_CURATED_AUDITION_OPTIONS).optional(),\n })\n .strict();\n\nexport const AuditionEntryTargetInfoSchema = z\n .object({\n auditionId: z.string().min(1),\n })\n .strict();\n\n// ───────────────────────────────────────────────────────────────────\n// HALL LIBRARY COVER target info (square / poster / cinematic).\n// All three origins share one shape. The processor uses fileOrigin to\n// pick which field on the target doc gets written (see\n// HALL_LIBRARY_TARGET_FIELDS in `hall-library-target-fields.ts`).\n//\n// itemType discriminates which parent collection — `workProjectTales` vs\n// `workProjectTunes` vs `workProjectTelevision`. fileOrigin alone does NOT\n// disambiguate this because all three cover origins target whichever\n// hallLibrary item the user is editing.\n// ───────────────────────────────────────────────────────────────────\nconst HallLibraryCoverTargetInfoSchema = z\n .object({\n workProjectId: z.string().min(1),\n itemType: z.enum(['tale', 'tune', 'television']),\n itemId: z.string().min(1),\n })\n .strict();\n\nexport const HallLibraryCoverSquareTargetInfoSchema = HallLibraryCoverTargetInfoSchema;\nexport const HallLibraryCoverPosterTargetInfoSchema = HallLibraryCoverTargetInfoSchema;\nexport const HallLibraryCoverCinematicTargetInfoSchema = HallLibraryCoverTargetInfoSchema;\n\n// realm-cover: the Realm's square cover art. The processor writes\n// `realmCoverAssetId` on workRealms/{workRealmId}. Steward-only (the upload\n// callable authorizes against the realm's workStewardUid).\nexport const RealmCoverTargetInfoSchema = z\n .object({\n workRealmId: z.string().min(1),\n })\n .strict();\n\n// ───────────────────────────────────────────────────────────────────\n// SUB-ITEM target info — one shape per item type, NOT per media kind.\n// chapter-photo uses ChapterPhotoTargetInfoSchema.\n// tune-track-photo + tune-track-audio share TuneTrackMediaTargetInfoSchema.\n// television-episode-photo + television-episode-video share TelevisionEpisodeMediaTargetInfoSchema.\n// The processor derives the doc path from these IDs via\n// PATH_BUILDERS.taleChapter / .tuneTrack / .televisionEpisode, and derives the\n// field name from fileOrigin via HALL_LIBRARY_TARGET_FIELDS.\n// ───────────────────────────────────────────────────────────────────\nexport const ChapterPhotoTargetInfoSchema = z\n .object({\n workProjectId: z.string().min(1),\n taleId: z.string().min(1),\n chapterId: z.string().min(1),\n })\n .strict();\n\nconst TuneTrackMediaTargetInfoSchema = z\n .object({\n workProjectId: z.string().min(1),\n tuneId: z.string().min(1),\n trackId: z.string().min(1),\n })\n .strict();\n\nexport const TuneTrackPhotoTargetInfoSchema = TuneTrackMediaTargetInfoSchema;\nexport const TuneTrackAudioTargetInfoSchema = TuneTrackMediaTargetInfoSchema;\n\nconst TelevisionEpisodeMediaTargetInfoSchema = z\n .object({\n workProjectId: z.string().min(1),\n televisionId: z.string().min(1),\n episodeId: z.string().min(1),\n })\n .strict();\n\nexport const TelevisionEpisodePhotoTargetInfoSchema = TelevisionEpisodeMediaTargetInfoSchema;\nexport const TelevisionEpisodeVideoTargetInfoSchema = TelevisionEpisodeMediaTargetInfoSchema;\n\n// conversation-file: STRICT — carries the ConversationFileRef and NOTHING else.\n// No message text, no replyTo, no message id, no isUserReply: a Conversation File\n// is never embedded in, sequenced with, or mutated through a chat message. Extra\n// or mixed scope identifiers (e.g. a guildInviteId alongside an adminDispatchId,\n// or a guildChatChannelId) fail the parse.\nexport const ConversationFileTargetInfoSchema = ConversationFileRefSchema;\n\nexport const WorkAssetTargetInfoSchema = z\n .object({\n workProjectId: z.string().min(1),\n // The folder the file is uploaded INTO (S7 folder system). Custom folders gate\n // upload by trade profession; the default folder accepts any active guildmate.\n folderId: z.string().min(1),\n })\n .strict();\n\n// ---- type aliases ----\n\nexport type ProfilePictureTargetInfo = z.infer<typeof ProfilePictureTargetInfoSchema>;\nexport type CraftSkillMediaTargetInfo = z.infer<typeof CraftSkillMediaTargetInfoSchema>;\nexport type SquareStreetzTargetInfo = z.infer<typeof SquareStreetzTargetInfoSchema>;\nexport type CommissionPostingTargetInfo = z.infer<typeof CommissionPostingTargetInfoSchema>;\nexport type CommissionProposalTargetInfo = z.infer<typeof CommissionProposalTargetInfoSchema>;\nexport type AuditionPromptTargetInfo = z.infer<typeof AuditionPromptTargetInfoSchema>;\nexport type AdminAuditionPromptTargetInfo = z.infer<typeof AdminAuditionPromptTargetInfoSchema>;\nexport type AuditionEntryTargetInfo = z.infer<typeof AuditionEntryTargetInfoSchema>;\nexport type HallLibraryCoverSquareTargetInfo = z.infer<typeof HallLibraryCoverSquareTargetInfoSchema>;\nexport type HallLibraryCoverPosterTargetInfo = z.infer<typeof HallLibraryCoverPosterTargetInfoSchema>;\nexport type HallLibraryCoverCinematicTargetInfo = z.infer<typeof HallLibraryCoverCinematicTargetInfoSchema>;\nexport type RealmCoverTargetInfo = z.infer<typeof RealmCoverTargetInfoSchema>;\nexport type ChapterPhotoTargetInfo = z.infer<typeof ChapterPhotoTargetInfoSchema>;\nexport type TuneTrackPhotoTargetInfo = z.infer<typeof TuneTrackPhotoTargetInfoSchema>;\nexport type TuneTrackAudioTargetInfo = z.infer<typeof TuneTrackAudioTargetInfoSchema>;\nexport type TelevisionEpisodePhotoTargetInfo = z.infer<typeof TelevisionEpisodePhotoTargetInfoSchema>;\nexport type TelevisionEpisodeVideoTargetInfo = z.infer<typeof TelevisionEpisodeVideoTargetInfoSchema>;\nexport type ConversationFileTargetInfo = z.infer<typeof ConversationFileTargetInfoSchema>;\nexport type WorkAssetTargetInfo = z.infer<typeof WorkAssetTargetInfoSchema>;\n\n// ncii-evidence: ties the uploaded evidence to a take-it-down request by its\n// public reference. The processor attaches the evidence record to that request.\nexport const NciiEvidenceTargetInfoSchema = z\n .object({\n requestReference: z.string().min(1),\n })\n .strict();\nexport type NciiEvidenceTargetInfo = z.infer<typeof NciiEvidenceTargetInfoSchema>;\n\n// Mapped type: given a FileOrigin literal, returns its targetInfo shape.\nexport type TargetInfoFor<O extends FileOrigin> =\n O extends 'profile-picture' ? ProfilePictureTargetInfo\n : O extends 'craft-skill-media' ? CraftSkillMediaTargetInfo\n : O extends 'squareStreetz' ? SquareStreetzTargetInfo\n : O extends 'commission-posting' ? CommissionPostingTargetInfo\n : O extends 'commission-proposal' ? CommissionProposalTargetInfo\n : O extends 'audition-prompt' ? AuditionPromptTargetInfo\n : O extends 'admin-audition-prompt' ? AdminAuditionPromptTargetInfo\n : O extends 'audition-entry' ? AuditionEntryTargetInfo\n : O extends 'hallLibrary-cover-square' ? HallLibraryCoverSquareTargetInfo\n : O extends 'hallLibrary-cover-poster' ? HallLibraryCoverPosterTargetInfo\n : O extends 'hallLibrary-cover-cinematic' ? HallLibraryCoverCinematicTargetInfo\n : O extends 'realm-cover' ? RealmCoverTargetInfo\n : O extends 'chapter-photo' ? ChapterPhotoTargetInfo\n : O extends 'tune-track-photo' ? TuneTrackPhotoTargetInfo\n : O extends 'tune-track-audio' ? TuneTrackAudioTargetInfo\n : O extends 'television-episode-photo' ? TelevisionEpisodePhotoTargetInfo\n : O extends 'television-episode-video' ? TelevisionEpisodeVideoTargetInfo\n : O extends 'conversation-file' ? ConversationFileTargetInfo\n : O extends 'work-asset' ? WorkAssetTargetInfo\n : O extends 'ncii-evidence' ? NciiEvidenceTargetInfo\n : never;\n\nfunction assertNever(x: never): never {\n throw new Error(`Unexpected fileOrigin: ${String(x)}`);\n}\n\nexport function parseTargetInfo<O extends FileOrigin>(\n fileOrigin: O,\n raw: unknown\n): TargetInfoFor<O> {\n switch (fileOrigin) {\n case 'profile-picture': return ProfilePictureTargetInfoSchema.parse(raw) as TargetInfoFor<O>;\n case 'craft-skill-media': return CraftSkillMediaTargetInfoSchema.parse(raw) as TargetInfoFor<O>;\n case 'squareStreetz': return SquareStreetzTargetInfoSchema.parse(raw) as TargetInfoFor<O>;\n case 'commission-posting': return CommissionPostingTargetInfoSchema.parse(raw) as TargetInfoFor<O>;\n case 'commission-proposal': return CommissionProposalTargetInfoSchema.parse(raw) as TargetInfoFor<O>;\n case 'audition-prompt': return AuditionPromptTargetInfoSchema.parse(raw) as TargetInfoFor<O>;\n case 'admin-audition-prompt': return AdminAuditionPromptTargetInfoSchema.parse(raw) as TargetInfoFor<O>;\n case 'audition-entry': return AuditionEntryTargetInfoSchema.parse(raw) as TargetInfoFor<O>;\n case 'hallLibrary-cover-square': return HallLibraryCoverSquareTargetInfoSchema.parse(raw) as TargetInfoFor<O>;\n case 'hallLibrary-cover-poster': return HallLibraryCoverPosterTargetInfoSchema.parse(raw) as TargetInfoFor<O>;\n case 'hallLibrary-cover-cinematic': return HallLibraryCoverCinematicTargetInfoSchema.parse(raw) as TargetInfoFor<O>;\n case 'realm-cover': return RealmCoverTargetInfoSchema.parse(raw) as TargetInfoFor<O>;\n case 'chapter-photo': return ChapterPhotoTargetInfoSchema.parse(raw) as TargetInfoFor<O>;\n case 'tune-track-photo': return TuneTrackPhotoTargetInfoSchema.parse(raw) as TargetInfoFor<O>;\n case 'tune-track-audio': return TuneTrackAudioTargetInfoSchema.parse(raw) as TargetInfoFor<O>;\n case 'television-episode-photo': return TelevisionEpisodePhotoTargetInfoSchema.parse(raw) as TargetInfoFor<O>;\n case 'television-episode-video': return TelevisionEpisodeVideoTargetInfoSchema.parse(raw) as TargetInfoFor<O>;\n case 'conversation-file': return ConversationFileTargetInfoSchema.parse(raw) as TargetInfoFor<O>;\n case 'work-asset': return WorkAssetTargetInfoSchema.parse(raw) as TargetInfoFor<O>;\n case 'ncii-evidence': return NciiEvidenceTargetInfoSchema.parse(raw) as TargetInfoFor<O>;\n default: return assertNever(fileOrigin);\n }\n}\n\n\n\n\n"]}
|
|
1
|
+
{"version":3,"file":"target-info.js","sourceRoot":"","sources":["../../src/media/target-info.ts"],"names":[],"mappings":"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","sourcesContent":["import { z } from \"zod\";\nimport type { FileOrigin } from \"./file-origin.js\";\nimport { ConversationFileRefSchema } from \"./conversation-file-ref.js\";\nimport { MentionSchema, rejectDuplicateMentionPlaceholders } from \"./atoms.js\";\nimport {\n TRADE_PROFESSION_OPTIONS,\n TRADE_PROFESSION_VALUES,\n CRAFT_SKILL_TAG_VALUES,\n} from \"../constants/options.js\";\nimport { MediaTypeSchema } from \"../doc-schemas/social.js\";\nimport {\n CraftSkillKindSchema,\n CraftSkillAttestationSchema,\n CraftSkillSourceReferenceSchema,\n CRAFT_SKILL_KIND_REQUIRING_SOURCE,\n type CraftSkillKind,\n type CraftSkillAttestation,\n type CraftSkillSourceReference,\n} from \"../doc-schemas/user.js\";\nimport { CRAFT_SKILL_STATEMENT_VERSION } from \"../constants/craft-skill-statements.js\";\nimport { HALL_CONTENT_DETAIL_SURFACES } from \"../constants/hall-content-routing.js\";\nimport {\n MAX_MENTIONS,\n MAX_POST_LENGTH,\n MAX_CRAFT_SKILL_TAGS,\n MAX_COMMISSION_TITLE_LENGTH,\n MAX_COMMISSION_DESCRIPTION_LENGTH,\n MAX_AUDITION_TITLE_LENGTH,\n MAX_AUDITION_DESCRIPTION_LENGTH,\n MAX_WORK_PROJECT_STAKE_SHARES,\n MAX_SPONSORED_AUDITION_AMOUNT_USD,\n MIN_CURATED_AUDITION_OPTIONS,\n MAX_CURATED_AUDITION_OPTIONS,\n} from \"../constants/business.js\";\n\nexport const ProfilePictureTargetInfoSchema = z.object({}).strict();\n\n/**\n * The three-kind craft-skill upload attestation — `kind` + the agreed `attestation` + the\n * TTT-mimic-only `source` + the creation `tags`. It crosses the backend↔frontend boundary\n * (the client collects it in the add-a-craft dialog; `startUpload` and `processCraftSkill`\n * re-validate it), so it is declared ONCE here (ARCH-101/ARCH-102) — never app-locally on\n * either side.\n *\n * `source` is REQUIRED for the TTT-mimic kind (CRAFT_SKILL_KIND_REQUIRING_SOURCE) and FORBIDDEN\n * otherwise, and `attestation.statementKind` must match `kind` — enforced by the shared\n * refinement below, so a client-sent payload is fully re-validated server-side.\n * `attestation.agreedAt` is shape-validated here; the SERVER re-stamps it at `startUpload`\n * (MEDIA-004 — never trust a client timestamp on a rights-consent record).\n *\n * See ttt-prod docs/design/profile-and-craft-skills.md § \"The three-kind system\".\n */\nconst craftSkillUploadAttestationShape = {\n kind: CraftSkillKindSchema,\n attestation: CraftSkillAttestationSchema,\n source: CraftSkillSourceReferenceSchema.optional(),\n // At least 1 tag is required at creation (three-kind flow) and the floor of 1 can never drop\n // (updateCraftSkillTags refuses the last remove). Deduped, allowlisted, capped at the max.\n tags: z\n .array(z.enum(CRAFT_SKILL_TAG_VALUES))\n .min(1, \"Select at least one tag for your craft.\")\n .max(MAX_CRAFT_SKILL_TAGS)\n .refine((t) => new Set(t).size === t.length, \"Duplicate tags are not allowed.\"),\n};\n\nfunction refineCraftSkillUploadAttestation(\n val: {\n kind: CraftSkillKind;\n attestation: CraftSkillAttestation;\n source?: CraftSkillSourceReference;\n },\n ctx: z.RefinementCtx,\n): void {\n if (val.attestation.statementKind !== val.kind) {\n ctx.addIssue({\n code: \"custom\",\n message: \"attestation.statementKind must match kind\",\n path: [\"attestation\", \"statementKind\"],\n });\n }\n if (val.attestation.statementVersion !== CRAFT_SKILL_STATEMENT_VERSION) {\n ctx.addIssue({\n code: \"custom\",\n message: `attestation.statementVersion must be ${CRAFT_SKILL_STATEMENT_VERSION}`,\n path: [\"attestation\", \"statementVersion\"],\n });\n }\n const needsSource = val.kind === CRAFT_SKILL_KIND_REQUIRING_SOURCE;\n if (needsSource && !val.source) {\n ctx.addIssue({\n code: \"custom\",\n message: \"A source link (user or work project) is required for a TTT mimic\",\n path: [\"source\"],\n });\n }\n if (!needsSource && val.source) {\n ctx.addIssue({\n code: \"custom\",\n message: \"A source link is only allowed for a TTT mimic\",\n path: [\"source\"],\n });\n }\n}\n\n/** The attestation triple + tags on their own — for a caller that already holds the base\n * targetInfo fields separately, or that re-validates the consent record in isolation. */\nexport const CraftSkillUploadAttestationSchema = z\n .object(craftSkillUploadAttestationShape)\n .strict()\n .superRefine(refineCraftSkillUploadAttestation);\nexport type CraftSkillUploadAttestation = z.infer<typeof CraftSkillUploadAttestationSchema>;\n\n// craft-skill-media: the WHOLE craft-skill upload targetInfo — the base media fields plus the\n// three-kind attestation above. One declaration, so `parseTargetInfo('craft-skill-media', …)`\n// validates the complete payload the client actually sends; there is no split-and-revalidate\n// dance and no app-local copy of the attestation shape on either layer.\nexport const CraftSkillMediaTargetInfoSchema = z\n .object({\n // No craftSkillId: the backend mints the craft-skill doc id from the pendingMedia id;\n // a client-supplied id was dead input the processor ignored, so it is not accepted.\n // The canonical display/transport media-type family — never re-declared (ARCH-102).\n skillType: MediaTypeSchema,\n originalFileName: z.string().min(1),\n ...craftSkillUploadAttestationShape,\n })\n .strict()\n .superRefine(refineCraftSkillUploadAttestation);\n\n// squareStreetz: mentions array of structured Mention objects. Capped at\n// MAX_MENTIONS with unique placeholders (duplicate placeholders collide at render\n// time — both tokens resolve to the later entity).\nexport const SquareStreetzTargetInfoSchema = z\n .object({\n mentions: z\n .array(MentionSchema)\n .max(MAX_MENTIONS)\n .superRefine(rejectDuplicateMentionPlaceholders),\n })\n .strict();\n\n// Per-origin text (caption) rule for the squareStreetz media-upload path. The caption\n// travels as StartUploadRequest.textContent (top-level, generic + optional) — not inside\n// targetInfo — so `startUpload` validates it with THIS schema when\n// fileOrigin === 'squareStreetz', mirroring the text-post callable's\n// CreateSquareStreetzTextPostInputSchema.textContent (min 1, max MAX_POST_LENGTH). This\n// closes the media-path gap where a caption was accepted unbounded / empty.\nexport const SquareStreetzCaptionSchema = z.string().min(1).max(MAX_POST_LENGTH);\n\n// commission-posting: full commission creation payload.\nexport const CommissionPostingTargetInfoSchema = z\n .object({\n // No commissionListingId: the backend mints the listing id server-side at publish;\n // it is not accepted from the client.\n title: z.string().min(1).max(MAX_COMMISSION_TITLE_LENGTH),\n description: z.string().max(MAX_COMMISSION_DESCRIPTION_LENGTH),\n requiredTradeProfessions: z.array(z.enum(TRADE_PROFESSION_VALUES)).max(TRADE_PROFESSION_OPTIONS.length),\n // min(1): the create core rejects 0 shares (invalid-argument) at PUBLISH — after\n // upload/transcode/moderation — so fail fast at the trust boundary instead of burning\n // the activation-job retry budget on a deterministic dead-letter.\n stakeSharesOffered: z.number().int().min(1).max(MAX_WORK_PROJECT_STAKE_SHARES),\n workProjectId: z.string().min(1),\n })\n .strict();\n\nexport const CommissionProposalTargetInfoSchema = z\n .object({\n commissionListingId: z.string().min(1),\n replyText: z.string().max(MAX_COMMISSION_DESCRIPTION_LENGTH),\n })\n .strict();\n\n// audition-prompt: workProject-owned audition creation payload (workAudition only).\nexport const AuditionPromptTargetInfoSchema = z\n .object({\n // SANCTIONED client-minted upload-batch correlation ID. A curated audition uploads\n // MULTIPLE files that must all share ONE audition id before any Audition doc exists,\n // so the client mints it and stamps every file in the batch with it. The backend must\n // treat it with create-no-overwrite semantics (first write wins; a colliding id from a\n // different actor/batch is rejected, never overwritten). This is NOT a reference to an\n // existing audition (contrast audition-entry's auditionId).\n auditionId: z.string().min(1),\n type: z.literal('workAudition'),\n title: z.string().min(1).max(MAX_AUDITION_TITLE_LENGTH),\n description: z.string().max(MAX_AUDITION_DESCRIPTION_LENGTH),\n openTill: z.number().int().positive(),\n workProjectId: z.string().min(1),\n // min(1): the create core rejects <1 shares at PUBLISH (see CommissionPosting above).\n // Optional — defaults to a floor of 1 at invite time when absent.\n stakeSharesOffered: z.number().int().min(1).max(MAX_WORK_PROJECT_STAKE_SHARES).optional(),\n // Curated vs open audition. Absent ⇒ 'open' (community replies + votes). 'curated' ⇒ the\n // creating work posts the option entries itself and users may ONLY vote (the create/reply\n // callable derives each option entry's isCreatorOption server-side and rejects community replies).\n mode: z.enum(['open', 'curated']).optional(),\n // Curated ONLY: the fixed number of creator option videos (2..8) in the atomic batch, carried from\n // the Create click through targetInfo so the create core sets it on the Audition doc and the reveal\n // coordinator knows when ALL options have landed. Required by the create core when mode==='curated'.\n expectedOptionCount: z.number().int().min(MIN_CURATED_AUDITION_OPTIONS).max(MAX_CURATED_AUDITION_OPTIONS).optional(),\n })\n .strict();\n\n// admin-audition-prompt: admin-operated featured/sponsored audition creation payload.\nexport const AdminAuditionPromptTargetInfoSchema = z\n .object({\n // SANCTIONED client-minted upload-batch correlation ID (see AuditionPromptTargetInfoSchema.\n // auditionId): a curated audition's multiple option videos share this one id before any\n // Audition doc exists; the backend uses create-no-overwrite semantics. NOT a reference to\n // an existing audition.\n auditionId: z.string().min(1),\n type: z.enum(['platformAudition', 'sponsoredAudition']),\n title: z.string().min(1).max(MAX_AUDITION_TITLE_LENGTH),\n description: z.string().max(MAX_AUDITION_DESCRIPTION_LENGTH),\n openTill: z.number().int().positive(),\n sponsoredAuditionAmountUSD: z.number().nonnegative().finite().max(MAX_SPONSORED_AUDITION_AMOUNT_USD).optional(),\n // Curated vs open (see AuditionPromptTargetInfoSchema.mode). Absent ⇒ 'open'.\n mode: z.enum(['open', 'curated']).optional(),\n // Curated ONLY: fixed number of option videos (2..8) in the atomic batch (see\n // AuditionPromptTargetInfoSchema.expectedOptionCount). Required by the create core when curated.\n expectedOptionCount: z.number().int().min(MIN_CURATED_AUDITION_OPTIONS).max(MAX_CURATED_AUDITION_OPTIONS).optional(),\n })\n .strict();\n\nexport const AuditionEntryTargetInfoSchema = z\n .object({\n auditionId: z.string().min(1),\n })\n .strict();\n\n// ───────────────────────────────────────────────────────────────────\n// HALL LIBRARY COVER target info (square / poster / cinematic).\n// All three origins share one shape. The processor uses fileOrigin to\n// pick which field on the target doc gets written (see\n// HALL_LIBRARY_TARGET_FIELDS in `hall-library-target-fields.ts`).\n//\n// itemType discriminates which parent collection — `workProjectTales` vs\n// `workProjectTunes` vs `workProjectTelevision`. fileOrigin alone does NOT\n// disambiguate this because all three cover origins target whichever\n// hallLibrary item the user is editing.\n// ───────────────────────────────────────────────────────────────────\nconst HallLibraryCoverTargetInfoSchema = z\n .object({\n workProjectId: z.string().min(1),\n itemType: z.enum(HALL_CONTENT_DETAIL_SURFACES),\n itemId: z.string().min(1),\n })\n .strict();\n\nexport const HallLibraryCoverSquareTargetInfoSchema = HallLibraryCoverTargetInfoSchema;\nexport const HallLibraryCoverPosterTargetInfoSchema = HallLibraryCoverTargetInfoSchema;\nexport const HallLibraryCoverCinematicTargetInfoSchema = HallLibraryCoverTargetInfoSchema;\n\n// realm-cover: the Realm's square cover art. The processor writes\n// `realmCoverAssetId` on workRealms/{workRealmId}. Steward-only (the upload\n// callable authorizes against the realm's workStewardUid).\nexport const RealmCoverTargetInfoSchema = z\n .object({\n workRealmId: z.string().min(1),\n })\n .strict();\n\n// ───────────────────────────────────────────────────────────────────\n// SUB-ITEM target info — one shape per item type, NOT per media kind.\n// chapter-photo uses ChapterPhotoTargetInfoSchema.\n// tune-track-photo + tune-track-audio share TuneTrackMediaTargetInfoSchema.\n// television-episode-photo + television-episode-video share TelevisionEpisodeMediaTargetInfoSchema.\n// The processor derives the doc path from these IDs via\n// PATH_BUILDERS.taleChapter / .tuneTrack / .televisionEpisode, and derives the\n// field name from fileOrigin via HALL_LIBRARY_TARGET_FIELDS.\n// ───────────────────────────────────────────────────────────────────\nexport const ChapterPhotoTargetInfoSchema = z\n .object({\n workProjectId: z.string().min(1),\n taleId: z.string().min(1),\n chapterId: z.string().min(1),\n })\n .strict();\n\nconst TuneTrackMediaTargetInfoSchema = z\n .object({\n workProjectId: z.string().min(1),\n tuneId: z.string().min(1),\n trackId: z.string().min(1),\n })\n .strict();\n\nexport const TuneTrackPhotoTargetInfoSchema = TuneTrackMediaTargetInfoSchema;\nexport const TuneTrackAudioTargetInfoSchema = TuneTrackMediaTargetInfoSchema;\n\nconst TelevisionEpisodeMediaTargetInfoSchema = z\n .object({\n workProjectId: z.string().min(1),\n televisionId: z.string().min(1),\n episodeId: z.string().min(1),\n })\n .strict();\n\nexport const TelevisionEpisodePhotoTargetInfoSchema = TelevisionEpisodeMediaTargetInfoSchema;\nexport const TelevisionEpisodeVideoTargetInfoSchema = TelevisionEpisodeMediaTargetInfoSchema;\n\n// conversation-file: STRICT — carries the ConversationFileRef and NOTHING else.\n// No message text, no replyTo, no message id, no isUserReply: a Conversation File\n// is never embedded in, sequenced with, or mutated through a chat message. Extra\n// or mixed scope identifiers (e.g. a guildInviteId alongside an adminDispatchId,\n// or a guildChatChannelId) fail the parse.\nexport const ConversationFileTargetInfoSchema = ConversationFileRefSchema;\n\nexport const WorkAssetTargetInfoSchema = z\n .object({\n workProjectId: z.string().min(1),\n // The folder the file is uploaded INTO (S7 folder system). Custom folders gate\n // upload by trade profession; the default folder accepts any active guildmate.\n folderId: z.string().min(1),\n })\n .strict();\n\n// ---- type aliases ----\n\nexport type ProfilePictureTargetInfo = z.infer<typeof ProfilePictureTargetInfoSchema>;\nexport type CraftSkillMediaTargetInfo = z.infer<typeof CraftSkillMediaTargetInfoSchema>;\nexport type SquareStreetzTargetInfo = z.infer<typeof SquareStreetzTargetInfoSchema>;\nexport type CommissionPostingTargetInfo = z.infer<typeof CommissionPostingTargetInfoSchema>;\nexport type CommissionProposalTargetInfo = z.infer<typeof CommissionProposalTargetInfoSchema>;\nexport type AuditionPromptTargetInfo = z.infer<typeof AuditionPromptTargetInfoSchema>;\nexport type AdminAuditionPromptTargetInfo = z.infer<typeof AdminAuditionPromptTargetInfoSchema>;\nexport type AuditionEntryTargetInfo = z.infer<typeof AuditionEntryTargetInfoSchema>;\nexport type HallLibraryCoverSquareTargetInfo = z.infer<typeof HallLibraryCoverSquareTargetInfoSchema>;\nexport type HallLibraryCoverPosterTargetInfo = z.infer<typeof HallLibraryCoverPosterTargetInfoSchema>;\nexport type HallLibraryCoverCinematicTargetInfo = z.infer<typeof HallLibraryCoverCinematicTargetInfoSchema>;\nexport type RealmCoverTargetInfo = z.infer<typeof RealmCoverTargetInfoSchema>;\nexport type ChapterPhotoTargetInfo = z.infer<typeof ChapterPhotoTargetInfoSchema>;\nexport type TuneTrackPhotoTargetInfo = z.infer<typeof TuneTrackPhotoTargetInfoSchema>;\nexport type TuneTrackAudioTargetInfo = z.infer<typeof TuneTrackAudioTargetInfoSchema>;\nexport type TelevisionEpisodePhotoTargetInfo = z.infer<typeof TelevisionEpisodePhotoTargetInfoSchema>;\nexport type TelevisionEpisodeVideoTargetInfo = z.infer<typeof TelevisionEpisodeVideoTargetInfoSchema>;\nexport type ConversationFileTargetInfo = z.infer<typeof ConversationFileTargetInfoSchema>;\nexport type WorkAssetTargetInfo = z.infer<typeof WorkAssetTargetInfoSchema>;\n\n// ncii-evidence: ties the uploaded evidence to a take-it-down request by its\n// public reference. The processor attaches the evidence record to that request.\nexport const NciiEvidenceTargetInfoSchema = z\n .object({\n requestReference: z.string().min(1),\n })\n .strict();\nexport type NciiEvidenceTargetInfo = z.infer<typeof NciiEvidenceTargetInfoSchema>;\n\n// Mapped type: given a FileOrigin literal, returns its targetInfo shape.\nexport type TargetInfoFor<O extends FileOrigin> =\n O extends 'profile-picture' ? ProfilePictureTargetInfo\n : O extends 'craft-skill-media' ? CraftSkillMediaTargetInfo\n : O extends 'squareStreetz' ? SquareStreetzTargetInfo\n : O extends 'commission-posting' ? CommissionPostingTargetInfo\n : O extends 'commission-proposal' ? CommissionProposalTargetInfo\n : O extends 'audition-prompt' ? AuditionPromptTargetInfo\n : O extends 'admin-audition-prompt' ? AdminAuditionPromptTargetInfo\n : O extends 'audition-entry' ? AuditionEntryTargetInfo\n : O extends 'hallLibrary-cover-square' ? HallLibraryCoverSquareTargetInfo\n : O extends 'hallLibrary-cover-poster' ? HallLibraryCoverPosterTargetInfo\n : O extends 'hallLibrary-cover-cinematic' ? HallLibraryCoverCinematicTargetInfo\n : O extends 'realm-cover' ? RealmCoverTargetInfo\n : O extends 'chapter-photo' ? ChapterPhotoTargetInfo\n : O extends 'tune-track-photo' ? TuneTrackPhotoTargetInfo\n : O extends 'tune-track-audio' ? TuneTrackAudioTargetInfo\n : O extends 'television-episode-photo' ? TelevisionEpisodePhotoTargetInfo\n : O extends 'television-episode-video' ? TelevisionEpisodeVideoTargetInfo\n : O extends 'conversation-file' ? ConversationFileTargetInfo\n : O extends 'work-asset' ? WorkAssetTargetInfo\n : O extends 'ncii-evidence' ? NciiEvidenceTargetInfo\n : never;\n\nfunction assertNever(x: never): never {\n throw new Error(`Unexpected fileOrigin: ${String(x)}`);\n}\n\nexport function parseTargetInfo<O extends FileOrigin>(\n fileOrigin: O,\n raw: unknown\n): TargetInfoFor<O> {\n switch (fileOrigin) {\n case 'profile-picture': return ProfilePictureTargetInfoSchema.parse(raw) as TargetInfoFor<O>;\n case 'craft-skill-media': return CraftSkillMediaTargetInfoSchema.parse(raw) as TargetInfoFor<O>;\n case 'squareStreetz': return SquareStreetzTargetInfoSchema.parse(raw) as TargetInfoFor<O>;\n case 'commission-posting': return CommissionPostingTargetInfoSchema.parse(raw) as TargetInfoFor<O>;\n case 'commission-proposal': return CommissionProposalTargetInfoSchema.parse(raw) as TargetInfoFor<O>;\n case 'audition-prompt': return AuditionPromptTargetInfoSchema.parse(raw) as TargetInfoFor<O>;\n case 'admin-audition-prompt': return AdminAuditionPromptTargetInfoSchema.parse(raw) as TargetInfoFor<O>;\n case 'audition-entry': return AuditionEntryTargetInfoSchema.parse(raw) as TargetInfoFor<O>;\n case 'hallLibrary-cover-square': return HallLibraryCoverSquareTargetInfoSchema.parse(raw) as TargetInfoFor<O>;\n case 'hallLibrary-cover-poster': return HallLibraryCoverPosterTargetInfoSchema.parse(raw) as TargetInfoFor<O>;\n case 'hallLibrary-cover-cinematic': return HallLibraryCoverCinematicTargetInfoSchema.parse(raw) as TargetInfoFor<O>;\n case 'realm-cover': return RealmCoverTargetInfoSchema.parse(raw) as TargetInfoFor<O>;\n case 'chapter-photo': return ChapterPhotoTargetInfoSchema.parse(raw) as TargetInfoFor<O>;\n case 'tune-track-photo': return TuneTrackPhotoTargetInfoSchema.parse(raw) as TargetInfoFor<O>;\n case 'tune-track-audio': return TuneTrackAudioTargetInfoSchema.parse(raw) as TargetInfoFor<O>;\n case 'television-episode-photo': return TelevisionEpisodePhotoTargetInfoSchema.parse(raw) as TargetInfoFor<O>;\n case 'television-episode-video': return TelevisionEpisodeVideoTargetInfoSchema.parse(raw) as TargetInfoFor<O>;\n case 'conversation-file': return ConversationFileTargetInfoSchema.parse(raw) as TargetInfoFor<O>;\n case 'work-asset': return WorkAssetTargetInfoSchema.parse(raw) as TargetInfoFor<O>;\n case 'ncii-evidence': return NciiEvidenceTargetInfoSchema.parse(raw) as TargetInfoFor<O>;\n default: return assertNever(fileOrigin);\n }\n}\n\n\n\n\n"]}
|
package/dist/schemas/admin.d.ts
CHANGED
|
@@ -221,10 +221,10 @@ export declare const GetReportedContentDetailResultSchema: z.ZodObject<{
|
|
|
221
221
|
workProject: "workProject";
|
|
222
222
|
workRealm: "workRealm";
|
|
223
223
|
tale: "tale";
|
|
224
|
-
tune: "tune";
|
|
225
|
-
television: "television";
|
|
226
224
|
chapter: "chapter";
|
|
225
|
+
tune: "tune";
|
|
227
226
|
tuneTrack: "tuneTrack";
|
|
227
|
+
television: "television";
|
|
228
228
|
televisionEpisode: "televisionEpisode";
|
|
229
229
|
}>>>;
|
|
230
230
|
reportTimeSnapshot: z.ZodNullable<z.ZodObject<{
|
package/dist/schemas/atoms.d.ts
CHANGED
|
@@ -62,10 +62,10 @@ export declare const moderationClearableSurfaceSchema: z.ZodEnum<{
|
|
|
62
62
|
workProject: "workProject";
|
|
63
63
|
workRealm: "workRealm";
|
|
64
64
|
tale: "tale";
|
|
65
|
-
tune: "tune";
|
|
66
|
-
television: "television";
|
|
67
65
|
chapter: "chapter";
|
|
66
|
+
tune: "tune";
|
|
68
67
|
tuneTrack: "tuneTrack";
|
|
68
|
+
television: "television";
|
|
69
69
|
televisionEpisode: "televisionEpisode";
|
|
70
70
|
}>;
|
|
71
71
|
export declare const guildInviteConversationStatusSchema: z.ZodEnum<{
|