@revealui/contracts 1.0.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.
Files changed (191) hide show
  1. package/LICENSE +22 -0
  2. package/README.md +160 -0
  3. package/dist/a2a/index.d.ts +383 -0
  4. package/dist/a2a/index.d.ts.map +1 -0
  5. package/dist/a2a/index.js +276 -0
  6. package/dist/a2a/index.js.map +1 -0
  7. package/dist/actions/action-validator.d.ts +48 -0
  8. package/dist/actions/action-validator.d.ts.map +1 -0
  9. package/dist/actions/action-validator.js +288 -0
  10. package/dist/actions/action-validator.js.map +1 -0
  11. package/dist/actions/index.d.ts +7 -0
  12. package/dist/actions/index.d.ts.map +1 -0
  13. package/dist/actions/index.js +7 -0
  14. package/dist/actions/index.js.map +1 -0
  15. package/dist/agents/index.d.ts +628 -0
  16. package/dist/agents/index.d.ts.map +1 -0
  17. package/dist/agents/index.js +511 -0
  18. package/dist/agents/index.js.map +1 -0
  19. package/dist/agents/types.d.ts +22 -0
  20. package/dist/agents/types.d.ts.map +1 -0
  21. package/dist/agents/types.js +2 -0
  22. package/dist/agents/types.js.map +1 -0
  23. package/dist/api/auth.d.ts +60 -0
  24. package/dist/api/auth.d.ts.map +1 -0
  25. package/dist/api/auth.js +84 -0
  26. package/dist/api/auth.js.map +1 -0
  27. package/dist/api/chat.d.ts +45 -0
  28. package/dist/api/chat.d.ts.map +1 -0
  29. package/dist/api/chat.js +55 -0
  30. package/dist/api/chat.js.map +1 -0
  31. package/dist/api/gdpr.d.ts +39 -0
  32. package/dist/api/gdpr.d.ts.map +1 -0
  33. package/dist/api/gdpr.js +53 -0
  34. package/dist/api/gdpr.js.map +1 -0
  35. package/dist/cms/collection.d.ts +108 -0
  36. package/dist/cms/collection.d.ts.map +1 -0
  37. package/dist/cms/collection.js +144 -0
  38. package/dist/cms/collection.js.map +1 -0
  39. package/dist/cms/compat.d.ts +128 -0
  40. package/dist/cms/compat.d.ts.map +1 -0
  41. package/dist/cms/compat.js +141 -0
  42. package/dist/cms/compat.js.map +1 -0
  43. package/dist/cms/config-contract.d.ts +278 -0
  44. package/dist/cms/config-contract.d.ts.map +1 -0
  45. package/dist/cms/config-contract.js +220 -0
  46. package/dist/cms/config-contract.js.map +1 -0
  47. package/dist/cms/config.d.ts +351 -0
  48. package/dist/cms/config.d.ts.map +1 -0
  49. package/dist/cms/config.js +50 -0
  50. package/dist/cms/config.js.map +1 -0
  51. package/dist/cms/errors.d.ts +122 -0
  52. package/dist/cms/errors.d.ts.map +1 -0
  53. package/dist/cms/errors.js +163 -0
  54. package/dist/cms/errors.js.map +1 -0
  55. package/dist/cms/extensibility.d.ts +211 -0
  56. package/dist/cms/extensibility.d.ts.map +1 -0
  57. package/dist/cms/extensibility.js +313 -0
  58. package/dist/cms/extensibility.js.map +1 -0
  59. package/dist/cms/field.d.ts +69 -0
  60. package/dist/cms/field.d.ts.map +1 -0
  61. package/dist/cms/field.js +94 -0
  62. package/dist/cms/field.js.map +1 -0
  63. package/dist/cms/functions.d.ts +466 -0
  64. package/dist/cms/functions.d.ts.map +1 -0
  65. package/dist/cms/functions.js +19 -0
  66. package/dist/cms/functions.js.map +1 -0
  67. package/dist/cms/global.d.ts +45 -0
  68. package/dist/cms/global.d.ts.map +1 -0
  69. package/dist/cms/global.js +62 -0
  70. package/dist/cms/global.js.map +1 -0
  71. package/dist/cms/index.d.ts +23 -0
  72. package/dist/cms/index.d.ts.map +1 -0
  73. package/dist/cms/index.js +42 -0
  74. package/dist/cms/index.js.map +1 -0
  75. package/dist/cms/structure.d.ts +1601 -0
  76. package/dist/cms/structure.d.ts.map +1 -0
  77. package/dist/cms/structure.js +757 -0
  78. package/dist/cms/structure.js.map +1 -0
  79. package/dist/content/index.d.ts +1542 -0
  80. package/dist/content/index.d.ts.map +1 -0
  81. package/dist/content/index.js +522 -0
  82. package/dist/content/index.js.map +1 -0
  83. package/dist/database/bridge.d.ts +177 -0
  84. package/dist/database/bridge.d.ts.map +1 -0
  85. package/dist/database/bridge.js +139 -0
  86. package/dist/database/bridge.js.map +1 -0
  87. package/dist/database/index.d.ts +8 -0
  88. package/dist/database/index.d.ts.map +1 -0
  89. package/dist/database/index.js +9 -0
  90. package/dist/database/index.js.map +1 -0
  91. package/dist/database/type-bridge.d.ts +178 -0
  92. package/dist/database/type-bridge.d.ts.map +1 -0
  93. package/dist/database/type-bridge.js +154 -0
  94. package/dist/database/type-bridge.js.map +1 -0
  95. package/dist/entities/agent-context.d.ts +280 -0
  96. package/dist/entities/agent-context.d.ts.map +1 -0
  97. package/dist/entities/agent-context.js +390 -0
  98. package/dist/entities/agent-context.js.map +1 -0
  99. package/dist/entities/agent-memory.d.ts +661 -0
  100. package/dist/entities/agent-memory.d.ts.map +1 -0
  101. package/dist/entities/agent-memory.js +544 -0
  102. package/dist/entities/agent-memory.js.map +1 -0
  103. package/dist/entities/board.d.ts +95 -0
  104. package/dist/entities/board.d.ts.map +1 -0
  105. package/dist/entities/board.js +99 -0
  106. package/dist/entities/board.js.map +1 -0
  107. package/dist/entities/code-provenance.d.ts +270 -0
  108. package/dist/entities/code-provenance.d.ts.map +1 -0
  109. package/dist/entities/code-provenance.js +339 -0
  110. package/dist/entities/code-provenance.js.map +1 -0
  111. package/dist/entities/index.d.ts +22 -0
  112. package/dist/entities/index.d.ts.map +1 -0
  113. package/dist/entities/index.js +22 -0
  114. package/dist/entities/index.js.map +1 -0
  115. package/dist/entities/media.d.ts +485 -0
  116. package/dist/entities/media.d.ts.map +1 -0
  117. package/dist/entities/media.js +606 -0
  118. package/dist/entities/media.js.map +1 -0
  119. package/dist/entities/page-revision.d.ts +390 -0
  120. package/dist/entities/page-revision.d.ts.map +1 -0
  121. package/dist/entities/page-revision.js +406 -0
  122. package/dist/entities/page-revision.js.map +1 -0
  123. package/dist/entities/page.d.ts +2349 -0
  124. package/dist/entities/page.d.ts.map +1 -0
  125. package/dist/entities/page.js +377 -0
  126. package/dist/entities/page.js.map +1 -0
  127. package/dist/entities/post.d.ts +619 -0
  128. package/dist/entities/post.d.ts.map +1 -0
  129. package/dist/entities/post.js +555 -0
  130. package/dist/entities/post.js.map +1 -0
  131. package/dist/entities/price.d.ts +772 -0
  132. package/dist/entities/price.d.ts.map +1 -0
  133. package/dist/entities/price.js +308 -0
  134. package/dist/entities/price.js.map +1 -0
  135. package/dist/entities/product.d.ts +753 -0
  136. package/dist/entities/product.d.ts.map +1 -0
  137. package/dist/entities/product.js +307 -0
  138. package/dist/entities/product.js.map +1 -0
  139. package/dist/entities/session.d.ts +222 -0
  140. package/dist/entities/session.d.ts.map +1 -0
  141. package/dist/entities/session.js +253 -0
  142. package/dist/entities/session.js.map +1 -0
  143. package/dist/entities/site.d.ts +387 -0
  144. package/dist/entities/site.d.ts.map +1 -0
  145. package/dist/entities/site.js +348 -0
  146. package/dist/entities/site.js.map +1 -0
  147. package/dist/entities/ticket-comment.d.ts +49 -0
  148. package/dist/entities/ticket-comment.d.ts.map +1 -0
  149. package/dist/entities/ticket-comment.js +58 -0
  150. package/dist/entities/ticket-comment.js.map +1 -0
  151. package/dist/entities/ticket-label.d.ts +64 -0
  152. package/dist/entities/ticket-label.d.ts.map +1 -0
  153. package/dist/entities/ticket-label.js +77 -0
  154. package/dist/entities/ticket-label.js.map +1 -0
  155. package/dist/entities/ticket.d.ts +204 -0
  156. package/dist/entities/ticket.d.ts.map +1 -0
  157. package/dist/entities/ticket.js +205 -0
  158. package/dist/entities/ticket.js.map +1 -0
  159. package/dist/entities/user.d.ts +336 -0
  160. package/dist/entities/user.d.ts.map +1 -0
  161. package/dist/entities/user.js +255 -0
  162. package/dist/entities/user.js.map +1 -0
  163. package/dist/foundation/contract.d.ts +221 -0
  164. package/dist/foundation/contract.d.ts.map +1 -0
  165. package/dist/foundation/contract.js +133 -0
  166. package/dist/foundation/contract.js.map +1 -0
  167. package/dist/foundation/index.d.ts +7 -0
  168. package/dist/foundation/index.d.ts.map +1 -0
  169. package/dist/foundation/index.js +7 -0
  170. package/dist/foundation/index.js.map +1 -0
  171. package/dist/generated/contracts.d.ts +1514 -0
  172. package/dist/generated/contracts.d.ts.map +1 -0
  173. package/dist/generated/contracts.js +959 -0
  174. package/dist/generated/contracts.js.map +1 -0
  175. package/dist/generated/database.d.ts +48 -0
  176. package/dist/generated/database.d.ts.map +1 -0
  177. package/dist/generated/database.js +17 -0
  178. package/dist/generated/database.js.map +1 -0
  179. package/dist/generated/zod-schemas.d.ts +14793 -0
  180. package/dist/generated/zod-schemas.d.ts.map +1 -0
  181. package/dist/generated/zod-schemas.js +547 -0
  182. package/dist/generated/zod-schemas.js.map +1 -0
  183. package/dist/index.d.ts +50 -0
  184. package/dist/index.d.ts.map +1 -0
  185. package/dist/index.js +81 -0
  186. package/dist/index.js.map +1 -0
  187. package/dist/representation/index.d.ts +304 -0
  188. package/dist/representation/index.d.ts.map +1 -0
  189. package/dist/representation/index.js +280 -0
  190. package/dist/representation/index.js.map +1 -0
  191. package/package.json +117 -0
@@ -0,0 +1,485 @@
1
+ /**
2
+ * Media Entity Contract
3
+ *
4
+ * Manages file uploads with metadata, image dimensions, focal points, and thumbnails.
5
+ * Media files are stored in Vercel Blob or other storage providers with rich metadata
6
+ * for responsive images, accessibility, and content management.
7
+ *
8
+ * Business Rules:
9
+ * - MIME type validation for security
10
+ * - Image dimensions required for images
11
+ * - Focal point for smart cropping (0-1 coordinates)
12
+ * - Multiple sizes/thumbnails generated for responsive images
13
+ * - Alt text required for accessibility
14
+ * - Uploaded by tracks user ownership
15
+ * - Cascading null on user deletion
16
+ */
17
+ import { z } from 'zod/v4';
18
+ export declare const MEDIA_SCHEMA_VERSION = 1;
19
+ export declare const IMAGE_MIME_TYPES: readonly ["image/jpeg", "image/jpg", "image/png", "image/gif", "image/webp", "image/svg+xml"];
20
+ export declare const VIDEO_MIME_TYPES: readonly ["video/mp4", "video/webm", "video/ogg"];
21
+ export declare const AUDIO_MIME_TYPES: readonly ["audio/mpeg", "audio/mp3", "audio/wav", "audio/ogg"];
22
+ export declare const DOCUMENT_MIME_TYPES: readonly ["application/pdf", "application/msword", "application/vnd.openxmlformats-officedocument.wordprocessingml.document", "application/vnd.ms-excel", "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"];
23
+ export declare const ALL_MIME_TYPES: readonly ["image/jpeg", "image/jpg", "image/png", "image/gif", "image/webp", "image/svg+xml", "video/mp4", "video/webm", "video/ogg", "audio/mpeg", "audio/mp3", "audio/wav", "audio/ogg", "application/pdf", "application/msword", "application/vnd.openxmlformats-officedocument.wordprocessingml.document", "application/vnd.ms-excel", "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"];
24
+ export type MimeType = (typeof ALL_MIME_TYPES)[number];
25
+ export declare const MEDIA_TYPES: readonly ["image", "video", "audio", "document", "other"];
26
+ export type MediaType = (typeof MEDIA_TYPES)[number];
27
+ export declare const FILE_SIZE_LIMITS: {
28
+ readonly IMAGE: number;
29
+ readonly VIDEO: number;
30
+ readonly AUDIO: number;
31
+ readonly DOCUMENT: number;
32
+ readonly DEFAULT: number;
33
+ };
34
+ export declare const IMAGE_LIMITS: {
35
+ readonly MIN_WIDTH: 1;
36
+ readonly MIN_HEIGHT: 1;
37
+ readonly MAX_WIDTH: 10000;
38
+ readonly MAX_HEIGHT: 10000;
39
+ };
40
+ export declare const FOCAL_POINT_LIMITS: {
41
+ readonly MIN: 0;
42
+ readonly MAX: 1;
43
+ };
44
+ /**
45
+ * Focal point schema (normalized coordinates 0-1)
46
+ */
47
+ export declare const FocalPointSchema: z.ZodObject<{
48
+ x: z.ZodNumber;
49
+ y: z.ZodNumber;
50
+ }, z.core.$strip>;
51
+ export type FocalPoint = z.infer<typeof FocalPointSchema>;
52
+ /**
53
+ * Image size/thumbnail schema
54
+ */
55
+ export declare const ImageSizeSchema: z.ZodObject<{
56
+ name: z.ZodString;
57
+ width: z.ZodNumber;
58
+ height: z.ZodNumber;
59
+ url: z.ZodString;
60
+ filesize: z.ZodOptional<z.ZodNumber>;
61
+ }, z.core.$strip>;
62
+ export type ImageSize = z.infer<typeof ImageSizeSchema>;
63
+ /**
64
+ * Media object schema
65
+ */
66
+ export declare const MediaObjectSchema: z.ZodObject<{
67
+ id: z.ZodString;
68
+ schemaVersion: z.ZodDefault<z.ZodString>;
69
+ filename: z.ZodString;
70
+ mimeType: z.ZodString;
71
+ filesize: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
72
+ url: z.ZodString;
73
+ alt: z.ZodOptional<z.ZodNullable<z.ZodString>>;
74
+ width: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
75
+ height: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
76
+ focalPoint: z.ZodOptional<z.ZodNullable<z.ZodObject<{
77
+ x: z.ZodNumber;
78
+ y: z.ZodNumber;
79
+ }, z.core.$strip>>>;
80
+ sizes: z.ZodOptional<z.ZodNullable<z.ZodArray<z.ZodObject<{
81
+ name: z.ZodString;
82
+ width: z.ZodNumber;
83
+ height: z.ZodNumber;
84
+ url: z.ZodString;
85
+ filesize: z.ZodOptional<z.ZodNumber>;
86
+ }, z.core.$strip>>>>;
87
+ uploadedBy: z.ZodOptional<z.ZodNullable<z.ZodString>>;
88
+ createdAt: z.ZodDate;
89
+ updatedAt: z.ZodDate;
90
+ }, z.core.$strip>;
91
+ /**
92
+ * Media schema with validation rules
93
+ */
94
+ export declare const MediaBaseSchema: z.ZodObject<{
95
+ id: z.ZodString;
96
+ schemaVersion: z.ZodDefault<z.ZodString>;
97
+ filename: z.ZodString;
98
+ mimeType: z.ZodString;
99
+ filesize: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
100
+ url: z.ZodString;
101
+ alt: z.ZodOptional<z.ZodNullable<z.ZodString>>;
102
+ width: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
103
+ height: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
104
+ focalPoint: z.ZodOptional<z.ZodNullable<z.ZodObject<{
105
+ x: z.ZodNumber;
106
+ y: z.ZodNumber;
107
+ }, z.core.$strip>>>;
108
+ sizes: z.ZodOptional<z.ZodNullable<z.ZodArray<z.ZodObject<{
109
+ name: z.ZodString;
110
+ width: z.ZodNumber;
111
+ height: z.ZodNumber;
112
+ url: z.ZodString;
113
+ filesize: z.ZodOptional<z.ZodNumber>;
114
+ }, z.core.$strip>>>>;
115
+ uploadedBy: z.ZodOptional<z.ZodNullable<z.ZodString>>;
116
+ createdAt: z.ZodDate;
117
+ updatedAt: z.ZodDate;
118
+ }, z.core.$strip>;
119
+ export declare const MediaSchema: z.ZodObject<{
120
+ id: z.ZodString;
121
+ schemaVersion: z.ZodDefault<z.ZodString>;
122
+ filename: z.ZodString;
123
+ mimeType: z.ZodString;
124
+ filesize: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
125
+ url: z.ZodString;
126
+ alt: z.ZodOptional<z.ZodNullable<z.ZodString>>;
127
+ width: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
128
+ height: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
129
+ focalPoint: z.ZodOptional<z.ZodNullable<z.ZodObject<{
130
+ x: z.ZodNumber;
131
+ y: z.ZodNumber;
132
+ }, z.core.$strip>>>;
133
+ sizes: z.ZodOptional<z.ZodNullable<z.ZodArray<z.ZodObject<{
134
+ name: z.ZodString;
135
+ width: z.ZodNumber;
136
+ height: z.ZodNumber;
137
+ url: z.ZodString;
138
+ filesize: z.ZodOptional<z.ZodNumber>;
139
+ }, z.core.$strip>>>>;
140
+ uploadedBy: z.ZodOptional<z.ZodNullable<z.ZodString>>;
141
+ createdAt: z.ZodDate;
142
+ updatedAt: z.ZodDate;
143
+ }, z.core.$strip>;
144
+ /**
145
+ * Schema for creating new media
146
+ */
147
+ export declare const MediaInsertSchema: z.ZodObject<{
148
+ id: z.ZodString;
149
+ url: z.ZodString;
150
+ filename: z.ZodString;
151
+ alt: z.ZodOptional<z.ZodNullable<z.ZodString>>;
152
+ width: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
153
+ height: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
154
+ schemaVersion: z.ZodDefault<z.ZodString>;
155
+ mimeType: z.ZodString;
156
+ focalPoint: z.ZodOptional<z.ZodNullable<z.ZodObject<{
157
+ x: z.ZodNumber;
158
+ y: z.ZodNumber;
159
+ }, z.core.$strip>>>;
160
+ sizes: z.ZodOptional<z.ZodNullable<z.ZodArray<z.ZodObject<{
161
+ name: z.ZodString;
162
+ width: z.ZodNumber;
163
+ height: z.ZodNumber;
164
+ url: z.ZodString;
165
+ filesize: z.ZodOptional<z.ZodNumber>;
166
+ }, z.core.$strip>>>>;
167
+ filesize: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
168
+ uploadedBy: z.ZodOptional<z.ZodNullable<z.ZodString>>;
169
+ createdAt: z.ZodOptional<z.ZodDate>;
170
+ updatedAt: z.ZodOptional<z.ZodDate>;
171
+ }, z.core.$strip>;
172
+ export type Media = z.infer<typeof MediaSchema>;
173
+ export type MediaInsert = z.infer<typeof MediaInsertSchema>;
174
+ /**
175
+ * Check if MIME type is an image
176
+ */
177
+ export declare function isImageMimeType(mimeType: string): boolean;
178
+ /**
179
+ * Check if MIME type is a video
180
+ */
181
+ export declare function isVideoMimeType(mimeType: string): boolean;
182
+ /**
183
+ * Check if MIME type is audio
184
+ */
185
+ export declare function isAudioMimeType(mimeType: string): boolean;
186
+ /**
187
+ * Check if MIME type is a document
188
+ */
189
+ export declare function isDocumentMimeType(mimeType: string): boolean;
190
+ /**
191
+ * Get media type from MIME type
192
+ */
193
+ export declare function getMediaType(mimeType: string): MediaType;
194
+ /**
195
+ * Check if MIME type is allowed
196
+ */
197
+ export declare function isAllowedMimeType(mimeType: string): boolean;
198
+ /**
199
+ * Get file extension from filename
200
+ */
201
+ export declare function getFileExtension(filename: string): string;
202
+ /**
203
+ * Get MIME type from file extension
204
+ */
205
+ export declare function getMimeTypeFromExtension(extension: string): string | null;
206
+ /**
207
+ * Check if media is an image
208
+ */
209
+ export declare function isImage(media: Media): boolean;
210
+ /**
211
+ * Check if media is a video
212
+ */
213
+ export declare function isVideo(media: Media): boolean;
214
+ /**
215
+ * Check if media is audio
216
+ */
217
+ export declare function isAudio(media: Media): boolean;
218
+ /**
219
+ * Check if media is a document
220
+ */
221
+ export declare function isDocument(media: Media): boolean;
222
+ /**
223
+ * Check if media has dimensions
224
+ */
225
+ export declare function hasDimensions(media: Media): boolean;
226
+ /**
227
+ * Get aspect ratio
228
+ */
229
+ export declare function getAspectRatio(media: Media): number | null;
230
+ /**
231
+ * Check if image is landscape
232
+ */
233
+ export declare function isLandscape(media: Media): boolean;
234
+ /**
235
+ * Check if image is portrait
236
+ */
237
+ export declare function isPortrait(media: Media): boolean;
238
+ /**
239
+ * Check if image is square
240
+ */
241
+ export declare function isSquare(media: Media): boolean;
242
+ /**
243
+ * Calculate scaled dimensions
244
+ */
245
+ export declare function calculateScaledDimensions(media: Media, maxWidth: number, maxHeight: number): {
246
+ width: number;
247
+ height: number;
248
+ } | null;
249
+ /**
250
+ * Check if media has focal point
251
+ */
252
+ export declare function hasFocalPoint(media: Media): boolean;
253
+ /**
254
+ * Get focal point or default center
255
+ */
256
+ export declare function getFocalPoint(media: Media): FocalPoint;
257
+ /**
258
+ * Convert normalized focal point to pixel coordinates
259
+ */
260
+ export declare function focalPointToPixels(media: Media): {
261
+ x: number;
262
+ y: number;
263
+ } | null;
264
+ /**
265
+ * Create focal point from pixel coordinates
266
+ */
267
+ export declare function pixelsToFocalPoint(width: number, height: number, x: number, y: number): FocalPoint;
268
+ /**
269
+ * Check if media has generated sizes
270
+ */
271
+ export declare function hasSizes(media: Media): boolean;
272
+ /**
273
+ * Get size by name
274
+ */
275
+ export declare function getSizeByName(media: Media, name: string): ImageSize | undefined;
276
+ /**
277
+ * Get all size names
278
+ */
279
+ export declare function getSizeNames(media: Media): string[];
280
+ /**
281
+ * Find best size for dimensions
282
+ */
283
+ export declare function findBestSize(media: Media, targetWidth: number, targetHeight: number): ImageSize | null;
284
+ /**
285
+ * Format file size in human-readable format
286
+ */
287
+ export declare function formatFileSize(bytes: number): string;
288
+ /**
289
+ * Check if file size is within limit
290
+ */
291
+ export declare function isWithinSizeLimit(media: Media): boolean;
292
+ /**
293
+ * Get size limit for media type
294
+ */
295
+ export declare function getSizeLimit(mimeType: string): number;
296
+ /**
297
+ * Check if media has alt text
298
+ */
299
+ export declare function hasAltText(media: Media): boolean;
300
+ /**
301
+ * Check if alt text is meaningful (not just filename)
302
+ */
303
+ export declare function hasMeaningfulAltText(media: Media): boolean;
304
+ /**
305
+ * Check if media has uploader
306
+ */
307
+ export declare function hasUploader(media: Media): boolean;
308
+ /**
309
+ * Check if media was uploaded by specific user
310
+ */
311
+ export declare function isUploadedBy(media: Media, userId: string): boolean;
312
+ /**
313
+ * Create media insert data
314
+ */
315
+ export declare function createMediaInsert(filename: string, mimeType: string, url: string, options?: {
316
+ id?: string;
317
+ filesize?: number | null;
318
+ alt?: string | null;
319
+ width?: number | null;
320
+ height?: number | null;
321
+ focalPoint?: FocalPoint | null;
322
+ sizes?: ImageSize[] | null;
323
+ uploadedBy?: string | null;
324
+ }): MediaInsert;
325
+ /**
326
+ * Update media data
327
+ */
328
+ export declare function updateMedia(updates: {
329
+ alt?: string | null;
330
+ focalPoint?: FocalPoint | null;
331
+ sizes?: ImageSize[] | null;
332
+ }): Partial<Media>;
333
+ /**
334
+ * Media with computed fields for UI display
335
+ */
336
+ export interface MediaWithComputed extends Media {
337
+ _computed: {
338
+ mediaType: MediaType;
339
+ isImage: boolean;
340
+ isVideo: boolean;
341
+ isAudio: boolean;
342
+ isDocument: boolean;
343
+ hasDimensions: boolean;
344
+ aspectRatio: number | null;
345
+ isLandscape: boolean;
346
+ isPortrait: boolean;
347
+ isSquare: boolean;
348
+ hasFocalPoint: boolean;
349
+ hasSizes: boolean;
350
+ hasAltText: boolean;
351
+ hasMeaningfulAltText: boolean;
352
+ hasUploader: boolean;
353
+ isWithinSizeLimit: boolean;
354
+ formattedFileSize: string;
355
+ extension: string;
356
+ };
357
+ }
358
+ /**
359
+ * Convert media to format with computed fields
360
+ */
361
+ export declare function mediaToHuman(media: Media): MediaWithComputed;
362
+ /**
363
+ * Media with metadata for agent/API consumption
364
+ */
365
+ export interface MediaAgent extends Media {
366
+ metadata: {
367
+ type: MediaType;
368
+ extension: string;
369
+ hasAlt: boolean;
370
+ dimensionsPresent: boolean;
371
+ aspectRatio: number | null;
372
+ orientation: 'landscape' | 'portrait' | 'square' | null;
373
+ sizesAvailable: number;
374
+ withinSizeLimit: boolean;
375
+ };
376
+ }
377
+ /**
378
+ * Convert media to agent-compatible format
379
+ */
380
+ export declare function mediaToAgent(media: Media): MediaAgent;
381
+ /**
382
+ * Zod schema for media with computed fields
383
+ */
384
+ export declare const MediaWithComputedSchema: z.ZodIntersection<z.ZodObject<{
385
+ id: z.ZodString;
386
+ schemaVersion: z.ZodDefault<z.ZodString>;
387
+ filename: z.ZodString;
388
+ mimeType: z.ZodString;
389
+ filesize: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
390
+ url: z.ZodString;
391
+ alt: z.ZodOptional<z.ZodNullable<z.ZodString>>;
392
+ width: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
393
+ height: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
394
+ focalPoint: z.ZodOptional<z.ZodNullable<z.ZodObject<{
395
+ x: z.ZodNumber;
396
+ y: z.ZodNumber;
397
+ }, z.core.$strip>>>;
398
+ sizes: z.ZodOptional<z.ZodNullable<z.ZodArray<z.ZodObject<{
399
+ name: z.ZodString;
400
+ width: z.ZodNumber;
401
+ height: z.ZodNumber;
402
+ url: z.ZodString;
403
+ filesize: z.ZodOptional<z.ZodNumber>;
404
+ }, z.core.$strip>>>>;
405
+ uploadedBy: z.ZodOptional<z.ZodNullable<z.ZodString>>;
406
+ createdAt: z.ZodDate;
407
+ updatedAt: z.ZodDate;
408
+ }, z.core.$strip>, z.ZodObject<{
409
+ _computed: z.ZodObject<{
410
+ mediaType: z.ZodEnum<{
411
+ image: "image";
412
+ video: "video";
413
+ audio: "audio";
414
+ document: "document";
415
+ other: "other";
416
+ }>;
417
+ isImage: z.ZodBoolean;
418
+ isVideo: z.ZodBoolean;
419
+ isAudio: z.ZodBoolean;
420
+ isDocument: z.ZodBoolean;
421
+ hasDimensions: z.ZodBoolean;
422
+ aspectRatio: z.ZodNullable<z.ZodNumber>;
423
+ isLandscape: z.ZodBoolean;
424
+ isPortrait: z.ZodBoolean;
425
+ isSquare: z.ZodBoolean;
426
+ hasFocalPoint: z.ZodBoolean;
427
+ hasSizes: z.ZodBoolean;
428
+ hasAltText: z.ZodBoolean;
429
+ hasMeaningfulAltText: z.ZodBoolean;
430
+ hasUploader: z.ZodBoolean;
431
+ isWithinSizeLimit: z.ZodBoolean;
432
+ formattedFileSize: z.ZodString;
433
+ extension: z.ZodString;
434
+ }, z.core.$strip>;
435
+ }, z.core.$strip>>;
436
+ /**
437
+ * Zod schema for media with agent metadata
438
+ */
439
+ export declare const MediaAgentSchema: z.ZodIntersection<z.ZodObject<{
440
+ id: z.ZodString;
441
+ schemaVersion: z.ZodDefault<z.ZodString>;
442
+ filename: z.ZodString;
443
+ mimeType: z.ZodString;
444
+ filesize: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
445
+ url: z.ZodString;
446
+ alt: z.ZodOptional<z.ZodNullable<z.ZodString>>;
447
+ width: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
448
+ height: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
449
+ focalPoint: z.ZodOptional<z.ZodNullable<z.ZodObject<{
450
+ x: z.ZodNumber;
451
+ y: z.ZodNumber;
452
+ }, z.core.$strip>>>;
453
+ sizes: z.ZodOptional<z.ZodNullable<z.ZodArray<z.ZodObject<{
454
+ name: z.ZodString;
455
+ width: z.ZodNumber;
456
+ height: z.ZodNumber;
457
+ url: z.ZodString;
458
+ filesize: z.ZodOptional<z.ZodNumber>;
459
+ }, z.core.$strip>>>>;
460
+ uploadedBy: z.ZodOptional<z.ZodNullable<z.ZodString>>;
461
+ createdAt: z.ZodDate;
462
+ updatedAt: z.ZodDate;
463
+ }, z.core.$strip>, z.ZodObject<{
464
+ metadata: z.ZodObject<{
465
+ type: z.ZodEnum<{
466
+ image: "image";
467
+ video: "video";
468
+ audio: "audio";
469
+ document: "document";
470
+ other: "other";
471
+ }>;
472
+ extension: z.ZodString;
473
+ hasAlt: z.ZodBoolean;
474
+ dimensionsPresent: z.ZodBoolean;
475
+ aspectRatio: z.ZodNullable<z.ZodNumber>;
476
+ orientation: z.ZodNullable<z.ZodEnum<{
477
+ landscape: "landscape";
478
+ portrait: "portrait";
479
+ square: "square";
480
+ }>>;
481
+ sizesAvailable: z.ZodNumber;
482
+ withinSizeLimit: z.ZodBoolean;
483
+ }, z.core.$strip>;
484
+ }, z.core.$strip>>;
485
+ //# sourceMappingURL=media.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"media.d.ts","sourceRoot":"","sources":["../../src/entities/media.ts"],"names":[],"mappings":"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"}