convex-feedback 0.2.0-beta.8 → 0.2.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/README.md +398 -7
- package/dist/.tsbuildinfo +1 -1
- package/dist/client/api.d.ts +49 -9
- package/dist/client/api.d.ts.map +1 -1
- package/dist/client/config.d.ts +1 -3
- package/dist/client/config.d.ts.map +1 -1
- package/dist/client/config.js.map +1 -1
- package/dist/client/index.d.ts +707 -15
- package/dist/client/index.d.ts.map +1 -1
- package/dist/client/index.js +243 -12
- package/dist/client/index.js.map +1 -1
- package/dist/component/_generated/api.d.ts +2 -0
- package/dist/component/_generated/api.d.ts.map +1 -1
- package/dist/component/_generated/api.js.map +1 -1
- package/dist/component/_generated/component.d.ts +222 -4
- package/dist/component/_generated/component.d.ts.map +1 -1
- package/dist/component/admin.d.ts +5 -90
- package/dist/component/admin.d.ts.map +1 -1
- package/dist/component/admin.js +59 -29
- package/dist/component/admin.js.map +1 -1
- package/dist/component/comments.d.ts +107 -15
- package/dist/component/comments.d.ts.map +1 -1
- package/dist/component/comments.js +342 -28
- package/dist/component/comments.js.map +1 -1
- package/dist/component/crons.d.ts.map +1 -1
- package/dist/component/crons.js +4 -0
- package/dist/component/crons.js.map +1 -1
- package/dist/component/entries.d.ts +119 -91
- package/dist/component/entries.d.ts.map +1 -1
- package/dist/component/entries.js +348 -29
- package/dist/component/entries.js.map +1 -1
- package/dist/component/helpers.d.ts +32 -1
- package/dist/component/helpers.d.ts.map +1 -1
- package/dist/component/helpers.js +121 -4
- package/dist/component/helpers.js.map +1 -1
- package/dist/component/migrations.d.ts +24 -0
- package/dist/component/migrations.d.ts.map +1 -1
- package/dist/component/migrations.js +318 -0
- package/dist/component/migrations.js.map +1 -1
- package/dist/component/model.d.ts +455 -120
- package/dist/component/model.d.ts.map +1 -1
- package/dist/component/model.js +70 -2
- package/dist/component/model.js.map +1 -1
- package/dist/component/reactions.d.ts +37 -0
- package/dist/component/reactions.d.ts.map +1 -0
- package/dist/component/reactions.js +52 -0
- package/dist/component/reactions.js.map +1 -0
- package/dist/component/roadmap.d.ts +10 -46
- package/dist/component/roadmap.d.ts.map +1 -1
- package/dist/component/roadmap.js +239 -21
- package/dist/component/roadmap.js.map +1 -1
- package/dist/component/schema.d.ts +33 -5
- package/dist/component/schema.d.ts.map +1 -1
- package/dist/component/schema.js +40 -4
- package/dist/component/schema.js.map +1 -1
- package/dist/react/index.d.ts +26 -238
- package/dist/react/index.d.ts.map +1 -1
- package/dist/react/index.js +65 -2
- package/dist/react/index.js.map +1 -1
- package/dist/test.d.ts +23 -5
- package/dist/test.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/client/README.md +6 -1
- package/src/client/api.ts +89 -7
- package/src/client/config.ts +1 -3
- package/src/client/index.ts +1237 -34
- package/src/component/README.md +32 -4
- package/src/component/_generated/api.ts +2 -0
- package/src/component/_generated/component.ts +290 -8
- package/src/component/admin.ts +88 -30
- package/src/component/comments.ts +405 -26
- package/src/component/crons.ts +10 -0
- package/src/component/entries.ts +388 -27
- package/src/component/helpers.ts +163 -4
- package/src/component/migrations.ts +415 -0
- package/src/component/model.ts +381 -117
- package/src/component/reactions.ts +60 -0
- package/src/component/roadmap.ts +357 -35
- package/src/component/schema.ts +40 -4
- package/src/react/README.md +5 -0
- package/src/react/index.ts +90 -3
|
@@ -96,11 +96,10 @@ export declare const publicEntryValidator: import("convex/values").VObject<{
|
|
|
96
96
|
export declare const publicCommentValidator: import("convex/values").VObject<{
|
|
97
97
|
updatedAt?: number | undefined;
|
|
98
98
|
parentCommentId?: string | undefined;
|
|
99
|
-
deletedAt?: number | undefined;
|
|
100
99
|
id: string;
|
|
101
100
|
creationTime: number;
|
|
102
101
|
actorId: string;
|
|
103
|
-
body: string
|
|
102
|
+
body: string;
|
|
104
103
|
entryId: string;
|
|
105
104
|
depth: number;
|
|
106
105
|
likeCount: number;
|
|
@@ -113,13 +112,237 @@ export declare const publicCommentValidator: import("convex/values").VObject<{
|
|
|
113
112
|
parentCommentId: import("convex/values").VString<string | undefined, "optional">;
|
|
114
113
|
actorId: import("convex/values").VString<string, "required">;
|
|
115
114
|
depth: import("convex/values").VFloat64<number, "required">;
|
|
116
|
-
body: import("convex/values").
|
|
115
|
+
body: import("convex/values").VString<string, "required">;
|
|
117
116
|
likeCount: import("convex/values").VFloat64<number, "required">;
|
|
118
117
|
replyCount: import("convex/values").VFloat64<number, "required">;
|
|
119
118
|
updatedAt: import("convex/values").VFloat64<number | undefined, "optional">;
|
|
120
|
-
deletedAt: import("convex/values").VFloat64<number | undefined, "optional">;
|
|
121
119
|
viewerHasLiked: import("convex/values").VBoolean<boolean, "required">;
|
|
122
|
-
}, "required", "id" | "creationTime" | "updatedAt" | "actorId" | "body" | "entryId" | "parentCommentId" | "depth" | "likeCount" | "replyCount" | "
|
|
120
|
+
}, "required", "id" | "creationTime" | "updatedAt" | "actorId" | "body" | "entryId" | "parentCommentId" | "depth" | "likeCount" | "replyCount" | "viewerHasLiked">;
|
|
121
|
+
/**
|
|
122
|
+
* Entry activity returned by actor-scoped queries.
|
|
123
|
+
*
|
|
124
|
+
* Unlike the ordinary public entry shape, activity entries do not contain
|
|
125
|
+
* viewer-relative reaction state. The actor is already the subject of the
|
|
126
|
+
* query.
|
|
127
|
+
*/
|
|
128
|
+
export declare const activityEntryValidator: import("convex/values").VObject<{
|
|
129
|
+
updatedAt?: number | undefined;
|
|
130
|
+
id: string;
|
|
131
|
+
creationTime: number;
|
|
132
|
+
title: string;
|
|
133
|
+
status: "open" | "under_review" | "planned" | "in_progress" | "completed" | "closed";
|
|
134
|
+
actorId: string;
|
|
135
|
+
kind: "feedback" | "feature_request" | "bug_report";
|
|
136
|
+
body: string;
|
|
137
|
+
upvoteCount: number;
|
|
138
|
+
commentCount: number;
|
|
139
|
+
}, {
|
|
140
|
+
id: import("convex/values").VString<string, "required">;
|
|
141
|
+
creationTime: import("convex/values").VFloat64<number, "required">;
|
|
142
|
+
actorId: import("convex/values").VString<string, "required">;
|
|
143
|
+
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>;
|
|
144
|
+
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>;
|
|
145
|
+
title: import("convex/values").VString<string, "required">;
|
|
146
|
+
body: import("convex/values").VString<string, "required">;
|
|
147
|
+
upvoteCount: import("convex/values").VFloat64<number, "required">;
|
|
148
|
+
commentCount: import("convex/values").VFloat64<number, "required">;
|
|
149
|
+
updatedAt: import("convex/values").VFloat64<number | undefined, "optional">;
|
|
150
|
+
}, "required", "id" | "creationTime" | "title" | "status" | "updatedAt" | "actorId" | "kind" | "body" | "upvoteCount" | "commentCount">;
|
|
151
|
+
/**
|
|
152
|
+
* Component-level activity entry shape with retained diagnostic and triage
|
|
153
|
+
* context. The host wrapper deliberately strips these optional fields from
|
|
154
|
+
* its normal actor-facing API.
|
|
155
|
+
*/
|
|
156
|
+
export declare const activityEntryWithContextValidator: import("convex/values").VObject<{
|
|
157
|
+
updatedAt?: number | undefined;
|
|
158
|
+
id: string;
|
|
159
|
+
creationTime: number;
|
|
160
|
+
title: string;
|
|
161
|
+
status: "open" | "under_review" | "planned" | "in_progress" | "completed" | "closed";
|
|
162
|
+
actorId: string;
|
|
163
|
+
kind: "feedback" | "feature_request" | "bug_report";
|
|
164
|
+
body: string;
|
|
165
|
+
upvoteCount: number;
|
|
166
|
+
commentCount: number;
|
|
167
|
+
metadata?: {
|
|
168
|
+
standard?: Record<string, string | number | boolean> | undefined;
|
|
169
|
+
additional?: Record<string, string | number | boolean> | undefined;
|
|
170
|
+
} | undefined;
|
|
171
|
+
priority?: "low" | "medium" | "high" | undefined;
|
|
172
|
+
roadmap?: {
|
|
173
|
+
description?: string | undefined;
|
|
174
|
+
id: string;
|
|
175
|
+
creationTime: number;
|
|
176
|
+
title: string;
|
|
177
|
+
status: "planned" | "in_progress" | "shipped";
|
|
178
|
+
position: number;
|
|
179
|
+
createdAt: number;
|
|
180
|
+
updatedAt: number;
|
|
181
|
+
feedbackCount: number;
|
|
182
|
+
} | undefined;
|
|
183
|
+
}, {
|
|
184
|
+
id: import("convex/values").VString<string, "required">;
|
|
185
|
+
creationTime: import("convex/values").VFloat64<number, "required">;
|
|
186
|
+
actorId: import("convex/values").VString<string, "required">;
|
|
187
|
+
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>;
|
|
188
|
+
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>;
|
|
189
|
+
title: import("convex/values").VString<string, "required">;
|
|
190
|
+
body: import("convex/values").VString<string, "required">;
|
|
191
|
+
upvoteCount: import("convex/values").VFloat64<number, "required">;
|
|
192
|
+
commentCount: import("convex/values").VFloat64<number, "required">;
|
|
193
|
+
updatedAt: import("convex/values").VFloat64<number | undefined, "optional">;
|
|
194
|
+
metadata: import("convex/values").VObject<{
|
|
195
|
+
standard?: Record<string, string | number | boolean> | undefined;
|
|
196
|
+
additional?: Record<string, string | number | boolean> | undefined;
|
|
197
|
+
} | undefined, {
|
|
198
|
+
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>;
|
|
199
|
+
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>;
|
|
200
|
+
}, "optional", "standard" | "additional" | `standard.${string}` | `additional.${string}`>;
|
|
201
|
+
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>;
|
|
202
|
+
roadmap: import("convex/values").VObject<{
|
|
203
|
+
description?: string | undefined;
|
|
204
|
+
id: string;
|
|
205
|
+
creationTime: number;
|
|
206
|
+
title: string;
|
|
207
|
+
status: "planned" | "in_progress" | "shipped";
|
|
208
|
+
position: number;
|
|
209
|
+
createdAt: number;
|
|
210
|
+
updatedAt: number;
|
|
211
|
+
feedbackCount: number;
|
|
212
|
+
} | undefined, {
|
|
213
|
+
id: import("convex/values").VString<string, "required">;
|
|
214
|
+
creationTime: import("convex/values").VFloat64<number, "required">;
|
|
215
|
+
title: import("convex/values").VString<string, "required">;
|
|
216
|
+
description: import("convex/values").VString<string | undefined, "optional">;
|
|
217
|
+
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>;
|
|
218
|
+
position: import("convex/values").VFloat64<number, "required">;
|
|
219
|
+
createdAt: import("convex/values").VFloat64<number, "required">;
|
|
220
|
+
updatedAt: import("convex/values").VFloat64<number, "required">;
|
|
221
|
+
feedbackCount: import("convex/values").VFloat64<number, "required">;
|
|
222
|
+
}, "optional", "id" | "creationTime" | "title" | "description" | "status" | "position" | "createdAt" | "updatedAt" | "feedbackCount">;
|
|
223
|
+
}, "required", "id" | "creationTime" | "title" | "status" | "updatedAt" | "actorId" | "kind" | "body" | "upvoteCount" | "commentCount" | "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">;
|
|
224
|
+
/** Comment activity with the basic entry context needed by an activity UI. */
|
|
225
|
+
export declare const activityCommentValidator: import("convex/values").VObject<{
|
|
226
|
+
updatedAt?: number | undefined;
|
|
227
|
+
parentCommentId?: string | undefined;
|
|
228
|
+
id: string;
|
|
229
|
+
creationTime: number;
|
|
230
|
+
actorId: string;
|
|
231
|
+
body: string;
|
|
232
|
+
entryId: string;
|
|
233
|
+
depth: number;
|
|
234
|
+
likeCount: number;
|
|
235
|
+
replyCount: number;
|
|
236
|
+
entryTitle: string;
|
|
237
|
+
}, {
|
|
238
|
+
id: import("convex/values").VString<string, "required">;
|
|
239
|
+
creationTime: import("convex/values").VFloat64<number, "required">;
|
|
240
|
+
entryId: import("convex/values").VString<string, "required">;
|
|
241
|
+
entryTitle: import("convex/values").VString<string, "required">;
|
|
242
|
+
parentCommentId: import("convex/values").VString<string | undefined, "optional">;
|
|
243
|
+
actorId: import("convex/values").VString<string, "required">;
|
|
244
|
+
depth: import("convex/values").VFloat64<number, "required">;
|
|
245
|
+
body: import("convex/values").VString<string, "required">;
|
|
246
|
+
likeCount: import("convex/values").VFloat64<number, "required">;
|
|
247
|
+
replyCount: import("convex/values").VFloat64<number, "required">;
|
|
248
|
+
updatedAt: import("convex/values").VFloat64<number | undefined, "optional">;
|
|
249
|
+
}, "required", "id" | "creationTime" | "updatedAt" | "actorId" | "body" | "entryId" | "parentCommentId" | "depth" | "likeCount" | "replyCount" | "entryTitle">;
|
|
250
|
+
/** Resolved target context for an entry-upvote activity record. */
|
|
251
|
+
export declare const entryReactionTargetValidator: import("convex/values").VObject<{
|
|
252
|
+
id: string;
|
|
253
|
+
title: string;
|
|
254
|
+
status: "open" | "under_review" | "planned" | "in_progress" | "completed" | "closed";
|
|
255
|
+
kind: "feedback" | "feature_request" | "bug_report";
|
|
256
|
+
}, {
|
|
257
|
+
id: import("convex/values").VString<string, "required">;
|
|
258
|
+
title: import("convex/values").VString<string, "required">;
|
|
259
|
+
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>;
|
|
260
|
+
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>;
|
|
261
|
+
}, "required", "id" | "title" | "status" | "kind">;
|
|
262
|
+
/** Resolved target context for a comment-like activity record. */
|
|
263
|
+
export declare const commentReactionTargetValidator: import("convex/values").VObject<{
|
|
264
|
+
id: string;
|
|
265
|
+
body: string;
|
|
266
|
+
entryId: string;
|
|
267
|
+
entryTitle: string;
|
|
268
|
+
}, {
|
|
269
|
+
id: import("convex/values").VString<string, "required">;
|
|
270
|
+
body: import("convex/values").VString<string, "required">;
|
|
271
|
+
entryId: import("convex/values").VString<string, "required">;
|
|
272
|
+
entryTitle: import("convex/values").VString<string, "required">;
|
|
273
|
+
}, "required", "id" | "body" | "entryId" | "entryTitle">;
|
|
274
|
+
/** A reaction activity record with a live, resolved target. */
|
|
275
|
+
export declare const feedbackReactionValidator: import("convex/values").VUnion<{
|
|
276
|
+
type: "entry_upvote";
|
|
277
|
+
id: string;
|
|
278
|
+
creationTime: number;
|
|
279
|
+
entry: {
|
|
280
|
+
id: string;
|
|
281
|
+
title: string;
|
|
282
|
+
status: "open" | "under_review" | "planned" | "in_progress" | "completed" | "closed";
|
|
283
|
+
kind: "feedback" | "feature_request" | "bug_report";
|
|
284
|
+
};
|
|
285
|
+
} | {
|
|
286
|
+
type: "comment_like";
|
|
287
|
+
id: string;
|
|
288
|
+
creationTime: number;
|
|
289
|
+
comment: {
|
|
290
|
+
id: string;
|
|
291
|
+
body: string;
|
|
292
|
+
entryId: string;
|
|
293
|
+
entryTitle: string;
|
|
294
|
+
};
|
|
295
|
+
}, [import("convex/values").VObject<{
|
|
296
|
+
type: "entry_upvote";
|
|
297
|
+
id: string;
|
|
298
|
+
creationTime: number;
|
|
299
|
+
entry: {
|
|
300
|
+
id: string;
|
|
301
|
+
title: string;
|
|
302
|
+
status: "open" | "under_review" | "planned" | "in_progress" | "completed" | "closed";
|
|
303
|
+
kind: "feedback" | "feature_request" | "bug_report";
|
|
304
|
+
};
|
|
305
|
+
}, {
|
|
306
|
+
type: import("convex/values").VLiteral<"entry_upvote", "required">;
|
|
307
|
+
id: import("convex/values").VString<string, "required">;
|
|
308
|
+
creationTime: import("convex/values").VFloat64<number, "required">;
|
|
309
|
+
entry: import("convex/values").VObject<{
|
|
310
|
+
id: string;
|
|
311
|
+
title: string;
|
|
312
|
+
status: "open" | "under_review" | "planned" | "in_progress" | "completed" | "closed";
|
|
313
|
+
kind: "feedback" | "feature_request" | "bug_report";
|
|
314
|
+
}, {
|
|
315
|
+
id: import("convex/values").VString<string, "required">;
|
|
316
|
+
title: import("convex/values").VString<string, "required">;
|
|
317
|
+
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>;
|
|
318
|
+
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>;
|
|
319
|
+
}, "required", "id" | "title" | "status" | "kind">;
|
|
320
|
+
}, "required", "type" | "id" | "creationTime" | "entry" | "entry.id" | "entry.title" | "entry.status" | "entry.kind">, import("convex/values").VObject<{
|
|
321
|
+
type: "comment_like";
|
|
322
|
+
id: string;
|
|
323
|
+
creationTime: number;
|
|
324
|
+
comment: {
|
|
325
|
+
id: string;
|
|
326
|
+
body: string;
|
|
327
|
+
entryId: string;
|
|
328
|
+
entryTitle: string;
|
|
329
|
+
};
|
|
330
|
+
}, {
|
|
331
|
+
type: import("convex/values").VLiteral<"comment_like", "required">;
|
|
332
|
+
id: import("convex/values").VString<string, "required">;
|
|
333
|
+
creationTime: import("convex/values").VFloat64<number, "required">;
|
|
334
|
+
comment: import("convex/values").VObject<{
|
|
335
|
+
id: string;
|
|
336
|
+
body: string;
|
|
337
|
+
entryId: string;
|
|
338
|
+
entryTitle: string;
|
|
339
|
+
}, {
|
|
340
|
+
id: import("convex/values").VString<string, "required">;
|
|
341
|
+
body: import("convex/values").VString<string, "required">;
|
|
342
|
+
entryId: import("convex/values").VString<string, "required">;
|
|
343
|
+
entryTitle: import("convex/values").VString<string, "required">;
|
|
344
|
+
}, "required", "id" | "body" | "entryId" | "entryTitle">;
|
|
345
|
+
}, "required", "type" | "id" | "creationTime" | "comment" | "comment.id" | "comment.body" | "comment.entryId" | "comment.entryTitle">], "required", "type" | "id" | "creationTime" | "entry" | "entry.id" | "entry.title" | "entry.status" | "entry.kind" | "comment" | "comment.id" | "comment.body" | "comment.entryId" | "comment.entryTitle">;
|
|
123
346
|
export declare const similarEntriesValidator: import("convex/values").VObject<{
|
|
124
347
|
exact: {
|
|
125
348
|
updatedAt?: number | undefined;
|
|
@@ -343,6 +566,17 @@ export declare const adminEntryValidator: import("convex/values").VObject<{
|
|
|
343
566
|
feedbackCount: import("convex/values").VFloat64<number, "required">;
|
|
344
567
|
}, "optional", "id" | "creationTime" | "title" | "description" | "status" | "position" | "createdAt" | "updatedAt" | "feedbackCount">;
|
|
345
568
|
}, "required", "id" | "creationTime" | "title" | "status" | "updatedAt" | "actorId" | "kind" | "body" | "upvoteCount" | "commentCount" | "viewerHasUpvoted" | "viewerIsAuthor" | "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">;
|
|
569
|
+
type InferredFeedbackActor = Infer<typeof actorValidator>;
|
|
570
|
+
type InferredRoadmapItem = Infer<typeof roadmapItemValidator>;
|
|
571
|
+
type InferredFeedbackMetadata = Infer<typeof feedbackMetadataValidator>;
|
|
572
|
+
type InferredFeedbackEntry = Infer<typeof publicEntryValidator>;
|
|
573
|
+
type InferredAdminFeedbackEntry = Infer<typeof adminEntryValidator>;
|
|
574
|
+
type InferredFeedbackComment = Infer<typeof publicCommentValidator>;
|
|
575
|
+
type InferredActivityEntry = Infer<typeof activityEntryValidator>;
|
|
576
|
+
type InferredActivityEntryWithContext = Infer<typeof activityEntryWithContextValidator>;
|
|
577
|
+
type InferredActivityComment = Infer<typeof activityCommentValidator>;
|
|
578
|
+
type InferredFeedbackReaction = Infer<typeof feedbackReactionValidator>;
|
|
579
|
+
type InferredSimilarEntriesResult = Infer<typeof similarEntriesValidator>;
|
|
346
580
|
/**
|
|
347
581
|
* Category of feedback represented by an entry.
|
|
348
582
|
*
|
|
@@ -374,7 +608,26 @@ export type EntryPriority = Infer<typeof entryPriorityValidator>;
|
|
|
374
608
|
/** Workflow stage for an admin roadmap item. */
|
|
375
609
|
export type RoadmapStatus = Infer<typeof roadmapStatusValidator>;
|
|
376
610
|
/** Admin-managed roadmap item and its current attached-feedback count. */
|
|
377
|
-
export
|
|
611
|
+
export interface RoadmapItem {
|
|
612
|
+
/** Public component document identifier. */
|
|
613
|
+
id: InferredRoadmapItem["id"];
|
|
614
|
+
/** Convex document creation timestamp in milliseconds since the Unix epoch. */
|
|
615
|
+
creationTime: InferredRoadmapItem["creationTime"];
|
|
616
|
+
/** Roadmap item title. */
|
|
617
|
+
title: InferredRoadmapItem["title"];
|
|
618
|
+
/** Optional roadmap item description. */
|
|
619
|
+
description?: InferredRoadmapItem["description"];
|
|
620
|
+
/** Current roadmap workflow stage. */
|
|
621
|
+
status: InferredRoadmapItem["status"];
|
|
622
|
+
/** Relative ordering position among roadmap items. */
|
|
623
|
+
position: InferredRoadmapItem["position"];
|
|
624
|
+
/** Millisecond timestamp at which the roadmap item was created. */
|
|
625
|
+
createdAt: InferredRoadmapItem["createdAt"];
|
|
626
|
+
/** Millisecond timestamp of the latest roadmap item update. */
|
|
627
|
+
updatedAt: InferredRoadmapItem["updatedAt"];
|
|
628
|
+
/** Number of feedback entries currently attached to the roadmap item. */
|
|
629
|
+
feedbackCount: InferredRoadmapItem["feedbackCount"];
|
|
630
|
+
}
|
|
378
631
|
/**
|
|
379
632
|
* Server-side ordering strategy for comments and replies.
|
|
380
633
|
*
|
|
@@ -389,124 +642,207 @@ export type CommentSort = Infer<typeof commentSortValidator>;
|
|
|
389
642
|
*
|
|
390
643
|
* The component does not access the host application's authentication system
|
|
391
644
|
* directly. The host resolves its current user/session into this shape.
|
|
392
|
-
*
|
|
393
|
-
* @property id
|
|
394
|
-
* Stable identifier for the actor. This can be a Clerk ID, Convex Auth ID,
|
|
395
|
-
* application user ID, anonymous installation ID, or another stable
|
|
396
|
-
* host-controlled identifier.
|
|
397
|
-
*
|
|
398
|
-
* @property isAdmin
|
|
399
|
-
* Whether the actor can perform admin-only actions such as changing entry
|
|
400
|
-
* status or modifying content they do not own. When omitted, the deprecated
|
|
401
|
-
* `isModerator` field is used.
|
|
402
|
-
*
|
|
403
|
-
* @property isModerator
|
|
404
|
-
* @deprecated Use `isAdmin`.
|
|
405
645
|
*/
|
|
406
|
-
export
|
|
646
|
+
export interface FeedbackActor {
|
|
647
|
+
/**
|
|
648
|
+
* Stable identifier for the actor. This can be a Clerk ID, Convex Auth ID,
|
|
649
|
+
* application user ID, anonymous installation ID, or another stable
|
|
650
|
+
* host-controlled identifier.
|
|
651
|
+
*/
|
|
652
|
+
id: InferredFeedbackActor["id"];
|
|
653
|
+
/**
|
|
654
|
+
* Whether the actor can perform admin-only actions such as changing entry
|
|
655
|
+
* status or modifying content they do not own. When omitted, the deprecated
|
|
656
|
+
* `isModerator` field is used.
|
|
657
|
+
*/
|
|
658
|
+
isAdmin?: InferredFeedbackActor["isAdmin"];
|
|
659
|
+
/** @deprecated Use `isAdmin`. */
|
|
660
|
+
isModerator?: InferredFeedbackActor["isModerator"];
|
|
661
|
+
}
|
|
407
662
|
/** Scalar value accepted in entry diagnostic metadata. */
|
|
408
663
|
export type FeedbackMetadataValue = Infer<typeof feedbackMetadataValueValidator>;
|
|
409
664
|
/** Flat metadata values grouped by their source. */
|
|
410
|
-
export
|
|
411
|
-
/**
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
* with hosts that have not yet redeployed the updated wrapper.
|
|
454
|
-
*
|
|
455
|
-
* @property metadata
|
|
456
|
-
* Creation-time diagnostic metadata. Present only when `getEntry` is queried
|
|
457
|
-
* by an admin. Ordinary entry lists, searches, and non-admin reads omit
|
|
458
|
-
* this property.
|
|
459
|
-
*/
|
|
460
|
-
export type FeedbackEntry = Infer<typeof publicEntryValidator>;
|
|
665
|
+
export interface FeedbackMetadata {
|
|
666
|
+
/** Standard diagnostic metadata collected by the component. */
|
|
667
|
+
standard?: InferredFeedbackMetadata["standard"];
|
|
668
|
+
/** Additional host-provided diagnostic metadata. */
|
|
669
|
+
additional?: InferredFeedbackMetadata["additional"];
|
|
670
|
+
}
|
|
671
|
+
/** Public representation of a feedback, feature-request, or bug-report entry. */
|
|
672
|
+
export interface FeedbackEntry {
|
|
673
|
+
/** Public component document identifier. */
|
|
674
|
+
id: InferredFeedbackEntry["id"];
|
|
675
|
+
/** Convex document creation timestamp in milliseconds since the Unix epoch. */
|
|
676
|
+
creationTime: InferredFeedbackEntry["creationTime"];
|
|
677
|
+
/** Stable identifier of the actor who created the entry. */
|
|
678
|
+
actorId: InferredFeedbackEntry["actorId"];
|
|
679
|
+
/** Entry category. */
|
|
680
|
+
kind: InferredFeedbackEntry["kind"];
|
|
681
|
+
/** Current workflow status. */
|
|
682
|
+
status: InferredFeedbackEntry["status"];
|
|
683
|
+
/** User-provided entry title. */
|
|
684
|
+
title: InferredFeedbackEntry["title"];
|
|
685
|
+
/** User-provided entry description. */
|
|
686
|
+
body: InferredFeedbackEntry["body"];
|
|
687
|
+
/** Denormalized number of actors currently upvoting this entry. */
|
|
688
|
+
upvoteCount: InferredFeedbackEntry["upvoteCount"];
|
|
689
|
+
/** Denormalized total number of comments belonging to the entry, including nested replies. */
|
|
690
|
+
commentCount: InferredFeedbackEntry["commentCount"];
|
|
691
|
+
/** Millisecond timestamp of the most recent content update. Absent when the entry has never been edited. */
|
|
692
|
+
updatedAt?: InferredFeedbackEntry["updatedAt"];
|
|
693
|
+
/** Whether the actor associated with the current query has upvoted the entry. `false` when no viewer actor is available. */
|
|
694
|
+
viewerHasUpvoted: InferredFeedbackEntry["viewerHasUpvoted"];
|
|
695
|
+
/**
|
|
696
|
+
* Whether the actor associated with the current query created the entry.
|
|
697
|
+
* `false` when no viewer actor is available. This is optional for compatibility
|
|
698
|
+
* with hosts that have not yet redeployed the updated wrapper.
|
|
699
|
+
*/
|
|
700
|
+
viewerIsAuthor?: InferredFeedbackEntry["viewerIsAuthor"];
|
|
701
|
+
/**
|
|
702
|
+
* Creation-time diagnostic metadata. Present only when `getEntry` is queried
|
|
703
|
+
* by an admin. Ordinary entry lists, searches, and non-admin reads omit this
|
|
704
|
+
* property.
|
|
705
|
+
*/
|
|
706
|
+
metadata?: InferredFeedbackEntry["metadata"];
|
|
707
|
+
}
|
|
461
708
|
/** Feedback entry enriched with private triage metadata for admin clients. */
|
|
462
|
-
export
|
|
709
|
+
export interface AdminFeedbackEntry {
|
|
710
|
+
/** Public component document identifier. */
|
|
711
|
+
id: InferredAdminFeedbackEntry["id"];
|
|
712
|
+
/** Convex document creation timestamp in milliseconds since the Unix epoch. */
|
|
713
|
+
creationTime: InferredAdminFeedbackEntry["creationTime"];
|
|
714
|
+
/** Stable identifier of the actor who created the entry. */
|
|
715
|
+
actorId: InferredAdminFeedbackEntry["actorId"];
|
|
716
|
+
/** Entry category. */
|
|
717
|
+
kind: InferredAdminFeedbackEntry["kind"];
|
|
718
|
+
/** Current workflow status. */
|
|
719
|
+
status: InferredAdminFeedbackEntry["status"];
|
|
720
|
+
/** User-provided entry title. */
|
|
721
|
+
title: InferredAdminFeedbackEntry["title"];
|
|
722
|
+
/** User-provided entry description. */
|
|
723
|
+
body: InferredAdminFeedbackEntry["body"];
|
|
724
|
+
/** Denormalized number of actors currently upvoting this entry. */
|
|
725
|
+
upvoteCount: InferredAdminFeedbackEntry["upvoteCount"];
|
|
726
|
+
/** Denormalized total number of comments belonging to the entry, including nested replies. */
|
|
727
|
+
commentCount: InferredAdminFeedbackEntry["commentCount"];
|
|
728
|
+
/** Millisecond timestamp of the most recent content update. Absent when the entry has never been edited. */
|
|
729
|
+
updatedAt?: InferredAdminFeedbackEntry["updatedAt"];
|
|
730
|
+
/** Whether the actor associated with the current query has upvoted the entry. `false` when no viewer actor is available. */
|
|
731
|
+
viewerHasUpvoted: InferredAdminFeedbackEntry["viewerHasUpvoted"];
|
|
732
|
+
/** Whether the actor associated with the current query created the entry. */
|
|
733
|
+
viewerIsAuthor?: InferredAdminFeedbackEntry["viewerIsAuthor"];
|
|
734
|
+
/** Creation-time diagnostic metadata returned to admin clients. */
|
|
735
|
+
metadata?: InferredAdminFeedbackEntry["metadata"];
|
|
736
|
+
/** Internal triage priority. */
|
|
737
|
+
priority?: InferredAdminFeedbackEntry["priority"];
|
|
738
|
+
/** Roadmap item attached to the entry, when one exists. */
|
|
739
|
+
roadmap?: InferredAdminFeedbackEntry["roadmap"];
|
|
740
|
+
}
|
|
463
741
|
/**
|
|
464
742
|
* Public representation of a comment or reply.
|
|
465
743
|
*
|
|
466
744
|
* Comments are returned one level at a time. Child comments are not included
|
|
467
745
|
* automatically; query them separately using the comment's `id` as
|
|
468
746
|
* `parentCommentId`.
|
|
469
|
-
*
|
|
470
|
-
* @property id
|
|
471
|
-
* Public component document identifier.
|
|
472
|
-
*
|
|
473
|
-
* @property creationTime
|
|
474
|
-
* Convex document creation timestamp in milliseconds since the Unix epoch.
|
|
475
|
-
*
|
|
476
|
-
* @property entryId
|
|
477
|
-
* Entry this comment belongs to.
|
|
478
|
-
*
|
|
479
|
-
* @property parentCommentId
|
|
480
|
-
* Direct parent comment. Absent for top-level comments.
|
|
481
|
-
*
|
|
482
|
-
* @property actorId
|
|
483
|
-
* Stable identifier of the actor who created the comment.
|
|
484
|
-
*
|
|
485
|
-
* @property depth
|
|
486
|
-
* Zero-based nesting depth. Top-level comments have depth `0`.
|
|
487
|
-
*
|
|
488
|
-
* @property body
|
|
489
|
-
* User-provided comment text. `null` when the comment was soft-deleted so
|
|
490
|
-
* nested replies can retain their place in the conversation.
|
|
491
|
-
*
|
|
492
|
-
* @property likeCount
|
|
493
|
-
* Denormalized number of actors currently liking this comment.
|
|
494
|
-
*
|
|
495
|
-
* @property replyCount
|
|
496
|
-
* Number of direct child replies. Descendants below those direct children are
|
|
497
|
-
* not included in this count.
|
|
498
|
-
*
|
|
499
|
-
* @property updatedAt
|
|
500
|
-
* Millisecond timestamp of the latest edit, when the comment has been edited.
|
|
501
|
-
*
|
|
502
|
-
* @property deletedAt
|
|
503
|
-
* Millisecond timestamp at which the comment was soft-deleted.
|
|
504
|
-
*
|
|
505
|
-
* @property viewerHasLiked
|
|
506
|
-
* Whether the actor associated with the current query likes this comment.
|
|
507
|
-
* `false` when no viewer actor is available.
|
|
508
747
|
*/
|
|
509
|
-
export
|
|
748
|
+
export interface FeedbackComment {
|
|
749
|
+
/** Public component document identifier. */
|
|
750
|
+
id: InferredFeedbackComment["id"];
|
|
751
|
+
/** Convex document creation timestamp in milliseconds since the Unix epoch. */
|
|
752
|
+
creationTime: InferredFeedbackComment["creationTime"];
|
|
753
|
+
/** Entry this comment belongs to. */
|
|
754
|
+
entryId: InferredFeedbackComment["entryId"];
|
|
755
|
+
/** Direct parent comment. Absent for top-level comments. */
|
|
756
|
+
parentCommentId?: InferredFeedbackComment["parentCommentId"];
|
|
757
|
+
/** Stable identifier of the actor who created the comment. */
|
|
758
|
+
actorId: InferredFeedbackComment["actorId"];
|
|
759
|
+
/** Zero-based nesting depth. Top-level comments have depth `0`. */
|
|
760
|
+
depth: InferredFeedbackComment["depth"];
|
|
761
|
+
/** User-provided comment text. */
|
|
762
|
+
body: InferredFeedbackComment["body"];
|
|
763
|
+
/** Denormalized number of actors currently liking this comment. */
|
|
764
|
+
likeCount: InferredFeedbackComment["likeCount"];
|
|
765
|
+
/** Number of direct child replies. Descendants below those direct children are not included in this count. */
|
|
766
|
+
replyCount: InferredFeedbackComment["replyCount"];
|
|
767
|
+
/** Millisecond timestamp of the latest edit, when the comment has been edited. */
|
|
768
|
+
updatedAt?: InferredFeedbackComment["updatedAt"];
|
|
769
|
+
/** Whether the actor associated with the current query likes this comment. `false` when no viewer actor is available. */
|
|
770
|
+
viewerHasLiked: InferredFeedbackComment["viewerHasLiked"];
|
|
771
|
+
}
|
|
772
|
+
/** Entry created by the actor used for an actor-scoped activity query. */
|
|
773
|
+
export interface FeedbackActivityEntry {
|
|
774
|
+
/** Public component document identifier. */
|
|
775
|
+
id: InferredActivityEntry["id"];
|
|
776
|
+
/** Convex document creation timestamp in milliseconds since the Unix epoch. */
|
|
777
|
+
creationTime: InferredActivityEntry["creationTime"];
|
|
778
|
+
/** Stable identifier of the actor who created the entry. */
|
|
779
|
+
actorId: InferredActivityEntry["actorId"];
|
|
780
|
+
/** Entry category. */
|
|
781
|
+
kind: InferredActivityEntry["kind"];
|
|
782
|
+
/** Current workflow status. */
|
|
783
|
+
status: InferredActivityEntry["status"];
|
|
784
|
+
/** User-provided entry title. */
|
|
785
|
+
title: InferredActivityEntry["title"];
|
|
786
|
+
/** User-provided entry description. */
|
|
787
|
+
body: InferredActivityEntry["body"];
|
|
788
|
+
/** Denormalized number of actors currently upvoting this entry. */
|
|
789
|
+
upvoteCount: InferredActivityEntry["upvoteCount"];
|
|
790
|
+
/** Denormalized total number of comments belonging to the entry. */
|
|
791
|
+
commentCount: InferredActivityEntry["commentCount"];
|
|
792
|
+
/** Millisecond timestamp of the most recent content update. */
|
|
793
|
+
updatedAt?: InferredActivityEntry["updatedAt"];
|
|
794
|
+
}
|
|
795
|
+
/**
|
|
796
|
+
* Component-only activity entry shape with retained diagnostic and triage
|
|
797
|
+
* context. It is used by trusted server consumers, not the normal `listUser`
|
|
798
|
+
* wrappers.
|
|
799
|
+
*/
|
|
800
|
+
export interface FeedbackActivityEntryWithContext extends FeedbackActivityEntry {
|
|
801
|
+
metadata?: InferredActivityEntryWithContext["metadata"];
|
|
802
|
+
priority?: InferredActivityEntryWithContext["priority"];
|
|
803
|
+
roadmap?: InferredActivityEntryWithContext["roadmap"];
|
|
804
|
+
}
|
|
805
|
+
/** Comment created by the actor used for an actor-scoped activity query. */
|
|
806
|
+
export interface FeedbackActivityComment {
|
|
807
|
+
/** Public component document identifier. */
|
|
808
|
+
id: InferredActivityComment["id"];
|
|
809
|
+
/** Convex document creation timestamp in milliseconds since the Unix epoch. */
|
|
810
|
+
creationTime: InferredActivityComment["creationTime"];
|
|
811
|
+
/** Entry this comment belongs to. */
|
|
812
|
+
entryId: InferredActivityComment["entryId"];
|
|
813
|
+
/** Current entry title. Activity rows with missing entries are removed. */
|
|
814
|
+
entryTitle: InferredActivityComment["entryTitle"];
|
|
815
|
+
/** Direct parent comment. Absent for top-level comments. */
|
|
816
|
+
parentCommentId?: InferredActivityComment["parentCommentId"];
|
|
817
|
+
/** Stable identifier of the actor who created the comment. */
|
|
818
|
+
actorId: InferredActivityComment["actorId"];
|
|
819
|
+
/** Zero-based nesting depth. */
|
|
820
|
+
depth: InferredActivityComment["depth"];
|
|
821
|
+
/** User-provided comment text. */
|
|
822
|
+
body: InferredActivityComment["body"];
|
|
823
|
+
/** Denormalized number of actors currently liking this comment. */
|
|
824
|
+
likeCount: InferredActivityComment["likeCount"];
|
|
825
|
+
/** Number of direct child replies. */
|
|
826
|
+
replyCount: InferredActivityComment["replyCount"];
|
|
827
|
+
/** Millisecond timestamp of the latest edit, when edited. */
|
|
828
|
+
updatedAt?: InferredActivityComment["updatedAt"];
|
|
829
|
+
}
|
|
830
|
+
/** Resolved entry context for an entry-upvote activity record. */
|
|
831
|
+
export interface FeedbackEntryReactionTarget {
|
|
832
|
+
id: InferredActivityEntry["id"];
|
|
833
|
+
title: string;
|
|
834
|
+
kind: EntryKind;
|
|
835
|
+
status: EntryStatus;
|
|
836
|
+
}
|
|
837
|
+
/** Resolved comment context for a comment-like activity record. */
|
|
838
|
+
export interface FeedbackCommentReactionTarget {
|
|
839
|
+
id: InferredActivityComment["id"];
|
|
840
|
+
body: string;
|
|
841
|
+
entryId: InferredActivityComment["entryId"];
|
|
842
|
+
entryTitle: string;
|
|
843
|
+
}
|
|
844
|
+
/** A reaction created by the actor used for an actor-scoped activity query. */
|
|
845
|
+
export type FeedbackReaction = InferredFeedbackReaction;
|
|
510
846
|
/**
|
|
511
847
|
* Duplicate-detection result for a proposed entry.
|
|
512
848
|
*
|
|
@@ -522,13 +858,12 @@ export type FeedbackComment = Infer<typeof publicCommentValidator>;
|
|
|
522
858
|
* - 0 exact matches → `0 exact + at most 3 similar`
|
|
523
859
|
*
|
|
524
860
|
* An entry returned in `exact` is never repeated in `similar`.
|
|
525
|
-
*
|
|
526
|
-
* @property exact
|
|
527
|
-
* Entries whose normalized title exactly matches the proposed title.
|
|
528
|
-
*
|
|
529
|
-
* @property similar
|
|
530
|
-
* Full-text matches ordered by search relevance after exact matches have been
|
|
531
|
-
* removed.
|
|
532
861
|
*/
|
|
533
|
-
export
|
|
862
|
+
export interface SimilarEntriesResult {
|
|
863
|
+
/** Entries whose normalized title exactly matches the proposed title. */
|
|
864
|
+
exact: InferredSimilarEntriesResult["exact"];
|
|
865
|
+
/** Full-text matches ordered by search relevance after exact matches have been removed. */
|
|
866
|
+
similar: InferredSimilarEntriesResult["similar"];
|
|
867
|
+
}
|
|
868
|
+
export {};
|
|
534
869
|
//# sourceMappingURL=model.d.ts.map
|