@ttt-productions/ttt-core 0.79.120 → 0.79.121
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/notification-ledger.d.ts +20 -0
- package/dist/doc-schemas/notification-ledger.d.ts.map +1 -1
- package/dist/doc-schemas/notification-ledger.js +1 -1
- package/dist/doc-schemas/notification-ledger.js.map +1 -1
- package/dist/media/index.d.ts +1 -0
- package/dist/media/index.d.ts.map +1 -1
- package/dist/media/index.js +1 -0
- package/dist/media/index.js.map +1 -1
- package/dist/media/media-authority-co-write.d.ts +16 -0
- package/dist/media/media-authority-co-write.d.ts.map +1 -0
- package/dist/media/media-authority-co-write.js +14 -0
- package/dist/media/media-authority-co-write.js.map +1 -0
- package/dist/safety/index.d.ts +1 -0
- package/dist/safety/index.d.ts.map +1 -1
- package/dist/safety/index.js +1 -0
- package/dist/safety/index.js.map +1 -1
- package/dist/safety/report-keys.d.ts +15 -0
- package/dist/safety/report-keys.d.ts.map +1 -0
- package/dist/safety/report-keys.js +25 -0
- package/dist/safety/report-keys.js.map +1 -0
- package/dist/utils/admin-tasks.d.ts +51 -0
- package/dist/utils/admin-tasks.d.ts.map +1 -0
- package/dist/utils/admin-tasks.js +107 -0
- package/dist/utils/admin-tasks.js.map +1 -0
- package/dist/utils/index.d.ts +1 -0
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +1 -0
- package/dist/utils/index.js.map +1 -1
- package/package.json +1 -1
|
@@ -87,6 +87,26 @@ export declare const NotificationFanoutPhaseSelectorSchema: z.ZodDiscriminatedUn
|
|
|
87
87
|
}, z.core.$strip>], "kind">;
|
|
88
88
|
export type NotificationFanoutPhaseSelector = z.infer<typeof NotificationFanoutPhaseSelectorSchema>;
|
|
89
89
|
export type NotificationFanoutPhaseSelectorKind = NotificationFanoutPhaseSelector['kind'];
|
|
90
|
+
export declare const NOTIFICATION_FANOUT_CURSOR_SCHEMA_BY_KIND: {
|
|
91
|
+
readonly workFollowers: z.ZodNullable<z.ZodString>;
|
|
92
|
+
readonly realmFollowers: z.ZodNullable<z.ZodString>;
|
|
93
|
+
readonly userFollowers: z.ZodNullable<z.ZodString>;
|
|
94
|
+
readonly workGuildMembers: z.ZodNullable<z.ZodString>;
|
|
95
|
+
readonly allActiveUsers: z.ZodNullable<z.ZodString>;
|
|
96
|
+
readonly workMembers: z.ZodNullable<z.ZodNumber>;
|
|
97
|
+
readonly explicitUids: z.ZodNullable<z.ZodNumber>;
|
|
98
|
+
readonly userFollowersMany: z.ZodUnion<[z.ZodNull, z.ZodObject<{
|
|
99
|
+
memberGroupIndex: z.ZodNumber;
|
|
100
|
+
lastEdgeDocId: z.ZodNullable<z.ZodString>;
|
|
101
|
+
}, z.core.$strip>]>;
|
|
102
|
+
readonly realmMembers: z.ZodUnion<[z.ZodNull, z.ZodObject<{
|
|
103
|
+
workId: z.ZodNullable<z.ZodString>;
|
|
104
|
+
workCursor: z.ZodNullable<z.ZodString>;
|
|
105
|
+
memberCursor: z.ZodNullable<z.ZodString>;
|
|
106
|
+
}, z.core.$strip>]>;
|
|
107
|
+
readonly allArtisans: z.ZodNullable<z.ZodString>;
|
|
108
|
+
};
|
|
109
|
+
export type NotificationFanoutCursor<K extends NotificationFanoutPhaseSelectorKind> = z.infer<(typeof NOTIFICATION_FANOUT_CURSOR_SCHEMA_BY_KIND)[K]>;
|
|
90
110
|
export declare const NotificationFanoutPhaseSchema: z.ZodObject<{
|
|
91
111
|
selector: z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
92
112
|
kind: z.ZodLiteral<"workFollowers">;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"notification-ledger.d.ts","sourceRoot":"","sources":["../../src/doc-schemas/notification-ledger.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAMxB,eAAO,MAAM,iCAAiC;;;;iBAI5C,CAAC;AAEH,eAAO,MAAM,+BAA+B;;;;;EAKE,CAAC;AAC/C,MAAM,MAAM,yBAAyB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,+BAA+B,CAAC,CAAC;AAExF,eAAO,MAAM,oCAAoC;;EAEE,CAAC;AACpD,MAAM,MAAM,8BAA8B,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oCAAoC,CAAC,CAAC;AAElG,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBA+BnC,CAAC;AACL,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,0BAA0B,CAAC,CAAC;AAE9E,eAAO,MAAM,qCAAqC;;;;;;;;;;;;;;;;;;;;;;;;;;;;2BAWhD,CAAC;AACH,MAAM,MAAM,+BAA+B,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qCAAqC,CAAC,CAAC;AACpG,MAAM,MAAM,mCAAmC,GAAG,+BAA+B,CAAC,MAAM,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"notification-ledger.d.ts","sourceRoot":"","sources":["../../src/doc-schemas/notification-ledger.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAMxB,eAAO,MAAM,iCAAiC;;;;iBAI5C,CAAC;AAEH,eAAO,MAAM,+BAA+B;;;;;EAKE,CAAC;AAC/C,MAAM,MAAM,yBAAyB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,+BAA+B,CAAC,CAAC;AAExF,eAAO,MAAM,oCAAoC;;EAEE,CAAC;AACpD,MAAM,MAAM,8BAA8B,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oCAAoC,CAAC,CAAC;AAElG,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBA+BnC,CAAC;AACL,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,0BAA0B,CAAC,CAAC;AAE9E,eAAO,MAAM,qCAAqC;;;;;;;;;;;;;;;;;;;;;;;;;;;;2BAWhD,CAAC;AACH,MAAM,MAAM,+BAA+B,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qCAAqC,CAAC,CAAC;AACpG,MAAM,MAAM,mCAAmC,GAAG,+BAA+B,CAAC,MAAM,CAAC,CAAC;AA0B1F,eAAO,MAAM,yCAAyC;;;;;;;;;;;;;;;;;;CAsBqB,CAAC;AAC5E,MAAM,MAAM,wBAAwB,CAAC,CAAC,SAAS,mCAAmC,IAAI,CAAC,CAAC,KAAK,CAC3F,CAAC,OAAO,yCAAyC,CAAC,CAAC,CAAC,CAAC,CACtD,CAAC;AAEF,eAAO,MAAM,6BAA6B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAgBtC,CAAC;AACL,MAAM,MAAM,uBAAuB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,6BAA6B,CAAC,CAAC;AAEpF,eAAO,MAAM,gCAAgC,yBAA4C,CAAC;AA0B1F,eAAO,MAAM,2BAA2B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAwBvC,CAAC;AACF,MAAM,MAAM,qBAAqB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,2BAA2B,CAAC,CAAC"}
|
|
@@ -78,7 +78,7 @@ const allArtisansCursorSchema = z
|
|
|
78
78
|
return false;
|
|
79
79
|
}
|
|
80
80
|
}, { message: 'allArtisans cursor must be null or JSON {artisanCreator:number, uid:string}' });
|
|
81
|
-
const NOTIFICATION_FANOUT_CURSOR_SCHEMA_BY_KIND = {
|
|
81
|
+
export const NOTIFICATION_FANOUT_CURSOR_SCHEMA_BY_KIND = {
|
|
82
82
|
workFollowers: docIdCursorSchema,
|
|
83
83
|
realmFollowers: docIdCursorSchema,
|
|
84
84
|
userFollowers: docIdCursorSchema,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"notification-ledger.js","sourceRoot":"","sources":["../../src/doc-schemas/notification-ledger.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,8BAA8B,EAAE,MAAM,mCAAmC,CAAC;AAEnF,MAAM,aAAa,GAAG,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC;AAE7C,MAAM,CAAC,MAAM,iCAAiC,GAAG,CAAC,CAAC,MAAM,CAAC;IACxD,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC9B,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC;IAC3C,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE;CACzB,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,+BAA+B,GAAG,CAAC,CAAC,IAAI,CAAC;IACpD,QAAQ;IACR,cAAc;IACd,SAAS;IACT,YAAY;CAC+B,CAAC,CAAC;AAG/C,MAAM,CAAC,MAAM,oCAAoC,GAAG,CAAC,CAAC,IAAI,CAAC;IACzD,qBAAqB;CAC2B,CAAC,CAAC;AAGpD,MAAM,CAAC,MAAM,0BAA0B,GAAG,CAAC;KACxC,MAAM,CAAC;IACN,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE;IACtB,KAAK,EAAE,+BAA+B;IACtC,gBAAgB,EAAE,CAAC,CAAC,MAAM,EAAE;IAC5B,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;IACnB,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACnC,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE;IAC1B,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,eAAe,CAAC,CAAC;IAChD,OAAO,EAAE,iCAAiC;IAC1C,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE;IAC1B,oBAAoB,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,cAAc,EAAE,kBAAkB,EAAE,cAAc,EAAE,OAAO,CAAC,CAAC;IAC3F,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;IACrB,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE;IACxB,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE;IACzB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAChC,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACrC,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACrC,UAAU,EAAE,oCAAoC,CAAC,QAAQ,EAAE;IAC3D,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAChC,QAAQ,EAAE,aAAa;CACxB,CAAC;KACD,WAAW,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;IACxB,MAAM,OAAO,GAAG,GAAG,CAAC,KAAK,KAAK,SAAS,CAAC;IACxC,IAAI,OAAO,KAAK,CAAC,GAAG,CAAC,UAAU,KAAK,SAAS,CAAC,IAAI,OAAO,KAAK,CAAC,GAAG,CAAC,SAAS,KAAK,SAAS,CAAC,EAAE,CAAC;QAC5F,GAAG,CAAC,QAAQ,CAAC;YACX,IAAI,EAAE,QAAQ;YACd,IAAI,EAAE,CAAC,OAAO,CAAC;YACf,OAAO,EAAE,yEAAyE;SACnF,CAAC,CAAC;IACL,CAAC;AACH,CAAC,CAAC,CAAC;AAGL,MAAM,CAAC,MAAM,qCAAqC,GAAG,CAAC,CAAC,kBAAkB,CAAC,MAAM,EAAE;IAChF,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,eAAe,CAAC,EAAE,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;IAChF,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,gBAAgB,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;IAC/E,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,eAAe,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;IAC7E,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC;IAC7E,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,mBAAmB,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC;IACnF,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,kBAAkB,CAAC,EAAE,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;IACnF,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;IAC7E,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE,CAAC;IAC5C,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,gBAAgB,CAAC,EAAE,CAAC;IAC/C,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC;CACzE,CAAC,CAAC;AAIH,MAAM,iBAAiB,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC;AAChD,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;AAE9D,MAAM,uBAAuB,GAAG,CAAC;KAC9B,MAAM,EAAE;KACR,QAAQ,EAAE;KACV,MAAM,CACL,CAAC,KAAK,EAAE,EAAE;IACR,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IAChC,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAY,CAAC;QAC9C,OAAO,CACL,OAAO,QAAQ,KAAK,QAAQ;YAC5B,QAAQ,KAAK,IAAI;YACjB,OAAQ,QAAoC,CAAC,cAAc,KAAK,QAAQ;YACxE,OAAQ,QAAoC,CAAC,GAAG,KAAK,QAAQ,CAC9D,CAAC;IACJ,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC,EACD,EAAE,OAAO,EAAE,6EAA6E,EAAE,CAC3F,CAAC;AAEJ,MAAM,yCAAyC,GAAG;IAChD,aAAa,EAAE,iBAAiB;IAChC,cAAc,EAAE,iBAAiB;IACjC,aAAa,EAAE,iBAAiB;IAChC,gBAAgB,EAAE,iBAAiB;IACnC,cAAc,EAAE,iBAAiB;IACjC,WAAW,EAAE,kBAAkB;IAC/B,YAAY,EAAE,kBAAkB;IAChC,iBAAiB,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,CAC5B,CAAC,CAAC,MAAM,CAAC;QACP,gBAAgB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;QACzC,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;KACrC,CAAC,CACH;IACD,YAAY,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,CACvB,CAAC,CAAC,MAAM,CAAC;QACP,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAC7B,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QACjC,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;KACpC,CAAC,CACH;IACD,WAAW,EAAE,uBAAuB;CACqC,CAAC;AAE5E,MAAM,CAAC,MAAM,6BAA6B,GAAG,CAAC;KAC3C,MAAM,CAAC;IACN,QAAQ,EAAE,qCAAqC;IAC/C,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IAC9B,IAAI,EAAE,CAAC,CAAC,OAAO,EAAE;CAClB,CAAC;KACD,WAAW,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;IAC1B,MAAM,YAAY,GAAc,yCAAyC,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC/F,MAAM,MAAM,GAAG,YAAY,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IACpD,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACpB,GAAG,CAAC,QAAQ,CAAC;YACX,IAAI,EAAE,QAAQ;YACd,IAAI,EAAE,CAAC,QAAQ,CAAC;YAChB,OAAO,EAAE,2CAA2C,KAAK,CAAC,QAAQ,CAAC,IAAI,MAAM,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,OAAO,IAAI,YAAY,EAAE;SAC/H,CAAC,CAAC;IACL,CAAC;AACH,CAAC,CAAC,CAAC;AAGL,MAAM,CAAC,MAAM,gCAAgC,GAAG,CAAC,CAAC,OAAO,CAAC,8BAA8B,CAAC,CAAC;AAE1F,MAAM,+BAA+B,GAAG,CAAC,CAAC,MAAM,CAAC;IAC/C,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACxB,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE;IACzB,gBAAgB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACnC,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC1B,QAAQ,EAAE,gCAAgC;IAC1C,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC;IAC1C,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IACrD,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACnC,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACjC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,UAAU,EAAE,YAAY,CAAC,CAAC;IACrD,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACrC,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE;IACzB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAChC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;IACrB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;IACrB,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAClC,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACrC,QAAQ,EAAE,aAAa;IACvB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IACvC,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IACtC,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;CAC1C,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,2BAA2B,GAAG,+BAA+B,CAAC,WAAW,CACpF,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;IACX,IAAI,GAAG,CAAC,UAAU,IAAI,GAAG,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;QACxC,GAAG,CAAC,QAAQ,CAAC;YACX,IAAI,EAAE,QAAQ;YACd,IAAI,EAAE,CAAC,YAAY,CAAC;YACpB,OAAO,EAAE,cAAc,GAAG,CAAC,UAAU,gCAAgC,GAAG,CAAC,MAAM,CAAC,MAAM,GAAG;SAC1F,CAAC,CAAC;IACL,CAAC;IACD,MAAM,MAAM,GAAG,CAAC,WAAW,EAAE,UAAU,EAAE,aAAa,CAAU,CAAC;IACjE,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,SAAS,CAAC,CAAC;IACnE,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,OAAO,CAAC,MAAM,KAAK,MAAM,CAAC,MAAM,EAAE,CAAC;QAC7D,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YAC3B,IAAI,GAAG,CAAC,KAAK,CAAC,KAAK,SAAS,EAAE,CAAC;gBAC7B,GAAG,CAAC,QAAQ,CAAC;oBACX,IAAI,EAAE,QAAQ;oBACd,IAAI,EAAE,CAAC,KAAK,CAAC;oBACb,OAAO,EACL,2FAA2F;iBAC9F,CAAC,CAAC;YACL,CAAC;QACH,CAAC;IACH,CAAC;AACH,CAAC,CACF,CAAC","sourcesContent":["import { z } from 'zod';\nimport type { DeliverySkipReason, DeliveryState } from '@ttt-productions/notification-core/server';\nimport { NOTIFICATION_FANOUT_PRIORITIES } from '../constants/business-platform.js';\n\nconst expireAtField = z.unknown().optional();\n\nexport const NotificationDeliveryPayloadSchema = z.object({\n actorId: z.string().nullable(),\n metadata: z.record(z.string(), z.unknown()),\n occurrenceAt: z.number(),\n});\n\nexport const NotificationDeliveryStateSchema = z.enum([\n 'queued',\n 'materialized',\n 'skipped',\n 'deadLetter',\n] as const satisfies readonly DeliveryState[]);\nexport type NotificationDeliveryState = z.infer<typeof NotificationDeliveryStateSchema>;\n\nexport const NotificationDeliverySkipReasonSchema = z.enum([\n 'recipientIneligible',\n] as const satisfies readonly DeliverySkipReason[]);\nexport type NotificationDeliverySkipReason = z.infer<typeof NotificationDeliverySkipReasonSchema>;\n\nexport const NotificationDeliverySchema = z\n .object({\n deliveryId: z.string(),\n state: NotificationDeliveryStateSchema,\n notificationType: z.string(),\n eventId: z.string(),\n recipientUid: z.string().nullable(),\n aggregationKey: z.string(),\n strategy: z.enum(['increment', 'staticRelight']),\n payload: NotificationDeliveryPayloadSchema,\n payloadVersion: z.number(),\n materializationClass: z.enum(['directQueued', 'realtimeFallback', 'fanoutOrphan', 'retry']),\n createdAt: z.number(),\n attemptCount: z.number(),\n nextAttemptAt: z.number(),\n lastError: z.string().nullable(),\n materializedAt: z.number().nullable(),\n deadLetteredAt: z.number().nullable(),\n skipReason: NotificationDeliverySkipReasonSchema.optional(),\n skippedAt: z.number().optional(),\n expireAt: expireAtField,\n })\n .superRefine((row, ctx) => {\n const skipped = row.state === 'skipped';\n if (skipped !== (row.skipReason !== undefined) || skipped !== (row.skippedAt !== undefined)) {\n ctx.addIssue({\n code: 'custom',\n path: ['state'],\n message: 'skipReason and skippedAt are present exactly on a skipped delivery row.',\n });\n }\n });\nexport type NotificationDelivery = z.infer<typeof NotificationDeliverySchema>;\n\nexport const NotificationFanoutPhaseSelectorSchema = z.discriminatedUnion('kind', [\n z.object({ kind: z.literal('workFollowers'), workProjectId: z.string().min(1) }),\n z.object({ kind: z.literal('realmFollowers'), workRealmId: z.string().min(1) }),\n z.object({ kind: z.literal('userFollowers'), artisanUid: z.string().min(1) }),\n z.object({ kind: z.literal('workMembers'), memberUids: z.array(z.string()) }),\n z.object({ kind: z.literal('userFollowersMany'), memberUids: z.array(z.string()) }),\n z.object({ kind: z.literal('workGuildMembers'), workProjectId: z.string().min(1) }),\n z.object({ kind: z.literal('realmMembers'), workRealmId: z.string().min(1) }),\n z.object({ kind: z.literal('allArtisans') }),\n z.object({ kind: z.literal('allActiveUsers') }),\n z.object({ kind: z.literal('explicitUids'), uids: z.array(z.string()) }),\n]);\nexport type NotificationFanoutPhaseSelector = z.infer<typeof NotificationFanoutPhaseSelectorSchema>;\nexport type NotificationFanoutPhaseSelectorKind = NotificationFanoutPhaseSelector['kind'];\n\nconst docIdCursorSchema = z.string().nullable();\nconst offsetCursorSchema = z.number().int().min(0).nullable();\n\nconst allArtisansCursorSchema = z\n .string()\n .nullable()\n .refine(\n (value) => {\n if (value === null) return true;\n try {\n const position = JSON.parse(value) as unknown;\n return (\n typeof position === 'object' &&\n position !== null &&\n typeof (position as Record<string, unknown>).artisanCreator === 'number' &&\n typeof (position as Record<string, unknown>).uid === 'string'\n );\n } catch {\n return false;\n }\n },\n { message: 'allArtisans cursor must be null or JSON {artisanCreator:number, uid:string}' },\n );\n\nconst NOTIFICATION_FANOUT_CURSOR_SCHEMA_BY_KIND = {\n workFollowers: docIdCursorSchema,\n realmFollowers: docIdCursorSchema,\n userFollowers: docIdCursorSchema,\n workGuildMembers: docIdCursorSchema,\n allActiveUsers: docIdCursorSchema,\n workMembers: offsetCursorSchema,\n explicitUids: offsetCursorSchema,\n userFollowersMany: z.null().or(\n z.object({\n memberGroupIndex: z.number().int().min(0),\n lastEdgeDocId: z.string().nullable(),\n }),\n ),\n realmMembers: z.null().or(\n z.object({\n workId: z.string().nullable(),\n workCursor: z.string().nullable(),\n memberCursor: z.string().nullable(),\n }),\n ),\n allArtisans: allArtisansCursorSchema,\n} as const satisfies Record<NotificationFanoutPhaseSelectorKind, z.ZodType>;\n\nexport const NotificationFanoutPhaseSchema = z\n .object({\n selector: NotificationFanoutPhaseSelectorSchema,\n cursor: z.unknown().nullable(),\n done: z.boolean(),\n })\n .superRefine((phase, ctx) => {\n const cursorSchema: z.ZodType = NOTIFICATION_FANOUT_CURSOR_SCHEMA_BY_KIND[phase.selector.kind];\n const result = cursorSchema.safeParse(phase.cursor);\n if (!result.success) {\n ctx.addIssue({\n code: 'custom',\n path: ['cursor'],\n message: `cursor shape invalid for selector kind '${phase.selector.kind}': ${result.error.issues[0]?.message ?? 'wrong type'}`,\n });\n }\n });\nexport type NotificationFanoutPhase = z.infer<typeof NotificationFanoutPhaseSchema>;\n\nexport const NotificationFanoutPrioritySchema = z.literal(NOTIFICATION_FANOUT_PRIORITIES);\n\nconst NotificationFanoutJobBaseSchema = z.object({\n jobId: z.string().min(1),\n schemaVersion: z.number(),\n notificationType: z.string().min(1),\n eventId: z.string().min(1),\n priority: NotificationFanoutPrioritySchema,\n payload: z.record(z.string(), z.unknown()),\n phases: z.array(NotificationFanoutPhaseSchema).min(1),\n phaseIndex: z.number().int().min(0),\n revision: z.number().int().min(0),\n status: z.enum(['pending', 'complete', 'deadLetter']),\n attemptCount: z.number().int().min(0),\n nextAttemptAt: z.number(),\n lastError: z.string().nullable(),\n createdAt: z.number(),\n updatedAt: z.number(),\n completedAt: z.number().nullable(),\n deadLetteredAt: z.number().nullable(),\n expireAt: expireAtField,\n requestId: z.string().min(1).optional(),\n actorUid: z.string().min(1).optional(),\n payloadHash: z.string().min(1).optional(),\n});\n\nexport const NotificationFanoutJobSchema = NotificationFanoutJobBaseSchema.superRefine(\n (job, ctx) => {\n if (job.phaseIndex >= job.phases.length) {\n ctx.addIssue({\n code: 'custom',\n path: ['phaseIndex'],\n message: `phaseIndex ${job.phaseIndex} out of range (phases.length=${job.phases.length})`,\n });\n }\n const fields = ['requestId', 'actorUid', 'payloadHash'] as const;\n const present = fields.filter((field) => job[field] !== undefined);\n if (present.length !== 0 && present.length !== fields.length) {\n for (const field of fields) {\n if (job[field] === undefined) {\n ctx.addIssue({\n code: 'custom',\n path: [field],\n message:\n 'Admin-broadcast replay provenance requires requestId, actorUid, and payloadHash together.',\n });\n }\n }\n }\n },\n);\nexport type NotificationFanoutJob = z.infer<typeof NotificationFanoutJobSchema>;\n"]}
|
|
1
|
+
{"version":3,"file":"notification-ledger.js","sourceRoot":"","sources":["../../src/doc-schemas/notification-ledger.ts"],"names":[],"mappings":"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","sourcesContent":["import { z } from 'zod';\nimport type { DeliverySkipReason, DeliveryState } from '@ttt-productions/notification-core/server';\nimport { NOTIFICATION_FANOUT_PRIORITIES } from '../constants/business-platform.js';\n\nconst expireAtField = z.unknown().optional();\n\nexport const NotificationDeliveryPayloadSchema = z.object({\n actorId: z.string().nullable(),\n metadata: z.record(z.string(), z.unknown()),\n occurrenceAt: z.number(),\n});\n\nexport const NotificationDeliveryStateSchema = z.enum([\n 'queued',\n 'materialized',\n 'skipped',\n 'deadLetter',\n] as const satisfies readonly DeliveryState[]);\nexport type NotificationDeliveryState = z.infer<typeof NotificationDeliveryStateSchema>;\n\nexport const NotificationDeliverySkipReasonSchema = z.enum([\n 'recipientIneligible',\n] as const satisfies readonly DeliverySkipReason[]);\nexport type NotificationDeliverySkipReason = z.infer<typeof NotificationDeliverySkipReasonSchema>;\n\nexport const NotificationDeliverySchema = z\n .object({\n deliveryId: z.string(),\n state: NotificationDeliveryStateSchema,\n notificationType: z.string(),\n eventId: z.string(),\n recipientUid: z.string().nullable(),\n aggregationKey: z.string(),\n strategy: z.enum(['increment', 'staticRelight']),\n payload: NotificationDeliveryPayloadSchema,\n payloadVersion: z.number(),\n materializationClass: z.enum(['directQueued', 'realtimeFallback', 'fanoutOrphan', 'retry']),\n createdAt: z.number(),\n attemptCount: z.number(),\n nextAttemptAt: z.number(),\n lastError: z.string().nullable(),\n materializedAt: z.number().nullable(),\n deadLetteredAt: z.number().nullable(),\n skipReason: NotificationDeliverySkipReasonSchema.optional(),\n skippedAt: z.number().optional(),\n expireAt: expireAtField,\n })\n .superRefine((row, ctx) => {\n const skipped = row.state === 'skipped';\n if (skipped !== (row.skipReason !== undefined) || skipped !== (row.skippedAt !== undefined)) {\n ctx.addIssue({\n code: 'custom',\n path: ['state'],\n message: 'skipReason and skippedAt are present exactly on a skipped delivery row.',\n });\n }\n });\nexport type NotificationDelivery = z.infer<typeof NotificationDeliverySchema>;\n\nexport const NotificationFanoutPhaseSelectorSchema = z.discriminatedUnion('kind', [\n z.object({ kind: z.literal('workFollowers'), workProjectId: z.string().min(1) }),\n z.object({ kind: z.literal('realmFollowers'), workRealmId: z.string().min(1) }),\n z.object({ kind: z.literal('userFollowers'), artisanUid: z.string().min(1) }),\n z.object({ kind: z.literal('workMembers'), memberUids: z.array(z.string()) }),\n z.object({ kind: z.literal('userFollowersMany'), memberUids: z.array(z.string()) }),\n z.object({ kind: z.literal('workGuildMembers'), workProjectId: z.string().min(1) }),\n z.object({ kind: z.literal('realmMembers'), workRealmId: z.string().min(1) }),\n z.object({ kind: z.literal('allArtisans') }),\n z.object({ kind: z.literal('allActiveUsers') }),\n z.object({ kind: z.literal('explicitUids'), uids: z.array(z.string()) }),\n]);\nexport type NotificationFanoutPhaseSelector = z.infer<typeof NotificationFanoutPhaseSelectorSchema>;\nexport type NotificationFanoutPhaseSelectorKind = NotificationFanoutPhaseSelector['kind'];\n\nconst docIdCursorSchema = z.string().nullable();\nconst offsetCursorSchema = z.number().int().min(0).nullable();\n\nconst allArtisansCursorSchema = z\n .string()\n .nullable()\n .refine(\n (value) => {\n if (value === null) return true;\n try {\n const position = JSON.parse(value) as unknown;\n return (\n typeof position === 'object' &&\n position !== null &&\n typeof (position as Record<string, unknown>).artisanCreator === 'number' &&\n typeof (position as Record<string, unknown>).uid === 'string'\n );\n } catch {\n return false;\n }\n },\n { message: 'allArtisans cursor must be null or JSON {artisanCreator:number, uid:string}' },\n );\n\nexport const NOTIFICATION_FANOUT_CURSOR_SCHEMA_BY_KIND = {\n workFollowers: docIdCursorSchema,\n realmFollowers: docIdCursorSchema,\n userFollowers: docIdCursorSchema,\n workGuildMembers: docIdCursorSchema,\n allActiveUsers: docIdCursorSchema,\n workMembers: offsetCursorSchema,\n explicitUids: offsetCursorSchema,\n userFollowersMany: z.null().or(\n z.object({\n memberGroupIndex: z.number().int().min(0),\n lastEdgeDocId: z.string().nullable(),\n }),\n ),\n realmMembers: z.null().or(\n z.object({\n workId: z.string().nullable(),\n workCursor: z.string().nullable(),\n memberCursor: z.string().nullable(),\n }),\n ),\n allArtisans: allArtisansCursorSchema,\n} as const satisfies Record<NotificationFanoutPhaseSelectorKind, z.ZodType>;\nexport type NotificationFanoutCursor<K extends NotificationFanoutPhaseSelectorKind> = z.infer<\n (typeof NOTIFICATION_FANOUT_CURSOR_SCHEMA_BY_KIND)[K]\n>;\n\nexport const NotificationFanoutPhaseSchema = z\n .object({\n selector: NotificationFanoutPhaseSelectorSchema,\n cursor: z.unknown().nullable(),\n done: z.boolean(),\n })\n .superRefine((phase, ctx) => {\n const cursorSchema: z.ZodType = NOTIFICATION_FANOUT_CURSOR_SCHEMA_BY_KIND[phase.selector.kind];\n const result = cursorSchema.safeParse(phase.cursor);\n if (!result.success) {\n ctx.addIssue({\n code: 'custom',\n path: ['cursor'],\n message: `cursor shape invalid for selector kind '${phase.selector.kind}': ${result.error.issues[0]?.message ?? 'wrong type'}`,\n });\n }\n });\nexport type NotificationFanoutPhase = z.infer<typeof NotificationFanoutPhaseSchema>;\n\nexport const NotificationFanoutPrioritySchema = z.literal(NOTIFICATION_FANOUT_PRIORITIES);\n\nconst NotificationFanoutJobBaseSchema = z.object({\n jobId: z.string().min(1),\n schemaVersion: z.number(),\n notificationType: z.string().min(1),\n eventId: z.string().min(1),\n priority: NotificationFanoutPrioritySchema,\n payload: z.record(z.string(), z.unknown()),\n phases: z.array(NotificationFanoutPhaseSchema).min(1),\n phaseIndex: z.number().int().min(0),\n revision: z.number().int().min(0),\n status: z.enum(['pending', 'complete', 'deadLetter']),\n attemptCount: z.number().int().min(0),\n nextAttemptAt: z.number(),\n lastError: z.string().nullable(),\n createdAt: z.number(),\n updatedAt: z.number(),\n completedAt: z.number().nullable(),\n deadLetteredAt: z.number().nullable(),\n expireAt: expireAtField,\n requestId: z.string().min(1).optional(),\n actorUid: z.string().min(1).optional(),\n payloadHash: z.string().min(1).optional(),\n});\n\nexport const NotificationFanoutJobSchema = NotificationFanoutJobBaseSchema.superRefine(\n (job, ctx) => {\n if (job.phaseIndex >= job.phases.length) {\n ctx.addIssue({\n code: 'custom',\n path: ['phaseIndex'],\n message: `phaseIndex ${job.phaseIndex} out of range (phases.length=${job.phases.length})`,\n });\n }\n const fields = ['requestId', 'actorUid', 'payloadHash'] as const;\n const present = fields.filter((field) => job[field] !== undefined);\n if (present.length !== 0 && present.length !== fields.length) {\n for (const field of fields) {\n if (job[field] === undefined) {\n ctx.addIssue({\n code: 'custom',\n path: [field],\n message:\n 'Admin-broadcast replay provenance requires requestId, actorUid, and payloadHash together.',\n });\n }\n }\n }\n },\n);\nexport type NotificationFanoutJob = z.infer<typeof NotificationFanoutJobSchema>;\n"]}
|
package/dist/media/index.d.ts
CHANGED
|
@@ -15,5 +15,6 @@ export * from './upload-tray-display.js';
|
|
|
15
15
|
export * from './media-asset-url.js';
|
|
16
16
|
export * from './download-filename.js';
|
|
17
17
|
export * from './edge-serving-contract.js';
|
|
18
|
+
export * from './media-authority-co-write.js';
|
|
18
19
|
export * from './publication/publication-args.js';
|
|
19
20
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/media/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,KAAK,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACrE,OAAO,EACL,aAAa,EACb,iBAAiB,EACjB,kCAAkC,EAClC,wBAAwB,EACxB,uBAAuB,EACvB,sBAAsB,EACtB,6BAA6B,EAC7B,2BAA2B,EAC3B,8BAA8B,EAC9B,+BAA+B,EAC/B,KAAK,OAAO,EACZ,KAAK,WAAW,EAChB,KAAK,qBAAqB,EAC1B,KAAK,0BAA0B,GAChC,MAAM,YAAY,CAAC;AACpB,cAAc,4BAA4B,CAAC;AAC3C,cAAc,oBAAoB,CAAC;AACnC,cAAc,yBAAyB,CAAC;AACxC,cAAc,yBAAyB,CAAC;AACxC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,0BAA0B,CAAC;AACzC,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AACjC,cAAc,iCAAiC,CAAC;AAChD,cAAc,oBAAoB,CAAC;AACnC,cAAc,0BAA0B,CAAC;AACzC,cAAc,sBAAsB,CAAC;AACrC,cAAc,wBAAwB,CAAC;AACvC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,mCAAmC,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/media/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,KAAK,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACrE,OAAO,EACL,aAAa,EACb,iBAAiB,EACjB,kCAAkC,EAClC,wBAAwB,EACxB,uBAAuB,EACvB,sBAAsB,EACtB,6BAA6B,EAC7B,2BAA2B,EAC3B,8BAA8B,EAC9B,+BAA+B,EAC/B,KAAK,OAAO,EACZ,KAAK,WAAW,EAChB,KAAK,qBAAqB,EAC1B,KAAK,0BAA0B,GAChC,MAAM,YAAY,CAAC;AACpB,cAAc,4BAA4B,CAAC;AAC3C,cAAc,oBAAoB,CAAC;AACnC,cAAc,yBAAyB,CAAC;AACxC,cAAc,yBAAyB,CAAC;AACxC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,0BAA0B,CAAC;AACzC,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AACjC,cAAc,iCAAiC,CAAC;AAChD,cAAc,oBAAoB,CAAC;AACnC,cAAc,0BAA0B,CAAC;AACzC,cAAc,sBAAsB,CAAC;AACrC,cAAc,wBAAwB,CAAC;AACvC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,mCAAmC,CAAC"}
|
package/dist/media/index.js
CHANGED
|
@@ -15,5 +15,6 @@ export * from './upload-tray-display.js';
|
|
|
15
15
|
export * from './media-asset-url.js';
|
|
16
16
|
export * from './download-filename.js';
|
|
17
17
|
export * from './edge-serving-contract.js';
|
|
18
|
+
export * from './media-authority-co-write.js';
|
|
18
19
|
export * from './publication/publication-args.js';
|
|
19
20
|
//# sourceMappingURL=index.js.map
|
package/dist/media/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/media/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAmB,MAAM,kBAAkB,CAAC;AACrE,OAAO,EACL,aAAa,EACb,iBAAiB,EACjB,kCAAkC,EAClC,wBAAwB,EACxB,uBAAuB,EACvB,sBAAsB,EACtB,6BAA6B,EAC7B,2BAA2B,EAC3B,8BAA8B,EAC9B,+BAA+B,GAKhC,MAAM,YAAY,CAAC;AACpB,cAAc,4BAA4B,CAAC;AAC3C,cAAc,oBAAoB,CAAC;AACnC,cAAc,yBAAyB,CAAC;AACxC,cAAc,yBAAyB,CAAC;AACxC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,0BAA0B,CAAC;AACzC,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AACjC,cAAc,iCAAiC,CAAC;AAChD,cAAc,oBAAoB,CAAC;AACnC,cAAc,0BAA0B,CAAC;AACzC,cAAc,sBAAsB,CAAC;AACrC,cAAc,wBAAwB,CAAC;AACvC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,mCAAmC,CAAC","sourcesContent":["export { FileOriginSchema, type FileOrigin } from './file-origin.js';\nexport {\n MentionSchema,\n MentionTypeSchema,\n rejectDuplicateMentionPlaceholders,\n MentionPlaceholderSchema,\n buildMentionPlaceholder,\n tokenizeMentionContent,\n validateMentionCorrespondence,\n refineMentionCorrespondence,\n SquareStreetzPostMentionSchema,\n SquareStreetzPostMentionsSchema,\n type Mention,\n type MentionType,\n type MentionContentSegment,\n type MentionCorrespondenceIssue,\n} from './atoms.js';\nexport * from './conversation-file-ref.js';\nexport * from './domain-events.js';\nexport * from './domain-events-user.js';\nexport * from './domain-events-work.js';\nexport * from './domain-events-social.js';\nexport * from './domain-events-admin.js';\nexport { TTT_MEDIA_SPECS } from './ttt-media-specs.js';\nexport * from './start-upload.js';\nexport * from './target-info.js';\nexport * from './hall-library-target-fields.js';\nexport * from './pending-media.js';\nexport * from './upload-tray-display.js';\nexport * from './media-asset-url.js';\nexport * from './download-filename.js';\nexport * from './edge-serving-contract.js';\nexport * from './publication/publication-args.js';\n"]}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/media/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAmB,MAAM,kBAAkB,CAAC;AACrE,OAAO,EACL,aAAa,EACb,iBAAiB,EACjB,kCAAkC,EAClC,wBAAwB,EACxB,uBAAuB,EACvB,sBAAsB,EACtB,6BAA6B,EAC7B,2BAA2B,EAC3B,8BAA8B,EAC9B,+BAA+B,GAKhC,MAAM,YAAY,CAAC;AACpB,cAAc,4BAA4B,CAAC;AAC3C,cAAc,oBAAoB,CAAC;AACnC,cAAc,yBAAyB,CAAC;AACxC,cAAc,yBAAyB,CAAC;AACxC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,0BAA0B,CAAC;AACzC,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AACjC,cAAc,iCAAiC,CAAC;AAChD,cAAc,oBAAoB,CAAC;AACnC,cAAc,0BAA0B,CAAC;AACzC,cAAc,sBAAsB,CAAC;AACrC,cAAc,wBAAwB,CAAC;AACvC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,mCAAmC,CAAC","sourcesContent":["export { FileOriginSchema, type FileOrigin } from './file-origin.js';\nexport {\n MentionSchema,\n MentionTypeSchema,\n rejectDuplicateMentionPlaceholders,\n MentionPlaceholderSchema,\n buildMentionPlaceholder,\n tokenizeMentionContent,\n validateMentionCorrespondence,\n refineMentionCorrespondence,\n SquareStreetzPostMentionSchema,\n SquareStreetzPostMentionsSchema,\n type Mention,\n type MentionType,\n type MentionContentSegment,\n type MentionCorrespondenceIssue,\n} from './atoms.js';\nexport * from './conversation-file-ref.js';\nexport * from './domain-events.js';\nexport * from './domain-events-user.js';\nexport * from './domain-events-work.js';\nexport * from './domain-events-social.js';\nexport * from './domain-events-admin.js';\nexport { TTT_MEDIA_SPECS } from './ttt-media-specs.js';\nexport * from './start-upload.js';\nexport * from './target-info.js';\nexport * from './hall-library-target-fields.js';\nexport * from './pending-media.js';\nexport * from './upload-tray-display.js';\nexport * from './media-asset-url.js';\nexport * from './download-filename.js';\nexport * from './edge-serving-contract.js';\nexport * from './media-authority-co-write.js';\nexport * from './publication/publication-args.js';\n"]}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { MediaAuthoritySyncStateSchema, type MediaServingStatus } from '../doc-schemas/media-assets.js';
|
|
2
|
+
export interface MediaAuthorityCoWrite<S extends MediaServingStatus = MediaServingStatus> {
|
|
3
|
+
readonly plainFields: {
|
|
4
|
+
readonly servingStatus: S;
|
|
5
|
+
readonly authoritySyncState: typeof MediaAuthoritySyncStateSchema.enum.pending;
|
|
6
|
+
readonly authoritySyncAttemptCount: 0;
|
|
7
|
+
readonly authoritySyncNextAttemptAt: number;
|
|
8
|
+
readonly updatedAt: number;
|
|
9
|
+
};
|
|
10
|
+
readonly increment: {
|
|
11
|
+
readonly fieldPath: 'authorityVersion';
|
|
12
|
+
readonly by: 1;
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
export declare function mediaAuthorityCoWrite<S extends MediaServingStatus>(servingStatus: S, now: number): MediaAuthorityCoWrite<S>;
|
|
16
|
+
//# sourceMappingURL=media-authority-co-write.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"media-authority-co-write.d.ts","sourceRoot":"","sources":["../../src/media/media-authority-co-write.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,6BAA6B,EAC7B,KAAK,kBAAkB,EACxB,MAAM,gCAAgC,CAAC;AAExC,MAAM,WAAW,qBAAqB,CAAC,CAAC,SAAS,kBAAkB,GAAG,kBAAkB;IACtF,QAAQ,CAAC,WAAW,EAAE;QACpB,QAAQ,CAAC,aAAa,EAAE,CAAC,CAAC;QAC1B,QAAQ,CAAC,kBAAkB,EAAE,OAAO,6BAA6B,CAAC,IAAI,CAAC,OAAO,CAAC;QAC/E,QAAQ,CAAC,yBAAyB,EAAE,CAAC,CAAC;QACtC,QAAQ,CAAC,0BAA0B,EAAE,MAAM,CAAC;QAC5C,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;KAC5B,CAAC;IACF,QAAQ,CAAC,SAAS,EAAE;QAAE,QAAQ,CAAC,SAAS,EAAE,kBAAkB,CAAC;QAAC,QAAQ,CAAC,EAAE,EAAE,CAAC,CAAA;KAAE,CAAC;CAChF;AAED,wBAAgB,qBAAqB,CAAC,CAAC,SAAS,kBAAkB,EAChE,aAAa,EAAE,CAAC,EAChB,GAAG,EAAE,MAAM,GACV,qBAAqB,CAAC,CAAC,CAAC,CAW1B"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { MediaAuthoritySyncStateSchema, } from '../doc-schemas/media-assets.js';
|
|
2
|
+
export function mediaAuthorityCoWrite(servingStatus, now) {
|
|
3
|
+
return {
|
|
4
|
+
plainFields: {
|
|
5
|
+
servingStatus,
|
|
6
|
+
authoritySyncState: MediaAuthoritySyncStateSchema.enum.pending,
|
|
7
|
+
authoritySyncAttemptCount: 0,
|
|
8
|
+
authoritySyncNextAttemptAt: now,
|
|
9
|
+
updatedAt: now,
|
|
10
|
+
},
|
|
11
|
+
increment: { fieldPath: 'authorityVersion', by: 1 },
|
|
12
|
+
};
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=media-authority-co-write.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"media-authority-co-write.js","sourceRoot":"","sources":["../../src/media/media-authority-co-write.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,6BAA6B,GAE9B,MAAM,gCAAgC,CAAC;AAaxC,MAAM,UAAU,qBAAqB,CACnC,aAAgB,EAChB,GAAW;IAEX,OAAO;QACL,WAAW,EAAE;YACX,aAAa;YACb,kBAAkB,EAAE,6BAA6B,CAAC,IAAI,CAAC,OAAO;YAC9D,yBAAyB,EAAE,CAAC;YAC5B,0BAA0B,EAAE,GAAG;YAC/B,SAAS,EAAE,GAAG;SACf;QACD,SAAS,EAAE,EAAE,SAAS,EAAE,kBAAkB,EAAE,EAAE,EAAE,CAAC,EAAE;KACpD,CAAC;AACJ,CAAC","sourcesContent":["import {\n MediaAuthoritySyncStateSchema,\n type MediaServingStatus,\n} from '../doc-schemas/media-assets.js';\n\nexport interface MediaAuthorityCoWrite<S extends MediaServingStatus = MediaServingStatus> {\n readonly plainFields: {\n readonly servingStatus: S;\n readonly authoritySyncState: typeof MediaAuthoritySyncStateSchema.enum.pending;\n readonly authoritySyncAttemptCount: 0;\n readonly authoritySyncNextAttemptAt: number;\n readonly updatedAt: number;\n };\n readonly increment: { readonly fieldPath: 'authorityVersion'; readonly by: 1 };\n}\n\nexport function mediaAuthorityCoWrite<S extends MediaServingStatus>(\n servingStatus: S,\n now: number,\n): MediaAuthorityCoWrite<S> {\n return {\n plainFields: {\n servingStatus,\n authoritySyncState: MediaAuthoritySyncStateSchema.enum.pending,\n authoritySyncAttemptCount: 0,\n authoritySyncNextAttemptAt: now,\n updatedAt: now,\n },\n increment: { fieldPath: 'authorityVersion', by: 1 },\n };\n}\n"]}
|
package/dist/safety/index.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/safety/index.ts"],"names":[],"mappings":"AAEA,cAAc,oBAAoB,CAAC;AACnC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,8BAA8B,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/safety/index.ts"],"names":[],"mappings":"AAEA,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,8BAA8B,CAAC"}
|
package/dist/safety/index.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
// Kept off the main barrel so the frontend bundle never loads node:crypto.
|
|
2
2
|
export * from './resource-keys.js';
|
|
3
|
+
export * from './report-keys.js';
|
|
3
4
|
export * from './active-safety-case-alert.js';
|
|
4
5
|
export * from './ncii-intake-derivations.js';
|
|
5
6
|
//# sourceMappingURL=index.js.map
|
package/dist/safety/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/safety/index.ts"],"names":[],"mappings":"AAAA,2EAA2E;AAE3E,cAAc,oBAAoB,CAAC;AACnC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,8BAA8B,CAAC","sourcesContent":["// Kept off the main barrel so the frontend bundle never loads node:crypto.\n\nexport * from './resource-keys.js';\nexport * from './active-safety-case-alert.js';\nexport * from './ncii-intake-derivations.js';\n"]}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/safety/index.ts"],"names":[],"mappings":"AAAA,2EAA2E;AAE3E,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,8BAA8B,CAAC","sourcesContent":["// Kept off the main barrel so the frontend bundle never loads node:crypto.\n\nexport * from './resource-keys.js';\nexport * from './report-keys.js';\nexport * from './active-safety-case-alert.js';\nexport * from './ncii-intake-derivations.js';\n"]}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { ReportableItemType } from '../doc-schemas/safety/foundation.js';
|
|
2
|
+
export interface CanonicalTargetKeyInput {
|
|
3
|
+
readonly itemType: ReportableItemType;
|
|
4
|
+
readonly canonicalParentPath: string;
|
|
5
|
+
readonly canonicalItemId: string;
|
|
6
|
+
readonly revision: number;
|
|
7
|
+
}
|
|
8
|
+
export declare function canonicalTargetKey(input: CanonicalTargetKeyInput): string;
|
|
9
|
+
export interface ReportIdInput {
|
|
10
|
+
readonly reporterUid: string;
|
|
11
|
+
readonly canonicalTargetKey: string;
|
|
12
|
+
}
|
|
13
|
+
export declare function reportId(input: ReportIdInput): string;
|
|
14
|
+
export declare function reportGroupKey(canonicalTargetKeyValue: string): string;
|
|
15
|
+
//# sourceMappingURL=report-keys.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"report-keys.d.ts","sourceRoot":"","sources":["../../src/safety/report-keys.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,qCAAqC,CAAC;AAc9E,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,QAAQ,EAAE,kBAAkB,CAAC;IACtC,QAAQ,CAAC,mBAAmB,EAAE,MAAM,CAAC;IACrC,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC3B;AAID,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,uBAAuB,GAAG,MAAM,CAOzE;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAC;CACrC;AAED,wBAAgB,QAAQ,CAAC,KAAK,EAAE,aAAa,GAAG,MAAM,CAIrD;AAED,wBAAgB,cAAc,CAAC,uBAAuB,EAAE,MAAM,GAAG,MAAM,CAEtE"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { createHash } from 'node:crypto';
|
|
2
|
+
import { REPORT_CANONICAL_KEY_VERSION } from '../doc-schemas/safety/report.js';
|
|
3
|
+
function sha256Hex(input) {
|
|
4
|
+
return createHash('sha256').update(input, 'utf8').digest('hex');
|
|
5
|
+
}
|
|
6
|
+
const SEP = ':';
|
|
7
|
+
// UTF-8 bytes, never `String.length` (UTF-16 code units): the prefix must match the hashed bytes.
|
|
8
|
+
function lp(value) {
|
|
9
|
+
return `${Buffer.byteLength(value, 'utf8')}${SEP}${value}`;
|
|
10
|
+
}
|
|
11
|
+
// A change to this composition re-keys every report id and group key, so it moves only with
|
|
12
|
+
// REPORT_CANONICAL_KEY_VERSION.
|
|
13
|
+
export function canonicalTargetKey(input) {
|
|
14
|
+
const { itemType, canonicalParentPath, canonicalItemId, revision } = input;
|
|
15
|
+
return sha256Hex([REPORT_CANONICAL_KEY_VERSION, itemType, canonicalParentPath, canonicalItemId, String(revision)]
|
|
16
|
+
.map(lp)
|
|
17
|
+
.join(''));
|
|
18
|
+
}
|
|
19
|
+
export function reportId(input) {
|
|
20
|
+
return sha256Hex([REPORT_CANONICAL_KEY_VERSION, input.reporterUid, input.canonicalTargetKey].map(lp).join(''));
|
|
21
|
+
}
|
|
22
|
+
export function reportGroupKey(canonicalTargetKeyValue) {
|
|
23
|
+
return canonicalTargetKeyValue;
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=report-keys.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"report-keys.js","sourceRoot":"","sources":["../../src/safety/report-keys.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,OAAO,EAAE,4BAA4B,EAAE,MAAM,iCAAiC,CAAC;AAE/E,SAAS,SAAS,CAAC,KAAa;IAC9B,OAAO,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAClE,CAAC;AAED,MAAM,GAAG,GAAG,GAAG,CAAC;AAEhB,kGAAkG;AAClG,SAAS,EAAE,CAAC,KAAa;IACvB,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC,KAAK,EAAE,MAAM,CAAC,GAAG,GAAG,GAAG,KAAK,EAAE,CAAC;AAC7D,CAAC;AASD,4FAA4F;AAC5F,gCAAgC;AAChC,MAAM,UAAU,kBAAkB,CAAC,KAA8B;IAC/D,MAAM,EAAE,QAAQ,EAAE,mBAAmB,EAAE,eAAe,EAAE,QAAQ,EAAE,GAAG,KAAK,CAAC;IAC3E,OAAO,SAAS,CACd,CAAC,4BAA4B,EAAE,QAAQ,EAAE,mBAAmB,EAAE,eAAe,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;SAC7F,GAAG,CAAC,EAAE,CAAC;SACP,IAAI,CAAC,EAAE,CAAC,CACZ,CAAC;AACJ,CAAC;AAOD,MAAM,UAAU,QAAQ,CAAC,KAAoB;IAC3C,OAAO,SAAS,CACd,CAAC,4BAA4B,EAAE,KAAK,CAAC,WAAW,EAAE,KAAK,CAAC,kBAAkB,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAC7F,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,uBAA+B;IAC5D,OAAO,uBAAuB,CAAC;AACjC,CAAC","sourcesContent":["import { createHash } from 'node:crypto';\nimport type { ReportableItemType } from '../doc-schemas/safety/foundation.js';\nimport { REPORT_CANONICAL_KEY_VERSION } from '../doc-schemas/safety/report.js';\n\nfunction sha256Hex(input: string): string {\n return createHash('sha256').update(input, 'utf8').digest('hex');\n}\n\nconst SEP = ':';\n\n// UTF-8 bytes, never `String.length` (UTF-16 code units): the prefix must match the hashed bytes.\nfunction lp(value: string): string {\n return `${Buffer.byteLength(value, 'utf8')}${SEP}${value}`;\n}\n\nexport interface CanonicalTargetKeyInput {\n readonly itemType: ReportableItemType;\n readonly canonicalParentPath: string;\n readonly canonicalItemId: string;\n readonly revision: number;\n}\n\n// A change to this composition re-keys every report id and group key, so it moves only with\n// REPORT_CANONICAL_KEY_VERSION.\nexport function canonicalTargetKey(input: CanonicalTargetKeyInput): string {\n const { itemType, canonicalParentPath, canonicalItemId, revision } = input;\n return sha256Hex(\n [REPORT_CANONICAL_KEY_VERSION, itemType, canonicalParentPath, canonicalItemId, String(revision)]\n .map(lp)\n .join(''),\n );\n}\n\nexport interface ReportIdInput {\n readonly reporterUid: string;\n readonly canonicalTargetKey: string;\n}\n\nexport function reportId(input: ReportIdInput): string {\n return sha256Hex(\n [REPORT_CANONICAL_KEY_VERSION, input.reporterUid, input.canonicalTargetKey].map(lp).join(''),\n );\n}\n\nexport function reportGroupKey(canonicalTargetKeyValue: string): string {\n return canonicalTargetKeyValue;\n}\n"]}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { type TaskPriorityLevel, type TaskPriorityScore } from '../constants/business-admin.js';
|
|
2
|
+
import type { ThresholdItem } from '../doc-schemas/content.js';
|
|
3
|
+
import type { AdminDispatch } from '../doc-schemas/messaging.js';
|
|
4
|
+
import type { ContentAppealTask } from '../doc-schemas/moderation.js';
|
|
5
|
+
import { type AdminTaskDoc, type AdminTaskType } from '../doc-schemas/report-docs.js';
|
|
6
|
+
import type { WorkProjectType } from '../types/content.js';
|
|
7
|
+
export interface TaskPriorityData {
|
|
8
|
+
readonly [field: string]: unknown;
|
|
9
|
+
readonly totalReports?: number;
|
|
10
|
+
readonly lastReportReason?: string;
|
|
11
|
+
readonly reason?: string;
|
|
12
|
+
readonly fileType?: string;
|
|
13
|
+
readonly hallWingType?: string;
|
|
14
|
+
readonly category?: string;
|
|
15
|
+
readonly priority?: string;
|
|
16
|
+
}
|
|
17
|
+
export type PrioritizedAdminTaskType = Extract<AdminTaskType, 'userReport' | 'content-appeal' | 'thresholdLibraryReview' | 'hallContentChangeRequest' | 'adminDispatch'>;
|
|
18
|
+
interface TaskPriorityRule {
|
|
19
|
+
readonly base: TaskPriorityLevel;
|
|
20
|
+
readonly boostConditions: {
|
|
21
|
+
readonly critical?: (data: TaskPriorityData) => boolean;
|
|
22
|
+
readonly high?: (data: TaskPriorityData) => boolean;
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
export declare const TASK_PRIORITY_CONFIG: Readonly<Record<PrioritizedAdminTaskType, TaskPriorityRule>>;
|
|
26
|
+
export declare function calculateTaskPriority(taskType: PrioritizedAdminTaskType, taskData: TaskPriorityData): TaskPriorityScore;
|
|
27
|
+
export interface ContentAppealTaskInput {
|
|
28
|
+
readonly violationId: string;
|
|
29
|
+
readonly userId: string;
|
|
30
|
+
readonly fileType: string;
|
|
31
|
+
readonly rejectionReason: string;
|
|
32
|
+
readonly appealMessage: string;
|
|
33
|
+
readonly rejectedFilePath: string;
|
|
34
|
+
readonly now: number;
|
|
35
|
+
}
|
|
36
|
+
export declare function buildContentAppealTask(input: ContentAppealTaskInput): ContentAppealTask;
|
|
37
|
+
export interface ThresholdLibraryReviewTaskInput {
|
|
38
|
+
readonly thresholdItem: Pick<ThresholdItem, 'thresholdItemId' | 'workProjectId' | 'itemId' | 'hallWingType'>;
|
|
39
|
+
readonly workProjectType: WorkProjectType;
|
|
40
|
+
readonly foundingArtisanUid: string | null;
|
|
41
|
+
readonly now: number;
|
|
42
|
+
}
|
|
43
|
+
export declare function buildThresholdLibraryReviewTask(input: ThresholdLibraryReviewTaskInput): AdminTaskDoc;
|
|
44
|
+
export interface AdminDispatchTaskInput {
|
|
45
|
+
readonly dispatch: Pick<AdminDispatch, 'adminDispatchId' | 'subject' | 'partyKind' | 'workProjectId'>;
|
|
46
|
+
readonly fromUid?: string;
|
|
47
|
+
readonly now: number;
|
|
48
|
+
}
|
|
49
|
+
export declare function buildAdminDispatchTask(input: AdminDispatchTaskInput): AdminTaskDoc;
|
|
50
|
+
export {};
|
|
51
|
+
//# sourceMappingURL=admin-tasks.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"admin-tasks.d.ts","sourceRoot":"","sources":["../../src/utils/admin-tasks.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
import { TASK_PRIORITY, TASK_PRIORITY_LEVEL_TO_SCORE, } from '../constants/business-admin.js';
|
|
2
|
+
import { AdminTaskStatusSchema, } from '../doc-schemas/report-docs.js';
|
|
3
|
+
import { contentAppealAdminTaskDocId } from '../paths/compound-ids.js';
|
|
4
|
+
import { PATH_BUILDERS } from '../paths/path-builders.js';
|
|
5
|
+
import { toPath } from '../paths/utils.js';
|
|
6
|
+
export const TASK_PRIORITY_CONFIG = {
|
|
7
|
+
userReport: {
|
|
8
|
+
base: TASK_PRIORITY.HIGH,
|
|
9
|
+
boostConditions: {
|
|
10
|
+
critical: (data) => (data.totalReports ?? 0) > 10 ||
|
|
11
|
+
!!data.lastReportReason?.toLowerCase().includes('illegal') ||
|
|
12
|
+
!!data.lastReportReason?.toLowerCase().includes('csam') ||
|
|
13
|
+
!!data.lastReportReason?.toLowerCase().includes('child'),
|
|
14
|
+
},
|
|
15
|
+
},
|
|
16
|
+
'content-appeal': {
|
|
17
|
+
base: TASK_PRIORITY.NORMAL,
|
|
18
|
+
boostConditions: {
|
|
19
|
+
critical: (data) => !!data.reason?.toLowerCase().includes('csam') ||
|
|
20
|
+
!!data.reason?.toLowerCase().includes('child') ||
|
|
21
|
+
!!data.reason?.toLowerCase().includes('illegal'),
|
|
22
|
+
high: (data) => data.fileType === 'profile-picture',
|
|
23
|
+
},
|
|
24
|
+
},
|
|
25
|
+
thresholdLibraryReview: {
|
|
26
|
+
base: TASK_PRIORITY.NORMAL,
|
|
27
|
+
boostConditions: {
|
|
28
|
+
high: (data) => data.hallWingType === 'newsPolitical',
|
|
29
|
+
},
|
|
30
|
+
},
|
|
31
|
+
hallContentChangeRequest: {
|
|
32
|
+
base: TASK_PRIORITY.NORMAL,
|
|
33
|
+
boostConditions: {},
|
|
34
|
+
},
|
|
35
|
+
adminDispatch: {
|
|
36
|
+
base: TASK_PRIORITY.NORMAL,
|
|
37
|
+
boostConditions: {
|
|
38
|
+
high: (data) => data.category === 'urgent' || data.priority === 'urgent',
|
|
39
|
+
},
|
|
40
|
+
},
|
|
41
|
+
};
|
|
42
|
+
export function calculateTaskPriority(taskType, taskData) {
|
|
43
|
+
const { base, boostConditions } = TASK_PRIORITY_CONFIG[taskType];
|
|
44
|
+
if (boostConditions.critical?.(taskData))
|
|
45
|
+
return TASK_PRIORITY_LEVEL_TO_SCORE[TASK_PRIORITY.CRITICAL];
|
|
46
|
+
if (boostConditions.high?.(taskData))
|
|
47
|
+
return TASK_PRIORITY_LEVEL_TO_SCORE[TASK_PRIORITY.HIGH];
|
|
48
|
+
return TASK_PRIORITY_LEVEL_TO_SCORE[base];
|
|
49
|
+
}
|
|
50
|
+
export function buildContentAppealTask(input) {
|
|
51
|
+
const { violationId, fileType, rejectionReason, now } = input;
|
|
52
|
+
const taskId = contentAppealAdminTaskDocId(violationId);
|
|
53
|
+
return {
|
|
54
|
+
id: taskId,
|
|
55
|
+
taskType: 'content-appeal',
|
|
56
|
+
taskId,
|
|
57
|
+
violationId,
|
|
58
|
+
userId: input.userId,
|
|
59
|
+
fileType,
|
|
60
|
+
rejectionReason,
|
|
61
|
+
appealMessage: input.appealMessage,
|
|
62
|
+
rejectedFilePath: input.rejectedFilePath,
|
|
63
|
+
status: AdminTaskStatusSchema.enum.pending,
|
|
64
|
+
checkoutDetails: null,
|
|
65
|
+
originalPath: toPath(PATH_BUILDERS.contentViolation(violationId)),
|
|
66
|
+
summary: `Appeal: ${fileType} — ${rejectionReason.substring(0, 80)}`,
|
|
67
|
+
priority: calculateTaskPriority('content-appeal', { reason: rejectionReason, fileType }),
|
|
68
|
+
createdAt: now,
|
|
69
|
+
lastUpdatedAt: now,
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
export function buildThresholdLibraryReviewTask(input) {
|
|
73
|
+
const { thresholdItem, now } = input;
|
|
74
|
+
return {
|
|
75
|
+
taskType: 'thresholdLibraryReview',
|
|
76
|
+
taskId: thresholdItem.thresholdItemId,
|
|
77
|
+
foundingArtisanUid: input.foundingArtisanUid,
|
|
78
|
+
originalPath: toPath(PATH_BUILDERS.thresholdItem(thresholdItem.workProjectId, thresholdItem.itemId)),
|
|
79
|
+
status: AdminTaskStatusSchema.enum.pending,
|
|
80
|
+
checkoutDetails: null,
|
|
81
|
+
summary: `Review ${input.workProjectType}`,
|
|
82
|
+
priority: calculateTaskPriority('thresholdLibraryReview', thresholdItem),
|
|
83
|
+
createdAt: now,
|
|
84
|
+
lastUpdatedAt: now,
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
export function buildAdminDispatchTask(input) {
|
|
88
|
+
const { dispatch, fromUid, now } = input;
|
|
89
|
+
const { subject } = dispatch;
|
|
90
|
+
const isWorkParty = dispatch.partyKind === 'workProject' && typeof dispatch.workProjectId === 'string';
|
|
91
|
+
const base = isWorkParty ? `Work thread: ${subject}` : subject;
|
|
92
|
+
return {
|
|
93
|
+
taskType: 'adminDispatch',
|
|
94
|
+
taskId: dispatch.adminDispatchId,
|
|
95
|
+
originalPath: toPath(PATH_BUILDERS.adminDispatch(dispatch.adminDispatchId)),
|
|
96
|
+
status: AdminTaskStatusSchema.enum.pending,
|
|
97
|
+
checkoutDetails: null,
|
|
98
|
+
summary: fromUid ? `${base} - from ${fromUid.substring(0, 8)}` : base,
|
|
99
|
+
priority: calculateTaskPriority('adminDispatch', { subject, userId: fromUid }),
|
|
100
|
+
createdAt: now,
|
|
101
|
+
lastUpdatedAt: now,
|
|
102
|
+
...(isWorkParty
|
|
103
|
+
? { partyKind: 'workProject', workProjectId: dispatch.workProjectId }
|
|
104
|
+
: {}),
|
|
105
|
+
};
|
|
106
|
+
}
|
|
107
|
+
//# sourceMappingURL=admin-tasks.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"admin-tasks.js","sourceRoot":"","sources":["../../src/utils/admin-tasks.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n TASK_PRIORITY,\n TASK_PRIORITY_LEVEL_TO_SCORE,\n type TaskPriorityLevel,\n type TaskPriorityScore,\n} from '../constants/business-admin.js';\nimport type { ThresholdItem } from '../doc-schemas/content.js';\nimport type { AdminDispatch } from '../doc-schemas/messaging.js';\nimport type { ContentAppealTask } from '../doc-schemas/moderation.js';\nimport {\n AdminTaskStatusSchema,\n type AdminTaskDoc,\n type AdminTaskType,\n} from '../doc-schemas/report-docs.js';\nimport { contentAppealAdminTaskDocId } from '../paths/compound-ids.js';\nimport { PATH_BUILDERS } from '../paths/path-builders.js';\nimport { toPath } from '../paths/utils.js';\nimport type { WorkProjectType } from '../types/content.js';\n\nexport interface TaskPriorityData {\n readonly [field: string]: unknown;\n readonly totalReports?: number;\n readonly lastReportReason?: string;\n readonly reason?: string;\n readonly fileType?: string;\n readonly hallWingType?: string;\n readonly category?: string;\n readonly priority?: string;\n}\n\nexport type PrioritizedAdminTaskType = Extract<\n AdminTaskType,\n | 'userReport'\n | 'content-appeal'\n | 'thresholdLibraryReview'\n | 'hallContentChangeRequest'\n | 'adminDispatch'\n>;\n\ninterface TaskPriorityRule {\n readonly base: TaskPriorityLevel;\n readonly boostConditions: {\n readonly critical?: (data: TaskPriorityData) => boolean;\n readonly high?: (data: TaskPriorityData) => boolean;\n };\n}\n\nexport const TASK_PRIORITY_CONFIG: Readonly<Record<PrioritizedAdminTaskType, TaskPriorityRule>> = {\n userReport: {\n base: TASK_PRIORITY.HIGH,\n boostConditions: {\n critical: (data) =>\n (data.totalReports ?? 0) > 10 ||\n !!data.lastReportReason?.toLowerCase().includes('illegal') ||\n !!data.lastReportReason?.toLowerCase().includes('csam') ||\n !!data.lastReportReason?.toLowerCase().includes('child'),\n },\n },\n 'content-appeal': {\n base: TASK_PRIORITY.NORMAL,\n boostConditions: {\n critical: (data) =>\n !!data.reason?.toLowerCase().includes('csam') ||\n !!data.reason?.toLowerCase().includes('child') ||\n !!data.reason?.toLowerCase().includes('illegal'),\n high: (data) => data.fileType === 'profile-picture',\n },\n },\n thresholdLibraryReview: {\n base: TASK_PRIORITY.NORMAL,\n boostConditions: {\n high: (data) => data.hallWingType === 'newsPolitical',\n },\n },\n hallContentChangeRequest: {\n base: TASK_PRIORITY.NORMAL,\n boostConditions: {},\n },\n adminDispatch: {\n base: TASK_PRIORITY.NORMAL,\n boostConditions: {\n high: (data) => data.category === 'urgent' || data.priority === 'urgent',\n },\n },\n};\n\nexport function calculateTaskPriority(\n taskType: PrioritizedAdminTaskType,\n taskData: TaskPriorityData,\n): TaskPriorityScore {\n const { base, boostConditions } = TASK_PRIORITY_CONFIG[taskType];\n if (boostConditions.critical?.(taskData))\n return TASK_PRIORITY_LEVEL_TO_SCORE[TASK_PRIORITY.CRITICAL];\n if (boostConditions.high?.(taskData)) return TASK_PRIORITY_LEVEL_TO_SCORE[TASK_PRIORITY.HIGH];\n return TASK_PRIORITY_LEVEL_TO_SCORE[base];\n}\n\nexport interface ContentAppealTaskInput {\n readonly violationId: string;\n readonly userId: string;\n readonly fileType: string;\n readonly rejectionReason: string;\n readonly appealMessage: string;\n readonly rejectedFilePath: string;\n readonly now: number;\n}\n\nexport function buildContentAppealTask(input: ContentAppealTaskInput): ContentAppealTask {\n const { violationId, fileType, rejectionReason, now } = input;\n const taskId = contentAppealAdminTaskDocId(violationId);\n return {\n id: taskId,\n taskType: 'content-appeal',\n taskId,\n violationId,\n userId: input.userId,\n fileType,\n rejectionReason,\n appealMessage: input.appealMessage,\n rejectedFilePath: input.rejectedFilePath,\n status: AdminTaskStatusSchema.enum.pending,\n checkoutDetails: null,\n originalPath: toPath(PATH_BUILDERS.contentViolation(violationId)),\n summary: `Appeal: ${fileType} — ${rejectionReason.substring(0, 80)}`,\n priority: calculateTaskPriority('content-appeal', { reason: rejectionReason, fileType }),\n createdAt: now,\n lastUpdatedAt: now,\n };\n}\n\nexport interface ThresholdLibraryReviewTaskInput {\n readonly thresholdItem: Pick<\n ThresholdItem,\n 'thresholdItemId' | 'workProjectId' | 'itemId' | 'hallWingType'\n >;\n readonly workProjectType: WorkProjectType;\n readonly foundingArtisanUid: string | null;\n readonly now: number;\n}\n\nexport function buildThresholdLibraryReviewTask(\n input: ThresholdLibraryReviewTaskInput,\n): AdminTaskDoc {\n const { thresholdItem, now } = input;\n return {\n taskType: 'thresholdLibraryReview',\n taskId: thresholdItem.thresholdItemId,\n foundingArtisanUid: input.foundingArtisanUid,\n originalPath: toPath(\n PATH_BUILDERS.thresholdItem(thresholdItem.workProjectId, thresholdItem.itemId),\n ),\n status: AdminTaskStatusSchema.enum.pending,\n checkoutDetails: null,\n summary: `Review ${input.workProjectType}`,\n priority: calculateTaskPriority('thresholdLibraryReview', thresholdItem),\n createdAt: now,\n lastUpdatedAt: now,\n };\n}\n\nexport interface AdminDispatchTaskInput {\n readonly dispatch: Pick<\n AdminDispatch,\n 'adminDispatchId' | 'subject' | 'partyKind' | 'workProjectId'\n >;\n readonly fromUid?: string;\n readonly now: number;\n}\n\nexport function buildAdminDispatchTask(input: AdminDispatchTaskInput): AdminTaskDoc {\n const { dispatch, fromUid, now } = input;\n const { subject } = dispatch;\n const isWorkParty =\n dispatch.partyKind === 'workProject' && typeof dispatch.workProjectId === 'string';\n const base = isWorkParty ? `Work thread: ${subject}` : subject;\n return {\n taskType: 'adminDispatch',\n taskId: dispatch.adminDispatchId,\n originalPath: toPath(PATH_BUILDERS.adminDispatch(dispatch.adminDispatchId)),\n status: AdminTaskStatusSchema.enum.pending,\n checkoutDetails: null,\n summary: fromUid ? `${base} - from ${fromUid.substring(0, 8)}` : base,\n priority: calculateTaskPriority('adminDispatch', { subject, userId: fromUid }),\n createdAt: now,\n lastUpdatedAt: now,\n ...(isWorkParty\n ? { partyKind: 'workProject' as const, workProjectId: dispatch.workProjectId }\n : {}),\n };\n}\n"]}
|
package/dist/utils/index.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC;AACpC,cAAc,iBAAiB,CAAC;AAChC,cAAc,wBAAwB,CAAC;AACvC,cAAc,kCAAkC,CAAC;AACjD,cAAc,mBAAmB,CAAC;AAClC,cAAc,eAAe,CAAC;AAC9B,cAAc,iBAAiB,CAAC;AAChC,cAAc,uBAAuB,CAAC;AACtC,cAAc,oBAAoB,CAAC;AACnC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,uBAAuB,CAAC;AACtC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,sBAAsB,CAAC;AACrC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,6BAA6B,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC;AACpC,cAAc,iBAAiB,CAAC;AAChC,cAAc,wBAAwB,CAAC;AACvC,cAAc,kCAAkC,CAAC;AACjD,cAAc,mBAAmB,CAAC;AAClC,cAAc,eAAe,CAAC;AAC9B,cAAc,iBAAiB,CAAC;AAChC,cAAc,uBAAuB,CAAC;AACtC,cAAc,oBAAoB,CAAC;AACnC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,uBAAuB,CAAC;AACtC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,sBAAsB,CAAC;AACrC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,kBAAkB,CAAC"}
|
package/dist/utils/index.js
CHANGED
package/dist/utils/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC;AACpC,cAAc,iBAAiB,CAAC;AAChC,cAAc,wBAAwB,CAAC;AACvC,cAAc,kCAAkC,CAAC;AACjD,cAAc,mBAAmB,CAAC;AAClC,cAAc,eAAe,CAAC;AAC9B,cAAc,iBAAiB,CAAC;AAChC,cAAc,uBAAuB,CAAC;AACtC,cAAc,oBAAoB,CAAC;AACnC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,uBAAuB,CAAC;AACtC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,sBAAsB,CAAC;AACrC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,6BAA6B,CAAC","sourcesContent":["export * from './admin-standing.js';\nexport * from './age-derivation.js';\nexport * from './app-config.js';\nexport * from './guild-chat-access.js';\nexport * from './guild-invite-system-message.js';\nexport * from './hall-content.js';\nexport * from './password.js';\nexport * from './text-field.js';\nexport * from './public-documents.js';\nexport * from './pledge-totals.js';\nexport * from './pledge-refund-eligibility.js';\nexport * from './work-file-folder.js';\nexport * from './work-realm-eligibility.js';\nexport * from './work-realm-name.js';\nexport * from './display-name-reservation.js';\nexport * from './work-publish-readiness.js';\n"]}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC;AACpC,cAAc,iBAAiB,CAAC;AAChC,cAAc,wBAAwB,CAAC;AACvC,cAAc,kCAAkC,CAAC;AACjD,cAAc,mBAAmB,CAAC;AAClC,cAAc,eAAe,CAAC;AAC9B,cAAc,iBAAiB,CAAC;AAChC,cAAc,uBAAuB,CAAC;AACtC,cAAc,oBAAoB,CAAC;AACnC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,uBAAuB,CAAC;AACtC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,sBAAsB,CAAC;AACrC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,kBAAkB,CAAC","sourcesContent":["export * from './admin-standing.js';\nexport * from './age-derivation.js';\nexport * from './app-config.js';\nexport * from './guild-chat-access.js';\nexport * from './guild-invite-system-message.js';\nexport * from './hall-content.js';\nexport * from './password.js';\nexport * from './text-field.js';\nexport * from './public-documents.js';\nexport * from './pledge-totals.js';\nexport * from './pledge-refund-eligibility.js';\nexport * from './work-file-folder.js';\nexport * from './work-realm-eligibility.js';\nexport * from './work-realm-name.js';\nexport * from './display-name-reservation.js';\nexport * from './work-publish-readiness.js';\nexport * from './admin-tasks.js';\n"]}
|