convex-feedback 0.1.0 → 0.1.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.
@@ -1,44 +1,162 @@
1
1
  import type { FeedbackPublicApi } from "../client/api.js";
2
2
  import type { CommentSort, EntryKind, EntrySort, EntryStatus } from "../component/model.js";
3
+ /**
4
+ * Client-side pagination defaults used by hooks created with
5
+ * `createFeedbackHooks`.
6
+ *
7
+ * These values control initial page sizes and subsequent `loadMore` sizes in
8
+ * the UI. They do not override the server-side maximum page sizes configured
9
+ * on the component.
10
+ */
3
11
  export interface FeedbackHooksOptions {
12
+ /**
13
+ * Number of entries initially requested by `useEntries`.
14
+ *
15
+ * @default 20
16
+ */
4
17
  entryPageSize?: number;
18
+ /**
19
+ * Number of top-level comments initially requested by `useComments`.
20
+ *
21
+ * @default 20
22
+ */
5
23
  commentPageSize?: number;
24
+ /**
25
+ * Number of direct child replies initially requested when
26
+ * `parentCommentId` is supplied to `useComments`.
27
+ *
28
+ * @default 10
29
+ */
6
30
  replyPageSize?: number;
7
31
  }
32
+ /**
33
+ * Arguments accepted by `useEntries`.
34
+ */
8
35
  export interface UseEntriesArgs {
9
- kind?: EntryKind;
36
+ /**
37
+ * Entry kinds to include.
38
+ *
39
+ * Filtering occurs in Convex before pagination. Omit to include every kind.
40
+ *
41
+ * The hook accepts a readonly array so configuration constants such as
42
+ * `readonly EntryKind[]` can be passed directly.
43
+ */
44
+ kinds?: readonly EntryKind[];
45
+ /** Optional workflow-status filter. */
10
46
  status?: EntryStatus;
47
+ /**
48
+ * Server-side entry ordering.
49
+ *
50
+ * When omitted, the host's configured default is used.
51
+ */
11
52
  sort?: EntrySort;
12
53
  }
54
+ /**
55
+ * Arguments accepted by `useComments`.
56
+ *
57
+ * Comment trees are intentionally loaded lazily. Every invocation retrieves
58
+ * exactly one level of the tree.
59
+ */
13
60
  export interface UseCommentsArgs {
61
+ /** Entry whose comments are being requested. */
14
62
  entryId: string;
63
+ /**
64
+ * Direct parent whose replies should be requested.
65
+ *
66
+ * - Omitted → returns top-level comments.
67
+ * - Supplied → returns only direct children of this comment.
68
+ *
69
+ * Grandchildren and deeper descendants are never automatically loaded.
70
+ * Call `useComments` again with the child comment's ID when that branch is
71
+ * expanded.
72
+ */
15
73
  parentCommentId?: string;
74
+ /**
75
+ * Server-side ordering for this level of comments.
76
+ *
77
+ * When omitted, the host's configured default is used.
78
+ */
16
79
  sort?: CommentSort;
17
80
  }
81
+ /**
82
+ * Arguments accepted by `useSearchEntries`.
83
+ */
18
84
  export interface SearchEntriesArgs {
85
+ /**
86
+ * Full-text query.
87
+ *
88
+ * Whitespace-only values skip the Convex query and return an empty array.
89
+ */
19
90
  searchQuery: string;
20
- kind?: EntryKind;
91
+ /**
92
+ * Entry kinds to include.
93
+ *
94
+ * Filtering occurs on the server.
95
+ */
96
+ kinds?: readonly EntryKind[];
97
+ /** Optional workflow-status filter. */
21
98
  status?: EntryStatus;
99
+ /**
100
+ * Maximum number of results requested.
101
+ *
102
+ * The server applies its configured default when omitted and clamps the
103
+ * value to its configured maximum.
104
+ */
22
105
  limit?: number;
23
106
  }
107
+ /**
108
+ * Arguments accepted by `useSimilarEntries`.
109
+ */
24
110
  export interface SimilarEntriesArgs {
111
+ /**
112
+ * Proposed entry title.
113
+ *
114
+ * Used both for normalized exact-title matching and full-text search.
115
+ */
25
116
  title: string;
117
+ /**
118
+ * Proposed entry body.
119
+ *
120
+ * Used together with the title for full-text similarity search.
121
+ */
26
122
  body: string;
123
+ /**
124
+ * Restricts duplicate detection to one entry kind.
125
+ *
126
+ * Omit to search every kind.
127
+ */
27
128
  kind?: EntryKind;
129
+ /**
130
+ * Maximum combined number of suggestions requested.
131
+ *
132
+ * Exact normalized-title matches consume the limit first. Only remaining
133
+ * slots may be filled by relevance-ranked full-text matches.
134
+ *
135
+ * For example, `limit: 3` with two exact matches can return at most one
136
+ * additional similar match.
137
+ */
28
138
  limit?: number;
29
139
  }
140
+ /**
141
+ * Creates React hooks bound to a host application's exposed feedback API.
142
+ *
143
+ * Create this once in the consuming application and reuse the returned hook
144
+ * collection.
145
+ */
30
146
  export declare function createFeedbackHooks(api: FeedbackPublicApi, options?: FeedbackHooksOptions): {
147
+ /**
148
+ * Resolved client-side page sizes used by the generated hooks and useful
149
+ * when calling their `loadMore` functions.
150
+ */
31
151
  pageSizes: {
32
152
  readonly entries: number;
33
153
  readonly comments: number;
34
154
  readonly replies: number;
35
155
  };
36
- useEntries(args?: UseEntriesArgs): import("convex/react").UsePaginatedQueryReturnType<import("convex/server").FunctionReference<"query", "public", {
37
- paginationOpts: import("convex/server").PaginationOptions;
38
- kind?: EntryKind;
39
- status?: EntryStatus;
40
- sort?: EntrySort;
41
- }, import("convex/server").PaginationResult<{
156
+ /**
157
+ * Returns a cursor-paginated, server-filtered entry list.
158
+ */
159
+ useEntries(args?: UseEntriesArgs): import("convex/react").UsePaginatedQueryReturnType<import("convex/server").FunctionReference<"query", "public", import("../client/api.js").ListEntriesArgs, import("convex/server").PaginationResult<{
42
160
  updatedAt?: number | undefined;
43
161
  id: string;
44
162
  creationTime: number;
@@ -51,6 +169,11 @@ export declare function createFeedbackHooks(api: FeedbackPublicApi, options?: Fe
51
169
  commentCount: number;
52
170
  viewerHasUpvoted: boolean;
53
171
  }>, string | undefined>>;
172
+ /**
173
+ * Reactively retrieves one entry.
174
+ *
175
+ * Passing `null` or `undefined` skips the query.
176
+ */
54
177
  useEntry(entryId: string | null | undefined): {
55
178
  updatedAt?: number | undefined;
56
179
  id: string;
@@ -64,6 +187,11 @@ export declare function createFeedbackHooks(api: FeedbackPublicApi, options?: Fe
64
187
  commentCount: number;
65
188
  viewerHasUpvoted: boolean;
66
189
  } | null | undefined;
190
+ /**
191
+ * Performs reactive full-text entry search.
192
+ *
193
+ * An empty/whitespace-only query returns `[]` without running Convex.
194
+ */
67
195
  useSearchEntries(args: SearchEntriesArgs): {
68
196
  updatedAt?: number | undefined;
69
197
  id: string;
@@ -77,6 +205,14 @@ export declare function createFeedbackHooks(api: FeedbackPublicApi, options?: Fe
77
205
  commentCount: number;
78
206
  viewerHasUpvoted: boolean;
79
207
  }[] | undefined;
208
+ /**
209
+ * Reactively finds exact and similar entries for a proposed draft.
210
+ *
211
+ * The query is skipped only when both title and body are blank.
212
+ *
213
+ * `limit` is forwarded to the server unchanged. The server applies the
214
+ * combined exact-first limit semantics documented by `SimilarEntriesArgs`.
215
+ */
80
216
  useSimilarEntries(args: SimilarEntriesArgs): {
81
217
  exact: {
82
218
  updatedAt?: number | undefined;
@@ -105,12 +241,10 @@ export declare function createFeedbackHooks(api: FeedbackPublicApi, options?: Fe
105
241
  viewerHasUpvoted: boolean;
106
242
  }[];
107
243
  } | undefined;
108
- useComments(args: UseCommentsArgs): import("convex/react").UsePaginatedQueryReturnType<import("convex/server").FunctionReference<"query", "public", {
109
- paginationOpts: import("convex/server").PaginationOptions;
110
- entryId: string;
111
- parentCommentId?: string;
112
- sort?: CommentSort;
113
- }, import("convex/server").PaginationResult<{
244
+ /**
245
+ * Returns one independently paginated level of comments.
246
+ */
247
+ useComments(args: UseCommentsArgs): import("convex/react").UsePaginatedQueryReturnType<import("convex/server").FunctionReference<"query", "public", import("../client/api.js").ListCommentsArgs, import("convex/server").PaginationResult<{
114
248
  updatedAt?: number | undefined;
115
249
  parentCommentId?: string | undefined;
116
250
  deletedAt?: number | undefined;
@@ -124,46 +258,28 @@ export declare function createFeedbackHooks(api: FeedbackPublicApi, options?: Fe
124
258
  replyCount: number;
125
259
  viewerHasLiked: boolean;
126
260
  }>, string | undefined>>;
127
- useCreateEntry(): import("convex/react").ReactMutation<import("convex/server").FunctionReference<"mutation", "public", {
128
- kind: EntryKind;
129
- title: string;
130
- body: string;
131
- }, string, string | undefined>>;
132
- useUpdateEntry(): import("convex/react").ReactMutation<import("convex/server").FunctionReference<"mutation", "public", {
133
- entryId: string;
134
- title: string;
135
- body: string;
136
- }, null, string | undefined>>;
137
- useSetEntryStatus(): import("convex/react").ReactMutation<import("convex/server").FunctionReference<"mutation", "public", {
138
- entryId: string;
139
- status: EntryStatus;
140
- }, null, string | undefined>>;
141
- useSetEntryUpvote(): import("convex/react").ReactMutation<import("convex/server").FunctionReference<"mutation", "public", {
142
- entryId: string;
143
- desiredState: boolean;
144
- }, {
145
- active: boolean;
146
- upvoteCount: number;
147
- }, string | undefined>>;
148
- useCreateComment(): import("convex/react").ReactMutation<import("convex/server").FunctionReference<"mutation", "public", {
149
- entryId: string;
150
- parentCommentId?: string;
151
- body: string;
152
- }, string, string | undefined>>;
153
- useUpdateComment(): import("convex/react").ReactMutation<import("convex/server").FunctionReference<"mutation", "public", {
154
- commentId: string;
155
- body: string;
156
- }, null, string | undefined>>;
157
- useDeleteComment(): import("convex/react").ReactMutation<import("convex/server").FunctionReference<"mutation", "public", {
158
- commentId: string;
159
- }, null, string | undefined>>;
160
- useSetCommentLike(): import("convex/react").ReactMutation<import("convex/server").FunctionReference<"mutation", "public", {
161
- commentId: string;
162
- desiredState: boolean;
163
- }, {
164
- active: boolean;
165
- likeCount: number;
166
- }, string | undefined>>;
261
+ /** Returns the bound create-entry mutation. */
262
+ useCreateEntry(): import("convex/react").ReactMutation<import("convex/server").FunctionReference<"mutation", "public", import("../client/api.js").CreateEntryArgs, string, string | undefined>>;
263
+ /** Returns the bound update-entry mutation. */
264
+ useUpdateEntry(): import("convex/react").ReactMutation<import("convex/server").FunctionReference<"mutation", "public", import("../client/api.js").UpdateEntryArgs, null, string | undefined>>;
265
+ /** Returns the bound status mutation. */
266
+ useSetEntryStatus(): import("convex/react").ReactMutation<import("convex/server").FunctionReference<"mutation", "public", import("../client/api.js").SetEntryStatusArgs, null, string | undefined>>;
267
+ /** Returns the idempotent entry-upvote state mutation. */
268
+ useSetEntryUpvote(): import("convex/react").ReactMutation<import("convex/server").FunctionReference<"mutation", "public", import("../client/api.js").SetEntryUpvoteArgs, import("../client/api.js").SetEntryUpvoteResult, string | undefined>>;
269
+ /** Returns the create-comment/reply mutation. */
270
+ useCreateComment(): import("convex/react").ReactMutation<import("convex/server").FunctionReference<"mutation", "public", import("../client/api.js").CreateCommentArgs, string, string | undefined>>;
271
+ /** Returns the update-comment mutation. */
272
+ useUpdateComment(): import("convex/react").ReactMutation<import("convex/server").FunctionReference<"mutation", "public", import("../client/api.js").UpdateCommentArgs, null, string | undefined>>;
273
+ /** Returns the soft-delete-comment mutation. */
274
+ useDeleteComment(): import("convex/react").ReactMutation<import("convex/server").FunctionReference<"mutation", "public", import("../client/api.js").DeleteCommentArgs, null, string | undefined>>;
275
+ /** Returns the idempotent comment-like state mutation. */
276
+ useSetCommentLike(): import("convex/react").ReactMutation<import("convex/server").FunctionReference<"mutation", "public", import("../client/api.js").SetCommentLikeArgs, import("../client/api.js").SetCommentLikeResult, string | undefined>>;
167
277
  };
278
+ /**
279
+ * Hook collection returned by `createFeedbackHooks`.
280
+ *
281
+ * This type is intended to be passed to `FeedbackScreen` and other
282
+ * `convex-feedback-ui` integrations.
283
+ */
168
284
  export type FeedbackHooks = ReturnType<typeof createFeedbackHooks>;
169
285
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/react/index.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAC1D,OAAO,KAAK,EACV,WAAW,EACX,SAAS,EACT,SAAS,EACT,WAAW,EACZ,MAAM,uBAAuB,CAAC;AAE/B,MAAM,WAAW,oBAAoB;IACnC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,IAAI,CAAC,EAAE,SAAS,CAAC;CAClB;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,IAAI,CAAC,EAAE,WAAW,CAAC;CACpB;AAED,MAAM,WAAW,iBAAiB;IAChC,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAQD,wBAAgB,mBAAmB,CACjC,GAAG,EAAE,iBAAiB,EACtB,OAAO,GAAE,oBAAyB;;;;;;sBAaf,cAAc;;;;;;;;;;;;;;;;;;sBAMb,MAAM,GAAG,IAAI,GAAG,SAAS;;;;;;;;;;;;;2BAOpB,iBAAiB;;;;;;;;;;;;;4BAShB,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;sBAUxB,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAuCpC;AAED,MAAM,MAAM,aAAa,GAAG,UAAU,CAAC,OAAO,mBAAmB,CAAC,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/react/index.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAC1D,OAAO,KAAK,EACV,WAAW,EACX,SAAS,EACT,SAAS,EACT,WAAW,EAEZ,MAAM,uBAAuB,CAAC;AAE/B;;;;;;;GAOG;AACH,MAAM,WAAW,oBAAoB;IACnC;;;;OAIG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB;;;;OAIG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IAEzB;;;;;OAKG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B;;;;;;;OAOG;IACH,KAAK,CAAC,EAAE,SAAS,SAAS,EAAE,CAAC;IAE7B,uCAAuC;IACvC,MAAM,CAAC,EAAE,WAAW,CAAC;IAErB;;;;OAIG;IACH,IAAI,CAAC,EAAE,SAAS,CAAC;CAClB;AAED;;;;;GAKG;AACH,MAAM,WAAW,eAAe;IAC9B,gDAAgD;IAChD,OAAO,EAAE,MAAM,CAAC;IAEhB;;;;;;;;;OASG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IAEzB;;;;OAIG;IACH,IAAI,CAAC,EAAE,WAAW,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC;;;;OAIG;IACH,WAAW,EAAE,MAAM,CAAC;IAEpB;;;;OAIG;IACH,KAAK,CAAC,EAAE,SAAS,SAAS,EAAE,CAAC;IAE7B,uCAAuC;IACvC,MAAM,CAAC,EAAE,WAAW,CAAC;IAErB;;;;;OAKG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC;;;;OAIG;IACH,KAAK,EAAE,MAAM,CAAC;IAEd;;;;OAIG;IACH,IAAI,EAAE,MAAM,CAAC;IAEb;;;;OAIG;IACH,IAAI,CAAC,EAAE,SAAS,CAAC;IAEjB;;;;;;;;OAQG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAaD;;;;;GAKG;AACH,wBAAgB,mBAAmB,CACjC,GAAG,EAAE,iBAAiB,EACtB,OAAO,GAAE,oBAAyB;IAOhC;;;OAGG;;;;;;IAOH;;OAEG;sBACc,cAAc;;;;;;;;;;;;;IAY/B;;;;OAIG;sBACe,MAAM,GAAG,IAAI,GAAG,SAAS;;;;;;;;;;;;;IAO3C;;;;OAIG;2BACoB,iBAAiB;;;;;;;;;;;;;IAkBxC;;;;;;;OAOG;4BACqB,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAmB1C;;OAEG;sBACe,eAAe;;;;;;;;;;;;;;IAOjC,+CAA+C;;IAK/C,+CAA+C;;IAK/C,yCAAyC;;IAKzC,0DAA0D;;IAK1D,iDAAiD;;IAKjD,2CAA2C;;IAK3C,gDAAgD;;IAKhD,0DAA0D;;EAK7D;AAED;;;;;GAKG;AACH,MAAM,MAAM,aAAa,GAAG,UAAU,CAAC,OAAO,mBAAmB,CAAC,CAAC"}
@@ -1,65 +1,128 @@
1
1
  "use client";
2
2
  import { usePaginatedQuery } from "convex-helpers/react";
3
3
  import { useMutation, useQuery } from "convex/react";
4
+ const emptySimilarEntriesResult = {
5
+ exact: [],
6
+ similar: [],
7
+ };
4
8
  function positivePageSize(value, fallback) {
5
9
  return value !== undefined && Number.isInteger(value) && value > 0
6
10
  ? value
7
11
  : fallback;
8
12
  }
13
+ /**
14
+ * Creates React hooks bound to a host application's exposed feedback API.
15
+ *
16
+ * Create this once in the consuming application and reuse the returned hook
17
+ * collection.
18
+ */
9
19
  export function createFeedbackHooks(api, options = {}) {
10
20
  const entryPageSize = positivePageSize(options.entryPageSize, 20);
11
21
  const commentPageSize = positivePageSize(options.commentPageSize, 20);
12
22
  const replyPageSize = positivePageSize(options.replyPageSize, 10);
13
23
  return {
24
+ /**
25
+ * Resolved client-side page sizes used by the generated hooks and useful
26
+ * when calling their `loadMore` functions.
27
+ */
14
28
  pageSizes: {
15
29
  entries: entryPageSize,
16
30
  comments: commentPageSize,
17
31
  replies: replyPageSize,
18
32
  },
33
+ /**
34
+ * Returns a cursor-paginated, server-filtered entry list.
35
+ */
19
36
  useEntries(args = {}) {
20
- return usePaginatedQuery(api.listEntries, args, {
37
+ const queryArgs = {
38
+ ...(args.kinds === undefined ? {} : { kinds: [...args.kinds] }),
39
+ ...(args.status === undefined ? {} : { status: args.status }),
40
+ ...(args.sort === undefined ? {} : { sort: args.sort }),
41
+ };
42
+ return usePaginatedQuery(api.listEntries, queryArgs, {
21
43
  initialNumItems: entryPageSize,
22
44
  });
23
45
  },
46
+ /**
47
+ * Reactively retrieves one entry.
48
+ *
49
+ * Passing `null` or `undefined` skips the query.
50
+ */
24
51
  useEntry(entryId) {
25
52
  return useQuery(api.getEntry, entryId === null || entryId === undefined ? "skip" : { entryId });
26
53
  },
54
+ /**
55
+ * Performs reactive full-text entry search.
56
+ *
57
+ * An empty/whitespace-only query returns `[]` without running Convex.
58
+ */
27
59
  useSearchEntries(args) {
28
60
  const searchQuery = args.searchQuery.trim();
29
- const result = useQuery(api.searchEntries, searchQuery.length === 0 ? "skip" : { ...args, searchQuery });
61
+ const queryArgs = {
62
+ searchQuery,
63
+ ...(args.kinds === undefined ? {} : { kinds: [...args.kinds] }),
64
+ ...(args.status === undefined ? {} : { status: args.status }),
65
+ ...(args.limit === undefined ? {} : { limit: args.limit }),
66
+ };
67
+ const result = useQuery(api.searchEntries, searchQuery.length === 0 ? "skip" : queryArgs);
30
68
  return searchQuery.length === 0 ? [] : result;
31
69
  },
70
+ /**
71
+ * Reactively finds exact and similar entries for a proposed draft.
72
+ *
73
+ * The query is skipped only when both title and body are blank.
74
+ *
75
+ * `limit` is forwarded to the server unchanged. The server applies the
76
+ * combined exact-first limit semantics documented by `SimilarEntriesArgs`.
77
+ */
32
78
  useSimilarEntries(args) {
33
79
  const shouldSkip = args.title.trim().length === 0 && args.body.trim().length === 0;
34
- const result = useQuery(api.findSimilarEntries, shouldSkip ? "skip" : args);
35
- return shouldSkip ? { exact: [], similar: [] } : result;
80
+ const queryArgs = {
81
+ title: args.title,
82
+ body: args.body,
83
+ ...(args.kind === undefined ? {} : { kind: args.kind }),
84
+ ...(args.limit === undefined ? {} : { limit: args.limit }),
85
+ };
86
+ const result = useQuery(api.findSimilarEntries, shouldSkip ? "skip" : queryArgs);
87
+ return shouldSkip ? emptySimilarEntriesResult : result;
36
88
  },
89
+ /**
90
+ * Returns one independently paginated level of comments.
91
+ */
37
92
  useComments(args) {
38
93
  return usePaginatedQuery(api.listComments, args, {
39
94
  initialNumItems: args.parentCommentId === undefined ? commentPageSize : replyPageSize,
40
95
  });
41
96
  },
97
+ /** Returns the bound create-entry mutation. */
42
98
  useCreateEntry() {
43
99
  return useMutation(api.createEntry);
44
100
  },
101
+ /** Returns the bound update-entry mutation. */
45
102
  useUpdateEntry() {
46
103
  return useMutation(api.updateEntry);
47
104
  },
105
+ /** Returns the bound status mutation. */
48
106
  useSetEntryStatus() {
49
107
  return useMutation(api.setEntryStatus);
50
108
  },
109
+ /** Returns the idempotent entry-upvote state mutation. */
51
110
  useSetEntryUpvote() {
52
111
  return useMutation(api.setEntryUpvote);
53
112
  },
113
+ /** Returns the create-comment/reply mutation. */
54
114
  useCreateComment() {
55
115
  return useMutation(api.createComment);
56
116
  },
117
+ /** Returns the update-comment mutation. */
57
118
  useUpdateComment() {
58
119
  return useMutation(api.updateComment);
59
120
  },
121
+ /** Returns the soft-delete-comment mutation. */
60
122
  useDeleteComment() {
61
123
  return useMutation(api.deleteComment);
62
124
  },
125
+ /** Returns the idempotent comment-like state mutation. */
63
126
  useSetCommentLike() {
64
127
  return useMutation(api.setCommentLike);
65
128
  },
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/react/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/react/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "convex-feedback",
3
- "version": "0.1.0",
3
+ "version": "0.1.1",
4
4
  "description": "Type-safe Convex component for feedback, feature requests, bug reports, voting, comments, and duplicate search.",
5
5
  "license": "Apache-2.0",
6
6
  "type": "module",