@ttt-productions/ttt-core 0.14.1 → 0.14.2
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/doc-schemas/commissions.js +1 -1
- package/dist/doc-schemas/commissions.js.map +1 -1
- package/dist/doc-schemas/content.js +1 -1
- package/dist/doc-schemas/content.js.map +1 -1
- package/dist/doc-schemas/firestore-primitives.d.ts +11 -0
- package/dist/doc-schemas/firestore-primitives.d.ts.map +1 -0
- package/dist/doc-schemas/firestore-primitives.js +27 -0
- package/dist/doc-schemas/firestore-primitives.js.map +1 -0
- package/dist/doc-schemas/index.d.ts +2 -0
- package/dist/doc-schemas/index.d.ts.map +1 -1
- package/dist/doc-schemas/index.js +2 -0
- package/dist/doc-schemas/index.js.map +1 -1
- package/dist/doc-schemas/media-activation-jobs.d.ts +120 -0
- package/dist/doc-schemas/media-activation-jobs.d.ts.map +1 -0
- package/dist/doc-schemas/media-activation-jobs.js +53 -0
- package/dist/doc-schemas/media-activation-jobs.js.map +1 -0
- package/dist/doc-schemas/media-assets.d.ts +136 -0
- package/dist/doc-schemas/media-assets.d.ts.map +1 -1
- package/dist/doc-schemas/media-assets.js +76 -0
- package/dist/doc-schemas/media-assets.js.map +1 -1
- package/dist/doc-schemas/moderation.d.ts +7 -0
- package/dist/doc-schemas/moderation.d.ts.map +1 -1
- package/dist/doc-schemas/registry.d.ts +202 -0
- package/dist/doc-schemas/registry.d.ts.map +1 -1
- package/dist/doc-schemas/registry.js +2 -0
- package/dist/doc-schemas/registry.js.map +1 -1
- package/dist/doc-schemas/social.js +5 -5
- package/dist/doc-schemas/social.js.map +1 -1
- package/dist/doc-schemas/user.js +1 -1
- package/dist/doc-schemas/user.js.map +1 -1
- package/dist/media/pending-media.d.ts +112 -0
- package/dist/media/pending-media.d.ts.map +1 -1
- package/dist/paths/collections.d.ts +1 -0
- package/dist/paths/collections.d.ts.map +1 -1
- package/dist/paths/collections.js +1 -0
- package/dist/paths/collections.js.map +1 -1
- package/dist/paths/path-builders.d.ts +1 -0
- package/dist/paths/path-builders.d.ts.map +1 -1
- package/dist/paths/path-builders.js +2 -0
- package/dist/paths/path-builders.js.map +1 -1
- package/package.json +3 -2
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
// Commission + Audition Firestore document SCHEMAS
|
|
1
|
+
// Commission + Audition Firestore document SCHEMAS — commissionListings/{id} and its
|
|
2
2
|
// commissionProposals, auditionBoard/{id} and its auditionEntries, plus the per-user
|
|
3
3
|
// auditionVotes doc. Types inferred via z.infer.
|
|
4
4
|
import { z } from 'zod';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"commissions.js","sourceRoot":"","sources":["../../src/doc-schemas/commissions.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"commissions.js","sourceRoot":"","sources":["../../src/doc-schemas/commissions.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
// Content Firestore document SCHEMAS
|
|
1
|
+
// Content Firestore document SCHEMAS — Tales/Tunes/Television sub-documents, the
|
|
2
2
|
// Threshold + Hall library item shapes, Hall library user preferences, and the
|
|
3
3
|
// `_config` singleton docs (futurePlans, rulesAndAgreements). Types are inferred via
|
|
4
4
|
// z.infer. The enum-key consts (HALL_WING_TYPE_KEYS / WORK_PROJECT_TYPE_KEYS) and the
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"content.js","sourceRoot":"","sources":["../../src/doc-schemas/content.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"content.js","sourceRoot":"","sources":["../../src/doc-schemas/content.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
/** Structural shape of a Firestore Timestamp (both Admin and client SDK). */
|
|
3
|
+
export interface FirestoreTimestampLike {
|
|
4
|
+
seconds: number;
|
|
5
|
+
nanoseconds: number;
|
|
6
|
+
toMillis(): number;
|
|
7
|
+
toDate(): Date;
|
|
8
|
+
}
|
|
9
|
+
/** A Firestore `Timestamp` value (validated structurally, passed through as-is). */
|
|
10
|
+
export declare const FirestoreTimestampSchema: z.ZodCustom<FirestoreTimestampLike, FirestoreTimestampLike>;
|
|
11
|
+
//# sourceMappingURL=firestore-primitives.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"firestore-primitives.d.ts","sourceRoot":"","sources":["../../src/doc-schemas/firestore-primitives.ts"],"names":[],"mappings":"AAcA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,6EAA6E;AAC7E,MAAM,WAAW,sBAAsB;IACrC,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,IAAI,MAAM,CAAC;IACnB,MAAM,IAAI,IAAI,CAAC;CAChB;AAYD,oFAAoF;AACpF,eAAO,MAAM,wBAAwB,6DAEnC,CAAC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
// Shared Firestore value primitives for the durable backend job/queue collections.
|
|
2
|
+
//
|
|
3
|
+
// TTT's app-wide convention stores timestamps as epoch-millis NUMBERS
|
|
4
|
+
// (Date.now()). The exception is the redesign's durable job/ledger collections
|
|
5
|
+
// (mediaActivationJobs, and the chat/notification queues): their time fields are
|
|
6
|
+
// real Firestore `Timestamp`s because Firestore's NATIVE TTL service only honors
|
|
7
|
+
// a Timestamp-typed field — an epoch-millis number is never expired. This is the
|
|
8
|
+
// frozen matrix rule ("All TTL fields are Firestore Timestamp, never epoch-millis").
|
|
9
|
+
//
|
|
10
|
+
// ttt-core is environment-neutral (shared by app + functions), so it must not
|
|
11
|
+
// import firebase-admin/firebase. We model a Timestamp STRUCTURALLY via z.custom,
|
|
12
|
+
// which validates WITHOUT transforming — a real Timestamp instance (Admin or
|
|
13
|
+
// client SDK) passes through unchanged, preserving its methods for downstream use.
|
|
14
|
+
import { z } from 'zod';
|
|
15
|
+
function isFirestoreTimestamp(v) {
|
|
16
|
+
if (typeof v !== 'object' || v === null)
|
|
17
|
+
return false;
|
|
18
|
+
const t = v;
|
|
19
|
+
return (typeof t.seconds === 'number' &&
|
|
20
|
+
typeof t.nanoseconds === 'number' &&
|
|
21
|
+
typeof t.toMillis === 'function');
|
|
22
|
+
}
|
|
23
|
+
/** A Firestore `Timestamp` value (validated structurally, passed through as-is). */
|
|
24
|
+
export const FirestoreTimestampSchema = z.custom(isFirestoreTimestamp, {
|
|
25
|
+
message: 'Expected a Firestore Timestamp',
|
|
26
|
+
});
|
|
27
|
+
//# sourceMappingURL=firestore-primitives.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"firestore-primitives.js","sourceRoot":"","sources":["../../src/doc-schemas/firestore-primitives.ts"],"names":[],"mappings":"AAAA,mFAAmF;AACnF,EAAE;AACF,sEAAsE;AACtE,+EAA+E;AAC/E,iFAAiF;AACjF,iFAAiF;AACjF,iFAAiF;AACjF,qFAAqF;AACrF,EAAE;AACF,8EAA8E;AAC9E,kFAAkF;AAClF,6EAA6E;AAC7E,mFAAmF;AAEnF,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAUxB,SAAS,oBAAoB,CAAC,CAAU;IACtC,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,IAAI;QAAE,OAAO,KAAK,CAAC;IACtD,MAAM,CAAC,GAAG,CAA4B,CAAC;IACvC,OAAO,CACL,OAAO,CAAC,CAAC,OAAO,KAAK,QAAQ;QAC7B,OAAO,CAAC,CAAC,WAAW,KAAK,QAAQ;QACjC,OAAO,CAAC,CAAC,QAAQ,KAAK,UAAU,CACjC,CAAC;AACJ,CAAC;AAED,oFAAoF;AACpF,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,CAAC,MAAM,CAAyB,oBAAoB,EAAE;IAC7F,OAAO,EAAE,gCAAgC;CAC1C,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/doc-schemas/index.ts"],"names":[],"mappings":"AAMA,cAAc,WAAW,CAAC;AAC1B,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC;AAClC,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC;AACjC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AACjC,cAAc,YAAY,CAAC;AAC3B,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,eAAe,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/doc-schemas/index.ts"],"names":[],"mappings":"AAMA,cAAc,WAAW,CAAC;AAC1B,cAAc,2BAA2B,CAAC;AAC1C,cAAc,mBAAmB,CAAC;AAClC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC;AAClC,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC;AACjC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AACjC,cAAc,YAAY,CAAC;AAC3B,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,eAAe,CAAC"}
|
|
@@ -4,7 +4,9 @@
|
|
|
4
4
|
// drift-check (ttt-prod). Document TYPES are inferred from these schemas and surface on
|
|
5
5
|
// the main barrel via ../types/*; this subpath is the home of the runtime schemas.
|
|
6
6
|
export * from './user.js';
|
|
7
|
+
export * from './firestore-primitives.js';
|
|
7
8
|
export * from './media-assets.js';
|
|
9
|
+
export * from './media-activation-jobs.js';
|
|
8
10
|
export * from './publicUser.js';
|
|
9
11
|
export * from './work-project.js';
|
|
10
12
|
export * from './content.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/doc-schemas/index.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,sFAAsF;AACtF,sFAAsF;AACtF,wFAAwF;AACxF,mFAAmF;AAEnF,cAAc,WAAW,CAAC;AAC1B,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC;AAClC,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC;AACjC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AACjC,cAAc,YAAY,CAAC;AAC3B,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,eAAe,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/doc-schemas/index.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,sFAAsF;AACtF,sFAAsF;AACtF,wFAAwF;AACxF,mFAAmF;AAEnF,cAAc,WAAW,CAAC;AAC1B,cAAc,2BAA2B,CAAC;AAC1C,cAAc,mBAAmB,CAAC;AAClC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC;AAClC,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC;AACjC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AACjC,cAAc,YAAY,CAAC;AAC3B,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,eAAe,CAAC"}
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
export declare const MediaActivationJobStatusSchema: z.ZodEnum<{
|
|
3
|
+
pending: "pending";
|
|
4
|
+
complete: "complete";
|
|
5
|
+
deadLetter: "deadLetter";
|
|
6
|
+
authorityApplied: "authorityApplied";
|
|
7
|
+
}>;
|
|
8
|
+
export type MediaActivationJobStatus = z.infer<typeof MediaActivationJobStatusSchema>;
|
|
9
|
+
export declare const MediaActivationJobSchema: z.ZodObject<{
|
|
10
|
+
jobId: z.ZodString;
|
|
11
|
+
schemaVersion: z.ZodNumber;
|
|
12
|
+
assetId: z.ZodString;
|
|
13
|
+
pendingMediaId: z.ZodString;
|
|
14
|
+
fileOrigin: z.ZodEnum<{
|
|
15
|
+
"profile-picture": "profile-picture";
|
|
16
|
+
"craft-skill-media": "craft-skill-media";
|
|
17
|
+
squareStreetz: "squareStreetz";
|
|
18
|
+
"commission-posting": "commission-posting";
|
|
19
|
+
"commission-proposal": "commission-proposal";
|
|
20
|
+
"audition-prompt": "audition-prompt";
|
|
21
|
+
"audition-entry": "audition-entry";
|
|
22
|
+
"admin-audition-prompt": "admin-audition-prompt";
|
|
23
|
+
"hallLibrary-cover-square": "hallLibrary-cover-square";
|
|
24
|
+
"hallLibrary-cover-poster": "hallLibrary-cover-poster";
|
|
25
|
+
"hallLibrary-cover-cinematic": "hallLibrary-cover-cinematic";
|
|
26
|
+
"chapter-photo": "chapter-photo";
|
|
27
|
+
"tune-track-photo": "tune-track-photo";
|
|
28
|
+
"tune-track-audio": "tune-track-audio";
|
|
29
|
+
"television-episode-photo": "television-episode-photo";
|
|
30
|
+
"television-episode-video": "television-episode-video";
|
|
31
|
+
"guild-chat-message-attachment": "guild-chat-message-attachment";
|
|
32
|
+
"work-asset": "work-asset";
|
|
33
|
+
}>;
|
|
34
|
+
authorityVersion: z.ZodNumber;
|
|
35
|
+
payloadHash: z.ZodString;
|
|
36
|
+
authorityPayload: z.ZodObject<{
|
|
37
|
+
schemaVersion: z.ZodNumber;
|
|
38
|
+
assetId: z.ZodString;
|
|
39
|
+
authorityVersion: z.ZodNumber;
|
|
40
|
+
operationId: z.ZodString;
|
|
41
|
+
payloadHash: z.ZodString;
|
|
42
|
+
servingStatus: z.ZodEnum<{
|
|
43
|
+
hidden: "hidden";
|
|
44
|
+
servable: "servable";
|
|
45
|
+
quarantined: "quarantined";
|
|
46
|
+
deleted: "deleted";
|
|
47
|
+
}>;
|
|
48
|
+
accessTier: z.ZodEnum<{
|
|
49
|
+
broad: "broad";
|
|
50
|
+
scoped: "scoped";
|
|
51
|
+
artisan: "artisan";
|
|
52
|
+
adminOnly: "adminOnly";
|
|
53
|
+
}>;
|
|
54
|
+
ownerType: z.ZodEnum<{
|
|
55
|
+
workProject: "workProject";
|
|
56
|
+
audition: "audition";
|
|
57
|
+
craftSkill: "craftSkill";
|
|
58
|
+
hallItem: "hallItem";
|
|
59
|
+
userProfile: "userProfile";
|
|
60
|
+
squareStreetzPost: "squareStreetzPost";
|
|
61
|
+
workContent: "workContent";
|
|
62
|
+
commissionListing: "commissionListing";
|
|
63
|
+
commissionProposal: "commissionProposal";
|
|
64
|
+
auditionEntry: "auditionEntry";
|
|
65
|
+
guildChatAttachment: "guildChatAttachment";
|
|
66
|
+
realmFile: "realmFile";
|
|
67
|
+
}>;
|
|
68
|
+
ownerId: z.ZodString;
|
|
69
|
+
scope: z.ZodNullable<z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
70
|
+
kind: z.ZodLiteral<"guildChannel">;
|
|
71
|
+
workProjectId: z.ZodString;
|
|
72
|
+
guildChatChannelId: z.ZodString;
|
|
73
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
74
|
+
kind: z.ZodLiteral<"guildInvite">;
|
|
75
|
+
guildInviteId: z.ZodString;
|
|
76
|
+
}, z.core.$strict>], "kind">>;
|
|
77
|
+
variants: z.ZodRecord<z.ZodString, z.ZodObject<{
|
|
78
|
+
contentType: z.ZodString;
|
|
79
|
+
sizeBytes: z.ZodNumber;
|
|
80
|
+
width: z.ZodOptional<z.ZodNumber>;
|
|
81
|
+
height: z.ZodOptional<z.ZodNumber>;
|
|
82
|
+
durationSec: z.ZodOptional<z.ZodNumber>;
|
|
83
|
+
}, z.core.$strict>>;
|
|
84
|
+
updatedAtMs: z.ZodNumber;
|
|
85
|
+
}, z.core.$strict>;
|
|
86
|
+
publicationKind: z.ZodEnum<{
|
|
87
|
+
profilePicture: "profilePicture";
|
|
88
|
+
squarePostMedia: "squarePostMedia";
|
|
89
|
+
workAsset: "workAsset";
|
|
90
|
+
hallCover: "hallCover";
|
|
91
|
+
auditionMedia: "auditionMedia";
|
|
92
|
+
commissionListingMedia: "commissionListingMedia";
|
|
93
|
+
commissionProposalMedia: "commissionProposalMedia";
|
|
94
|
+
craftSkillMedia: "craftSkillMedia";
|
|
95
|
+
chatAttachment: "chatAttachment";
|
|
96
|
+
}>;
|
|
97
|
+
publicationArgs: z.ZodUnknown;
|
|
98
|
+
status: z.ZodEnum<{
|
|
99
|
+
pending: "pending";
|
|
100
|
+
complete: "complete";
|
|
101
|
+
deadLetter: "deadLetter";
|
|
102
|
+
authorityApplied: "authorityApplied";
|
|
103
|
+
}>;
|
|
104
|
+
attemptCount: z.ZodNumber;
|
|
105
|
+
nextAttemptAt: z.ZodCustom<import("./firestore-primitives.js").FirestoreTimestampLike, import("./firestore-primitives.js").FirestoreTimestampLike>;
|
|
106
|
+
lastError: z.ZodOptional<z.ZodObject<{
|
|
107
|
+
code: z.ZodString;
|
|
108
|
+
message: z.ZodString;
|
|
109
|
+
retryable: z.ZodOptional<z.ZodBoolean>;
|
|
110
|
+
details: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
111
|
+
at: z.ZodOptional<z.ZodNumber>;
|
|
112
|
+
}, z.core.$strict>>;
|
|
113
|
+
createdAt: z.ZodCustom<import("./firestore-primitives.js").FirestoreTimestampLike, import("./firestore-primitives.js").FirestoreTimestampLike>;
|
|
114
|
+
authorityAppliedAt: z.ZodOptional<z.ZodCustom<import("./firestore-primitives.js").FirestoreTimestampLike, import("./firestore-primitives.js").FirestoreTimestampLike>>;
|
|
115
|
+
completedAt: z.ZodOptional<z.ZodCustom<import("./firestore-primitives.js").FirestoreTimestampLike, import("./firestore-primitives.js").FirestoreTimestampLike>>;
|
|
116
|
+
deadLetteredAt: z.ZodOptional<z.ZodCustom<import("./firestore-primitives.js").FirestoreTimestampLike, import("./firestore-primitives.js").FirestoreTimestampLike>>;
|
|
117
|
+
expireAt: z.ZodOptional<z.ZodCustom<import("./firestore-primitives.js").FirestoreTimestampLike, import("./firestore-primitives.js").FirestoreTimestampLike>>;
|
|
118
|
+
}, z.core.$strict>;
|
|
119
|
+
export type MediaActivationJob = z.infer<typeof MediaActivationJobSchema>;
|
|
120
|
+
//# sourceMappingURL=media-activation-jobs.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"media-activation-jobs.d.ts","sourceRoot":"","sources":["../../src/doc-schemas/media-activation-jobs.ts"],"names":[],"mappings":"AAYA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AASxB,eAAO,MAAM,8BAA8B;;;;;EAKzC,CAAC;AACH,MAAM,MAAM,wBAAwB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,8BAA8B,CAAC,CAAC;AAEtF,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAkC1B,CAAC;AACZ,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAC"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
// mediaActivationJobs/{jobId} — the durable job that drives the three-stage
|
|
2
|
+
// finalize (prepare → activate → publish) and its crash recovery. Created in the
|
|
3
|
+
// SAME private prepare transaction as mediaAssets/{assetId}; attempted
|
|
4
|
+
// immediately and re-driven by a scheduled recovery worker. Server-only
|
|
5
|
+
// (`allow read, write: if false`); NO client access.
|
|
6
|
+
//
|
|
7
|
+
// See MEDIA_AUTHORITY_DO_DESIGN.md §9 (job), §10 (three-stage finalize),
|
|
8
|
+
// §11 (publication adapters), §17 (reconcile).
|
|
9
|
+
//
|
|
10
|
+
// jobId = hash('media-activation', assetId, authorityVersion) (edge-protocol-core
|
|
11
|
+
// canonical hash family; collision-safe per the frozen ID rules).
|
|
12
|
+
import { z } from 'zod';
|
|
13
|
+
import { StructuredErrorSchema } from '@ttt-productions/edge-protocol-core';
|
|
14
|
+
import { FileOriginSchema } from '../media/file-origin.js';
|
|
15
|
+
import { FirestoreTimestampSchema } from './firestore-primitives.js';
|
|
16
|
+
import { MediaPublicationKindSchema, MediaServingAuthorityRecordSchema, } from './media-assets.js';
|
|
17
|
+
export const MediaActivationJobStatusSchema = z.enum([
|
|
18
|
+
'pending', // call the signed activation endpoint, verify the ack, CAS → authorityApplied
|
|
19
|
+
'authorityApplied', // call the typed publication adapter, on success CAS → complete
|
|
20
|
+
'complete', // owner published; TTL eligible
|
|
21
|
+
'deadLetter', // retries exhausted — retained for operator replay; user sees publication-failed
|
|
22
|
+
]);
|
|
23
|
+
export const MediaActivationJobSchema = z
|
|
24
|
+
.object({
|
|
25
|
+
jobId: z.string().min(1),
|
|
26
|
+
schemaVersion: z.number().int().positive(),
|
|
27
|
+
assetId: z.string().min(1),
|
|
28
|
+
pendingMediaId: z.string().min(1),
|
|
29
|
+
fileOrigin: FileOriginSchema,
|
|
30
|
+
// The exact serving record this job activates — the DO must ack this exact
|
|
31
|
+
// version + payloadHash before publication may proceed.
|
|
32
|
+
authorityVersion: z.number().int().nonnegative(),
|
|
33
|
+
payloadHash: z.string().min(1),
|
|
34
|
+
authorityPayload: MediaServingAuthorityRecordSchema,
|
|
35
|
+
// Typed publication adapter. `publicationArgs` is forward-validated by the
|
|
36
|
+
// per-kind adapter registry (§11, built in M2) — NEVER arbitrary Firestore
|
|
37
|
+
// writes; the job carries typed data, not serialized writes.
|
|
38
|
+
publicationKind: MediaPublicationKindSchema,
|
|
39
|
+
publicationArgs: z.unknown(),
|
|
40
|
+
status: MediaActivationJobStatusSchema,
|
|
41
|
+
attemptCount: z.number().int().nonnegative(),
|
|
42
|
+
nextAttemptAt: FirestoreTimestampSchema,
|
|
43
|
+
lastError: StructuredErrorSchema.optional(),
|
|
44
|
+
createdAt: FirestoreTimestampSchema,
|
|
45
|
+
authorityAppliedAt: FirestoreTimestampSchema.optional(),
|
|
46
|
+
completedAt: FirestoreTimestampSchema.optional(),
|
|
47
|
+
deadLetteredAt: FirestoreTimestampSchema.optional(),
|
|
48
|
+
// TTL set ONLY at `complete`; NEVER on pending/authorityApplied/deadLetter.
|
|
49
|
+
// Replay clears terminal/TTL fields (frozen matrix rule).
|
|
50
|
+
expireAt: FirestoreTimestampSchema.optional(),
|
|
51
|
+
})
|
|
52
|
+
.strict();
|
|
53
|
+
//# sourceMappingURL=media-activation-jobs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"media-activation-jobs.js","sourceRoot":"","sources":["../../src/doc-schemas/media-activation-jobs.ts"],"names":[],"mappings":"AAAA,4EAA4E;AAC5E,iFAAiF;AACjF,uEAAuE;AACvE,wEAAwE;AACxE,qDAAqD;AACrD,EAAE;AACF,yEAAyE;AACzE,+CAA+C;AAC/C,EAAE;AACF,mFAAmF;AACnF,kEAAkE;AAElE,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,qBAAqB,EAAE,MAAM,qCAAqC,CAAC;AAC5E,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,wBAAwB,EAAE,MAAM,2BAA2B,CAAC;AACrE,OAAO,EACL,0BAA0B,EAC1B,iCAAiC,GAClC,MAAM,mBAAmB,CAAC;AAE3B,MAAM,CAAC,MAAM,8BAA8B,GAAG,CAAC,CAAC,IAAI,CAAC;IACnD,SAAS,EAAE,8EAA8E;IACzF,kBAAkB,EAAE,gEAAgE;IACpF,UAAU,EAAE,gCAAgC;IAC5C,YAAY,EAAE,iFAAiF;CAChG,CAAC,CAAC;AAGH,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC;KACtC,MAAM,CAAC;IACN,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACxB,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;IAE1C,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC1B,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACjC,UAAU,EAAE,gBAAgB;IAE5B,2EAA2E;IAC3E,wDAAwD;IACxD,gBAAgB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE;IAChD,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC9B,gBAAgB,EAAE,iCAAiC;IAEnD,2EAA2E;IAC3E,2EAA2E;IAC3E,6DAA6D;IAC7D,eAAe,EAAE,0BAA0B;IAC3C,eAAe,EAAE,CAAC,CAAC,OAAO,EAAE;IAE5B,MAAM,EAAE,8BAA8B;IACtC,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE;IAC5C,aAAa,EAAE,wBAAwB;IACvC,SAAS,EAAE,qBAAqB,CAAC,QAAQ,EAAE;IAE3C,SAAS,EAAE,wBAAwB;IACnC,kBAAkB,EAAE,wBAAwB,CAAC,QAAQ,EAAE;IACvD,WAAW,EAAE,wBAAwB,CAAC,QAAQ,EAAE;IAChD,cAAc,EAAE,wBAAwB,CAAC,QAAQ,EAAE;IACnD,4EAA4E;IAC5E,0DAA0D;IAC1D,QAAQ,EAAE,wBAAwB,CAAC,QAAQ,EAAE;CAC9C,CAAC;KACD,MAAM,EAAE,CAAC"}
|
|
@@ -56,6 +56,113 @@ export declare const RealmPromotionStatusSchema: z.ZodEnum<{
|
|
|
56
56
|
promoted: "promoted";
|
|
57
57
|
}>;
|
|
58
58
|
export type RealmPromotionStatus = z.infer<typeof RealmPromotionStatusSchema>;
|
|
59
|
+
/** Whether the canonical serving record has been applied to the DO authority. */
|
|
60
|
+
export declare const MediaAuthoritySyncStateSchema: z.ZodEnum<{
|
|
61
|
+
pending: "pending";
|
|
62
|
+
applied: "applied";
|
|
63
|
+
deadLetter: "deadLetter";
|
|
64
|
+
}>;
|
|
65
|
+
export type MediaAuthoritySyncState = z.infer<typeof MediaAuthoritySyncStateSchema>;
|
|
66
|
+
/** Whether the asset is referenced by a visible owner doc. Orthogonal to the
|
|
67
|
+
* upload's processing outcome (`pendingMedia.status`) and to `servingStatus`. */
|
|
68
|
+
export declare const MediaAssetPublicationStateSchema: z.ZodEnum<{
|
|
69
|
+
unpublished: "unpublished";
|
|
70
|
+
published: "published";
|
|
71
|
+
retired: "retired";
|
|
72
|
+
}>;
|
|
73
|
+
export type MediaAssetPublicationState = z.infer<typeof MediaAssetPublicationStateSchema>;
|
|
74
|
+
/**
|
|
75
|
+
* Typed immutable serving scope for scoped-tier assets. Guild-chat attachments
|
|
76
|
+
* carry an EXACT channel/invite scope — NEVER a bare matchable `workProjectId`
|
|
77
|
+
* (a whole-Work `{w}` grant must not match a restricted channel's attachment).
|
|
78
|
+
* Frozen in chat-realtime-system.md Contract E ("Chat attachment authorization").
|
|
79
|
+
* `null` scope = no scope match required beyond the access tier (e.g. broad).
|
|
80
|
+
*/
|
|
81
|
+
export declare const MediaServingScopeSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
82
|
+
kind: z.ZodLiteral<"guildChannel">;
|
|
83
|
+
workProjectId: z.ZodString;
|
|
84
|
+
guildChatChannelId: z.ZodString;
|
|
85
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
86
|
+
kind: z.ZodLiteral<"guildInvite">;
|
|
87
|
+
guildInviteId: z.ZodString;
|
|
88
|
+
}, z.core.$strict>], "kind">;
|
|
89
|
+
export type MediaServingScope = z.infer<typeof MediaServingScopeSchema>;
|
|
90
|
+
/**
|
|
91
|
+
* The typed owner adapter a publication goes through (§11). The activation job
|
|
92
|
+
* carries this kind; a server-side registry validates per-kind `publicationArgs`
|
|
93
|
+
* and performs the idempotent owner write. Chat is the non-Firestore-owner
|
|
94
|
+
* adapter (publishes via its durable attachmentFlip ack, not an owner txn).
|
|
95
|
+
*/
|
|
96
|
+
export declare const MediaPublicationKindSchema: z.ZodEnum<{
|
|
97
|
+
profilePicture: "profilePicture";
|
|
98
|
+
squarePostMedia: "squarePostMedia";
|
|
99
|
+
workAsset: "workAsset";
|
|
100
|
+
hallCover: "hallCover";
|
|
101
|
+
auditionMedia: "auditionMedia";
|
|
102
|
+
commissionListingMedia: "commissionListingMedia";
|
|
103
|
+
commissionProposalMedia: "commissionProposalMedia";
|
|
104
|
+
craftSkillMedia: "craftSkillMedia";
|
|
105
|
+
chatAttachment: "chatAttachment";
|
|
106
|
+
}>;
|
|
107
|
+
export type MediaPublicationKind = z.infer<typeof MediaPublicationKindSchema>;
|
|
108
|
+
/**
|
|
109
|
+
* The normalized serving record (§7) — the SAME contract used to generate both
|
|
110
|
+
* the DO authority row and the KV cache payload (one function, so they can't
|
|
111
|
+
* drift). The R2 object key stays deterministic (`mediaAssets/{assetId}/{key}`)
|
|
112
|
+
* and is NOT persisted here. `payloadHash` is computed over the canonical
|
|
113
|
+
* payload EXCLUDING the hash itself (see edge-protocol-core `hashPayload`).
|
|
114
|
+
*/
|
|
115
|
+
export declare const MediaServingAuthorityRecordSchema: z.ZodObject<{
|
|
116
|
+
schemaVersion: z.ZodNumber;
|
|
117
|
+
assetId: z.ZodString;
|
|
118
|
+
authorityVersion: z.ZodNumber;
|
|
119
|
+
operationId: z.ZodString;
|
|
120
|
+
payloadHash: z.ZodString;
|
|
121
|
+
servingStatus: z.ZodEnum<{
|
|
122
|
+
hidden: "hidden";
|
|
123
|
+
servable: "servable";
|
|
124
|
+
quarantined: "quarantined";
|
|
125
|
+
deleted: "deleted";
|
|
126
|
+
}>;
|
|
127
|
+
accessTier: z.ZodEnum<{
|
|
128
|
+
broad: "broad";
|
|
129
|
+
scoped: "scoped";
|
|
130
|
+
artisan: "artisan";
|
|
131
|
+
adminOnly: "adminOnly";
|
|
132
|
+
}>;
|
|
133
|
+
ownerType: z.ZodEnum<{
|
|
134
|
+
workProject: "workProject";
|
|
135
|
+
audition: "audition";
|
|
136
|
+
craftSkill: "craftSkill";
|
|
137
|
+
hallItem: "hallItem";
|
|
138
|
+
userProfile: "userProfile";
|
|
139
|
+
squareStreetzPost: "squareStreetzPost";
|
|
140
|
+
workContent: "workContent";
|
|
141
|
+
commissionListing: "commissionListing";
|
|
142
|
+
commissionProposal: "commissionProposal";
|
|
143
|
+
auditionEntry: "auditionEntry";
|
|
144
|
+
guildChatAttachment: "guildChatAttachment";
|
|
145
|
+
realmFile: "realmFile";
|
|
146
|
+
}>;
|
|
147
|
+
ownerId: z.ZodString;
|
|
148
|
+
scope: z.ZodNullable<z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
149
|
+
kind: z.ZodLiteral<"guildChannel">;
|
|
150
|
+
workProjectId: z.ZodString;
|
|
151
|
+
guildChatChannelId: z.ZodString;
|
|
152
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
153
|
+
kind: z.ZodLiteral<"guildInvite">;
|
|
154
|
+
guildInviteId: z.ZodString;
|
|
155
|
+
}, z.core.$strict>], "kind">>;
|
|
156
|
+
variants: z.ZodRecord<z.ZodString, z.ZodObject<{
|
|
157
|
+
contentType: z.ZodString;
|
|
158
|
+
sizeBytes: z.ZodNumber;
|
|
159
|
+
width: z.ZodOptional<z.ZodNumber>;
|
|
160
|
+
height: z.ZodOptional<z.ZodNumber>;
|
|
161
|
+
durationSec: z.ZodOptional<z.ZodNumber>;
|
|
162
|
+
}, z.core.$strict>>;
|
|
163
|
+
updatedAtMs: z.ZodNumber;
|
|
164
|
+
}, z.core.$strict>;
|
|
165
|
+
export type MediaServingAuthorityRecord = z.infer<typeof MediaServingAuthorityRecordSchema>;
|
|
59
166
|
export declare const MediaAssetSchema: z.ZodObject<{
|
|
60
167
|
mediaAssetId: z.ZodString;
|
|
61
168
|
mediaKind: z.ZodEnum<{
|
|
@@ -141,6 +248,35 @@ export declare const MediaAssetSchema: z.ZodObject<{
|
|
|
141
248
|
realmPromotionNote: z.ZodOptional<z.ZodString>;
|
|
142
249
|
realmPromotionRequestedByUid: z.ZodOptional<z.ZodString>;
|
|
143
250
|
realmPromotionRequestedAt: z.ZodOptional<z.ZodNumber>;
|
|
251
|
+
authorityVersion: z.ZodOptional<z.ZodNumber>;
|
|
252
|
+
authorityPayloadHash: z.ZodOptional<z.ZodString>;
|
|
253
|
+
authoritySyncState: z.ZodOptional<z.ZodEnum<{
|
|
254
|
+
pending: "pending";
|
|
255
|
+
applied: "applied";
|
|
256
|
+
deadLetter: "deadLetter";
|
|
257
|
+
}>>;
|
|
258
|
+
publicationState: z.ZodOptional<z.ZodEnum<{
|
|
259
|
+
unpublished: "unpublished";
|
|
260
|
+
published: "published";
|
|
261
|
+
retired: "retired";
|
|
262
|
+
}>>;
|
|
263
|
+
scope: z.ZodOptional<z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
264
|
+
kind: z.ZodLiteral<"guildChannel">;
|
|
265
|
+
workProjectId: z.ZodString;
|
|
266
|
+
guildChatChannelId: z.ZodString;
|
|
267
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
268
|
+
kind: z.ZodLiteral<"guildInvite">;
|
|
269
|
+
guildInviteId: z.ZodString;
|
|
270
|
+
}, z.core.$strict>], "kind">>;
|
|
271
|
+
authorityAppliedAt: z.ZodOptional<z.ZodNumber>;
|
|
272
|
+
publishedAt: z.ZodOptional<z.ZodNumber>;
|
|
273
|
+
lastAuthorityError: z.ZodOptional<z.ZodObject<{
|
|
274
|
+
code: z.ZodString;
|
|
275
|
+
message: z.ZodString;
|
|
276
|
+
retryable: z.ZodOptional<z.ZodBoolean>;
|
|
277
|
+
details: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
278
|
+
at: z.ZodOptional<z.ZodNumber>;
|
|
279
|
+
}, z.core.$strict>>;
|
|
144
280
|
createdAt: z.ZodNumber;
|
|
145
281
|
updatedAt: z.ZodNumber;
|
|
146
282
|
}, z.core.$strict>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"media-assets.d.ts","sourceRoot":"","sources":["../../src/doc-schemas/media-assets.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"media-assets.d.ts","sourceRoot":"","sources":["../../src/doc-schemas/media-assets.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,6DAA6D;AAC7D,eAAO,MAAM,qBAAqB;;;;;EAAsD,CAAC;AACzF,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAEpE;4DAC4D;AAC5D,eAAO,MAAM,wBAAwB;;;;;EAA2D,CAAC;AACjG,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAC;AAE1E;;uCAEuC;AACvC,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;EAapC,CAAC;AACH,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,yBAAyB,CAAC,CAAC;AAE5E,eAAO,MAAM,uBAAuB;;;;;;kBAMzB,CAAC;AACZ,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC;AAExE,eAAO,MAAM,0BAA0B;;;;EAIrC,CAAC;AACH,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,0BAA0B,CAAC,CAAC;AAE9E,eAAO,MAAM,0BAA0B;;;;;;EAErC,CAAC;AACH,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,0BAA0B,CAAC,CAAC;AAK9E,iFAAiF;AACjF,eAAO,MAAM,6BAA6B;;;;EAA+C,CAAC;AAC1F,MAAM,MAAM,uBAAuB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,6BAA6B,CAAC,CAAC;AAEpF;iFACiF;AACjF,eAAO,MAAM,gCAAgC;;;;EAAkD,CAAC;AAChG,MAAM,MAAM,0BAA0B,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gCAAgC,CAAC,CAAC;AAE1F;;;;;;GAMG;AACH,eAAO,MAAM,uBAAuB;;;;;;;4BAUlC,CAAC;AACH,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC;AAExE;;;;;GAKG;AACH,eAAO,MAAM,0BAA0B;;;;;;;;;;EAUrC,CAAC;AACH,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,0BAA0B,CAAC,CAAC;AAE9E;;;;;;GAMG;AACH,eAAO,MAAM,iCAAiC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAiBnC,CAAC;AACZ,MAAM,MAAM,2BAA2B,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iCAAiC,CAAC,CAAC;AAE5F,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAgDlB,CAAC;AACZ,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC"}
|
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
// truth the edge records derive from. NO client reads, NO client writes.
|
|
6
6
|
// See ttt-prod docs/design/media-assets-and-protected-serving.md.
|
|
7
7
|
import { z } from 'zod';
|
|
8
|
+
import { StructuredErrorSchema } from '@ttt-productions/edge-protocol-core';
|
|
8
9
|
import { FileOriginSchema } from '../media/file-origin.js';
|
|
9
10
|
/** Who may be served the bytes (the Worker's tier check). */
|
|
10
11
|
export const MediaAccessTierSchema = z.enum(['broad', 'scoped', 'artisan', 'adminOnly']);
|
|
@@ -43,6 +44,69 @@ export const MediaRetentionPolicySchema = z.enum([
|
|
|
43
44
|
export const RealmPromotionStatusSchema = z.enum([
|
|
44
45
|
'none', 'candidate', 'pendingReview', 'promoted', 'rejected',
|
|
45
46
|
]);
|
|
47
|
+
// ===== Serving authority (Durable Object) + publication gating =====
|
|
48
|
+
// See MEDIA_AUTHORITY_DO_DESIGN.md §6–§9/§13 and media-assets-and-protected-serving.md.
|
|
49
|
+
/** Whether the canonical serving record has been applied to the DO authority. */
|
|
50
|
+
export const MediaAuthoritySyncStateSchema = z.enum(['pending', 'applied', 'deadLetter']);
|
|
51
|
+
/** Whether the asset is referenced by a visible owner doc. Orthogonal to the
|
|
52
|
+
* upload's processing outcome (`pendingMedia.status`) and to `servingStatus`. */
|
|
53
|
+
export const MediaAssetPublicationStateSchema = z.enum(['unpublished', 'published', 'retired']);
|
|
54
|
+
/**
|
|
55
|
+
* Typed immutable serving scope for scoped-tier assets. Guild-chat attachments
|
|
56
|
+
* carry an EXACT channel/invite scope — NEVER a bare matchable `workProjectId`
|
|
57
|
+
* (a whole-Work `{w}` grant must not match a restricted channel's attachment).
|
|
58
|
+
* Frozen in chat-realtime-system.md Contract E ("Chat attachment authorization").
|
|
59
|
+
* `null` scope = no scope match required beyond the access tier (e.g. broad).
|
|
60
|
+
*/
|
|
61
|
+
export const MediaServingScopeSchema = z.discriminatedUnion('kind', [
|
|
62
|
+
z.object({
|
|
63
|
+
kind: z.literal('guildChannel'),
|
|
64
|
+
workProjectId: z.string().min(1),
|
|
65
|
+
guildChatChannelId: z.string().min(1),
|
|
66
|
+
}).strict(),
|
|
67
|
+
z.object({
|
|
68
|
+
kind: z.literal('guildInvite'),
|
|
69
|
+
guildInviteId: z.string().min(1),
|
|
70
|
+
}).strict(),
|
|
71
|
+
]);
|
|
72
|
+
/**
|
|
73
|
+
* The typed owner adapter a publication goes through (§11). The activation job
|
|
74
|
+
* carries this kind; a server-side registry validates per-kind `publicationArgs`
|
|
75
|
+
* and performs the idempotent owner write. Chat is the non-Firestore-owner
|
|
76
|
+
* adapter (publishes via its durable attachmentFlip ack, not an owner txn).
|
|
77
|
+
*/
|
|
78
|
+
export const MediaPublicationKindSchema = z.enum([
|
|
79
|
+
'profilePicture',
|
|
80
|
+
'squarePostMedia',
|
|
81
|
+
'workAsset',
|
|
82
|
+
'hallCover',
|
|
83
|
+
'auditionMedia',
|
|
84
|
+
'commissionListingMedia',
|
|
85
|
+
'commissionProposalMedia',
|
|
86
|
+
'craftSkillMedia',
|
|
87
|
+
'chatAttachment',
|
|
88
|
+
]);
|
|
89
|
+
/**
|
|
90
|
+
* The normalized serving record (§7) — the SAME contract used to generate both
|
|
91
|
+
* the DO authority row and the KV cache payload (one function, so they can't
|
|
92
|
+
* drift). The R2 object key stays deterministic (`mediaAssets/{assetId}/{key}`)
|
|
93
|
+
* and is NOT persisted here. `payloadHash` is computed over the canonical
|
|
94
|
+
* payload EXCLUDING the hash itself (see edge-protocol-core `hashPayload`).
|
|
95
|
+
*/
|
|
96
|
+
export const MediaServingAuthorityRecordSchema = z.object({
|
|
97
|
+
schemaVersion: z.number().int().positive(),
|
|
98
|
+
assetId: z.string().min(1),
|
|
99
|
+
authorityVersion: z.number().int().nonnegative(),
|
|
100
|
+
operationId: z.string().min(1),
|
|
101
|
+
payloadHash: z.string().min(1),
|
|
102
|
+
servingStatus: MediaServingStatusSchema,
|
|
103
|
+
accessTier: MediaAccessTierSchema,
|
|
104
|
+
ownerType: MediaAssetOwnerTypeSchema,
|
|
105
|
+
ownerId: z.string().min(1),
|
|
106
|
+
scope: MediaServingScopeSchema.nullable(),
|
|
107
|
+
variants: z.record(z.string(), MediaAssetVariantSchema),
|
|
108
|
+
updatedAtMs: z.number(),
|
|
109
|
+
}).strict();
|
|
46
110
|
export const MediaAssetSchema = z.object({
|
|
47
111
|
mediaAssetId: z.string().min(1),
|
|
48
112
|
mediaKind: z.enum(['image', 'video', 'audio']),
|
|
@@ -70,6 +134,18 @@ export const MediaAssetSchema = z.object({
|
|
|
70
134
|
realmPromotionNote: z.string().max(2000).optional(),
|
|
71
135
|
realmPromotionRequestedByUid: z.string().optional(),
|
|
72
136
|
realmPromotionRequestedAt: z.number().optional(),
|
|
137
|
+
// Serving authority + publication gating (§13). Additive/optional so assets
|
|
138
|
+
// written before the authority build still parse: absent authorityVersion ⇒
|
|
139
|
+
// 0/never-applied, absent publicationState ⇒ 'unpublished'. Every
|
|
140
|
+
// serving-record mutation increments authorityVersion in an authoritative txn.
|
|
141
|
+
authorityVersion: z.number().int().nonnegative().optional(),
|
|
142
|
+
authorityPayloadHash: z.string().optional(),
|
|
143
|
+
authoritySyncState: MediaAuthoritySyncStateSchema.optional(),
|
|
144
|
+
publicationState: MediaAssetPublicationStateSchema.optional(),
|
|
145
|
+
scope: MediaServingScopeSchema.optional(),
|
|
146
|
+
authorityAppliedAt: z.number().optional(),
|
|
147
|
+
publishedAt: z.number().optional(),
|
|
148
|
+
lastAuthorityError: StructuredErrorSchema.optional(),
|
|
73
149
|
createdAt: z.number(),
|
|
74
150
|
updatedAt: z.number(),
|
|
75
151
|
}).strict();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"media-assets.js","sourceRoot":"","sources":["../../src/doc-schemas/media-assets.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"media-assets.js","sourceRoot":"","sources":["../../src/doc-schemas/media-assets.ts"],"names":[],"mappings":"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"}
|
|
@@ -58,6 +58,13 @@ export declare const ContentViolationSchema: z.ZodObject<{
|
|
|
58
58
|
surface: z.ZodString;
|
|
59
59
|
targetIds: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
60
60
|
}, z.core.$strict>>;
|
|
61
|
+
publicationState: z.ZodOptional<z.ZodOptional<z.ZodEnum<{
|
|
62
|
+
notStarted: "notStarted";
|
|
63
|
+
activating: "activating";
|
|
64
|
+
publishing: "publishing";
|
|
65
|
+
live: "live";
|
|
66
|
+
publicationFailed: "publicationFailed";
|
|
67
|
+
}>>>;
|
|
61
68
|
createdAt: z.ZodOptional<z.ZodNumber>;
|
|
62
69
|
updatedAt: z.ZodOptional<z.ZodNumber>;
|
|
63
70
|
processingStartedAt: z.ZodOptional<z.ZodOptional<z.ZodNumber>>;
|