founder-schema 0.4.0 → 0.6.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 (83) hide show
  1. package/README.md +64 -1
  2. package/dist/access/permissions.d.ts +24 -2
  3. package/dist/access/permissions.d.ts.map +1 -1
  4. package/dist/access/permissions.js +9 -0
  5. package/dist/access/permissions.js.map +1 -1
  6. package/dist/core/common.d.ts +37 -0
  7. package/dist/core/common.d.ts.map +1 -1
  8. package/dist/core/common.js +49 -0
  9. package/dist/core/common.js.map +1 -1
  10. package/dist/core/errors.d.ts +41 -1
  11. package/dist/core/errors.d.ts.map +1 -1
  12. package/dist/core/errors.js +75 -4
  13. package/dist/core/errors.js.map +1 -1
  14. package/dist/core/limits.d.ts +76 -4
  15. package/dist/core/limits.d.ts.map +1 -1
  16. package/dist/core/limits.js +80 -4
  17. package/dist/core/limits.js.map +1 -1
  18. package/dist/core/responses.d.ts +55 -0
  19. package/dist/core/responses.d.ts.map +1 -1
  20. package/dist/core/responses.js +3 -1
  21. package/dist/core/responses.js.map +1 -1
  22. package/dist/core/validation.d.ts +16 -0
  23. package/dist/core/validation.d.ts.map +1 -1
  24. package/dist/core/validation.js +16 -0
  25. package/dist/core/validation.js.map +1 -1
  26. package/dist/domains/account/account.d.ts +2 -0
  27. package/dist/domains/account/account.d.ts.map +1 -1
  28. package/dist/domains/account/account.js +2 -0
  29. package/dist/domains/account/account.js.map +1 -1
  30. package/dist/domains/audit/audit.d.ts +4 -0
  31. package/dist/domains/audit/audit.d.ts.map +1 -1
  32. package/dist/domains/audit/audit.js +6 -3
  33. package/dist/domains/audit/audit.js.map +1 -1
  34. package/dist/domains/contributions/contributions.d.ts +158 -0
  35. package/dist/domains/contributions/contributions.d.ts.map +1 -0
  36. package/dist/domains/contributions/contributions.js +93 -0
  37. package/dist/domains/contributions/contributions.js.map +1 -0
  38. package/dist/domains/discover/discover.d.ts +5 -0
  39. package/dist/domains/discover/discover.d.ts.map +1 -1
  40. package/dist/domains/discover/discover.js +3 -13
  41. package/dist/domains/discover/discover.js.map +1 -1
  42. package/dist/domains/feed/feed.d.ts +293 -32
  43. package/dist/domains/feed/feed.d.ts.map +1 -1
  44. package/dist/domains/feed/feed.js +109 -38
  45. package/dist/domains/feed/feed.js.map +1 -1
  46. package/dist/domains/media/media.d.ts +159 -0
  47. package/dist/domains/media/media.d.ts.map +1 -0
  48. package/dist/domains/media/media.js +136 -0
  49. package/dist/domains/media/media.js.map +1 -0
  50. package/dist/domains/members/members.d.ts +5 -5
  51. package/dist/domains/moderation/moderation.d.ts +53 -3
  52. package/dist/domains/moderation/moderation.d.ts.map +1 -1
  53. package/dist/domains/moderation/moderation.js +47 -8
  54. package/dist/domains/moderation/moderation.js.map +1 -1
  55. package/dist/domains/notifications/notifications.d.ts +212 -0
  56. package/dist/domains/notifications/notifications.d.ts.map +1 -0
  57. package/dist/domains/notifications/notifications.js +144 -0
  58. package/dist/domains/notifications/notifications.js.map +1 -0
  59. package/dist/domains/onboarding/onboarding.d.ts +21 -24
  60. package/dist/domains/onboarding/onboarding.d.ts.map +1 -1
  61. package/dist/domains/onboarding/onboarding.js +21 -20
  62. package/dist/domains/onboarding/onboarding.js.map +1 -1
  63. package/dist/domains/products/products.d.ts +1449 -0
  64. package/dist/domains/products/products.d.ts.map +1 -0
  65. package/dist/domains/products/products.js +453 -0
  66. package/dist/domains/products/products.js.map +1 -0
  67. package/dist/domains/profile/founder-profile.d.ts +66 -0
  68. package/dist/domains/profile/founder-profile.d.ts.map +1 -1
  69. package/dist/domains/profile/founder-profile.js +70 -1
  70. package/dist/domains/profile/founder-profile.js.map +1 -1
  71. package/dist/domains/reviews/reviews.d.ts +184 -0
  72. package/dist/domains/reviews/reviews.d.ts.map +1 -0
  73. package/dist/domains/reviews/reviews.js +99 -0
  74. package/dist/domains/reviews/reviews.js.map +1 -0
  75. package/dist/domains/uploads/uploads.d.ts +54 -64
  76. package/dist/domains/uploads/uploads.d.ts.map +1 -1
  77. package/dist/domains/uploads/uploads.js +43 -60
  78. package/dist/domains/uploads/uploads.js.map +1 -1
  79. package/dist/index.d.ts +11 -6
  80. package/dist/index.d.ts.map +1 -1
  81. package/dist/index.js +17 -7
  82. package/dist/index.js.map +1 -1
  83. package/package.json +1 -1
@@ -1,30 +1,24 @@
1
1
  /**
2
- * founder-schema — Uploads: the key a client carries, and asking for a slot
2
+ * founder-schema — Uploads: asking for a slot, and finishing one
3
3
  *
4
- * Its own module so that both `feed` (a post's media) and `onboarding` (the
5
- * avatar) can use the one key rule. It lived in `feed` until 0.2.0, and
6
- * `onboarding` could not import it from there without a cycle (`feed` imports
7
- * `onboarding` for the topic list), so the avatar key was a bare string and
8
- * `'../../etc/passwd'` passed.
4
+ * The routes, in order (the whole pipeline is described in `media`):
9
5
  *
10
- * Imports only the limits and the message keys.
6
+ * POST /api/v1/uploads/presign -> a media id and a presigned PUT URL
7
+ * PUT <url> -> the bytes, straight to storage
8
+ * POST /api/v1/uploads/:mediaId/complete -> the processed image
9
+ * DELETE /api/v1/uploads/:mediaId -> discard an unattached upload
10
+ *
11
+ * Its own module so that `feed`, `onboarding` and `profile` can all depend on
12
+ * it without a cycle.
11
13
  *
12
14
  * @module founder-schema/domains/uploads
13
15
  */
14
16
  import { z } from 'zod';
15
17
  /**
16
- * ⚠ IMAGES ONLY, and that is a product decision rather than an oversight.
17
- *
18
- * The asymmetry was real and was raised: `feedVideoSchema` is in the read union
19
- * and a card can render a video, while nothing could ever upload one. The user
20
- * settled it on 2026-09-21: members upload images, and share video by putting a
21
- * link in the post text, which the client renders inline. So the minter stays
22
- * images-only by intent.
23
- *
24
- * `feedVideoSchema` is deliberately KEPT. Widening the write path later is
25
- * additive; removing video from the read union once a client handles it is not.
26
- * A test named for refusing a video key holds this visible, so whoever adds
27
- * video uploads has to delete a test that says out loud why it exists.
18
+ * File extensions a picker offers, and the content type each is uploaded as.
19
+ * For a file input's `accept`, and for a file whose `type` the browser left
20
+ * empty. Images only: video is shared as a link in the post text, a product
21
+ * decision of 2026-09-21, not an unfinished uploader.
28
22
  */
29
23
  export declare const UPLOAD_KEY_EXTENSIONS: readonly ["jpg", "jpeg", "png", "webp", "gif"];
30
24
  export declare const uploadKeyExtensionSchema: z.ZodEnum<{
@@ -35,11 +29,6 @@ export declare const uploadKeyExtensionSchema: z.ZodEnum<{
35
29
  gif: "gif";
36
30
  }>;
37
31
  export type UploadKeyExtension = z.infer<typeof uploadKeyExtensionSchema>;
38
- /**
39
- * The content type each extension is signed for, and the only types an
40
- * attached object may turn out to have. The server signs the PUT with this
41
- * type and refuses to attach an object whose stored type is anything else.
42
- */
43
32
  export declare const UPLOAD_CONTENT_TYPES: {
44
33
  readonly jpg: "image/jpeg";
45
34
  readonly jpeg: "image/jpeg";
@@ -47,67 +36,68 @@ export declare const UPLOAD_CONTENT_TYPES: {
47
36
  readonly webp: "image/webp";
48
37
  readonly gif: "image/gif";
49
38
  };
50
- export declare const UPLOAD_KEY_MAX_CHARS = 300;
51
39
  /**
52
- * An attachment on the way IN is a KEY, never a URL. FORMAT, minted
53
- * server-side and never by a client:
54
- *
55
- * media/<userId>/<uuid>.<ext>
56
- *
57
- * Built from `UPLOAD_KEY_EXTENSIONS`, so the extension list exists once. The
58
- * backend reads the owner segment with this same pattern.
59
- *
60
- * ⚠ THIS IS THE FIRST OF THREE CHECKS AND THE WEAKEST. It proves the key is
61
- * well FORMED. It cannot prove the two things that actually matter:
62
- *
63
- * 1. OWNERSHIP. The `userId` segment is what makes "is this your object"
64
- * checkable, and the backend compares it against the authenticated caller.
65
- * A pattern happily accepts a well-formed key belonging to somebody else.
66
- * 2. EXISTENCE. The backend reads the object before attaching it, so a key
67
- * for an object nobody uploaded cannot be committed.
40
+ * @deprecated Since 0.5.0 no route takes or returns a storage key: a client
41
+ * carries a media id (`objectIdSchema`). Kept only because this package never
42
+ * removes an export without a ruling (TEAM.md 5a, `public-surface.test.ts`).
68
43
  */
44
+ export declare const UPLOAD_KEY_MAX_CHARS = 300;
45
+ /** @deprecated See `UPLOAD_KEY_MAX_CHARS`. The 0.4.0 key format, `media/<userId>/<uuid>.<ext>`. */
69
46
  export declare const UPLOAD_KEY_PATTERN: RegExp;
70
- /**
71
- * The length ceiling and the traversal refusal are redundant against the
72
- * pattern, which is anchored and admits no dots outside the extension. They are
73
- * kept on purpose: they are what still holds if the pattern is ever loosened.
74
- */
47
+ /** @deprecated See `UPLOAD_KEY_MAX_CHARS`. */
75
48
  export declare const uploadKeySchema: z.ZodString;
49
+ /** @deprecated See `UPLOAD_KEY_MAX_CHARS`. */
76
50
  export type UploadKey = z.infer<typeof uploadKeySchema>;
77
51
  /**
78
52
  * Asking for an upload slot: `POST /api/v1/uploads/presign`.
79
53
  *
80
- * The server chooses the key (so it carries the caller's id), the content type
81
- * and the expiry; a client that could name its own key could aim it at
82
- * someone else's folder.
54
+ * The server chooses where the file goes (a folder named for the caller,
55
+ * which no CDN can read) and how long the URL lives; the client says only what
56
+ * it is for and what it is sending.
83
57
  *
84
- * `contentLength` is the file's exact size in bytes, and it is SIGNED INTO the
85
- * URL: storage refuses a PUT whose body is any other size. Until 0.2.0 nothing
86
- * capped the size at upload, so a member could put 40 MB into the bucket and
87
- * only learn at attach time that it was refused.
58
+ * `contentType` and `contentLength` are SIGNED INTO the URL: storage refuses a
59
+ * PUT with any other type or any other number of bytes. `contentLength` is the
60
+ * exact size of the bytes about to be sent, after any client-side shrinking.
88
61
  */
89
62
  export declare const uploadPresignBodySchema: z.ZodObject<{
90
- extension: z.ZodEnum<{
91
- jpg: "jpg";
92
- jpeg: "jpeg";
93
- png: "png";
94
- webp: "webp";
95
- gif: "gif";
63
+ purpose: z.ZodEnum<{
64
+ post: "post";
65
+ avatar: "avatar";
66
+ product_logo: "product_logo";
67
+ product_screenshot: "product_screenshot";
68
+ }>;
69
+ contentType: z.ZodEnum<{
70
+ "image/jpeg": "image/jpeg";
71
+ "image/png": "image/png";
72
+ "image/webp": "image/webp";
73
+ "image/gif": "image/gif";
96
74
  }>;
97
75
  contentLength: z.ZodNumber;
98
76
  }, z.core.$strip>;
99
77
  export type UploadPresignBody = z.infer<typeof uploadPresignBodySchema>;
100
78
  /**
101
- * The upload slot. `headers` are part of the signature, not advice: send every
102
- * one of them verbatim on the PUT, with a body of exactly `contentLength`
103
- * bytes, or storage answers with a signature mismatch. `key` is what a create
104
- * body then carries, exactly as given.
79
+ * The upload slot.
80
+ *
81
+ * Send `method` to `url` with every one of `headers` verbatim and a body of
82
+ * exactly `contentLength` bytes; the headers are part of the signature, not
83
+ * advice, and anything else is a signature mismatch. Then complete `mediaId`.
84
+ * The URL works for `expiresIn` seconds. It is not single-use, which is why the
85
+ * server reads the file exactly once, when it claims the upload to process it.
86
+ *
87
+ * Completing answers 409 `UPLOAD_PROCESSING` if another request is already
88
+ * processing the same upload; complete again in a moment.
105
89
  */
106
90
  export declare const uploadPresignResponseSchema: z.ZodObject<{
107
- key: z.ZodString;
91
+ mediaId: z.ZodString;
108
92
  url: z.ZodURL;
93
+ method: z.ZodLiteral<"PUT">;
109
94
  headers: z.ZodRecord<z.ZodString, z.ZodString>;
110
95
  expiresIn: z.ZodNumber;
111
96
  }, z.core.$strip>;
112
97
  export type UploadPresignResponse = z.infer<typeof uploadPresignResponseSchema>;
98
+ /** `:mediaId` on `/uploads/:mediaId/complete` and `DELETE /uploads/:mediaId`. */
99
+ export declare const uploadParamsSchema: z.ZodObject<{
100
+ mediaId: z.ZodPipe<z.ZodString, z.ZodTransform<string, string>>;
101
+ }, z.core.$strip>;
102
+ export type UploadParams = z.infer<typeof uploadParamsSchema>;
113
103
  //# sourceMappingURL=uploads.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"uploads.d.ts","sourceRoot":"","sources":["../../../src/domains/uploads/uploads.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,qBAAqB,gDAAiD,CAAC;AACpF,eAAO,MAAM,wBAAwB;;;;;;EAAgC,CAAC;AACtE,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAC;AAE1E;;;;GAIG;AACH,eAAO,MAAM,oBAAoB;;;;;;CAMiC,CAAC;AAEnE,eAAO,MAAM,oBAAoB,MAAM,CAAC;AAExC;;;;;;;;;;;;;;;;;GAiBG;AACH,eAAO,MAAM,kBAAkB,QAE9B,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,eAAe,aAMuD,CAAC;AACpF,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC;AAExD;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,uBAAuB;;;;;;;;;iBAGlC,CAAC;AACH,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC;AAExE;;;;;GAKG;AACH,eAAO,MAAM,2BAA2B;;;;;iBAMtC,CAAC;AACH,MAAM,MAAM,qBAAqB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,2BAA2B,CAAC,CAAC"}
1
+ {"version":3,"file":"uploads.d.ts","sourceRoot":"","sources":["../../../src/domains/uploads/uploads.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAMxB;;;;;GAKG;AACH,eAAO,MAAM,qBAAqB,gDAAiD,CAAC;AACpF,eAAO,MAAM,wBAAwB;;;;;;EAAgC,CAAC;AACtE,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAC;AAE1E,eAAO,MAAM,oBAAoB;;;;;;CAMiC,CAAC;AAEnE;;;;GAIG;AACH,eAAO,MAAM,oBAAoB,MAAM,CAAC;AAExC,mGAAmG;AACnG,eAAO,MAAM,kBAAkB,QAE9B,CAAC;AAEF,8CAA8C;AAC9C,eAAO,MAAM,eAAe,aAMuD,CAAC;AACpF,8CAA8C;AAC9C,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC;AAExD;;;;;;;;;;GAUG;AACH,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;iBAIlC,CAAC;AACH,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC;AAExE;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,2BAA2B;;;;;;iBAMtC,CAAC;AACH,MAAM,MAAM,qBAAqB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,2BAA2B,CAAC,CAAC;AAEhF,iFAAiF;AACjF,eAAO,MAAM,kBAAkB;;iBAAwC,CAAC;AACxE,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC"}
@@ -1,40 +1,31 @@
1
1
  /**
2
- * founder-schema — Uploads: the key a client carries, and asking for a slot
2
+ * founder-schema — Uploads: asking for a slot, and finishing one
3
3
  *
4
- * Its own module so that both `feed` (a post's media) and `onboarding` (the
5
- * avatar) can use the one key rule. It lived in `feed` until 0.2.0, and
6
- * `onboarding` could not import it from there without a cycle (`feed` imports
7
- * `onboarding` for the topic list), so the avatar key was a bare string and
8
- * `'../../etc/passwd'` passed.
4
+ * The routes, in order (the whole pipeline is described in `media`):
9
5
  *
10
- * Imports only the limits and the message keys.
6
+ * POST /api/v1/uploads/presign -> a media id and a presigned PUT URL
7
+ * PUT <url> -> the bytes, straight to storage
8
+ * POST /api/v1/uploads/:mediaId/complete -> the processed image
9
+ * DELETE /api/v1/uploads/:mediaId -> discard an unattached upload
10
+ *
11
+ * Its own module so that `feed`, `onboarding` and `profile` can all depend on
12
+ * it without a cycle.
11
13
  *
12
14
  * @module founder-schema/domains/uploads
13
15
  */
14
16
  import { z } from 'zod';
17
+ import { objectIdSchema } from '../../core/common.js';
15
18
  import { UPLOAD_MAX_BYTES } from '../../core/limits.js';
16
19
  import { VALIDATION_MESSAGE } from '../../core/validation.js';
20
+ import { mediaPurposeSchema, mediaUploadContentTypeSchema } from '../media/media.js';
17
21
  /**
18
- * ⚠ IMAGES ONLY, and that is a product decision rather than an oversight.
19
- *
20
- * The asymmetry was real and was raised: `feedVideoSchema` is in the read union
21
- * and a card can render a video, while nothing could ever upload one. The user
22
- * settled it on 2026-09-21: members upload images, and share video by putting a
23
- * link in the post text, which the client renders inline. So the minter stays
24
- * images-only by intent.
25
- *
26
- * `feedVideoSchema` is deliberately KEPT. Widening the write path later is
27
- * additive; removing video from the read union once a client handles it is not.
28
- * A test named for refusing a video key holds this visible, so whoever adds
29
- * video uploads has to delete a test that says out loud why it exists.
22
+ * File extensions a picker offers, and the content type each is uploaded as.
23
+ * For a file input's `accept`, and for a file whose `type` the browser left
24
+ * empty. Images only: video is shared as a link in the post text, a product
25
+ * decision of 2026-09-21, not an unfinished uploader.
30
26
  */
31
27
  export const UPLOAD_KEY_EXTENSIONS = ['jpg', 'jpeg', 'png', 'webp', 'gif'];
32
28
  export const uploadKeyExtensionSchema = z.enum(UPLOAD_KEY_EXTENSIONS);
33
- /**
34
- * The content type each extension is signed for, and the only types an
35
- * attached object may turn out to have. The server signs the PUT with this
36
- * type and refuses to attach an object whose stored type is anything else.
37
- */
38
29
  export const UPLOAD_CONTENT_TYPES = {
39
30
  jpg: 'image/jpeg',
40
31
  jpeg: 'image/jpeg',
@@ -42,31 +33,15 @@ export const UPLOAD_CONTENT_TYPES = {
42
33
  webp: 'image/webp',
43
34
  gif: 'image/gif',
44
35
  };
45
- export const UPLOAD_KEY_MAX_CHARS = 300;
46
36
  /**
47
- * An attachment on the way IN is a KEY, never a URL. FORMAT, minted
48
- * server-side and never by a client:
49
- *
50
- * media/<userId>/<uuid>.<ext>
51
- *
52
- * Built from `UPLOAD_KEY_EXTENSIONS`, so the extension list exists once. The
53
- * backend reads the owner segment with this same pattern.
54
- *
55
- * ⚠ THIS IS THE FIRST OF THREE CHECKS AND THE WEAKEST. It proves the key is
56
- * well FORMED. It cannot prove the two things that actually matter:
57
- *
58
- * 1. OWNERSHIP. The `userId` segment is what makes "is this your object"
59
- * checkable, and the backend compares it against the authenticated caller.
60
- * A pattern happily accepts a well-formed key belonging to somebody else.
61
- * 2. EXISTENCE. The backend reads the object before attaching it, so a key
62
- * for an object nobody uploaded cannot be committed.
37
+ * @deprecated Since 0.5.0 no route takes or returns a storage key: a client
38
+ * carries a media id (`objectIdSchema`). Kept only because this package never
39
+ * removes an export without a ruling (TEAM.md 5a, `public-surface.test.ts`).
63
40
  */
41
+ export const UPLOAD_KEY_MAX_CHARS = 300;
42
+ /** @deprecated See `UPLOAD_KEY_MAX_CHARS`. The 0.4.0 key format, `media/<userId>/<uuid>.<ext>`. */
64
43
  export const UPLOAD_KEY_PATTERN = new RegExp(`^media/[0-9a-f]{24}/[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}\\.(${UPLOAD_KEY_EXTENSIONS.join('|')})$`);
65
- /**
66
- * The length ceiling and the traversal refusal are redundant against the
67
- * pattern, which is anchored and admits no dots outside the extension. They are
68
- * kept on purpose: they are what still holds if the pattern is ever loosened.
69
- */
44
+ /** @deprecated See `UPLOAD_KEY_MAX_CHARS`. */
70
45
  export const uploadKeySchema = z
71
46
  .string()
72
47
  .trim()
@@ -77,30 +52,38 @@ export const uploadKeySchema = z
77
52
  /**
78
53
  * Asking for an upload slot: `POST /api/v1/uploads/presign`.
79
54
  *
80
- * The server chooses the key (so it carries the caller's id), the content type
81
- * and the expiry; a client that could name its own key could aim it at
82
- * someone else's folder.
55
+ * The server chooses where the file goes (a folder named for the caller,
56
+ * which no CDN can read) and how long the URL lives; the client says only what
57
+ * it is for and what it is sending.
83
58
  *
84
- * `contentLength` is the file's exact size in bytes, and it is SIGNED INTO the
85
- * URL: storage refuses a PUT whose body is any other size. Until 0.2.0 nothing
86
- * capped the size at upload, so a member could put 40 MB into the bucket and
87
- * only learn at attach time that it was refused.
59
+ * `contentType` and `contentLength` are SIGNED INTO the URL: storage refuses a
60
+ * PUT with any other type or any other number of bytes. `contentLength` is the
61
+ * exact size of the bytes about to be sent, after any client-side shrinking.
88
62
  */
89
63
  export const uploadPresignBodySchema = z.object({
90
- extension: uploadKeyExtensionSchema,
64
+ purpose: mediaPurposeSchema,
65
+ contentType: mediaUploadContentTypeSchema,
91
66
  contentLength: z.number().int().min(1).max(UPLOAD_MAX_BYTES),
92
67
  });
93
68
  /**
94
- * The upload slot. `headers` are part of the signature, not advice: send every
95
- * one of them verbatim on the PUT, with a body of exactly `contentLength`
96
- * bytes, or storage answers with a signature mismatch. `key` is what a create
97
- * body then carries, exactly as given.
69
+ * The upload slot.
70
+ *
71
+ * Send `method` to `url` with every one of `headers` verbatim and a body of
72
+ * exactly `contentLength` bytes; the headers are part of the signature, not
73
+ * advice, and anything else is a signature mismatch. Then complete `mediaId`.
74
+ * The URL works for `expiresIn` seconds. It is not single-use, which is why the
75
+ * server reads the file exactly once, when it claims the upload to process it.
76
+ *
77
+ * Completing answers 409 `UPLOAD_PROCESSING` if another request is already
78
+ * processing the same upload; complete again in a moment.
98
79
  */
99
80
  export const uploadPresignResponseSchema = z.object({
100
- key: uploadKeySchema,
81
+ mediaId: z.string(),
101
82
  url: z.url(),
83
+ method: z.literal('PUT'),
102
84
  headers: z.record(z.string(), z.string()),
103
- /** Seconds the URL stays valid. */
104
85
  expiresIn: z.number().int().positive(),
105
86
  });
87
+ /** `:mediaId` on `/uploads/:mediaId/complete` and `DELETE /uploads/:mediaId`. */
88
+ export const uploadParamsSchema = z.object({ mediaId: objectIdSchema });
106
89
  //# sourceMappingURL=uploads.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"uploads.js","sourceRoot":"","sources":["../../../src/domains/uploads/uploads.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAE9D;;;;;;;;;;;;;GAaG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,CAAU,CAAC;AACpF,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;AAGtE;;;;GAIG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG;IAClC,GAAG,EAAE,YAAY;IACjB,IAAI,EAAE,YAAY;IAClB,GAAG,EAAE,WAAW;IAChB,IAAI,EAAE,YAAY;IAClB,GAAG,EAAE,WAAW;CACgD,CAAC;AAEnE,MAAM,CAAC,MAAM,oBAAoB,GAAG,GAAG,CAAC;AAExC;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,IAAI,MAAM,CAC1C,uFAAuF,qBAAqB,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAC3H,CAAC;AAEF;;;;GAIG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC;KAC7B,MAAM,EAAE;KACR,IAAI,EAAE;KACN,GAAG,CAAC,CAAC,CAAC;KACN,GAAG,CAAC,oBAAoB,CAAC;KACzB,KAAK,CAAC,kBAAkB,EAAE,kBAAkB,CAAC,gBAAgB,CAAC;KAC9D,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE,kBAAkB,CAAC,gBAAgB,EAAE,CAAC,CAAC;AAGpF;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC9C,SAAS,EAAE,wBAAwB;IACnC,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,gBAAgB,CAAC;CAC7D,CAAC,CAAC;AAGH;;;;;GAKG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,CAAC,CAAC,MAAM,CAAC;IAClD,GAAG,EAAE,eAAe;IACpB,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE;IACZ,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC;IACzC,mCAAmC;IACnC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;CACvC,CAAC,CAAC","sourcesContent":["/**\n * founder-schema — Uploads: the key a client carries, and asking for a slot\n *\n * Its own module so that both `feed` (a post's media) and `onboarding` (the\n * avatar) can use the one key rule. It lived in `feed` until 0.2.0, and\n * `onboarding` could not import it from there without a cycle (`feed` imports\n * `onboarding` for the topic list), so the avatar key was a bare string and\n * `'../../etc/passwd'` passed.\n *\n * Imports only the limits and the message keys.\n *\n * @module founder-schema/domains/uploads\n */\n\nimport { z } from 'zod';\nimport { UPLOAD_MAX_BYTES } from '../../core/limits.js';\nimport { VALIDATION_MESSAGE } from '../../core/validation.js';\n\n/**\n * ⚠ IMAGES ONLY, and that is a product decision rather than an oversight.\n *\n * The asymmetry was real and was raised: `feedVideoSchema` is in the read union\n * and a card can render a video, while nothing could ever upload one. The user\n * settled it on 2026-09-21: members upload images, and share video by putting a\n * link in the post text, which the client renders inline. So the minter stays\n * images-only by intent.\n *\n * `feedVideoSchema` is deliberately KEPT. Widening the write path later is\n * additive; removing video from the read union once a client handles it is not.\n * A test named for refusing a video key holds this visible, so whoever adds\n * video uploads has to delete a test that says out loud why it exists.\n */\nexport const UPLOAD_KEY_EXTENSIONS = ['jpg', 'jpeg', 'png', 'webp', 'gif'] as const;\nexport const uploadKeyExtensionSchema = z.enum(UPLOAD_KEY_EXTENSIONS);\nexport type UploadKeyExtension = z.infer<typeof uploadKeyExtensionSchema>;\n\n/**\n * The content type each extension is signed for, and the only types an\n * attached object may turn out to have. The server signs the PUT with this\n * type and refuses to attach an object whose stored type is anything else.\n */\nexport const UPLOAD_CONTENT_TYPES = {\n jpg: 'image/jpeg',\n jpeg: 'image/jpeg',\n png: 'image/png',\n webp: 'image/webp',\n gif: 'image/gif',\n} as const satisfies Record<UploadKeyExtension, `image/${string}`>;\n\nexport const UPLOAD_KEY_MAX_CHARS = 300;\n\n/**\n * An attachment on the way IN is a KEY, never a URL. FORMAT, minted\n * server-side and never by a client:\n *\n * media/<userId>/<uuid>.<ext>\n *\n * Built from `UPLOAD_KEY_EXTENSIONS`, so the extension list exists once. The\n * backend reads the owner segment with this same pattern.\n *\n * ⚠ THIS IS THE FIRST OF THREE CHECKS AND THE WEAKEST. It proves the key is\n * well FORMED. It cannot prove the two things that actually matter:\n *\n * 1. OWNERSHIP. The `userId` segment is what makes \"is this your object\"\n * checkable, and the backend compares it against the authenticated caller.\n * A pattern happily accepts a well-formed key belonging to somebody else.\n * 2. EXISTENCE. The backend reads the object before attaching it, so a key\n * for an object nobody uploaded cannot be committed.\n */\nexport const UPLOAD_KEY_PATTERN = new RegExp(\n `^media/[0-9a-f]{24}/[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}\\\\.(${UPLOAD_KEY_EXTENSIONS.join('|')})$`,\n);\n\n/**\n * The length ceiling and the traversal refusal are redundant against the\n * pattern, which is anchored and admits no dots outside the extension. They are\n * kept on purpose: they are what still holds if the pattern is ever loosened.\n */\nexport const uploadKeySchema = z\n .string()\n .trim()\n .min(1)\n .max(UPLOAD_KEY_MAX_CHARS)\n .regex(UPLOAD_KEY_PATTERN, VALIDATION_MESSAGE.uploadKeyInvalid)\n .refine((k) => !k.includes('..'), { error: VALIDATION_MESSAGE.uploadKeyInvalid });\nexport type UploadKey = z.infer<typeof uploadKeySchema>;\n\n/**\n * Asking for an upload slot: `POST /api/v1/uploads/presign`.\n *\n * The server chooses the key (so it carries the caller's id), the content type\n * and the expiry; a client that could name its own key could aim it at\n * someone else's folder.\n *\n * `contentLength` is the file's exact size in bytes, and it is SIGNED INTO the\n * URL: storage refuses a PUT whose body is any other size. Until 0.2.0 nothing\n * capped the size at upload, so a member could put 40 MB into the bucket and\n * only learn at attach time that it was refused.\n */\nexport const uploadPresignBodySchema = z.object({\n extension: uploadKeyExtensionSchema,\n contentLength: z.number().int().min(1).max(UPLOAD_MAX_BYTES),\n});\nexport type UploadPresignBody = z.infer<typeof uploadPresignBodySchema>;\n\n/**\n * The upload slot. `headers` are part of the signature, not advice: send every\n * one of them verbatim on the PUT, with a body of exactly `contentLength`\n * bytes, or storage answers with a signature mismatch. `key` is what a create\n * body then carries, exactly as given.\n */\nexport const uploadPresignResponseSchema = z.object({\n key: uploadKeySchema,\n url: z.url(),\n headers: z.record(z.string(), z.string()),\n /** Seconds the URL stays valid. */\n expiresIn: z.number().int().positive(),\n});\nexport type UploadPresignResponse = z.infer<typeof uploadPresignResponseSchema>;\n"]}
1
+ {"version":3,"file":"uploads.js","sourceRoot":"","sources":["../../../src/domains/uploads/uploads.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EAAE,kBAAkB,EAAE,4BAA4B,EAAE,MAAM,mBAAmB,CAAC;AAErF;;;;;GAKG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,CAAU,CAAC;AACpF,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;AAGtE,MAAM,CAAC,MAAM,oBAAoB,GAAG;IAClC,GAAG,EAAE,YAAY;IACjB,IAAI,EAAE,YAAY;IAClB,GAAG,EAAE,WAAW;IAChB,IAAI,EAAE,YAAY;IAClB,GAAG,EAAE,WAAW;CACgD,CAAC;AAEnE;;;;GAIG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,GAAG,CAAC;AAExC,mGAAmG;AACnG,MAAM,CAAC,MAAM,kBAAkB,GAAG,IAAI,MAAM,CAC1C,uFAAuF,qBAAqB,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAC3H,CAAC;AAEF,8CAA8C;AAC9C,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC;KAC7B,MAAM,EAAE;KACR,IAAI,EAAE;KACN,GAAG,CAAC,CAAC,CAAC;KACN,GAAG,CAAC,oBAAoB,CAAC;KACzB,KAAK,CAAC,kBAAkB,EAAE,kBAAkB,CAAC,gBAAgB,CAAC;KAC9D,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE,kBAAkB,CAAC,gBAAgB,EAAE,CAAC,CAAC;AAIpF;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC9C,OAAO,EAAE,kBAAkB;IAC3B,WAAW,EAAE,4BAA4B;IACzC,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,gBAAgB,CAAC;CAC7D,CAAC,CAAC;AAGH;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,CAAC,CAAC,MAAM,CAAC;IAClD,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;IACnB,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE;IACZ,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC;IACxB,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC;IACzC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;CACvC,CAAC,CAAC;AAGH,iFAAiF;AACjF,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,cAAc,EAAE,CAAC,CAAC","sourcesContent":["/**\n * founder-schema — Uploads: asking for a slot, and finishing one\n *\n * The routes, in order (the whole pipeline is described in `media`):\n *\n * POST /api/v1/uploads/presign -> a media id and a presigned PUT URL\n * PUT <url> -> the bytes, straight to storage\n * POST /api/v1/uploads/:mediaId/complete -> the processed image\n * DELETE /api/v1/uploads/:mediaId -> discard an unattached upload\n *\n * Its own module so that `feed`, `onboarding` and `profile` can all depend on\n * it without a cycle.\n *\n * @module founder-schema/domains/uploads\n */\n\nimport { z } from 'zod';\nimport { objectIdSchema } from '../../core/common.js';\nimport { UPLOAD_MAX_BYTES } from '../../core/limits.js';\nimport { VALIDATION_MESSAGE } from '../../core/validation.js';\nimport { mediaPurposeSchema, mediaUploadContentTypeSchema } from '../media/media.js';\n\n/**\n * File extensions a picker offers, and the content type each is uploaded as.\n * For a file input's `accept`, and for a file whose `type` the browser left\n * empty. Images only: video is shared as a link in the post text, a product\n * decision of 2026-09-21, not an unfinished uploader.\n */\nexport const UPLOAD_KEY_EXTENSIONS = ['jpg', 'jpeg', 'png', 'webp', 'gif'] as const;\nexport const uploadKeyExtensionSchema = z.enum(UPLOAD_KEY_EXTENSIONS);\nexport type UploadKeyExtension = z.infer<typeof uploadKeyExtensionSchema>;\n\nexport const UPLOAD_CONTENT_TYPES = {\n jpg: 'image/jpeg',\n jpeg: 'image/jpeg',\n png: 'image/png',\n webp: 'image/webp',\n gif: 'image/gif',\n} as const satisfies Record<UploadKeyExtension, `image/${string}`>;\n\n/**\n * @deprecated Since 0.5.0 no route takes or returns a storage key: a client\n * carries a media id (`objectIdSchema`). Kept only because this package never\n * removes an export without a ruling (TEAM.md 5a, `public-surface.test.ts`).\n */\nexport const UPLOAD_KEY_MAX_CHARS = 300;\n\n/** @deprecated See `UPLOAD_KEY_MAX_CHARS`. The 0.4.0 key format, `media/<userId>/<uuid>.<ext>`. */\nexport const UPLOAD_KEY_PATTERN = new RegExp(\n `^media/[0-9a-f]{24}/[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}\\\\.(${UPLOAD_KEY_EXTENSIONS.join('|')})$`,\n);\n\n/** @deprecated See `UPLOAD_KEY_MAX_CHARS`. */\nexport const uploadKeySchema = z\n .string()\n .trim()\n .min(1)\n .max(UPLOAD_KEY_MAX_CHARS)\n .regex(UPLOAD_KEY_PATTERN, VALIDATION_MESSAGE.uploadKeyInvalid)\n .refine((k) => !k.includes('..'), { error: VALIDATION_MESSAGE.uploadKeyInvalid });\n/** @deprecated See `UPLOAD_KEY_MAX_CHARS`. */\nexport type UploadKey = z.infer<typeof uploadKeySchema>;\n\n/**\n * Asking for an upload slot: `POST /api/v1/uploads/presign`.\n *\n * The server chooses where the file goes (a folder named for the caller,\n * which no CDN can read) and how long the URL lives; the client says only what\n * it is for and what it is sending.\n *\n * `contentType` and `contentLength` are SIGNED INTO the URL: storage refuses a\n * PUT with any other type or any other number of bytes. `contentLength` is the\n * exact size of the bytes about to be sent, after any client-side shrinking.\n */\nexport const uploadPresignBodySchema = z.object({\n purpose: mediaPurposeSchema,\n contentType: mediaUploadContentTypeSchema,\n contentLength: z.number().int().min(1).max(UPLOAD_MAX_BYTES),\n});\nexport type UploadPresignBody = z.infer<typeof uploadPresignBodySchema>;\n\n/**\n * The upload slot.\n *\n * Send `method` to `url` with every one of `headers` verbatim and a body of\n * exactly `contentLength` bytes; the headers are part of the signature, not\n * advice, and anything else is a signature mismatch. Then complete `mediaId`.\n * The URL works for `expiresIn` seconds. It is not single-use, which is why the\n * server reads the file exactly once, when it claims the upload to process it.\n *\n * Completing answers 409 `UPLOAD_PROCESSING` if another request is already\n * processing the same upload; complete again in a moment.\n */\nexport const uploadPresignResponseSchema = z.object({\n mediaId: z.string(),\n url: z.url(),\n method: z.literal('PUT'),\n headers: z.record(z.string(), z.string()),\n expiresIn: z.number().int().positive(),\n});\nexport type UploadPresignResponse = z.infer<typeof uploadPresignResponseSchema>;\n\n/** `:mediaId` on `/uploads/:mediaId/complete` and `DELETE /uploads/:mediaId`. */\nexport const uploadParamsSchema = z.object({ mediaId: objectIdSchema });\nexport type UploadParams = z.infer<typeof uploadParamsSchema>;\n"]}
package/dist/index.d.ts CHANGED
@@ -11,22 +11,27 @@
11
11
  export { type ChangeMpinBody, changeMpinBodySchema, type MeAccessResponse, MPIN_LENGTH, MPIN_LOCK_MS, MPIN_MAX_ATTEMPTS, meAccessResponseSchema, mpinSchema, type SetMpinBody, type SwitchRoleBody, setMpinBodySchema, switchRoleBodySchema, } from './access/access.js';
12
12
  export { ACTION_VALUES, type Action, type AppAbility, actionSchema, type PackedRules, packedRulesSchema, SUBJECT_VALUES, type Subject, type SubjectFields, type SubjectInstance, subjectSchema, } from './access/permissions.js';
13
13
  export { ACTIVE_ROLE_TTL_MS, canGrantRole, isPlatformRole, MEMBER_ROLE, PLATFORM_ROLE_VALUES, type PlatformRole, platformRoleSchema, ROLE_GRANTED_BY, ROLE_VALUES, type Role, roleSchema, } from './access/roles.js';
14
- export { type CoordinatesQuery, type CoordinatesQueryInput, chosenUsernameSchema, coordinatesQuerySchema, emptyStringToUndefined, type FounderLocation, GENDER_VALUES, type Gender, GOAL_VALUES, type Goal, genderSchema, goalSchema, type HttpUrl, httpUrlSchema, INDUSTRY_VALUES, type Industry, industrySchema, isReservedUsername, locationSchema, type ObjectIdString, objectIdSchema, optionalTrimmedString, type PaginationQuery, type PaginationQueryInput, type Phone, paginationQuerySchema, phoneSchema, RESERVED_USERNAMES, type SafeUrl, SKILL_VALUES, type Skill, STARTUP_STAGE_VALUES, type StartupStage, type SuggestedLocation, safeUrlSchema, skillSchema, startupStageSchema, suggestedLocationSchema, USERNAME_MAX, USERNAME_MIN, type Username, usernameSchema, } from './core/common.js';
14
+ export { type CoordinatesQuery, type CoordinatesQueryInput, chosenUsernameSchema, coordinatesQuerySchema, emptyStringToUndefined, type FounderLocation, GENDER_VALUES, type Gender, GOAL_VALUES, type Goal, genderSchema, goalSchema, type HttpUrl, httpUrlOnHosts, httpUrlSchema, INDUSTRY_VALUES, type Industry, industrySchema, isReservedUsername, isUrlOnHost, locationSchema, multiValueQuery, type ObjectIdString, objectIdSchema, optionalTrimmedString, type PaginationQuery, type PaginationQueryInput, type Phone, paginationQuerySchema, phoneSchema, RESERVED_USERNAMES, type SafeUrl, SKILL_VALUES, type Skill, STARTUP_STAGE_VALUES, type StartupStage, type SuggestedLocation, safeUrlSchema, skillSchema, startupStageSchema, suggestedLocationSchema, USERNAME_MAX, USERNAME_MIN, type Username, usernameSchema, YOUTUBE_HOSTS, } from './core/common.js';
15
15
  export { API_ERROR_CODE, API_ERROR_CODE_VALUES, type ApiErrorCode, apiErrorCodeSchema, } from './core/errors.js';
16
- export { ABOUT_MAX, CHAT_PARTICIPANTS_MAX, CITY_MAX, COUNTRY_MAX, DISCOVER_FILTER_VALUES_MAX, DISCOVER_TEXT_MAX, DISPLAY_NAME_MAX, FOUNDED_YEAR_MIN, GOALS_MIN, HEADLINE_MAX, LINK_PREVIEW_DESCRIPTION_MAX, LINK_PREVIEW_TITLE_MAX, LINK_URL_MAX, MEDIA_ALT_MAX, MEMBER_SEARCH_MAX, MODERATION_EXCERPT_MAX, MODERATION_NOTE_MAX, PAGE_SIZE_DEFAULT, PAGE_SIZE_MAX, REPORT_NOTE_MAX, SAVED_REPLIES_MAX, SAVED_REPLY_BODY_MAX, SAVED_REPLY_TITLE_MAX, SKILLS_MAX, STATE_MAX, SUSPENSION_REASON_MAX, SUSPENSION_REASON_MIN, TEAM_SIZE_MAX, TEAM_SIZE_MIN, TICKET_MESSAGE_MAX, TICKET_MESSAGES_MAX, TICKET_SUBJECT_MAX, TICKET_SUBJECT_MIN, UPLOAD_MAX_BYTES, VENTURE_NAME_MAX, VENTURE_TAGLINE_MAX, } from './core/limits.js';
16
+ export { ABOUT_MAX, CHAT_PARTICIPANTS_MAX, CITY_MAX, CONTRIBUTION_LEADERBOARD_SIZE, CONTRIBUTION_PAIR_POINTS_MAX, CONTRIBUTION_RECENT_DAYS, COUNTRY_MAX, DISCOVER_FILTER_VALUES_MAX, DISCOVER_TEXT_MAX, DISPLAY_NAME_MAX, FOUNDED_YEAR_MIN, GOALS_MIN, HEADLINE_MAX, LINK_PREVIEW_DESCRIPTION_MAX, LINK_PREVIEW_TITLE_MAX, LINK_URL_MAX, MEDIA_ALT_MAX, MEDIA_MAX_INPUT_PIXELS, MEDIA_PENDING_MAX, MEDIA_PLACEHOLDER_MAX, MEDIA_UNATTACHED_TTL_HOURS, MEMBER_SEARCH_MAX, MODERATION_EXCERPT_MAX, MODERATION_NOTE_MAX, NOTIFICATION_EXCERPT_MAX, NOTIFICATION_RETENTION_DAYS, PAGE_SIZE_DEFAULT, PAGE_SIZE_MAX, PRODUCT_ASK_OPEN_DAYS, PRODUCT_CAPTION_MAX, PRODUCT_DESCRIPTION_MAX, PRODUCT_NAME_MAX, PRODUCT_SCREENSHOTS_MAX, PRODUCT_TAGLINE_MAX, PRODUCT_TEAM_SHOWN, PRODUCTS_OWNED_MAX, REPORT_NOTE_MAX, REVIEW_AVERAGE_MIN_COUNT, REVIEW_HELPFUL_POINTS_MAX, REVIEW_REPLY_MAX, REVIEW_TEXT_MAX, REVIEW_TEXT_MIN, REVIEWS_REWARDED_PER_DAY, SAVED_REPLIES_MAX, SAVED_REPLY_BODY_MAX, SAVED_REPLY_TITLE_MAX, SKILLS_MAX, STATE_MAX, SUSPENSION_REASON_MAX, SUSPENSION_REASON_MIN, TEAM_SIZE_MAX, TEAM_SIZE_MIN, TICKET_MESSAGE_MAX, TICKET_MESSAGES_MAX, TICKET_SUBJECT_MAX, TICKET_SUBJECT_MIN, UPLOAD_MAX_BYTES, VENTURE_NAME_MAX, VENTURE_TAGLINE_MAX, } from './core/limits.js';
17
17
  export { type ApiError, type ApiErrorDetails, apiErrorDetailsSchema, apiErrorSchema, type ErrorResponse, errorResponseSchema, type IdResponse, idResponseSchema, paginatedSchema, successResponseSchema, } from './core/responses.js';
18
18
  export { REQUEST_PART_VALUES, type RequestPart, requestPartSchema, toValidationIssues, VALIDATION_MESSAGE, type ValidationIssue, type ValidationMessageKey, validationIssueSchema, } from './core/validation.js';
19
19
  export { type DeleteAccountResponse, deleteAccountResponseSchema, } from './domains/account/account.js';
20
20
  export { AUDIT_ACTION_VALUES, type AuditAction, type AuditActor, type AuditEntry, type AuditPage, auditActionSchema, auditActorSchema, auditEntrySchema, auditPageSchema, } from './domains/audit/audit.js';
21
21
  export { CHAT_PRODUCT_ID, CHAT_SOCKET_REAUTH_SECONDS, CHAT_TOKEN_REFRESH_MARGIN_SECONDS, type ChatAuthToken, type ChatConfig, type ChatInvitation, type ChatInvitationBody, type ChatParticipant, type ChatParticipantsBody, type ChatParticipantsResponse, type ChatProductId, chatAuthTokenSchema, chatConfigSchema, chatInvitationBodySchema, chatInvitationSchema, chatParticipantSchema, chatParticipantsBodySchema, chatParticipantsResponseSchema, chatProductIdSchema, type OpenChatBody, type OpenChatResponse, openChatBodySchema, openChatResponseSchema, } from './domains/chat/chat.js';
22
+ export { CONTRIBUTION_KIND_VALUES, CONTRIBUTION_POINTS, type ContributionEntry, type ContributionKind, type ContributionLeaderboard, type ContributionLeaderEntry, type ContributionPage, contributionEntrySchema, contributionKindSchema, contributionLeaderboardSchema, contributionLeaderEntrySchema, contributionPageSchema, } from './domains/contributions/contributions.js';
22
23
  export { type Dashboard, dashboardSchema } from './domains/dashboard/dashboard.js';
23
24
  export { type DiscoverFacets, type DiscoverPage, type DiscoverQuery, type DiscoverQueryInput, discoverFacetsSchema, discoverPageSchema, discoverQuerySchema, } from './domains/discover/discover.js';
24
- export { type AttachedMedia, type AuthorParams, attachedMediaSchema, authorParamsSchema, type CastVoteBody, type CastVoteResponse, COMMENT_MAX_BODY_CHARS, CONTENT_KIND_VALUES, type CommentPage, type CommentParams, type CommentsQuery, type CommentsQueryInput, type ContentKind, type ContentParams, type ContentTargetParams, type CreateCommentBody, type CreatePollBody, type CreatePostBody, type CreateReportBody, type CreateReportResponse, castVoteBodySchema, castVoteResponseSchema, commentPageSchema, commentParamsSchema, commentsQuerySchema, contentKindSchema, contentParamsSchema, contentTargetParamsSchema, createCommentBodySchema, createPollBodySchema, createPostBodySchema, createReportBodySchema, createReportResponseSchema, EDIT_WINDOW_MS, ENGAGEMENT_TARGET_KIND_VALUES, type EngagementTargetKind, type EngagementTargetParams, engagementTargetKindSchema, engagementTargetParamsSchema, FEED_SORT_VALUES, type FeedAuthor, type FeedComment, type FeedImage, type FeedItem, type FeedItemParams, type FeedMedia, type FeedPage, type FeedPoll, type FeedPost, type FeedQuery, type FeedQueryInput, type FeedSort, type FeedVideo, feedAuthorSchema, feedCommentSchema, feedImageSchema, feedItemParamsSchema, feedItemSchema, feedMediaSchema, feedPageSchema, feedPollSchema, feedPostSchema, feedQuerySchema, feedSortSchema, feedVideoSchema, type LinkPreview, linkPreviewSchema, MAX_TOPICS, POLL_MAX_DURATION_MS, POLL_MAX_OPTIONS, POLL_MIN_DURATION_MS, POLL_MIN_OPTIONS, POLL_OPTION_MAX_CHARS, POLL_QUESTION_MAX_CHARS, POST_MAX_BODY_CHARS, POST_MAX_MEDIA, type PollOption, type PollParams, pollOptionSchema, pollParamsSchema, REACTION_TYPE_VALUES, REPORT_REASON_VALUES, type ReactionCounts, type ReactionType, type ReportReason, reactionCountsSchema, reactionTypeSchema, reportReasonSchema, type SetReactionBody, type SetReactionResponse, setReactionBodySchema, setReactionResponseSchema, type ToggleBookmarkResponse, toggleBookmarkResponseSchema, type UpdateCommentBody, type UpdatePostBody, updateCommentBodySchema, updatePostBodySchema, type ViewerState, viewerStateSchema, } from './domains/feed/feed.js';
25
+ export { type AttachedMedia, type AuthorParams, attachedMediaSchema, authorParamsSchema, type CastVoteBody, type CastVoteResponse, COMMENT_MAX_BODY_CHARS, CONTENT_KIND_VALUES, type CommentHelpfulResponse, type CommentPage, type CommentParams, type CommentsQuery, type CommentsQueryInput, type ContentKind, type ContentParams, type ContentTargetParams, type CreateCommentBody, type CreatePollBody, type CreatePostBody, type CreateReportBody, type CreateReportResponse, castVoteBodySchema, castVoteResponseSchema, commentHelpfulResponseSchema, commentPageSchema, commentParamsSchema, commentsQuerySchema, contentKindSchema, contentParamsSchema, contentTargetParamsSchema, createCommentBodySchema, createPollBodySchema, createPostBodySchema, createReportBodySchema, createReportResponseSchema, EDIT_WINDOW_MS, ENGAGEMENT_TARGET_KIND_VALUES, type EngagementTargetKind, type EngagementTargetParams, engagementTargetKindSchema, engagementTargetParamsSchema, FEED_SORT_VALUES, type FeedAuthor, type FeedComment, type FeedImage, type FeedItem, type FeedItemParams, type FeedMedia, type FeedPage, type FeedPoll, type FeedPost, type FeedQuery, type FeedQueryInput, type FeedSort, type FeedVideo, feedAuthorSchema, feedCommentSchema, feedImageSchema, feedItemParamsSchema, feedItemSchema, feedMediaSchema, feedPageSchema, feedPollSchema, feedPostSchema, feedQuerySchema, feedSortSchema, feedVideoSchema, type LinkPreview, linkPreviewSchema, MAX_TOPICS, POLL_MAX_DURATION_MS, POLL_MAX_OPTIONS, POLL_MIN_DURATION_MS, POLL_MIN_OPTIONS, POLL_OPTION_MAX_CHARS, POLL_QUESTION_MAX_CHARS, POST_MAX_BODY_CHARS, POST_MAX_MEDIA, type PollOption, type PollParams, type ProductFeedbackItem, type ProductFeedbackPage, pollOptionSchema, pollParamsSchema, productFeedbackItemSchema, productFeedbackPageSchema, REACTION_TYPE_VALUES, REPORT_REASON_VALUES, REPORT_TARGET_KIND_VALUES, type ReactionCounts, type ReactionType, type ReportReason, type ReportTargetKind, reactionCountsSchema, reactionTypeSchema, reportReasonSchema, reportTargetKindSchema, type SetReactionBody, type SetReactionResponse, setReactionBodySchema, setReactionResponseSchema, type ToggleBookmarkResponse, toggleBookmarkResponseSchema, type UpdateCommentBody, type UpdatePostBody, updateCommentBodySchema, updatePostBodySchema, type ViewerState, viewerStateSchema, } from './domains/feed/feed.js';
26
+ export { MEDIA_PURPOSE_VALUES, MEDIA_SIZES, MEDIA_UPLOAD_CONTENT_TYPES, MEDIA_VARIANTS_MAX, type MediaImage, type MediaPurpose, type MediaUploadContentType, type MediaVariant, mediaImageSchema, mediaPurposeSchema, mediaUploadContentTypeSchema, mediaVariantSchema, type UploadedMedia, uploadedMediaSchema, } from './domains/media/media.js';
25
27
  export { MEMBER_STATUS_VALUES, type MemberDetail, type MemberDirectoryPage, type MemberDirectoryQuery, type MemberDirectoryQueryInput, type MemberParams, type MemberStatus, type MemberSummary, memberDetailSchema, memberDirectoryPageSchema, memberDirectoryQuerySchema, memberParamsSchema, memberStatusSchema, memberSummarySchema, type SuspendMemberBody, type Suspension, suspendMemberBodySchema, suspensionSchema, } from './domains/members/members.js';
26
- export { MODERATION_ACTION_VALUES, MODERATION_STATE_VALUES, type ModerationAction, type ModerationContentQuery, type ModerationContentQueryInput, type ModerationDecisionBody, type ModerationItem, type ModerationPage, type ModerationState, moderationActionSchema, moderationContentQuerySchema, moderationDecisionBodySchema, moderationItemSchema, moderationPageSchema, moderationStateSchema, } from './domains/moderation/moderation.js';
28
+ export { MODERATION_ACTION_VALUES, MODERATION_ACTIONS_BY_TARGET_KIND, MODERATION_CONTEXT_KIND_VALUES, MODERATION_STATE_VALUES, type ModerationAction, type ModerationContentQuery, type ModerationContentQueryInput, type ModerationContextKind, type ModerationDecisionBody, type ModerationItem, type ModerationPage, type ModerationState, type ModerationTargetParams, moderationActionSchema, moderationContentQuerySchema, moderationContextKindSchema, moderationDecisionBodySchema, moderationItemSchema, moderationPageSchema, moderationStateSchema, moderationTargetParamsSchema, } from './domains/moderation/moderation.js';
29
+ export { NOTIFICATION_KIND_VALUES, NOTIFICATION_PREFERENCE_OF, NOTIFICATION_PREFERENCE_VALUES, type Notification, type NotificationKind, type NotificationPage, type NotificationParams, type NotificationPreference, type NotificationPreferences, type NotificationUnreadCount, notificationKindSchema, notificationPageSchema, notificationParamsSchema, notificationPreferenceSchema, notificationPreferencesSchema, notificationSchema, notificationUnreadCountSchema, type UpdateNotificationPreferencesBody, updateNotificationPreferencesBodySchema, } from './domains/notifications/notifications.js';
27
30
  export { ageInYears, BUSINESS_TYPE_VALUES, type BusinessType, businessTypeSchema, type CompleteOnboardingBody, type CompleteOnboardingBodyInput, type CompleteOnboardingResponse, type ContactLinks, completeOnboardingBodySchema, completeOnboardingResponseSchema, contactLinksSchema, type DateOfBirth, dateOfBirthSchema, EMPTY_ONBOARDING_VENTURE, FOUNDER_ONBOARDING_STEPS, GUIDELINES_VERSION, guidelinesVersionSchema, INTERESTS_MAX, INTERESTS_MIN, type IsoDate, isoDateSchema, MAX_AGE_YEARS, MIN_AGE_YEARS, ONBOARDING_DRAFT_KEYS, ONBOARDING_STEP_FIELDS, ONBOARDING_STEP_KEYS, ONBOARDING_STEP_SCHEMAS, ONBOARDING_TOTAL_STEPS, type OnboardingDraft, type OnboardingDraftKey, type OnboardingField, type OnboardingForm, type OnboardingProgress, type OnboardingProgressUpdate, type OnboardingStatus, type OnboardingStepBody, type OnboardingStepConfig, type OnboardingStepKey, onboardingDraftKeySchema, onboardingDraftSchema, onboardingFormSchema, onboardingProgressSchema, onboardingProgressUpdateSchema, onboardingStatusSchema, readOnboardingDraft, TEAM_SIZE_DIGITS_MAX, TOPIC_CATEGORIES, TOPIC_CATEGORY_KEYS, TOPIC_VALUES, type Topic, type TopicCategory, type TopicCategoryKey, topicSchema, } from './domains/onboarding/onboarding.js';
28
- export { type FounderCard, type FounderLinks, type FounderProfile, founderCardSchema, founderLinksSchema, founderProfileSchema, type UpdateFounderProfileBody, type UpdateUsernameBody, type UsernameAvailability, updateFounderProfileBodySchema, updateUsernameBodySchema, usernameAvailabilitySchema, type Venture, ventureSchema, } from './domains/profile/founder-profile.js';
31
+ export { type CreateProductBody, createProductBodySchema, type InviteProductMemberBody, inviteProductMemberBodySchema, type MyProducts, myProductsSchema, PRODUCT_ASK_VALUES, PRODUCT_INVITABLE_ROLE_VALUES, PRODUCT_LISTING_REQUIREMENT_VALUES, PRODUCT_PLATFORM_VALUES, PRODUCT_SORT_VALUES, PRODUCT_STAGE_VALUES, PRODUCT_STATUS_VALUES, PRODUCT_TEAM_ROLE_VALUES, PRODUCT_TOPICS_MAX, PRODUCT_VISIBILITY_VALUES, type Product, type ProductAsk, type ProductCard, type ProductCardPage, type ProductChip, type ProductDiscoverQuery, type ProductDiscoverQueryInput, type ProductFacets, type ProductFeedbackQuery, type ProductFeedbackQueryInput, type ProductInvitableRole, type ProductInvite, type ProductInvites, type ProductLinks, type ProductListingRequirement, type ProductMemberParams, type ProductParams, type ProductPendingInvite, type ProductPendingInvitePage, type ProductPlatform, type ProductRating, type ProductScreenshot, type ProductScreenshotInput, type ProductSort, type ProductStage, type ProductStatus, type ProductsByMemberParams, type ProductTeamMember, type ProductTeamPage, type ProductTeamRole, type ProductTester, type ProductTesterPage, type ProductUpvoteResponse, type ProductViewer, type ProductVisibility, productAskSchema, productCardPageSchema, productCardSchema, productCardViewerSchema, productChipSchema, productDiscoverQuerySchema, productFacetsSchema, productFeedbackQuerySchema, productInvitableRoleSchema, productInviteSchema, productInvitesSchema, productLinksSchema, productListingRequirementSchema, productMemberParamsSchema, productParamsSchema, productPendingInvitePageSchema, productPendingInviteSchema, productPlatformSchema, productRatingSchema, productSchema, productScreenshotInputSchema, productScreenshotSchema, productSortSchema, productStageSchema, productStatusSchema, productsByMemberParamsSchema, productTeamMemberSchema, productTeamPageSchema, productTeamRoleSchema, productTesterPageSchema, productTesterSchema, productUpvoteResponseSchema, productVideoUrlSchema, productViewerSchema, productVisibilitySchema, type SetProductLogoBody, type SetProductMemberRoleBody, type SetProductScreenshotsBody, type SetProductStatusBody, type SetProductVisibilityBody, setProductLogoBodySchema, setProductMemberRoleBodySchema, setProductScreenshotsBodySchema, setProductStatusBodySchema, setProductVisibilityBodySchema, type TransferProductBody, transferProductBodySchema, type UpdateProductBody, updateProductBodySchema, } from './domains/products/products.js';
32
+ export { type ContributionSummary, contributionSummarySchema, type FounderCard, type FounderLinks, type FounderProfile, founderCardSchema, founderLinksSchema, founderProfileSchema, type MemberByline, memberBylineSchema, type SetAvatarBody, setAvatarBodySchema, type UpdateFounderProfileBody, type UpdateUsernameBody, type UsernameAvailability, updateFounderProfileBodySchema, updateUsernameBodySchema, usernameAvailabilitySchema, type Venture, ventureSchema, } from './domains/profile/founder-profile.js';
33
+ export { type CreateReviewBody, createReviewBodySchema, type ProductReview, productReviewSchema, REVIEW_SORT_VALUES, type ReviewHelpfulResponse, type ReviewPage, type ReviewParams, type ReviewRating, type ReviewReply, type ReviewReplyBody, type ReviewSort, type ReviewsQuery, type ReviewsQueryInput, type ReviewViewer, reviewHelpfulResponseSchema, reviewPageSchema, reviewParamsSchema, reviewRatingSchema, reviewReplyBodySchema, reviewReplySchema, reviewSortSchema, reviewsQuerySchema, reviewViewerSchema, type UpdateReviewBody, updateReviewBodySchema, } from './domains/reviews/reviews.js';
29
34
  export { type CreateTicketBody, createTicketBodySchema, type ReplyTicketBody, replyTicketBodySchema, type SavedReply, type SavedReplyBody, type SavedReplyList, type SavedReplyParams, savedReplyBodySchema, savedReplyListSchema, savedReplyParamsSchema, savedReplySchema, TICKET_ASSIGNEE_FILTER_VALUES, TICKET_CATEGORY_VALUES, TICKET_SCOPE_VALUES, TICKET_STATUS_VALUES, type TicketAssigneeFilter, type TicketCategory, type TicketDetail, type TicketListQuery, type TicketListQueryInput, type TicketMessage, type TicketPage, type TicketParams, type TicketScope, type TicketStatus, type TicketSummary, ticketAssigneeFilterSchema, ticketCategorySchema, ticketDetailSchema, ticketListQuerySchema, ticketMessageSchema, ticketPageSchema, ticketParamsSchema, ticketScopeSchema, ticketStatusSchema, ticketSummarySchema, } from './domains/support/support.js';
30
35
  export { type SetMemberRolesBody, type SetMemberRolesResponse, setMemberRolesBodySchema, setMemberRolesResponseSchema, type TeamMember, type TeamMemberParams, type TeamPage, teamMemberParamsSchema, teamMemberSchema, teamPageSchema, } from './domains/team/team.js';
31
- export { UPLOAD_CONTENT_TYPES, UPLOAD_KEY_EXTENSIONS, UPLOAD_KEY_MAX_CHARS, UPLOAD_KEY_PATTERN, type UploadKey, type UploadKeyExtension, type UploadPresignBody, type UploadPresignResponse, uploadKeyExtensionSchema, uploadKeySchema, uploadPresignBodySchema, uploadPresignResponseSchema, } from './domains/uploads/uploads.js';
36
+ export { UPLOAD_CONTENT_TYPES, UPLOAD_KEY_EXTENSIONS, UPLOAD_KEY_MAX_CHARS, UPLOAD_KEY_PATTERN, type UploadKey, type UploadKeyExtension, type UploadParams, type UploadPresignBody, type UploadPresignResponse, uploadKeyExtensionSchema, uploadKeySchema, uploadParamsSchema, uploadPresignBodySchema, uploadPresignResponseSchema, } from './domains/uploads/uploads.js';
32
37
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -13,11 +13,11 @@ export { changeMpinBodySchema, MPIN_LENGTH, MPIN_LOCK_MS, MPIN_MAX_ATTEMPTS, meA
13
13
  export { ACTION_VALUES, actionSchema, packedRulesSchema, SUBJECT_VALUES, subjectSchema, } from './access/permissions.js';
14
14
  export { ACTIVE_ROLE_TTL_MS, canGrantRole, isPlatformRole, MEMBER_ROLE, PLATFORM_ROLE_VALUES, platformRoleSchema, ROLE_GRANTED_BY, ROLE_VALUES, roleSchema, } from './access/roles.js';
15
15
  // ─── Common helpers and enums ────────────────────────────────────────────────
16
- export { chosenUsernameSchema, coordinatesQuerySchema, emptyStringToUndefined, GENDER_VALUES, GOAL_VALUES, genderSchema, goalSchema, httpUrlSchema, INDUSTRY_VALUES, industrySchema, isReservedUsername, locationSchema, objectIdSchema, optionalTrimmedString, paginationQuerySchema, phoneSchema, RESERVED_USERNAMES, SKILL_VALUES, STARTUP_STAGE_VALUES, safeUrlSchema, skillSchema, startupStageSchema, suggestedLocationSchema, USERNAME_MAX, USERNAME_MIN, usernameSchema, } from './core/common.js';
16
+ export { chosenUsernameSchema, coordinatesQuerySchema, emptyStringToUndefined, GENDER_VALUES, GOAL_VALUES, genderSchema, goalSchema, httpUrlOnHosts, httpUrlSchema, INDUSTRY_VALUES, industrySchema, isReservedUsername, isUrlOnHost, locationSchema, multiValueQuery, objectIdSchema, optionalTrimmedString, paginationQuerySchema, phoneSchema, RESERVED_USERNAMES, SKILL_VALUES, STARTUP_STAGE_VALUES, safeUrlSchema, skillSchema, startupStageSchema, suggestedLocationSchema, USERNAME_MAX, USERNAME_MIN, usernameSchema, YOUTUBE_HOSTS, } from './core/common.js';
17
17
  // ─── Error codes ─────────────────────────────────────────────────────────────
18
18
  export { API_ERROR_CODE, API_ERROR_CODE_VALUES, apiErrorCodeSchema, } from './core/errors.js';
19
19
  // ─── Limits: every length, size and count, by name ──────────────────────────
20
- export { ABOUT_MAX, CHAT_PARTICIPANTS_MAX, CITY_MAX, COUNTRY_MAX, DISCOVER_FILTER_VALUES_MAX, DISCOVER_TEXT_MAX, DISPLAY_NAME_MAX, FOUNDED_YEAR_MIN, GOALS_MIN, HEADLINE_MAX, LINK_PREVIEW_DESCRIPTION_MAX, LINK_PREVIEW_TITLE_MAX, LINK_URL_MAX, MEDIA_ALT_MAX, MEMBER_SEARCH_MAX, MODERATION_EXCERPT_MAX, MODERATION_NOTE_MAX, PAGE_SIZE_DEFAULT, PAGE_SIZE_MAX, REPORT_NOTE_MAX, SAVED_REPLIES_MAX, SAVED_REPLY_BODY_MAX, SAVED_REPLY_TITLE_MAX, SKILLS_MAX, STATE_MAX, SUSPENSION_REASON_MAX, SUSPENSION_REASON_MIN, TEAM_SIZE_MAX, TEAM_SIZE_MIN, TICKET_MESSAGE_MAX, TICKET_MESSAGES_MAX, TICKET_SUBJECT_MAX, TICKET_SUBJECT_MIN, UPLOAD_MAX_BYTES, VENTURE_NAME_MAX, VENTURE_TAGLINE_MAX, } from './core/limits.js';
20
+ export { ABOUT_MAX, CHAT_PARTICIPANTS_MAX, CITY_MAX, CONTRIBUTION_LEADERBOARD_SIZE, CONTRIBUTION_PAIR_POINTS_MAX, CONTRIBUTION_RECENT_DAYS, COUNTRY_MAX, DISCOVER_FILTER_VALUES_MAX, DISCOVER_TEXT_MAX, DISPLAY_NAME_MAX, FOUNDED_YEAR_MIN, GOALS_MIN, HEADLINE_MAX, LINK_PREVIEW_DESCRIPTION_MAX, LINK_PREVIEW_TITLE_MAX, LINK_URL_MAX, MEDIA_ALT_MAX, MEDIA_MAX_INPUT_PIXELS, MEDIA_PENDING_MAX, MEDIA_PLACEHOLDER_MAX, MEDIA_UNATTACHED_TTL_HOURS, MEMBER_SEARCH_MAX, MODERATION_EXCERPT_MAX, MODERATION_NOTE_MAX, NOTIFICATION_EXCERPT_MAX, NOTIFICATION_RETENTION_DAYS, PAGE_SIZE_DEFAULT, PAGE_SIZE_MAX, PRODUCT_ASK_OPEN_DAYS, PRODUCT_CAPTION_MAX, PRODUCT_DESCRIPTION_MAX, PRODUCT_NAME_MAX, PRODUCT_SCREENSHOTS_MAX, PRODUCT_TAGLINE_MAX, PRODUCT_TEAM_SHOWN, PRODUCTS_OWNED_MAX, REPORT_NOTE_MAX, REVIEW_AVERAGE_MIN_COUNT, REVIEW_HELPFUL_POINTS_MAX, REVIEW_REPLY_MAX, REVIEW_TEXT_MAX, REVIEW_TEXT_MIN, REVIEWS_REWARDED_PER_DAY, SAVED_REPLIES_MAX, SAVED_REPLY_BODY_MAX, SAVED_REPLY_TITLE_MAX, SKILLS_MAX, STATE_MAX, SUSPENSION_REASON_MAX, SUSPENSION_REASON_MIN, TEAM_SIZE_MAX, TEAM_SIZE_MIN, TICKET_MESSAGE_MAX, TICKET_MESSAGES_MAX, TICKET_SUBJECT_MAX, TICKET_SUBJECT_MIN, UPLOAD_MAX_BYTES, VENTURE_NAME_MAX, VENTURE_TAGLINE_MAX, } from './core/limits.js';
21
21
  // ─── Response envelopes ──────────────────────────────────────────────────────
22
22
  export { apiErrorDetailsSchema, apiErrorSchema, errorResponseSchema, idResponseSchema, paginatedSchema, successResponseSchema, } from './core/responses.js';
23
23
  // ─── Validation: message keys and the wire shape of a failure ───────────────
@@ -27,20 +27,30 @@ export { deleteAccountResponseSchema, } from './domains/account/account.js';
27
27
  export { AUDIT_ACTION_VALUES, auditActionSchema, auditActorSchema, auditEntrySchema, auditPageSchema, } from './domains/audit/audit.js';
28
28
  // ─── Chat ────────────────────────────────────────────────────────────────────
29
29
  export { CHAT_PRODUCT_ID, CHAT_SOCKET_REAUTH_SECONDS, CHAT_TOKEN_REFRESH_MARGIN_SECONDS, chatAuthTokenSchema, chatConfigSchema, chatInvitationBodySchema, chatInvitationSchema, chatParticipantSchema, chatParticipantsBodySchema, chatParticipantsResponseSchema, chatProductIdSchema, openChatBodySchema, openChatResponseSchema, } from './domains/chat/chat.js';
30
+ // ─── Contribution: the help a member gives, recognised ───────────────────────
31
+ export { CONTRIBUTION_KIND_VALUES, CONTRIBUTION_POINTS, contributionEntrySchema, contributionKindSchema, contributionLeaderboardSchema, contributionLeaderEntrySchema, contributionPageSchema, } from './domains/contributions/contributions.js';
30
32
  // ─── Staff: overview, members, moderation, support, the team, the audit log ─
31
33
  export { dashboardSchema } from './domains/dashboard/dashboard.js';
32
34
  // ─── Discover ────────────────────────────────────────────────────────────────
33
35
  export { discoverFacetsSchema, discoverPageSchema, discoverQuerySchema, } from './domains/discover/discover.js';
34
36
  // ─── Feed: post, poll, comment, reaction ─────────────────────────────────────
35
- export { attachedMediaSchema, authorParamsSchema, COMMENT_MAX_BODY_CHARS, CONTENT_KIND_VALUES, castVoteBodySchema, castVoteResponseSchema, commentPageSchema, commentParamsSchema, commentsQuerySchema, contentKindSchema, contentParamsSchema, contentTargetParamsSchema, createCommentBodySchema, createPollBodySchema, createPostBodySchema, createReportBodySchema, createReportResponseSchema, EDIT_WINDOW_MS, ENGAGEMENT_TARGET_KIND_VALUES, engagementTargetKindSchema, engagementTargetParamsSchema, FEED_SORT_VALUES, feedAuthorSchema, feedCommentSchema, feedImageSchema, feedItemParamsSchema, feedItemSchema, feedMediaSchema, feedPageSchema, feedPollSchema, feedPostSchema, feedQuerySchema, feedSortSchema, feedVideoSchema, linkPreviewSchema, MAX_TOPICS, POLL_MAX_DURATION_MS, POLL_MAX_OPTIONS, POLL_MIN_DURATION_MS, POLL_MIN_OPTIONS, POLL_OPTION_MAX_CHARS, POLL_QUESTION_MAX_CHARS, POST_MAX_BODY_CHARS, POST_MAX_MEDIA, pollOptionSchema, pollParamsSchema, REACTION_TYPE_VALUES, REPORT_REASON_VALUES, reactionCountsSchema, reactionTypeSchema, reportReasonSchema, setReactionBodySchema, setReactionResponseSchema, toggleBookmarkResponseSchema, updateCommentBodySchema, updatePostBodySchema, viewerStateSchema, } from './domains/feed/feed.js';
37
+ export { attachedMediaSchema, authorParamsSchema, COMMENT_MAX_BODY_CHARS, CONTENT_KIND_VALUES, castVoteBodySchema, castVoteResponseSchema, commentHelpfulResponseSchema, commentPageSchema, commentParamsSchema, commentsQuerySchema, contentKindSchema, contentParamsSchema, contentTargetParamsSchema, createCommentBodySchema, createPollBodySchema, createPostBodySchema, createReportBodySchema, createReportResponseSchema, EDIT_WINDOW_MS, ENGAGEMENT_TARGET_KIND_VALUES, engagementTargetKindSchema, engagementTargetParamsSchema, FEED_SORT_VALUES, feedAuthorSchema, feedCommentSchema, feedImageSchema, feedItemParamsSchema, feedItemSchema, feedMediaSchema, feedPageSchema, feedPollSchema, feedPostSchema, feedQuerySchema, feedSortSchema, feedVideoSchema, linkPreviewSchema, MAX_TOPICS, POLL_MAX_DURATION_MS, POLL_MAX_OPTIONS, POLL_MIN_DURATION_MS, POLL_MIN_OPTIONS, POLL_OPTION_MAX_CHARS, POLL_QUESTION_MAX_CHARS, POST_MAX_BODY_CHARS, POST_MAX_MEDIA, pollOptionSchema, pollParamsSchema, productFeedbackItemSchema, productFeedbackPageSchema, REACTION_TYPE_VALUES, REPORT_REASON_VALUES, REPORT_TARGET_KIND_VALUES, reactionCountsSchema, reactionTypeSchema, reportReasonSchema, reportTargetKindSchema, setReactionBodySchema, setReactionResponseSchema, toggleBookmarkResponseSchema, updateCommentBodySchema, updatePostBodySchema, viewerStateSchema, } from './domains/feed/feed.js';
38
+ // ─── Media: what an uploaded image becomes ──────────────────────────────────
39
+ export { MEDIA_PURPOSE_VALUES, MEDIA_SIZES, MEDIA_UPLOAD_CONTENT_TYPES, MEDIA_VARIANTS_MAX, mediaImageSchema, mediaPurposeSchema, mediaUploadContentTypeSchema, mediaVariantSchema, uploadedMediaSchema, } from './domains/media/media.js';
36
40
  export { MEMBER_STATUS_VALUES, memberDetailSchema, memberDirectoryPageSchema, memberDirectoryQuerySchema, memberParamsSchema, memberStatusSchema, memberSummarySchema, suspendMemberBodySchema, suspensionSchema, } from './domains/members/members.js';
37
- export { MODERATION_ACTION_VALUES, MODERATION_STATE_VALUES, moderationActionSchema, moderationContentQuerySchema, moderationDecisionBodySchema, moderationItemSchema, moderationPageSchema, moderationStateSchema, } from './domains/moderation/moderation.js';
41
+ export { MODERATION_ACTION_VALUES, MODERATION_ACTIONS_BY_TARGET_KIND, MODERATION_CONTEXT_KIND_VALUES, MODERATION_STATE_VALUES, moderationActionSchema, moderationContentQuerySchema, moderationContextKindSchema, moderationDecisionBodySchema, moderationItemSchema, moderationPageSchema, moderationStateSchema, moderationTargetParamsSchema, } from './domains/moderation/moderation.js';
42
+ // ─── Notifications: the bell ─────────────────────────────────────────────────
43
+ export { NOTIFICATION_KIND_VALUES, NOTIFICATION_PREFERENCE_OF, NOTIFICATION_PREFERENCE_VALUES, notificationKindSchema, notificationPageSchema, notificationParamsSchema, notificationPreferenceSchema, notificationPreferencesSchema, notificationSchema, notificationUnreadCountSchema, updateNotificationPreferencesBodySchema, } from './domains/notifications/notifications.js';
38
44
  // ─── Onboarding ──────────────────────────────────────────────────────────────
39
45
  export { ageInYears, BUSINESS_TYPE_VALUES, businessTypeSchema, completeOnboardingBodySchema, completeOnboardingResponseSchema, contactLinksSchema, dateOfBirthSchema, EMPTY_ONBOARDING_VENTURE, FOUNDER_ONBOARDING_STEPS, GUIDELINES_VERSION, guidelinesVersionSchema, INTERESTS_MAX, INTERESTS_MIN, isoDateSchema, MAX_AGE_YEARS, MIN_AGE_YEARS, ONBOARDING_DRAFT_KEYS, ONBOARDING_STEP_FIELDS, ONBOARDING_STEP_KEYS, ONBOARDING_STEP_SCHEMAS, ONBOARDING_TOTAL_STEPS, onboardingDraftKeySchema, onboardingDraftSchema, onboardingFormSchema, onboardingProgressSchema, onboardingProgressUpdateSchema, onboardingStatusSchema, readOnboardingDraft, TEAM_SIZE_DIGITS_MAX, TOPIC_CATEGORIES, TOPIC_CATEGORY_KEYS, TOPIC_VALUES, topicSchema, } from './domains/onboarding/onboarding.js';
46
+ // ─── Products: what founders build, and the help around it ───────────────────
47
+ export { createProductBodySchema, inviteProductMemberBodySchema, myProductsSchema, PRODUCT_ASK_VALUES, PRODUCT_INVITABLE_ROLE_VALUES, PRODUCT_LISTING_REQUIREMENT_VALUES, PRODUCT_PLATFORM_VALUES, PRODUCT_SORT_VALUES, PRODUCT_STAGE_VALUES, PRODUCT_STATUS_VALUES, PRODUCT_TEAM_ROLE_VALUES, PRODUCT_TOPICS_MAX, PRODUCT_VISIBILITY_VALUES, productAskSchema, productCardPageSchema, productCardSchema, productCardViewerSchema, productChipSchema, productDiscoverQuerySchema, productFacetsSchema, productFeedbackQuerySchema, productInvitableRoleSchema, productInviteSchema, productInvitesSchema, productLinksSchema, productListingRequirementSchema, productMemberParamsSchema, productParamsSchema, productPendingInvitePageSchema, productPendingInviteSchema, productPlatformSchema, productRatingSchema, productSchema, productScreenshotInputSchema, productScreenshotSchema, productSortSchema, productStageSchema, productStatusSchema, productsByMemberParamsSchema, productTeamMemberSchema, productTeamPageSchema, productTeamRoleSchema, productTesterPageSchema, productTesterSchema, productUpvoteResponseSchema, productVideoUrlSchema, productViewerSchema, productVisibilitySchema, setProductLogoBodySchema, setProductMemberRoleBodySchema, setProductScreenshotsBodySchema, setProductStatusBodySchema, setProductVisibilityBodySchema, transferProductBodySchema, updateProductBodySchema, } from './domains/products/products.js';
40
48
  // ─── Founder profile ─────────────────────────────────────────────────────────
41
- export { founderCardSchema, founderLinksSchema, founderProfileSchema, updateFounderProfileBodySchema, updateUsernameBodySchema, usernameAvailabilitySchema, ventureSchema, } from './domains/profile/founder-profile.js';
49
+ export { contributionSummarySchema, founderCardSchema, founderLinksSchema, founderProfileSchema, memberBylineSchema, setAvatarBodySchema, updateFounderProfileBodySchema, updateUsernameBodySchema, usernameAvailabilitySchema, ventureSchema, } from './domains/profile/founder-profile.js';
50
+ // ─── Reviews: stars and words on a product ───────────────────────────────────
51
+ export { createReviewBodySchema, productReviewSchema, REVIEW_SORT_VALUES, reviewHelpfulResponseSchema, reviewPageSchema, reviewParamsSchema, reviewRatingSchema, reviewReplyBodySchema, reviewReplySchema, reviewSortSchema, reviewsQuerySchema, reviewViewerSchema, updateReviewBodySchema, } from './domains/reviews/reviews.js';
42
52
  export { createTicketBodySchema, replyTicketBodySchema, savedReplyBodySchema, savedReplyListSchema, savedReplyParamsSchema, savedReplySchema, TICKET_ASSIGNEE_FILTER_VALUES, TICKET_CATEGORY_VALUES, TICKET_SCOPE_VALUES, TICKET_STATUS_VALUES, ticketAssigneeFilterSchema, ticketCategorySchema, ticketDetailSchema, ticketListQuerySchema, ticketMessageSchema, ticketPageSchema, ticketParamsSchema, ticketScopeSchema, ticketStatusSchema, ticketSummarySchema, } from './domains/support/support.js';
43
53
  export { setMemberRolesBodySchema, setMemberRolesResponseSchema, teamMemberParamsSchema, teamMemberSchema, teamPageSchema, } from './domains/team/team.js';
44
- // ─── Uploads: the key, the extensions, asking for a slot ────────────────────
45
- export { UPLOAD_CONTENT_TYPES, UPLOAD_KEY_EXTENSIONS, UPLOAD_KEY_MAX_CHARS, UPLOAD_KEY_PATTERN, uploadKeyExtensionSchema, uploadKeySchema, uploadPresignBodySchema, uploadPresignResponseSchema, } from './domains/uploads/uploads.js';
54
+ // ─── Uploads: asking for a slot, completing it, discarding it ───────────────
55
+ export { UPLOAD_CONTENT_TYPES, UPLOAD_KEY_EXTENSIONS, UPLOAD_KEY_MAX_CHARS, UPLOAD_KEY_PATTERN, uploadKeyExtensionSchema, uploadKeySchema, uploadParamsSchema, uploadPresignBodySchema, uploadPresignResponseSchema, } from './domains/uploads/uploads.js';
46
56
  //# sourceMappingURL=index.js.map