convex-feedback 0.1.4 → 0.2.0-beta.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 (79) hide show
  1. package/README.md +87 -27
  2. package/dist/.tsbuildinfo +1 -1
  3. package/dist/client/api.d.ts +80 -1
  4. package/dist/client/api.d.ts.map +1 -1
  5. package/dist/client/config.d.ts +1 -1
  6. package/dist/client/index.d.ts +9 -5
  7. package/dist/client/index.d.ts.map +1 -1
  8. package/dist/client/index.js +261 -8
  9. package/dist/client/index.js.map +1 -1
  10. package/dist/component/_generated/api.d.ts +8 -0
  11. package/dist/component/_generated/api.d.ts.map +1 -1
  12. package/dist/component/_generated/api.js.map +1 -1
  13. package/dist/component/_generated/component.d.ts +295 -5
  14. package/dist/component/_generated/component.d.ts.map +1 -1
  15. package/dist/component/admin.d.ts +130 -0
  16. package/dist/component/admin.d.ts.map +1 -0
  17. package/dist/component/admin.js +125 -0
  18. package/dist/component/admin.js.map +1 -0
  19. package/dist/component/comments.d.ts +7 -5
  20. package/dist/component/comments.d.ts.map +1 -1
  21. package/dist/component/comments.js +4 -3
  22. package/dist/component/comments.js.map +1 -1
  23. package/dist/component/crons.d.ts +3 -0
  24. package/dist/component/crons.d.ts.map +1 -0
  25. package/dist/component/crons.js +8 -0
  26. package/dist/component/crons.js.map +1 -0
  27. package/dist/component/entries.d.ts +29 -16
  28. package/dist/component/entries.d.ts.map +1 -1
  29. package/dist/component/entries.js +136 -12
  30. package/dist/component/entries.js.map +1 -1
  31. package/dist/component/helpers.d.ts +3 -1
  32. package/dist/component/helpers.d.ts.map +1 -1
  33. package/dist/component/helpers.js +28 -0
  34. package/dist/component/helpers.js.map +1 -1
  35. package/dist/component/migrations.d.ts +11 -0
  36. package/dist/component/migrations.d.ts.map +1 -0
  37. package/dist/component/migrations.js +35 -0
  38. package/dist/component/migrations.js.map +1 -0
  39. package/dist/component/model.d.ts +144 -24
  40. package/dist/component/model.d.ts.map +1 -1
  41. package/dist/component/model.js +34 -1
  42. package/dist/component/model.js.map +1 -1
  43. package/dist/component/roadmap.d.ts +166 -0
  44. package/dist/component/roadmap.d.ts.map +1 -0
  45. package/dist/component/roadmap.js +534 -0
  46. package/dist/component/roadmap.js.map +1 -0
  47. package/dist/component/schema.d.ts +67 -5
  48. package/dist/component/schema.d.ts.map +1 -1
  49. package/dist/component/schema.js +57 -2
  50. package/dist/component/schema.js.map +1 -1
  51. package/dist/component/tags.d.ts +58 -0
  52. package/dist/component/tags.d.ts.map +1 -0
  53. package/dist/component/tags.js +216 -0
  54. package/dist/component/tags.js.map +1 -0
  55. package/dist/react/index.d.ts +173 -12
  56. package/dist/react/index.d.ts.map +1 -1
  57. package/dist/react/index.js +78 -1
  58. package/dist/react/index.js.map +1 -1
  59. package/dist/test.d.ts +67 -5
  60. package/dist/test.d.ts.map +1 -1
  61. package/package.json +6 -2
  62. package/src/client/README.md +1 -1
  63. package/src/client/api.ts +183 -0
  64. package/src/client/config.ts +1 -1
  65. package/src/client/index.ts +340 -13
  66. package/src/component/README.md +3 -1
  67. package/src/component/_generated/api.ts +8 -0
  68. package/src/component/_generated/component.ts +373 -9
  69. package/src/component/admin.ts +180 -0
  70. package/src/component/comments.ts +5 -2
  71. package/src/component/crons.ts +16 -0
  72. package/src/component/entries.ts +175 -11
  73. package/src/component/helpers.ts +44 -1
  74. package/src/component/migrations.ts +44 -0
  75. package/src/component/model.ts +79 -4
  76. package/src/component/roadmap.ts +627 -0
  77. package/src/component/schema.ts +61 -1
  78. package/src/react/README.md +2 -2
  79. package/src/react/index.ts +152 -4
@@ -1,15 +1,50 @@
1
1
  import type { Infer } from "convex/values";
2
2
  export declare const entryKindValidator: import("convex/values").VUnion<"feedback" | "feature_request" | "bug_report", [import("convex/values").VLiteral<"feedback", "required">, import("convex/values").VLiteral<"feature_request", "required">, import("convex/values").VLiteral<"bug_report", "required">], "required", never>;
3
3
  export declare const entryStatusValidator: import("convex/values").VUnion<"open" | "under_review" | "planned" | "in_progress" | "completed" | "closed", [import("convex/values").VLiteral<"open", "required">, import("convex/values").VLiteral<"under_review", "required">, import("convex/values").VLiteral<"planned", "required">, import("convex/values").VLiteral<"in_progress", "required">, import("convex/values").VLiteral<"completed", "required">, import("convex/values").VLiteral<"closed", "required">], "required", never>;
4
+ export declare const entryStatusFilterValidator: import("convex/values").VUnion<"open" | "closed", [import("convex/values").VLiteral<"open", "required">, import("convex/values").VLiteral<"closed", "required">], "required", never>;
4
5
  export declare const entrySortValidator: import("convex/values").VUnion<"top" | "newest", [import("convex/values").VLiteral<"top", "required">, import("convex/values").VLiteral<"newest", "required">], "required", never>;
6
+ export declare const entryPriorityValidator: import("convex/values").VUnion<"low" | "medium" | "high", [import("convex/values").VLiteral<"low", "required">, import("convex/values").VLiteral<"medium", "required">, import("convex/values").VLiteral<"high", "required">], "required", never>;
7
+ export declare const roadmapStatusValidator: import("convex/values").VUnion<"planned" | "in_progress" | "shipped", [import("convex/values").VLiteral<"planned", "required">, import("convex/values").VLiteral<"in_progress", "required">, import("convex/values").VLiteral<"shipped", "required">], "required", never>;
5
8
  export declare const commentSortValidator: import("convex/values").VUnion<"top" | "newest" | "oldest", [import("convex/values").VLiteral<"top", "required">, import("convex/values").VLiteral<"newest", "required">, import("convex/values").VLiteral<"oldest", "required">], "required", never>;
6
9
  export declare const actorValidator: import("convex/values").VObject<{
10
+ isAdmin?: boolean | undefined;
11
+ isModerator?: boolean | undefined;
7
12
  id: string;
8
- isModerator: boolean;
9
13
  }, {
10
14
  id: import("convex/values").VString<string, "required">;
11
- isModerator: import("convex/values").VBoolean<boolean, "required">;
12
- }, "required", "id" | "isModerator">;
15
+ isAdmin: import("convex/values").VBoolean<boolean | undefined, "optional">;
16
+ /** @deprecated Use `isAdmin`. */
17
+ isModerator: import("convex/values").VBoolean<boolean | undefined, "optional">;
18
+ }, "required", "id" | "isAdmin" | "isModerator">;
19
+ /**
20
+ * Resolves the current admin flag while keeping the pre-`isAdmin` actor shape
21
+ * working for existing hosts. The new field wins when both are present.
22
+ */
23
+ export declare function actorIsAdmin(actor: {
24
+ isAdmin?: boolean;
25
+ isModerator?: boolean;
26
+ }): boolean;
27
+ export declare const roadmapItemValidator: import("convex/values").VObject<{
28
+ description?: string | undefined;
29
+ id: string;
30
+ creationTime: number;
31
+ title: string;
32
+ status: "planned" | "in_progress" | "shipped";
33
+ position: number;
34
+ createdAt: number;
35
+ updatedAt: number;
36
+ feedbackCount: number;
37
+ }, {
38
+ id: import("convex/values").VString<string, "required">;
39
+ creationTime: import("convex/values").VFloat64<number, "required">;
40
+ title: import("convex/values").VString<string, "required">;
41
+ description: import("convex/values").VString<string | undefined, "optional">;
42
+ status: import("convex/values").VUnion<"planned" | "in_progress" | "shipped", [import("convex/values").VLiteral<"planned", "required">, import("convex/values").VLiteral<"in_progress", "required">, import("convex/values").VLiteral<"shipped", "required">], "required", never>;
43
+ position: import("convex/values").VFloat64<number, "required">;
44
+ createdAt: import("convex/values").VFloat64<number, "required">;
45
+ updatedAt: import("convex/values").VFloat64<number, "required">;
46
+ feedbackCount: import("convex/values").VFloat64<number, "required">;
47
+ }, "required", "id" | "creationTime" | "title" | "description" | "status" | "position" | "createdAt" | "updatedAt" | "feedbackCount">;
13
48
  export declare const feedbackMetadataValueValidator: import("convex/values").VUnion<string | number | boolean, [import("convex/values").VString<string, "required">, import("convex/values").VFloat64<number, "required">, import("convex/values").VBoolean<boolean, "required">], "required", never>;
14
49
  export declare const feedbackMetadataRecordValidator: import("convex/values").VRecord<Record<string, string | number | boolean>, import("convex/values").VString<string, "required">, import("convex/values").VUnion<string | number | boolean, [import("convex/values").VString<string, "required">, import("convex/values").VFloat64<number, "required">, import("convex/values").VBoolean<boolean, "required">], "required", never>, "required", string>;
15
50
  export declare const feedbackMetadataValidator: import("convex/values").VObject<{
@@ -27,10 +62,10 @@ export declare const publicEntryValidator: import("convex/values").VObject<{
27
62
  } | undefined;
28
63
  id: string;
29
64
  creationTime: number;
65
+ title: string;
66
+ status: "open" | "under_review" | "planned" | "in_progress" | "completed" | "closed";
30
67
  actorId: string;
31
68
  kind: "feedback" | "feature_request" | "bug_report";
32
- status: "open" | "under_review" | "planned" | "in_progress" | "completed" | "closed";
33
- title: string;
34
69
  body: string;
35
70
  upvoteCount: number;
36
71
  commentCount: number;
@@ -54,7 +89,7 @@ export declare const publicEntryValidator: import("convex/values").VObject<{
54
89
  standard: import("convex/values").VRecord<Record<string, string | number | boolean> | undefined, import("convex/values").VString<string, "required">, import("convex/values").VUnion<string | number | boolean, [import("convex/values").VString<string, "required">, import("convex/values").VFloat64<number, "required">, import("convex/values").VBoolean<boolean, "required">], "required", never>, "optional", string>;
55
90
  additional: import("convex/values").VRecord<Record<string, string | number | boolean> | undefined, import("convex/values").VString<string, "required">, import("convex/values").VUnion<string | number | boolean, [import("convex/values").VString<string, "required">, import("convex/values").VFloat64<number, "required">, import("convex/values").VBoolean<boolean, "required">], "required", never>, "optional", string>;
56
91
  }, "optional", "standard" | "additional" | `standard.${string}` | `additional.${string}`>;
57
- }, "required", "id" | "creationTime" | "actorId" | "kind" | "status" | "title" | "body" | "upvoteCount" | "commentCount" | "updatedAt" | "viewerHasUpvoted" | "metadata" | "metadata.standard" | "metadata.additional" | `metadata.standard.${string}` | `metadata.additional.${string}`>;
92
+ }, "required", "id" | "creationTime" | "title" | "status" | "updatedAt" | "actorId" | "kind" | "body" | "upvoteCount" | "commentCount" | "viewerHasUpvoted" | "metadata" | "metadata.standard" | "metadata.additional" | `metadata.standard.${string}` | `metadata.additional.${string}`>;
58
93
  export declare const publicCommentValidator: import("convex/values").VObject<{
59
94
  updatedAt?: number | undefined;
60
95
  parentCommentId?: string | undefined;
@@ -81,7 +116,7 @@ export declare const publicCommentValidator: import("convex/values").VObject<{
81
116
  updatedAt: import("convex/values").VFloat64<number | undefined, "optional">;
82
117
  deletedAt: import("convex/values").VFloat64<number | undefined, "optional">;
83
118
  viewerHasLiked: import("convex/values").VBoolean<boolean, "required">;
84
- }, "required", "id" | "creationTime" | "actorId" | "body" | "updatedAt" | "entryId" | "parentCommentId" | "depth" | "likeCount" | "replyCount" | "deletedAt" | "viewerHasLiked">;
119
+ }, "required", "id" | "creationTime" | "updatedAt" | "actorId" | "body" | "entryId" | "parentCommentId" | "depth" | "likeCount" | "replyCount" | "deletedAt" | "viewerHasLiked">;
85
120
  export declare const similarEntriesValidator: import("convex/values").VObject<{
86
121
  exact: {
87
122
  updatedAt?: number | undefined;
@@ -91,10 +126,10 @@ export declare const similarEntriesValidator: import("convex/values").VObject<{
91
126
  } | undefined;
92
127
  id: string;
93
128
  creationTime: number;
129
+ title: string;
130
+ status: "open" | "under_review" | "planned" | "in_progress" | "completed" | "closed";
94
131
  actorId: string;
95
132
  kind: "feedback" | "feature_request" | "bug_report";
96
- status: "open" | "under_review" | "planned" | "in_progress" | "completed" | "closed";
97
- title: string;
98
133
  body: string;
99
134
  upvoteCount: number;
100
135
  commentCount: number;
@@ -108,10 +143,10 @@ export declare const similarEntriesValidator: import("convex/values").VObject<{
108
143
  } | undefined;
109
144
  id: string;
110
145
  creationTime: number;
146
+ title: string;
147
+ status: "open" | "under_review" | "planned" | "in_progress" | "completed" | "closed";
111
148
  actorId: string;
112
149
  kind: "feedback" | "feature_request" | "bug_report";
113
- status: "open" | "under_review" | "planned" | "in_progress" | "completed" | "closed";
114
- title: string;
115
150
  body: string;
116
151
  upvoteCount: number;
117
152
  commentCount: number;
@@ -126,10 +161,10 @@ export declare const similarEntriesValidator: import("convex/values").VObject<{
126
161
  } | undefined;
127
162
  id: string;
128
163
  creationTime: number;
164
+ title: string;
165
+ status: "open" | "under_review" | "planned" | "in_progress" | "completed" | "closed";
129
166
  actorId: string;
130
167
  kind: "feedback" | "feature_request" | "bug_report";
131
- status: "open" | "under_review" | "planned" | "in_progress" | "completed" | "closed";
132
- title: string;
133
168
  body: string;
134
169
  upvoteCount: number;
135
170
  commentCount: number;
@@ -142,10 +177,10 @@ export declare const similarEntriesValidator: import("convex/values").VObject<{
142
177
  } | undefined;
143
178
  id: string;
144
179
  creationTime: number;
180
+ title: string;
181
+ status: "open" | "under_review" | "planned" | "in_progress" | "completed" | "closed";
145
182
  actorId: string;
146
183
  kind: "feedback" | "feature_request" | "bug_report";
147
- status: "open" | "under_review" | "planned" | "in_progress" | "completed" | "closed";
148
- title: string;
149
184
  body: string;
150
185
  upvoteCount: number;
151
186
  commentCount: number;
@@ -169,7 +204,7 @@ export declare const similarEntriesValidator: import("convex/values").VObject<{
169
204
  standard: import("convex/values").VRecord<Record<string, string | number | boolean> | undefined, import("convex/values").VString<string, "required">, import("convex/values").VUnion<string | number | boolean, [import("convex/values").VString<string, "required">, import("convex/values").VFloat64<number, "required">, import("convex/values").VBoolean<boolean, "required">], "required", never>, "optional", string>;
170
205
  additional: import("convex/values").VRecord<Record<string, string | number | boolean> | undefined, import("convex/values").VString<string, "required">, import("convex/values").VUnion<string | number | boolean, [import("convex/values").VString<string, "required">, import("convex/values").VFloat64<number, "required">, import("convex/values").VBoolean<boolean, "required">], "required", never>, "optional", string>;
171
206
  }, "optional", "standard" | "additional" | `standard.${string}` | `additional.${string}`>;
172
- }, "required", "id" | "creationTime" | "actorId" | "kind" | "status" | "title" | "body" | "upvoteCount" | "commentCount" | "updatedAt" | "viewerHasUpvoted" | "metadata" | "metadata.standard" | "metadata.additional" | `metadata.standard.${string}` | `metadata.additional.${string}`>, "required">;
207
+ }, "required", "id" | "creationTime" | "title" | "status" | "updatedAt" | "actorId" | "kind" | "body" | "upvoteCount" | "commentCount" | "viewerHasUpvoted" | "metadata" | "metadata.standard" | "metadata.additional" | `metadata.standard.${string}` | `metadata.additional.${string}`>, "required">;
173
208
  similar: import("convex/values").VArray<{
174
209
  updatedAt?: number | undefined;
175
210
  metadata?: {
@@ -178,10 +213,10 @@ export declare const similarEntriesValidator: import("convex/values").VObject<{
178
213
  } | undefined;
179
214
  id: string;
180
215
  creationTime: number;
216
+ title: string;
217
+ status: "open" | "under_review" | "planned" | "in_progress" | "completed" | "closed";
181
218
  actorId: string;
182
219
  kind: "feedback" | "feature_request" | "bug_report";
183
- status: "open" | "under_review" | "planned" | "in_progress" | "completed" | "closed";
184
- title: string;
185
220
  body: string;
186
221
  upvoteCount: number;
187
222
  commentCount: number;
@@ -194,10 +229,10 @@ export declare const similarEntriesValidator: import("convex/values").VObject<{
194
229
  } | undefined;
195
230
  id: string;
196
231
  creationTime: number;
232
+ title: string;
233
+ status: "open" | "under_review" | "planned" | "in_progress" | "completed" | "closed";
197
234
  actorId: string;
198
235
  kind: "feedback" | "feature_request" | "bug_report";
199
- status: "open" | "under_review" | "planned" | "in_progress" | "completed" | "closed";
200
- title: string;
201
236
  body: string;
202
237
  upvoteCount: number;
203
238
  commentCount: number;
@@ -221,8 +256,78 @@ export declare const similarEntriesValidator: import("convex/values").VObject<{
221
256
  standard: import("convex/values").VRecord<Record<string, string | number | boolean> | undefined, import("convex/values").VString<string, "required">, import("convex/values").VUnion<string | number | boolean, [import("convex/values").VString<string, "required">, import("convex/values").VFloat64<number, "required">, import("convex/values").VBoolean<boolean, "required">], "required", never>, "optional", string>;
222
257
  additional: import("convex/values").VRecord<Record<string, string | number | boolean> | undefined, import("convex/values").VString<string, "required">, import("convex/values").VUnion<string | number | boolean, [import("convex/values").VString<string, "required">, import("convex/values").VFloat64<number, "required">, import("convex/values").VBoolean<boolean, "required">], "required", never>, "optional", string>;
223
258
  }, "optional", "standard" | "additional" | `standard.${string}` | `additional.${string}`>;
224
- }, "required", "id" | "creationTime" | "actorId" | "kind" | "status" | "title" | "body" | "upvoteCount" | "commentCount" | "updatedAt" | "viewerHasUpvoted" | "metadata" | "metadata.standard" | "metadata.additional" | `metadata.standard.${string}` | `metadata.additional.${string}`>, "required">;
259
+ }, "required", "id" | "creationTime" | "title" | "status" | "updatedAt" | "actorId" | "kind" | "body" | "upvoteCount" | "commentCount" | "viewerHasUpvoted" | "metadata" | "metadata.standard" | "metadata.additional" | `metadata.standard.${string}` | `metadata.additional.${string}`>, "required">;
225
260
  }, "required", "exact" | "similar">;
261
+ export declare const adminEntryValidator: import("convex/values").VObject<{
262
+ updatedAt?: number | undefined;
263
+ metadata?: {
264
+ standard?: Record<string, string | number | boolean> | undefined;
265
+ additional?: Record<string, string | number | boolean> | undefined;
266
+ } | undefined;
267
+ id: string;
268
+ creationTime: number;
269
+ title: string;
270
+ status: "open" | "under_review" | "planned" | "in_progress" | "completed" | "closed";
271
+ actorId: string;
272
+ kind: "feedback" | "feature_request" | "bug_report";
273
+ body: string;
274
+ upvoteCount: number;
275
+ commentCount: number;
276
+ viewerHasUpvoted: boolean;
277
+ priority?: "low" | "medium" | "high" | undefined;
278
+ roadmap?: {
279
+ description?: string | undefined;
280
+ id: string;
281
+ creationTime: number;
282
+ title: string;
283
+ status: "planned" | "in_progress" | "shipped";
284
+ position: number;
285
+ createdAt: number;
286
+ updatedAt: number;
287
+ feedbackCount: number;
288
+ } | undefined;
289
+ }, {
290
+ id: import("convex/values").VString<string, "required">;
291
+ creationTime: import("convex/values").VFloat64<number, "required">;
292
+ actorId: import("convex/values").VString<string, "required">;
293
+ kind: import("convex/values").VUnion<"feedback" | "feature_request" | "bug_report", [import("convex/values").VLiteral<"feedback", "required">, import("convex/values").VLiteral<"feature_request", "required">, import("convex/values").VLiteral<"bug_report", "required">], "required", never>;
294
+ status: import("convex/values").VUnion<"open" | "under_review" | "planned" | "in_progress" | "completed" | "closed", [import("convex/values").VLiteral<"open", "required">, import("convex/values").VLiteral<"under_review", "required">, import("convex/values").VLiteral<"planned", "required">, import("convex/values").VLiteral<"in_progress", "required">, import("convex/values").VLiteral<"completed", "required">, import("convex/values").VLiteral<"closed", "required">], "required", never>;
295
+ title: import("convex/values").VString<string, "required">;
296
+ body: import("convex/values").VString<string, "required">;
297
+ upvoteCount: import("convex/values").VFloat64<number, "required">;
298
+ commentCount: import("convex/values").VFloat64<number, "required">;
299
+ updatedAt: import("convex/values").VFloat64<number | undefined, "optional">;
300
+ viewerHasUpvoted: import("convex/values").VBoolean<boolean, "required">;
301
+ metadata: import("convex/values").VObject<{
302
+ standard?: Record<string, string | number | boolean> | undefined;
303
+ additional?: Record<string, string | number | boolean> | undefined;
304
+ } | undefined, {
305
+ standard: import("convex/values").VRecord<Record<string, string | number | boolean> | undefined, import("convex/values").VString<string, "required">, import("convex/values").VUnion<string | number | boolean, [import("convex/values").VString<string, "required">, import("convex/values").VFloat64<number, "required">, import("convex/values").VBoolean<boolean, "required">], "required", never>, "optional", string>;
306
+ additional: import("convex/values").VRecord<Record<string, string | number | boolean> | undefined, import("convex/values").VString<string, "required">, import("convex/values").VUnion<string | number | boolean, [import("convex/values").VString<string, "required">, import("convex/values").VFloat64<number, "required">, import("convex/values").VBoolean<boolean, "required">], "required", never>, "optional", string>;
307
+ }, "optional", "standard" | "additional" | `standard.${string}` | `additional.${string}`>;
308
+ priority: import("convex/values").VUnion<"low" | "medium" | "high" | undefined, [import("convex/values").VLiteral<"low", "required">, import("convex/values").VLiteral<"medium", "required">, import("convex/values").VLiteral<"high", "required">], "optional", never>;
309
+ roadmap: import("convex/values").VObject<{
310
+ description?: string | undefined;
311
+ id: string;
312
+ creationTime: number;
313
+ title: string;
314
+ status: "planned" | "in_progress" | "shipped";
315
+ position: number;
316
+ createdAt: number;
317
+ updatedAt: number;
318
+ feedbackCount: number;
319
+ } | undefined, {
320
+ id: import("convex/values").VString<string, "required">;
321
+ creationTime: import("convex/values").VFloat64<number, "required">;
322
+ title: import("convex/values").VString<string, "required">;
323
+ description: import("convex/values").VString<string | undefined, "optional">;
324
+ status: import("convex/values").VUnion<"planned" | "in_progress" | "shipped", [import("convex/values").VLiteral<"planned", "required">, import("convex/values").VLiteral<"in_progress", "required">, import("convex/values").VLiteral<"shipped", "required">], "required", never>;
325
+ position: import("convex/values").VFloat64<number, "required">;
326
+ createdAt: import("convex/values").VFloat64<number, "required">;
327
+ updatedAt: import("convex/values").VFloat64<number, "required">;
328
+ feedbackCount: import("convex/values").VFloat64<number, "required">;
329
+ }, "optional", "id" | "creationTime" | "title" | "description" | "status" | "position" | "createdAt" | "updatedAt" | "feedbackCount">;
330
+ }, "required", "id" | "creationTime" | "title" | "status" | "updatedAt" | "actorId" | "kind" | "body" | "upvoteCount" | "commentCount" | "viewerHasUpvoted" | "metadata" | "metadata.standard" | "metadata.additional" | `metadata.standard.${string}` | `metadata.additional.${string}` | "priority" | "roadmap" | "roadmap.id" | "roadmap.creationTime" | "roadmap.title" | "roadmap.description" | "roadmap.status" | "roadmap.position" | "roadmap.createdAt" | "roadmap.updatedAt" | "roadmap.feedbackCount">;
226
331
  /**
227
332
  * Category of feedback represented by an entry.
228
333
  *
@@ -238,6 +343,9 @@ export type EntryKind = Infer<typeof entryKindValidator>;
238
343
  * fully typed lifecycle. UI labels and presentation can be customized.
239
344
  */
240
345
  export type EntryStatus = Infer<typeof entryStatusValidator>;
346
+ /** Coarse status bucket used by the indexed board and search filters. */
347
+ export type EntryStatusFilter = Infer<typeof entryStatusFilterValidator>;
348
+ export declare function entryStatusFilterForStatus(status: EntryStatus): EntryStatusFilter;
241
349
  /**
242
350
  * Server-side ordering strategy for feedback entries.
243
351
  *
@@ -246,6 +354,12 @@ export type EntryStatus = Infer<typeof entryStatusValidator>;
246
354
  * - `"newest"` — newest entries first.
247
355
  */
248
356
  export type EntrySort = Infer<typeof entrySortValidator>;
357
+ /** Internal triage priority visible only through the admin API. */
358
+ export type EntryPriority = Infer<typeof entryPriorityValidator>;
359
+ /** Workflow stage for an admin roadmap item. */
360
+ export type RoadmapStatus = Infer<typeof roadmapStatusValidator>;
361
+ /** Admin-managed roadmap item and its current attached-feedback count. */
362
+ export type RoadmapItem = Infer<typeof roadmapItemValidator>;
249
363
  /**
250
364
  * Server-side ordering strategy for comments and replies.
251
365
  *
@@ -266,9 +380,13 @@ export type CommentSort = Infer<typeof commentSortValidator>;
266
380
  * application user ID, anonymous installation ID, or another stable
267
381
  * host-controlled identifier.
268
382
  *
383
+ * @property isAdmin
384
+ * Whether the actor can perform admin-only actions such as changing entry
385
+ * status or modifying content they do not own. When omitted, the deprecated
386
+ * `isModerator` field is used.
387
+ *
269
388
  * @property isModerator
270
- * Whether the actor can perform moderator-only actions such as changing entry
271
- * status or modifying content they do not own.
389
+ * @deprecated Use `isAdmin`.
272
390
  */
273
391
  export type FeedbackActor = Infer<typeof actorValidator>;
274
392
  /** Scalar value accepted in entry diagnostic metadata. */
@@ -316,10 +434,12 @@ export type FeedbackMetadata = Infer<typeof feedbackMetadataValidator>;
316
434
  *
317
435
  * @property metadata
318
436
  * Creation-time diagnostic metadata. Present only when `getEntry` is queried
319
- * by a moderator. Ordinary entry lists, searches, and non-moderator reads omit
437
+ * by an admin. Ordinary entry lists, searches, and non-admin reads omit
320
438
  * this property.
321
439
  */
322
440
  export type FeedbackEntry = Infer<typeof publicEntryValidator>;
441
+ /** Feedback entry enriched with private triage metadata for admin clients. */
442
+ export type AdminFeedbackEntry = Infer<typeof adminEntryValidator>;
323
443
  /**
324
444
  * Public representation of a comment or reply.
325
445
  *
@@ -1 +1 @@
1
- {"version":3,"file":"model.d.ts","sourceRoot":"","sources":["../../src/component/model.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAG3C,eAAO,MAAM,kBAAkB,2RAI9B,CAAC;AAEF,eAAO,MAAM,oBAAoB,geAOhC,CAAC;AAEF,eAAO,MAAM,kBAAkB,oLAG9B,CAAC;AAEF,eAAO,MAAM,oBAAoB,uPAIhC,CAAC;AAEF,eAAO,MAAM,cAAc;;;;;;oCAGzB,CAAC;AAEH,eAAO,MAAM,8BAA8B,kPAI1C,CAAC;AAEF,eAAO,MAAM,+BAA+B,uYAG3C,CAAC;AAEF,eAAO,MAAM,yBAAyB;;;;;;yFAGpC,CAAC;AAEH,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;yRAa/B,CAAC;AAEH,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;gLAajC,CAAC;AAEH,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;mCAGlC,CAAC;AAEH;;;;;;GAMG;AACH,MAAM,MAAM,SAAS,GAAG,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAEzD;;;;;GAKG;AACH,MAAM,MAAM,WAAW,GAAG,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAE7D;;;;;;GAMG;AACH,MAAM,MAAM,SAAS,GAAG,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAEzD;;;;;;;GAOG;AACH,MAAM,MAAM,WAAW,GAAG,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAE7D;;;;;;;;;;;;;;GAcG;AACH,MAAM,MAAM,aAAa,GAAG,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC;AAEzD,0DAA0D;AAC1D,MAAM,MAAM,qBAAqB,GAAG,KAAK,CACvC,OAAO,8BAA8B,CACtC,CAAC;AAEF,oDAAoD;AACpD,MAAM,MAAM,gBAAgB,GAAG,KAAK,CAAC,OAAO,yBAAyB,CAAC,CAAC;AAEvE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2CG;AACH,MAAM,MAAM,aAAa,GAAG,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAE/D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6CG;AACH,MAAM,MAAM,eAAe,GAAG,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC;AAEnE;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAM,MAAM,oBAAoB,GAAG,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC"}
1
+ {"version":3,"file":"model.d.ts","sourceRoot":"","sources":["../../src/component/model.ts"],"names":[],"mappings":"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"}
@@ -1,11 +1,36 @@
1
1
  import { v } from "convex/values";
2
2
  export const entryKindValidator = v.union(v.literal("feedback"), v.literal("feature_request"), v.literal("bug_report"));
3
3
  export const entryStatusValidator = v.union(v.literal("open"), v.literal("under_review"), v.literal("planned"), v.literal("in_progress"), v.literal("completed"), v.literal("closed"));
4
+ export const entryStatusFilterValidator = v.union(v.literal("open"), v.literal("closed"));
4
5
  export const entrySortValidator = v.union(v.literal("top"), v.literal("newest"));
6
+ export const entryPriorityValidator = v.union(v.literal("low"), v.literal("medium"), v.literal("high"));
7
+ export const roadmapStatusValidator = v.union(v.literal("planned"), v.literal("in_progress"), v.literal("shipped"));
5
8
  export const commentSortValidator = v.union(v.literal("top"), v.literal("newest"), v.literal("oldest"));
6
9
  export const actorValidator = v.object({
7
10
  id: v.string(),
8
- isModerator: v.boolean(),
11
+ isAdmin: v.optional(v.boolean()),
12
+ /** @deprecated Use `isAdmin`. */
13
+ isModerator: v.optional(v.boolean()),
14
+ });
15
+ /**
16
+ * Resolves the current admin flag while keeping the pre-`isAdmin` actor shape
17
+ * working for existing hosts. The new field wins when both are present.
18
+ */
19
+ export function actorIsAdmin(actor) {
20
+ return actor.isAdmin === undefined
21
+ ? actor.isModerator === true
22
+ : actor.isAdmin === true;
23
+ }
24
+ export const roadmapItemValidator = v.object({
25
+ id: v.string(),
26
+ creationTime: v.number(),
27
+ title: v.string(),
28
+ description: v.optional(v.string()),
29
+ status: roadmapStatusValidator,
30
+ position: v.number(),
31
+ createdAt: v.number(),
32
+ updatedAt: v.number(),
33
+ feedbackCount: v.number(),
9
34
  });
10
35
  export const feedbackMetadataValueValidator = v.union(v.string(), v.number(), v.boolean());
11
36
  export const feedbackMetadataRecordValidator = v.record(v.string(), feedbackMetadataValueValidator);
@@ -45,4 +70,12 @@ export const similarEntriesValidator = v.object({
45
70
  exact: v.array(publicEntryValidator),
46
71
  similar: v.array(publicEntryValidator),
47
72
  });
73
+ export const adminEntryValidator = publicEntryValidator.extend({
74
+ priority: v.optional(entryPriorityValidator),
75
+ roadmap: v.optional(roadmapItemValidator),
76
+ metadata: v.optional(feedbackMetadataValidator),
77
+ });
78
+ export function entryStatusFilterForStatus(status) {
79
+ return status === "closed" ? "closed" : "open";
80
+ }
48
81
  //# sourceMappingURL=model.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"model.js","sourceRoot":"","sources":["../../src/component/model.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"model.js","sourceRoot":"","sources":["../../src/component/model.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,166 @@
1
+ export declare const list: import("convex/server").RegisteredQuery<"public", {
2
+ status?: "planned" | "in_progress" | "shipped" | undefined;
3
+ paginationOpts: {
4
+ id?: number;
5
+ endCursor?: string | null;
6
+ maximumRowsRead?: number;
7
+ maximumBytesRead?: number;
8
+ numItems: number;
9
+ cursor: string | null;
10
+ };
11
+ }, Promise<{
12
+ page: {
13
+ description?: string | undefined;
14
+ id: string;
15
+ creationTime: number;
16
+ title: string;
17
+ status: "planned" | "in_progress" | "shipped";
18
+ position: number;
19
+ createdAt: number;
20
+ updatedAt: number;
21
+ feedbackCount: number;
22
+ }[];
23
+ isDone: boolean;
24
+ continueCursor: import("convex/server").Cursor;
25
+ splitCursor?: import("convex/server").Cursor | null;
26
+ pageStatus?: "SplitRecommended" | "SplitRequired" | null;
27
+ }>>;
28
+ export declare const search: import("convex/server").RegisteredQuery<"public", {
29
+ searchQuery: string;
30
+ limit: number;
31
+ }, Promise<{
32
+ description?: string | undefined;
33
+ id: string;
34
+ creationTime: number;
35
+ title: string;
36
+ status: "planned" | "in_progress" | "shipped";
37
+ position: number;
38
+ createdAt: number;
39
+ updatedAt: number;
40
+ feedbackCount: number;
41
+ }[]>>;
42
+ export declare const create: import("convex/server").RegisteredMutation<"public", {
43
+ description?: string | undefined;
44
+ title: string;
45
+ status: "planned" | "in_progress" | "shipped";
46
+ actor: {
47
+ isAdmin?: boolean | undefined;
48
+ isModerator?: boolean | undefined;
49
+ id: string;
50
+ };
51
+ }, Promise<import("convex/values").GenericId<"roadmap">>>;
52
+ export declare const update: import("convex/server").RegisteredMutation<"public", {
53
+ description?: string | undefined;
54
+ title: string;
55
+ roadmapId: import("convex/values").GenericId<"roadmap">;
56
+ actor: {
57
+ isAdmin?: boolean | undefined;
58
+ isModerator?: boolean | undefined;
59
+ id: string;
60
+ };
61
+ }, Promise<null>>;
62
+ export declare const move: import("convex/server").RegisteredMutation<"public", {
63
+ previousItemId?: import("convex/values").GenericId<"roadmap"> | undefined;
64
+ nextItemId?: import("convex/values").GenericId<"roadmap"> | undefined;
65
+ status: "planned" | "in_progress" | "shipped";
66
+ roadmapId: import("convex/values").GenericId<"roadmap">;
67
+ actor: {
68
+ isAdmin?: boolean | undefined;
69
+ isModerator?: boolean | undefined;
70
+ id: string;
71
+ };
72
+ }, Promise<number>>;
73
+ export declare const rebalanceBatch: import("convex/server").RegisteredMutation<"internal", {
74
+ status: "planned" | "in_progress" | "shipped";
75
+ rebalanceId: string;
76
+ paginationOpts: {
77
+ id?: number;
78
+ endCursor?: string | null;
79
+ maximumRowsRead?: number;
80
+ maximumBytesRead?: number;
81
+ numItems: number;
82
+ cursor: string | null;
83
+ };
84
+ phase: "mark" | "rewrite" | "promote";
85
+ offset: number;
86
+ }, Promise<null>>;
87
+ export declare const remove: import("convex/server").RegisteredMutation<"public", {
88
+ roadmapId: import("convex/values").GenericId<"roadmap">;
89
+ actor: {
90
+ isAdmin?: boolean | undefined;
91
+ isModerator?: boolean | undefined;
92
+ id: string;
93
+ };
94
+ }, Promise<null>>;
95
+ export declare const removeBatch: import("convex/server").RegisteredMutation<"internal", {
96
+ roadmapId: import("convex/values").GenericId<"roadmap">;
97
+ }, Promise<{
98
+ processed: number;
99
+ hasMore: boolean;
100
+ }>>;
101
+ export declare const finalizeRemoval: import("convex/server").RegisteredMutation<"internal", {
102
+ roadmapId: import("convex/values").GenericId<"roadmap">;
103
+ }, Promise<null>>;
104
+ export declare const attachFeedback: import("convex/server").RegisteredMutation<"public", {
105
+ entryId: import("convex/values").GenericId<"entries">;
106
+ roadmapId: import("convex/values").GenericId<"roadmap">;
107
+ actor: {
108
+ isAdmin?: boolean | undefined;
109
+ isModerator?: boolean | undefined;
110
+ id: string;
111
+ };
112
+ }, Promise<null>>;
113
+ export declare const createForEntry: import("convex/server").RegisteredMutation<"public", {
114
+ description?: string | undefined;
115
+ title: string;
116
+ status: "planned" | "in_progress" | "shipped";
117
+ entryId: import("convex/values").GenericId<"entries">;
118
+ actor: {
119
+ isAdmin?: boolean | undefined;
120
+ isModerator?: boolean | undefined;
121
+ id: string;
122
+ };
123
+ }, Promise<import("convex/values").GenericId<"roadmap">>>;
124
+ export declare const detachFeedback: import("convex/server").RegisteredMutation<"public", {
125
+ entryId: import("convex/values").GenericId<"entries">;
126
+ actor: {
127
+ isAdmin?: boolean | undefined;
128
+ isModerator?: boolean | undefined;
129
+ id: string;
130
+ };
131
+ }, Promise<null>>;
132
+ export declare const listFeedback: import("convex/server").RegisteredQuery<"public", {
133
+ viewerActorId?: string | undefined;
134
+ roadmapId: import("convex/values").GenericId<"roadmap">;
135
+ paginationOpts: {
136
+ id?: number;
137
+ endCursor?: string | null;
138
+ maximumRowsRead?: number;
139
+ maximumBytesRead?: number;
140
+ numItems: number;
141
+ cursor: string | null;
142
+ };
143
+ }, Promise<{
144
+ page: {
145
+ updatedAt?: number | undefined;
146
+ metadata?: {
147
+ standard?: Record<string, string | number | boolean> | undefined;
148
+ additional?: Record<string, string | number | boolean> | undefined;
149
+ } | undefined;
150
+ id: string;
151
+ creationTime: number;
152
+ title: string;
153
+ status: "open" | "under_review" | "planned" | "in_progress" | "completed" | "closed";
154
+ actorId: string;
155
+ kind: "feedback" | "feature_request" | "bug_report";
156
+ body: string;
157
+ upvoteCount: number;
158
+ commentCount: number;
159
+ viewerHasUpvoted: boolean;
160
+ }[];
161
+ isDone: boolean;
162
+ continueCursor: import("convex/server").Cursor;
163
+ splitCursor?: import("convex/server").Cursor | null;
164
+ pageStatus?: "SplitRecommended" | "SplitRequired" | null;
165
+ }>>;
166
+ //# sourceMappingURL=roadmap.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"roadmap.d.ts","sourceRoot":"","sources":["../../src/component/roadmap.ts"],"names":[],"mappings":"AA2HA,eAAO,MAAM,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;GA2Cf,CAAC;AAEH,eAAO,MAAM,MAAM;;;;;;;;;;;;;KAcjB,CAAC;AAuBH,eAAO,MAAM,MAAM;;;;;;;;;yDAYjB,CAAC;AAEH,eAAO,MAAM,MAAM;;;;;;;;;iBAwBjB,CAAC;AAEH,eAAO,MAAM,IAAI;;;;;;;;;;mBAyFf,CAAC;AAEH,eAAO,MAAM,cAAc;;;;;;;;;;;;;iBA+GzB,CAAC;AAEH,eAAO,MAAM,MAAM;;;;;;;iBAgBjB,CAAC;AAEH,eAAO,MAAM,WAAW;;;;;GAkCtB,CAAC;AAEH,eAAO,MAAM,eAAe;;iBAS1B,CAAC;AAsCH,eAAO,MAAM,cAAc;;;;;;;;iBAYzB,CAAC;AAEH,eAAO,MAAM,cAAc;;;;;;;;;;yDAezB,CAAC;AAEH,eAAO,MAAM,cAAc;;;;;;;iBAqBzB,CAAC;AAEH,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsBvB,CAAC"}