mtlx-sdk 0.0.0-bootstrap.0 → 0.10.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 (115) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +175 -0
  3. package/dist/client.d.ts +67 -0
  4. package/dist/client.d.ts.map +1 -0
  5. package/dist/client.js +141 -0
  6. package/dist/client.js.map +1 -0
  7. package/dist/index.d.ts +26 -0
  8. package/dist/index.d.ts.map +1 -0
  9. package/dist/index.js +26 -0
  10. package/dist/index.js.map +1 -0
  11. package/dist/lib/buildPath.d.ts +19 -0
  12. package/dist/lib/buildPath.d.ts.map +1 -0
  13. package/dist/lib/buildPath.js +46 -0
  14. package/dist/lib/buildPath.js.map +1 -0
  15. package/dist/lib/dashboardLinks.d.ts +19 -0
  16. package/dist/lib/dashboardLinks.d.ts.map +1 -0
  17. package/dist/lib/dashboardLinks.js +37 -0
  18. package/dist/lib/dashboardLinks.js.map +1 -0
  19. package/dist/lib/enums.d.ts +41 -0
  20. package/dist/lib/enums.d.ts.map +1 -0
  21. package/dist/lib/enums.js +293 -0
  22. package/dist/lib/enums.js.map +1 -0
  23. package/dist/lib/eventRouter.d.ts +41 -0
  24. package/dist/lib/eventRouter.d.ts.map +1 -0
  25. package/dist/lib/eventRouter.js +43 -0
  26. package/dist/lib/eventRouter.js.map +1 -0
  27. package/dist/lib/fetchBinary.d.ts +15 -0
  28. package/dist/lib/fetchBinary.d.ts.map +1 -0
  29. package/dist/lib/fetchBinary.js +35 -0
  30. package/dist/lib/fetchBinary.js.map +1 -0
  31. package/dist/lib/fileFormats.d.ts +67 -0
  32. package/dist/lib/fileFormats.d.ts.map +1 -0
  33. package/dist/lib/fileFormats.js +92 -0
  34. package/dist/lib/fileFormats.js.map +1 -0
  35. package/dist/lib/list.d.ts +59 -0
  36. package/dist/lib/list.d.ts.map +1 -0
  37. package/dist/lib/list.js +53 -0
  38. package/dist/lib/list.js.map +1 -0
  39. package/dist/lib/parseResult.d.ts +14 -0
  40. package/dist/lib/parseResult.d.ts.map +1 -0
  41. package/dist/lib/parseResult.js +13 -0
  42. package/dist/lib/parseResult.js.map +1 -0
  43. package/dist/lib/schemas.d.ts +48 -0
  44. package/dist/lib/schemas.d.ts.map +1 -0
  45. package/dist/lib/schemas.js +43 -0
  46. package/dist/lib/schemas.js.map +1 -0
  47. package/dist/lib/types.d.ts +46 -0
  48. package/dist/lib/types.d.ts.map +1 -0
  49. package/dist/lib/types.js +22 -0
  50. package/dist/lib/types.js.map +1 -0
  51. package/dist/lib/upload.d.ts +36 -0
  52. package/dist/lib/upload.d.ts.map +1 -0
  53. package/dist/lib/upload.js +79 -0
  54. package/dist/lib/upload.js.map +1 -0
  55. package/dist/lib/url.d.ts +7 -0
  56. package/dist/lib/url.d.ts.map +1 -0
  57. package/dist/lib/url.js +26 -0
  58. package/dist/lib/url.js.map +1 -0
  59. package/dist/routes/apiTokens.d.ts +172 -0
  60. package/dist/routes/apiTokens.d.ts.map +1 -0
  61. package/dist/routes/apiTokens.js +133 -0
  62. package/dist/routes/apiTokens.js.map +1 -0
  63. package/dist/routes/assets.d.ts +545 -0
  64. package/dist/routes/assets.d.ts.map +1 -0
  65. package/dist/routes/assets.js +275 -0
  66. package/dist/routes/assets.js.map +1 -0
  67. package/dist/routes/auth.d.ts +102 -0
  68. package/dist/routes/auth.d.ts.map +1 -0
  69. package/dist/routes/auth.js +98 -0
  70. package/dist/routes/auth.js.map +1 -0
  71. package/dist/routes/avatars.d.ts +130 -0
  72. package/dist/routes/avatars.d.ts.map +1 -0
  73. package/dist/routes/avatars.js +121 -0
  74. package/dist/routes/avatars.js.map +1 -0
  75. package/dist/routes/comments.d.ts +165 -0
  76. package/dist/routes/comments.d.ts.map +1 -0
  77. package/dist/routes/comments.js +106 -0
  78. package/dist/routes/comments.js.map +1 -0
  79. package/dist/routes/error.d.ts +10 -0
  80. package/dist/routes/error.d.ts.map +1 -0
  81. package/dist/routes/error.js +12 -0
  82. package/dist/routes/error.js.map +1 -0
  83. package/dist/routes/files.d.ts +70 -0
  84. package/dist/routes/files.d.ts.map +1 -0
  85. package/dist/routes/files.js +80 -0
  86. package/dist/routes/files.js.map +1 -0
  87. package/dist/routes/health.d.ts +10 -0
  88. package/dist/routes/health.d.ts.map +1 -0
  89. package/dist/routes/health.js +12 -0
  90. package/dist/routes/health.js.map +1 -0
  91. package/dist/routes/media.d.ts +22 -0
  92. package/dist/routes/media.d.ts.map +1 -0
  93. package/dist/routes/media.js +18 -0
  94. package/dist/routes/media.js.map +1 -0
  95. package/dist/routes/notifications.d.ts +164 -0
  96. package/dist/routes/notifications.d.ts.map +1 -0
  97. package/dist/routes/notifications.js +97 -0
  98. package/dist/routes/notifications.js.map +1 -0
  99. package/dist/routes/oembed.d.ts +80 -0
  100. package/dist/routes/oembed.d.ts.map +1 -0
  101. package/dist/routes/oembed.js +74 -0
  102. package/dist/routes/oembed.js.map +1 -0
  103. package/dist/routes/serverEvents.d.ts +521 -0
  104. package/dist/routes/serverEvents.d.ts.map +1 -0
  105. package/dist/routes/serverEvents.js +136 -0
  106. package/dist/routes/serverEvents.js.map +1 -0
  107. package/dist/routes/tasks.d.ts +242 -0
  108. package/dist/routes/tasks.d.ts.map +1 -0
  109. package/dist/routes/tasks.js +185 -0
  110. package/dist/routes/tasks.js.map +1 -0
  111. package/dist/routes/users.d.ts +1055 -0
  112. package/dist/routes/users.d.ts.map +1 -0
  113. package/dist/routes/users.js +233 -0
  114. package/dist/routes/users.js.map +1 -0
  115. package/package.json +46 -4
@@ -0,0 +1,521 @@
1
+ import * as z from 'zod';
2
+ import type { ApiClient } from '../client.js';
3
+ export declare const serverEventNotificationNewDataSchema: z.ZodOptional<z.ZodObject<{
4
+ count: z.ZodOptional<z.ZodNumber>;
5
+ topic: z.ZodOptional<z.ZodEnum<{
6
+ ASSET_LIKED: "ASSET_LIKED";
7
+ ASSET_MODERATED: "ASSET_MODERATED";
8
+ COMMENT_LIKED: "COMMENT_LIKED";
9
+ COMMENT_MENTIONED: "COMMENT_MENTIONED";
10
+ COMMENT_MODERATED: "COMMENT_MODERATED";
11
+ EXTERNAL_AUTH_APPROVED: "EXTERNAL_AUTH_APPROVED";
12
+ NEW_ASSET: "NEW_ASSET";
13
+ NEW_ASSET_VERSION: "NEW_ASSET_VERSION";
14
+ NEW_COMMENT: "NEW_COMMENT";
15
+ }>>;
16
+ }, z.core.$strip>>;
17
+ export declare const serverEventNotificationTopicDataSchema: z.ZodObject<{
18
+ topic: z.ZodEnum<{
19
+ ASSET_LIKED: "ASSET_LIKED";
20
+ ASSET_MODERATED: "ASSET_MODERATED";
21
+ COMMENT_LIKED: "COMMENT_LIKED";
22
+ COMMENT_MENTIONED: "COMMENT_MENTIONED";
23
+ COMMENT_MODERATED: "COMMENT_MODERATED";
24
+ EXTERNAL_AUTH_APPROVED: "EXTERNAL_AUTH_APPROVED";
25
+ NEW_ASSET: "NEW_ASSET";
26
+ NEW_ASSET_VERSION: "NEW_ASSET_VERSION";
27
+ NEW_COMMENT: "NEW_COMMENT";
28
+ }>;
29
+ title: z.ZodOptional<z.ZodString>;
30
+ link: z.ZodOptional<z.ZodString>;
31
+ }, z.core.$strip>;
32
+ export declare const serverEventAssetModeratedDataSchema: z.ZodObject<{
33
+ topic: z.ZodEnum<{
34
+ ASSET_LIKED: "ASSET_LIKED";
35
+ ASSET_MODERATED: "ASSET_MODERATED";
36
+ COMMENT_LIKED: "COMMENT_LIKED";
37
+ COMMENT_MENTIONED: "COMMENT_MENTIONED";
38
+ COMMENT_MODERATED: "COMMENT_MODERATED";
39
+ EXTERNAL_AUTH_APPROVED: "EXTERNAL_AUTH_APPROVED";
40
+ NEW_ASSET: "NEW_ASSET";
41
+ NEW_ASSET_VERSION: "NEW_ASSET_VERSION";
42
+ NEW_COMMENT: "NEW_COMMENT";
43
+ }>;
44
+ title: z.ZodOptional<z.ZodString>;
45
+ link: z.ZodOptional<z.ZodString>;
46
+ userName: z.ZodString;
47
+ assetName: z.ZodString;
48
+ reason: z.ZodString;
49
+ }, z.core.$strip>;
50
+ export declare const serverEventCommentModeratedDataSchema: z.ZodObject<{
51
+ topic: z.ZodEnum<{
52
+ ASSET_LIKED: "ASSET_LIKED";
53
+ ASSET_MODERATED: "ASSET_MODERATED";
54
+ COMMENT_LIKED: "COMMENT_LIKED";
55
+ COMMENT_MENTIONED: "COMMENT_MENTIONED";
56
+ COMMENT_MODERATED: "COMMENT_MODERATED";
57
+ EXTERNAL_AUTH_APPROVED: "EXTERNAL_AUTH_APPROVED";
58
+ NEW_ASSET: "NEW_ASSET";
59
+ NEW_ASSET_VERSION: "NEW_ASSET_VERSION";
60
+ NEW_COMMENT: "NEW_COMMENT";
61
+ }>;
62
+ title: z.ZodOptional<z.ZodString>;
63
+ link: z.ZodOptional<z.ZodString>;
64
+ userName: z.ZodString;
65
+ assetName: z.ZodString;
66
+ commentId: z.ZodNumber;
67
+ commentText: z.ZodString;
68
+ reason: z.ZodString;
69
+ targetUserId: z.ZodNumber;
70
+ }, z.core.$strip>;
71
+ export declare const serverEventAssetLikedDataSchema: z.ZodObject<{
72
+ topic: z.ZodEnum<{
73
+ ASSET_LIKED: "ASSET_LIKED";
74
+ ASSET_MODERATED: "ASSET_MODERATED";
75
+ COMMENT_LIKED: "COMMENT_LIKED";
76
+ COMMENT_MENTIONED: "COMMENT_MENTIONED";
77
+ COMMENT_MODERATED: "COMMENT_MODERATED";
78
+ EXTERNAL_AUTH_APPROVED: "EXTERNAL_AUTH_APPROVED";
79
+ NEW_ASSET: "NEW_ASSET";
80
+ NEW_ASSET_VERSION: "NEW_ASSET_VERSION";
81
+ NEW_COMMENT: "NEW_COMMENT";
82
+ }>;
83
+ title: z.ZodOptional<z.ZodString>;
84
+ link: z.ZodOptional<z.ZodString>;
85
+ userName: z.ZodString;
86
+ assetName: z.ZodString;
87
+ actorName: z.ZodString;
88
+ }, z.core.$strip>;
89
+ export declare const serverEventCommentLikedDataSchema: z.ZodObject<{
90
+ topic: z.ZodEnum<{
91
+ ASSET_LIKED: "ASSET_LIKED";
92
+ ASSET_MODERATED: "ASSET_MODERATED";
93
+ COMMENT_LIKED: "COMMENT_LIKED";
94
+ COMMENT_MENTIONED: "COMMENT_MENTIONED";
95
+ COMMENT_MODERATED: "COMMENT_MODERATED";
96
+ EXTERNAL_AUTH_APPROVED: "EXTERNAL_AUTH_APPROVED";
97
+ NEW_ASSET: "NEW_ASSET";
98
+ NEW_ASSET_VERSION: "NEW_ASSET_VERSION";
99
+ NEW_COMMENT: "NEW_COMMENT";
100
+ }>;
101
+ title: z.ZodOptional<z.ZodString>;
102
+ link: z.ZodOptional<z.ZodString>;
103
+ userName: z.ZodString;
104
+ assetName: z.ZodString;
105
+ commentId: z.ZodNumber;
106
+ commentText: z.ZodString;
107
+ actorName: z.ZodString;
108
+ targetUserId: z.ZodNumber;
109
+ }, z.core.$strip>;
110
+ export declare const serverEventAssetCreatedUpdatedDataSchema: z.ZodObject<{
111
+ asset: z.ZodObject<{
112
+ id: z.ZodNumber;
113
+ name: z.ZodString;
114
+ type: z.ZodEnum<{
115
+ MATERIAL: "MATERIAL";
116
+ }>;
117
+ visibility: z.ZodEnum<{
118
+ PRIVATE: "PRIVATE";
119
+ PUBLIC: "PUBLIC";
120
+ UNLISTED: "UNLISTED";
121
+ }>;
122
+ userId: z.ZodNumber;
123
+ userName: z.ZodString;
124
+ description: z.ZodString;
125
+ keywords: z.ZodString;
126
+ shareLicense: z.ZodEnum<{
127
+ CC_0: "CC_0";
128
+ CC_BY: "CC_BY";
129
+ CC_BY_NC: "CC_BY_NC";
130
+ CC_BY_NC_ND: "CC_BY_NC_ND";
131
+ CC_BY_NC_SA: "CC_BY_NC_SA";
132
+ CC_BY_ND: "CC_BY_ND";
133
+ CC_BY_SA: "CC_BY_SA";
134
+ NONE: "NONE";
135
+ }>;
136
+ aiUsage: z.ZodEnum<{
137
+ AI_FREE: "AI_FREE";
138
+ AI_USED: "AI_USED";
139
+ UNDISCLOSED: "UNDISCLOSED";
140
+ }>;
141
+ commentMode: z.ZodEnum<{
142
+ ENABLED: "ENABLED";
143
+ MEMBERS_ONLY: "MEMBERS_ONLY";
144
+ NONE: "NONE";
145
+ }>;
146
+ reported: z.ZodBoolean;
147
+ likeCount: z.ZodInt;
148
+ shareCount: z.ZodInt;
149
+ createdAt: z.ZodISODateTime;
150
+ updatedAt: z.ZodISODateTime;
151
+ archived: z.ZodBoolean;
152
+ metadata: z.ZodString;
153
+ versionOriginalSize: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
154
+ width: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
155
+ height: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
156
+ depth: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
157
+ fileOid: z.ZodString;
158
+ thumbnailOid: z.ZodOptional<z.ZodNullable<z.ZodString>>;
159
+ materialInfo: z.ZodOptional<z.ZodObject<{
160
+ version: z.ZodOptional<z.ZodString>;
161
+ colorspace: z.ZodOptional<z.ZodString>;
162
+ materials: z.ZodArray<z.ZodObject<{
163
+ name: z.ZodOptional<z.ZodString>;
164
+ category: z.ZodString;
165
+ }, z.core.$strip>>;
166
+ nodeGraphCount: z.ZodNumber;
167
+ topLevelNodeCount: z.ZodNumber;
168
+ referencedTextures: z.ZodArray<z.ZodString>;
169
+ warnings: z.ZodArray<z.ZodString>;
170
+ }, z.core.$strip>>;
171
+ }, z.core.$strip>;
172
+ actorName: z.ZodOptional<z.ZodString>;
173
+ }, z.core.$strip>;
174
+ export declare const serverEventAssetDeletedDataSchema: z.ZodObject<{
175
+ assetId: z.ZodNumber;
176
+ userName: z.ZodString;
177
+ assetName: z.ZodString;
178
+ }, z.core.$strip>;
179
+ export declare const serverEventCommentDataSchema: z.ZodObject<{
180
+ comment: z.ZodObject<{
181
+ id: z.ZodNumber;
182
+ text: z.ZodString;
183
+ likeCount: z.ZodNumber;
184
+ createdAt: z.ZodISODateTime;
185
+ moderatedAt: z.ZodNullable<z.ZodISODateTime>;
186
+ moderationReason: z.ZodNullable<z.ZodString>;
187
+ createdByUserId: z.ZodNumber;
188
+ createdByName: z.ZodString;
189
+ likeId: z.ZodNullable<z.ZodNumber>;
190
+ }, z.core.$strip>;
191
+ assetId: z.ZodNumber;
192
+ userName: z.ZodString;
193
+ assetName: z.ZodString;
194
+ mentionedUserIds: z.ZodOptional<z.ZodArray<z.ZodNumber>>;
195
+ }, z.core.$strip>;
196
+ export declare const serverEventDataSchemas: {
197
+ readonly 'asset.created': z.ZodObject<{
198
+ asset: z.ZodObject<{
199
+ id: z.ZodNumber;
200
+ name: z.ZodString;
201
+ type: z.ZodEnum<{
202
+ MATERIAL: "MATERIAL";
203
+ }>;
204
+ visibility: z.ZodEnum<{
205
+ PRIVATE: "PRIVATE";
206
+ PUBLIC: "PUBLIC";
207
+ UNLISTED: "UNLISTED";
208
+ }>;
209
+ userId: z.ZodNumber;
210
+ userName: z.ZodString;
211
+ description: z.ZodString;
212
+ keywords: z.ZodString;
213
+ shareLicense: z.ZodEnum<{
214
+ CC_0: "CC_0";
215
+ CC_BY: "CC_BY";
216
+ CC_BY_NC: "CC_BY_NC";
217
+ CC_BY_NC_ND: "CC_BY_NC_ND";
218
+ CC_BY_NC_SA: "CC_BY_NC_SA";
219
+ CC_BY_ND: "CC_BY_ND";
220
+ CC_BY_SA: "CC_BY_SA";
221
+ NONE: "NONE";
222
+ }>;
223
+ aiUsage: z.ZodEnum<{
224
+ AI_FREE: "AI_FREE";
225
+ AI_USED: "AI_USED";
226
+ UNDISCLOSED: "UNDISCLOSED";
227
+ }>;
228
+ commentMode: z.ZodEnum<{
229
+ ENABLED: "ENABLED";
230
+ MEMBERS_ONLY: "MEMBERS_ONLY";
231
+ NONE: "NONE";
232
+ }>;
233
+ reported: z.ZodBoolean;
234
+ likeCount: z.ZodInt;
235
+ shareCount: z.ZodInt;
236
+ createdAt: z.ZodISODateTime;
237
+ updatedAt: z.ZodISODateTime;
238
+ archived: z.ZodBoolean;
239
+ metadata: z.ZodString;
240
+ versionOriginalSize: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
241
+ width: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
242
+ height: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
243
+ depth: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
244
+ fileOid: z.ZodString;
245
+ thumbnailOid: z.ZodOptional<z.ZodNullable<z.ZodString>>;
246
+ materialInfo: z.ZodOptional<z.ZodObject<{
247
+ version: z.ZodOptional<z.ZodString>;
248
+ colorspace: z.ZodOptional<z.ZodString>;
249
+ materials: z.ZodArray<z.ZodObject<{
250
+ name: z.ZodOptional<z.ZodString>;
251
+ category: z.ZodString;
252
+ }, z.core.$strip>>;
253
+ nodeGraphCount: z.ZodNumber;
254
+ topLevelNodeCount: z.ZodNumber;
255
+ referencedTextures: z.ZodArray<z.ZodString>;
256
+ warnings: z.ZodArray<z.ZodString>;
257
+ }, z.core.$strip>>;
258
+ }, z.core.$strip>;
259
+ actorName: z.ZodOptional<z.ZodString>;
260
+ }, z.core.$strip>;
261
+ readonly 'asset.deleted': z.ZodObject<{
262
+ assetId: z.ZodNumber;
263
+ userName: z.ZodString;
264
+ assetName: z.ZodString;
265
+ }, z.core.$strip>;
266
+ readonly 'asset.liked': z.ZodObject<{
267
+ topic: z.ZodEnum<{
268
+ ASSET_LIKED: "ASSET_LIKED";
269
+ ASSET_MODERATED: "ASSET_MODERATED";
270
+ COMMENT_LIKED: "COMMENT_LIKED";
271
+ COMMENT_MENTIONED: "COMMENT_MENTIONED";
272
+ COMMENT_MODERATED: "COMMENT_MODERATED";
273
+ EXTERNAL_AUTH_APPROVED: "EXTERNAL_AUTH_APPROVED";
274
+ NEW_ASSET: "NEW_ASSET";
275
+ NEW_ASSET_VERSION: "NEW_ASSET_VERSION";
276
+ NEW_COMMENT: "NEW_COMMENT";
277
+ }>;
278
+ title: z.ZodOptional<z.ZodString>;
279
+ link: z.ZodOptional<z.ZodString>;
280
+ userName: z.ZodString;
281
+ assetName: z.ZodString;
282
+ actorName: z.ZodString;
283
+ }, z.core.$strip>;
284
+ readonly 'asset.moderated': z.ZodObject<{
285
+ topic: z.ZodEnum<{
286
+ ASSET_LIKED: "ASSET_LIKED";
287
+ ASSET_MODERATED: "ASSET_MODERATED";
288
+ COMMENT_LIKED: "COMMENT_LIKED";
289
+ COMMENT_MENTIONED: "COMMENT_MENTIONED";
290
+ COMMENT_MODERATED: "COMMENT_MODERATED";
291
+ EXTERNAL_AUTH_APPROVED: "EXTERNAL_AUTH_APPROVED";
292
+ NEW_ASSET: "NEW_ASSET";
293
+ NEW_ASSET_VERSION: "NEW_ASSET_VERSION";
294
+ NEW_COMMENT: "NEW_COMMENT";
295
+ }>;
296
+ title: z.ZodOptional<z.ZodString>;
297
+ link: z.ZodOptional<z.ZodString>;
298
+ userName: z.ZodString;
299
+ assetName: z.ZodString;
300
+ reason: z.ZodString;
301
+ }, z.core.$strip>;
302
+ readonly 'asset.updated': z.ZodObject<{
303
+ asset: z.ZodObject<{
304
+ id: z.ZodNumber;
305
+ name: z.ZodString;
306
+ type: z.ZodEnum<{
307
+ MATERIAL: "MATERIAL";
308
+ }>;
309
+ visibility: z.ZodEnum<{
310
+ PRIVATE: "PRIVATE";
311
+ PUBLIC: "PUBLIC";
312
+ UNLISTED: "UNLISTED";
313
+ }>;
314
+ userId: z.ZodNumber;
315
+ userName: z.ZodString;
316
+ description: z.ZodString;
317
+ keywords: z.ZodString;
318
+ shareLicense: z.ZodEnum<{
319
+ CC_0: "CC_0";
320
+ CC_BY: "CC_BY";
321
+ CC_BY_NC: "CC_BY_NC";
322
+ CC_BY_NC_ND: "CC_BY_NC_ND";
323
+ CC_BY_NC_SA: "CC_BY_NC_SA";
324
+ CC_BY_ND: "CC_BY_ND";
325
+ CC_BY_SA: "CC_BY_SA";
326
+ NONE: "NONE";
327
+ }>;
328
+ aiUsage: z.ZodEnum<{
329
+ AI_FREE: "AI_FREE";
330
+ AI_USED: "AI_USED";
331
+ UNDISCLOSED: "UNDISCLOSED";
332
+ }>;
333
+ commentMode: z.ZodEnum<{
334
+ ENABLED: "ENABLED";
335
+ MEMBERS_ONLY: "MEMBERS_ONLY";
336
+ NONE: "NONE";
337
+ }>;
338
+ reported: z.ZodBoolean;
339
+ likeCount: z.ZodInt;
340
+ shareCount: z.ZodInt;
341
+ createdAt: z.ZodISODateTime;
342
+ updatedAt: z.ZodISODateTime;
343
+ archived: z.ZodBoolean;
344
+ metadata: z.ZodString;
345
+ versionOriginalSize: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
346
+ width: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
347
+ height: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
348
+ depth: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
349
+ fileOid: z.ZodString;
350
+ thumbnailOid: z.ZodOptional<z.ZodNullable<z.ZodString>>;
351
+ materialInfo: z.ZodOptional<z.ZodObject<{
352
+ version: z.ZodOptional<z.ZodString>;
353
+ colorspace: z.ZodOptional<z.ZodString>;
354
+ materials: z.ZodArray<z.ZodObject<{
355
+ name: z.ZodOptional<z.ZodString>;
356
+ category: z.ZodString;
357
+ }, z.core.$strip>>;
358
+ nodeGraphCount: z.ZodNumber;
359
+ topLevelNodeCount: z.ZodNumber;
360
+ referencedTextures: z.ZodArray<z.ZodString>;
361
+ warnings: z.ZodArray<z.ZodString>;
362
+ }, z.core.$strip>>;
363
+ }, z.core.$strip>;
364
+ actorName: z.ZodOptional<z.ZodString>;
365
+ }, z.core.$strip>;
366
+ readonly 'comment.liked': z.ZodObject<{
367
+ topic: z.ZodEnum<{
368
+ ASSET_LIKED: "ASSET_LIKED";
369
+ ASSET_MODERATED: "ASSET_MODERATED";
370
+ COMMENT_LIKED: "COMMENT_LIKED";
371
+ COMMENT_MENTIONED: "COMMENT_MENTIONED";
372
+ COMMENT_MODERATED: "COMMENT_MODERATED";
373
+ EXTERNAL_AUTH_APPROVED: "EXTERNAL_AUTH_APPROVED";
374
+ NEW_ASSET: "NEW_ASSET";
375
+ NEW_ASSET_VERSION: "NEW_ASSET_VERSION";
376
+ NEW_COMMENT: "NEW_COMMENT";
377
+ }>;
378
+ title: z.ZodOptional<z.ZodString>;
379
+ link: z.ZodOptional<z.ZodString>;
380
+ userName: z.ZodString;
381
+ assetName: z.ZodString;
382
+ commentId: z.ZodNumber;
383
+ commentText: z.ZodString;
384
+ actorName: z.ZodString;
385
+ targetUserId: z.ZodNumber;
386
+ }, z.core.$strip>;
387
+ readonly 'comment.moderated': z.ZodObject<{
388
+ topic: z.ZodEnum<{
389
+ ASSET_LIKED: "ASSET_LIKED";
390
+ ASSET_MODERATED: "ASSET_MODERATED";
391
+ COMMENT_LIKED: "COMMENT_LIKED";
392
+ COMMENT_MENTIONED: "COMMENT_MENTIONED";
393
+ COMMENT_MODERATED: "COMMENT_MODERATED";
394
+ EXTERNAL_AUTH_APPROVED: "EXTERNAL_AUTH_APPROVED";
395
+ NEW_ASSET: "NEW_ASSET";
396
+ NEW_ASSET_VERSION: "NEW_ASSET_VERSION";
397
+ NEW_COMMENT: "NEW_COMMENT";
398
+ }>;
399
+ title: z.ZodOptional<z.ZodString>;
400
+ link: z.ZodOptional<z.ZodString>;
401
+ userName: z.ZodString;
402
+ assetName: z.ZodString;
403
+ commentId: z.ZodNumber;
404
+ commentText: z.ZodString;
405
+ reason: z.ZodString;
406
+ targetUserId: z.ZodNumber;
407
+ }, z.core.$strip>;
408
+ readonly 'comment.new': z.ZodObject<{
409
+ comment: z.ZodObject<{
410
+ id: z.ZodNumber;
411
+ text: z.ZodString;
412
+ likeCount: z.ZodNumber;
413
+ createdAt: z.ZodISODateTime;
414
+ moderatedAt: z.ZodNullable<z.ZodISODateTime>;
415
+ moderationReason: z.ZodNullable<z.ZodString>;
416
+ createdByUserId: z.ZodNumber;
417
+ createdByName: z.ZodString;
418
+ likeId: z.ZodNullable<z.ZodNumber>;
419
+ }, z.core.$strip>;
420
+ assetId: z.ZodNumber;
421
+ userName: z.ZodString;
422
+ assetName: z.ZodString;
423
+ mentionedUserIds: z.ZodOptional<z.ZodArray<z.ZodNumber>>;
424
+ }, z.core.$strip>;
425
+ readonly 'comment.updated': z.ZodObject<{
426
+ comment: z.ZodObject<{
427
+ id: z.ZodNumber;
428
+ text: z.ZodString;
429
+ likeCount: z.ZodNumber;
430
+ createdAt: z.ZodISODateTime;
431
+ moderatedAt: z.ZodNullable<z.ZodISODateTime>;
432
+ moderationReason: z.ZodNullable<z.ZodString>;
433
+ createdByUserId: z.ZodNumber;
434
+ createdByName: z.ZodString;
435
+ likeId: z.ZodNullable<z.ZodNumber>;
436
+ }, z.core.$strip>;
437
+ assetId: z.ZodNumber;
438
+ userName: z.ZodString;
439
+ assetName: z.ZodString;
440
+ mentionedUserIds: z.ZodOptional<z.ZodArray<z.ZodNumber>>;
441
+ }, z.core.$strip>;
442
+ readonly 'external-auth.approved': z.ZodObject<{
443
+ topic: z.ZodEnum<{
444
+ ASSET_LIKED: "ASSET_LIKED";
445
+ ASSET_MODERATED: "ASSET_MODERATED";
446
+ COMMENT_LIKED: "COMMENT_LIKED";
447
+ COMMENT_MENTIONED: "COMMENT_MENTIONED";
448
+ COMMENT_MODERATED: "COMMENT_MODERATED";
449
+ EXTERNAL_AUTH_APPROVED: "EXTERNAL_AUTH_APPROVED";
450
+ NEW_ASSET: "NEW_ASSET";
451
+ NEW_ASSET_VERSION: "NEW_ASSET_VERSION";
452
+ NEW_COMMENT: "NEW_COMMENT";
453
+ }>;
454
+ title: z.ZodOptional<z.ZodString>;
455
+ link: z.ZodOptional<z.ZodString>;
456
+ }, z.core.$strip>;
457
+ readonly 'notification.new': z.ZodOptional<z.ZodObject<{
458
+ count: z.ZodOptional<z.ZodNumber>;
459
+ topic: z.ZodOptional<z.ZodEnum<{
460
+ ASSET_LIKED: "ASSET_LIKED";
461
+ ASSET_MODERATED: "ASSET_MODERATED";
462
+ COMMENT_LIKED: "COMMENT_LIKED";
463
+ COMMENT_MENTIONED: "COMMENT_MENTIONED";
464
+ COMMENT_MODERATED: "COMMENT_MODERATED";
465
+ EXTERNAL_AUTH_APPROVED: "EXTERNAL_AUTH_APPROVED";
466
+ NEW_ASSET: "NEW_ASSET";
467
+ NEW_ASSET_VERSION: "NEW_ASSET_VERSION";
468
+ NEW_COMMENT: "NEW_COMMENT";
469
+ }>>;
470
+ }, z.core.$strip>>;
471
+ };
472
+ export type ServerEventType = keyof typeof serverEventDataSchemas;
473
+ export declare const SERVER_EVENT_TYPES: [ServerEventType, ...ServerEventType[]];
474
+ export declare const serverEventTypeSchema: z.ZodEnum<{
475
+ "asset.created": "asset.created";
476
+ "asset.deleted": "asset.deleted";
477
+ "asset.liked": "asset.liked";
478
+ "asset.moderated": "asset.moderated";
479
+ "asset.updated": "asset.updated";
480
+ "comment.liked": "comment.liked";
481
+ "comment.moderated": "comment.moderated";
482
+ "comment.new": "comment.new";
483
+ "comment.updated": "comment.updated";
484
+ "external-auth.approved": "external-auth.approved";
485
+ "notification.new": "notification.new";
486
+ }>;
487
+ export type ServerEvent = {
488
+ [K in ServerEventType]: {
489
+ type: K;
490
+ userId: number;
491
+ data: z.infer<(typeof serverEventDataSchemas)[K]>;
492
+ };
493
+ }[ServerEventType];
494
+ export declare const serverEventSchema: z.ZodDiscriminatedUnion<[z.ZodObject<Readonly<{
495
+ [k: string]: z.core.$ZodType<unknown, unknown, z.core.$ZodTypeInternals<unknown, unknown>>;
496
+ }>, z.core.$strip>, ...z.ZodObject<Readonly<{
497
+ [k: string]: z.core.$ZodType<unknown, unknown, z.core.$ZodTypeInternals<unknown, unknown>>;
498
+ }>, z.core.$strip>[]], "type">;
499
+ export type SubscribeToServerEventsOptions = {
500
+ path?: string;
501
+ };
502
+ export type ServerEventsSubscription = {
503
+ addEventListener<K extends ServerEventType>(type: K, handler: (data: Extract<ServerEvent, {
504
+ type: K;
505
+ }>['data']) => void): void;
506
+ close(): void;
507
+ };
508
+ /**
509
+ * Subscribe to the API server's SSE events stream.
510
+ * Uses the ApiClient for authentication — JWT, session tokens, and API keys are all
511
+ * handled automatically via the client's axios interceptors.
512
+ * Returns an object with addEventListener(type, handler) for typed event handling and close().
513
+ *
514
+ * @example
515
+ * const sub = subscribeToServerEvents(client);
516
+ * sub.addEventListener('notification.new', (data) => { ... });
517
+ * sub.addEventListener('asset.updated', (data) => { ... });
518
+ * // on unmount: sub.close();
519
+ */
520
+ export declare function subscribeToServerEvents(client: ApiClient, options?: SubscribeToServerEventsOptions): ServerEventsSubscription;
521
+ //# sourceMappingURL=serverEvents.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serverEvents.d.ts","sources":["../../src/routes/serverEvents.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC;AACzB,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAU9C,eAAO,MAAM,oCAAoC;;;;;;;;;;;;;kBAKpC,CAAC;AAGd,eAAO,MAAM,sCAAsC;;;;;;;;;;;;;;iBAIjD,CAAC;AAGH,eAAO,MAAM,mCAAmC;;;;;;;;;;;;;;;;;iBAI9C,CAAC;AAEH,eAAO,MAAM,qCAAqC;;;;;;;;;;;;;;;;;;;;iBAOhD,CAAC;AAEH,eAAO,MAAM,+BAA+B;;;;;;;;;;;;;;;;;iBAI1C,CAAC;AAEH,eAAO,MAAM,iCAAiC;;;;;;;;;;;;;;;;;;;;iBAO5C,CAAC;AAGH,eAAO,MAAM,wCAAwC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAGnD,CAAC;AAEH,eAAO,MAAM,iCAAiC;;;;iBAI5C,CAAC;AAGH,eAAO,MAAM,4BAA4B;;;;;;;;;;;;;;;;iBAMvC,CAAC;AAMH,eAAO,MAAM,sBAAsB;aACjC,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;aACf,eAAe;;;;;aACf,aAAa;;;;;;;;;;;;;;;;;;aACb,iBAAiB;;;;;;;;;;;;;;;;;;aACjB,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;aACf,eAAe;;;;;;;;;;;;;;;;;;;;;aACf,mBAAmB;;;;;;;;;;;;;;;;;;;;;aACnB,aAAa;;;;;;;;;;;;;;;;;aACb,iBAAiB;;;;;;;;;;;;;;;;;aACjB,wBAAwB;;;;;;;;;;;;;;;aACxB,kBAAkB;;;;;;;;;;;;;;CACV,CAAC;AAKX,MAAM,MAAM,eAAe,GAAG,MAAM,OAAO,sBAAsB,CAAC;AAElE,eAAO,MAAM,kBAAkB,EAA0C,CAAC,eAAe,EAAE,GAAG,eAAe,EAAE,CAAC,CAAC;AAEjH,eAAO,MAAM,qBAAqB;;;;;;;;;;;;EAA6B,CAAC;AAIhE,MAAM,MAAM,WAAW,GAAG;KACvB,CAAC,IAAI,eAAe,GAAG;QACtB,IAAI,EAAE,CAAC,CAAC;QACR,MAAM,EAAE,MAAM,CAAC;QACf,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,sBAAsB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;KACnD;CACF,CAAC,eAAe,CAAC,CAAC;AAKnB,eAAO,MAAM,iBAAiB;;;;8BAS7B,CAAC;AAEF,MAAM,MAAM,8BAA8B,GAAG;IAC3C,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,MAAM,MAAM,wBAAwB,GAAG;IACrC,gBAAgB,CAAC,CAAC,SAAS,eAAe,EACxC,IAAI,EAAE,CAAC,EACP,OAAO,EAAE,CAAC,IAAI,EAAE,OAAO,CAAC,WAAW,EAAE;QAAE,IAAI,EAAE,CAAC,CAAA;KAAE,CAAC,CAAC,MAAM,CAAC,KAAK,IAAI,GACjE,IAAI,CAAC;IACR,KAAK,IAAI,IAAI,CAAC;CACf,CAAC;AAMF;;;;;;;;;;;GAWG;AACH,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,SAAS,EACjB,OAAO,CAAC,EAAE,8BAA8B,GACvC,wBAAwB,CAmC1B"}
@@ -0,0 +1,136 @@
1
+ import { axiosEventSource } from 'axios-eventsource';
2
+ import * as z from 'zod';
3
+ import { Enums } from '../lib/enums.js';
4
+ import { assetSchema } from './assets.js';
5
+ import { commentSchema } from './comments.js';
6
+ // ---------------------------------------------------------------------------
7
+ // Payload schemas per event type (sent as the SSE body)
8
+ // ---------------------------------------------------------------------------
9
+ // notification.new — lightweight signal; full data fetched via query invalidation
10
+ export const serverEventNotificationNewDataSchema = z
11
+ .object({
12
+ count: z.number().int().optional(),
13
+ topic: z.enum(Enums.NotificationTopic).optional(),
14
+ })
15
+ .optional();
16
+ // notification-topic events — typed signals for specific notification kinds
17
+ export const serverEventNotificationTopicDataSchema = z.object({
18
+ topic: z.enum(Enums.NotificationTopic),
19
+ title: z.string().optional(),
20
+ link: z.string().optional(),
21
+ });
22
+ // Extended schemas for events that produce notifications (centralized copy generation)
23
+ export const serverEventAssetModeratedDataSchema = serverEventNotificationTopicDataSchema.extend({
24
+ userName: z.string(),
25
+ assetName: z.string(),
26
+ reason: z.string(),
27
+ });
28
+ export const serverEventCommentModeratedDataSchema = serverEventNotificationTopicDataSchema.extend({
29
+ userName: z.string(),
30
+ assetName: z.string(),
31
+ commentId: z.number().int(),
32
+ commentText: z.string(),
33
+ reason: z.string(),
34
+ targetUserId: z.number().int(),
35
+ });
36
+ export const serverEventAssetLikedDataSchema = serverEventNotificationTopicDataSchema.extend({
37
+ userName: z.string(),
38
+ assetName: z.string(),
39
+ actorName: z.string(),
40
+ });
41
+ export const serverEventCommentLikedDataSchema = serverEventNotificationTopicDataSchema.extend({
42
+ userName: z.string(),
43
+ assetName: z.string(),
44
+ commentId: z.number().int(),
45
+ commentText: z.string(),
46
+ actorName: z.string(),
47
+ targetUserId: z.number().int(),
48
+ });
49
+ // asset events — carry the full entity for created/updated; just identifiers for deleted
50
+ export const serverEventAssetCreatedUpdatedDataSchema = z.object({
51
+ asset: assetSchema,
52
+ actorName: z.string().optional(), // For notification body when event produces notification
53
+ });
54
+ export const serverEventAssetDeletedDataSchema = z.object({
55
+ assetId: z.number().int(),
56
+ userName: z.string(),
57
+ assetName: z.string(),
58
+ });
59
+ // comment events — carry the full entity plus location context
60
+ export const serverEventCommentDataSchema = z.object({
61
+ comment: commentSchema,
62
+ assetId: z.number().int(),
63
+ userName: z.string(),
64
+ assetName: z.string(),
65
+ mentionedUserIds: z.array(z.number().int()).optional(),
66
+ });
67
+ // ---------------------------------------------------------------------------
68
+ // Canonical event registry — single source of truth for all event types.
69
+ // To add a new event: add one entry here; everything else is derived.
70
+ // ---------------------------------------------------------------------------
71
+ export const serverEventDataSchemas = {
72
+ 'asset.created': serverEventAssetCreatedUpdatedDataSchema,
73
+ 'asset.deleted': serverEventAssetDeletedDataSchema,
74
+ 'asset.liked': serverEventAssetLikedDataSchema,
75
+ 'asset.moderated': serverEventAssetModeratedDataSchema,
76
+ 'asset.updated': serverEventAssetCreatedUpdatedDataSchema,
77
+ 'comment.liked': serverEventCommentLikedDataSchema,
78
+ 'comment.moderated': serverEventCommentModeratedDataSchema,
79
+ 'comment.new': serverEventCommentDataSchema,
80
+ 'comment.updated': serverEventCommentDataSchema,
81
+ 'external-auth.approved': serverEventNotificationTopicDataSchema,
82
+ 'notification.new': serverEventNotificationNewDataSchema,
83
+ };
84
+ export const SERVER_EVENT_TYPES = Object.keys(serverEventDataSchemas);
85
+ export const serverEventTypeSchema = z.enum(SERVER_EVENT_TYPES);
86
+ // ---------------------------------------------------------------------------
87
+ // Zod schema for parsing full ServerEvent objects (generic, includes userId)
88
+ // ---------------------------------------------------------------------------
89
+ export const serverEventSchema = z.discriminatedUnion('type', Object.keys(serverEventDataSchemas).map((type) => z.object({
90
+ type: z.literal(type),
91
+ userId: z.number().int(),
92
+ data: serverEventDataSchemas[type],
93
+ })));
94
+ const SSE_DEFAULT_PATH = '/server-events';
95
+ /**
96
+ * Subscribe to the API server's SSE events stream.
97
+ * Uses the ApiClient for authentication — JWT, session tokens, and API keys are all
98
+ * handled automatically via the client's axios interceptors.
99
+ * Returns an object with addEventListener(type, handler) for typed event handling and close().
100
+ *
101
+ * @example
102
+ * const sub = subscribeToServerEvents(client);
103
+ * sub.addEventListener('notification.new', (data) => { ... });
104
+ * sub.addEventListener('asset.updated', (data) => { ... });
105
+ * // on unmount: sub.close();
106
+ */
107
+ export function subscribeToServerEvents(client, options) {
108
+ const path = options?.path ?? SSE_DEFAULT_PATH;
109
+ const handlers = {};
110
+ const stream = axiosEventSource(client.axios, path, {
111
+ reconnect: { initialDelayMs: 1000, maxDelayMs: 30_000 },
112
+ });
113
+ for (const type of Object.keys(serverEventDataSchemas)) {
114
+ // Cast via unknown: axios-eventsource bundles its own Zod copy, so the ZodType
115
+ // module paths differ from the host project's Zod, causing a structural mismatch.
116
+ // The schema is compatible at runtime; the cast is purely a type-system workaround.
117
+ const listenerOptions = {
118
+ schema: serverEventDataSchemas[type],
119
+ };
120
+ stream.addEventListener(type, (event) => {
121
+ const handler = handlers[type];
122
+ if (handler) {
123
+ handler(event.data);
124
+ }
125
+ }, listenerOptions);
126
+ }
127
+ return {
128
+ addEventListener(type, handler) {
129
+ handlers[type] = handler;
130
+ },
131
+ close() {
132
+ stream.close();
133
+ },
134
+ };
135
+ }
136
+ //# sourceMappingURL=serverEvents.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serverEvents.js","sources":["../../src/routes/serverEvents.ts"],"names":[],"mappings":"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"}