@ttt-productions/ttt-core 0.79.124 → 0.79.125
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/erasure-fates.d.ts +2 -0
- package/dist/doc-schemas/erasure-fates.d.ts.map +1 -1
- package/dist/doc-schemas/erasure-fates.js +2 -0
- package/dist/doc-schemas/erasure-fates.js.map +1 -1
- package/dist/doc-schemas/media-activation-jobs.d.ts +129 -33
- package/dist/doc-schemas/media-activation-jobs.d.ts.map +1 -1
- package/dist/doc-schemas/media-activation-jobs.js +12 -3
- package/dist/doc-schemas/media-activation-jobs.js.map +1 -1
- package/dist/doc-schemas/media-assets.js +1 -1
- package/dist/doc-schemas/media-assets.js.map +1 -1
- package/dist/doc-schemas/messaging.d.ts +129 -8
- package/dist/doc-schemas/messaging.d.ts.map +1 -1
- package/dist/doc-schemas/messaging.js +13 -3
- package/dist/doc-schemas/messaging.js.map +1 -1
- package/dist/doc-schemas/moderation.d.ts +159 -12
- package/dist/doc-schemas/moderation.d.ts.map +1 -1
- package/dist/doc-schemas/moderation.js +22 -28
- package/dist/doc-schemas/moderation.js.map +1 -1
- package/dist/doc-schemas/operational.d.ts +4 -0
- package/dist/doc-schemas/operational.d.ts.map +1 -1
- package/dist/doc-schemas/operational.js +1 -0
- package/dist/doc-schemas/operational.js.map +1 -1
- package/dist/doc-schemas/registry.d.ts +239 -56
- package/dist/doc-schemas/registry.d.ts.map +1 -1
- package/dist/doc-schemas/registry.js +3 -1
- package/dist/doc-schemas/registry.js.map +1 -1
- package/dist/doc-schemas/safety/report.d.ts +1 -1
- package/dist/doc-schemas/safety/report.js +1 -1
- package/dist/doc-schemas/safety/report.js.map +1 -1
- package/dist/doc-schemas/work-project.d.ts +1 -0
- package/dist/doc-schemas/work-project.d.ts.map +1 -1
- package/dist/doc-schemas/work-project.js +1 -0
- package/dist/doc-schemas/work-project.js.map +1 -1
- package/dist/media/hall-library-target-fields.d.ts +1 -0
- package/dist/media/hall-library-target-fields.d.ts.map +1 -1
- package/dist/media/hall-library-target-fields.js +1 -0
- package/dist/media/hall-library-target-fields.js.map +1 -1
- package/dist/media/pending-media.d.ts +6 -6
- package/dist/paths/collections.d.ts +2 -0
- package/dist/paths/collections.d.ts.map +1 -1
- package/dist/paths/collections.js +2 -0
- package/dist/paths/collections.js.map +1 -1
- package/dist/paths/path-builders.d.ts +2 -0
- package/dist/paths/path-builders.d.ts.map +1 -1
- package/dist/paths/path-builders.js +8 -0
- package/dist/paths/path-builders.js.map +1 -1
- package/dist/report/report-config-values.d.ts +2 -1
- package/dist/report/report-config-values.d.ts.map +1 -1
- package/dist/report/report-config-values.js.map +1 -1
- package/dist/schemas/notification.d.ts +1 -0
- package/dist/schemas/notification.d.ts.map +1 -1
- package/dist/schemas/notification.js +1 -1
- package/dist/schemas/notification.js.map +1 -1
- package/dist/schemas/work-project-management.d.ts +1 -0
- package/dist/schemas/work-project-management.d.ts.map +1 -1
- package/package.json +2 -2
|
@@ -22,6 +22,7 @@ export declare const ERASURE_FATES_BY_COLLECTION_PATH: {
|
|
|
22
22
|
readonly 'reservedDisplayNames/{displayNameUppercase}': readonly ["delete"];
|
|
23
23
|
readonly 'accountDeletionRequests/{uid}': readonly ["retain"];
|
|
24
24
|
readonly 'statusReconcileQueue/{uid}': readonly ["delete"];
|
|
25
|
+
readonly 'adminDispatchAppealLocks/{uid}': readonly ["delete"];
|
|
25
26
|
readonly 'ageAttestationNonces/{nonceHash}': readonly ["retain"];
|
|
26
27
|
readonly 'allWorkProjects/{workProjectId}': readonly ["delete", "retain"];
|
|
27
28
|
readonly 'allWorkProjects/{workProjectId}/guildmateUsers/{uid}': readonly ["delete", "retain"];
|
|
@@ -48,6 +49,7 @@ export declare const ERASURE_FATES_BY_COLLECTION_PATH: {
|
|
|
48
49
|
readonly 'hallItems/{hallItemId}/hallItemTunes/{itemId}': readonly ["none"];
|
|
49
50
|
readonly 'hallItems/{hallItemId}/hallItemTelevision/{itemId}': readonly ["none"];
|
|
50
51
|
readonly 'hallContentChangeRequests/{changeRequestId}': readonly ["retain"];
|
|
52
|
+
readonly 'hallContentChangeRequestLocks/{targetKey}': readonly ["none"];
|
|
51
53
|
readonly 'squareStreetzFeed/activePosts/socialPosts/{postId}': readonly ["delete"];
|
|
52
54
|
readonly 'squareStreetzFeed/trendingPosts': readonly ["none"];
|
|
53
55
|
readonly 'followEdges/{followEdgeId}': readonly ["delete"];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"erasure-fates.d.ts","sourceRoot":"","sources":["../../src/doc-schemas/erasure-fates.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,eAAe,CAAC;AAE9D,eAAO,MAAM,aAAa,oDAAqD,CAAC;AAChF,eAAO,MAAM,iBAAiB;;;;;EAAwB,CAAC;AACvD,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAU5D,eAAO,MAAM,gCAAgC
|
|
1
|
+
{"version":3,"file":"erasure-fates.d.ts","sourceRoot":"","sources":["../../src/doc-schemas/erasure-fates.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,eAAe,CAAC;AAE9D,eAAO,MAAM,aAAa,oDAAqD,CAAC;AAChF,eAAO,MAAM,iBAAiB;;;;;EAAwB,CAAC;AACvD,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAU5D,eAAO,MAAM,gCAAgC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAwMkC,CAAC;AAEhF,wBAAgB,8BAA8B,CAAC,IAAI,EAAE,WAAW,GAAG,wBAAwB,EAAE,CAI5F;AAED,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,IAAI,CAAC,aAAa,EAAE,WAAW,GAAG,aAAa,GAAG,QAAQ,CAAC,EACnE,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,WAAW,EAAE,QAAQ,GAAG,WAAW,CAAC,CAI9C"}
|
|
@@ -19,6 +19,7 @@ export const ERASURE_FATES_BY_COLLECTION_PATH = {
|
|
|
19
19
|
'reservedDisplayNames/{displayNameUppercase}': DELETE,
|
|
20
20
|
'accountDeletionRequests/{uid}': RETAIN,
|
|
21
21
|
'statusReconcileQueue/{uid}': DELETE,
|
|
22
|
+
'adminDispatchAppealLocks/{uid}': DELETE,
|
|
22
23
|
'ageAttestationNonces/{nonceHash}': RETAIN,
|
|
23
24
|
'allWorkProjects/{workProjectId}': SOLO_DRAFT_WORK,
|
|
24
25
|
'allWorkProjects/{workProjectId}/guildmateUsers/{uid}': SOLO_DRAFT_WORK,
|
|
@@ -48,6 +49,7 @@ export const ERASURE_FATES_BY_COLLECTION_PATH = {
|
|
|
48
49
|
'hallItems/{hallItemId}/hallItemTunes/{itemId}': NONE,
|
|
49
50
|
'hallItems/{hallItemId}/hallItemTelevision/{itemId}': NONE,
|
|
50
51
|
'hallContentChangeRequests/{changeRequestId}': RETAIN,
|
|
52
|
+
'hallContentChangeRequestLocks/{targetKey}': NONE,
|
|
51
53
|
'squareStreetzFeed/activePosts/socialPosts/{postId}': DELETE,
|
|
52
54
|
'squareStreetzFeed/trendingPosts': NONE,
|
|
53
55
|
'followEdges/{followEdgeId}': DELETE,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"erasure-fates.js","sourceRoot":"","sources":["../../src/doc-schemas/erasure-fates.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,QAAQ,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,CAAU,CAAC;AAChF,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;AAKvD,MAAM,MAAM,GAAG,CAAC,QAAQ,CAAU,CAAC;AACnC,MAAM,SAAS,GAAG,CAAC,WAAW,CAAU,CAAC;AACzC,MAAM,MAAM,GAAG,CAAC,QAAQ,CAAU,CAAC;AACnC,MAAM,IAAI,GAAG,CAAC,MAAM,CAAU,CAAC;AAC/B,MAAM,eAAe,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAU,CAAC;AAEtD,MAAM,CAAC,MAAM,gCAAgC,GAAG;IAC9C,uBAAuB,EAAE,SAAS;IAClC,4CAA4C,EAAE,MAAM;IACpD,0DAA0D,EAAE,MAAM;IAClE,yDAAyD,EAAE,MAAM;IACjE,kDAAkD,EAAE,MAAM;IAC1D,8CAA8C,EAAE,MAAM;IACtD,4DAA4D,EAAE,MAAM;IACpE,yEAAyE,EAAE,MAAM;IACjF,mBAAmB,EAAE,SAAS;IAC9B,6CAA6C,EAAE,MAAM;IACrD,+BAA+B,EAAE,MAAM;IACvC,4BAA4B,EAAE,MAAM;IACpC,kCAAkC,EAAE,MAAM;IAE1C,iCAAiC,EAAE,eAAe;IAClD,sDAAsD,EAAE,eAAe;IACvE,4DAA4D,EAAE,eAAe;IAC7E,oEAAoE,EAAE,eAAe;IACrF,2FAA2F,EACzF,eAAe;IACjB,uEAAuE,EAAE,eAAe;IACxF,2DAA2D,EAAE,eAAe;IAC5E,oFAAoF,EAClF,eAAe;IACjB,2DAA2D,EAAE,eAAe;IAC5E,gFAAgF,EAAE,eAAe;IACjG,sEAAsE,EAAE,eAAe;IACvF,qGAAqG,EACnG,eAAe;IACjB,wEAAwE,EAAE,eAAe;IACzF,oCAAoC,EAAE,eAAe;IACrD,0BAA0B,EAAE,eAAe;IAC3C,4CAA4C,EAAE,eAAe;IAC7D,+DAA+D,EAAE,MAAM;IACvE,0CAA0C,EAAE,MAAM;IAClD,iFAAiF,EAAE;QACjF,QAAQ;QACR,QAAQ;KACT;IACD,kCAAkC,EAAE,eAAe;IACnD,wBAAwB,EAAE,IAAI;IAC9B,+CAA+C,EAAE,IAAI;IACrD,+CAA+C,EAAE,IAAI;IACrD,oDAAoD,EAAE,IAAI;IAC1D,6CAA6C,EAAE,MAAM;IAErD,oDAAoD,EAAE,MAAM;IAC5D,iCAAiC,EAAE,IAAI;IACvC,4BAA4B,EAAE,MAAM;IACpC,kCAAkC,EAAE,MAAM;IAC1C,gCAAgC,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC;IACtD,wDAAwD,EAAE,MAAM;IAEhE,0CAA0C,EAAE,MAAM;IAClD,qFAAqF,EAAE,MAAM;IAC7F,4BAA4B,EAAE,MAAM;IACpC,8DAA8D,EAAE,MAAM;IAEtE,kCAAkC,EAAE,MAAM;IAC1C,6CAA6C,EAAE,MAAM;IACrD,uCAAuC,EAAE,IAAI;IAC7C,sCAAsC,EAAE,MAAM;IAC9C,0CAA0C,EAAE,MAAM;IAClD,6BAA6B,EAAE,IAAI;IACnC,kCAAkC,EAAE,MAAM;IAE1C,2BAA2B,EAAE,CAAC,WAAW,EAAE,QAAQ,CAAC;IACpD,uDAAuD,EAAE,IAAI;IAC7D,mDAAmD,EAAE,MAAM;IAC3D,oDAAoD,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAC1E,8DAA8D,EAAE,MAAM;IACtE,+BAA+B,EAAE,MAAM;IACvC,oEAAoE,EAAE,IAAI;IAC1E,qBAAqB,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAC3C,iCAAiC,EAAE,MAAM;IACzC,wCAAwC,EAAE,MAAM;IAChD,mEAAmE,EAAE,MAAM;IAC3E,uBAAuB,EAAE,MAAM;IAC/B,iCAAiC,EAAE,MAAM;IACzC,0CAA0C,EAAE,CAAC,QAAQ,EAAE,WAAW,CAAC;IACnE,wFAAwF,EAAE;QACxF,QAAQ;QACR,WAAW;KACZ;IACD,iFAAiF,EAAE;QACjF,QAAQ;QACR,QAAQ;KACT;IACD,oEAAoE,EAAE,MAAM;IAC5E,sBAAsB,EAAE,MAAM;IAC9B,mEAAmE,EAAE,SAAS;IAE9E,+BAA+B,EAAE,CAAC,QAAQ,EAAE,WAAW,CAAC;IACxD,sCAAsC,EAAE,CAAC,QAAQ,EAAE,WAAW,CAAC;IAC/D,4BAA4B,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAClD,6BAA6B,EAAE,MAAM;IACrC,+BAA+B,EAAE,IAAI;IAErC,0CAA0C,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAChE,2CAA2C,EAAE,MAAM;IACnD,2CAA2C,EAAE,MAAM;IACnD,uCAAuC,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAC7D,qCAAqC,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAC3D,gCAAgC,EAAE,MAAM;IACxC,oCAAoC,EAAE,MAAM;IAE5C,0CAA0C,EAAE,MAAM;IAClD,8BAA8B,EAAE,MAAM;IACtC,gEAAgE,EAAE,MAAM;IACxE,0BAA0B,EAAE,MAAM;IAClC,4BAA4B,EAAE,MAAM;IACpC,+BAA+B,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC;IACrD,qCAAqC,EAAE,MAAM;IAC7C,sCAAsC,EAAE,MAAM;IAC9C,oEAAoE,EAAE,IAAI;IAC1E,mCAAmC,EAAE,MAAM;IAE3C,iEAAiE,EAAE,MAAM;IACzE,mCAAmC,EAAE,MAAM;IAC3C,oCAAoC,EAAE,MAAM;IAE5C,8BAA8B,EAAE,MAAM;IACtC,iCAAiC,EAAE,MAAM;IACzC,2BAA2B,EAAE,MAAM;IACnC,oDAAoD,EAAE,MAAM;IAC5D,6DAA6D,EAAE,MAAM;IACrE,+FAA+F,EAC7F,MAAM;IACR,yDAAyD,EAAE,MAAM;IACjE,mGAAmG,EACjG,MAAM;IACR,wEAAwE,EAAE,MAAM;IAChF,2DAA2D,EAAE,MAAM;IACnE,yFAAyF,EAAE,MAAM;IACjG,uFAAuF,EAAE,MAAM;IAC/F,kDAAkD,EAAE,MAAM;IAC1D,+DAA+D,EAAE,MAAM;IACvE,iEAAiE,EAAE,MAAM;IACzE,oCAAoC,EAAE,MAAM;IAC5C,4BAA4B,EAAE,MAAM;IACpC,uCAAuC,EAAE,MAAM;IAC/C,uCAAuC,EAAE,MAAM;IAC/C,sEAAsE,EAAE,MAAM;IAC9E,0DAA0D,EAAE,MAAM;IAClE,sCAAsC,EAAE,MAAM;IAC9C,4BAA4B,EAAE,MAAM;IACpC,4DAA4D,EAAE,MAAM;IACpE,sEAAsE,EAAE,MAAM;IAC9E,2BAA2B,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC;IACjD,6BAA6B,EAAE,MAAM;IACrC,qDAAqD,EAAE,MAAM;IAC7D,kCAAkC,EAAE,MAAM;IAC1C,gDAAgD,EAAE,MAAM;IACxD,+BAA+B,EAAE,IAAI;IACrC,+BAA+B,EAAE,IAAI;IACrC,sBAAsB,EAAE,MAAM;IAC9B,wBAAwB,EAAE,IAAI;IAC9B,gCAAgC,EAAE,MAAM;IACxC,gCAAgC,EAAE,MAAM;IACxC,yDAAyD,EAAE,MAAM;IACjE,qEAAqE,EAAE,MAAM;IAC7E,+DAA+D,EAAE,MAAM;IACvE,kGAAkG,EAChG,MAAM;IACR,6DAA6D,EAAE,MAAM;IACrE,2EAA2E,EAAE,MAAM;IACnF,gEAAgE,EAAE,MAAM;IACxE,oBAAoB,EAAE,MAAM;IAC5B,mDAAmD,EAAE,MAAM;IAC3D,6CAA6C,EAAE,MAAM;IACrD,8CAA8C,EAAE,MAAM;IACtD,2CAA2C,EAAE,MAAM;IACnD,4CAA4C,EAAE,MAAM;IACpD,6CAA6C,EAAE,MAAM;IACrD,uCAAuC,EAAE,MAAM;IAC/C,6BAA6B,EAAE,MAAM;IACrC,yBAAyB,EAAE,MAAM;IACjC,4DAA4D,EAAE,MAAM;IAEpE,gBAAgB,EAAE,IAAI;IACtB,wBAAwB,EAAE,IAAI;IAC9B,+BAA+B,EAAE,IAAI;IACrC,2BAA2B,EAAE,IAAI;IACjC,0BAA0B,EAAE,IAAI;IAChC,+BAA+B,EAAE,IAAI;IACrC,uBAAuB,EAAE,IAAI;IAC7B,2BAA2B,EAAE,MAAM;IACnC,uBAAuB,EAAE,IAAI;IAC7B,wBAAwB,EAAE,MAAM;IAChC,wCAAwC,EAAE,IAAI;IAC9C,qDAAqD,EAAE,IAAI;IAC3D,uBAAuB,EAAE,SAAS;IAClC,2BAA2B,EAAE,IAAI;IACjC,+BAA+B,EAAE,IAAI;IACrC,mCAAmC,EAAE,IAAI;IACzC,qBAAqB,EAAE,IAAI;IAC3B,8BAA8B,EAAE,IAAI;CACyC,CAAC;AAEhF,MAAM,UAAU,8BAA8B,CAAC,IAAiB;IAC9D,OAAQ,MAAM,CAAC,IAAI,CAAC,gCAAgC,CAAgC,CAAC,MAAM,CACzF,CAAC,IAAI,EAAE,EAAE,CAAE,gCAAgC,CAAC,IAAI,CAAkB,CAAC,QAAQ,CAAC,IAAI,CAAC,CAClF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,wBAAwB,CACtC,MAAmE,EACnE,SAAiB;IAEjB,OAAO,MAAM,CAAC,SAAS,KAAK,MAAM,IAAI,MAAM,CAAC,WAAW,KAAK,MAAM,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS;QAChG,CAAC,CAAC,QAAQ;QACV,CAAC,CAAC,WAAW,CAAC;AAClB,CAAC","sourcesContent":["import { z } from 'zod';\nimport type { AdminDispatch } from './messaging.js';\nimport type { RegisteredCollectionPath } from './registry.js';\n\nexport const ERASURE_FATES = ['delete', 'anonymize', 'retain', 'none'] as const;\nexport const ErasureFateSchema = z.enum(ERASURE_FATES);\nexport type ErasureFate = z.infer<typeof ErasureFateSchema>;\n\ntype ErasureFates = readonly [ErasureFate, ...ErasureFate[]];\n\nconst DELETE = ['delete'] as const;\nconst ANONYMIZE = ['anonymize'] as const;\nconst RETAIN = ['retain'] as const;\nconst NONE = ['none'] as const;\nconst SOLO_DRAFT_WORK = ['delete', 'retain'] as const;\n\nexport const ERASURE_FATES_BY_COLLECTION_PATH = {\n 'userProfiles/{userId}': ANONYMIZE,\n 'userProfiles/{userId}/privateData/{userId}': DELETE,\n 'userProfiles/{userId}/privateData/hallLibraryPreferences': DELETE,\n 'userProfiles/{userId}/profileCraftSkills/{craftSkillId}': DELETE,\n 'userProfiles/{userId}/auditionVotes/{auditionId}': DELETE,\n 'userProfiles/{userId}/mentionHistory/{docId}': DELETE,\n 'userProfiles/{userId}/notificationHistory/{notificationId}': DELETE,\n 'userProfiles/{userId}/userLikes/likeHistory/squareStreetzLikes/{postId}': DELETE,\n 'publicUsers/{uid}': ANONYMIZE,\n 'reservedDisplayNames/{displayNameUppercase}': DELETE,\n 'accountDeletionRequests/{uid}': RETAIN,\n 'statusReconcileQueue/{uid}': DELETE,\n 'ageAttestationNonces/{nonceHash}': RETAIN,\n\n 'allWorkProjects/{workProjectId}': SOLO_DRAFT_WORK,\n 'allWorkProjects/{workProjectId}/guildmateUsers/{uid}': SOLO_DRAFT_WORK,\n 'allWorkProjects/{workProjectId}/publicGuildmateUsers/{uid}': SOLO_DRAFT_WORK,\n 'allWorkProjects/{workProjectId}/workFileFolders/{workFileFolderId}': SOLO_DRAFT_WORK,\n 'allWorkProjects/{workProjectId}/workFileFolders/{workFileFolderId}/workFiles/{workFileId}':\n SOLO_DRAFT_WORK,\n 'allWorkProjects/{workProjectId}/hallSubmissionReservation/reservation': SOLO_DRAFT_WORK,\n 'allWorkProjects/{workProjectId}/workProjectTales/{taleId}': SOLO_DRAFT_WORK,\n 'allWorkProjects/{workProjectId}/workProjectTales/{taleId}/taleChapters/{chapterId}':\n SOLO_DRAFT_WORK,\n 'allWorkProjects/{workProjectId}/workProjectTunes/{tuneId}': SOLO_DRAFT_WORK,\n 'allWorkProjects/{workProjectId}/workProjectTunes/{tuneId}/tuneTracks/{trackId}': SOLO_DRAFT_WORK,\n 'allWorkProjects/{workProjectId}/workProjectTelevision/{televisionId}': SOLO_DRAFT_WORK,\n 'allWorkProjects/{workProjectId}/workProjectTelevision/{televisionId}/televisionEpisodes/{episodeId}':\n SOLO_DRAFT_WORK,\n 'allWorkProjects/{workProjectId}/guildChatChannels/{guildChatChannelId}': SOLO_DRAFT_WORK,\n 'publicWorkProjects/{workProjectId}': SOLO_DRAFT_WORK,\n 'workRealms/{workRealmId}': SOLO_DRAFT_WORK,\n 'reservedRealmNames/{workingTitleUppercase}': SOLO_DRAFT_WORK,\n 'workRealms/{workRealmId}/realmFileFolders/{realmFileFolderId}': RETAIN,\n 'guildInviteConversations/{guildInviteId}': RETAIN,\n 'guildInviteConversations/{guildInviteId}/conversationFiles/{conversationFileId}': [\n 'delete',\n 'retain',\n ],\n 'thresholdItems/{thresholdItemId}': SOLO_DRAFT_WORK,\n 'hallItems/{hallItemId}': NONE,\n 'hallItems/{hallItemId}/hallItemTales/{itemId}': NONE,\n 'hallItems/{hallItemId}/hallItemTunes/{itemId}': NONE,\n 'hallItems/{hallItemId}/hallItemTelevision/{itemId}': NONE,\n 'hallContentChangeRequests/{changeRequestId}': RETAIN,\n\n 'squareStreetzFeed/activePosts/socialPosts/{postId}': DELETE,\n 'squareStreetzFeed/trendingPosts': NONE,\n 'followEdges/{followEdgeId}': DELETE,\n 'followCounters/{followCounterId}': DELETE,\n 'squareAnnouncementJobs/{jobId}': ['delete', 'retain'],\n 'craftSkillsByTag/{tag}/taggedCraftSkills/{compositeId}': DELETE,\n\n 'commissionListings/{commissionListingId}': RETAIN,\n 'commissionListings/{commissionListingId}/commissionProposals/{commissionProposalId}': DELETE,\n 'auditionBoard/{auditionId}': RETAIN,\n 'auditionBoard/{auditionId}/auditionEntries/{auditionEntryId}': DELETE,\n\n 'pledgePayments/{pledgePaymentId}': RETAIN,\n 'pledgePaymentProviderRefs/{pledgePaymentId}': RETAIN,\n 'processedStripeEvents/{stripeEventId}': NONE,\n 'pledgePaymentLedgerEvents/{ledgerId}': RETAIN,\n 'paymentWebhookQuarantine/{stripeEventId}': RETAIN,\n 'pledgePaymentTotals/summary': NONE,\n 'pledgeRefundRequests/{requestId}': RETAIN,\n\n 'contentReports/{reportId}': ['anonymize', 'retain'],\n 'contentReports/{reportId}/publicProjection/{reportId}': NONE,\n 'contentReports/{reportId}/privateDetails/snapshot': RETAIN,\n 'contentReports/{reportId}/privateDetails/narrative': ['delete', 'retain'],\n 'contentReports/{reportId}/privateDetails/narrativeEscalation': RETAIN,\n 'activeReportGroups/{groupKey}': RETAIN,\n 'activeReportGroups/{groupKey}/reportGroupCountedReports/{reportId}': NONE,\n 'adminTasks/{taskId}': ['delete', 'retain'],\n 'contentViolations/{violationId}': DELETE,\n 'moderationCascadeManifests/{cascadeId}': RETAIN,\n 'moderationCascadeManifests/{cascadeId}/changedDocs/{changedDocId}': RETAIN,\n 'auditEvents/{eventId}': RETAIN,\n 'stakeShareAuditEvents/{eventId}': RETAIN,\n 'pendingAdminDispatches/{adminDispatchId}': ['delete', 'anonymize'],\n 'pendingAdminDispatches/{adminDispatchId}/conversationMessages/{adminDispatchMessageId}': [\n 'delete',\n 'anonymize',\n ],\n 'pendingAdminDispatches/{adminDispatchId}/conversationFiles/{conversationFileId}': [\n 'delete',\n 'retain',\n ],\n 'pendingAdminDispatches/{adminDispatchId}/dispatchReadMarkers/{uid}': DELETE,\n 'shortLinks/{shortId}': RETAIN,\n 'feedbackSubmissions/{feedbackType}/userSuggestions/{suggestionId}': ANONYMIZE,\n\n 'pendingMedia/{pendingMediaId}': ['delete', 'anonymize'],\n 'pendingMediaArchive/{pendingMediaId}': ['delete', 'anonymize'],\n 'mediaAssets/{mediaAssetId}': ['delete', 'retain'],\n 'mediaActivationJobs/{jobId}': RETAIN,\n 'mediaCopyIntents/{newAssetId}': NONE,\n\n 'activeUserNotifications/{notificationId}': ['delete', 'retain'],\n 'activeAdminNotifications/{notificationId}': RETAIN,\n 'adminNotificationHistory/{notificationId}': RETAIN,\n 'pendingNotifications/{notificationId}': ['delete', 'retain'],\n 'notificationDeliveries/{deliveryId}': ['delete', 'retain'],\n 'notificationFanoutJobs/{jobId}': RETAIN,\n 'notificationArchiveAllJobs/{jobId}': DELETE,\n\n 'chatChannelAuthProjections/{authPairKey}': DELETE,\n 'chatScopeDegraded/{scopeKey}': RETAIN,\n 'chatScopeDegraded/{scopeKey}/chatScopeDegradedCauses/{causeId}': RETAIN,\n 'chatSyncEvents/{eventId}': RETAIN,\n 'chatSyncFanoutJobs/{jobId}': RETAIN,\n 'chatMessageOutbox/{commandId}': ['delete', 'retain'],\n 'chatAdminActionCommands/{requestId}': RETAIN,\n 'chatHistoryAnonymizationJobs/{jobId}': RETAIN,\n 'chatHistoryAnonymizationJobs/{jobId}/affectedChunks/{chunkOrdinal}': NONE,\n 'chatParkedDeliveries/{deliveryId}': RETAIN,\n\n 'publicDocuments/{documentId}/publicDocumentVersions/{versionId}': RETAIN,\n 'publicDocumentDrafts/{documentId}': RETAIN,\n 'publicDocumentReleases/{releaseId}': RETAIN,\n\n 'childSafetyCaseList/{caseId}': RETAIN,\n 'activeSafetyCaseAlerts/{caseId}': RETAIN,\n 'childSafetyCases/{caseId}': RETAIN,\n 'childSafetyCases/{caseId}/sourceSignals/{signalId}': RETAIN,\n 'childSafetyCases/{caseId}/childSafetyDecisions/{decisionId}': RETAIN,\n 'childSafetyCases/{caseId}/childSafetyDecisions/{decisionId}/childSafetyDecisionViews/{viewId}':\n RETAIN,\n 'childSafetyCases/{caseId}/childSafetyCaseAccounts/{uid}': RETAIN,\n 'childSafetyCases/{caseId}/childSafetyCaseAccounts/{uid}/childSafetyCaseAccountHistory/{historyId}':\n RETAIN,\n 'childSafetyCases/{caseId}/childSafetyCaseCrossoverItems/{mediaAssetId}': RETAIN,\n 'childSafetyCases/{caseId}/ncmecSubmissions/{submissionId}': RETAIN,\n 'childSafetyCases/{caseId}/ncmecSubmissions/{submissionId}/ncmecSubmissionFiles/{fileId}': RETAIN,\n 'childSafetyCases/{caseId}/ncmecSubmissions/{submissionId}/ncmecCompletionProof/record': RETAIN,\n 'childSafetyCases/{caseId}/legalProcess/{eventId}': RETAIN,\n 'childSafetyCases/{caseId}/portalReceiptArtifacts/{artifactId}': RETAIN,\n 'childSafetyCases/{caseId}/ncmecPortalCorrections/{correctionId}': RETAIN,\n 'childSafetyOwningAliases/{aliasId}': RETAIN,\n 'safetyHoldRefs/{holdRefId}': RETAIN,\n 'safetyHoldResources/{resourceKeyHash}': RETAIN,\n 'safetyResourceCommands/{commandDocId}': RETAIN,\n 'safetyResourceCommands/{commandDocId}/authorizedRequests/{requestId}': RETAIN,\n 'safetyResourceCommands/{commandDocId}/bypassRefs/{refId}': RETAIN,\n 'safetyEvidenceManifests/{manifestId}': RETAIN,\n 'safetyEvidenceJobs/{jobId}': RETAIN,\n 'safetyEvidenceJobs/{jobId}/safetyEvidenceJobItems/{itemId}': RETAIN,\n 'safetyEvidenceJobs/{jobId}/safetyEvidenceJobDisposition/{locationId}': RETAIN,\n 'eventProvenance/{eventId}': ['delete', 'retain'],\n 'quarantineSagaJobs/{caseId}': RETAIN,\n 'quarantineSagaJobs/{caseId}/relatedAssets/{assetId}': RETAIN,\n 'ncmecSubmissionJobs/{ncmecJobId}': RETAIN,\n 'accountActionCommands/{accountActionCommandId}': RETAIN,\n 'safetySlaMonitors/{monitorId}': NONE,\n 'safetyMonitorHeartbeat/global': NONE,\n 'operatorStepUp/{uid}': DELETE,\n 'sweepState/{sweepName}': NONE,\n 'nciiAllegations/{allegationId}': RETAIN,\n 'takeItDownRequests/{requestId}': RETAIN,\n 'takeItDownRequests/{requestId}/privateDetails/requester': RETAIN,\n 'takeItDownRequests/{requestId}/takeItDownSubmissions/{submissionId}': RETAIN,\n 'takeItDownRequests/{requestId}/validityDecisions/{decisionId}': RETAIN,\n 'takeItDownRequests/{requestId}/validityDecisions/{decisionId}/takeItDownValidityRationale/record':\n RETAIN,\n 'takeItDownRequests/{requestId}/takeItDownActions/{actionId}': RETAIN,\n 'takeItDownRequests/{requestId}/takeItDownEvidenceDisposition/{evidenceId}': RETAIN,\n 'takeItDownRequests/{requestId}/takeItDownEvidence/{evidenceId}': RETAIN,\n 'nciiCases/{caseId}': RETAIN,\n 'nciiCases/{caseId}/allegationLinks/{allegationId}': RETAIN,\n 'nciiCases/{caseId}/requestLinks/{requestId}': RETAIN,\n 'nciiCases/{caseId}/removalActions/{actionId}': RETAIN,\n 'nciiCases/{caseId}/blockedHashes/{hashId}': RETAIN,\n 'nciiCases/{caseId}/closureEvents/{eventId}': RETAIN,\n 'nciiRetainedEvidenceInventory/{inventoryId}': RETAIN,\n 'nciiInventoryDeadLetter/{inventoryId}': RETAIN,\n 'nciiTemporaryHolds/{holdId}': RETAIN,\n 'nciiRemovalJobs/{jobId}': RETAIN,\n 'nciiRemovalJobs/{jobId}/nciiRemovalTargets/{targetKeyHash}': RETAIN,\n\n '_appConfig/app': NONE,\n '_appConfig/futurePlans': NONE,\n '_appConfig/rulesAndAgreements': NONE,\n '_appConfig/termsOfService': NONE,\n '_appConfig/privacyPolicy': NONE,\n '_appConfig/takeItDownPageCopy': NONE,\n '_appConfig/dmcaPolicy': NONE,\n '_appConfig/systemUidSlots': RETAIN,\n '_serverData/agePolicy': NONE,\n '_serverData/nciiPolicy': RETAIN,\n '_serverData/privilegedReviewerSecurity': NONE,\n '_serverData/feedbackLists/feedbackAliases/{aliasId}': NONE,\n '_systemData/adminList': ANONYMIZE,\n '_systemData/profanityList': NONE,\n '_systemData/reservedUsernames': NONE,\n '_systemData/blockedFranchiseNames': NONE,\n '_systemData/appMode': NONE,\n '_systemData/systemVideoSlots': NONE,\n} as const satisfies { readonly [P in RegisteredCollectionPath]: ErasureFates };\n\nexport function collectionPathsWithErasureFate(fate: ErasureFate): RegisteredCollectionPath[] {\n return (Object.keys(ERASURE_FATES_BY_COLLECTION_PATH) as RegisteredCollectionPath[]).filter(\n (path) => (ERASURE_FATES_BY_COLLECTION_PATH[path] as ErasureFates).includes(fate),\n );\n}\n\nexport function adminDispatchErasureFate(\n thread: Pick<AdminDispatch, 'partyKind' | 'initiatedBy' | 'userId'>,\n erasedUid: string,\n): Extract<ErasureFate, 'delete' | 'anonymize'> {\n return thread.partyKind === 'user' && thread.initiatedBy === 'user' && thread.userId === erasedUid\n ? 'delete'\n : 'anonymize';\n}\n"]}
|
|
1
|
+
{"version":3,"file":"erasure-fates.js","sourceRoot":"","sources":["../../src/doc-schemas/erasure-fates.ts"],"names":[],"mappings":"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","sourcesContent":["import { z } from 'zod';\nimport type { AdminDispatch } from './messaging.js';\nimport type { RegisteredCollectionPath } from './registry.js';\n\nexport const ERASURE_FATES = ['delete', 'anonymize', 'retain', 'none'] as const;\nexport const ErasureFateSchema = z.enum(ERASURE_FATES);\nexport type ErasureFate = z.infer<typeof ErasureFateSchema>;\n\ntype ErasureFates = readonly [ErasureFate, ...ErasureFate[]];\n\nconst DELETE = ['delete'] as const;\nconst ANONYMIZE = ['anonymize'] as const;\nconst RETAIN = ['retain'] as const;\nconst NONE = ['none'] as const;\nconst SOLO_DRAFT_WORK = ['delete', 'retain'] as const;\n\nexport const ERASURE_FATES_BY_COLLECTION_PATH = {\n 'userProfiles/{userId}': ANONYMIZE,\n 'userProfiles/{userId}/privateData/{userId}': DELETE,\n 'userProfiles/{userId}/privateData/hallLibraryPreferences': DELETE,\n 'userProfiles/{userId}/profileCraftSkills/{craftSkillId}': DELETE,\n 'userProfiles/{userId}/auditionVotes/{auditionId}': DELETE,\n 'userProfiles/{userId}/mentionHistory/{docId}': DELETE,\n 'userProfiles/{userId}/notificationHistory/{notificationId}': DELETE,\n 'userProfiles/{userId}/userLikes/likeHistory/squareStreetzLikes/{postId}': DELETE,\n 'publicUsers/{uid}': ANONYMIZE,\n 'reservedDisplayNames/{displayNameUppercase}': DELETE,\n 'accountDeletionRequests/{uid}': RETAIN,\n 'statusReconcileQueue/{uid}': DELETE,\n 'adminDispatchAppealLocks/{uid}': DELETE,\n 'ageAttestationNonces/{nonceHash}': RETAIN,\n\n 'allWorkProjects/{workProjectId}': SOLO_DRAFT_WORK,\n 'allWorkProjects/{workProjectId}/guildmateUsers/{uid}': SOLO_DRAFT_WORK,\n 'allWorkProjects/{workProjectId}/publicGuildmateUsers/{uid}': SOLO_DRAFT_WORK,\n 'allWorkProjects/{workProjectId}/workFileFolders/{workFileFolderId}': SOLO_DRAFT_WORK,\n 'allWorkProjects/{workProjectId}/workFileFolders/{workFileFolderId}/workFiles/{workFileId}':\n SOLO_DRAFT_WORK,\n 'allWorkProjects/{workProjectId}/hallSubmissionReservation/reservation': SOLO_DRAFT_WORK,\n 'allWorkProjects/{workProjectId}/workProjectTales/{taleId}': SOLO_DRAFT_WORK,\n 'allWorkProjects/{workProjectId}/workProjectTales/{taleId}/taleChapters/{chapterId}':\n SOLO_DRAFT_WORK,\n 'allWorkProjects/{workProjectId}/workProjectTunes/{tuneId}': SOLO_DRAFT_WORK,\n 'allWorkProjects/{workProjectId}/workProjectTunes/{tuneId}/tuneTracks/{trackId}': SOLO_DRAFT_WORK,\n 'allWorkProjects/{workProjectId}/workProjectTelevision/{televisionId}': SOLO_DRAFT_WORK,\n 'allWorkProjects/{workProjectId}/workProjectTelevision/{televisionId}/televisionEpisodes/{episodeId}':\n SOLO_DRAFT_WORK,\n 'allWorkProjects/{workProjectId}/guildChatChannels/{guildChatChannelId}': SOLO_DRAFT_WORK,\n 'publicWorkProjects/{workProjectId}': SOLO_DRAFT_WORK,\n 'workRealms/{workRealmId}': SOLO_DRAFT_WORK,\n 'reservedRealmNames/{workingTitleUppercase}': SOLO_DRAFT_WORK,\n 'workRealms/{workRealmId}/realmFileFolders/{realmFileFolderId}': RETAIN,\n 'guildInviteConversations/{guildInviteId}': RETAIN,\n 'guildInviteConversations/{guildInviteId}/conversationFiles/{conversationFileId}': [\n 'delete',\n 'retain',\n ],\n 'thresholdItems/{thresholdItemId}': SOLO_DRAFT_WORK,\n 'hallItems/{hallItemId}': NONE,\n 'hallItems/{hallItemId}/hallItemTales/{itemId}': NONE,\n 'hallItems/{hallItemId}/hallItemTunes/{itemId}': NONE,\n 'hallItems/{hallItemId}/hallItemTelevision/{itemId}': NONE,\n 'hallContentChangeRequests/{changeRequestId}': RETAIN,\n 'hallContentChangeRequestLocks/{targetKey}': NONE,\n\n 'squareStreetzFeed/activePosts/socialPosts/{postId}': DELETE,\n 'squareStreetzFeed/trendingPosts': NONE,\n 'followEdges/{followEdgeId}': DELETE,\n 'followCounters/{followCounterId}': DELETE,\n 'squareAnnouncementJobs/{jobId}': ['delete', 'retain'],\n 'craftSkillsByTag/{tag}/taggedCraftSkills/{compositeId}': DELETE,\n\n 'commissionListings/{commissionListingId}': RETAIN,\n 'commissionListings/{commissionListingId}/commissionProposals/{commissionProposalId}': DELETE,\n 'auditionBoard/{auditionId}': RETAIN,\n 'auditionBoard/{auditionId}/auditionEntries/{auditionEntryId}': DELETE,\n\n 'pledgePayments/{pledgePaymentId}': RETAIN,\n 'pledgePaymentProviderRefs/{pledgePaymentId}': RETAIN,\n 'processedStripeEvents/{stripeEventId}': NONE,\n 'pledgePaymentLedgerEvents/{ledgerId}': RETAIN,\n 'paymentWebhookQuarantine/{stripeEventId}': RETAIN,\n 'pledgePaymentTotals/summary': NONE,\n 'pledgeRefundRequests/{requestId}': RETAIN,\n\n 'contentReports/{reportId}': ['anonymize', 'retain'],\n 'contentReports/{reportId}/publicProjection/{reportId}': NONE,\n 'contentReports/{reportId}/privateDetails/snapshot': RETAIN,\n 'contentReports/{reportId}/privateDetails/narrative': ['delete', 'retain'],\n 'contentReports/{reportId}/privateDetails/narrativeEscalation': RETAIN,\n 'activeReportGroups/{groupKey}': RETAIN,\n 'activeReportGroups/{groupKey}/reportGroupCountedReports/{reportId}': NONE,\n 'adminTasks/{taskId}': ['delete', 'retain'],\n 'contentViolations/{violationId}': DELETE,\n 'moderationCascadeManifests/{cascadeId}': RETAIN,\n 'moderationCascadeManifests/{cascadeId}/changedDocs/{changedDocId}': RETAIN,\n 'auditEvents/{eventId}': RETAIN,\n 'stakeShareAuditEvents/{eventId}': RETAIN,\n 'pendingAdminDispatches/{adminDispatchId}': ['delete', 'anonymize'],\n 'pendingAdminDispatches/{adminDispatchId}/conversationMessages/{adminDispatchMessageId}': [\n 'delete',\n 'anonymize',\n ],\n 'pendingAdminDispatches/{adminDispatchId}/conversationFiles/{conversationFileId}': [\n 'delete',\n 'retain',\n ],\n 'pendingAdminDispatches/{adminDispatchId}/dispatchReadMarkers/{uid}': DELETE,\n 'shortLinks/{shortId}': RETAIN,\n 'feedbackSubmissions/{feedbackType}/userSuggestions/{suggestionId}': ANONYMIZE,\n\n 'pendingMedia/{pendingMediaId}': ['delete', 'anonymize'],\n 'pendingMediaArchive/{pendingMediaId}': ['delete', 'anonymize'],\n 'mediaAssets/{mediaAssetId}': ['delete', 'retain'],\n 'mediaActivationJobs/{jobId}': RETAIN,\n 'mediaCopyIntents/{newAssetId}': NONE,\n\n 'activeUserNotifications/{notificationId}': ['delete', 'retain'],\n 'activeAdminNotifications/{notificationId}': RETAIN,\n 'adminNotificationHistory/{notificationId}': RETAIN,\n 'pendingNotifications/{notificationId}': ['delete', 'retain'],\n 'notificationDeliveries/{deliveryId}': ['delete', 'retain'],\n 'notificationFanoutJobs/{jobId}': RETAIN,\n 'notificationArchiveAllJobs/{jobId}': DELETE,\n\n 'chatChannelAuthProjections/{authPairKey}': DELETE,\n 'chatScopeDegraded/{scopeKey}': RETAIN,\n 'chatScopeDegraded/{scopeKey}/chatScopeDegradedCauses/{causeId}': RETAIN,\n 'chatSyncEvents/{eventId}': RETAIN,\n 'chatSyncFanoutJobs/{jobId}': RETAIN,\n 'chatMessageOutbox/{commandId}': ['delete', 'retain'],\n 'chatAdminActionCommands/{requestId}': RETAIN,\n 'chatHistoryAnonymizationJobs/{jobId}': RETAIN,\n 'chatHistoryAnonymizationJobs/{jobId}/affectedChunks/{chunkOrdinal}': NONE,\n 'chatParkedDeliveries/{deliveryId}': RETAIN,\n\n 'publicDocuments/{documentId}/publicDocumentVersions/{versionId}': RETAIN,\n 'publicDocumentDrafts/{documentId}': RETAIN,\n 'publicDocumentReleases/{releaseId}': RETAIN,\n\n 'childSafetyCaseList/{caseId}': RETAIN,\n 'activeSafetyCaseAlerts/{caseId}': RETAIN,\n 'childSafetyCases/{caseId}': RETAIN,\n 'childSafetyCases/{caseId}/sourceSignals/{signalId}': RETAIN,\n 'childSafetyCases/{caseId}/childSafetyDecisions/{decisionId}': RETAIN,\n 'childSafetyCases/{caseId}/childSafetyDecisions/{decisionId}/childSafetyDecisionViews/{viewId}':\n RETAIN,\n 'childSafetyCases/{caseId}/childSafetyCaseAccounts/{uid}': RETAIN,\n 'childSafetyCases/{caseId}/childSafetyCaseAccounts/{uid}/childSafetyCaseAccountHistory/{historyId}':\n RETAIN,\n 'childSafetyCases/{caseId}/childSafetyCaseCrossoverItems/{mediaAssetId}': RETAIN,\n 'childSafetyCases/{caseId}/ncmecSubmissions/{submissionId}': RETAIN,\n 'childSafetyCases/{caseId}/ncmecSubmissions/{submissionId}/ncmecSubmissionFiles/{fileId}': RETAIN,\n 'childSafetyCases/{caseId}/ncmecSubmissions/{submissionId}/ncmecCompletionProof/record': RETAIN,\n 'childSafetyCases/{caseId}/legalProcess/{eventId}': RETAIN,\n 'childSafetyCases/{caseId}/portalReceiptArtifacts/{artifactId}': RETAIN,\n 'childSafetyCases/{caseId}/ncmecPortalCorrections/{correctionId}': RETAIN,\n 'childSafetyOwningAliases/{aliasId}': RETAIN,\n 'safetyHoldRefs/{holdRefId}': RETAIN,\n 'safetyHoldResources/{resourceKeyHash}': RETAIN,\n 'safetyResourceCommands/{commandDocId}': RETAIN,\n 'safetyResourceCommands/{commandDocId}/authorizedRequests/{requestId}': RETAIN,\n 'safetyResourceCommands/{commandDocId}/bypassRefs/{refId}': RETAIN,\n 'safetyEvidenceManifests/{manifestId}': RETAIN,\n 'safetyEvidenceJobs/{jobId}': RETAIN,\n 'safetyEvidenceJobs/{jobId}/safetyEvidenceJobItems/{itemId}': RETAIN,\n 'safetyEvidenceJobs/{jobId}/safetyEvidenceJobDisposition/{locationId}': RETAIN,\n 'eventProvenance/{eventId}': ['delete', 'retain'],\n 'quarantineSagaJobs/{caseId}': RETAIN,\n 'quarantineSagaJobs/{caseId}/relatedAssets/{assetId}': RETAIN,\n 'ncmecSubmissionJobs/{ncmecJobId}': RETAIN,\n 'accountActionCommands/{accountActionCommandId}': RETAIN,\n 'safetySlaMonitors/{monitorId}': NONE,\n 'safetyMonitorHeartbeat/global': NONE,\n 'operatorStepUp/{uid}': DELETE,\n 'sweepState/{sweepName}': NONE,\n 'nciiAllegations/{allegationId}': RETAIN,\n 'takeItDownRequests/{requestId}': RETAIN,\n 'takeItDownRequests/{requestId}/privateDetails/requester': RETAIN,\n 'takeItDownRequests/{requestId}/takeItDownSubmissions/{submissionId}': RETAIN,\n 'takeItDownRequests/{requestId}/validityDecisions/{decisionId}': RETAIN,\n 'takeItDownRequests/{requestId}/validityDecisions/{decisionId}/takeItDownValidityRationale/record':\n RETAIN,\n 'takeItDownRequests/{requestId}/takeItDownActions/{actionId}': RETAIN,\n 'takeItDownRequests/{requestId}/takeItDownEvidenceDisposition/{evidenceId}': RETAIN,\n 'takeItDownRequests/{requestId}/takeItDownEvidence/{evidenceId}': RETAIN,\n 'nciiCases/{caseId}': RETAIN,\n 'nciiCases/{caseId}/allegationLinks/{allegationId}': RETAIN,\n 'nciiCases/{caseId}/requestLinks/{requestId}': RETAIN,\n 'nciiCases/{caseId}/removalActions/{actionId}': RETAIN,\n 'nciiCases/{caseId}/blockedHashes/{hashId}': RETAIN,\n 'nciiCases/{caseId}/closureEvents/{eventId}': RETAIN,\n 'nciiRetainedEvidenceInventory/{inventoryId}': RETAIN,\n 'nciiInventoryDeadLetter/{inventoryId}': RETAIN,\n 'nciiTemporaryHolds/{holdId}': RETAIN,\n 'nciiRemovalJobs/{jobId}': RETAIN,\n 'nciiRemovalJobs/{jobId}/nciiRemovalTargets/{targetKeyHash}': RETAIN,\n\n '_appConfig/app': NONE,\n '_appConfig/futurePlans': NONE,\n '_appConfig/rulesAndAgreements': NONE,\n '_appConfig/termsOfService': NONE,\n '_appConfig/privacyPolicy': NONE,\n '_appConfig/takeItDownPageCopy': NONE,\n '_appConfig/dmcaPolicy': NONE,\n '_appConfig/systemUidSlots': RETAIN,\n '_serverData/agePolicy': NONE,\n '_serverData/nciiPolicy': RETAIN,\n '_serverData/privilegedReviewerSecurity': NONE,\n '_serverData/feedbackLists/feedbackAliases/{aliasId}': NONE,\n '_systemData/adminList': ANONYMIZE,\n '_systemData/profanityList': NONE,\n '_systemData/reservedUsernames': NONE,\n '_systemData/blockedFranchiseNames': NONE,\n '_systemData/appMode': NONE,\n '_systemData/systemVideoSlots': NONE,\n} as const satisfies { readonly [P in RegisteredCollectionPath]: ErasureFates };\n\nexport function collectionPathsWithErasureFate(fate: ErasureFate): RegisteredCollectionPath[] {\n return (Object.keys(ERASURE_FATES_BY_COLLECTION_PATH) as RegisteredCollectionPath[]).filter(\n (path) => (ERASURE_FATES_BY_COLLECTION_PATH[path] as ErasureFates).includes(fate),\n );\n}\n\nexport function adminDispatchErasureFate(\n thread: Pick<AdminDispatch, 'partyKind' | 'initiatedBy' | 'userId'>,\n erasedUid: string,\n): Extract<ErasureFate, 'delete' | 'anonymize'> {\n return thread.partyKind === 'user' && thread.initiatedBy === 'user' && thread.userId === erasedUid\n ? 'delete'\n : 'anonymize';\n}\n"]}
|
|
@@ -6,35 +6,108 @@ export declare const MediaActivationJobStatusSchema: z.ZodEnum<{
|
|
|
6
6
|
authorityApplied: "authorityApplied";
|
|
7
7
|
}>;
|
|
8
8
|
export type MediaActivationJobStatus = z.infer<typeof MediaActivationJobStatusSchema>;
|
|
9
|
-
export declare const MediaActivationJobSchema: z.ZodObject<{
|
|
9
|
+
export declare const MediaActivationJobSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
10
10
|
jobId: z.ZodString;
|
|
11
11
|
schemaVersion: z.ZodNumber;
|
|
12
12
|
assetId: z.ZodString;
|
|
13
13
|
pendingMediaId: z.ZodString;
|
|
14
|
+
authorityVersion: z.ZodNumber;
|
|
15
|
+
payloadHash: z.ZodString;
|
|
16
|
+
authorityPayload: z.ZodObject<{
|
|
17
|
+
schemaVersion: z.ZodNumber;
|
|
18
|
+
assetId: z.ZodString;
|
|
19
|
+
authorityVersion: z.ZodNumber;
|
|
20
|
+
operationId: z.ZodString;
|
|
21
|
+
payloadHash: z.ZodString;
|
|
22
|
+
servingStatus: z.ZodEnum<{
|
|
23
|
+
servable: "servable";
|
|
24
|
+
hidden: "hidden";
|
|
25
|
+
quarantined: "quarantined";
|
|
26
|
+
deleted: "deleted";
|
|
27
|
+
}>;
|
|
28
|
+
accessTier: z.ZodEnum<{
|
|
29
|
+
broad: "broad";
|
|
30
|
+
scoped: "scoped";
|
|
31
|
+
artisan: "artisan";
|
|
32
|
+
adminOnly: "adminOnly";
|
|
33
|
+
}>;
|
|
34
|
+
ownerType: z.ZodEnum<{
|
|
35
|
+
workProject: "workProject";
|
|
36
|
+
userProfile: "userProfile";
|
|
37
|
+
craftSkill: "craftSkill";
|
|
38
|
+
squareStreetzPost: "squareStreetzPost";
|
|
39
|
+
workContent: "workContent";
|
|
40
|
+
hallItem: "hallItem";
|
|
41
|
+
commissionListing: "commissionListing";
|
|
42
|
+
commissionProposal: "commissionProposal";
|
|
43
|
+
audition: "audition";
|
|
44
|
+
auditionEntry: "auditionEntry";
|
|
45
|
+
conversationFile: "conversationFile";
|
|
46
|
+
realmFile: "realmFile";
|
|
47
|
+
safetyEvidence: "safetyEvidence";
|
|
48
|
+
systemContent: "systemContent";
|
|
49
|
+
}>;
|
|
50
|
+
ownerId: z.ZodString;
|
|
51
|
+
scope: z.ZodNullable<z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
52
|
+
kind: z.ZodLiteral<"workProject">;
|
|
53
|
+
workProjectId: z.ZodString;
|
|
54
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
55
|
+
kind: z.ZodLiteral<"workFileFolder">;
|
|
56
|
+
workProjectId: z.ZodString;
|
|
57
|
+
workFileFolderId: z.ZodString;
|
|
58
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
59
|
+
kind: z.ZodLiteral<"guildInvite">;
|
|
60
|
+
guildInviteId: z.ZodString;
|
|
61
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
62
|
+
kind: z.ZodLiteral<"adminSupport">;
|
|
63
|
+
adminDispatchId: z.ZodString;
|
|
64
|
+
}, z.core.$strict>], "kind">>;
|
|
65
|
+
variants: z.ZodRecord<z.ZodString, z.ZodObject<{
|
|
66
|
+
contentType: z.ZodString;
|
|
67
|
+
sizeBytes: z.ZodNumber;
|
|
68
|
+
width: z.ZodOptional<z.ZodNumber>;
|
|
69
|
+
height: z.ZodOptional<z.ZodNumber>;
|
|
70
|
+
durationSec: z.ZodOptional<z.ZodNumber>;
|
|
71
|
+
downloadFilename: z.ZodOptional<z.ZodString>;
|
|
72
|
+
}, z.core.$strict>>;
|
|
73
|
+
updatedAtMs: z.ZodNumber;
|
|
74
|
+
}, z.core.$strict>;
|
|
75
|
+
publicationArgs: z.ZodUnknown;
|
|
76
|
+
status: z.ZodEnum<{
|
|
77
|
+
pending: "pending";
|
|
78
|
+
deadLetter: "deadLetter";
|
|
79
|
+
complete: "complete";
|
|
80
|
+
authorityApplied: "authorityApplied";
|
|
81
|
+
}>;
|
|
82
|
+
attemptCount: z.ZodNumber;
|
|
83
|
+
nextAttemptAt: z.ZodNumber;
|
|
84
|
+
lastError: z.ZodOptional<z.ZodObject<{
|
|
85
|
+
code: z.ZodString;
|
|
86
|
+
message: z.ZodString;
|
|
87
|
+
retryable: z.ZodOptional<z.ZodBoolean>;
|
|
88
|
+
details: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
89
|
+
at: z.ZodOptional<z.ZodNumber>;
|
|
90
|
+
}, z.core.$strict>>;
|
|
91
|
+
parentKey: z.ZodOptional<z.ZodString>;
|
|
92
|
+
parentWaitStartedAt: z.ZodOptional<z.ZodNumber>;
|
|
93
|
+
createdAt: z.ZodNumber;
|
|
94
|
+
authorityAppliedAt: z.ZodOptional<z.ZodNumber>;
|
|
95
|
+
completedAt: z.ZodOptional<z.ZodNumber>;
|
|
96
|
+
deadLetteredAt: z.ZodOptional<z.ZodNumber>;
|
|
97
|
+
expireAt: z.ZodOptional<z.ZodCustom<import("./firestore-primitives.js").FirestoreTimestampLike, import("./firestore-primitives.js").FirestoreTimestampLike>>;
|
|
98
|
+
publicationKind: z.ZodLiteral<"workContentMedia">;
|
|
14
99
|
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
|
-
"audition-curated-option": "audition-curated-option";
|
|
23
|
-
"admin-audition-prompt": "admin-audition-prompt";
|
|
24
|
-
"hallLibrary-cover-square": "hallLibrary-cover-square";
|
|
25
|
-
"hallLibrary-cover-poster": "hallLibrary-cover-poster";
|
|
26
|
-
"hallLibrary-cover-cinematic": "hallLibrary-cover-cinematic";
|
|
27
|
-
"realm-cover": "realm-cover";
|
|
28
100
|
"chapter-photo": "chapter-photo";
|
|
29
101
|
"tune-track-photo": "tune-track-photo";
|
|
30
102
|
"tune-track-audio": "tune-track-audio";
|
|
31
103
|
"television-episode-photo": "television-episode-photo";
|
|
32
104
|
"television-episode-video": "television-episode-video";
|
|
33
|
-
"conversation-file": "conversation-file";
|
|
34
|
-
"work-asset": "work-asset";
|
|
35
|
-
"system-content": "system-content";
|
|
36
|
-
"ncii-evidence": "ncii-evidence";
|
|
37
105
|
}>;
|
|
106
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
107
|
+
jobId: z.ZodString;
|
|
108
|
+
schemaVersion: z.ZodNumber;
|
|
109
|
+
assetId: z.ZodString;
|
|
110
|
+
pendingMediaId: z.ZodString;
|
|
38
111
|
authorityVersion: z.ZodNumber;
|
|
39
112
|
payloadHash: z.ZodString;
|
|
40
113
|
authorityPayload: z.ZodObject<{
|
|
@@ -96,20 +169,6 @@ export declare const MediaActivationJobSchema: z.ZodObject<{
|
|
|
96
169
|
}, z.core.$strict>>;
|
|
97
170
|
updatedAtMs: z.ZodNumber;
|
|
98
171
|
}, z.core.$strict>;
|
|
99
|
-
publicationKind: z.ZodEnum<{
|
|
100
|
-
conversationFile: "conversationFile";
|
|
101
|
-
profilePicture: "profilePicture";
|
|
102
|
-
squarePostMedia: "squarePostMedia";
|
|
103
|
-
workAsset: "workAsset";
|
|
104
|
-
hallCover: "hallCover";
|
|
105
|
-
realmCover: "realmCover";
|
|
106
|
-
workContentMedia: "workContentMedia";
|
|
107
|
-
auditionMedia: "auditionMedia";
|
|
108
|
-
commissionListingMedia: "commissionListingMedia";
|
|
109
|
-
commissionProposalMedia: "commissionProposalMedia";
|
|
110
|
-
craftSkillMedia: "craftSkillMedia";
|
|
111
|
-
systemVideoSlot: "systemVideoSlot";
|
|
112
|
-
}>;
|
|
113
172
|
publicationArgs: z.ZodUnknown;
|
|
114
173
|
status: z.ZodEnum<{
|
|
115
174
|
pending: "pending";
|
|
@@ -133,6 +192,43 @@ export declare const MediaActivationJobSchema: z.ZodObject<{
|
|
|
133
192
|
completedAt: z.ZodOptional<z.ZodNumber>;
|
|
134
193
|
deadLetteredAt: z.ZodOptional<z.ZodNumber>;
|
|
135
194
|
expireAt: z.ZodOptional<z.ZodCustom<import("./firestore-primitives.js").FirestoreTimestampLike, import("./firestore-primitives.js").FirestoreTimestampLike>>;
|
|
136
|
-
|
|
195
|
+
publicationKind: z.ZodEnum<{
|
|
196
|
+
conversationFile: "conversationFile";
|
|
197
|
+
profilePicture: "profilePicture";
|
|
198
|
+
squarePostMedia: "squarePostMedia";
|
|
199
|
+
workAsset: "workAsset";
|
|
200
|
+
hallCover: "hallCover";
|
|
201
|
+
realmCover: "realmCover";
|
|
202
|
+
auditionMedia: "auditionMedia";
|
|
203
|
+
commissionListingMedia: "commissionListingMedia";
|
|
204
|
+
commissionProposalMedia: "commissionProposalMedia";
|
|
205
|
+
craftSkillMedia: "craftSkillMedia";
|
|
206
|
+
systemVideoSlot: "systemVideoSlot";
|
|
207
|
+
}>;
|
|
208
|
+
fileOrigin: z.ZodEnum<{
|
|
209
|
+
"profile-picture": "profile-picture";
|
|
210
|
+
"craft-skill-media": "craft-skill-media";
|
|
211
|
+
squareStreetz: "squareStreetz";
|
|
212
|
+
"commission-posting": "commission-posting";
|
|
213
|
+
"commission-proposal": "commission-proposal";
|
|
214
|
+
"audition-prompt": "audition-prompt";
|
|
215
|
+
"audition-entry": "audition-entry";
|
|
216
|
+
"audition-curated-option": "audition-curated-option";
|
|
217
|
+
"admin-audition-prompt": "admin-audition-prompt";
|
|
218
|
+
"hallLibrary-cover-square": "hallLibrary-cover-square";
|
|
219
|
+
"hallLibrary-cover-poster": "hallLibrary-cover-poster";
|
|
220
|
+
"hallLibrary-cover-cinematic": "hallLibrary-cover-cinematic";
|
|
221
|
+
"realm-cover": "realm-cover";
|
|
222
|
+
"chapter-photo": "chapter-photo";
|
|
223
|
+
"tune-track-photo": "tune-track-photo";
|
|
224
|
+
"tune-track-audio": "tune-track-audio";
|
|
225
|
+
"television-episode-photo": "television-episode-photo";
|
|
226
|
+
"television-episode-video": "television-episode-video";
|
|
227
|
+
"conversation-file": "conversation-file";
|
|
228
|
+
"work-asset": "work-asset";
|
|
229
|
+
"system-content": "system-content";
|
|
230
|
+
"ncii-evidence": "ncii-evidence";
|
|
231
|
+
}>;
|
|
232
|
+
}, z.core.$strict>], "publicationKind">;
|
|
137
233
|
export type MediaActivationJob = z.infer<typeof MediaActivationJobSchema>;
|
|
138
234
|
//# sourceMappingURL=media-activation-jobs.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"media-activation-jobs.d.ts","sourceRoot":"","sources":["../../src/doc-schemas/media-activation-jobs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"media-activation-jobs.d.ts","sourceRoot":"","sources":["../../src/doc-schemas/media-activation-jobs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAOxB,eAAO,MAAM,8BAA8B;;;;;EAKzC,CAAC;AACH,MAAM,MAAM,wBAAwB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,8BAA8B,CAAC,CAAC;AAgCtF,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;uCASnC,CAAC;AACH,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAC"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
2
|
import { StructuredErrorSchema } from '@ttt-productions/edge-protocol-core';
|
|
3
3
|
import { FileOriginSchema } from '../media/file-origin.js';
|
|
4
|
+
import { HALL_LIBRARY_SUB_ITEM_FILE_ORIGINS } from '../media/hall-library-target-fields.js';
|
|
4
5
|
import { FirestoreTimestampSchema } from './firestore-primitives.js';
|
|
5
6
|
import { MediaPublicationKindSchema, MediaServingAuthorityRecordSchema } from './media-assets.js';
|
|
6
7
|
export const MediaActivationJobStatusSchema = z.enum([
|
|
@@ -9,17 +10,15 @@ export const MediaActivationJobStatusSchema = z.enum([
|
|
|
9
10
|
'complete',
|
|
10
11
|
'deadLetter',
|
|
11
12
|
]);
|
|
12
|
-
|
|
13
|
+
const MediaActivationJobFieldsSchema = z
|
|
13
14
|
.object({
|
|
14
15
|
jobId: z.string().min(1),
|
|
15
16
|
schemaVersion: z.number().int().positive(),
|
|
16
17
|
assetId: z.string().min(1),
|
|
17
18
|
pendingMediaId: z.string().min(1),
|
|
18
|
-
fileOrigin: FileOriginSchema,
|
|
19
19
|
authorityVersion: z.number().int().nonnegative(),
|
|
20
20
|
payloadHash: z.string().min(1),
|
|
21
21
|
authorityPayload: MediaServingAuthorityRecordSchema,
|
|
22
|
-
publicationKind: MediaPublicationKindSchema,
|
|
23
22
|
publicationArgs: z.unknown(),
|
|
24
23
|
status: MediaActivationJobStatusSchema,
|
|
25
24
|
attemptCount: z.number().int().nonnegative(),
|
|
@@ -34,4 +33,14 @@ export const MediaActivationJobSchema = z
|
|
|
34
33
|
expireAt: FirestoreTimestampSchema.optional(),
|
|
35
34
|
})
|
|
36
35
|
.strict();
|
|
36
|
+
export const MediaActivationJobSchema = z.discriminatedUnion('publicationKind', [
|
|
37
|
+
MediaActivationJobFieldsSchema.extend({
|
|
38
|
+
publicationKind: z.literal('workContentMedia'),
|
|
39
|
+
fileOrigin: FileOriginSchema.extract(HALL_LIBRARY_SUB_ITEM_FILE_ORIGINS),
|
|
40
|
+
}),
|
|
41
|
+
MediaActivationJobFieldsSchema.extend({
|
|
42
|
+
publicationKind: MediaPublicationKindSchema.exclude(['workContentMedia']),
|
|
43
|
+
fileOrigin: FileOriginSchema,
|
|
44
|
+
}),
|
|
45
|
+
]);
|
|
37
46
|
//# sourceMappingURL=media-activation-jobs.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"media-activation-jobs.js","sourceRoot":"","sources":["../../src/doc-schemas/media-activation-jobs.ts"],"names":[],"mappings":"AAAA,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,EAAE,0BAA0B,EAAE,iCAAiC,EAAE,MAAM,mBAAmB,CAAC;AAElG,MAAM,CAAC,MAAM,8BAA8B,GAAG,CAAC,CAAC,IAAI,CAAC;IACnD,SAAS;IACT,kBAAkB;IAClB,UAAU;IACV,YAAY;CACb,CAAC,CAAC;AAGH,MAAM,
|
|
1
|
+
{"version":3,"file":"media-activation-jobs.js","sourceRoot":"","sources":["../../src/doc-schemas/media-activation-jobs.ts"],"names":[],"mappings":"AAAA,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,kCAAkC,EAAE,MAAM,wCAAwC,CAAC;AAC5F,OAAO,EAAE,wBAAwB,EAAE,MAAM,2BAA2B,CAAC;AACrE,OAAO,EAAE,0BAA0B,EAAE,iCAAiC,EAAE,MAAM,mBAAmB,CAAC;AAElG,MAAM,CAAC,MAAM,8BAA8B,GAAG,CAAC,CAAC,IAAI,CAAC;IACnD,SAAS;IACT,kBAAkB;IAClB,UAAU;IACV,YAAY;CACb,CAAC,CAAC;AAGH,MAAM,8BAA8B,GAAG,CAAC;KACrC,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;IAEjC,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,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,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE;IAC7C,SAAS,EAAE,qBAAqB,CAAC,QAAQ,EAAE;IAE3C,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IACvC,mBAAmB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE,CAAC,QAAQ,EAAE;IAE9D,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE;IACzC,kBAAkB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE,CAAC,QAAQ,EAAE;IAC7D,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE,CAAC,QAAQ,EAAE;IACtD,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE,CAAC,QAAQ,EAAE;IACzD,QAAQ,EAAE,wBAAwB,CAAC,QAAQ,EAAE;CAC9C,CAAC;KACD,MAAM,EAAE,CAAC;AAEZ,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,CAAC,kBAAkB,CAAC,iBAAiB,EAAE;IAC9E,8BAA8B,CAAC,MAAM,CAAC;QACpC,eAAe,EAAE,CAAC,CAAC,OAAO,CAAC,kBAAkB,CAAC;QAC9C,UAAU,EAAE,gBAAgB,CAAC,OAAO,CAAC,kCAAkC,CAAC;KACzE,CAAC;IACF,8BAA8B,CAAC,MAAM,CAAC;QACpC,eAAe,EAAE,0BAA0B,CAAC,OAAO,CAAC,CAAC,kBAAkB,CAAC,CAAC;QACzE,UAAU,EAAE,gBAAgB;KAC7B,CAAC;CACH,CAAC,CAAC","sourcesContent":["import { z } from 'zod';\nimport { StructuredErrorSchema } from '@ttt-productions/edge-protocol-core';\nimport { FileOriginSchema } from '../media/file-origin.js';\nimport { HALL_LIBRARY_SUB_ITEM_FILE_ORIGINS } from '../media/hall-library-target-fields.js';\nimport { FirestoreTimestampSchema } from './firestore-primitives.js';\nimport { MediaPublicationKindSchema, MediaServingAuthorityRecordSchema } from './media-assets.js';\n\nexport const MediaActivationJobStatusSchema = z.enum([\n 'pending',\n 'authorityApplied',\n 'complete',\n 'deadLetter',\n]);\nexport type MediaActivationJobStatus = z.infer<typeof MediaActivationJobStatusSchema>;\n\nconst MediaActivationJobFieldsSchema = z\n .object({\n jobId: z.string().min(1),\n schemaVersion: z.number().int().positive(),\n\n assetId: z.string().min(1),\n pendingMediaId: z.string().min(1),\n\n authorityVersion: z.number().int().nonnegative(),\n payloadHash: z.string().min(1),\n authorityPayload: MediaServingAuthorityRecordSchema,\n\n publicationArgs: z.unknown(),\n\n status: MediaActivationJobStatusSchema,\n attemptCount: z.number().int().nonnegative(),\n nextAttemptAt: z.number().int().nonnegative(),\n lastError: StructuredErrorSchema.optional(),\n\n parentKey: z.string().min(1).optional(),\n parentWaitStartedAt: z.number().int().nonnegative().optional(),\n\n createdAt: z.number().int().nonnegative(),\n authorityAppliedAt: z.number().int().nonnegative().optional(),\n completedAt: z.number().int().nonnegative().optional(),\n deadLetteredAt: z.number().int().nonnegative().optional(),\n expireAt: FirestoreTimestampSchema.optional(),\n })\n .strict();\n\nexport const MediaActivationJobSchema = z.discriminatedUnion('publicationKind', [\n MediaActivationJobFieldsSchema.extend({\n publicationKind: z.literal('workContentMedia'),\n fileOrigin: FileOriginSchema.extract(HALL_LIBRARY_SUB_ITEM_FILE_ORIGINS),\n }),\n MediaActivationJobFieldsSchema.extend({\n publicationKind: MediaPublicationKindSchema.exclude(['workContentMedia']),\n fileOrigin: FileOriginSchema,\n }),\n]);\nexport type MediaActivationJob = z.infer<typeof MediaActivationJobSchema>;\n"]}
|
|
@@ -56,7 +56,7 @@ export const MediaOriginLineageV1Schema = z
|
|
|
56
56
|
originatingUploaderUid: z.string().min(1),
|
|
57
57
|
originatingUploadEventId: z.string(),
|
|
58
58
|
originalUploadCreatedAt: z.number(),
|
|
59
|
-
// Not `.min(1)`:
|
|
59
|
+
// Not `.min(1)`: a lineage can be stored before its content is hashed, as ''.
|
|
60
60
|
rootSha256: z.string(),
|
|
61
61
|
originalSha256: z.string().min(1).optional(),
|
|
62
62
|
// `z.partialRecord`, not `z.record`: in Zod 4 a record over an enum demands every key.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"media-assets.js","sourceRoot":"","sources":["../../src/doc-schemas/media-assets.ts"],"names":[],"mappings":"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","sourcesContent":["import { z } from 'zod';\nimport { StructuredErrorSchema } from '@ttt-productions/edge-protocol-core';\nimport {\n TIMED_MEDIA_MAIN_OUTPUT_KEY,\n VIDEO_POSTER_OUTPUT_KEY,\n} from '@ttt-productions/media-schemas';\nimport { FileOriginSchema } from '../media/file-origin.js';\n\nexport const MediaAccessTierSchema = z.enum(['broad', 'scoped', 'artisan', 'adminOnly']);\nexport type MediaAccessTier = z.infer<typeof MediaAccessTierSchema>;\n\nexport const MediaServingStatusSchema = z.enum(['servable', 'hidden', 'quarantined', 'deleted']);\nexport type MediaServingStatus = z.infer<typeof MediaServingStatusSchema>;\n\nexport const MediaAssetOwnerTypeSchema = z.enum([\n 'userProfile',\n 'craftSkill',\n 'squareStreetzPost',\n 'workProject',\n 'workContent',\n 'hallItem',\n 'commissionListing',\n 'commissionProposal',\n 'audition',\n 'auditionEntry',\n 'conversationFile',\n 'realmFile',\n 'safetyEvidence',\n 'systemContent',\n]);\nexport type MediaAssetOwnerType = z.infer<typeof MediaAssetOwnerTypeSchema>;\n\nexport const ContentMediaKindSchema = z.enum(['image', 'video', 'audio']);\nexport type ContentMediaKind = z.infer<typeof ContentMediaKindSchema>;\n\nexport const MEDIA_VARIANT_KEYS = [\n 'full',\n 'medium',\n 'small',\n TIMED_MEDIA_MAIN_OUTPUT_KEY,\n VIDEO_POSTER_OUTPUT_KEY,\n] as const;\nexport const MediaVariantKeySchema = z.enum(MEDIA_VARIANT_KEYS);\nexport type MediaVariantKey = z.infer<typeof MediaVariantKeySchema>;\n\nexport const PROFILE_PICTURE_VARIANT_KEYS = [\n 'full',\n 'medium',\n 'small',\n] as const satisfies readonly MediaVariantKey[];\nexport type ProfilePictureVariantKey = (typeof PROFILE_PICTURE_VARIANT_KEYS)[number];\n\nexport const MEDIA_DISPLAY_VARIANT_PRECEDENCE = [\n TIMED_MEDIA_MAIN_OUTPUT_KEY,\n ...PROFILE_PICTURE_VARIANT_KEYS,\n] as const satisfies readonly MediaVariantKey[];\n\nexport const MediaCopyReasonSchema = z.enum([\n 'original',\n 'variant',\n 'hall_publish',\n 'profile_derivative',\n 'moderation_copy',\n 'evidence_copy',\n 'other',\n]);\nexport type MediaCopyReason = z.infer<typeof MediaCopyReasonSchema>;\n\nexport const MediaOriginLineageV1Schema = z\n .object({\n lineageVersion: z.literal(1),\n rootIngestId: z.string().min(1),\n rootAssetId: z.string().min(1),\n sourceAssetId: z.string().min(1).optional(),\n originatingUploaderUid: z.string().min(1),\n originatingUploadEventId: z.string(),\n originalUploadCreatedAt: z.number(),\n // Not `.min(1)`: no hash is computed at finalize, so a fresh asset carries ''.\n rootSha256: z.string(),\n originalSha256: z.string().min(1).optional(),\n // `z.partialRecord`, not `z.record`: in Zod 4 a record over an enum demands every key.\n variantSha256s: z.partialRecord(MediaVariantKeySchema, z.string().min(1)),\n copyReason: MediaCopyReasonSchema,\n createdFromOwnerType: MediaAssetOwnerTypeSchema.optional(),\n createdFromOwnerId: z.string().min(1).optional(),\n copyActorUid: z.string().min(1).optional(),\n currentOwnerType: MediaAssetOwnerTypeSchema,\n currentOwnerId: z.string().min(1),\n })\n .strict();\nexport type MediaOriginLineageV1 = z.infer<typeof MediaOriginLineageV1Schema>;\n\nexport const MediaAssetVariantSchema = z\n .object({\n contentType: z.string().min(1),\n sizeBytes: z.number().int().nonnegative(),\n width: z.number().int().positive().optional(),\n height: z.number().int().positive().optional(),\n durationSec: z.number().positive().optional(),\n downloadFilename: z.string().min(1).optional(),\n })\n .strict();\nexport type MediaAssetVariant = z.infer<typeof MediaAssetVariantSchema>;\n\nexport const MediaRetentionPolicySchema = z.enum([\n 'standard',\n 'preserveForTrustAndSafety',\n 'legalHold',\n]);\nexport type MediaRetentionPolicy = z.infer<typeof MediaRetentionPolicySchema>;\n\nexport const REALM_FILE_NONE_STATUS = 'none' as const;\nexport const REALM_FILE_PENDING_APPROVAL_STATUS = 'pendingApproval' as const;\nexport const REALM_FILE_NON_CANON_STATUS = 'nonCanon' as const;\nexport const REALM_FILE_CANON_STATUS = 'canon' as const;\n\nexport const REALM_FILE_CANON_STATUS_VALUES = [\n REALM_FILE_NONE_STATUS,\n REALM_FILE_PENDING_APPROVAL_STATUS,\n REALM_FILE_NON_CANON_STATUS,\n REALM_FILE_CANON_STATUS,\n] as const;\nexport const RealmFileCanonStatusSchema = z.enum(REALM_FILE_CANON_STATUS_VALUES);\nexport type RealmFileCanonStatus = z.infer<typeof RealmFileCanonStatusSchema>;\n\nexport const REALM_FILE_APPROVED_STATUS_VALUES = [\n REALM_FILE_NON_CANON_STATUS,\n REALM_FILE_CANON_STATUS,\n] as const;\nexport const RealmFileApprovedStatusSchema = z.enum(REALM_FILE_APPROVED_STATUS_VALUES);\nexport type RealmFileApprovedStatus = z.infer<typeof RealmFileApprovedStatusSchema>;\n\nexport const RealmFilePendingApprovalStatusSchema = z.literal(REALM_FILE_PENDING_APPROVAL_STATUS);\nexport type RealmFilePendingApprovalStatus = z.infer<typeof RealmFilePendingApprovalStatusSchema>;\n\nexport const REALM_FILE_ACTIVE_STATUS_VALUES = [\n REALM_FILE_PENDING_APPROVAL_STATUS,\n ...REALM_FILE_APPROVED_STATUS_VALUES,\n] as const;\nexport const RealmFileActiveStatusSchema = z.enum(REALM_FILE_ACTIVE_STATUS_VALUES);\nexport type RealmFileActiveStatus = z.infer<typeof RealmFileActiveStatusSchema>;\n\nexport const MediaAuthoritySyncStateSchema = z.enum(['pending', 'applied', 'deadLetter']);\nexport type MediaAuthoritySyncState = z.infer<typeof MediaAuthoritySyncStateSchema>;\n\nexport const MediaAssetPublicationStateSchema = z.enum(['unpublished', 'published', 'retired']);\nexport type MediaAssetPublicationState = z.infer<typeof MediaAssetPublicationStateSchema>;\n\nexport const MediaServingScopeSchema = z.discriminatedUnion('kind', [\n z\n .object({\n kind: z.literal('workProject'),\n workProjectId: z.string().min(1),\n })\n .strict(),\n z\n .object({\n kind: z.literal('workFileFolder'),\n workProjectId: z.string().min(1),\n workFileFolderId: z.string().min(1),\n })\n .strict(),\n z\n .object({\n kind: z.literal('guildInvite'),\n guildInviteId: z.string().min(1),\n })\n .strict(),\n z\n .object({\n kind: z.literal('adminSupport'),\n adminDispatchId: z.string().min(1),\n })\n .strict(),\n]);\nexport type MediaServingScope = z.infer<typeof MediaServingScopeSchema>;\n\nexport const MediaPublicationKindSchema = z.enum([\n 'profilePicture',\n 'squarePostMedia',\n 'workAsset',\n 'hallCover',\n 'realmCover',\n 'workContentMedia',\n 'auditionMedia',\n 'commissionListingMedia',\n 'commissionProposalMedia',\n 'craftSkillMedia',\n 'conversationFile',\n 'systemVideoSlot',\n]);\nexport type MediaPublicationKind = z.infer<typeof MediaPublicationKindSchema>;\n\nexport const MediaServingAuthorityRecordSchema = z\n .object({\n schemaVersion: z.number().int().positive(),\n assetId: z.string().min(1),\n authorityVersion: z.number().int().nonnegative(),\n operationId: z.string().min(1),\n payloadHash: z.string().min(1),\n\n servingStatus: MediaServingStatusSchema,\n accessTier: MediaAccessTierSchema,\n\n ownerType: MediaAssetOwnerTypeSchema,\n ownerId: z.string().min(1),\n scope: MediaServingScopeSchema.nullable(),\n\n variants: z.record(z.string(), MediaAssetVariantSchema),\n\n updatedAtMs: z.number(),\n })\n .strict();\nexport type MediaServingAuthorityRecord = z.infer<typeof MediaServingAuthorityRecordSchema>;\n\nexport const MediaAssetRetirementDeferralSchema = z.enum(['held', 'failed']);\nexport type MediaAssetRetirementDeferral = z.infer<typeof MediaAssetRetirementDeferralSchema>;\n\nexport const MediaAssetRetirementSchema = z\n .object({\n requestedAt: z.number().int().nonnegative(),\n pendingVariantKeys: z.array(z.string().min(1)),\n attemptCount: z.number().int().nonnegative(),\n nextAttemptAt: z.number().int().nonnegative(),\n lastDeferral: MediaAssetRetirementDeferralSchema.optional(),\n lastError: StructuredErrorSchema.optional(),\n })\n .strict()\n .superRefine((val, ctx) => {\n if (new Set(val.pendingVariantKeys).size !== val.pendingVariantKeys.length) {\n ctx.addIssue({\n code: 'custom',\n path: ['pendingVariantKeys'],\n message: 'a variant key is owed at most once',\n });\n }\n if (val.lastError !== undefined && val.lastDeferral !== 'failed') {\n ctx.addIssue({\n code: 'custom',\n path: ['lastError'],\n message: 'an error is recorded only for a failed attempt',\n });\n }\n });\nexport type MediaAssetRetirement = z.infer<typeof MediaAssetRetirementSchema>;\n\nexport const MediaAssetSchema = z\n .object({\n mediaAssetId: z.string().min(1),\n mediaKind: ContentMediaKindSchema,\n fileOrigin: FileOriginSchema,\n\n ownerType: MediaAssetOwnerTypeSchema,\n ownerId: z.string().min(1),\n workProjectId: z.string().optional(),\n realmId: z.string().optional(),\n createdByUid: z.string().min(1),\n\n accessTier: MediaAccessTierSchema,\n servingStatus: MediaServingStatusSchema,\n\n variants: z.record(z.string(), MediaAssetVariantSchema),\n\n moderationStatus: z.enum(['approved', 'quarantined']),\n retentionPolicy: MediaRetentionPolicySchema,\n legalHold: z.boolean(),\n originalDeletedAt: z.number().optional(),\n\n originLineage: MediaOriginLineageV1Schema.optional(),\n\n realmFileCanonStatus: RealmFileCanonStatusSchema,\n\n realmFileFolderId: z.string().min(1).optional(),\n\n realmFileShareRequestId: z.string().min(1).optional(),\n realmFileShareRequestedByUid: z.string().min(1).optional(),\n realmFileShareRequestedAt: z.number().optional(),\n\n authorityVersion: z.number().int().nonnegative().optional(),\n authorityPayloadHash: z.string().optional(),\n authoritySyncState: MediaAuthoritySyncStateSchema.optional(),\n publicationState: MediaAssetPublicationStateSchema.optional(),\n scope: MediaServingScopeSchema.optional(),\n authorityAppliedAt: z.number().optional(),\n publishedAt: z.number().optional(),\n lastAuthorityError: StructuredErrorSchema.optional(),\n authoritySyncAttemptCount: z.number().int().nonnegative().optional(),\n authoritySyncNextAttemptAt: z.number().optional(),\n\n retirement: MediaAssetRetirementSchema.optional(),\n\n createdAt: z.number(),\n updatedAt: z.number(),\n })\n .strict()\n .superRefine((val, ctx) => {\n if (val.retirement !== undefined) {\n if (val.servingStatus === 'servable') {\n ctx.addIssue({\n code: 'custom',\n path: ['servingStatus'],\n message: 'an asset owing retirement is never servable',\n });\n }\n if (val.publicationState === 'retired') {\n ctx.addIssue({\n code: 'custom',\n path: ['retirement'],\n message: 'a retired asset owes no retirement',\n });\n }\n for (const key of val.retirement.pendingVariantKeys) {\n if (!Object.prototype.hasOwnProperty.call(val.variants, key)) {\n ctx.addIssue({\n code: 'custom',\n path: ['retirement', 'pendingVariantKeys'],\n message: `${key} is not one of this asset's variants`,\n });\n }\n }\n }\n\n const requestFields = [\n ['realmFileShareRequestId', val.realmFileShareRequestId],\n ['realmFileShareRequestedByUid', val.realmFileShareRequestedByUid],\n ['realmFileShareRequestedAt', val.realmFileShareRequestedAt],\n ] as const;\n\n const forbid = (path: string, value: unknown, message: string) => {\n if (value !== undefined) ctx.addIssue({ code: 'custom', path: [path], message });\n };\n const require_ = (path: string, value: unknown, message: string) => {\n if (value === undefined) ctx.addIssue({ code: 'custom', path: [path], message });\n };\n\n if (val.realmFileCanonStatus === 'none') {\n forbid(\n 'realmId',\n val.realmId,\n 'realmId is only set on a realm-shared or pending asset (realmFileCanonStatus is \"none\")',\n );\n forbid(\n 'realmFileFolderId',\n val.realmFileFolderId,\n 'realmFileFolderId is only set on an APPROVED realm-shared asset (realmFileCanonStatus is \"none\")',\n );\n for (const [path, value] of requestFields) {\n forbid(\n path,\n value,\n `${path} is only set while a promotion request is pending (realmFileCanonStatus is \"none\")`,\n );\n }\n return;\n }\n\n require_(\n 'realmId',\n val.realmId,\n `realmId is required whenever realmFileCanonStatus is \"${val.realmFileCanonStatus}\"`,\n );\n\n if (val.realmFileCanonStatus === 'pendingApproval') {\n forbid(\n 'realmFileFolderId',\n val.realmFileFolderId,\n 'a pending request has no folder yet — the steward assigns the folder AT approval',\n );\n for (const [path, value] of requestFields) {\n require_(\n path,\n value,\n `${path} is required while realmFileCanonStatus is \"pendingApproval\"`,\n );\n }\n return;\n }\n\n require_(\n 'realmFileFolderId',\n val.realmFileFolderId,\n `realmFileFolderId is required on an approved realm file (realmFileCanonStatus is \"${val.realmFileCanonStatus}\")`,\n );\n for (const [path, value] of requestFields) {\n forbid(\n path,\n value,\n `${path} must be cleared once the request is resolved (realmFileCanonStatus is \"${val.realmFileCanonStatus}\")`,\n );\n }\n });\nexport type MediaAsset = z.infer<typeof MediaAssetSchema>;\n\nexport const MediaAssetReapCandidateSchema = z.object({\n mediaAssetId: MediaAssetSchema.shape.mediaAssetId,\n ownerId: MediaAssetSchema.shape.ownerId,\n createdAt: MediaAssetSchema.shape.createdAt,\n publicationState: MediaAssetSchema.shape.publicationState,\n retirement: MediaAssetSchema.shape.retirement,\n});\nexport type MediaAssetReapCandidate = z.infer<typeof MediaAssetReapCandidateSchema>;\n\nexport const MediaAssetHoldFieldsSchema = z.object({\n mediaAssetId: MediaAssetSchema.shape.mediaAssetId,\n originLineage: MediaAssetSchema.shape.originLineage,\n legalHold: MediaAssetSchema.shape.legalHold,\n});\nexport type MediaAssetHoldFields = z.infer<typeof MediaAssetHoldFieldsSchema>;\n\nexport type MediaAssetRetirementStanding = 'absent' | 'retired' | 'owed' | 'none';\n\nexport function mediaAssetRetirementStanding(\n asset: Pick<MediaAsset, 'publicationState' | 'retirement'> | undefined,\n): MediaAssetRetirementStanding {\n if (asset === undefined) return 'absent';\n if (asset.publicationState === 'retired') return 'retired';\n if (asset.retirement !== undefined) return 'owed';\n return 'none';\n}\n\nexport function servingStatusOnRetirementRequest(current: MediaServingStatus): MediaServingStatus {\n return current === 'servable' ? 'hidden' : current;\n}\n\nexport function servingStatusOnRetirementComplete(current: MediaServingStatus): MediaServingStatus {\n return current === 'quarantined' ? 'quarantined' : 'deleted';\n}\n"]}
|
|
1
|
+
{"version":3,"file":"media-assets.js","sourceRoot":"","sources":["../../src/doc-schemas/media-assets.ts"],"names":[],"mappings":"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","sourcesContent":["import { z } from 'zod';\nimport { StructuredErrorSchema } from '@ttt-productions/edge-protocol-core';\nimport {\n TIMED_MEDIA_MAIN_OUTPUT_KEY,\n VIDEO_POSTER_OUTPUT_KEY,\n} from '@ttt-productions/media-schemas';\nimport { FileOriginSchema } from '../media/file-origin.js';\n\nexport const MediaAccessTierSchema = z.enum(['broad', 'scoped', 'artisan', 'adminOnly']);\nexport type MediaAccessTier = z.infer<typeof MediaAccessTierSchema>;\n\nexport const MediaServingStatusSchema = z.enum(['servable', 'hidden', 'quarantined', 'deleted']);\nexport type MediaServingStatus = z.infer<typeof MediaServingStatusSchema>;\n\nexport const MediaAssetOwnerTypeSchema = z.enum([\n 'userProfile',\n 'craftSkill',\n 'squareStreetzPost',\n 'workProject',\n 'workContent',\n 'hallItem',\n 'commissionListing',\n 'commissionProposal',\n 'audition',\n 'auditionEntry',\n 'conversationFile',\n 'realmFile',\n 'safetyEvidence',\n 'systemContent',\n]);\nexport type MediaAssetOwnerType = z.infer<typeof MediaAssetOwnerTypeSchema>;\n\nexport const ContentMediaKindSchema = z.enum(['image', 'video', 'audio']);\nexport type ContentMediaKind = z.infer<typeof ContentMediaKindSchema>;\n\nexport const MEDIA_VARIANT_KEYS = [\n 'full',\n 'medium',\n 'small',\n TIMED_MEDIA_MAIN_OUTPUT_KEY,\n VIDEO_POSTER_OUTPUT_KEY,\n] as const;\nexport const MediaVariantKeySchema = z.enum(MEDIA_VARIANT_KEYS);\nexport type MediaVariantKey = z.infer<typeof MediaVariantKeySchema>;\n\nexport const PROFILE_PICTURE_VARIANT_KEYS = [\n 'full',\n 'medium',\n 'small',\n] as const satisfies readonly MediaVariantKey[];\nexport type ProfilePictureVariantKey = (typeof PROFILE_PICTURE_VARIANT_KEYS)[number];\n\nexport const MEDIA_DISPLAY_VARIANT_PRECEDENCE = [\n TIMED_MEDIA_MAIN_OUTPUT_KEY,\n ...PROFILE_PICTURE_VARIANT_KEYS,\n] as const satisfies readonly MediaVariantKey[];\n\nexport const MediaCopyReasonSchema = z.enum([\n 'original',\n 'variant',\n 'hall_publish',\n 'profile_derivative',\n 'moderation_copy',\n 'evidence_copy',\n 'other',\n]);\nexport type MediaCopyReason = z.infer<typeof MediaCopyReasonSchema>;\n\nexport const MediaOriginLineageV1Schema = z\n .object({\n lineageVersion: z.literal(1),\n rootIngestId: z.string().min(1),\n rootAssetId: z.string().min(1),\n sourceAssetId: z.string().min(1).optional(),\n originatingUploaderUid: z.string().min(1),\n originatingUploadEventId: z.string(),\n originalUploadCreatedAt: z.number(),\n // Not `.min(1)`: a lineage can be stored before its content is hashed, as ''.\n rootSha256: z.string(),\n originalSha256: z.string().min(1).optional(),\n // `z.partialRecord`, not `z.record`: in Zod 4 a record over an enum demands every key.\n variantSha256s: z.partialRecord(MediaVariantKeySchema, z.string().min(1)),\n copyReason: MediaCopyReasonSchema,\n createdFromOwnerType: MediaAssetOwnerTypeSchema.optional(),\n createdFromOwnerId: z.string().min(1).optional(),\n copyActorUid: z.string().min(1).optional(),\n currentOwnerType: MediaAssetOwnerTypeSchema,\n currentOwnerId: z.string().min(1),\n })\n .strict();\nexport type MediaOriginLineageV1 = z.infer<typeof MediaOriginLineageV1Schema>;\n\nexport const MediaAssetVariantSchema = z\n .object({\n contentType: z.string().min(1),\n sizeBytes: z.number().int().nonnegative(),\n width: z.number().int().positive().optional(),\n height: z.number().int().positive().optional(),\n durationSec: z.number().positive().optional(),\n downloadFilename: z.string().min(1).optional(),\n })\n .strict();\nexport type MediaAssetVariant = z.infer<typeof MediaAssetVariantSchema>;\n\nexport const MediaRetentionPolicySchema = z.enum([\n 'standard',\n 'preserveForTrustAndSafety',\n 'legalHold',\n]);\nexport type MediaRetentionPolicy = z.infer<typeof MediaRetentionPolicySchema>;\n\nexport const REALM_FILE_NONE_STATUS = 'none' as const;\nexport const REALM_FILE_PENDING_APPROVAL_STATUS = 'pendingApproval' as const;\nexport const REALM_FILE_NON_CANON_STATUS = 'nonCanon' as const;\nexport const REALM_FILE_CANON_STATUS = 'canon' as const;\n\nexport const REALM_FILE_CANON_STATUS_VALUES = [\n REALM_FILE_NONE_STATUS,\n REALM_FILE_PENDING_APPROVAL_STATUS,\n REALM_FILE_NON_CANON_STATUS,\n REALM_FILE_CANON_STATUS,\n] as const;\nexport const RealmFileCanonStatusSchema = z.enum(REALM_FILE_CANON_STATUS_VALUES);\nexport type RealmFileCanonStatus = z.infer<typeof RealmFileCanonStatusSchema>;\n\nexport const REALM_FILE_APPROVED_STATUS_VALUES = [\n REALM_FILE_NON_CANON_STATUS,\n REALM_FILE_CANON_STATUS,\n] as const;\nexport const RealmFileApprovedStatusSchema = z.enum(REALM_FILE_APPROVED_STATUS_VALUES);\nexport type RealmFileApprovedStatus = z.infer<typeof RealmFileApprovedStatusSchema>;\n\nexport const RealmFilePendingApprovalStatusSchema = z.literal(REALM_FILE_PENDING_APPROVAL_STATUS);\nexport type RealmFilePendingApprovalStatus = z.infer<typeof RealmFilePendingApprovalStatusSchema>;\n\nexport const REALM_FILE_ACTIVE_STATUS_VALUES = [\n REALM_FILE_PENDING_APPROVAL_STATUS,\n ...REALM_FILE_APPROVED_STATUS_VALUES,\n] as const;\nexport const RealmFileActiveStatusSchema = z.enum(REALM_FILE_ACTIVE_STATUS_VALUES);\nexport type RealmFileActiveStatus = z.infer<typeof RealmFileActiveStatusSchema>;\n\nexport const MediaAuthoritySyncStateSchema = z.enum(['pending', 'applied', 'deadLetter']);\nexport type MediaAuthoritySyncState = z.infer<typeof MediaAuthoritySyncStateSchema>;\n\nexport const MediaAssetPublicationStateSchema = z.enum(['unpublished', 'published', 'retired']);\nexport type MediaAssetPublicationState = z.infer<typeof MediaAssetPublicationStateSchema>;\n\nexport const MediaServingScopeSchema = z.discriminatedUnion('kind', [\n z\n .object({\n kind: z.literal('workProject'),\n workProjectId: z.string().min(1),\n })\n .strict(),\n z\n .object({\n kind: z.literal('workFileFolder'),\n workProjectId: z.string().min(1),\n workFileFolderId: z.string().min(1),\n })\n .strict(),\n z\n .object({\n kind: z.literal('guildInvite'),\n guildInviteId: z.string().min(1),\n })\n .strict(),\n z\n .object({\n kind: z.literal('adminSupport'),\n adminDispatchId: z.string().min(1),\n })\n .strict(),\n]);\nexport type MediaServingScope = z.infer<typeof MediaServingScopeSchema>;\n\nexport const MediaPublicationKindSchema = z.enum([\n 'profilePicture',\n 'squarePostMedia',\n 'workAsset',\n 'hallCover',\n 'realmCover',\n 'workContentMedia',\n 'auditionMedia',\n 'commissionListingMedia',\n 'commissionProposalMedia',\n 'craftSkillMedia',\n 'conversationFile',\n 'systemVideoSlot',\n]);\nexport type MediaPublicationKind = z.infer<typeof MediaPublicationKindSchema>;\n\nexport const MediaServingAuthorityRecordSchema = z\n .object({\n schemaVersion: z.number().int().positive(),\n assetId: z.string().min(1),\n authorityVersion: z.number().int().nonnegative(),\n operationId: z.string().min(1),\n payloadHash: z.string().min(1),\n\n servingStatus: MediaServingStatusSchema,\n accessTier: MediaAccessTierSchema,\n\n ownerType: MediaAssetOwnerTypeSchema,\n ownerId: z.string().min(1),\n scope: MediaServingScopeSchema.nullable(),\n\n variants: z.record(z.string(), MediaAssetVariantSchema),\n\n updatedAtMs: z.number(),\n })\n .strict();\nexport type MediaServingAuthorityRecord = z.infer<typeof MediaServingAuthorityRecordSchema>;\n\nexport const MediaAssetRetirementDeferralSchema = z.enum(['held', 'failed']);\nexport type MediaAssetRetirementDeferral = z.infer<typeof MediaAssetRetirementDeferralSchema>;\n\nexport const MediaAssetRetirementSchema = z\n .object({\n requestedAt: z.number().int().nonnegative(),\n pendingVariantKeys: z.array(z.string().min(1)),\n attemptCount: z.number().int().nonnegative(),\n nextAttemptAt: z.number().int().nonnegative(),\n lastDeferral: MediaAssetRetirementDeferralSchema.optional(),\n lastError: StructuredErrorSchema.optional(),\n })\n .strict()\n .superRefine((val, ctx) => {\n if (new Set(val.pendingVariantKeys).size !== val.pendingVariantKeys.length) {\n ctx.addIssue({\n code: 'custom',\n path: ['pendingVariantKeys'],\n message: 'a variant key is owed at most once',\n });\n }\n if (val.lastError !== undefined && val.lastDeferral !== 'failed') {\n ctx.addIssue({\n code: 'custom',\n path: ['lastError'],\n message: 'an error is recorded only for a failed attempt',\n });\n }\n });\nexport type MediaAssetRetirement = z.infer<typeof MediaAssetRetirementSchema>;\n\nexport const MediaAssetSchema = z\n .object({\n mediaAssetId: z.string().min(1),\n mediaKind: ContentMediaKindSchema,\n fileOrigin: FileOriginSchema,\n\n ownerType: MediaAssetOwnerTypeSchema,\n ownerId: z.string().min(1),\n workProjectId: z.string().optional(),\n realmId: z.string().optional(),\n createdByUid: z.string().min(1),\n\n accessTier: MediaAccessTierSchema,\n servingStatus: MediaServingStatusSchema,\n\n variants: z.record(z.string(), MediaAssetVariantSchema),\n\n moderationStatus: z.enum(['approved', 'quarantined']),\n retentionPolicy: MediaRetentionPolicySchema,\n legalHold: z.boolean(),\n originalDeletedAt: z.number().optional(),\n\n originLineage: MediaOriginLineageV1Schema.optional(),\n\n realmFileCanonStatus: RealmFileCanonStatusSchema,\n\n realmFileFolderId: z.string().min(1).optional(),\n\n realmFileShareRequestId: z.string().min(1).optional(),\n realmFileShareRequestedByUid: z.string().min(1).optional(),\n realmFileShareRequestedAt: z.number().optional(),\n\n authorityVersion: z.number().int().nonnegative().optional(),\n authorityPayloadHash: z.string().optional(),\n authoritySyncState: MediaAuthoritySyncStateSchema.optional(),\n publicationState: MediaAssetPublicationStateSchema.optional(),\n scope: MediaServingScopeSchema.optional(),\n authorityAppliedAt: z.number().optional(),\n publishedAt: z.number().optional(),\n lastAuthorityError: StructuredErrorSchema.optional(),\n authoritySyncAttemptCount: z.number().int().nonnegative().optional(),\n authoritySyncNextAttemptAt: z.number().optional(),\n\n retirement: MediaAssetRetirementSchema.optional(),\n\n createdAt: z.number(),\n updatedAt: z.number(),\n })\n .strict()\n .superRefine((val, ctx) => {\n if (val.retirement !== undefined) {\n if (val.servingStatus === 'servable') {\n ctx.addIssue({\n code: 'custom',\n path: ['servingStatus'],\n message: 'an asset owing retirement is never servable',\n });\n }\n if (val.publicationState === 'retired') {\n ctx.addIssue({\n code: 'custom',\n path: ['retirement'],\n message: 'a retired asset owes no retirement',\n });\n }\n for (const key of val.retirement.pendingVariantKeys) {\n if (!Object.prototype.hasOwnProperty.call(val.variants, key)) {\n ctx.addIssue({\n code: 'custom',\n path: ['retirement', 'pendingVariantKeys'],\n message: `${key} is not one of this asset's variants`,\n });\n }\n }\n }\n\n const requestFields = [\n ['realmFileShareRequestId', val.realmFileShareRequestId],\n ['realmFileShareRequestedByUid', val.realmFileShareRequestedByUid],\n ['realmFileShareRequestedAt', val.realmFileShareRequestedAt],\n ] as const;\n\n const forbid = (path: string, value: unknown, message: string) => {\n if (value !== undefined) ctx.addIssue({ code: 'custom', path: [path], message });\n };\n const require_ = (path: string, value: unknown, message: string) => {\n if (value === undefined) ctx.addIssue({ code: 'custom', path: [path], message });\n };\n\n if (val.realmFileCanonStatus === 'none') {\n forbid(\n 'realmId',\n val.realmId,\n 'realmId is only set on a realm-shared or pending asset (realmFileCanonStatus is \"none\")',\n );\n forbid(\n 'realmFileFolderId',\n val.realmFileFolderId,\n 'realmFileFolderId is only set on an APPROVED realm-shared asset (realmFileCanonStatus is \"none\")',\n );\n for (const [path, value] of requestFields) {\n forbid(\n path,\n value,\n `${path} is only set while a promotion request is pending (realmFileCanonStatus is \"none\")`,\n );\n }\n return;\n }\n\n require_(\n 'realmId',\n val.realmId,\n `realmId is required whenever realmFileCanonStatus is \"${val.realmFileCanonStatus}\"`,\n );\n\n if (val.realmFileCanonStatus === 'pendingApproval') {\n forbid(\n 'realmFileFolderId',\n val.realmFileFolderId,\n 'a pending request has no folder yet — the steward assigns the folder AT approval',\n );\n for (const [path, value] of requestFields) {\n require_(\n path,\n value,\n `${path} is required while realmFileCanonStatus is \"pendingApproval\"`,\n );\n }\n return;\n }\n\n require_(\n 'realmFileFolderId',\n val.realmFileFolderId,\n `realmFileFolderId is required on an approved realm file (realmFileCanonStatus is \"${val.realmFileCanonStatus}\")`,\n );\n for (const [path, value] of requestFields) {\n forbid(\n path,\n value,\n `${path} must be cleared once the request is resolved (realmFileCanonStatus is \"${val.realmFileCanonStatus}\")`,\n );\n }\n });\nexport type MediaAsset = z.infer<typeof MediaAssetSchema>;\n\nexport const MediaAssetReapCandidateSchema = z.object({\n mediaAssetId: MediaAssetSchema.shape.mediaAssetId,\n ownerId: MediaAssetSchema.shape.ownerId,\n createdAt: MediaAssetSchema.shape.createdAt,\n publicationState: MediaAssetSchema.shape.publicationState,\n retirement: MediaAssetSchema.shape.retirement,\n});\nexport type MediaAssetReapCandidate = z.infer<typeof MediaAssetReapCandidateSchema>;\n\nexport const MediaAssetHoldFieldsSchema = z.object({\n mediaAssetId: MediaAssetSchema.shape.mediaAssetId,\n originLineage: MediaAssetSchema.shape.originLineage,\n legalHold: MediaAssetSchema.shape.legalHold,\n});\nexport type MediaAssetHoldFields = z.infer<typeof MediaAssetHoldFieldsSchema>;\n\nexport type MediaAssetRetirementStanding = 'absent' | 'retired' | 'owed' | 'none';\n\nexport function mediaAssetRetirementStanding(\n asset: Pick<MediaAsset, 'publicationState' | 'retirement'> | undefined,\n): MediaAssetRetirementStanding {\n if (asset === undefined) return 'absent';\n if (asset.publicationState === 'retired') return 'retired';\n if (asset.retirement !== undefined) return 'owed';\n return 'none';\n}\n\nexport function servingStatusOnRetirementRequest(current: MediaServingStatus): MediaServingStatus {\n return current === 'servable' ? 'hidden' : current;\n}\n\nexport function servingStatusOnRetirementComplete(current: MediaServingStatus): MediaServingStatus {\n return current === 'quarantined' ? 'quarantined' : 'deleted';\n}\n"]}
|