@ttt-productions/media-schemas 0.4.0

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.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pending-media.d.ts","sourceRoot":"","sources":["../../src/factories/pending-media.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,151 @@
1
+ import { z } from "zod";
2
+ import { ClientContextSchema } from "../schemas.js";
3
+ export function createPendingMediaSchemas(deps) {
4
+ const { fileOriginSchema, domainEventSchema } = deps;
5
+ const PendingMediaErrorCategorySchema = z.enum([
6
+ 'system',
7
+ 'rate_limit',
8
+ 'validation',
9
+ 'kind_mismatch',
10
+ 'storage',
11
+ 'moderation',
12
+ ]);
13
+ const PendingMediaResultSchema = z
14
+ .object({
15
+ events: z.array(domainEventSchema),
16
+ affected: z
17
+ .array(z
18
+ .object({
19
+ collection: z.string().min(1),
20
+ docId: z.string().min(1),
21
+ operation: z.enum(['create', 'update']),
22
+ })
23
+ .strict())
24
+ .optional(),
25
+ })
26
+ .strict();
27
+ const PendingMediaBaseShape = {
28
+ id: z.string().min(1),
29
+ userId: z.string().min(1),
30
+ fileOrigin: fileOriginSchema,
31
+ originalFileName: z.string().min(1),
32
+ pendingStoragePath: z.string().min(1),
33
+ targetInfo: z.unknown().optional(),
34
+ textContent: z.string().optional(),
35
+ clientContext: ClientContextSchema,
36
+ createdAt: z.number(),
37
+ updatedAt: z.number(),
38
+ processingStartedAt: z.number().optional(),
39
+ terminalAt: z.number().optional(),
40
+ };
41
+ const PendingMediaPendingSchema = z
42
+ .object({ ...PendingMediaBaseShape, status: z.literal('pending') })
43
+ .strict();
44
+ const PendingMediaProcessingSchema = z
45
+ .object({ ...PendingMediaBaseShape, status: z.literal('processing') })
46
+ .strict();
47
+ const PendingMediaCompletedSchema = z
48
+ .object({
49
+ ...PendingMediaBaseShape,
50
+ status: z.literal('completed'),
51
+ completedAt: z.number(),
52
+ terminalAt: z.number(),
53
+ uploadTrayClearedAt: z.number().optional(),
54
+ uploadTrayClearedBy: z.string().min(1).optional(),
55
+ result: PendingMediaResultSchema,
56
+ })
57
+ .strict();
58
+ const PendingMediaFailedSchema = z
59
+ .object({
60
+ ...PendingMediaBaseShape,
61
+ status: z.literal('failed'),
62
+ failedAt: z.number(),
63
+ terminalAt: z.number(),
64
+ uploadTrayClearedAt: z.number().optional(),
65
+ uploadTrayClearedBy: z.string().min(1).optional(),
66
+ errorCategory: PendingMediaErrorCategorySchema,
67
+ errorMessage: z.string().min(1),
68
+ })
69
+ .strict();
70
+ const PendingMediaRejectedSchema = z
71
+ .object({
72
+ ...PendingMediaBaseShape,
73
+ status: z.literal('rejected'),
74
+ rejectedAt: z.number(),
75
+ terminalAt: z.number(),
76
+ uploadTrayClearedAt: z.number().optional(),
77
+ uploadTrayClearedBy: z.string().min(1).optional(),
78
+ rejectionType: z.enum(['text', 'media']),
79
+ errorMessage: z.string().min(1),
80
+ violationId: z.string().min(1).optional(),
81
+ result: PendingMediaResultSchema.optional(),
82
+ })
83
+ .strict();
84
+ const PendingMediaSchema = z.discriminatedUnion('status', [
85
+ PendingMediaPendingSchema,
86
+ PendingMediaProcessingSchema,
87
+ PendingMediaCompletedSchema,
88
+ PendingMediaFailedSchema,
89
+ PendingMediaRejectedSchema,
90
+ ]);
91
+ const ArchivedPendingMediaCompletedSchema = z
92
+ .object({
93
+ ...PendingMediaBaseShape,
94
+ status: z.literal('completed'),
95
+ completedAt: z.number(),
96
+ terminalAt: z.number(),
97
+ uploadTrayClearedAt: z.number().optional(),
98
+ uploadTrayClearedBy: z.string().min(1).optional(),
99
+ result: PendingMediaResultSchema,
100
+ archivedAt: z.number(),
101
+ })
102
+ .strict();
103
+ const ArchivedPendingMediaFailedSchema = z
104
+ .object({
105
+ ...PendingMediaBaseShape,
106
+ status: z.literal('failed'),
107
+ failedAt: z.number(),
108
+ terminalAt: z.number(),
109
+ uploadTrayClearedAt: z.number().optional(),
110
+ uploadTrayClearedBy: z.string().min(1).optional(),
111
+ errorCategory: PendingMediaErrorCategorySchema,
112
+ errorMessage: z.string().min(1),
113
+ archivedAt: z.number(),
114
+ })
115
+ .strict();
116
+ const ArchivedPendingMediaRejectedSchema = z
117
+ .object({
118
+ ...PendingMediaBaseShape,
119
+ status: z.literal('rejected'),
120
+ rejectedAt: z.number(),
121
+ terminalAt: z.number(),
122
+ uploadTrayClearedAt: z.number().optional(),
123
+ uploadTrayClearedBy: z.string().min(1).optional(),
124
+ rejectionType: z.enum(['text', 'media']),
125
+ errorMessage: z.string().min(1),
126
+ violationId: z.string().min(1).optional(),
127
+ result: PendingMediaResultSchema.optional(),
128
+ archivedAt: z.number(),
129
+ })
130
+ .strict();
131
+ const ArchivedPendingMediaSchema = z.discriminatedUnion('status', [
132
+ ArchivedPendingMediaCompletedSchema,
133
+ ArchivedPendingMediaFailedSchema,
134
+ ArchivedPendingMediaRejectedSchema,
135
+ ]);
136
+ return {
137
+ PendingMediaErrorCategorySchema,
138
+ PendingMediaResultSchema,
139
+ PendingMediaPendingSchema,
140
+ PendingMediaProcessingSchema,
141
+ PendingMediaCompletedSchema,
142
+ PendingMediaFailedSchema,
143
+ PendingMediaRejectedSchema,
144
+ PendingMediaSchema,
145
+ ArchivedPendingMediaCompletedSchema,
146
+ ArchivedPendingMediaFailedSchema,
147
+ ArchivedPendingMediaRejectedSchema,
148
+ ArchivedPendingMediaSchema,
149
+ };
150
+ }
151
+ //# sourceMappingURL=pending-media.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pending-media.js","sourceRoot":"","sources":["../../src/factories/pending-media.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ import type { SimplifiedMediaType } from "./types.js";
2
+ export type FileLike = {
3
+ type?: string;
4
+ name?: string;
5
+ };
6
+ /**
7
+ * Contracts-only type detection.
8
+ * Accepts a mime string OR a File-like object via structural typing.
9
+ * No DOM usage; safe in frontend + functions.
10
+ */
11
+ export declare function getSimplifiedMediaType(input: string | FileLike | null | undefined): SimplifiedMediaType;
12
+ export declare function isImageType(input: string | FileLike | null | undefined): boolean;
13
+ export declare function isVideoType(input: string | FileLike | null | undefined): boolean;
14
+ export declare function isAudioType(input: string | FileLike | null | undefined): boolean;
15
+ /** Simple helper for callers that already have mime. */
16
+ export declare function isSupportedMime(mime: string): boolean;
17
+ //# sourceMappingURL=helpers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../src/helpers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAEtD,MAAM,MAAM,QAAQ,GAAG;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,CAAC;AAgDF;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,MAAM,GAAG,QAAQ,GAAG,IAAI,GAAG,SAAS,GAAG,mBAAmB,CAgBvG;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,QAAQ,GAAG,IAAI,GAAG,SAAS,GAAG,OAAO,CAEhF;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,QAAQ,GAAG,IAAI,GAAG,SAAS,GAAG,OAAO,CAEhF;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,QAAQ,GAAG,IAAI,GAAG,SAAS,GAAG,OAAO,CAEhF;AAED,wDAAwD;AACxD,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAGrD"}
@@ -0,0 +1,79 @@
1
+ function normalizeMime(mime) {
2
+ return mime.trim().toLowerCase();
3
+ }
4
+ function extFromName(name) {
5
+ if (!name)
6
+ return undefined;
7
+ const idx = name.lastIndexOf(".");
8
+ if (idx === -1)
9
+ return undefined;
10
+ return name.slice(idx + 1).trim().toLowerCase() || undefined;
11
+ }
12
+ function simplifiedFromMime(mime) {
13
+ const m = normalizeMime(mime);
14
+ // common vendor/edge cases
15
+ if (m === "application/octet-stream")
16
+ return "other";
17
+ if (m.startsWith("image/"))
18
+ return "image";
19
+ if (m.startsWith("video/"))
20
+ return "video";
21
+ if (m.startsWith("audio/"))
22
+ return "audio";
23
+ // PDFs etc treated as "other" for now
24
+ return "other";
25
+ }
26
+ function simplifiedFromExt(ext) {
27
+ if (!ext)
28
+ return "other";
29
+ // images
30
+ if (["jpg", "jpeg", "png", "webp", "gif", "bmp", "tif", "tiff", "avif", "heic", "heif"].includes(ext)) {
31
+ return "image";
32
+ }
33
+ // videos
34
+ if (["mp4", "mov", "m4v", "webm", "mkv", "avi"].includes(ext)) {
35
+ return "video";
36
+ }
37
+ // audio
38
+ if (["mp3", "wav", "m4a", "aac", "flac", "ogg", "opus"].includes(ext)) {
39
+ return "audio";
40
+ }
41
+ return "other";
42
+ }
43
+ /**
44
+ * Contracts-only type detection.
45
+ * Accepts a mime string OR a File-like object via structural typing.
46
+ * No DOM usage; safe in frontend + functions.
47
+ */
48
+ export function getSimplifiedMediaType(input) {
49
+ if (!input)
50
+ return "other";
51
+ if (typeof input === "string") {
52
+ const s = input.trim();
53
+ // if it looks like a mime
54
+ if (s.includes("/"))
55
+ return simplifiedFromMime(s);
56
+ // otherwise treat as filename/extension-ish
57
+ return simplifiedFromExt(extFromName(s) ?? s.toLowerCase());
58
+ }
59
+ const mime = input.type?.trim();
60
+ if (mime)
61
+ return simplifiedFromMime(mime);
62
+ const ext = extFromName(input.name);
63
+ return simplifiedFromExt(ext);
64
+ }
65
+ export function isImageType(input) {
66
+ return getSimplifiedMediaType(input) === "image";
67
+ }
68
+ export function isVideoType(input) {
69
+ return getSimplifiedMediaType(input) === "video";
70
+ }
71
+ export function isAudioType(input) {
72
+ return getSimplifiedMediaType(input) === "audio";
73
+ }
74
+ /** Simple helper for callers that already have mime. */
75
+ export function isSupportedMime(mime) {
76
+ const t = simplifiedFromMime(mime);
77
+ return t === "image" || t === "video" || t === "audio";
78
+ }
79
+ //# sourceMappingURL=helpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"helpers.js","sourceRoot":"","sources":["../src/helpers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ export * from "./types.js";
2
+ export * from "./helpers.js";
3
+ export * from "./schemas.js";
4
+ export { createPendingMediaSchemas } from "./factories/pending-media.js";
5
+ export type { PendingMediaSchemas } from "./factories/pending-media.js";
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,OAAO,EAAE,yBAAyB,EAAE,MAAM,8BAA8B,CAAC;AACzE,YAAY,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,5 @@
1
+ export * from "./types.js";
2
+ export * from "./helpers.js";
3
+ export * from "./schemas.js";
4
+ export { createPendingMediaSchemas } from "./factories/pending-media.js";
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,OAAO,EAAE,yBAAyB,EAAE,MAAM,8BAA8B,CAAC"}