founder-schema 0.16.0 → 0.18.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 (116) hide show
  1. package/README.md +263 -19
  2. package/dist/access/access.d.ts +1 -1
  3. package/dist/access/access.d.ts.map +1 -1
  4. package/dist/access/access.js +4 -1
  5. package/dist/access/access.js.map +1 -1
  6. package/dist/access/permissions.d.ts +27 -29
  7. package/dist/access/permissions.d.ts.map +1 -1
  8. package/dist/access/permissions.js +39 -3
  9. package/dist/access/permissions.js.map +1 -1
  10. package/dist/core/common.d.ts +117 -23
  11. package/dist/core/common.d.ts.map +1 -1
  12. package/dist/core/common.js +104 -21
  13. package/dist/core/common.js.map +1 -1
  14. package/dist/core/errors.d.ts +7 -5
  15. package/dist/core/errors.d.ts.map +1 -1
  16. package/dist/core/errors.js +17 -11
  17. package/dist/core/errors.js.map +1 -1
  18. package/dist/core/limits.d.ts +55 -17
  19. package/dist/core/limits.d.ts.map +1 -1
  20. package/dist/core/limits.js +59 -22
  21. package/dist/core/limits.js.map +1 -1
  22. package/dist/core/money.d.ts +33 -0
  23. package/dist/core/money.d.ts.map +1 -0
  24. package/dist/core/money.js +36 -0
  25. package/dist/core/money.js.map +1 -0
  26. package/dist/core/responses.d.ts +14 -4
  27. package/dist/core/responses.d.ts.map +1 -1
  28. package/dist/core/responses.js.map +1 -1
  29. package/dist/core/validation.d.ts +32 -2
  30. package/dist/core/validation.d.ts.map +1 -1
  31. package/dist/core/validation.js +32 -2
  32. package/dist/core/validation.js.map +1 -1
  33. package/dist/domains/billing/billing.d.ts +61 -8
  34. package/dist/domains/billing/billing.d.ts.map +1 -1
  35. package/dist/domains/billing/billing.js +58 -22
  36. package/dist/domains/billing/billing.js.map +1 -1
  37. package/dist/domains/billing/gst.d.ts.map +1 -1
  38. package/dist/domains/billing/gst.js +4 -3
  39. package/dist/domains/billing/gst.js.map +1 -1
  40. package/dist/domains/chat/chat.d.ts +0 -21
  41. package/dist/domains/chat/chat.d.ts.map +1 -1
  42. package/dist/domains/chat/chat.js +0 -20
  43. package/dist/domains/chat/chat.js.map +1 -1
  44. package/dist/domains/communities/communities.d.ts +30 -12
  45. package/dist/domains/communities/communities.d.ts.map +1 -1
  46. package/dist/domains/communities/communities.js +43 -15
  47. package/dist/domains/communities/communities.js.map +1 -1
  48. package/dist/domains/contributions/contributions.d.ts +1 -1
  49. package/dist/domains/contributions/contributions.js +1 -1
  50. package/dist/domains/contributions/contributions.js.map +1 -1
  51. package/dist/domains/dashboard/dashboard.d.ts +3 -1
  52. package/dist/domains/dashboard/dashboard.d.ts.map +1 -1
  53. package/dist/domains/dashboard/dashboard.js +23 -7
  54. package/dist/domains/dashboard/dashboard.js.map +1 -1
  55. package/dist/domains/discover/discover.d.ts +8 -8
  56. package/dist/domains/feed/feed.d.ts +55 -153
  57. package/dist/domains/feed/feed.d.ts.map +1 -1
  58. package/dist/domains/feed/feed.js +53 -58
  59. package/dist/domains/feed/feed.js.map +1 -1
  60. package/dist/domains/location/india.d.ts +215 -0
  61. package/dist/domains/location/india.d.ts.map +1 -0
  62. package/dist/domains/location/india.js +1203 -0
  63. package/dist/domains/location/india.js.map +1 -0
  64. package/dist/domains/members/members.d.ts +2 -2
  65. package/dist/domains/membership/membership.d.ts +26 -0
  66. package/dist/domains/membership/membership.d.ts.map +1 -1
  67. package/dist/domains/membership/membership.js +55 -1
  68. package/dist/domains/membership/membership.js.map +1 -1
  69. package/dist/domains/moderation/moderation.d.ts +2 -2
  70. package/dist/domains/moderation/moderation.js +3 -3
  71. package/dist/domains/moderation/moderation.js.map +1 -1
  72. package/dist/domains/notifications/notifications.d.ts +1 -10
  73. package/dist/domains/notifications/notifications.d.ts.map +1 -1
  74. package/dist/domains/notifications/notifications.js +2 -3
  75. package/dist/domains/notifications/notifications.js.map +1 -1
  76. package/dist/domains/onboarding/onboarding-answers.d.ts +112 -0
  77. package/dist/domains/onboarding/onboarding-answers.d.ts.map +1 -0
  78. package/dist/domains/onboarding/onboarding-answers.js +164 -0
  79. package/dist/domains/onboarding/onboarding-answers.js.map +1 -0
  80. package/dist/domains/onboarding/onboarding.d.ts +398 -62
  81. package/dist/domains/onboarding/onboarding.d.ts.map +1 -1
  82. package/dist/domains/onboarding/onboarding.js +229 -68
  83. package/dist/domains/onboarding/onboarding.js.map +1 -1
  84. package/dist/domains/products/products.d.ts +43 -8
  85. package/dist/domains/products/products.d.ts.map +1 -1
  86. package/dist/domains/products/products.js +57 -11
  87. package/dist/domains/products/products.js.map +1 -1
  88. package/dist/domains/profile/founder-profile.d.ts +120 -68
  89. package/dist/domains/profile/founder-profile.d.ts.map +1 -1
  90. package/dist/domains/profile/founder-profile.js +80 -29
  91. package/dist/domains/profile/founder-profile.js.map +1 -1
  92. package/dist/domains/profile/my-profile.d.ts +3 -3
  93. package/dist/domains/reviews/reviews.d.ts +1 -1
  94. package/dist/domains/reviews/reviews.d.ts.map +1 -1
  95. package/dist/domains/reviews/reviews.js +2 -2
  96. package/dist/domains/reviews/reviews.js.map +1 -1
  97. package/dist/domains/support/support.d.ts +22 -3
  98. package/dist/domains/support/support.d.ts.map +1 -1
  99. package/dist/domains/support/support.js +19 -5
  100. package/dist/domains/support/support.js.map +1 -1
  101. package/dist/domains/team/team.d.ts.map +1 -1
  102. package/dist/domains/team/team.js +3 -6
  103. package/dist/domains/team/team.js.map +1 -1
  104. package/dist/domains/uploads/uploads.d.ts +7 -22
  105. package/dist/domains/uploads/uploads.d.ts.map +1 -1
  106. package/dist/domains/uploads/uploads.js +7 -21
  107. package/dist/domains/uploads/uploads.js.map +1 -1
  108. package/dist/env.d.ts +26 -13
  109. package/dist/env.d.ts.map +1 -1
  110. package/dist/env.js +58 -23
  111. package/dist/env.js.map +1 -1
  112. package/dist/index.d.ts +18 -15
  113. package/dist/index.d.ts.map +1 -1
  114. package/dist/index.js +19 -14
  115. package/dist/index.js.map +1 -1
  116. package/package.json +1 -1
@@ -243,21 +243,14 @@ export declare const feedImageSchema: z.ZodObject<{
243
243
  alt: z.ZodOptional<z.ZodString>;
244
244
  }, z.core.$strip>;
245
245
  export type FeedImage = z.infer<typeof feedImageSchema>;
246
- export declare const feedVideoSchema: z.ZodObject<{
247
- kind: z.ZodLiteral<"video">;
248
- url: z.ZodURL;
249
- thumbnailUrl: z.ZodURL;
250
- width: z.ZodNumber;
251
- height: z.ZodNumber;
252
- duration: z.ZodNumber;
253
- }, z.core.$strip>;
254
- export type FeedVideo = z.infer<typeof feedVideoSchema>;
255
246
  /**
256
- * One ordered list, discriminated on `kind`, so the carousel renders
257
- * attachments in the order they were attached and can switch on the kind
258
- * without inspecting fields.
247
+ * What a post carries, in the order it was attached. IMAGES ONLY (0.18.0):
248
+ * video is shared as a link in the post text (the user's decision,
249
+ * 2026-09-21), and the uploaded-video shape this used to admit described a
250
+ * server-made poster frame no server makes. `kind` stays, so a stored item
251
+ * says what it is.
259
252
  */
260
- export declare const feedMediaSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
253
+ export declare const feedMediaSchema: z.ZodObject<{
261
254
  id: z.ZodString;
262
255
  url: z.ZodURL;
263
256
  width: z.ZodNumber;
@@ -271,35 +264,8 @@ export declare const feedMediaSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
271
264
  kind: z.ZodLiteral<"image">;
272
265
  thumbnailUrl: z.ZodOptional<z.ZodURL>;
273
266
  alt: z.ZodOptional<z.ZodString>;
274
- }, z.core.$strip>, z.ZodObject<{
275
- kind: z.ZodLiteral<"video">;
276
- url: z.ZodURL;
277
- thumbnailUrl: z.ZodURL;
278
- width: z.ZodNumber;
279
- height: z.ZodNumber;
280
- duration: z.ZodNumber;
281
- }, z.core.$strip>], "kind">;
282
- export type FeedMedia = z.infer<typeof feedMediaSchema>;
283
- /**
284
- * Preview for the first link in a post body. Server-derived at write time and
285
- * stored, never re-fetched at render: a card that fetches a third-party page
286
- * per scroll leaks every reader's address to that site and blocks the feed on
287
- * somebody else's latency.
288
- *
289
- * Both URLs take `safeUrlSchema`: the scheme and host rules, WITHOUT the
290
- * typed-URL cap. `url` came out of a post body, which is already capped as a
291
- * whole, and `imageUrl` is whatever the remote page advertised; a long CDN URL
292
- * is ordinary, and one over `LINK_URL_MAX` would otherwise fail the whole feed
293
- * page it sits on. Neither is ours, so a consumer still treats both as
294
- * untrusted at render.
295
- */
296
- export declare const linkPreviewSchema: z.ZodObject<{
297
- url: z.ZodURL;
298
- title: z.ZodOptional<z.ZodString>;
299
- description: z.ZodOptional<z.ZodString>;
300
- imageUrl: z.ZodOptional<z.ZodURL>;
301
267
  }, z.core.$strip>;
302
- export type LinkPreview = z.infer<typeof linkPreviewSchema>;
268
+ export type FeedMedia = z.infer<typeof feedMediaSchema>;
303
269
  /**
304
270
  * What THIS viewer has done to this item, computed per request.
305
271
  *
@@ -373,7 +339,7 @@ export declare const repostedSourceSchema: z.ZodDiscriminatedUnion<[z.ZodObject<
373
339
  headline: z.ZodOptional<z.ZodString>;
374
340
  }, z.core.$strip>;
375
341
  text: z.ZodString;
376
- media: z.ZodOptional<z.ZodDiscriminatedUnion<[z.ZodObject<{
342
+ media: z.ZodOptional<z.ZodObject<{
377
343
  id: z.ZodString;
378
344
  url: z.ZodURL;
379
345
  width: z.ZodNumber;
@@ -387,14 +353,7 @@ export declare const repostedSourceSchema: z.ZodDiscriminatedUnion<[z.ZodObject<
387
353
  kind: z.ZodLiteral<"image">;
388
354
  thumbnailUrl: z.ZodOptional<z.ZodURL>;
389
355
  alt: z.ZodOptional<z.ZodString>;
390
- }, z.core.$strip>, z.ZodObject<{
391
- kind: z.ZodLiteral<"video">;
392
- url: z.ZodURL;
393
- thumbnailUrl: z.ZodURL;
394
- width: z.ZodNumber;
395
- height: z.ZodNumber;
396
- duration: z.ZodNumber;
397
- }, z.core.$strip>], "kind">>;
356
+ }, z.core.$strip>>;
398
357
  product: z.ZodOptional<z.ZodObject<{
399
358
  id: z.ZodPipe<z.ZodString, z.ZodTransform<string, string>>;
400
359
  slug: z.ZodString;
@@ -433,7 +392,7 @@ export declare const feedPostSchema: z.ZodObject<{
433
392
  headline: z.ZodOptional<z.ZodString>;
434
393
  }, z.core.$strip>;
435
394
  text: z.ZodString;
436
- media: z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
395
+ media: z.ZodArray<z.ZodObject<{
437
396
  id: z.ZodString;
438
397
  url: z.ZodURL;
439
398
  width: z.ZodNumber;
@@ -447,19 +406,6 @@ export declare const feedPostSchema: z.ZodObject<{
447
406
  kind: z.ZodLiteral<"image">;
448
407
  thumbnailUrl: z.ZodOptional<z.ZodURL>;
449
408
  alt: z.ZodOptional<z.ZodString>;
450
- }, z.core.$strip>, z.ZodObject<{
451
- kind: z.ZodLiteral<"video">;
452
- url: z.ZodURL;
453
- thumbnailUrl: z.ZodURL;
454
- width: z.ZodNumber;
455
- height: z.ZodNumber;
456
- duration: z.ZodNumber;
457
- }, z.core.$strip>], "kind">>;
458
- linkPreview: z.ZodOptional<z.ZodObject<{
459
- url: z.ZodURL;
460
- title: z.ZodOptional<z.ZodString>;
461
- description: z.ZodOptional<z.ZodString>;
462
- imageUrl: z.ZodOptional<z.ZodURL>;
463
409
  }, z.core.$strip>>;
464
410
  topics: z.ZodArray<z.ZodEnum<{
465
411
  ai_ml: "ai_ml";
@@ -573,7 +519,7 @@ export declare const feedPostSchema: z.ZodObject<{
573
519
  headline: z.ZodOptional<z.ZodString>;
574
520
  }, z.core.$strip>;
575
521
  text: z.ZodString;
576
- media: z.ZodOptional<z.ZodDiscriminatedUnion<[z.ZodObject<{
522
+ media: z.ZodOptional<z.ZodObject<{
577
523
  id: z.ZodString;
578
524
  url: z.ZodURL;
579
525
  width: z.ZodNumber;
@@ -587,14 +533,7 @@ export declare const feedPostSchema: z.ZodObject<{
587
533
  kind: z.ZodLiteral<"image">;
588
534
  thumbnailUrl: z.ZodOptional<z.ZodURL>;
589
535
  alt: z.ZodOptional<z.ZodString>;
590
- }, z.core.$strip>, z.ZodObject<{
591
- kind: z.ZodLiteral<"video">;
592
- url: z.ZodURL;
593
- thumbnailUrl: z.ZodURL;
594
- width: z.ZodNumber;
595
- height: z.ZodNumber;
596
- duration: z.ZodNumber;
597
- }, z.core.$strip>], "kind">>;
536
+ }, z.core.$strip>>;
598
537
  product: z.ZodOptional<z.ZodObject<{
599
538
  id: z.ZodPipe<z.ZodString, z.ZodTransform<string, string>>;
600
539
  slug: z.ZodString;
@@ -660,8 +599,8 @@ export type PollOption = z.infer<typeof pollOptionSchema>;
660
599
  * own records keyed by (poll, voter) and a post has nothing equivalent.
661
600
  *
662
601
  * Polls are not editable. Changing a question or an option after a vote has
663
- * been cast silently re-purposes that vote. Closing early is allowed; editing
664
- * is not.
602
+ * been cast silently re-purposes that vote. A poll closes at its `closesAt`;
603
+ * there is no closing it early.
665
604
  */
666
605
  export declare const feedPollSchema: z.ZodObject<{
667
606
  id: z.ZodPipe<z.ZodString, z.ZodTransform<string, string>>;
@@ -831,7 +770,7 @@ export declare const feedItemSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
831
770
  headline: z.ZodOptional<z.ZodString>;
832
771
  }, z.core.$strip>;
833
772
  text: z.ZodString;
834
- media: z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
773
+ media: z.ZodArray<z.ZodObject<{
835
774
  id: z.ZodString;
836
775
  url: z.ZodURL;
837
776
  width: z.ZodNumber;
@@ -845,19 +784,6 @@ export declare const feedItemSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
845
784
  kind: z.ZodLiteral<"image">;
846
785
  thumbnailUrl: z.ZodOptional<z.ZodURL>;
847
786
  alt: z.ZodOptional<z.ZodString>;
848
- }, z.core.$strip>, z.ZodObject<{
849
- kind: z.ZodLiteral<"video">;
850
- url: z.ZodURL;
851
- thumbnailUrl: z.ZodURL;
852
- width: z.ZodNumber;
853
- height: z.ZodNumber;
854
- duration: z.ZodNumber;
855
- }, z.core.$strip>], "kind">>;
856
- linkPreview: z.ZodOptional<z.ZodObject<{
857
- url: z.ZodURL;
858
- title: z.ZodOptional<z.ZodString>;
859
- description: z.ZodOptional<z.ZodString>;
860
- imageUrl: z.ZodOptional<z.ZodURL>;
861
787
  }, z.core.$strip>>;
862
788
  topics: z.ZodArray<z.ZodEnum<{
863
789
  ai_ml: "ai_ml";
@@ -971,7 +897,7 @@ export declare const feedItemSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
971
897
  headline: z.ZodOptional<z.ZodString>;
972
898
  }, z.core.$strip>;
973
899
  text: z.ZodString;
974
- media: z.ZodOptional<z.ZodDiscriminatedUnion<[z.ZodObject<{
900
+ media: z.ZodOptional<z.ZodObject<{
975
901
  id: z.ZodString;
976
902
  url: z.ZodURL;
977
903
  width: z.ZodNumber;
@@ -985,14 +911,7 @@ export declare const feedItemSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
985
911
  kind: z.ZodLiteral<"image">;
986
912
  thumbnailUrl: z.ZodOptional<z.ZodURL>;
987
913
  alt: z.ZodOptional<z.ZodString>;
988
- }, z.core.$strip>, z.ZodObject<{
989
- kind: z.ZodLiteral<"video">;
990
- url: z.ZodURL;
991
- thumbnailUrl: z.ZodURL;
992
- width: z.ZodNumber;
993
- height: z.ZodNumber;
994
- duration: z.ZodNumber;
995
- }, z.core.$strip>], "kind">>;
914
+ }, z.core.$strip>>;
996
915
  product: z.ZodOptional<z.ZodObject<{
997
916
  id: z.ZodPipe<z.ZodString, z.ZodTransform<string, string>>;
998
917
  slug: z.ZodString;
@@ -1259,7 +1178,7 @@ export type FeedComment = z.infer<typeof feedCommentSchema>;
1259
1178
  */
1260
1179
  export declare const feedQuerySchema: z.ZodObject<{
1261
1180
  limit: z.ZodPreprocess<z.ZodDefault<z.ZodCoercedNumber<unknown>>, unknown>;
1262
- cursor: z.ZodOptional<z.ZodString>;
1181
+ cursor: z.ZodPreprocess<z.ZodOptional<z.ZodString>, unknown>;
1263
1182
  sort: z.ZodPreprocess<z.ZodDefault<z.ZodEnum<{
1264
1183
  new: "new";
1265
1184
  top: "top";
@@ -1271,7 +1190,7 @@ export type FeedQueryInput = z.input<typeof feedQuerySchema>;
1271
1190
  /** `GET /api/v1/feed/:contentKind/:contentId/comments`. */
1272
1191
  export declare const commentsQuerySchema: z.ZodObject<{
1273
1192
  limit: z.ZodPreprocess<z.ZodDefault<z.ZodCoercedNumber<unknown>>, unknown>;
1274
- cursor: z.ZodOptional<z.ZodString>;
1193
+ cursor: z.ZodPreprocess<z.ZodOptional<z.ZodString>, unknown>;
1275
1194
  parentCommentId: z.ZodPreprocess<z.ZodOptional<z.ZodPipe<z.ZodString, z.ZodTransform<string, string>>>, unknown>;
1276
1195
  }, z.core.$strip>;
1277
1196
  export type CommentsQuery = z.infer<typeof commentsQuerySchema>;
@@ -1283,7 +1202,7 @@ export type CommentsQueryInput = z.input<typeof commentsQuerySchema>;
1283
1202
  */
1284
1203
  export declare const reactionsQuerySchema: z.ZodObject<{
1285
1204
  limit: z.ZodPreprocess<z.ZodDefault<z.ZodCoercedNumber<unknown>>, unknown>;
1286
- cursor: z.ZodOptional<z.ZodString>;
1205
+ cursor: z.ZodPreprocess<z.ZodOptional<z.ZodString>, unknown>;
1287
1206
  type: z.ZodPreprocess<z.ZodOptional<z.ZodEnum<{
1288
1207
  support: "support";
1289
1208
  like: "like";
@@ -1363,7 +1282,7 @@ export declare const feedPageSchema: z.ZodObject<{
1363
1282
  headline: z.ZodOptional<z.ZodString>;
1364
1283
  }, z.core.$strip>;
1365
1284
  text: z.ZodString;
1366
- media: z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
1285
+ media: z.ZodArray<z.ZodObject<{
1367
1286
  id: z.ZodString;
1368
1287
  url: z.ZodURL;
1369
1288
  width: z.ZodNumber;
@@ -1377,19 +1296,6 @@ export declare const feedPageSchema: z.ZodObject<{
1377
1296
  kind: z.ZodLiteral<"image">;
1378
1297
  thumbnailUrl: z.ZodOptional<z.ZodURL>;
1379
1298
  alt: z.ZodOptional<z.ZodString>;
1380
- }, z.core.$strip>, z.ZodObject<{
1381
- kind: z.ZodLiteral<"video">;
1382
- url: z.ZodURL;
1383
- thumbnailUrl: z.ZodURL;
1384
- width: z.ZodNumber;
1385
- height: z.ZodNumber;
1386
- duration: z.ZodNumber;
1387
- }, z.core.$strip>], "kind">>;
1388
- linkPreview: z.ZodOptional<z.ZodObject<{
1389
- url: z.ZodURL;
1390
- title: z.ZodOptional<z.ZodString>;
1391
- description: z.ZodOptional<z.ZodString>;
1392
- imageUrl: z.ZodOptional<z.ZodURL>;
1393
1299
  }, z.core.$strip>>;
1394
1300
  topics: z.ZodArray<z.ZodEnum<{
1395
1301
  ai_ml: "ai_ml";
@@ -1503,7 +1409,7 @@ export declare const feedPageSchema: z.ZodObject<{
1503
1409
  headline: z.ZodOptional<z.ZodString>;
1504
1410
  }, z.core.$strip>;
1505
1411
  text: z.ZodString;
1506
- media: z.ZodOptional<z.ZodDiscriminatedUnion<[z.ZodObject<{
1412
+ media: z.ZodOptional<z.ZodObject<{
1507
1413
  id: z.ZodString;
1508
1414
  url: z.ZodURL;
1509
1415
  width: z.ZodNumber;
@@ -1517,14 +1423,7 @@ export declare const feedPageSchema: z.ZodObject<{
1517
1423
  kind: z.ZodLiteral<"image">;
1518
1424
  thumbnailUrl: z.ZodOptional<z.ZodURL>;
1519
1425
  alt: z.ZodOptional<z.ZodString>;
1520
- }, z.core.$strip>, z.ZodObject<{
1521
- kind: z.ZodLiteral<"video">;
1522
- url: z.ZodURL;
1523
- thumbnailUrl: z.ZodURL;
1524
- width: z.ZodNumber;
1525
- height: z.ZodNumber;
1526
- duration: z.ZodNumber;
1527
- }, z.core.$strip>], "kind">>;
1426
+ }, z.core.$strip>>;
1528
1427
  product: z.ZodOptional<z.ZodObject<{
1529
1428
  id: z.ZodPipe<z.ZodString, z.ZodTransform<string, string>>;
1530
1429
  slug: z.ZodString;
@@ -1742,7 +1641,7 @@ export declare const pinnedItemsSchema: z.ZodObject<{
1742
1641
  headline: z.ZodOptional<z.ZodString>;
1743
1642
  }, z.core.$strip>;
1744
1643
  text: z.ZodString;
1745
- media: z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
1644
+ media: z.ZodArray<z.ZodObject<{
1746
1645
  id: z.ZodString;
1747
1646
  url: z.ZodURL;
1748
1647
  width: z.ZodNumber;
@@ -1756,19 +1655,6 @@ export declare const pinnedItemsSchema: z.ZodObject<{
1756
1655
  kind: z.ZodLiteral<"image">;
1757
1656
  thumbnailUrl: z.ZodOptional<z.ZodURL>;
1758
1657
  alt: z.ZodOptional<z.ZodString>;
1759
- }, z.core.$strip>, z.ZodObject<{
1760
- kind: z.ZodLiteral<"video">;
1761
- url: z.ZodURL;
1762
- thumbnailUrl: z.ZodURL;
1763
- width: z.ZodNumber;
1764
- height: z.ZodNumber;
1765
- duration: z.ZodNumber;
1766
- }, z.core.$strip>], "kind">>;
1767
- linkPreview: z.ZodOptional<z.ZodObject<{
1768
- url: z.ZodURL;
1769
- title: z.ZodOptional<z.ZodString>;
1770
- description: z.ZodOptional<z.ZodString>;
1771
- imageUrl: z.ZodOptional<z.ZodURL>;
1772
1658
  }, z.core.$strip>>;
1773
1659
  topics: z.ZodArray<z.ZodEnum<{
1774
1660
  ai_ml: "ai_ml";
@@ -1882,7 +1768,7 @@ export declare const pinnedItemsSchema: z.ZodObject<{
1882
1768
  headline: z.ZodOptional<z.ZodString>;
1883
1769
  }, z.core.$strip>;
1884
1770
  text: z.ZodString;
1885
- media: z.ZodOptional<z.ZodDiscriminatedUnion<[z.ZodObject<{
1771
+ media: z.ZodOptional<z.ZodObject<{
1886
1772
  id: z.ZodString;
1887
1773
  url: z.ZodURL;
1888
1774
  width: z.ZodNumber;
@@ -1896,14 +1782,7 @@ export declare const pinnedItemsSchema: z.ZodObject<{
1896
1782
  kind: z.ZodLiteral<"image">;
1897
1783
  thumbnailUrl: z.ZodOptional<z.ZodURL>;
1898
1784
  alt: z.ZodOptional<z.ZodString>;
1899
- }, z.core.$strip>, z.ZodObject<{
1900
- kind: z.ZodLiteral<"video">;
1901
- url: z.ZodURL;
1902
- thumbnailUrl: z.ZodURL;
1903
- width: z.ZodNumber;
1904
- height: z.ZodNumber;
1905
- duration: z.ZodNumber;
1906
- }, z.core.$strip>], "kind">>;
1785
+ }, z.core.$strip>>;
1907
1786
  product: z.ZodOptional<z.ZodObject<{
1908
1787
  id: z.ZodPipe<z.ZodString, z.ZodTransform<string, string>>;
1909
1788
  slug: z.ZodString;
@@ -2348,9 +2227,18 @@ export declare const attachedMediaSchema: z.ZodObject<{
2348
2227
  }, z.core.$strip>;
2349
2228
  export type AttachedMedia = z.infer<typeof attachedMediaSchema>;
2350
2229
  /**
2351
- * A post must carry something. Text alone, media alone, or both; empty is
2352
- * refused here rather than reaching the feed as a blank card.
2230
+ * A post must carry something: text, media, or (a repost) the item it
2231
+ * reposts. ONE rule for writing and editing (0.18.0): an edit may clear the
2232
+ * text of a post that keeps its photos or its repost, and only a post that
2233
+ * would be left with nothing is refused (`postEmpty`, on `text`). The create
2234
+ * body checks it here; an edit can only be checked where the stored post is
2235
+ * known, so the server applies this same function there.
2353
2236
  */
2237
+ export declare function postHasContent(post: {
2238
+ text?: string | null;
2239
+ mediaCount: number;
2240
+ isRepost: boolean;
2241
+ }): boolean;
2354
2242
  export declare const createPostBodySchema: z.ZodObject<{
2355
2243
  communityId: z.ZodOptional<z.ZodPipe<z.ZodString, z.ZodTransform<string, string>>>;
2356
2244
  productId: z.ZodOptional<z.ZodPipe<z.ZodString, z.ZodTransform<string, string>>>;
@@ -2439,8 +2327,12 @@ export declare const createPostBodySchema: z.ZodObject<{
2439
2327
  }>>>;
2440
2328
  }, z.core.$strip>;
2441
2329
  export type CreatePostBody = z.infer<typeof createPostBodySchema>;
2442
- /** Only the text is editable. Changing media after the fact makes every
2443
- * earlier reply look like a reply to something else. */
2330
+ /**
2331
+ * Only the text is editable. Changing media after the fact makes every
2332
+ * earlier reply look like a reply to something else. Empty text is allowed
2333
+ * here and refused by the server only when the post would carry nothing
2334
+ * (`postHasContent`): a photo's caption can be cleared, a text post's cannot.
2335
+ */
2444
2336
  export declare const updatePostBodySchema: z.ZodObject<{
2445
2337
  text: z.ZodString;
2446
2338
  }, z.core.$strip>;
@@ -2534,8 +2426,11 @@ export declare const createPollBodySchema: z.ZodObject<{
2534
2426
  }>>>;
2535
2427
  }, z.core.$strip>;
2536
2428
  export type CreatePollBody = z.infer<typeof createPollBodySchema>;
2537
- /** Cast or change a vote. The server upserts on (poll, voter), so voting
2538
- * twice replaces rather than doubles. */
2429
+ /**
2430
+ * Cast or change a vote. The server upserts on (poll, voter), so voting twice
2431
+ * replaces rather than doubles. Each option once (0.18.0: `[0, 0]` was taken
2432
+ * and silently cut to `[0]`).
2433
+ */
2539
2434
  export declare const castVoteBodySchema: z.ZodObject<{
2540
2435
  optionIndices: z.ZodArray<z.ZodNumber>;
2541
2436
  }, z.core.$strip>;
@@ -2622,6 +2517,13 @@ export declare const setReactionResponseSchema: z.ZodObject<{
2622
2517
  }> & z.core.$partial, z.ZodNumber>;
2623
2518
  }, z.core.$strip>;
2624
2519
  export type SetReactionResponse = z.infer<typeof setReactionResponseSchema>;
2520
+ /**
2521
+ * Where a report stands (0.18.0: named here; the backend's model kept its own
2522
+ * list, and the permission rule that only an open report is decided checked a
2523
+ * plain string). Staff-only on the wire. Stored: append only.
2524
+ */
2525
+ export declare const REPORT_STATUS_VALUES: readonly ["open", "actioned", "dismissed"];
2526
+ export type ReportStatus = (typeof REPORT_STATUS_VALUES)[number];
2625
2527
  /**
2626
2528
  * Why a member reported something.
2627
2529
  *
@@ -1 +1 @@
1
- {"version":3,"file":"feed.d.ts","sourceRoot":"","sources":["../../../src/domains/feed/feed.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"feed.d.ts","sourceRoot":"","sources":["../../../src/domains/feed/feed.ts"],"names":[],"mappings":"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"}
@@ -30,8 +30,8 @@
30
30
  * @module founder-schema/domains/feed
31
31
  */
32
32
  import { z } from 'zod';
33
- import { emptyStringToUndefined, objectIdSchema, paginationQuerySchema, safeUrlSchema, } from '../../core/common.js';
34
- import { LINK_PREVIEW_DESCRIPTION_MAX, LINK_PREVIEW_TITLE_MAX, MEDIA_ALT_MAX, REPORT_NOTE_MAX, } from '../../core/limits.js';
33
+ import { eachOnce, emptyStringToUndefined, objectIdSchema, paginationQuerySchema, } from '../../core/common.js';
34
+ import { DAY_MS, MEDIA_ALT_MAX, REPORT_NOTE_MAX } from '../../core/limits.js';
35
35
  import { paginatedSchema } from '../../core/responses.js';
36
36
  import { VALIDATION_MESSAGE } from '../../core/validation.js';
37
37
  import { communityChipSchema } from '../communities/communities.js';
@@ -72,7 +72,7 @@ export const POLL_MAX_OPTIONS = 6;
72
72
  /** 5 minutes. Below this a poll closes before anyone sees it. */
73
73
  export const POLL_MIN_DURATION_MS = 5 * 60 * 1000;
74
74
  /** 30 days. */
75
- export const POLL_MAX_DURATION_MS = 30 * 24 * 60 * 60 * 1000;
75
+ export const POLL_MAX_DURATION_MS = 30 * DAY_MS;
76
76
  /**
77
77
  * How long after writing it the author may still edit a post or a comment.
78
78
  *
@@ -212,43 +212,14 @@ export const feedImageSchema = mediaImageSchema.extend({
212
212
  /** Author-supplied alt text. Optional, and worth asking for. */
213
213
  alt: z.string().max(MEDIA_ALT_MAX).optional(),
214
214
  });
215
- export const feedVideoSchema = z.object({
216
- kind: z.literal('video'),
217
- url: z.url(),
218
- /** Poster frame, server-extracted. Required: a video with no poster is a
219
- * black rectangle in the feed. */
220
- thumbnailUrl: z.url(),
221
- width: z.number().int().positive(),
222
- height: z.number().int().positive(),
223
- /** Seconds. */
224
- duration: z.number().positive(),
225
- });
226
215
  /**
227
- * One ordered list, discriminated on `kind`, so the carousel renders
228
- * attachments in the order they were attached and can switch on the kind
229
- * without inspecting fields.
230
- */
231
- export const feedMediaSchema = z.discriminatedUnion('kind', [feedImageSchema, feedVideoSchema]);
232
- // ─── Link preview ────────────────────────────────────────────────────────────
233
- /**
234
- * Preview for the first link in a post body. Server-derived at write time and
235
- * stored, never re-fetched at render: a card that fetches a third-party page
236
- * per scroll leaks every reader's address to that site and blocks the feed on
237
- * somebody else's latency.
238
- *
239
- * Both URLs take `safeUrlSchema`: the scheme and host rules, WITHOUT the
240
- * typed-URL cap. `url` came out of a post body, which is already capped as a
241
- * whole, and `imageUrl` is whatever the remote page advertised; a long CDN URL
242
- * is ordinary, and one over `LINK_URL_MAX` would otherwise fail the whole feed
243
- * page it sits on. Neither is ours, so a consumer still treats both as
244
- * untrusted at render.
245
- */
246
- export const linkPreviewSchema = z.object({
247
- url: safeUrlSchema,
248
- title: z.string().max(LINK_PREVIEW_TITLE_MAX).optional(),
249
- description: z.string().max(LINK_PREVIEW_DESCRIPTION_MAX).optional(),
250
- imageUrl: safeUrlSchema.optional(),
251
- });
216
+ * What a post carries, in the order it was attached. IMAGES ONLY (0.18.0):
217
+ * video is shared as a link in the post text (the user's decision,
218
+ * 2026-09-21), and the uploaded-video shape this used to admit described a
219
+ * server-made poster frame no server makes. `kind` stays, so a stored item
220
+ * says what it is.
221
+ */
222
+ export const feedMediaSchema = feedImageSchema;
252
223
  // ─── Viewer state ────────────────────────────────────────────────────────────
253
224
  /**
254
225
  * What THIS viewer has done to this item, computed per request.
@@ -301,11 +272,16 @@ export const contentViewerStateSchema = viewerStateSchema.extend({
301
272
  canRepost: z.boolean(),
302
273
  /**
303
274
  * On content inside a community only (0.9.0): whether this viewer may take
304
- * part in it now (react, comment, vote, save, report, edit): an active
305
- * member of a community that is not archived. False for someone who can
306
- * read it but has not joined (a public community's reader, staff): offer
307
- * Join instead of the controls. `canEdit` and `canReport` are false too
308
- * whenever this is.
275
+ * part in it now (react, comment, vote, save, edit): an active member of a
276
+ * community that is not archived. False for someone who can read it but has
277
+ * not joined (a public community's reader, staff): offer Join instead of
278
+ * the controls. `canEdit` is false too whenever this is.
279
+ *
280
+ * TAKING BACK needs only read access (0.18.0, the server's rule since
281
+ * 0.9.0): someone who left, or a community since archived, may still remove
282
+ * their reaction, their vote or their save, so a client gates only SETTING
283
+ * one on this. Reporting is safety, open to any signed-in reader who did not
284
+ * write it (`canReport`, 0.13.0), joined or not.
309
285
  */
310
286
  canTakePart: z.boolean().optional(),
311
287
  });
@@ -367,8 +343,6 @@ export const feedPostSchema = z.object({
367
343
  text: z.string().max(POST_MAX_BODY_CHARS),
368
344
  /** Ordered as the author attached them. */
369
345
  media: z.array(feedMediaSchema).max(POST_MAX_MEDIA),
370
- /** Present only when the body had an embeddable link. */
371
- linkPreview: linkPreviewSchema.optional(),
372
346
  /**
373
347
  * What this post is ABOUT, from the same vocabulary a member picks as their
374
348
  * interests. This is the whole mechanism behind a relevant feed: matching is
@@ -433,8 +407,8 @@ export const pollOptionSchema = z.object({
433
407
  * own records keyed by (poll, voter) and a post has nothing equivalent.
434
408
  *
435
409
  * Polls are not editable. Changing a question or an option after a vote has
436
- * been cast silently re-purposes that vote. Closing early is allowed; editing
437
- * is not.
410
+ * been cast silently re-purposes that vote. A poll closes at its `closesAt`;
411
+ * there is no closing it early.
438
412
  */
439
413
  export const feedPollSchema = z.object({
440
414
  id: objectIdSchema,
@@ -683,9 +657,16 @@ const askNeedsProduct = (b) => b.ask === undefined || b.productId !== undefined;
683
657
  const inACommunity = { communityId: objectIdSchema.optional() };
684
658
  const communityWithoutProduct = (b) => b.communityId === undefined || (b.productId === undefined && b.ask === undefined);
685
659
  /**
686
- * A post must carry something. Text alone, media alone, or both; empty is
687
- * refused here rather than reaching the feed as a blank card.
660
+ * A post must carry something: text, media, or (a repost) the item it
661
+ * reposts. ONE rule for writing and editing (0.18.0): an edit may clear the
662
+ * text of a post that keeps its photos or its repost, and only a post that
663
+ * would be left with nothing is refused (`postEmpty`, on `text`). The create
664
+ * body checks it here; an edit can only be checked where the stored post is
665
+ * known, so the server applies this same function there.
688
666
  */
667
+ export function postHasContent(post) {
668
+ return Boolean(post.text?.trim().length) || post.mediaCount > 0 || post.isRepost;
669
+ }
689
670
  export const createPostBodySchema = z
690
671
  .object({
691
672
  text: z.string().trim().max(POST_MAX_BODY_CHARS).optional(),
@@ -696,11 +677,11 @@ export const createPostBodySchema = z
696
677
  ...aboutAProduct,
697
678
  ...inACommunity,
698
679
  })
699
- .refine((b) => Boolean(b.text?.length) || Boolean(b.media?.length), {
680
+ .refine((b) => postHasContent({ text: b.text, mediaCount: b.media?.length ?? 0, isRepost: false }), {
700
681
  error: VALIDATION_MESSAGE.postEmpty,
701
682
  path: ['text'],
702
683
  })
703
- .refine((b) => new Set(b.media?.map((m) => m.mediaId)).size === (b.media?.length ?? 0), {
684
+ .refine((b) => eachOnce(b.media?.map((m) => m.mediaId) ?? []), {
704
685
  error: VALIDATION_MESSAGE.mediaDuplicate,
705
686
  path: ['media'],
706
687
  })
@@ -709,10 +690,14 @@ export const createPostBodySchema = z
709
690
  error: VALIDATION_MESSAGE.communityWithProduct,
710
691
  path: ['communityId'],
711
692
  });
712
- /** Only the text is editable. Changing media after the fact makes every
713
- * earlier reply look like a reply to something else. */
693
+ /**
694
+ * Only the text is editable. Changing media after the fact makes every
695
+ * earlier reply look like a reply to something else. Empty text is allowed
696
+ * here and refused by the server only when the post would carry nothing
697
+ * (`postHasContent`): a photo's caption can be cleared, a text post's cannot.
698
+ */
714
699
  export const updatePostBodySchema = z.object({
715
- text: z.string().trim().min(1).max(POST_MAX_BODY_CHARS),
700
+ text: z.string().trim().max(POST_MAX_BODY_CHARS),
716
701
  });
717
702
  export const createPollBodySchema = z
718
703
  .object({
@@ -747,8 +732,11 @@ export const createPollBodySchema = z
747
732
  }
748
733
  return true;
749
734
  }, { error: VALIDATION_MESSAGE.pollOptionsDuplicate, path: ['options'] });
750
- /** Cast or change a vote. The server upserts on (poll, voter), so voting
751
- * twice replaces rather than doubles. */
735
+ /**
736
+ * Cast or change a vote. The server upserts on (poll, voter), so voting twice
737
+ * replaces rather than doubles. Each option once (0.18.0: `[0, 0]` was taken
738
+ * and silently cut to `[0]`).
739
+ */
752
740
  export const castVoteBodySchema = z.object({
753
741
  optionIndices: z
754
742
  .array(z
@@ -757,7 +745,8 @@ export const castVoteBodySchema = z.object({
757
745
  .min(0)
758
746
  .max(POLL_MAX_OPTIONS - 1))
759
747
  .min(1)
760
- .max(POLL_MAX_OPTIONS),
748
+ .max(POLL_MAX_OPTIONS)
749
+ .refine(eachOnce, { error: VALIDATION_MESSAGE.pollVoteDuplicate }),
761
750
  });
762
751
  export const createCommentBodySchema = z.object({
763
752
  text: z.string().trim().min(1).max(COMMENT_MAX_BODY_CHARS),
@@ -810,6 +799,12 @@ export const setReactionResponseSchema = z.object({
810
799
  reactionCounts: reactionCountsSchema,
811
800
  });
812
801
  // ─── Reporting ───────────────────────────────────────────────────────────────
802
+ /**
803
+ * Where a report stands (0.18.0: named here; the backend's model kept its own
804
+ * list, and the permission rule that only an open report is decided checked a
805
+ * plain string). Staff-only on the wire. Stored: append only.
806
+ */
807
+ export const REPORT_STATUS_VALUES = ['open', 'actioned', 'dismissed'];
813
808
  /**
814
809
  * Why a member reported something.
815
810
  *