@ttt-productions/ttt-core 0.79.3 → 0.79.4
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/schemas/admin-dispatch-actions.d.ts +6 -3
- package/dist/schemas/admin-dispatch-actions.d.ts.map +1 -1
- package/dist/schemas/admin-dispatch-actions.js +15 -4
- package/dist/schemas/admin-dispatch-actions.js.map +1 -1
- package/dist/types/content.d.ts +0 -1
- package/dist/types/content.d.ts.map +1 -1
- package/dist/types/content.js.map +1 -1
- package/package.json +1 -1
|
@@ -14,15 +14,18 @@ export declare const UpdateAdminDispatchStatusInputSchema: z.ZodObject<{
|
|
|
14
14
|
}>;
|
|
15
15
|
}, z.core.$strict>;
|
|
16
16
|
export type UpdateAdminDispatchStatusInput = z.infer<typeof UpdateAdminDispatchStatusInputSchema>;
|
|
17
|
-
export declare const UpdateInviteConfirmationInputSchema: z.ZodObject<{
|
|
17
|
+
export declare const UpdateInviteConfirmationInputSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
18
|
+
guildInviteId: z.ZodString;
|
|
19
|
+
action: z.ZodLiteral<"agree">;
|
|
20
|
+
expectedStakeShares: z.ZodNumber;
|
|
21
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
18
22
|
guildInviteId: z.ZodString;
|
|
19
23
|
action: z.ZodEnum<{
|
|
20
|
-
agree: "agree";
|
|
21
24
|
decline: "decline";
|
|
22
25
|
cancel: "cancel";
|
|
23
26
|
retract: "retract";
|
|
24
27
|
}>;
|
|
25
|
-
}, z.core.$strict>;
|
|
28
|
+
}, z.core.$strict>], "action">;
|
|
26
29
|
export type UpdateInviteConfirmationInput = z.infer<typeof UpdateInviteConfirmationInputSchema>;
|
|
27
30
|
export declare const UpdateGuildInviteStakeSharesInputSchema: z.ZodObject<{
|
|
28
31
|
guildInviteId: z.ZodString;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"admin-dispatch-actions.d.ts","sourceRoot":"","sources":["../../src/schemas/admin-dispatch-actions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB;8DAC8D;AAC9D,eAAO,MAAM,8BAA8B;;;EAAmD,CAAC;AAC/F,MAAM,MAAM,wBAAwB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,8BAA8B,CAAC,CAAC;AAItF,eAAO,MAAM,oCAAoC;;;;;;kBAGtC,CAAC;AACZ,MAAM,MAAM,8BAA8B,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oCAAoC,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"admin-dispatch-actions.d.ts","sourceRoot":"","sources":["../../src/schemas/admin-dispatch-actions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB;8DAC8D;AAC9D,eAAO,MAAM,8BAA8B;;;EAAmD,CAAC;AAC/F,MAAM,MAAM,wBAAwB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,8BAA8B,CAAC,CAAC;AAItF,eAAO,MAAM,oCAAoC;;;;;;kBAGtC,CAAC;AACZ,MAAM,MAAM,8BAA8B,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oCAAoC,CAAC,CAAC;AAMlG,eAAO,MAAM,mCAAmC;;;;;;;;;;;8BAU9C,CAAC;AACH,MAAM,MAAM,6BAA6B,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mCAAmC,CAAC,CAAC;AAEhG,eAAO,MAAM,uCAAuC;;;kBAGzC,CAAC;AACZ,MAAM,MAAM,iCAAiC,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uCAAuC,CAAC,CAAC;AAIxG,eAAO,MAAM,8BAA8B;;iBAEzC,CAAC;AACH,MAAM,MAAM,wBAAwB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,8BAA8B,CAAC,CAAC;AAItF,eAAO,MAAM,qCAAqC;;;;;;;;;iBAUhD,CAAC;AACH,MAAM,MAAM,+BAA+B,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qCAAqC,CAAC,CAAC;AAEpG,eAAO,MAAM,+BAA+B;;;;;iBAQ1C,CAAC;AACH,MAAM,MAAM,yBAAyB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,+BAA+B,CAAC,CAAC"}
|
|
@@ -9,10 +9,21 @@ export const UpdateAdminDispatchStatusInputSchema = z.object({
|
|
|
9
9
|
adminDispatchId: adminDispatchIdSchema,
|
|
10
10
|
newStatus: AdminDispatchCloseStatusSchema,
|
|
11
11
|
}).strict();
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
12
|
+
// The invite conversation is the binding agreement, so consent is pinned to specific terms:
|
|
13
|
+
// an `agree` must carry the stake-share offer the member was shown, and the backend rejects
|
|
14
|
+
// the action inside its transaction when the doc's current offer differs (the member re-agrees
|
|
15
|
+
// against the fresh value). The other actions don't assert terms and carry no pin.
|
|
16
|
+
export const UpdateInviteConfirmationInputSchema = z.discriminatedUnion('action', [
|
|
17
|
+
z.object({
|
|
18
|
+
guildInviteId: guildInviteIdSchema,
|
|
19
|
+
action: z.literal('agree'),
|
|
20
|
+
expectedStakeShares: z.number().int().min(1),
|
|
21
|
+
}).strict(),
|
|
22
|
+
z.object({
|
|
23
|
+
guildInviteId: guildInviteIdSchema,
|
|
24
|
+
action: z.enum(['decline', 'cancel', 'retract']),
|
|
25
|
+
}).strict(),
|
|
26
|
+
]);
|
|
16
27
|
export const UpdateGuildInviteStakeSharesInputSchema = z.object({
|
|
17
28
|
guildInviteId: guildInviteIdSchema,
|
|
18
29
|
newStakeShares: z.number().int().min(1),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"admin-dispatch-actions.js","sourceRoot":"","sources":["../../src/schemas/admin-dispatch-actions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAExE;8DAC8D;AAC9D,MAAM,CAAC,MAAM,8BAA8B,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,iBAAiB,EAAE,mBAAmB,CAAC,CAAC,CAAC;AAG/F,0FAA0F;AAC1F,6FAA6F;AAC7F,MAAM,CAAC,MAAM,oCAAoC,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3D,eAAe,EAAE,qBAAqB;IACtC,SAAS,EAAE,8BAA8B;CAC1C,CAAC,CAAC,MAAM,EAAE,CAAC;AAGZ,MAAM,CAAC,MAAM,mCAAmC,GAAG,CAAC,CAAC,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"admin-dispatch-actions.js","sourceRoot":"","sources":["../../src/schemas/admin-dispatch-actions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAExE;8DAC8D;AAC9D,MAAM,CAAC,MAAM,8BAA8B,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,iBAAiB,EAAE,mBAAmB,CAAC,CAAC,CAAC;AAG/F,0FAA0F;AAC1F,6FAA6F;AAC7F,MAAM,CAAC,MAAM,oCAAoC,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3D,eAAe,EAAE,qBAAqB;IACtC,SAAS,EAAE,8BAA8B;CAC1C,CAAC,CAAC,MAAM,EAAE,CAAC;AAGZ,4FAA4F;AAC5F,4FAA4F;AAC5F,+FAA+F;AAC/F,mFAAmF;AACnF,MAAM,CAAC,MAAM,mCAAmC,GAAG,CAAC,CAAC,kBAAkB,CAAC,QAAQ,EAAE;IAChF,CAAC,CAAC,MAAM,CAAC;QACP,aAAa,EAAE,mBAAmB;QAClC,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC;QAC1B,mBAAmB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;KAC7C,CAAC,CAAC,MAAM,EAAE;IACX,CAAC,CAAC,MAAM,CAAC;QACP,aAAa,EAAE,mBAAmB;QAClC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;KACjD,CAAC,CAAC,MAAM,EAAE;CACZ,CAAC,CAAC;AAGH,MAAM,CAAC,MAAM,uCAAuC,GAAG,CAAC,CAAC,MAAM,CAAC;IAC9D,aAAa,EAAE,mBAAmB;IAClC,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;CACxC,CAAC,CAAC,MAAM,EAAE,CAAC;AAGZ,8FAA8F;AAC9F,0DAA0D;AAC1D,MAAM,CAAC,MAAM,8BAA8B,GAAG,CAAC,CAAC,MAAM,CAAC;IACrD,eAAe,EAAE,qBAAqB;CACvC,CAAC,CAAC;AAGH,8EAA8E;AAE9E,MAAM,CAAC,MAAM,qCAAqC,GAAG,CAAC,CAAC,MAAM,CAAC;IAC5D,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC;IACxB,eAAe,EAAE,qBAAqB;IACtC,wCAAwC;IACxC,SAAS,EAAE,8BAA8B;IACzC,uFAAuF;IACvF,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC3B;qGACiG;IACjG,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;CAC3C,CAAC,CAAC;AAGH,MAAM,CAAC,MAAM,+BAA+B,GAAG,CAAC,CAAC,MAAM,CAAC;IACtD,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC;IACxB,eAAe,EAAE,qBAAqB;IACtC,wFAAwF;IACxF,mBAAmB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE;IACnD;qGACiG;IACjG,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;CAC3C,CAAC,CAAC","sourcesContent":["import { z } from 'zod';\nimport { adminDispatchIdSchema, guildInviteIdSchema } from './atoms.js';\n\n/** The two terminal dispatch-thread statuses a close can set (ONE canonical declaration —\n * shared by the close input and its authoritative result). */\nexport const AdminDispatchCloseStatusSchema = z.enum(['closed_resolved', 'closed_unresolved']);\nexport type AdminDispatchCloseStatus = z.infer<typeof AdminDispatchCloseStatusSchema>;\n\n// The close message is composed SERVER-SIDE from the authoritative actor role; the client\n// supplies no message text (a client-supplied value would be a system-message spoof vector).\nexport const UpdateAdminDispatchStatusInputSchema = z.object({\n adminDispatchId: adminDispatchIdSchema,\n newStatus: AdminDispatchCloseStatusSchema,\n}).strict();\nexport type UpdateAdminDispatchStatusInput = z.infer<typeof UpdateAdminDispatchStatusInputSchema>;\n\n// The invite conversation is the binding agreement, so consent is pinned to specific terms:\n// an `agree` must carry the stake-share offer the member was shown, and the backend rejects\n// the action inside its transaction when the doc's current offer differs (the member re-agrees\n// against the fresh value). The other actions don't assert terms and carry no pin.\nexport const UpdateInviteConfirmationInputSchema = z.discriminatedUnion('action', [\n z.object({\n guildInviteId: guildInviteIdSchema,\n action: z.literal('agree'),\n expectedStakeShares: z.number().int().min(1),\n }).strict(),\n z.object({\n guildInviteId: guildInviteIdSchema,\n action: z.enum(['decline', 'cancel', 'retract']),\n }).strict(),\n]);\nexport type UpdateInviteConfirmationInput = z.infer<typeof UpdateInviteConfirmationInputSchema>;\n\nexport const UpdateGuildInviteStakeSharesInputSchema = z.object({\n guildInviteId: guildInviteIdSchema,\n newStakeShares: z.number().int().min(1),\n}).strict();\nexport type UpdateGuildInviteStakeSharesInput = z.infer<typeof UpdateGuildInviteStakeSharesInputSchema>;\n\n// Admin/jr-admin deletes a user's support dispatch thread (`deleteAdminDispatch`). Non-strict\n// posture is carried faithfully from the source callable.\nexport const DeleteAdminDispatchInputSchema = z.object({\n adminDispatchId: adminDispatchIdSchema,\n});\nexport type DeleteAdminDispatchInput = z.infer<typeof DeleteAdminDispatchInputSchema>;\n\n// --- Authoritative mutation RESULTS (non-strict server → client posture) ---\n\nexport const UpdateAdminDispatchStatusResultSchema = z.object({\n success: z.literal(true),\n adminDispatchId: adminDispatchIdSchema,\n /** The thread's status after commit. */\n newStatus: AdminDispatchCloseStatusSchema,\n /** Uid of the closer (the caller) — attribution for the server-composed close line. */\n closedBy: z.string().min(1),\n /** Operation-receipt audit id — the `chat.adminThreadStatusChanged` event written in the same\n * transaction. Optional/additive; the domain id (`adminDispatchId`) is already carried above. */\n auditEventId: z.string().min(1).optional(),\n});\nexport type UpdateAdminDispatchStatusResult = z.infer<typeof UpdateAdminDispatchStatusResultSchema>;\n\nexport const DeleteAdminDispatchResultSchema = z.object({\n success: z.literal(true),\n adminDispatchId: adminDispatchIdSchema,\n /** Conversation messages removed with the thread (counted during the delete itself). */\n deletedMessageCount: z.number().int().nonnegative(),\n /** Operation-receipt audit id — the `admin.dispatchDeleted` event written in the same\n * transaction. Optional/additive; the domain id (`adminDispatchId`) is already carried above. */\n auditEventId: z.string().min(1).optional(),\n});\nexport type DeleteAdminDispatchResult = z.infer<typeof DeleteAdminDispatchResultSchema>;\n\n\n"]}
|
package/dist/types/content.d.ts
CHANGED
|
@@ -12,7 +12,6 @@ export type { ThresholdItem, PublishedHallItem, PublishedTuneTrack, PublishedCha
|
|
|
12
12
|
export type { HallLibraryPreferences, HallLibraryInProgressEntry, HallLibraryRecentlyViewedEntry, HallLibrarySettings, } from '../doc-schemas/content.js';
|
|
13
13
|
export type HallLibrarySortOption = 'newest' | 'oldest' | 'most_followed';
|
|
14
14
|
export type HallLibraryFilters = {
|
|
15
|
-
workGenre?: string;
|
|
16
15
|
hallWingType: HallWingTypeFilter;
|
|
17
16
|
workProjectType: WorkProjectTypeFilter;
|
|
18
17
|
sortBy: HallLibrarySortOption;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"content.d.ts","sourceRoot":"","sources":["../../src/types/content.ts"],"names":[],"mappings":"AAGA,YAAY,EACV,QAAQ,EACR,WAAW,EACX,QAAQ,EACR,aAAa,EACb,cAAc,EACd,qBAAqB,GACtB,MAAM,2BAA2B,CAAC;AAInC,eAAO,MAAM,mBAAmB,4DAA6D,CAAC;AAC9F,MAAM,MAAM,YAAY,GAAG,CAAC,OAAO,mBAAmB,CAAC,CAAC,MAAM,CAAC,CAAC;AAEhE,6FAA6F;AAC7F,MAAM,MAAM,kBAAkB,GAAG,YAAY,GAAG,KAAK,CAAC;AAEtD,eAAO,MAAM,sBAAsB,2CAA4C,CAAC;AAChF,MAAM,MAAM,eAAe,GAAG,CAAC,OAAO,sBAAsB,CAAC,CAAC,MAAM,CAAC,CAAC;AAEtE,gGAAgG;AAChG,MAAM,MAAM,qBAAqB,GAAG,eAAe,GAAG,KAAK,CAAC;AAE5D,YAAY,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAG1D,YAAY,EACV,aAAa,EACb,iBAAiB,EACjB,kBAAkB,EAClB,gBAAgB,EAChB,0BAA0B,EAC1B,wBAAwB,EACxB,sBAAsB,GACvB,MAAM,2BAA2B,CAAC;AAEnC,YAAY,EACV,sBAAsB,EACtB,0BAA0B,EAC1B,8BAA8B,EAC9B,mBAAmB,GACpB,MAAM,2BAA2B,CAAC;AAEnC,MAAM,MAAM,qBAAqB,GAC7B,QAAQ,GACR,QAAQ,GACR,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"content.d.ts","sourceRoot":"","sources":["../../src/types/content.ts"],"names":[],"mappings":"AAGA,YAAY,EACV,QAAQ,EACR,WAAW,EACX,QAAQ,EACR,aAAa,EACb,cAAc,EACd,qBAAqB,GACtB,MAAM,2BAA2B,CAAC;AAInC,eAAO,MAAM,mBAAmB,4DAA6D,CAAC;AAC9F,MAAM,MAAM,YAAY,GAAG,CAAC,OAAO,mBAAmB,CAAC,CAAC,MAAM,CAAC,CAAC;AAEhE,6FAA6F;AAC7F,MAAM,MAAM,kBAAkB,GAAG,YAAY,GAAG,KAAK,CAAC;AAEtD,eAAO,MAAM,sBAAsB,2CAA4C,CAAC;AAChF,MAAM,MAAM,eAAe,GAAG,CAAC,OAAO,sBAAsB,CAAC,CAAC,MAAM,CAAC,CAAC;AAEtE,gGAAgG;AAChG,MAAM,MAAM,qBAAqB,GAAG,eAAe,GAAG,KAAK,CAAC;AAE5D,YAAY,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAG1D,YAAY,EACV,aAAa,EACb,iBAAiB,EACjB,kBAAkB,EAClB,gBAAgB,EAChB,0BAA0B,EAC1B,wBAAwB,EACxB,sBAAsB,GACvB,MAAM,2BAA2B,CAAC;AAEnC,YAAY,EACV,sBAAsB,EACtB,0BAA0B,EAC1B,8BAA8B,EAC9B,mBAAmB,GACpB,MAAM,2BAA2B,CAAC;AAEnC,MAAM,MAAM,qBAAqB,GAC7B,QAAQ,GACR,QAAQ,GACR,eAAe,CAAC;AAMpB,MAAM,MAAM,kBAAkB,GAAG;IAC/B,YAAY,EAAE,kBAAkB,CAAC;IACjC,eAAe,EAAE,qBAAqB,CAAC;IACvC,MAAM,EAAE,qBAAqB,CAAC;CAC/B,CAAC;AAGF,YAAY,EACV,cAAc,EACd,mBAAmB,EACnB,SAAS,EACT,YAAY,EACZ,IAAI,EACJ,iBAAiB,EACjB,kBAAkB,GACnB,MAAM,2BAA2B,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"content.js","sourceRoot":"","sources":["../../src/types/content.ts"],"names":[],"mappings":"AAAA,uDAAuD;AAYvD,4BAA4B;AAE5B,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,eAAe,EAAE,aAAa,EAAE,eAAe,CAAU,CAAC;AAM9F,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,YAAY,CAAU,CAAC","sourcesContent":["// Content types: Tales, Tunes, Television, HallLibrary\n\n// --- WorkProject content sub-docs (shapes in ../doc-schemas/content.ts) ---\nexport type {\n FullTale,\n FullChapter,\n FullTune,\n FullTuneTrack,\n FullTelevision,\n FullTelevisionEpisode,\n} from '../doc-schemas/content.js';\n\n// --- HallLibrary Types ---\n\nexport const HALL_WING_TYPE_KEYS = ['entertainment', 'educational', 'newsPolitical'] as const;\nexport type HallWingType = (typeof HALL_WING_TYPE_KEYS)[number];\n\n/** HallWingType with 'All' filter option — for UI filtering only, not stored in Firestore */\nexport type HallWingTypeFilter = HallWingType | 'All';\n\nexport const WORK_PROJECT_TYPE_KEYS = ['Tales', 'Tunes', 'Television'] as const;\nexport type WorkProjectType = (typeof WORK_PROJECT_TYPE_KEYS)[number];\n\n/** WorkProjectType with 'All' filter option — for UI filtering only, not stored in Firestore */\nexport type WorkProjectTypeFilter = WorkProjectType | 'All';\n\nexport type { ItemsKey } from '../doc-schemas/content.js';\n\n// --- Threshold + Hall library items (shapes in ../doc-schemas/content.ts) ---\nexport type {\n ThresholdItem,\n PublishedHallItem,\n PublishedTuneTrack,\n PublishedChapter,\n PublishedTelevisionEpisode,\n HallContentChangeRequest,\n HallContentTextSurface,\n} from '../doc-schemas/content.js';\n\nexport type {\n HallLibraryPreferences,\n HallLibraryInProgressEntry,\n HallLibraryRecentlyViewedEntry,\n HallLibrarySettings,\n} from '../doc-schemas/content.js';\n\nexport type HallLibrarySortOption =\n | 'newest'\n | 'oldest'\n | 'most_followed';\n\nexport type HallLibraryFilters = {\n
|
|
1
|
+
{"version":3,"file":"content.js","sourceRoot":"","sources":["../../src/types/content.ts"],"names":[],"mappings":"AAAA,uDAAuD;AAYvD,4BAA4B;AAE5B,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,eAAe,EAAE,aAAa,EAAE,eAAe,CAAU,CAAC;AAM9F,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,YAAY,CAAU,CAAC","sourcesContent":["// Content types: Tales, Tunes, Television, HallLibrary\n\n// --- WorkProject content sub-docs (shapes in ../doc-schemas/content.ts) ---\nexport type {\n FullTale,\n FullChapter,\n FullTune,\n FullTuneTrack,\n FullTelevision,\n FullTelevisionEpisode,\n} from '../doc-schemas/content.js';\n\n// --- HallLibrary Types ---\n\nexport const HALL_WING_TYPE_KEYS = ['entertainment', 'educational', 'newsPolitical'] as const;\nexport type HallWingType = (typeof HALL_WING_TYPE_KEYS)[number];\n\n/** HallWingType with 'All' filter option — for UI filtering only, not stored in Firestore */\nexport type HallWingTypeFilter = HallWingType | 'All';\n\nexport const WORK_PROJECT_TYPE_KEYS = ['Tales', 'Tunes', 'Television'] as const;\nexport type WorkProjectType = (typeof WORK_PROJECT_TYPE_KEYS)[number];\n\n/** WorkProjectType with 'All' filter option — for UI filtering only, not stored in Firestore */\nexport type WorkProjectTypeFilter = WorkProjectType | 'All';\n\nexport type { ItemsKey } from '../doc-schemas/content.js';\n\n// --- Threshold + Hall library items (shapes in ../doc-schemas/content.ts) ---\nexport type {\n ThresholdItem,\n PublishedHallItem,\n PublishedTuneTrack,\n PublishedChapter,\n PublishedTelevisionEpisode,\n HallContentChangeRequest,\n HallContentTextSurface,\n} from '../doc-schemas/content.js';\n\nexport type {\n HallLibraryPreferences,\n HallLibraryInProgressEntry,\n HallLibraryRecentlyViewedEntry,\n HallLibrarySettings,\n} from '../doc-schemas/content.js';\n\nexport type HallLibrarySortOption =\n | 'newest'\n | 'oldest'\n | 'most_followed';\n\n// V1 Hall browse filters on the big categories only (medium coins × wing coins). The genre\n// FILTER was removed for launch (DJ, 2026-07-27) — works still TAG per-medium genres at\n// creation and display them, so a browse genre filter can return post-launch once real\n// content data exists (options recorded in ttt-prod docs/post-launch).\nexport type HallLibraryFilters = {\n hallWingType: HallWingTypeFilter;\n workProjectType: WorkProjectTypeFilter;\n sortBy: HallLibrarySortOption;\n};\n\n// --- _config singleton docs (shapes in ../doc-schemas/content.ts) ---\nexport type {\n FuturePlanItem,\n FuturePlansDocument,\n RuleGroup,\n RuleSubgroup,\n Rule,\n AgreementCategory,\n RulesAndAgreements,\n} from '../doc-schemas/content.js';\n\n\n"]}
|