convex-feedback 0.1.5 → 0.2.0-beta.1
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 +70 -27
- package/dist/.tsbuildinfo +1 -1
- package/dist/client/api.d.ts +76 -1
- package/dist/client/api.d.ts.map +1 -1
- package/dist/client/config.d.ts +1 -1
- package/dist/client/index.d.ts +9 -5
- package/dist/client/index.d.ts.map +1 -1
- package/dist/client/index.js +253 -8
- package/dist/client/index.js.map +1 -1
- package/dist/component/_generated/api.d.ts +4 -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 +293 -5
- package/dist/component/_generated/component.d.ts.map +1 -1
- package/dist/component/admin.d.ts +130 -0
- package/dist/component/admin.d.ts.map +1 -0
- package/dist/component/admin.js +125 -0
- package/dist/component/admin.js.map +1 -0
- package/dist/component/comments.d.ts +7 -5
- package/dist/component/comments.d.ts.map +1 -1
- package/dist/component/comments.js +3 -3
- package/dist/component/comments.js.map +1 -1
- package/dist/component/entries.d.ts +29 -18
- package/dist/component/entries.d.ts.map +1 -1
- package/dist/component/entries.js +27 -6
- package/dist/component/entries.js.map +1 -1
- package/dist/component/helpers.d.ts +3 -1
- package/dist/component/helpers.d.ts.map +1 -1
- package/dist/component/helpers.js +28 -0
- package/dist/component/helpers.js.map +1 -1
- package/dist/component/model.d.ts +140 -24
- package/dist/component/model.d.ts.map +1 -1
- package/dist/component/model.js +30 -1
- package/dist/component/model.js.map +1 -1
- package/dist/component/roadmap.d.ts +166 -0
- package/dist/component/roadmap.d.ts.map +1 -0
- package/dist/component/roadmap.js +534 -0
- package/dist/component/roadmap.js.map +1 -0
- package/dist/component/schema.d.ts +61 -5
- package/dist/component/schema.d.ts.map +1 -1
- package/dist/component/schema.js +48 -2
- package/dist/component/schema.js.map +1 -1
- package/dist/react/index.d.ts +169 -12
- package/dist/react/index.d.ts.map +1 -1
- package/dist/react/index.js +72 -1
- package/dist/react/index.js.map +1 -1
- package/dist/test.d.ts +61 -5
- package/dist/test.d.ts.map +1 -1
- package/package.json +3 -2
- package/src/client/README.md +1 -1
- package/src/client/api.ts +176 -0
- package/src/client/config.ts +1 -1
- package/src/client/index.ts +330 -13
- package/src/component/README.md +1 -1
- package/src/component/_generated/api.ts +4 -0
- package/src/component/_generated/component.ts +371 -9
- package/src/component/admin.ts +180 -0
- package/src/component/comments.ts +3 -2
- package/src/component/entries.ts +29 -5
- package/src/component/helpers.ts +44 -1
- package/src/component/model.ts +65 -4
- package/src/component/roadmap.ts +627 -0
- package/src/component/schema.ts +51 -1
- package/src/react/README.md +2 -2
- package/src/react/index.ts +139 -4
|
@@ -5,11 +5,13 @@ declare const schema: import("convex/server").SchemaDefinition<{
|
|
|
5
5
|
standard?: Record<string, string | number | boolean> | undefined;
|
|
6
6
|
additional?: Record<string, string | number | boolean> | undefined;
|
|
7
7
|
} | undefined;
|
|
8
|
+
priority?: "low" | "medium" | "high" | undefined;
|
|
8
9
|
statusFilter?: "open" | "closed" | undefined;
|
|
10
|
+
roadmapId?: import("convex/values").GenericId<"roadmap"> | undefined;
|
|
11
|
+
title: string;
|
|
12
|
+
status: "open" | "under_review" | "planned" | "in_progress" | "completed" | "closed";
|
|
9
13
|
actorId: string;
|
|
10
14
|
kind: "feedback" | "feature_request" | "bug_report";
|
|
11
|
-
status: "open" | "under_review" | "planned" | "in_progress" | "completed" | "closed";
|
|
12
|
-
title: string;
|
|
13
15
|
body: string;
|
|
14
16
|
upvoteCount: number;
|
|
15
17
|
commentCount: number;
|
|
@@ -34,7 +36,9 @@ declare const schema: import("convex/server").SchemaDefinition<{
|
|
|
34
36
|
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>;
|
|
35
37
|
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>;
|
|
36
38
|
}, "optional", "standard" | "additional" | `standard.${string}` | `additional.${string}`>;
|
|
37
|
-
|
|
39
|
+
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>;
|
|
40
|
+
roadmapId: import("convex/values").VId<import("convex/values").GenericId<"roadmap"> | undefined, "optional">;
|
|
41
|
+
}, "required", "title" | "status" | "updatedAt" | "actorId" | "kind" | "body" | "upvoteCount" | "commentCount" | "metadata" | "metadata.standard" | "metadata.additional" | `metadata.standard.${string}` | `metadata.additional.${string}` | "priority" | "statusFilter" | "normalizedTitle" | "searchText" | "roadmapId">, {
|
|
38
42
|
by_kind: ["kind", "_creationTime"];
|
|
39
43
|
by_status: ["status", "_creationTime"];
|
|
40
44
|
by_kind_status: ["kind", "status", "_creationTime"];
|
|
@@ -48,12 +52,64 @@ declare const schema: import("convex/server").SchemaDefinition<{
|
|
|
48
52
|
by_kind_status_filter_upvotes: ["kind", "statusFilter", "upvoteCount", "_creationTime"];
|
|
49
53
|
by_normalized_title: ["normalizedTitle", "_creationTime"];
|
|
50
54
|
by_kind_normalized_title: ["kind", "normalizedTitle", "_creationTime"];
|
|
55
|
+
by_priority: ["priority", "_creationTime"];
|
|
56
|
+
by_roadmap_id: ["roadmapId", "_creationTime"];
|
|
51
57
|
}, {
|
|
52
58
|
search: {
|
|
53
59
|
searchField: "searchText";
|
|
54
|
-
filterFields: "kind" | "
|
|
60
|
+
filterFields: "status" | "kind" | "priority" | "statusFilter";
|
|
55
61
|
};
|
|
56
62
|
}, {}>;
|
|
63
|
+
roadmap: import("convex/server").TableDefinition<import("convex/values").VObject<{
|
|
64
|
+
description?: string | undefined;
|
|
65
|
+
deletingAt?: number | undefined;
|
|
66
|
+
rebalanceId?: string | undefined;
|
|
67
|
+
rebalanceRank?: number | undefined;
|
|
68
|
+
rebalancePosition?: number | undefined;
|
|
69
|
+
title: string;
|
|
70
|
+
status: "planned" | "in_progress" | "shipped";
|
|
71
|
+
position: number;
|
|
72
|
+
createdAt: number;
|
|
73
|
+
updatedAt: number;
|
|
74
|
+
feedbackCount: number;
|
|
75
|
+
}, {
|
|
76
|
+
title: import("convex/values").VString<string, "required">;
|
|
77
|
+
description: import("convex/values").VString<string | undefined, "optional">;
|
|
78
|
+
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>;
|
|
79
|
+
position: import("convex/values").VFloat64<number, "required">;
|
|
80
|
+
feedbackCount: import("convex/values").VFloat64<number, "required">;
|
|
81
|
+
createdAt: import("convex/values").VFloat64<number, "required">;
|
|
82
|
+
updatedAt: import("convex/values").VFloat64<number, "required">;
|
|
83
|
+
deletingAt: import("convex/values").VFloat64<number | undefined, "optional">;
|
|
84
|
+
rebalanceId: import("convex/values").VString<string | undefined, "optional">;
|
|
85
|
+
rebalanceRank: import("convex/values").VFloat64<number | undefined, "optional">;
|
|
86
|
+
rebalancePosition: import("convex/values").VFloat64<number | undefined, "optional">;
|
|
87
|
+
}, "required", "title" | "description" | "status" | "position" | "createdAt" | "updatedAt" | "feedbackCount" | "deletingAt" | "rebalanceId" | "rebalanceRank" | "rebalancePosition">, {
|
|
88
|
+
by_status_and_position: ["status", "position", "_creationTime"];
|
|
89
|
+
by_status_deleting_at_position: ["status", "deletingAt", "position", "_creationTime"];
|
|
90
|
+
by_deleting_at_and_position: ["deletingAt", "position", "_creationTime"];
|
|
91
|
+
by_status_rebalance_rank: ["status", "rebalanceId", "rebalanceRank", "_creationTime"];
|
|
92
|
+
by_status_deleting_at_rebalance_id_position: ["status", "deletingAt", "rebalanceId", "rebalancePosition", "_creationTime"];
|
|
93
|
+
by_position: ["position", "_creationTime"];
|
|
94
|
+
}, {
|
|
95
|
+
search_title: {
|
|
96
|
+
searchField: "title";
|
|
97
|
+
filterFields: "status" | "deletingAt";
|
|
98
|
+
};
|
|
99
|
+
}, {}>;
|
|
100
|
+
roadmapRebalances: import("convex/server").TableDefinition<import("convex/values").VObject<{
|
|
101
|
+
visibleGeneration?: string | undefined;
|
|
102
|
+
activeGeneration?: string | undefined;
|
|
103
|
+
status: "planned" | "in_progress" | "shipped";
|
|
104
|
+
nextGeneration: number;
|
|
105
|
+
}, {
|
|
106
|
+
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>;
|
|
107
|
+
nextGeneration: import("convex/values").VFloat64<number, "required">;
|
|
108
|
+
visibleGeneration: import("convex/values").VString<string | undefined, "optional">;
|
|
109
|
+
activeGeneration: import("convex/values").VString<string | undefined, "optional">;
|
|
110
|
+
}, "required", "status" | "nextGeneration" | "visibleGeneration" | "activeGeneration">, {
|
|
111
|
+
by_status: ["status", "_creationTime"];
|
|
112
|
+
}, {}, {}>;
|
|
57
113
|
comments: import("convex/server").TableDefinition<import("convex/values").VObject<{
|
|
58
114
|
updatedAt?: number | undefined;
|
|
59
115
|
parentCommentId?: import("convex/values").GenericId<"comments"> | undefined;
|
|
@@ -74,7 +130,7 @@ declare const schema: import("convex/server").SchemaDefinition<{
|
|
|
74
130
|
replyCount: import("convex/values").VFloat64<number, "required">;
|
|
75
131
|
updatedAt: import("convex/values").VFloat64<number | undefined, "optional">;
|
|
76
132
|
deletedAt: import("convex/values").VFloat64<number | undefined, "optional">;
|
|
77
|
-
}, "required", "
|
|
133
|
+
}, "required", "updatedAt" | "actorId" | "body" | "entryId" | "parentCommentId" | "depth" | "likeCount" | "replyCount" | "deletedAt">, {
|
|
78
134
|
by_entry_parent: ["entryId", "parentCommentId", "_creationTime"];
|
|
79
135
|
by_entry_parent_likes: ["entryId", "parentCommentId", "likeCount", "_creationTime"];
|
|
80
136
|
}, {}, {}>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/component/schema.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/component/schema.ts"],"names":[],"mappings":"AAYA,QAAA,MAAM,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QA8GV,CAAC;AAEH,eAAe,MAAM,CAAC"}
|
package/dist/component/schema.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { defineSchema, defineTable } from "convex/server";
|
|
2
2
|
import { v } from "convex/values";
|
|
3
|
-
import { entryKindValidator, entryStatusFilterValidator, entryStatusValidator, feedbackMetadataValidator, } from "./model.js";
|
|
3
|
+
import { entryKindValidator, entryPriorityValidator, entryStatusFilterValidator, entryStatusValidator, feedbackMetadataValidator, roadmapStatusValidator, } from "./model.js";
|
|
4
4
|
const schema = defineSchema({
|
|
5
5
|
entries: defineTable({
|
|
6
6
|
actorId: v.string(),
|
|
@@ -15,6 +15,8 @@ const schema = defineSchema({
|
|
|
15
15
|
commentCount: v.number(),
|
|
16
16
|
updatedAt: v.optional(v.number()),
|
|
17
17
|
metadata: v.optional(feedbackMetadataValidator),
|
|
18
|
+
priority: v.optional(entryPriorityValidator),
|
|
19
|
+
roadmapId: v.optional(v.id("roadmap")),
|
|
18
20
|
})
|
|
19
21
|
.index("by_kind", ["kind"])
|
|
20
22
|
.index("by_status", ["status"])
|
|
@@ -33,10 +35,54 @@ const schema = defineSchema({
|
|
|
33
35
|
])
|
|
34
36
|
.index("by_normalized_title", ["normalizedTitle"])
|
|
35
37
|
.index("by_kind_normalized_title", ["kind", "normalizedTitle"])
|
|
38
|
+
.index("by_priority", ["priority"])
|
|
39
|
+
.index("by_roadmap_id", ["roadmapId"])
|
|
36
40
|
.searchIndex("search", {
|
|
37
41
|
searchField: "searchText",
|
|
38
|
-
filterFields: ["kind", "status", "statusFilter"],
|
|
42
|
+
filterFields: ["kind", "status", "statusFilter", "priority"],
|
|
39
43
|
}),
|
|
44
|
+
roadmap: defineTable({
|
|
45
|
+
title: v.string(),
|
|
46
|
+
description: v.optional(v.string()),
|
|
47
|
+
status: roadmapStatusValidator,
|
|
48
|
+
position: v.number(),
|
|
49
|
+
feedbackCount: v.number(),
|
|
50
|
+
createdAt: v.number(),
|
|
51
|
+
updatedAt: v.number(),
|
|
52
|
+
deletingAt: v.optional(v.number()),
|
|
53
|
+
rebalanceId: v.optional(v.string()),
|
|
54
|
+
rebalanceRank: v.optional(v.number()),
|
|
55
|
+
rebalancePosition: v.optional(v.number()),
|
|
56
|
+
})
|
|
57
|
+
.index("by_status_and_position", ["status", "position"])
|
|
58
|
+
.index("by_status_deleting_at_position", [
|
|
59
|
+
"status",
|
|
60
|
+
"deletingAt",
|
|
61
|
+
"position",
|
|
62
|
+
])
|
|
63
|
+
.index("by_deleting_at_and_position", ["deletingAt", "position"])
|
|
64
|
+
.index("by_status_rebalance_rank", [
|
|
65
|
+
"status",
|
|
66
|
+
"rebalanceId",
|
|
67
|
+
"rebalanceRank",
|
|
68
|
+
])
|
|
69
|
+
.index("by_status_deleting_at_rebalance_id_position", [
|
|
70
|
+
"status",
|
|
71
|
+
"deletingAt",
|
|
72
|
+
"rebalanceId",
|
|
73
|
+
"rebalancePosition",
|
|
74
|
+
])
|
|
75
|
+
.index("by_position", ["position"])
|
|
76
|
+
.searchIndex("search_title", {
|
|
77
|
+
searchField: "title",
|
|
78
|
+
filterFields: ["status", "deletingAt"],
|
|
79
|
+
}),
|
|
80
|
+
roadmapRebalances: defineTable({
|
|
81
|
+
status: roadmapStatusValidator,
|
|
82
|
+
nextGeneration: v.number(),
|
|
83
|
+
visibleGeneration: v.optional(v.string()),
|
|
84
|
+
activeGeneration: v.optional(v.string()),
|
|
85
|
+
}).index("by_status", ["status"]),
|
|
40
86
|
comments: defineTable({
|
|
41
87
|
entryId: v.id("entries"),
|
|
42
88
|
parentCommentId: v.optional(v.id("comments")),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/component/schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC1D,OAAO,EAAE,CAAC,EAAE,MAAM,eAAe,CAAC;AAElC,OAAO,EACL,kBAAkB,EAClB,0BAA0B,EAC1B,oBAAoB,EACpB,yBAAyB,
|
|
1
|
+
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/component/schema.ts"],"names":[],"mappings":"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"}
|
package/dist/react/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { FeedbackPublicApi } from "../client/api.js";
|
|
2
|
-
import type { CommentSort, EntryKind, EntrySort, EntryStatus, EntryStatusFilter } from "../component/model.js";
|
|
2
|
+
import type { CommentSort, EntryKind, EntryPriority, EntrySort, EntryStatus, EntryStatusFilter, RoadmapStatus } from "../component/model.js";
|
|
3
3
|
/**
|
|
4
4
|
* Client-side pagination defaults used by hooks created with
|
|
5
5
|
* `createFeedbackHooks`.
|
|
@@ -10,7 +10,8 @@ import type { CommentSort, EntryKind, EntrySort, EntryStatus, EntryStatusFilter
|
|
|
10
10
|
*/
|
|
11
11
|
export interface FeedbackHooksOptions {
|
|
12
12
|
/**
|
|
13
|
-
* Number of entries initially requested by
|
|
13
|
+
* Number of entries initially requested by entry-list hooks, including the
|
|
14
|
+
* public board, admin inbox, admin search, and roadmap attachments.
|
|
14
15
|
*
|
|
15
16
|
* @default 20
|
|
16
17
|
*/
|
|
@@ -28,6 +29,12 @@ export interface FeedbackHooksOptions {
|
|
|
28
29
|
* @default 10
|
|
29
30
|
*/
|
|
30
31
|
replyPageSize?: number;
|
|
32
|
+
/**
|
|
33
|
+
* Number of roadmap items initially requested by `useRoadmap`.
|
|
34
|
+
*
|
|
35
|
+
* @default 30
|
|
36
|
+
*/
|
|
37
|
+
roadmapPageSize?: number;
|
|
31
38
|
}
|
|
32
39
|
/**
|
|
33
40
|
* Arguments accepted by `useEntries`.
|
|
@@ -108,6 +115,14 @@ export interface SearchEntriesArgs {
|
|
|
108
115
|
*/
|
|
109
116
|
limit?: number;
|
|
110
117
|
}
|
|
118
|
+
export interface UseAdminEntriesArgs {
|
|
119
|
+
kinds?: readonly EntryKind[];
|
|
120
|
+
status?: EntryStatus;
|
|
121
|
+
priority?: EntryPriority;
|
|
122
|
+
}
|
|
123
|
+
export interface UseAdminSearchEntriesArgs extends UseAdminEntriesArgs {
|
|
124
|
+
searchQuery: string;
|
|
125
|
+
}
|
|
111
126
|
/**
|
|
112
127
|
* Arguments accepted by `useSimilarEntries`.
|
|
113
128
|
*/
|
|
@@ -159,6 +174,7 @@ declare function createFeedbackHooksImplementation<RateLimitResult>(api: Feedbac
|
|
|
159
174
|
readonly entries: number;
|
|
160
175
|
readonly comments: number;
|
|
161
176
|
readonly replies: number;
|
|
177
|
+
readonly roadmap: number;
|
|
162
178
|
};
|
|
163
179
|
/**
|
|
164
180
|
* Returns a cursor-paginated, server-filtered entry list.
|
|
@@ -171,10 +187,10 @@ declare function createFeedbackHooksImplementation<RateLimitResult>(api: Feedbac
|
|
|
171
187
|
} | undefined;
|
|
172
188
|
id: string;
|
|
173
189
|
creationTime: number;
|
|
190
|
+
title: string;
|
|
191
|
+
status: "open" | "under_review" | "planned" | "in_progress" | "completed" | "closed";
|
|
174
192
|
actorId: string;
|
|
175
193
|
kind: "feedback" | "feature_request" | "bug_report";
|
|
176
|
-
status: "open" | "under_review" | "planned" | "in_progress" | "completed" | "closed";
|
|
177
|
-
title: string;
|
|
178
194
|
body: string;
|
|
179
195
|
upvoteCount: number;
|
|
180
196
|
commentCount: number;
|
|
@@ -193,10 +209,10 @@ declare function createFeedbackHooksImplementation<RateLimitResult>(api: Feedbac
|
|
|
193
209
|
} | undefined;
|
|
194
210
|
id: string;
|
|
195
211
|
creationTime: number;
|
|
212
|
+
title: string;
|
|
213
|
+
status: "open" | "under_review" | "planned" | "in_progress" | "completed" | "closed";
|
|
196
214
|
actorId: string;
|
|
197
215
|
kind: "feedback" | "feature_request" | "bug_report";
|
|
198
|
-
status: "open" | "under_review" | "planned" | "in_progress" | "completed" | "closed";
|
|
199
|
-
title: string;
|
|
200
216
|
body: string;
|
|
201
217
|
upvoteCount: number;
|
|
202
218
|
commentCount: number;
|
|
@@ -215,15 +231,148 @@ declare function createFeedbackHooksImplementation<RateLimitResult>(api: Feedbac
|
|
|
215
231
|
} | undefined;
|
|
216
232
|
id: string;
|
|
217
233
|
creationTime: number;
|
|
234
|
+
title: string;
|
|
235
|
+
status: "open" | "under_review" | "planned" | "in_progress" | "completed" | "closed";
|
|
236
|
+
actorId: string;
|
|
237
|
+
kind: "feedback" | "feature_request" | "bug_report";
|
|
238
|
+
body: string;
|
|
239
|
+
upvoteCount: number;
|
|
240
|
+
commentCount: number;
|
|
241
|
+
viewerHasUpvoted: boolean;
|
|
242
|
+
}[] | undefined;
|
|
243
|
+
/** Returns whether the authenticated host actor is an admin. */
|
|
244
|
+
useIsAdmin(): boolean | undefined;
|
|
245
|
+
/** Returns whether the current request has an authenticated actor. */
|
|
246
|
+
useIsAuthenticated(): boolean | undefined;
|
|
247
|
+
/** Returns a cursor-paginated admin inbox with private triage relationships. */
|
|
248
|
+
useAdminEntries(args?: UseAdminEntriesArgs): import("convex/react").UsePaginatedQueryReturnType<import("convex/server").FunctionReference<"query", "public", import("../client/api.js").AdminListEntriesArgs, import("convex/server").PaginationResult<{
|
|
249
|
+
updatedAt?: number | undefined;
|
|
250
|
+
metadata?: {
|
|
251
|
+
standard?: Record<string, string | number | boolean> | undefined;
|
|
252
|
+
additional?: Record<string, string | number | boolean> | undefined;
|
|
253
|
+
} | undefined;
|
|
254
|
+
id: string;
|
|
255
|
+
creationTime: number;
|
|
256
|
+
title: string;
|
|
257
|
+
status: "open" | "under_review" | "planned" | "in_progress" | "completed" | "closed";
|
|
218
258
|
actorId: string;
|
|
219
259
|
kind: "feedback" | "feature_request" | "bug_report";
|
|
260
|
+
body: string;
|
|
261
|
+
upvoteCount: number;
|
|
262
|
+
commentCount: number;
|
|
263
|
+
viewerHasUpvoted: boolean;
|
|
264
|
+
priority?: "low" | "medium" | "high" | undefined;
|
|
265
|
+
roadmap?: {
|
|
266
|
+
description?: string | undefined;
|
|
267
|
+
id: string;
|
|
268
|
+
creationTime: number;
|
|
269
|
+
title: string;
|
|
270
|
+
status: "planned" | "in_progress" | "shipped";
|
|
271
|
+
position: number;
|
|
272
|
+
createdAt: number;
|
|
273
|
+
updatedAt: number;
|
|
274
|
+
feedbackCount: number;
|
|
275
|
+
} | undefined;
|
|
276
|
+
}>, string | undefined>>;
|
|
277
|
+
/** Returns one admin-enriched feedback entry. */
|
|
278
|
+
useAdminEntry(entryId: string | null | undefined): {
|
|
279
|
+
updatedAt?: number | undefined;
|
|
280
|
+
metadata?: {
|
|
281
|
+
standard?: Record<string, string | number | boolean> | undefined;
|
|
282
|
+
additional?: Record<string, string | number | boolean> | undefined;
|
|
283
|
+
} | undefined;
|
|
284
|
+
id: string;
|
|
285
|
+
creationTime: number;
|
|
286
|
+
title: string;
|
|
220
287
|
status: "open" | "under_review" | "planned" | "in_progress" | "completed" | "closed";
|
|
288
|
+
actorId: string;
|
|
289
|
+
kind: "feedback" | "feature_request" | "bug_report";
|
|
290
|
+
body: string;
|
|
291
|
+
upvoteCount: number;
|
|
292
|
+
commentCount: number;
|
|
293
|
+
viewerHasUpvoted: boolean;
|
|
294
|
+
priority?: "low" | "medium" | "high" | undefined;
|
|
295
|
+
roadmap?: {
|
|
296
|
+
description?: string | undefined;
|
|
297
|
+
id: string;
|
|
298
|
+
creationTime: number;
|
|
299
|
+
title: string;
|
|
300
|
+
status: "planned" | "in_progress" | "shipped";
|
|
301
|
+
position: number;
|
|
302
|
+
createdAt: number;
|
|
303
|
+
updatedAt: number;
|
|
304
|
+
feedbackCount: number;
|
|
305
|
+
} | undefined;
|
|
306
|
+
} | null | undefined;
|
|
307
|
+
/** Searches the admin inbox with triage filters. */
|
|
308
|
+
useAdminSearchEntries(args: UseAdminSearchEntriesArgs): import("convex/react").UsePaginatedQueryReturnType<import("convex/server").FunctionReference<"query", "public", import("../client/api.js").AdminSearchEntriesArgs, import("convex/server").PaginationResult<{
|
|
309
|
+
updatedAt?: number | undefined;
|
|
310
|
+
metadata?: {
|
|
311
|
+
standard?: Record<string, string | number | boolean> | undefined;
|
|
312
|
+
additional?: Record<string, string | number | boolean> | undefined;
|
|
313
|
+
} | undefined;
|
|
314
|
+
id: string;
|
|
315
|
+
creationTime: number;
|
|
221
316
|
title: string;
|
|
317
|
+
status: "open" | "under_review" | "planned" | "in_progress" | "completed" | "closed";
|
|
318
|
+
actorId: string;
|
|
319
|
+
kind: "feedback" | "feature_request" | "bug_report";
|
|
222
320
|
body: string;
|
|
223
321
|
upvoteCount: number;
|
|
224
322
|
commentCount: number;
|
|
225
323
|
viewerHasUpvoted: boolean;
|
|
324
|
+
priority?: "low" | "medium" | "high" | undefined;
|
|
325
|
+
roadmap?: {
|
|
326
|
+
description?: string | undefined;
|
|
327
|
+
id: string;
|
|
328
|
+
creationTime: number;
|
|
329
|
+
title: string;
|
|
330
|
+
status: "planned" | "in_progress" | "shipped";
|
|
331
|
+
position: number;
|
|
332
|
+
createdAt: number;
|
|
333
|
+
updatedAt: number;
|
|
334
|
+
feedbackCount: number;
|
|
335
|
+
} | undefined;
|
|
336
|
+
}>, string | undefined>>;
|
|
337
|
+
useRoadmap(status?: RoadmapStatus): import("convex/react").UsePaginatedQueryReturnType<import("convex/server").FunctionReference<"query", "public", import("../client/api.js").ListRoadmapArgs, import("convex/server").PaginationResult<{
|
|
338
|
+
description?: string | undefined;
|
|
339
|
+
id: string;
|
|
340
|
+
creationTime: number;
|
|
341
|
+
title: string;
|
|
342
|
+
status: "planned" | "in_progress" | "shipped";
|
|
343
|
+
position: number;
|
|
344
|
+
createdAt: number;
|
|
345
|
+
updatedAt: number;
|
|
346
|
+
feedbackCount: number;
|
|
347
|
+
}>, string | undefined>>;
|
|
348
|
+
useSearchRoadmap(searchQuery: string, limit?: number): {
|
|
349
|
+
description?: string | undefined;
|
|
350
|
+
id: string;
|
|
351
|
+
creationTime: number;
|
|
352
|
+
title: string;
|
|
353
|
+
status: "planned" | "in_progress" | "shipped";
|
|
354
|
+
position: number;
|
|
355
|
+
createdAt: number;
|
|
356
|
+
updatedAt: number;
|
|
357
|
+
feedbackCount: number;
|
|
226
358
|
}[] | undefined;
|
|
359
|
+
useRoadmapFeedback(roadmapId: string | null | undefined): import("convex/react").UsePaginatedQueryReturnType<import("convex/server").FunctionReference<"query", "public", import("../client/api.js").ListRoadmapFeedbackArgs, import("convex/server").PaginationResult<{
|
|
360
|
+
updatedAt?: number | undefined;
|
|
361
|
+
metadata?: {
|
|
362
|
+
standard?: Record<string, string | number | boolean> | undefined;
|
|
363
|
+
additional?: Record<string, string | number | boolean> | undefined;
|
|
364
|
+
} | undefined;
|
|
365
|
+
id: string;
|
|
366
|
+
creationTime: number;
|
|
367
|
+
title: string;
|
|
368
|
+
status: "open" | "under_review" | "planned" | "in_progress" | "completed" | "closed";
|
|
369
|
+
actorId: string;
|
|
370
|
+
kind: "feedback" | "feature_request" | "bug_report";
|
|
371
|
+
body: string;
|
|
372
|
+
upvoteCount: number;
|
|
373
|
+
commentCount: number;
|
|
374
|
+
viewerHasUpvoted: boolean;
|
|
375
|
+
}>, string | undefined>>;
|
|
227
376
|
/**
|
|
228
377
|
* Reactively finds exact and similar entries for a proposed draft.
|
|
229
378
|
*
|
|
@@ -241,10 +390,10 @@ declare function createFeedbackHooksImplementation<RateLimitResult>(api: Feedbac
|
|
|
241
390
|
} | undefined;
|
|
242
391
|
id: string;
|
|
243
392
|
creationTime: number;
|
|
393
|
+
title: string;
|
|
394
|
+
status: "open" | "under_review" | "planned" | "in_progress" | "completed" | "closed";
|
|
244
395
|
actorId: string;
|
|
245
396
|
kind: "feedback" | "feature_request" | "bug_report";
|
|
246
|
-
status: "open" | "under_review" | "planned" | "in_progress" | "completed" | "closed";
|
|
247
|
-
title: string;
|
|
248
397
|
body: string;
|
|
249
398
|
upvoteCount: number;
|
|
250
399
|
commentCount: number;
|
|
@@ -258,10 +407,10 @@ declare function createFeedbackHooksImplementation<RateLimitResult>(api: Feedbac
|
|
|
258
407
|
} | undefined;
|
|
259
408
|
id: string;
|
|
260
409
|
creationTime: number;
|
|
410
|
+
title: string;
|
|
411
|
+
status: "open" | "under_review" | "planned" | "in_progress" | "completed" | "closed";
|
|
261
412
|
actorId: string;
|
|
262
413
|
kind: "feedback" | "feature_request" | "bug_report";
|
|
263
|
-
status: "open" | "under_review" | "planned" | "in_progress" | "completed" | "closed";
|
|
264
|
-
title: string;
|
|
265
414
|
body: string;
|
|
266
415
|
upvoteCount: number;
|
|
267
416
|
commentCount: number;
|
|
@@ -291,6 +440,14 @@ declare function createFeedbackHooksImplementation<RateLimitResult>(api: Feedbac
|
|
|
291
440
|
useUpdateEntry(): import("convex/react").ReactMutation<import("convex/server").FunctionReference<"mutation", "public", import("../client/api.js").UpdateEntryArgs, RateLimitResult | null, string | undefined>>;
|
|
292
441
|
/** Returns the bound status mutation. */
|
|
293
442
|
useSetEntryStatus(): import("convex/react").ReactMutation<import("convex/server").FunctionReference<"mutation", "public", import("../client/api.js").SetEntryStatusArgs, RateLimitResult | null, string | undefined>>;
|
|
443
|
+
useSetEntryPriority(): import("convex/react").ReactMutation<import("convex/server").FunctionReference<"mutation", "public", import("../client/api.js").SetEntryPriorityArgs, RateLimitResult | null, string | undefined>>;
|
|
444
|
+
useCreateRoadmap(): import("convex/react").ReactMutation<import("convex/server").FunctionReference<"mutation", "public", import("../client/api.js").CreateRoadmapArgs, string | RateLimitResult, string | undefined>>;
|
|
445
|
+
useCreateRoadmapForEntry(): import("convex/react").ReactMutation<import("convex/server").FunctionReference<"mutation", "public", import("../client/api.js").CreateRoadmapForEntryArgs, string | RateLimitResult, string | undefined>>;
|
|
446
|
+
useUpdateRoadmap(): import("convex/react").ReactMutation<import("convex/server").FunctionReference<"mutation", "public", import("../client/api.js").UpdateRoadmapArgs, RateLimitResult | null, string | undefined>>;
|
|
447
|
+
useDeleteRoadmap(): import("convex/react").ReactMutation<import("convex/server").FunctionReference<"mutation", "public", import("../client/api.js").DeleteRoadmapArgs, RateLimitResult | null, string | undefined>>;
|
|
448
|
+
useMoveRoadmapItem(): import("convex/react").ReactMutation<import("convex/server").FunctionReference<"mutation", "public", import("../client/api.js").MoveRoadmapArgs, number | RateLimitResult, string | undefined>>;
|
|
449
|
+
useAttachFeedbackToRoadmap(): import("convex/react").ReactMutation<import("convex/server").FunctionReference<"mutation", "public", import("../client/api.js").AttachFeedbackToRoadmapArgs, RateLimitResult | null, string | undefined>>;
|
|
450
|
+
useDetachFeedbackFromRoadmap(): import("convex/react").ReactMutation<import("convex/server").FunctionReference<"mutation", "public", import("../client/api.js").DetachFeedbackFromRoadmapArgs, RateLimitResult | null, string | undefined>>;
|
|
294
451
|
/** Returns the idempotent entry-upvote state mutation. */
|
|
295
452
|
useSetEntryUpvote(): import("convex/react").ReactMutation<import("convex/server").FunctionReference<"mutation", "public", import("../client/api.js").SetEntryUpvoteArgs, import("../client/api.js").SetEntryUpvoteResult | RateLimitResult, string | undefined>>;
|
|
296
453
|
/** Returns the create-comment/reply mutation. */
|
|
@@ -304,9 +461,9 @@ declare function createFeedbackHooksImplementation<RateLimitResult>(api: Feedbac
|
|
|
304
461
|
};
|
|
305
462
|
type CreatedFeedbackHooks<RateLimitResult> = ReturnType<typeof createFeedbackHooksImplementation<RateLimitResult>>;
|
|
306
463
|
/** Creates hooks for a feedback API whose rate limiters reject by throwing. */
|
|
307
|
-
export declare function createFeedbackHooks(api
|
|
464
|
+
export declare function createFeedbackHooks(api?: FeedbackPublicApi<string | undefined, never>, options?: FeedbackHooksOptions): CreatedFeedbackHooks<never>;
|
|
308
465
|
/** Creates hooks carrying a validated non-throwing rate-limit result. */
|
|
309
|
-
export declare function createFeedbackHooks<RateLimitResult>(api
|
|
466
|
+
export declare function createFeedbackHooks<RateLimitResult>(api?: FeedbackPublicApi<string | undefined, RateLimitResult>, options?: FeedbackHooksOptions): CreatedFeedbackHooks<RateLimitResult>;
|
|
310
467
|
/**
|
|
311
468
|
* Hook collection returned by `createFeedbackHooks`.
|
|
312
469
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/react/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/react/index.ts"],"names":[],"mappings":"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"}
|
package/dist/react/index.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { usePaginatedQuery } from "convex-helpers/react";
|
|
3
3
|
import { useMutation, useQuery } from "convex/react";
|
|
4
|
+
import { anyApi } from "convex/server";
|
|
4
5
|
const emptySimilarEntriesResult = {
|
|
5
6
|
exact: [],
|
|
6
7
|
similar: [],
|
|
@@ -23,6 +24,7 @@ function createFeedbackHooksImplementation(api, options = {}) {
|
|
|
23
24
|
const entryPageSize = positivePageSize(options.entryPageSize, 20);
|
|
24
25
|
const commentPageSize = positivePageSize(options.commentPageSize, 20);
|
|
25
26
|
const replyPageSize = positivePageSize(options.replyPageSize, 10);
|
|
27
|
+
const roadmapPageSize = positivePageSize(options.roadmapPageSize, 30);
|
|
26
28
|
return {
|
|
27
29
|
/**
|
|
28
30
|
* Resolved client-side page sizes used by the generated hooks and useful
|
|
@@ -32,6 +34,7 @@ function createFeedbackHooksImplementation(api, options = {}) {
|
|
|
32
34
|
entries: entryPageSize,
|
|
33
35
|
comments: commentPageSize,
|
|
34
36
|
replies: replyPageSize,
|
|
37
|
+
roadmap: roadmapPageSize,
|
|
35
38
|
},
|
|
36
39
|
/**
|
|
37
40
|
* Returns a cursor-paginated, server-filtered entry list.
|
|
@@ -76,6 +79,50 @@ function createFeedbackHooksImplementation(api, options = {}) {
|
|
|
76
79
|
const result = useQuery(api.searchEntries, searchQuery.length === 0 ? "skip" : queryArgs);
|
|
77
80
|
return searchQuery.length === 0 ? [] : result;
|
|
78
81
|
},
|
|
82
|
+
/** Returns whether the authenticated host actor is an admin. */
|
|
83
|
+
useIsAdmin() {
|
|
84
|
+
return useQuery(api.isAdmin, {});
|
|
85
|
+
},
|
|
86
|
+
/** Returns whether the current request has an authenticated actor. */
|
|
87
|
+
useIsAuthenticated() {
|
|
88
|
+
return useQuery(api.isAuthenticated, {});
|
|
89
|
+
},
|
|
90
|
+
/** Returns a cursor-paginated admin inbox with private triage relationships. */
|
|
91
|
+
useAdminEntries(args = {}) {
|
|
92
|
+
return usePaginatedQuery(api.adminListEntries, {
|
|
93
|
+
...(args.kinds === undefined ? {} : { kinds: [...args.kinds] }),
|
|
94
|
+
...(args.status === undefined ? {} : { status: args.status }),
|
|
95
|
+
...(args.priority === undefined ? {} : { priority: args.priority }),
|
|
96
|
+
}, { initialNumItems: entryPageSize });
|
|
97
|
+
},
|
|
98
|
+
/** Returns one admin-enriched feedback entry. */
|
|
99
|
+
useAdminEntry(entryId) {
|
|
100
|
+
return useQuery(api.adminGetEntry, entryId === null || entryId === undefined ? "skip" : { entryId });
|
|
101
|
+
},
|
|
102
|
+
/** Searches the admin inbox with triage filters. */
|
|
103
|
+
useAdminSearchEntries(args) {
|
|
104
|
+
const searchQuery = args.searchQuery.trim();
|
|
105
|
+
return usePaginatedQuery(api.adminSearchEntries, searchQuery.length === 0
|
|
106
|
+
? "skip"
|
|
107
|
+
: {
|
|
108
|
+
searchQuery,
|
|
109
|
+
...(args.kinds === undefined ? {} : { kinds: [...args.kinds] }),
|
|
110
|
+
...(args.status === undefined ? {} : { status: args.status }),
|
|
111
|
+
...(args.priority === undefined
|
|
112
|
+
? {}
|
|
113
|
+
: { priority: args.priority }),
|
|
114
|
+
}, { initialNumItems: entryPageSize });
|
|
115
|
+
},
|
|
116
|
+
useRoadmap(status) {
|
|
117
|
+
return usePaginatedQuery(api.listRoadmap, status === undefined ? {} : { status }, { initialNumItems: roadmapPageSize });
|
|
118
|
+
},
|
|
119
|
+
useSearchRoadmap(searchQuery, limit = 10) {
|
|
120
|
+
const normalized = searchQuery.trim();
|
|
121
|
+
return useQuery(api.searchRoadmap, normalized.length === 0 ? "skip" : { searchQuery: normalized, limit });
|
|
122
|
+
},
|
|
123
|
+
useRoadmapFeedback(roadmapId) {
|
|
124
|
+
return usePaginatedQuery(api.listRoadmapFeedback, roadmapId === null || roadmapId === undefined ? "skip" : { roadmapId }, { initialNumItems: entryPageSize });
|
|
125
|
+
},
|
|
79
126
|
/**
|
|
80
127
|
* Reactively finds exact and similar entries for a proposed draft.
|
|
81
128
|
*
|
|
@@ -115,6 +162,30 @@ function createFeedbackHooksImplementation(api, options = {}) {
|
|
|
115
162
|
useSetEntryStatus() {
|
|
116
163
|
return useMutation(api.setEntryStatus);
|
|
117
164
|
},
|
|
165
|
+
useSetEntryPriority() {
|
|
166
|
+
return useMutation(api.setEntryPriority);
|
|
167
|
+
},
|
|
168
|
+
useCreateRoadmap() {
|
|
169
|
+
return useMutation(api.createRoadmap);
|
|
170
|
+
},
|
|
171
|
+
useCreateRoadmapForEntry() {
|
|
172
|
+
return useMutation(api.createRoadmapForEntry);
|
|
173
|
+
},
|
|
174
|
+
useUpdateRoadmap() {
|
|
175
|
+
return useMutation(api.updateRoadmap);
|
|
176
|
+
},
|
|
177
|
+
useDeleteRoadmap() {
|
|
178
|
+
return useMutation(api.deleteRoadmap);
|
|
179
|
+
},
|
|
180
|
+
useMoveRoadmapItem() {
|
|
181
|
+
return useMutation(api.moveRoadmapItem);
|
|
182
|
+
},
|
|
183
|
+
useAttachFeedbackToRoadmap() {
|
|
184
|
+
return useMutation(api.attachFeedbackToRoadmap);
|
|
185
|
+
},
|
|
186
|
+
useDetachFeedbackFromRoadmap() {
|
|
187
|
+
return useMutation(api.detachFeedbackFromRoadmap);
|
|
188
|
+
},
|
|
118
189
|
/** Returns the idempotent entry-upvote state mutation. */
|
|
119
190
|
useSetEntryUpvote() {
|
|
120
191
|
return useMutation(api.setEntryUpvote);
|
|
@@ -137,7 +208,7 @@ function createFeedbackHooksImplementation(api, options = {}) {
|
|
|
137
208
|
},
|
|
138
209
|
};
|
|
139
210
|
}
|
|
140
|
-
export function createFeedbackHooks(api, options = {}) {
|
|
211
|
+
export function createFeedbackHooks(api = anyApi.feedback, options = {}) {
|
|
141
212
|
return createFeedbackHooksImplementation(api, options);
|
|
142
213
|
}
|
|
143
214
|
//# sourceMappingURL=index.js.map
|
package/dist/react/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/react/index.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/react/index.ts"],"names":[],"mappings":"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"}
|