jansathi-community-schema 0.8.0 → 0.10.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/comment.d.ts +1 -0
- package/dist/comment.d.ts.map +1 -1
- package/dist/enums.d.ts +1 -34
- package/dist/enums.d.ts.map +1 -1
- package/dist/enums.js +1 -26
- package/dist/enums.js.map +1 -1
- package/dist/feed.d.ts +13 -8
- package/dist/feed.d.ts.map +1 -1
- package/dist/index.d.ts +4 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -4
- package/dist/index.js.map +1 -1
- package/dist/post.d.ts +18 -15
- package/dist/post.d.ts.map +1 -1
- package/dist/post.js +22 -20
- package/dist/post.js.map +1 -1
- package/dist/profile.d.ts +25 -36
- package/dist/profile.d.ts.map +1 -1
- package/dist/profile.js +41 -5
- package/dist/profile.js.map +1 -1
- package/dist/repost.d.ts +2 -4
- package/dist/repost.d.ts.map +1 -1
- package/dist/settings.d.ts +0 -4
- package/dist/settings.d.ts.map +1 -1
- package/dist/settings.js +0 -8
- package/dist/settings.js.map +1 -1
- package/dist/social.d.ts +11 -71
- package/dist/social.d.ts.map +1 -1
- package/dist/social.js +11 -74
- package/dist/social.js.map +1 -1
- package/dist/username.d.ts +123 -0
- package/dist/username.d.ts.map +1 -0
- package/dist/username.js +126 -0
- package/dist/username.js.map +1 -0
- package/package.json +1 -1
package/dist/comment.d.ts
CHANGED
|
@@ -25,6 +25,7 @@ export declare const communityCommentWireSchema: z.ZodObject<{
|
|
|
25
25
|
parentCommentId: z.ZodNullable<z.ZodString>;
|
|
26
26
|
author: z.ZodObject<{
|
|
27
27
|
userId: z.ZodString;
|
|
28
|
+
username: z.ZodString;
|
|
28
29
|
displayName: z.ZodString;
|
|
29
30
|
avatarUrl: z.ZodOptional<z.ZodString>;
|
|
30
31
|
localName: z.ZodOptional<z.ZodString>;
|
package/dist/comment.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"comment.d.ts","sourceRoot":"","sources":["../src/comment.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAOxB,eAAO,MAAM,0BAA0B
|
|
1
|
+
{"version":3,"file":"comment.d.ts","sourceRoot":"","sources":["../src/comment.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAOxB,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAkCrC,CAAC;AACH,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,0BAA0B,CAAC,CAAC;AAI9E,eAAO,MAAM,uBAAuB;;;iBAMlC,CAAC;AACH,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC;AAIxE,eAAO,MAAM,uBAAuB;;iBAElC,CAAC;AACH,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC"}
|
package/dist/enums.d.ts
CHANGED
|
@@ -82,27 +82,11 @@ export declare const reactionTypeSchema: z.ZodEnum<{
|
|
|
82
82
|
support: "support";
|
|
83
83
|
}>;
|
|
84
84
|
export type ReactionType = z.infer<typeof reactionTypeSchema>;
|
|
85
|
-
/**
|
|
86
|
-
* Connection (mutual friend) lifecycle.
|
|
87
|
-
*
|
|
88
|
-
* `pending` — requester sent it, recipient hasn't acted yet.
|
|
89
|
-
* `accepted` — both sides confirmed; full visibility regardless of level.
|
|
90
|
-
* `declined` — recipient rejected; surfaces as "you can't reconnect for X days" on the requester side.
|
|
91
|
-
* `blocked` — either side blocked; permanently prevents reconnection.
|
|
92
|
-
*/
|
|
93
|
-
export declare const CONNECTION_STATUS_VALUES: readonly ["pending", "accepted", "declined", "blocked"];
|
|
94
|
-
export declare const connectionStatusSchema: z.ZodEnum<{
|
|
95
|
-
pending: "pending";
|
|
96
|
-
accepted: "accepted";
|
|
97
|
-
declined: "declined";
|
|
98
|
-
blocked: "blocked";
|
|
99
|
-
}>;
|
|
100
|
-
export type ConnectionStatus = z.infer<typeof connectionStatusSchema>;
|
|
101
85
|
/**
|
|
102
86
|
* Profile-level privacy (single toggle in Settings).
|
|
103
87
|
*
|
|
104
88
|
* `public` — anyone the area-proximity cascade reaches sees this user's posts.
|
|
105
|
-
* `private` — only
|
|
89
|
+
* `private` — only the viewer's followers see this user's posts.
|
|
106
90
|
*/
|
|
107
91
|
export declare const PROFILE_PRIVACY_VALUES: readonly ["public", "private"];
|
|
108
92
|
export declare const profilePrivacySchema: z.ZodEnum<{
|
|
@@ -110,23 +94,6 @@ export declare const profilePrivacySchema: z.ZodEnum<{
|
|
|
110
94
|
private: "private";
|
|
111
95
|
}>;
|
|
112
96
|
export type ProfilePrivacy = z.infer<typeof profilePrivacySchema>;
|
|
113
|
-
/**
|
|
114
|
-
* Per-post audience override chosen by the author at compose time.
|
|
115
|
-
*
|
|
116
|
-
* `public` — anyone the area-proximity cascade reaches (default).
|
|
117
|
-
* `connections` — only the author's accepted Connections see this post.
|
|
118
|
-
*
|
|
119
|
-
* Orthogonal to `ProfilePrivacy`: a public-profile user can mark
|
|
120
|
-
* individual posts as `connections`-only; a private-profile user's
|
|
121
|
-
* posts default to connections-only at the profile gate regardless of
|
|
122
|
-
* this value. Effective visibility = most restrictive of the two.
|
|
123
|
-
*/
|
|
124
|
-
export declare const POST_AUDIENCE_VALUES: readonly ["public", "connections"];
|
|
125
|
-
export declare const postAudienceSchema: z.ZodEnum<{
|
|
126
|
-
public: "public";
|
|
127
|
-
connections: "connections";
|
|
128
|
-
}>;
|
|
129
|
-
export type PostAudience = z.infer<typeof postAudienceSchema>;
|
|
130
97
|
/**
|
|
131
98
|
* Reasons a piece of content can be reported. The list is deliberately
|
|
132
99
|
* short — finer categorization can come from the optional `details`
|
package/dist/enums.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"enums.d.ts","sourceRoot":"","sources":["../src/enums.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,eAAO,MAAM,uBAAuB,+DAM1B,CAAC;AACX,eAAO,MAAM,qBAAqB;;;;;;EAAkC,CAAC;AACrE,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAEpE;;;;GAIG;AACH,eAAO,MAAM,qBAAqB,EAAE,MAAM,CAAC,eAAe,EAAE,MAAM,CAMjE,CAAC;AAIF;;;;;;;;GAQG;AACH,eAAO,MAAM,mBAAmB,6DAA8D,CAAC;AAC/F,eAAO,MAAM,iBAAiB;;;;;EAA8B,CAAC;AAC7D,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAI5D;;;;;;GAMG;AACH,eAAO,MAAM,oBAAoB,qEAQvB,CAAC;AACX,eAAO,MAAM,kBAAkB;;;;;;;;EAA+B,CAAC;AAC/D,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAI9D
|
|
1
|
+
{"version":3,"file":"enums.d.ts","sourceRoot":"","sources":["../src/enums.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,eAAO,MAAM,uBAAuB,+DAM1B,CAAC;AACX,eAAO,MAAM,qBAAqB;;;;;;EAAkC,CAAC;AACrE,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAEpE;;;;GAIG;AACH,eAAO,MAAM,qBAAqB,EAAE,MAAM,CAAC,eAAe,EAAE,MAAM,CAMjE,CAAC;AAIF;;;;;;;;GAQG;AACH,eAAO,MAAM,mBAAmB,6DAA8D,CAAC;AAC/F,eAAO,MAAM,iBAAiB;;;;;EAA8B,CAAC;AAC7D,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAI5D;;;;;;GAMG;AACH,eAAO,MAAM,oBAAoB,qEAQvB,CAAC;AACX,eAAO,MAAM,kBAAkB;;;;;;;;EAA+B,CAAC;AAC/D,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAI9D;;;;;GAKG;AACH,eAAO,MAAM,sBAAsB,gCAAiC,CAAC;AACrE,eAAO,MAAM,oBAAoB;;;EAAiC,CAAC;AACnE,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAIlE;;;;GAIG;AACH,eAAO,MAAM,oBAAoB,yIAUvB,CAAC;AACX,eAAO,MAAM,kBAAkB;;;;;;;;;;EAA+B,CAAC;AAC/D,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAE9D,6CAA6C;AAC7C,eAAO,MAAM,oBAAoB,4DAA6D,CAAC;AAC/F,eAAO,MAAM,kBAAkB;;;;;EAA+B,CAAC;AAC/D,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAI9D;;;;;;;;;GASG;AACH,eAAO,MAAM,gBAAgB,gCAAiC,CAAC;AAC/D,eAAO,MAAM,cAAc;;;;EAA2B,CAAC;AACvD,MAAM,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC"}
|
package/dist/enums.js
CHANGED
|
@@ -83,40 +83,15 @@ export const REACTION_TYPE_VALUES = [
|
|
|
83
83
|
'support',
|
|
84
84
|
];
|
|
85
85
|
export const reactionTypeSchema = z.enum(REACTION_TYPE_VALUES);
|
|
86
|
-
// ─── Social graph ──────────────────────────────────────────────────────────
|
|
87
|
-
/**
|
|
88
|
-
* Connection (mutual friend) lifecycle.
|
|
89
|
-
*
|
|
90
|
-
* `pending` — requester sent it, recipient hasn't acted yet.
|
|
91
|
-
* `accepted` — both sides confirmed; full visibility regardless of level.
|
|
92
|
-
* `declined` — recipient rejected; surfaces as "you can't reconnect for X days" on the requester side.
|
|
93
|
-
* `blocked` — either side blocked; permanently prevents reconnection.
|
|
94
|
-
*/
|
|
95
|
-
export const CONNECTION_STATUS_VALUES = ['pending', 'accepted', 'declined', 'blocked'];
|
|
96
|
-
export const connectionStatusSchema = z.enum(CONNECTION_STATUS_VALUES);
|
|
97
86
|
// ─── Profile privacy ───────────────────────────────────────────────────────
|
|
98
87
|
/**
|
|
99
88
|
* Profile-level privacy (single toggle in Settings).
|
|
100
89
|
*
|
|
101
90
|
* `public` — anyone the area-proximity cascade reaches sees this user's posts.
|
|
102
|
-
* `private` — only
|
|
91
|
+
* `private` — only the viewer's followers see this user's posts.
|
|
103
92
|
*/
|
|
104
93
|
export const PROFILE_PRIVACY_VALUES = ['public', 'private'];
|
|
105
94
|
export const profilePrivacySchema = z.enum(PROFILE_PRIVACY_VALUES);
|
|
106
|
-
// ─── Per-post audience ─────────────────────────────────────────────────────
|
|
107
|
-
/**
|
|
108
|
-
* Per-post audience override chosen by the author at compose time.
|
|
109
|
-
*
|
|
110
|
-
* `public` — anyone the area-proximity cascade reaches (default).
|
|
111
|
-
* `connections` — only the author's accepted Connections see this post.
|
|
112
|
-
*
|
|
113
|
-
* Orthogonal to `ProfilePrivacy`: a public-profile user can mark
|
|
114
|
-
* individual posts as `connections`-only; a private-profile user's
|
|
115
|
-
* posts default to connections-only at the profile gate regardless of
|
|
116
|
-
* this value. Effective visibility = most restrictive of the two.
|
|
117
|
-
*/
|
|
118
|
-
export const POST_AUDIENCE_VALUES = ['public', 'connections'];
|
|
119
|
-
export const postAudienceSchema = z.enum(POST_AUDIENCE_VALUES);
|
|
120
95
|
// ─── Moderation ────────────────────────────────────────────────────────────
|
|
121
96
|
/**
|
|
122
97
|
* Reasons a piece of content can be reported. The list is deliberately
|
package/dist/enums.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"enums.js","sourceRoot":"","sources":["../src/enums.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,8EAA8E;AAE9E;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG;IACrC,OAAO;IACP,UAAU;IACV,OAAO;IACP,UAAU;IACV,QAAQ;CACA,CAAC;AACX,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;AAGrE;;;;GAIG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAoC;IACpE,KAAK,EAAE,CAAC;IACR,QAAQ,EAAE,CAAC;IACX,KAAK,EAAE,CAAC;IACR,QAAQ,EAAE,CAAC;IACX,MAAM,EAAE,CAAC;CACV,CAAC;AAEF,+EAA+E;AAE/E;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,MAAM,EAAE,YAAY,EAAE,WAAW,EAAE,aAAa,CAAU,CAAC;AAC/F,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;AAG7D,+EAA+E;AAE/E;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG;IAClC,MAAM;IACN,MAAM;IACN,MAAM;IACN,KAAK;IACL,KAAK;IACL,OAAO;IACP,SAAS;CACD,CAAC;AACX,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;AAG/D,8EAA8E;AAE9E
|
|
1
|
+
{"version":3,"file":"enums.js","sourceRoot":"","sources":["../src/enums.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,8EAA8E;AAE9E;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG;IACrC,OAAO;IACP,UAAU;IACV,OAAO;IACP,UAAU;IACV,QAAQ;CACA,CAAC;AACX,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;AAGrE;;;;GAIG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAoC;IACpE,KAAK,EAAE,CAAC;IACR,QAAQ,EAAE,CAAC;IACX,KAAK,EAAE,CAAC;IACR,QAAQ,EAAE,CAAC;IACX,MAAM,EAAE,CAAC;CACV,CAAC;AAEF,+EAA+E;AAE/E;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,MAAM,EAAE,YAAY,EAAE,WAAW,EAAE,aAAa,CAAU,CAAC;AAC/F,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;AAG7D,+EAA+E;AAE/E;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG;IAClC,MAAM;IACN,MAAM;IACN,MAAM;IACN,KAAK;IACL,KAAK;IACL,OAAO;IACP,SAAS;CACD,CAAC;AACX,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;AAG/D,8EAA8E;AAE9E;;;;;GAKG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,QAAQ,EAAE,SAAS,CAAU,CAAC;AACrE,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;AAGnE,8EAA8E;AAE9E;;;;GAIG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG;IAClC,MAAM;IACN,YAAY;IACZ,aAAa;IACb,gBAAgB;IAChB,gBAAgB;IAChB,UAAU;IACV,WAAW;IACX,iBAAiB;IACjB,OAAO;CACC,CAAC;AACX,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;AAG/D,6CAA6C;AAC7C,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,SAAS,EAAE,WAAW,EAAE,UAAU,EAAE,WAAW,CAAU,CAAC;AAC/F,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;AAG/D,8EAA8E;AAE9E;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAU,CAAC;AAC/D,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC","sourcesContent":["/**\n * Enum value arrays shared across the community feature.\n *\n * Each enum is exported as both a `*_VALUES` tuple and the corresponding\n * Zod schema so backend Mongoose models and frontend forms validate\n * against the exact same set.\n *\n * @module community-schema/enums\n */\n\nimport { z } from 'zod';\n\n// ─── Feed viewport (viewer-side geographic filter) ─────────────────────────\n\n/**\n * Geographic scope the VIEWER chose for their feed — the area-proximity\n * cascade is gated by this value.\n *\n * Posts do NOT carry a per-post `visibilityLevel` any more. Every post\n * is implicitly global; visibility is purely a function of (a) the\n * author's `areaLineage` at write time and (b) the viewer's scope\n * choice here. The cascade walks from the viewer's locality outward\n * and includes any post whose author was inside the viewer's area at\n * ANY level the viewer's scope reaches.\n *\n * - `local` → locality + district + state + national matches\n * - `district` → district + state + national matches (no locality boost)\n * - `state` → state + national matches\n * - `national` → national matches\n * - `global` → all matches (de-facto same as `national` for an\n * India-only product, but kept for forward compat)\n *\n * Read-side ranking — see `feed.service.ts#tierBoost` — multiplies the\n * row's hotScore by an area-proximity factor: locality match 2.0,\n * district 1.2, state 0.9, national 0.7, distant 0.5. So local\n * content dominates at equal quality, while genuinely viral national\n * content still surfaces.\n */\nexport const VISIBILITY_LEVEL_VALUES = [\n 'local',\n 'district',\n 'state',\n 'national',\n 'global',\n] as const;\nexport const visibilityLevelSchema = z.enum(VISIBILITY_LEVEL_VALUES);\nexport type VisibilityLevel = z.infer<typeof visibilityLevelSchema>;\n\n/**\n * Numeric ranking used for the area-proximity cascade. `local` is the\n * deepest (most specific) feed scope, `global` the broadest. Higher\n * rank = broader scope.\n */\nexport const VISIBILITY_LEVEL_RANK: Record<VisibilityLevel, number> = {\n local: 0,\n district: 1,\n state: 2,\n national: 3,\n global: 4,\n};\n\n// ─── Polymorphic content kind ───────────────────────────────────────────────\n\n/**\n * The kinds of items that show up in the feed. `post` is the new\n * community-native kind; `lost_found`, `voice_box`, and `donate_item`\n * are existing legacy features surfaced into the feed via polymorphic\n * union.\n *\n * Engagement (upvote / reaction / comment / share) is keyed by\n * (contentKind, contentId) so every kind gets the same engagement bar.\n */\nexport const CONTENT_KIND_VALUES = ['post', 'lost_found', 'voice_box', 'donate_item'] as const;\nexport const contentKindSchema = z.enum(CONTENT_KIND_VALUES);\nexport type ContentKind = z.infer<typeof contentKindSchema>;\n\n// ─── Reactions ──────────────────────────────────────────────────────────────\n\n/**\n * Reaction types available on every feed item.\n *\n * `support` replaces Facebook's \"Care\" — better-suited to a civic /\n * hyperlocal context where reacting to a complaint or lost-and-found\n * post deserves a distinct \"I support you\" signal.\n */\nexport const REACTION_TYPE_VALUES = [\n 'like',\n 'love',\n 'haha',\n 'wow',\n 'sad',\n 'angry',\n 'support',\n] as const;\nexport const reactionTypeSchema = z.enum(REACTION_TYPE_VALUES);\nexport type ReactionType = z.infer<typeof reactionTypeSchema>;\n\n// ─── Profile privacy ───────────────────────────────────────────────────────\n\n/**\n * Profile-level privacy (single toggle in Settings).\n *\n * `public` — anyone the area-proximity cascade reaches sees this user's posts.\n * `private` — only the viewer's followers see this user's posts.\n */\nexport const PROFILE_PRIVACY_VALUES = ['public', 'private'] as const;\nexport const profilePrivacySchema = z.enum(PROFILE_PRIVACY_VALUES);\nexport type ProfilePrivacy = z.infer<typeof profilePrivacySchema>;\n\n// ─── Moderation ────────────────────────────────────────────────────────────\n\n/**\n * Reasons a piece of content can be reported. The list is deliberately\n * short — finer categorization can come from the optional `details`\n * free-text field on a report.\n */\nexport const REPORT_REASON_VALUES = [\n 'spam',\n 'harassment',\n 'hate_speech',\n 'misinformation',\n 'sexual_content',\n 'violence',\n 'self_harm',\n 'illegal_content',\n 'other',\n] as const;\nexport const reportReasonSchema = z.enum(REPORT_REASON_VALUES);\nexport type ReportReason = z.infer<typeof reportReasonSchema>;\n\n/** Moderator decision states on a report. */\nexport const REPORT_STATUS_VALUES = ['pending', 'reviewing', 'actioned', 'dismissed'] as const;\nexport const reportStatusSchema = z.enum(REPORT_STATUS_VALUES);\nexport type ReportStatus = z.infer<typeof reportStatusSchema>;\n\n// ─── Feed sort ─────────────────────────────────────────────────────────────\n\n/**\n * Sort options exposed in the feed UI.\n *\n * `hot` — the default. Reddit-style score blending upvotes, comment count,\n * and recency. Best surface for civic / community engagement.\n * `new` — strict reverse-chronological. Useful when the viewer wants to\n * catch up on everything fresh.\n * `top` — highest upvote count over a configurable window (defaults to\n * 24 hours on the client).\n */\nexport const FEED_SORT_VALUES = ['hot', 'new', 'top'] as const;\nexport const feedSortSchema = z.enum(FEED_SORT_VALUES);\nexport type FeedSort = z.infer<typeof feedSortSchema>;\n"]}
|
package/dist/feed.d.ts
CHANGED
|
@@ -32,6 +32,7 @@ export declare const lostFoundFeedItemSchema: z.ZodObject<{
|
|
|
32
32
|
contentKind: z.ZodLiteral<"lost_found">;
|
|
33
33
|
author: z.ZodObject<{
|
|
34
34
|
userId: z.ZodString;
|
|
35
|
+
username: z.ZodString;
|
|
35
36
|
displayName: z.ZodString;
|
|
36
37
|
avatarUrl: z.ZodOptional<z.ZodString>;
|
|
37
38
|
localName: z.ZodOptional<z.ZodString>;
|
|
@@ -66,6 +67,7 @@ export declare const donateItemFeedItemSchema: z.ZodObject<{
|
|
|
66
67
|
contentKind: z.ZodLiteral<"donate_item">;
|
|
67
68
|
author: z.ZodObject<{
|
|
68
69
|
userId: z.ZodString;
|
|
70
|
+
username: z.ZodString;
|
|
69
71
|
displayName: z.ZodString;
|
|
70
72
|
avatarUrl: z.ZodOptional<z.ZodString>;
|
|
71
73
|
localName: z.ZodOptional<z.ZodString>;
|
|
@@ -97,6 +99,7 @@ export declare const voiceBoxFeedItemSchema: z.ZodObject<{
|
|
|
97
99
|
contentKind: z.ZodLiteral<"voice_box">;
|
|
98
100
|
author: z.ZodObject<{
|
|
99
101
|
userId: z.ZodString;
|
|
102
|
+
username: z.ZodString;
|
|
100
103
|
displayName: z.ZodString;
|
|
101
104
|
avatarUrl: z.ZodOptional<z.ZodString>;
|
|
102
105
|
localName: z.ZodOptional<z.ZodString>;
|
|
@@ -125,6 +128,7 @@ export declare const feedItemSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
|
125
128
|
contentKind: z.ZodLiteral<"post">;
|
|
126
129
|
author: z.ZodObject<{
|
|
127
130
|
userId: z.ZodString;
|
|
131
|
+
username: z.ZodString;
|
|
128
132
|
displayName: z.ZodString;
|
|
129
133
|
avatarUrl: z.ZodOptional<z.ZodString>;
|
|
130
134
|
localName: z.ZodOptional<z.ZodString>;
|
|
@@ -153,10 +157,6 @@ export declare const feedItemSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
|
153
157
|
localId: z.ZodOptional<z.ZodString>;
|
|
154
158
|
localName: z.ZodOptional<z.ZodString>;
|
|
155
159
|
}, z.core.$strip>;
|
|
156
|
-
audience: z.ZodEnum<{
|
|
157
|
-
public: "public";
|
|
158
|
-
connections: "connections";
|
|
159
|
-
}>;
|
|
160
160
|
communityId: z.ZodOptional<z.ZodString>;
|
|
161
161
|
upvoteCount: z.ZodNumber;
|
|
162
162
|
commentCount: z.ZodNumber;
|
|
@@ -172,6 +172,7 @@ export declare const feedItemSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
|
172
172
|
_id: z.ZodString;
|
|
173
173
|
author: z.ZodObject<{
|
|
174
174
|
userId: z.ZodString;
|
|
175
|
+
username: z.ZodString;
|
|
175
176
|
displayName: z.ZodString;
|
|
176
177
|
avatarUrl: z.ZodOptional<z.ZodString>;
|
|
177
178
|
localName: z.ZodOptional<z.ZodString>;
|
|
@@ -196,6 +197,7 @@ export declare const feedItemSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
|
196
197
|
contentKind: z.ZodLiteral<"lost_found">;
|
|
197
198
|
author: z.ZodObject<{
|
|
198
199
|
userId: z.ZodString;
|
|
200
|
+
username: z.ZodString;
|
|
199
201
|
displayName: z.ZodString;
|
|
200
202
|
avatarUrl: z.ZodOptional<z.ZodString>;
|
|
201
203
|
localName: z.ZodOptional<z.ZodString>;
|
|
@@ -223,6 +225,7 @@ export declare const feedItemSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
|
223
225
|
contentKind: z.ZodLiteral<"voice_box">;
|
|
224
226
|
author: z.ZodObject<{
|
|
225
227
|
userId: z.ZodString;
|
|
228
|
+
username: z.ZodString;
|
|
226
229
|
displayName: z.ZodString;
|
|
227
230
|
avatarUrl: z.ZodOptional<z.ZodString>;
|
|
228
231
|
localName: z.ZodOptional<z.ZodString>;
|
|
@@ -249,6 +252,7 @@ export declare const feedItemSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
|
249
252
|
contentKind: z.ZodLiteral<"donate_item">;
|
|
250
253
|
author: z.ZodObject<{
|
|
251
254
|
userId: z.ZodString;
|
|
255
|
+
username: z.ZodString;
|
|
252
256
|
displayName: z.ZodString;
|
|
253
257
|
avatarUrl: z.ZodOptional<z.ZodString>;
|
|
254
258
|
localName: z.ZodOptional<z.ZodString>;
|
|
@@ -295,6 +299,7 @@ export declare const feedResponseSchema: z.ZodObject<{
|
|
|
295
299
|
contentKind: z.ZodLiteral<"post">;
|
|
296
300
|
author: z.ZodObject<{
|
|
297
301
|
userId: z.ZodString;
|
|
302
|
+
username: z.ZodString;
|
|
298
303
|
displayName: z.ZodString;
|
|
299
304
|
avatarUrl: z.ZodOptional<z.ZodString>;
|
|
300
305
|
localName: z.ZodOptional<z.ZodString>;
|
|
@@ -323,10 +328,6 @@ export declare const feedResponseSchema: z.ZodObject<{
|
|
|
323
328
|
localId: z.ZodOptional<z.ZodString>;
|
|
324
329
|
localName: z.ZodOptional<z.ZodString>;
|
|
325
330
|
}, z.core.$strip>;
|
|
326
|
-
audience: z.ZodEnum<{
|
|
327
|
-
public: "public";
|
|
328
|
-
connections: "connections";
|
|
329
|
-
}>;
|
|
330
331
|
communityId: z.ZodOptional<z.ZodString>;
|
|
331
332
|
upvoteCount: z.ZodNumber;
|
|
332
333
|
commentCount: z.ZodNumber;
|
|
@@ -342,6 +343,7 @@ export declare const feedResponseSchema: z.ZodObject<{
|
|
|
342
343
|
_id: z.ZodString;
|
|
343
344
|
author: z.ZodObject<{
|
|
344
345
|
userId: z.ZodString;
|
|
346
|
+
username: z.ZodString;
|
|
345
347
|
displayName: z.ZodString;
|
|
346
348
|
avatarUrl: z.ZodOptional<z.ZodString>;
|
|
347
349
|
localName: z.ZodOptional<z.ZodString>;
|
|
@@ -366,6 +368,7 @@ export declare const feedResponseSchema: z.ZodObject<{
|
|
|
366
368
|
contentKind: z.ZodLiteral<"lost_found">;
|
|
367
369
|
author: z.ZodObject<{
|
|
368
370
|
userId: z.ZodString;
|
|
371
|
+
username: z.ZodString;
|
|
369
372
|
displayName: z.ZodString;
|
|
370
373
|
avatarUrl: z.ZodOptional<z.ZodString>;
|
|
371
374
|
localName: z.ZodOptional<z.ZodString>;
|
|
@@ -393,6 +396,7 @@ export declare const feedResponseSchema: z.ZodObject<{
|
|
|
393
396
|
contentKind: z.ZodLiteral<"voice_box">;
|
|
394
397
|
author: z.ZodObject<{
|
|
395
398
|
userId: z.ZodString;
|
|
399
|
+
username: z.ZodString;
|
|
396
400
|
displayName: z.ZodString;
|
|
397
401
|
avatarUrl: z.ZodOptional<z.ZodString>;
|
|
398
402
|
localName: z.ZodOptional<z.ZodString>;
|
|
@@ -419,6 +423,7 @@ export declare const feedResponseSchema: z.ZodObject<{
|
|
|
419
423
|
contentKind: z.ZodLiteral<"donate_item">;
|
|
420
424
|
author: z.ZodObject<{
|
|
421
425
|
userId: z.ZodString;
|
|
426
|
+
username: z.ZodString;
|
|
422
427
|
displayName: z.ZodString;
|
|
423
428
|
avatarUrl: z.ZodOptional<z.ZodString>;
|
|
424
429
|
localName: z.ZodOptional<z.ZodString>;
|
package/dist/feed.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"feed.d.ts","sourceRoot":"","sources":["../src/feed.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAMhD;;;;GAIG;AACH,eAAO,MAAM,uBAAuB
|
|
1
|
+
{"version":3,"file":"feed.d.ts","sourceRoot":"","sources":["../src/feed.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAMhD;;;;GAIG;AACH,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBA4BlC,CAAC;AACH,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC;AAExE;;;;GAIG;AACH,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAiCnC,CAAC;AACH,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAC;AAE1E;;GAEG;AACH,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAyBjC,CAAC;AACH,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC;AAItE,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kCAKzB,CAAC;AACH,MAAM,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC;AAItD,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;iBAShC,CAAC;AACH,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAEpE,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAG7B,CAAC;AACH,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAG9D,OAAO,EAAE,cAAc,EAAE,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -19,14 +19,15 @@ export { type CommunityCommentWire, type CreateCommentBody, communityCommentWire
|
|
|
19
19
|
export { COMMUNITY_DISCOVER_SORT_VALUES, COMMUNITY_MEMBERSHIP_STATUS_VALUES, COMMUNITY_ROLE_VALUES, COMMUNITY_TYPE_VALUES, type CommunityDiscoverSort, type CommunityListQuery, type CommunityListResponse, type CommunityMembershipStatus, type CommunityMembersListResponse, type CommunityMemberWire, type CommunityRole, type CommunityType, type CommunityWire, type CreateCommunityBody, communityDiscoverSortSchema, communityListQuerySchema, communityListResponseSchema, communityMembershipStatusSchema, communityMembersListResponseSchema, communityMemberWireSchema, communityRoleSchema, communityTypeSchema, communityWireSchema, createCommunityBodySchema, type JoinCommunityResponse, joinCommunityResponseSchema, type UpdateCommunityBody, type UpdateMemberRoleBody, updateCommunityBodySchema, updateMemberRoleBodySchema, } from './community.js';
|
|
20
20
|
export { COMMENT_MAX_BODY_CHARS, COMMENTS_PAGE_SIZE, COMMUNITIES_PAGE_SIZE, COMMUNITY_DESCRIPTION_MAX_CHARS, COMMUNITY_MEMBERS_PAGE_SIZE, COMMUNITY_NAME_MAX_CHARS, COMMUNITY_NAME_MIN_CHARS, COMMUNITY_SLUG_MAX_CHARS, COMMUNITY_SLUG_MIN_CHARS, COMMUNITY_SLUG_PATTERN, EDIT_GRACE_WINDOW_MS, FEED_PAGE_SIZE, GROUP_MAX_MEMBERS, GROUP_NAME_MAX_CHARS, GROUP_NAME_MIN_CHARS, PEOPLE_PAGE_SIZE, POST_MAX_BODY_CHARS, POST_MAX_IMAGE_BYTES, POST_MAX_IMAGES, POST_MAX_VIDEO_BYTES, POST_MAX_VIDEO_SECONDS, POST_MAX_VIDEOS, PROFILE_MAX_BIO_CHARS, REPLIES_PRELOAD_COUNT, } from './constants.js';
|
|
21
21
|
export { type SetReactionBody, type SetReactionResponse, setReactionBodySchema, setReactionResponseSchema, type ToggleUpvoteResponse, toggleUpvoteResponseSchema, } from './engagement.js';
|
|
22
|
-
export {
|
|
22
|
+
export { CONTENT_KIND_VALUES, type ContentKind, contentKindSchema, FEED_SORT_VALUES, type FeedSort, feedSortSchema, PROFILE_PRIVACY_VALUES, type ProfilePrivacy, profilePrivacySchema, REACTION_TYPE_VALUES, REPORT_REASON_VALUES, REPORT_STATUS_VALUES, type ReactionType, type ReportReason, type ReportStatus, reactionTypeSchema, reportReasonSchema, reportStatusSchema, VISIBILITY_LEVEL_RANK, VISIBILITY_LEVEL_VALUES, type VisibilityLevel, visibilityLevelSchema, } from './enums.js';
|
|
23
23
|
export { type DonateItemFeedItem, donateItemFeedItemSchema, type FeedItem, type FeedQueryParams, type FeedResponse, feedItemSchema, feedQueryParamsSchema, feedResponseSchema, type LostFoundFeedItem, lostFoundFeedItemSchema, type VoiceBoxFeedItem, voiceBoxFeedItemSchema, } from './feed.js';
|
|
24
24
|
export { type AddGroupMembersBody, addGroupMembersBodySchema, type CommunityGroupWire, type CommunityGroupWithMembers, type CreateGroupBody, communityGroupWireSchema, communityGroupWithMembersSchema, createGroupBodySchema, type GroupMembersListResponse, type GroupMemberWire, type GroupRole, type GroupsListResponse, groupMembersListResponseSchema, groupMemberWireSchema, groupRoleSchema, groupsListResponseSchema, type UpdateGroupBody, updateGroupBodySchema, } from './group.js';
|
|
25
25
|
export { type PostImage, type PostVideo, postImageSchema, postVideoSchema, } from './media.js';
|
|
26
26
|
export { type CommunityPostWire, type CreatePostBody, communityPostWireSchema, createPostBodySchema, type PostAuthorSnapshot, postAuthorSnapshotSchema, type RepostedSource, repostedSourceSchema, type UpdatePostBody, updatePostBodySchema, } from './post.js';
|
|
27
|
-
export { type PeopleListItem, type PeopleListResponse, type PeopleQueryParams, type PublicProfileWire, peopleListItemSchema, peopleListResponseSchema, peopleQueryParamsSchema, publicProfileWireSchema, } from './profile.js';
|
|
27
|
+
export { type PeopleListItem, type PeopleListResponse, type PeopleQueryParams, type ProfileMutuals, type PublicProfileWire, peopleListItemSchema, peopleListResponseSchema, peopleQueryParamsSchema, profileMutualsSchema, publicProfileWireSchema, } from './profile.js';
|
|
28
28
|
export { type ReportContentBody, type ReportContentKind, type ReportRecordWire, type ReportSubmissionResponse, type ReportUserBody, reportContentBodySchema, reportContentKindSchema, reportRecordWireSchema, reportSubmissionResponseSchema, reportUserBodySchema, } from './report.js';
|
|
29
29
|
export { type CreateRepostBody, type CreateRepostResponse, createRepostBodySchema, createRepostResponseSchema, } from './repost.js';
|
|
30
30
|
export { type BlockedUsersListResponse, type BlockedUserWire, blockedUsersListResponseSchema, blockedUserWireSchema, COMMUNITY_SETTINGS_DEFAULTS, type CommunitySettingsWire, communitySettingsWireSchema, type UpdateCommunitySettingsBody, updateCommunitySettingsBodySchema, } from './settings.js';
|
|
31
|
-
export { type
|
|
31
|
+
export { type ToggleFollowResponse, toggleFollowResponseSchema, type ViewerSocialState, viewerSocialStateSchema, } from './social.js';
|
|
32
|
+
export { type CurrentUsernameState, currentUsernameStateSchema, type UpdateUsernameBody, type UpdateUsernameResponse, type Username, type UsernameAvailabilityResponse, type UsernameUnavailableReason, updateUsernameBodySchema, updateUsernameResponseSchema, usernameAvailabilityResponseSchema, USERNAME_MAX_LENGTH, USERNAME_MIN_LENGTH, USERNAME_PATTERN, USERNAME_UNAVAILABLE_REASONS, usernameSchema, usernameUnavailableReasonSchema, } from './username.js';
|
|
32
33
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAGH,OAAO,EACL,KAAK,mBAAmB,EACxB,yBAAyB,GAC1B,MAAM,WAAW,CAAC;AAGnB,OAAO,EACL,KAAK,oBAAoB,EACzB,KAAK,iBAAiB,EACtB,0BAA0B,EAC1B,uBAAuB,EACvB,KAAK,iBAAiB,EACtB,uBAAuB,GACxB,MAAM,cAAc,CAAC;AAGtB,OAAO,EACL,8BAA8B,EAC9B,kCAAkC,EAClC,qBAAqB,EACrB,qBAAqB,EACrB,KAAK,qBAAqB,EAC1B,KAAK,kBAAkB,EACvB,KAAK,qBAAqB,EAC1B,KAAK,yBAAyB,EAC9B,KAAK,4BAA4B,EACjC,KAAK,mBAAmB,EACxB,KAAK,aAAa,EAClB,KAAK,aAAa,EAClB,KAAK,aAAa,EAClB,KAAK,mBAAmB,EACxB,2BAA2B,EAC3B,wBAAwB,EACxB,2BAA2B,EAC3B,+BAA+B,EAC/B,kCAAkC,EAClC,yBAAyB,EACzB,mBAAmB,EACnB,mBAAmB,EACnB,mBAAmB,EACnB,yBAAyB,EACzB,KAAK,qBAAqB,EAC1B,2BAA2B,EAC3B,KAAK,mBAAmB,EACxB,KAAK,oBAAoB,EACzB,yBAAyB,EACzB,0BAA0B,GAC3B,MAAM,gBAAgB,CAAC;AAGxB,OAAO,EACL,sBAAsB,EACtB,kBAAkB,EAClB,qBAAqB,EACrB,+BAA+B,EAC/B,2BAA2B,EAC3B,wBAAwB,EACxB,wBAAwB,EACxB,wBAAwB,EACxB,wBAAwB,EACxB,sBAAsB,EACtB,oBAAoB,EACpB,cAAc,EACd,iBAAiB,EACjB,oBAAoB,EACpB,oBAAoB,EACpB,gBAAgB,EAChB,mBAAmB,EACnB,oBAAoB,EACpB,eAAe,EACf,oBAAoB,EACpB,sBAAsB,EACtB,eAAe,EACf,qBAAqB,EACrB,qBAAqB,GACtB,MAAM,gBAAgB,CAAC;AAGxB,OAAO,EACL,KAAK,eAAe,EACpB,KAAK,mBAAmB,EACxB,qBAAqB,EACrB,yBAAyB,EACzB,KAAK,oBAAoB,EACzB,0BAA0B,GAC3B,MAAM,iBAAiB,CAAC;AAGzB,OAAO,EACL,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -25,7 +25,7 @@ export { COMMENT_MAX_BODY_CHARS, COMMENTS_PAGE_SIZE, COMMUNITIES_PAGE_SIZE, COMM
|
|
|
25
25
|
// ─── Engagement (upvote + reactions) ───────────────────────────────────────
|
|
26
26
|
export { setReactionBodySchema, setReactionResponseSchema, toggleUpvoteResponseSchema, } from './engagement.js';
|
|
27
27
|
// ─── Enums ─────────────────────────────────────────────────────────────────
|
|
28
|
-
export {
|
|
28
|
+
export { CONTENT_KIND_VALUES, contentKindSchema, FEED_SORT_VALUES, feedSortSchema, PROFILE_PRIVACY_VALUES, profilePrivacySchema, REACTION_TYPE_VALUES, REPORT_REASON_VALUES, REPORT_STATUS_VALUES, reactionTypeSchema, reportReasonSchema, reportStatusSchema, VISIBILITY_LEVEL_RANK, VISIBILITY_LEVEL_VALUES, visibilityLevelSchema, } from './enums.js';
|
|
29
29
|
// ─── Feed (polymorphic union) ──────────────────────────────────────────────
|
|
30
30
|
export { donateItemFeedItemSchema, feedItemSchema, feedQueryParamsSchema, feedResponseSchema, lostFoundFeedItemSchema, voiceBoxFeedItemSchema, } from './feed.js';
|
|
31
31
|
// ─── Groups ────────────────────────────────────────────────────────────────
|
|
@@ -35,13 +35,15 @@ export { postImageSchema, postVideoSchema, } from './media.js';
|
|
|
35
35
|
// ─── Post ──────────────────────────────────────────────────────────────────
|
|
36
36
|
export { communityPostWireSchema, createPostBodySchema, postAuthorSnapshotSchema, repostedSourceSchema, updatePostBodySchema, } from './post.js';
|
|
37
37
|
// ─── Profile + People list ─────────────────────────────────────────────────
|
|
38
|
-
export { peopleListItemSchema, peopleListResponseSchema, peopleQueryParamsSchema, publicProfileWireSchema, } from './profile.js';
|
|
38
|
+
export { peopleListItemSchema, peopleListResponseSchema, peopleQueryParamsSchema, profileMutualsSchema, publicProfileWireSchema, } from './profile.js';
|
|
39
39
|
// ─── Reports (moderation) ──────────────────────────────────────────────────
|
|
40
40
|
export { reportContentBodySchema, reportContentKindSchema, reportRecordWireSchema, reportSubmissionResponseSchema, reportUserBodySchema, } from './report.js';
|
|
41
41
|
// ─── Repost (quote / amplify) ──────────────────────────────────────────────
|
|
42
42
|
export { createRepostBodySchema, createRepostResponseSchema, } from './repost.js';
|
|
43
43
|
// ─── Settings ──────────────────────────────────────────────────────────────
|
|
44
44
|
export { blockedUsersListResponseSchema, blockedUserWireSchema, COMMUNITY_SETTINGS_DEFAULTS, communitySettingsWireSchema, updateCommunitySettingsBodySchema, } from './settings.js';
|
|
45
|
-
// ─── Social (follow
|
|
46
|
-
export {
|
|
45
|
+
// ─── Social (follow) ───────────────────────────────────────────────────────
|
|
46
|
+
export { toggleFollowResponseSchema, viewerSocialStateSchema, } from './social.js';
|
|
47
|
+
// ─── Username (URL handle + change / availability) ────────────────────────
|
|
48
|
+
export { currentUsernameStateSchema, updateUsernameBodySchema, updateUsernameResponseSchema, usernameAvailabilityResponseSchema, USERNAME_MAX_LENGTH, USERNAME_MIN_LENGTH, USERNAME_PATTERN, USERNAME_UNAVAILABLE_REASONS, usernameSchema, usernameUnavailableReasonSchema, } from './username.js';
|
|
47
49
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,8EAA8E;AAC9E,OAAO,EAEL,yBAAyB,GAC1B,MAAM,WAAW,CAAC;AAEnB,8EAA8E;AAC9E,OAAO,EAGL,0BAA0B,EAC1B,uBAAuB,EAEvB,uBAAuB,GACxB,MAAM,cAAc,CAAC;AAEtB,8EAA8E;AAC9E,OAAO,EACL,8BAA8B,EAC9B,kCAAkC,EAClC,qBAAqB,EACrB,qBAAqB,EAWrB,2BAA2B,EAC3B,wBAAwB,EACxB,2BAA2B,EAC3B,+BAA+B,EAC/B,kCAAkC,EAClC,yBAAyB,EACzB,mBAAmB,EACnB,mBAAmB,EACnB,mBAAmB,EACnB,yBAAyB,EAEzB,2BAA2B,EAG3B,yBAAyB,EACzB,0BAA0B,GAC3B,MAAM,gBAAgB,CAAC;AAExB,8EAA8E;AAC9E,OAAO,EACL,sBAAsB,EACtB,kBAAkB,EAClB,qBAAqB,EACrB,+BAA+B,EAC/B,2BAA2B,EAC3B,wBAAwB,EACxB,wBAAwB,EACxB,wBAAwB,EACxB,wBAAwB,EACxB,sBAAsB,EACtB,oBAAoB,EACpB,cAAc,EACd,iBAAiB,EACjB,oBAAoB,EACpB,oBAAoB,EACpB,gBAAgB,EAChB,mBAAmB,EACnB,oBAAoB,EACpB,eAAe,EACf,oBAAoB,EACpB,sBAAsB,EACtB,eAAe,EACf,qBAAqB,EACrB,qBAAqB,GACtB,MAAM,gBAAgB,CAAC;AAExB,8EAA8E;AAC9E,OAAO,EAGL,qBAAqB,EACrB,yBAAyB,EAEzB,0BAA0B,GAC3B,MAAM,iBAAiB,CAAC;AAEzB,8EAA8E;AAC9E,OAAO,EACL,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * community-schema — Shared Zod schemas + TypeScript types for the\n * Jansathi hyperlocal community feature (feed, posts, engagement,\n * social graph, groups, settings).\n *\n * Single source of truth consumed by reform-backend and every product\n * frontend. The schemas mirror MongoDB / Mongoose document shapes\n * 1:1 so the same Zod validation runs at the controller boundary on\n * the backend and in the form handlers on the client.\n *\n * Cascade-upward visibility semantics: a viewer whose feed level is L\n * sees posts at L and every BROADER level matching their area lineage.\n * See `./enums.ts#VISIBILITY_LEVEL_VALUES` for the level rank table.\n *\n * @module community-schema\n */\n\n// ─── Area lineage snapshot ─────────────────────────────────────────────────\nexport {\n type AreaLineageSnapshot,\n areaLineageSnapshotSchema,\n} from './area.js';\n\n// ─── Comment ───────────────────────────────────────────────────────────────\nexport {\n type CommunityCommentWire,\n type CreateCommentBody,\n communityCommentWireSchema,\n createCommentBodySchema,\n type UpdateCommentBody,\n updateCommentBodySchema,\n} from './comment.js';\n\n// ─── Communities ───────────────────────────────────────────────────────────\nexport {\n COMMUNITY_DISCOVER_SORT_VALUES,\n COMMUNITY_MEMBERSHIP_STATUS_VALUES,\n COMMUNITY_ROLE_VALUES,\n COMMUNITY_TYPE_VALUES,\n type CommunityDiscoverSort,\n type CommunityListQuery,\n type CommunityListResponse,\n type CommunityMembershipStatus,\n type CommunityMembersListResponse,\n type CommunityMemberWire,\n type CommunityRole,\n type CommunityType,\n type CommunityWire,\n type CreateCommunityBody,\n communityDiscoverSortSchema,\n communityListQuerySchema,\n communityListResponseSchema,\n communityMembershipStatusSchema,\n communityMembersListResponseSchema,\n communityMemberWireSchema,\n communityRoleSchema,\n communityTypeSchema,\n communityWireSchema,\n createCommunityBodySchema,\n type JoinCommunityResponse,\n joinCommunityResponseSchema,\n type UpdateCommunityBody,\n type UpdateMemberRoleBody,\n updateCommunityBodySchema,\n updateMemberRoleBodySchema,\n} from './community.js';\n\n// ─── Constants ─────────────────────────────────────────────────────────────\nexport {\n COMMENT_MAX_BODY_CHARS,\n COMMENTS_PAGE_SIZE,\n COMMUNITIES_PAGE_SIZE,\n COMMUNITY_DESCRIPTION_MAX_CHARS,\n COMMUNITY_MEMBERS_PAGE_SIZE,\n COMMUNITY_NAME_MAX_CHARS,\n COMMUNITY_NAME_MIN_CHARS,\n COMMUNITY_SLUG_MAX_CHARS,\n COMMUNITY_SLUG_MIN_CHARS,\n COMMUNITY_SLUG_PATTERN,\n EDIT_GRACE_WINDOW_MS,\n FEED_PAGE_SIZE,\n GROUP_MAX_MEMBERS,\n GROUP_NAME_MAX_CHARS,\n GROUP_NAME_MIN_CHARS,\n PEOPLE_PAGE_SIZE,\n POST_MAX_BODY_CHARS,\n POST_MAX_IMAGE_BYTES,\n POST_MAX_IMAGES,\n POST_MAX_VIDEO_BYTES,\n POST_MAX_VIDEO_SECONDS,\n POST_MAX_VIDEOS,\n PROFILE_MAX_BIO_CHARS,\n REPLIES_PRELOAD_COUNT,\n} from './constants.js';\n\n// ─── Engagement (upvote + reactions) ───────────────────────────────────────\nexport {\n type SetReactionBody,\n type SetReactionResponse,\n setReactionBodySchema,\n setReactionResponseSchema,\n type ToggleUpvoteResponse,\n toggleUpvoteResponseSchema,\n} from './engagement.js';\n\n// ─── Enums ─────────────────────────────────────────────────────────────────\nexport {\n CONTENT_KIND_VALUES,\n type ContentKind,\n contentKindSchema,\n FEED_SORT_VALUES,\n type FeedSort,\n feedSortSchema,\n PROFILE_PRIVACY_VALUES,\n type ProfilePrivacy,\n profilePrivacySchema,\n REACTION_TYPE_VALUES,\n REPORT_REASON_VALUES,\n REPORT_STATUS_VALUES,\n type ReactionType,\n type ReportReason,\n type ReportStatus,\n reactionTypeSchema,\n reportReasonSchema,\n reportStatusSchema,\n VISIBILITY_LEVEL_RANK,\n VISIBILITY_LEVEL_VALUES,\n type VisibilityLevel,\n visibilityLevelSchema,\n} from './enums.js';\n\n// ─── Feed (polymorphic union) ──────────────────────────────────────────────\nexport {\n type DonateItemFeedItem,\n donateItemFeedItemSchema,\n type FeedItem,\n type FeedQueryParams,\n type FeedResponse,\n feedItemSchema,\n feedQueryParamsSchema,\n feedResponseSchema,\n type LostFoundFeedItem,\n lostFoundFeedItemSchema,\n type VoiceBoxFeedItem,\n voiceBoxFeedItemSchema,\n} from './feed.js';\n\n// ─── Groups ────────────────────────────────────────────────────────────────\nexport {\n type AddGroupMembersBody,\n addGroupMembersBodySchema,\n type CommunityGroupWire,\n type CommunityGroupWithMembers,\n type CreateGroupBody,\n communityGroupWireSchema,\n communityGroupWithMembersSchema,\n createGroupBodySchema,\n type GroupMembersListResponse,\n type GroupMemberWire,\n type GroupRole,\n type GroupsListResponse,\n groupMembersListResponseSchema,\n groupMemberWireSchema,\n groupRoleSchema,\n groupsListResponseSchema,\n type UpdateGroupBody,\n updateGroupBodySchema,\n} from './group.js';\n\n// ─── Media ─────────────────────────────────────────────────────────────────\nexport {\n type PostImage,\n type PostVideo,\n postImageSchema,\n postVideoSchema,\n} from './media.js';\n\n// ─── Post ──────────────────────────────────────────────────────────────────\nexport {\n type CommunityPostWire,\n type CreatePostBody,\n communityPostWireSchema,\n createPostBodySchema,\n type PostAuthorSnapshot,\n postAuthorSnapshotSchema,\n type RepostedSource,\n repostedSourceSchema,\n type UpdatePostBody,\n updatePostBodySchema,\n} from './post.js';\n// ─── Profile + People list ─────────────────────────────────────────────────\nexport {\n type PeopleListItem,\n type PeopleListResponse,\n type PeopleQueryParams,\n type ProfileMutuals,\n type PublicProfileWire,\n peopleListItemSchema,\n peopleListResponseSchema,\n peopleQueryParamsSchema,\n profileMutualsSchema,\n publicProfileWireSchema,\n} from './profile.js';\n// ─── Reports (moderation) ──────────────────────────────────────────────────\nexport {\n type ReportContentBody,\n type ReportContentKind,\n type ReportRecordWire,\n type ReportSubmissionResponse,\n type ReportUserBody,\n reportContentBodySchema,\n reportContentKindSchema,\n reportRecordWireSchema,\n reportSubmissionResponseSchema,\n reportUserBodySchema,\n} from './report.js';\n// ─── Repost (quote / amplify) ──────────────────────────────────────────────\nexport {\n type CreateRepostBody,\n type CreateRepostResponse,\n createRepostBodySchema,\n createRepostResponseSchema,\n} from './repost.js';\n\n// ─── Settings ──────────────────────────────────────────────────────────────\nexport {\n type BlockedUsersListResponse,\n type BlockedUserWire,\n blockedUsersListResponseSchema,\n blockedUserWireSchema,\n COMMUNITY_SETTINGS_DEFAULTS,\n type CommunitySettingsWire,\n communitySettingsWireSchema,\n type UpdateCommunitySettingsBody,\n updateCommunitySettingsBodySchema,\n} from './settings.js';\n\n// ─── Social (follow) ───────────────────────────────────────────────────────\nexport {\n type ToggleFollowResponse,\n toggleFollowResponseSchema,\n type ViewerSocialState,\n viewerSocialStateSchema,\n} from './social.js';\n\n// ─── Username (URL handle + change / availability) ────────────────────────\nexport {\n type CurrentUsernameState,\n currentUsernameStateSchema,\n type UpdateUsernameBody,\n type UpdateUsernameResponse,\n type Username,\n type UsernameAvailabilityResponse,\n type UsernameUnavailableReason,\n updateUsernameBodySchema,\n updateUsernameResponseSchema,\n usernameAvailabilityResponseSchema,\n USERNAME_MAX_LENGTH,\n USERNAME_MIN_LENGTH,\n USERNAME_PATTERN,\n USERNAME_UNAVAILABLE_REASONS,\n usernameSchema,\n usernameUnavailableReasonSchema,\n} from './username.js';\n"]}
|
package/dist/post.d.ts
CHANGED
|
@@ -10,17 +10,25 @@
|
|
|
10
10
|
*/
|
|
11
11
|
import { z } from 'zod';
|
|
12
12
|
/**
|
|
13
|
-
* The author's display info
|
|
14
|
-
* `displayName` / `avatarUrl` / `localName` here avoids a $lookup
|
|
15
|
-
* against the User collection on every feed read — feed scans 20–40
|
|
16
|
-
* posts per page and population would be a hot path.
|
|
13
|
+
* The author's display info attached to every feed row.
|
|
17
14
|
*
|
|
18
|
-
*
|
|
19
|
-
*
|
|
20
|
-
*
|
|
15
|
+
* Two classes of fields here:
|
|
16
|
+
*
|
|
17
|
+
* - **Live (refreshed at read time)**: `username`, `displayName`,
|
|
18
|
+
* `avatarUrl`. The projector batch-joins these against the User
|
|
19
|
+
* collection per page, so a name or avatar change instantly
|
|
20
|
+
* propagates to old posts and the byline link always targets the
|
|
21
|
+
* CURRENT username (no stale `/oldhandle` 404 after a rename).
|
|
22
|
+
*
|
|
23
|
+
* - **Snapshotted at write time**: `localName`. This is "where the
|
|
24
|
+
* author was when posting" — a deliberate snapshot, not a stale
|
|
25
|
+
* read of their current location.
|
|
26
|
+
*
|
|
27
|
+
* @module community-schema/post (postAuthorSnapshotSchema)
|
|
21
28
|
*/
|
|
22
29
|
export declare const postAuthorSnapshotSchema: z.ZodObject<{
|
|
23
30
|
userId: z.ZodString;
|
|
31
|
+
username: z.ZodString;
|
|
24
32
|
displayName: z.ZodString;
|
|
25
33
|
avatarUrl: z.ZodOptional<z.ZodString>;
|
|
26
34
|
localName: z.ZodOptional<z.ZodString>;
|
|
@@ -51,6 +59,7 @@ export declare const repostedSourceSchema: z.ZodObject<{
|
|
|
51
59
|
_id: z.ZodString;
|
|
52
60
|
author: z.ZodObject<{
|
|
53
61
|
userId: z.ZodString;
|
|
62
|
+
username: z.ZodString;
|
|
54
63
|
displayName: z.ZodString;
|
|
55
64
|
avatarUrl: z.ZodOptional<z.ZodString>;
|
|
56
65
|
localName: z.ZodOptional<z.ZodString>;
|
|
@@ -73,6 +82,7 @@ export declare const communityPostWireSchema: z.ZodObject<{
|
|
|
73
82
|
contentKind: z.ZodLiteral<"post">;
|
|
74
83
|
author: z.ZodObject<{
|
|
75
84
|
userId: z.ZodString;
|
|
85
|
+
username: z.ZodString;
|
|
76
86
|
displayName: z.ZodString;
|
|
77
87
|
avatarUrl: z.ZodOptional<z.ZodString>;
|
|
78
88
|
localName: z.ZodOptional<z.ZodString>;
|
|
@@ -101,10 +111,6 @@ export declare const communityPostWireSchema: z.ZodObject<{
|
|
|
101
111
|
localId: z.ZodOptional<z.ZodString>;
|
|
102
112
|
localName: z.ZodOptional<z.ZodString>;
|
|
103
113
|
}, z.core.$strip>;
|
|
104
|
-
audience: z.ZodEnum<{
|
|
105
|
-
public: "public";
|
|
106
|
-
connections: "connections";
|
|
107
|
-
}>;
|
|
108
114
|
communityId: z.ZodOptional<z.ZodString>;
|
|
109
115
|
upvoteCount: z.ZodNumber;
|
|
110
116
|
commentCount: z.ZodNumber;
|
|
@@ -120,6 +126,7 @@ export declare const communityPostWireSchema: z.ZodObject<{
|
|
|
120
126
|
_id: z.ZodString;
|
|
121
127
|
author: z.ZodObject<{
|
|
122
128
|
userId: z.ZodString;
|
|
129
|
+
username: z.ZodString;
|
|
123
130
|
displayName: z.ZodString;
|
|
124
131
|
avatarUrl: z.ZodOptional<z.ZodString>;
|
|
125
132
|
localName: z.ZodOptional<z.ZodString>;
|
|
@@ -165,10 +172,6 @@ export declare const createPostBodySchema: z.ZodObject<{
|
|
|
165
172
|
bytes: z.ZodNumber;
|
|
166
173
|
duration: z.ZodNumber;
|
|
167
174
|
}, z.core.$strip>>>;
|
|
168
|
-
audience: z.ZodDefault<z.ZodEnum<{
|
|
169
|
-
public: "public";
|
|
170
|
-
connections: "connections";
|
|
171
|
-
}>>;
|
|
172
175
|
communityId: z.ZodOptional<z.ZodString>;
|
|
173
176
|
}, z.core.$strip>;
|
|
174
177
|
export type CreatePostBody = z.infer<typeof createPostBodySchema>;
|
package/dist/post.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"post.d.ts","sourceRoot":"","sources":["../src/post.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"post.d.ts","sourceRoot":"","sources":["../src/post.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AASxB;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,wBAAwB;;;;;;iBAcnC,CAAC;AACH,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAC;AAI1E;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;iBAuB/B,CAAC;AACH,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAIlE;;;;;GAKG;AACH,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAyDlC,CAAC;AACH,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC;AAIxE;;;;;GAKG;AACH,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;iBAO/B,CAAC;AACH,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAElE;;;;GAIG;AACH,eAAO,MAAM,oBAAoB;;iBAE/B,CAAC;AACH,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC"}
|
package/dist/post.js
CHANGED
|
@@ -11,28 +11,39 @@
|
|
|
11
11
|
import { z } from 'zod';
|
|
12
12
|
import { areaLineageSnapshotSchema } from './area.js';
|
|
13
13
|
import { POST_MAX_BODY_CHARS, POST_MAX_IMAGES, POST_MAX_VIDEOS } from './constants.js';
|
|
14
|
-
import { contentKindSchema
|
|
14
|
+
import { contentKindSchema } from './enums.js';
|
|
15
15
|
import { postImageSchema, postVideoSchema } from './media.js';
|
|
16
|
+
import { usernameSchema } from './username.js';
|
|
16
17
|
// ─── Author snapshot (denormalised on every post) ──────────────────────────
|
|
17
18
|
/**
|
|
18
|
-
* The author's display info
|
|
19
|
-
* `displayName` / `avatarUrl` / `localName` here avoids a $lookup
|
|
20
|
-
* against the User collection on every feed read — feed scans 20–40
|
|
21
|
-
* posts per page and population would be a hot path.
|
|
19
|
+
* The author's display info attached to every feed row.
|
|
22
20
|
*
|
|
23
|
-
*
|
|
24
|
-
*
|
|
25
|
-
*
|
|
21
|
+
* Two classes of fields here:
|
|
22
|
+
*
|
|
23
|
+
* - **Live (refreshed at read time)**: `username`, `displayName`,
|
|
24
|
+
* `avatarUrl`. The projector batch-joins these against the User
|
|
25
|
+
* collection per page, so a name or avatar change instantly
|
|
26
|
+
* propagates to old posts and the byline link always targets the
|
|
27
|
+
* CURRENT username (no stale `/oldhandle` 404 after a rename).
|
|
28
|
+
*
|
|
29
|
+
* - **Snapshotted at write time**: `localName`. This is "where the
|
|
30
|
+
* author was when posting" — a deliberate snapshot, not a stale
|
|
31
|
+
* read of their current location.
|
|
32
|
+
*
|
|
33
|
+
* @module community-schema/post (postAuthorSnapshotSchema)
|
|
26
34
|
*/
|
|
27
35
|
export const postAuthorSnapshotSchema = z.object({
|
|
28
36
|
userId: z.string(),
|
|
37
|
+
/** Public URL handle. Live-joined from User at read time so the
|
|
38
|
+
* byline links to `/<currentUsername>` even after a rename. */
|
|
39
|
+
username: usernameSchema,
|
|
29
40
|
displayName: z.string(),
|
|
30
41
|
avatarUrl: z.string().url().optional(),
|
|
31
42
|
/**
|
|
32
43
|
* The author's "local" area label at post time, e.g. "Rohini Sector 15".
|
|
33
44
|
* Powers the byline "<DisplayName> · <localName> · <relativeTime>".
|
|
34
|
-
*
|
|
35
|
-
*
|
|
45
|
+
* Snapshotted at write time — does NOT track the author's current
|
|
46
|
+
* location.
|
|
36
47
|
*/
|
|
37
48
|
localName: z.string().optional(),
|
|
38
49
|
});
|
|
@@ -91,14 +102,10 @@ export const communityPostWireSchema = z.object({
|
|
|
91
102
|
text: z.string().max(POST_MAX_BODY_CHARS),
|
|
92
103
|
images: z.array(postImageSchema).max(POST_MAX_IMAGES),
|
|
93
104
|
videos: z.array(postVideoSchema).max(POST_MAX_VIDEOS),
|
|
94
|
-
// Authorship area
|
|
105
|
+
// Authorship area
|
|
95
106
|
/** Snapshot of where the author was at write time. Drives the
|
|
96
107
|
* area-proximity cascade and ranking in feed.service. */
|
|
97
108
|
areaLineage: areaLineageSnapshotSchema,
|
|
98
|
-
/** Per-post audience override. Defaults to `public` on creation when
|
|
99
|
-
* the client omits it. See `postAudienceSchema` in enums for the
|
|
100
|
-
* full interaction with `ProfilePrivacy`. */
|
|
101
|
-
audience: postAudienceSchema,
|
|
102
109
|
/** When set, the post is scoped to a topical community and is NOT
|
|
103
110
|
* surfaced via the geo cascade. The community feed adds an explicit
|
|
104
111
|
* `communityId` filter to its read queries. Posts authored from the
|
|
@@ -150,11 +157,6 @@ export const createPostBodySchema = z.object({
|
|
|
150
157
|
text: z.string().min(1).max(POST_MAX_BODY_CHARS),
|
|
151
158
|
images: z.array(postImageSchema).max(POST_MAX_IMAGES).optional(),
|
|
152
159
|
videos: z.array(postVideoSchema).max(POST_MAX_VIDEOS).optional(),
|
|
153
|
-
/** Per-post audience selector chosen by the composer's privacy
|
|
154
|
-
* pill. Optional; defaults to `public` on the server when omitted
|
|
155
|
-
* (the schema applies the default so older clients keep working).
|
|
156
|
-
* See `postAudienceSchema` for the public/connections semantics. */
|
|
157
|
-
audience: postAudienceSchema.default('public'),
|
|
158
160
|
/** When set, the post is scoped to a topical community. The author
|
|
159
161
|
* must be an active member; non-members get a 403. */
|
|
160
162
|
communityId: z.string().optional(),
|