convex-feedback 0.1.0 → 0.1.2
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 +351 -92
- package/dist/.tsbuildinfo +1 -1
- package/dist/client/api.d.ts +267 -68
- package/dist/client/api.d.ts.map +1 -1
- package/dist/client/config.d.ts +168 -29
- package/dist/client/config.d.ts.map +1 -1
- package/dist/client/config.js.map +1 -1
- package/dist/client/index.d.ts +167 -172
- package/dist/client/index.d.ts.map +1 -1
- package/dist/client/index.js +75 -14
- package/dist/client/index.js.map +1 -1
- package/dist/component/_generated/component.d.ts +2 -2
- package/dist/component/_generated/component.d.ts.map +1 -1
- package/dist/component/comments.d.ts +12 -12
- package/dist/component/comments.d.ts.map +1 -1
- package/dist/component/comments.js +43 -60
- package/dist/component/comments.js.map +1 -1
- package/dist/component/entries.d.ts +30 -30
- package/dist/component/entries.d.ts.map +1 -1
- package/dist/component/entries.js +216 -97
- package/dist/component/entries.js.map +1 -1
- package/dist/component/model.d.ts +151 -0
- package/dist/component/model.d.ts.map +1 -1
- package/dist/react/index.d.ts +178 -56
- package/dist/react/index.d.ts.map +1 -1
- package/dist/react/index.js +70 -4
- package/dist/react/index.js.map +1 -1
- package/package.json +1 -1
- package/src/client/api.ts +326 -36
- package/src/client/config.ts +191 -29
- package/src/client/index.ts +437 -16
- package/src/component/_generated/component.ts +2 -2
- package/src/component/comments.ts +43 -61
- package/src/component/entries.ts +300 -123
- package/src/component/model.ts +158 -0
- package/src/react/index.ts +217 -9
package/dist/client/index.d.ts
CHANGED
|
@@ -1,186 +1,181 @@
|
|
|
1
|
-
import { type Auth } from "convex/server";
|
|
1
|
+
import { type Auth, type DefaultFunctionArgs, type FunctionReference, type GenericDataModel, type GenericMutationCtx, type RegisteredMutation, type RegisteredQuery } from "convex/server";
|
|
2
|
+
import { type Infer, type Validator, type Value } from "convex/values";
|
|
2
3
|
import type { ComponentApi } from "../component/_generated/component.js";
|
|
3
4
|
import { type FeedbackActor } from "../component/model.js";
|
|
5
|
+
import type { FeedbackPublicApi } from "./api.js";
|
|
4
6
|
import { type FeedbackConfigOverrides } from "./config.js";
|
|
5
7
|
export type { CommentSort, EntryKind, EntrySort, EntryStatus, FeedbackActor, FeedbackComment, FeedbackEntry, SimilarEntriesResult, } from "../component/model.js";
|
|
6
8
|
export type { FeedbackPublicApi } from "./api.js";
|
|
7
9
|
export { createFeedbackConfig, defaultFeedbackConfig, type FeedbackConfig, type FeedbackConfigOverrides, } from "./config.js";
|
|
10
|
+
/**
|
|
11
|
+
* Minimal host context exposed to the actor resolver.
|
|
12
|
+
*
|
|
13
|
+
* The feedback component itself does not read host authentication. Use
|
|
14
|
+
* `auth` to resolve the current host identity into a `FeedbackActor`.
|
|
15
|
+
*/
|
|
8
16
|
export interface FeedbackAuthContext {
|
|
17
|
+
/** Host Convex authentication interface for the current request. */
|
|
9
18
|
auth: Auth;
|
|
10
19
|
}
|
|
11
|
-
|
|
20
|
+
/**
|
|
21
|
+
* Minimal host mutation context passed to a feedback rate limiter.
|
|
22
|
+
*
|
|
23
|
+
* This provides the nested function calls needed by Convex rate-limiter
|
|
24
|
+
* helpers without coupling limiters to the host application's data model.
|
|
25
|
+
*/
|
|
26
|
+
export type FeedbackRateLimitContext = Pick<GenericMutationCtx<GenericDataModel>, "runQuery" | "runMutation">;
|
|
27
|
+
/**
|
|
28
|
+
* A host-defined rate limiter keyed by the resolved feedback actor ID.
|
|
29
|
+
*
|
|
30
|
+
* In the default `"throw"` mode, return `undefined` when allowed and throw when
|
|
31
|
+
* rejected. In `"return"` mode, return `undefined` when allowed or a value
|
|
32
|
+
* matching the configured `returns` validator when rejected. `null` is never
|
|
33
|
+
* a valid return-mode result.
|
|
34
|
+
*
|
|
35
|
+
* @typeParam Result Rejection value used only by non-throwing limiters.
|
|
36
|
+
*/
|
|
37
|
+
export type FeedbackRateLimiter<Result = void> = (ctx: FeedbackRateLimitContext, key: string) => Promise<Result | undefined>;
|
|
38
|
+
/**
|
|
39
|
+
* Rate limiter hooks shared by related feedback mutations.
|
|
40
|
+
*
|
|
41
|
+
* @typeParam Result Rejection value used only in `"return"` mode.
|
|
42
|
+
*/
|
|
43
|
+
export interface FeedbackRateLimiters<Result = void> {
|
|
44
|
+
/** Applied when creating an entry. */
|
|
45
|
+
createEntry?: FeedbackRateLimiter<Result>;
|
|
46
|
+
/** Applied when creating a comment or reply. */
|
|
47
|
+
createComment?: FeedbackRateLimiter<Result>;
|
|
48
|
+
/** Applied to entry edits, status changes, comment edits, and deletion. */
|
|
49
|
+
editContent?: FeedbackRateLimiter<Result>;
|
|
50
|
+
/** Applied to entry upvotes and comment likes. */
|
|
51
|
+
reactions?: FeedbackRateLimiter<Result>;
|
|
52
|
+
}
|
|
53
|
+
/** Configuration for the default behavior, where limiters reject by throwing. */
|
|
54
|
+
export interface ThrowingFeedbackRateLimitConfig {
|
|
55
|
+
/**
|
|
56
|
+
* Configures limiter functions to reject requests by throwing.
|
|
57
|
+
*
|
|
58
|
+
* This is the default when `behavior` is omitted.
|
|
59
|
+
*/
|
|
60
|
+
behavior?: "throw";
|
|
61
|
+
/**
|
|
62
|
+
* Whether all configured limiter groups apply to moderators.
|
|
63
|
+
*
|
|
64
|
+
* @default false
|
|
65
|
+
*/
|
|
66
|
+
limitModerators?: boolean;
|
|
67
|
+
/** Not accepted in throwing mode; select `"return"` to provide a validator. */
|
|
68
|
+
returns?: never;
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* A required, non-optional Convex validator for a non-null rate-limit
|
|
72
|
+
* rejection.
|
|
73
|
+
*/
|
|
74
|
+
export type FeedbackRateLimitReturnValidator = Validator<Exclude<Value, null>, "required", string>;
|
|
75
|
+
/**
|
|
76
|
+
* Return behavior: a defined limiter result short-circuits the mutation.
|
|
77
|
+
*
|
|
78
|
+
* @typeParam ReturnsValidator Validator for the value returned on rejection.
|
|
79
|
+
*/
|
|
80
|
+
export interface ReturningFeedbackRateLimitConfig<ReturnsValidator extends FeedbackRateLimitReturnValidator> {
|
|
81
|
+
/** Configures limiter functions to return rejected requests to the client. */
|
|
82
|
+
behavior: "return";
|
|
83
|
+
/**
|
|
84
|
+
* Convex validator for the non-null rejection value returned by a limiter.
|
|
85
|
+
*
|
|
86
|
+
* This field is required when `behavior` is `"return"` and may not accept
|
|
87
|
+
* `null`. Its inferred value type is added to the result type of every
|
|
88
|
+
* exposed feedback mutation.
|
|
89
|
+
*/
|
|
90
|
+
returns: ReturnsValidator;
|
|
91
|
+
/**
|
|
92
|
+
* Whether all configured limiter groups apply to moderators.
|
|
93
|
+
*
|
|
94
|
+
* @default false
|
|
95
|
+
*/
|
|
96
|
+
limitModerators?: boolean;
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Configuration for feedback rate-limit rejection behavior.
|
|
100
|
+
*
|
|
101
|
+
* Without a validator, this resolves to throwing behavior. Supplying a
|
|
102
|
+
* validator requires `behavior: "return"` and the same validator in `returns`.
|
|
103
|
+
*
|
|
104
|
+
* @typeParam ReturnsValidator Validator for a non-throwing rejection value.
|
|
105
|
+
*/
|
|
106
|
+
export type FeedbackRateLimitConfig<ReturnsValidator extends FeedbackRateLimitReturnValidator | undefined = undefined> = ReturnsValidator extends FeedbackRateLimitReturnValidator ? ReturningFeedbackRateLimitConfig<ReturnsValidator> : ThrowingFeedbackRateLimitConfig;
|
|
107
|
+
type RegisteredFeedbackFunction<Function> = Function extends FunctionReference<"mutation", "public", infer Args, infer Result> ? Args extends DefaultFunctionArgs ? RegisteredMutation<"public", Args, Promise<Result>> : never : Function extends FunctionReference<"query", "public", infer Args, infer Result> ? Args extends DefaultFunctionArgs ? RegisteredQuery<"public", Args, Promise<Result>> : never : never;
|
|
108
|
+
type ExposedFeedbackApi<RateLimitResult> = {
|
|
109
|
+
[FunctionName in keyof FeedbackPublicApi<string | undefined, RateLimitResult>]: RegisteredFeedbackFunction<FeedbackPublicApi<string | undefined, RateLimitResult>[FunctionName]>;
|
|
110
|
+
};
|
|
111
|
+
interface ExposeFeedbackOptionsBase {
|
|
112
|
+
/**
|
|
113
|
+
* Resolves the current request into a stable feedback actor.
|
|
114
|
+
*
|
|
115
|
+
* Return `null` for an unauthenticated request. Read-only queries may still
|
|
116
|
+
* execute, but mutations requiring an actor will reject unauthenticated
|
|
117
|
+
* callers.
|
|
118
|
+
*/
|
|
12
119
|
actor: (ctx: FeedbackAuthContext) => Promise<FeedbackActor | null>;
|
|
120
|
+
/**
|
|
121
|
+
* Optional component behavior overrides.
|
|
122
|
+
*
|
|
123
|
+
* Unspecified values use `defaultFeedbackConfig`.
|
|
124
|
+
*/
|
|
13
125
|
config?: FeedbackConfigOverrides;
|
|
14
126
|
}
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
}, Promise<{
|
|
50
|
-
actorId: string;
|
|
51
|
-
body: string;
|
|
52
|
-
commentCount: number;
|
|
53
|
-
creationTime: number;
|
|
54
|
-
id: string;
|
|
55
|
-
kind: "feedback" | "feature_request" | "bug_report";
|
|
56
|
-
status: "open" | "under_review" | "planned" | "in_progress" | "completed" | "closed";
|
|
57
|
-
title: string;
|
|
58
|
-
updatedAt?: number;
|
|
59
|
-
upvoteCount: number;
|
|
60
|
-
viewerHasUpvoted: boolean;
|
|
61
|
-
} | null>>;
|
|
62
|
-
searchEntries: import("convex/server").RegisteredQuery<"public", {
|
|
63
|
-
kind?: "feedback" | "feature_request" | "bug_report" | undefined;
|
|
64
|
-
status?: "open" | "under_review" | "planned" | "in_progress" | "completed" | "closed" | undefined;
|
|
65
|
-
limit?: number | undefined;
|
|
66
|
-
searchQuery: string;
|
|
67
|
-
}, Promise<{
|
|
68
|
-
actorId: string;
|
|
69
|
-
body: string;
|
|
70
|
-
commentCount: number;
|
|
71
|
-
creationTime: number;
|
|
72
|
-
id: string;
|
|
73
|
-
kind: "feedback" | "feature_request" | "bug_report";
|
|
74
|
-
status: "open" | "under_review" | "planned" | "in_progress" | "completed" | "closed";
|
|
75
|
-
title: string;
|
|
76
|
-
updatedAt?: number;
|
|
77
|
-
upvoteCount: number;
|
|
78
|
-
viewerHasUpvoted: boolean;
|
|
79
|
-
}[]>>;
|
|
80
|
-
findSimilarEntries: import("convex/server").RegisteredQuery<"public", {
|
|
81
|
-
kind?: "feedback" | "feature_request" | "bug_report" | undefined;
|
|
82
|
-
limit?: number | undefined;
|
|
83
|
-
title: string;
|
|
84
|
-
body: string;
|
|
85
|
-
}, Promise<{
|
|
86
|
-
exact: Array<{
|
|
87
|
-
actorId: string;
|
|
88
|
-
body: string;
|
|
89
|
-
commentCount: number;
|
|
90
|
-
creationTime: number;
|
|
91
|
-
id: string;
|
|
92
|
-
kind: "feedback" | "feature_request" | "bug_report";
|
|
93
|
-
status: "open" | "under_review" | "planned" | "in_progress" | "completed" | "closed";
|
|
94
|
-
title: string;
|
|
95
|
-
updatedAt?: number;
|
|
96
|
-
upvoteCount: number;
|
|
97
|
-
viewerHasUpvoted: boolean;
|
|
98
|
-
}>;
|
|
99
|
-
similar: Array<{
|
|
100
|
-
actorId: string;
|
|
101
|
-
body: string;
|
|
102
|
-
commentCount: number;
|
|
103
|
-
creationTime: number;
|
|
104
|
-
id: string;
|
|
105
|
-
kind: "feedback" | "feature_request" | "bug_report";
|
|
106
|
-
status: "open" | "under_review" | "planned" | "in_progress" | "completed" | "closed";
|
|
107
|
-
title: string;
|
|
108
|
-
updatedAt?: number;
|
|
109
|
-
upvoteCount: number;
|
|
110
|
-
viewerHasUpvoted: boolean;
|
|
111
|
-
}>;
|
|
112
|
-
}>>;
|
|
113
|
-
createEntry: import("convex/server").RegisteredMutation<"public", {
|
|
114
|
-
kind: "feedback" | "feature_request" | "bug_report";
|
|
115
|
-
title: string;
|
|
116
|
-
body: string;
|
|
117
|
-
}, Promise<string>>;
|
|
118
|
-
updateEntry: import("convex/server").RegisteredMutation<"public", {
|
|
119
|
-
title: string;
|
|
120
|
-
body: string;
|
|
121
|
-
entryId: string;
|
|
122
|
-
}, Promise<null>>;
|
|
123
|
-
setEntryStatus: import("convex/server").RegisteredMutation<"public", {
|
|
124
|
-
status: "open" | "under_review" | "planned" | "in_progress" | "completed" | "closed";
|
|
125
|
-
entryId: string;
|
|
126
|
-
}, Promise<null>>;
|
|
127
|
-
setEntryUpvote: import("convex/server").RegisteredMutation<"public", {
|
|
128
|
-
entryId: string;
|
|
129
|
-
desiredState: boolean;
|
|
130
|
-
}, Promise<{
|
|
131
|
-
active: boolean;
|
|
132
|
-
upvoteCount: number;
|
|
133
|
-
}>>;
|
|
134
|
-
listComments: import("convex/server").RegisteredQuery<"public", {
|
|
135
|
-
sort?: "top" | "newest" | "oldest" | undefined;
|
|
136
|
-
parentCommentId?: string | undefined;
|
|
137
|
-
paginationOpts: {
|
|
138
|
-
id?: number;
|
|
139
|
-
endCursor?: string | null;
|
|
140
|
-
maximumRowsRead?: number;
|
|
141
|
-
maximumBytesRead?: number;
|
|
142
|
-
numItems: number;
|
|
143
|
-
cursor: string | null;
|
|
144
|
-
};
|
|
145
|
-
entryId: string;
|
|
146
|
-
}, Promise<{
|
|
147
|
-
continueCursor: string;
|
|
148
|
-
isDone: boolean;
|
|
149
|
-
page: Array<{
|
|
150
|
-
actorId: string;
|
|
151
|
-
body: string | null;
|
|
152
|
-
creationTime: number;
|
|
153
|
-
deletedAt?: number;
|
|
154
|
-
depth: number;
|
|
155
|
-
entryId: string;
|
|
156
|
-
id: string;
|
|
157
|
-
likeCount: number;
|
|
158
|
-
parentCommentId?: string;
|
|
159
|
-
replyCount: number;
|
|
160
|
-
updatedAt?: number;
|
|
161
|
-
viewerHasLiked: boolean;
|
|
162
|
-
}>;
|
|
163
|
-
pageStatus?: "SplitRecommended" | "SplitRequired" | null;
|
|
164
|
-
splitCursor?: string | null;
|
|
165
|
-
}>>;
|
|
166
|
-
createComment: import("convex/server").RegisteredMutation<"public", {
|
|
167
|
-
parentCommentId?: string | undefined;
|
|
168
|
-
body: string;
|
|
169
|
-
entryId: string;
|
|
170
|
-
}, Promise<string>>;
|
|
171
|
-
updateComment: import("convex/server").RegisteredMutation<"public", {
|
|
172
|
-
body: string;
|
|
173
|
-
commentId: string;
|
|
174
|
-
}, Promise<null>>;
|
|
175
|
-
deleteComment: import("convex/server").RegisteredMutation<"public", {
|
|
176
|
-
commentId: string;
|
|
177
|
-
}, Promise<null>>;
|
|
178
|
-
setCommentLike: import("convex/server").RegisteredMutation<"public", {
|
|
179
|
-
desiredState: boolean;
|
|
180
|
-
commentId: string;
|
|
181
|
-
}, Promise<{
|
|
182
|
-
active: boolean;
|
|
183
|
-
likeCount: number;
|
|
184
|
-
}>>;
|
|
127
|
+
/** Options for the default mode, where limiter functions reject by throwing. */
|
|
128
|
+
export type ThrowingExposeFeedbackOptions = Omit<ExposeFeedbackOptionsBase, "config"> & {
|
|
129
|
+
/** Optional throwing rate limiters for the component's mutation groups. */
|
|
130
|
+
rateLimiters?: FeedbackRateLimiters;
|
|
131
|
+
/** Optional component behavior and throwing rate-limit overrides. */
|
|
132
|
+
config?: FeedbackConfigOverrides & {
|
|
133
|
+
/**
|
|
134
|
+
* Controls throwing behavior and the moderator exemption.
|
|
135
|
+
*
|
|
136
|
+
* Omit this object to use `behavior: "throw"` and
|
|
137
|
+
* `limitModerators: false`.
|
|
138
|
+
*/
|
|
139
|
+
rateLimiting?: FeedbackRateLimitConfig;
|
|
140
|
+
};
|
|
141
|
+
};
|
|
142
|
+
/** Options for returning a validated rejection value instead of throwing. */
|
|
143
|
+
export type ReturningExposeFeedbackOptions<ReturnsValidator extends FeedbackRateLimitReturnValidator> = Omit<ExposeFeedbackOptionsBase, "config"> & {
|
|
144
|
+
/**
|
|
145
|
+
* Optional returning rate limiters for the component's mutation groups.
|
|
146
|
+
*
|
|
147
|
+
* A limiter returns `undefined` to allow the request. Any other returned
|
|
148
|
+
* value must match `config.rateLimiting.returns` and prevents the component
|
|
149
|
+
* mutation from running.
|
|
150
|
+
*/
|
|
151
|
+
rateLimiters?: FeedbackRateLimiters<NoInfer<Infer<ReturnsValidator>>>;
|
|
152
|
+
/** Component behavior plus the required non-throwing limiter configuration. */
|
|
153
|
+
config: FeedbackConfigOverrides & {
|
|
154
|
+
/**
|
|
155
|
+
* Configures non-throwing rejection behavior.
|
|
156
|
+
*
|
|
157
|
+
* Both `behavior: "return"` and a `returns` Convex validator are required.
|
|
158
|
+
*/
|
|
159
|
+
rateLimiting: FeedbackRateLimitConfig<ReturnsValidator>;
|
|
160
|
+
};
|
|
185
161
|
};
|
|
162
|
+
/**
|
|
163
|
+
* Configuration used when exposing feedback functions from the host app.
|
|
164
|
+
*
|
|
165
|
+
* When `ReturnsValidator` is omitted, limiter functions use throwing behavior.
|
|
166
|
+
* Supplying a validator selects return behavior and adds its inferred value to
|
|
167
|
+
* the exposed mutation result types.
|
|
168
|
+
*/
|
|
169
|
+
export type ExposeFeedbackOptions<ReturnsValidator extends FeedbackRateLimitReturnValidator | undefined = undefined> = ReturnsValidator extends FeedbackRateLimitReturnValidator ? ReturningExposeFeedbackOptions<ReturnsValidator> : ThrowingExposeFeedbackOptions;
|
|
170
|
+
/**
|
|
171
|
+
* Exposes the feedback component through host queries and mutations.
|
|
172
|
+
*
|
|
173
|
+
* Rate limiters use throwing behavior unless
|
|
174
|
+
* `config.rateLimiting.behavior` is `"return"`. Return behavior requires a
|
|
175
|
+
* `returns` validator and adds that validator's inferred type to every
|
|
176
|
+
* mutation result.
|
|
177
|
+
*/
|
|
178
|
+
export declare function exposeFeedbackApi<Name extends string | undefined, ReturnsValidator extends FeedbackRateLimitReturnValidator>(component: ComponentApi<Name>, options: ReturningExposeFeedbackOptions<ReturnsValidator>): ExposedFeedbackApi<Infer<ReturnsValidator>>;
|
|
179
|
+
/** Exposes feedback using optional throwing rate limiters. */
|
|
180
|
+
export declare function exposeFeedbackApi<Name extends string | undefined>(component: ComponentApi<Name>, options: ThrowingExposeFeedbackOptions): ExposedFeedbackApi<never>;
|
|
186
181
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/client/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAKL,KAAK,IAAI,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/client/index.ts"],"names":[],"mappings":"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"}
|
package/dist/client/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { mutationGeneric, paginationOptsValidator, paginationResultValidator, queryGeneric, } from "convex/server";
|
|
2
|
-
import { ConvexError, v } from "convex/values";
|
|
2
|
+
import { ConvexError, v, } from "convex/values";
|
|
3
3
|
import { commentSortValidator, entryKindValidator, entrySortValidator, entryStatusValidator, publicCommentValidator, publicEntryValidator, similarEntriesValidator, } from "../component/model.js";
|
|
4
4
|
import { createFeedbackConfig, } from "./config.js";
|
|
5
5
|
export { createFeedbackConfig, defaultFeedbackConfig, } from "./config.js";
|
|
@@ -9,6 +9,31 @@ function requireActor(actor) {
|
|
|
9
9
|
}
|
|
10
10
|
return actor;
|
|
11
11
|
}
|
|
12
|
+
function requireModerator(actor) {
|
|
13
|
+
if (!actor.isModerator) {
|
|
14
|
+
throw new ConvexError("Moderator permissions are required.");
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
function rateLimitedReturns(base, limit) {
|
|
18
|
+
return (limit === undefined ? base : v.union(base, limit));
|
|
19
|
+
}
|
|
20
|
+
async function applyRateLimiter(ctx, actor, limiter, rateLimitConfig) {
|
|
21
|
+
if (limiter === undefined ||
|
|
22
|
+
(actor.isModerator && rateLimitConfig?.limitModerators !== true)) {
|
|
23
|
+
return undefined;
|
|
24
|
+
}
|
|
25
|
+
const result = await limiter(ctx, actor.id);
|
|
26
|
+
if (rateLimitConfig?.behavior !== "return" || result === undefined) {
|
|
27
|
+
return undefined;
|
|
28
|
+
}
|
|
29
|
+
if (result === null) {
|
|
30
|
+
throw new ConvexError("A return-mode feedback rate limiter returned null. Return undefined to allow the request or a non-null value matching config.rateLimiting.returns to reject it.");
|
|
31
|
+
}
|
|
32
|
+
return result;
|
|
33
|
+
}
|
|
34
|
+
function asRateLimitContext(ctx) {
|
|
35
|
+
return ctx;
|
|
36
|
+
}
|
|
12
37
|
function clampPositive(value, fallback, maximum) {
|
|
13
38
|
const candidate = value ?? fallback;
|
|
14
39
|
if (!Number.isFinite(candidate))
|
|
@@ -24,13 +49,21 @@ function clampPagination(paginationOpts, maximum) {
|
|
|
24
49
|
function actorIdFields(actor) {
|
|
25
50
|
return actor === null ? {} : { viewerActorId: actor.id };
|
|
26
51
|
}
|
|
27
|
-
|
|
52
|
+
function buildFeedbackApi(component, options) {
|
|
28
53
|
const config = createFeedbackConfig(options.config);
|
|
54
|
+
const rateLimitConfig = options.config?.rateLimiting;
|
|
55
|
+
const rateLimitReturnValidator = rateLimitConfig?.behavior === "return"
|
|
56
|
+
? rateLimitConfig.returns
|
|
57
|
+
: undefined;
|
|
58
|
+
const idReturns = rateLimitedReturns(v.string(), rateLimitReturnValidator);
|
|
59
|
+
const nullReturns = rateLimitedReturns(v.null(), rateLimitReturnValidator);
|
|
60
|
+
const entryUpvoteReturns = rateLimitedReturns(v.object({ active: v.boolean(), upvoteCount: v.number() }), rateLimitReturnValidator);
|
|
61
|
+
const commentLikeReturns = rateLimitedReturns(v.object({ active: v.boolean(), likeCount: v.number() }), rateLimitReturnValidator);
|
|
29
62
|
return {
|
|
30
63
|
listEntries: queryGeneric({
|
|
31
64
|
args: {
|
|
32
65
|
paginationOpts: paginationOptsValidator,
|
|
33
|
-
|
|
66
|
+
kinds: v.optional(v.array(entryKindValidator)),
|
|
34
67
|
status: v.optional(entryStatusValidator),
|
|
35
68
|
sort: v.optional(entrySortValidator),
|
|
36
69
|
},
|
|
@@ -39,7 +72,7 @@ export function exposeFeedbackApi(component, options) {
|
|
|
39
72
|
const actor = await options.actor(ctx);
|
|
40
73
|
return await ctx.runQuery(component.entries.list, {
|
|
41
74
|
paginationOpts: clampPagination(args.paginationOpts, config.entries.maxPageSize),
|
|
42
|
-
...(args.
|
|
75
|
+
...(args.kinds === undefined ? {} : { kinds: args.kinds }),
|
|
43
76
|
...(args.status === undefined ? {} : { status: args.status }),
|
|
44
77
|
sort: args.sort ?? config.entries.defaultSort,
|
|
45
78
|
...actorIdFields(actor),
|
|
@@ -60,7 +93,7 @@ export function exposeFeedbackApi(component, options) {
|
|
|
60
93
|
searchEntries: queryGeneric({
|
|
61
94
|
args: {
|
|
62
95
|
searchQuery: v.string(),
|
|
63
|
-
|
|
96
|
+
kinds: v.optional(v.array(entryKindValidator)),
|
|
64
97
|
status: v.optional(entryStatusValidator),
|
|
65
98
|
limit: v.optional(v.number()),
|
|
66
99
|
},
|
|
@@ -69,7 +102,7 @@ export function exposeFeedbackApi(component, options) {
|
|
|
69
102
|
const actor = await options.actor(ctx);
|
|
70
103
|
return await ctx.runQuery(component.entries.search, {
|
|
71
104
|
searchQuery: args.searchQuery,
|
|
72
|
-
...(args.
|
|
105
|
+
...(args.kinds === undefined ? {} : { kinds: args.kinds }),
|
|
73
106
|
...(args.status === undefined ? {} : { status: args.status }),
|
|
74
107
|
limit: clampPositive(args.limit, config.search.defaultLimit, config.search.maxLimit),
|
|
75
108
|
...actorIdFields(actor),
|
|
@@ -104,9 +137,12 @@ export function exposeFeedbackApi(component, options) {
|
|
|
104
137
|
title: v.string(),
|
|
105
138
|
body: v.string(),
|
|
106
139
|
},
|
|
107
|
-
returns:
|
|
140
|
+
returns: idReturns,
|
|
108
141
|
handler: async (ctx, args) => {
|
|
109
142
|
const actor = requireActor(await options.actor(ctx));
|
|
143
|
+
const limited = await applyRateLimiter(asRateLimitContext(ctx), actor, options.rateLimiters?.createEntry, rateLimitConfig);
|
|
144
|
+
if (limited !== undefined)
|
|
145
|
+
return limited;
|
|
110
146
|
return await ctx.runMutation(component.entries.create, {
|
|
111
147
|
actorId: actor.id,
|
|
112
148
|
kind: args.kind,
|
|
@@ -125,9 +161,12 @@ export function exposeFeedbackApi(component, options) {
|
|
|
125
161
|
title: v.string(),
|
|
126
162
|
body: v.string(),
|
|
127
163
|
},
|
|
128
|
-
returns:
|
|
164
|
+
returns: nullReturns,
|
|
129
165
|
handler: async (ctx, args) => {
|
|
130
166
|
const actor = requireActor(await options.actor(ctx));
|
|
167
|
+
const limited = await applyRateLimiter(asRateLimitContext(ctx), actor, options.rateLimiters?.editContent, rateLimitConfig);
|
|
168
|
+
if (limited !== undefined)
|
|
169
|
+
return limited;
|
|
131
170
|
return await ctx.runMutation(component.entries.update, {
|
|
132
171
|
actor,
|
|
133
172
|
entryId: args.entryId,
|
|
@@ -141,9 +180,13 @@ export function exposeFeedbackApi(component, options) {
|
|
|
141
180
|
}),
|
|
142
181
|
setEntryStatus: mutationGeneric({
|
|
143
182
|
args: { entryId: v.string(), status: entryStatusValidator },
|
|
144
|
-
returns:
|
|
183
|
+
returns: nullReturns,
|
|
145
184
|
handler: async (ctx, args) => {
|
|
146
185
|
const actor = requireActor(await options.actor(ctx));
|
|
186
|
+
requireModerator(actor);
|
|
187
|
+
const limited = await applyRateLimiter(asRateLimitContext(ctx), actor, options.rateLimiters?.editContent, rateLimitConfig);
|
|
188
|
+
if (limited !== undefined)
|
|
189
|
+
return limited;
|
|
147
190
|
return await ctx.runMutation(component.entries.setStatus, {
|
|
148
191
|
actor,
|
|
149
192
|
entryId: args.entryId,
|
|
@@ -153,9 +196,12 @@ export function exposeFeedbackApi(component, options) {
|
|
|
153
196
|
}),
|
|
154
197
|
setEntryUpvote: mutationGeneric({
|
|
155
198
|
args: { entryId: v.string(), desiredState: v.boolean() },
|
|
156
|
-
returns:
|
|
199
|
+
returns: entryUpvoteReturns,
|
|
157
200
|
handler: async (ctx, args) => {
|
|
158
201
|
const actor = requireActor(await options.actor(ctx));
|
|
202
|
+
const limited = await applyRateLimiter(asRateLimitContext(ctx), actor, options.rateLimiters?.reactions, rateLimitConfig);
|
|
203
|
+
if (limited !== undefined)
|
|
204
|
+
return limited;
|
|
159
205
|
return await ctx.runMutation(component.entries.setUpvote, {
|
|
160
206
|
actorId: actor.id,
|
|
161
207
|
entryId: args.entryId,
|
|
@@ -190,9 +236,12 @@ export function exposeFeedbackApi(component, options) {
|
|
|
190
236
|
parentCommentId: v.optional(v.string()),
|
|
191
237
|
body: v.string(),
|
|
192
238
|
},
|
|
193
|
-
returns:
|
|
239
|
+
returns: idReturns,
|
|
194
240
|
handler: async (ctx, args) => {
|
|
195
241
|
const actor = requireActor(await options.actor(ctx));
|
|
242
|
+
const limited = await applyRateLimiter(asRateLimitContext(ctx), actor, options.rateLimiters?.createComment, rateLimitConfig);
|
|
243
|
+
if (limited !== undefined)
|
|
244
|
+
return limited;
|
|
196
245
|
return await ctx.runMutation(component.comments.create, {
|
|
197
246
|
actorId: actor.id,
|
|
198
247
|
entryId: args.entryId,
|
|
@@ -207,9 +256,12 @@ export function exposeFeedbackApi(component, options) {
|
|
|
207
256
|
}),
|
|
208
257
|
updateComment: mutationGeneric({
|
|
209
258
|
args: { commentId: v.string(), body: v.string() },
|
|
210
|
-
returns:
|
|
259
|
+
returns: nullReturns,
|
|
211
260
|
handler: async (ctx, args) => {
|
|
212
261
|
const actor = requireActor(await options.actor(ctx));
|
|
262
|
+
const limited = await applyRateLimiter(asRateLimitContext(ctx), actor, options.rateLimiters?.editContent, rateLimitConfig);
|
|
263
|
+
if (limited !== undefined)
|
|
264
|
+
return limited;
|
|
213
265
|
return await ctx.runMutation(component.comments.update, {
|
|
214
266
|
actor,
|
|
215
267
|
commentId: args.commentId,
|
|
@@ -221,9 +273,12 @@ export function exposeFeedbackApi(component, options) {
|
|
|
221
273
|
}),
|
|
222
274
|
deleteComment: mutationGeneric({
|
|
223
275
|
args: { commentId: v.string() },
|
|
224
|
-
returns:
|
|
276
|
+
returns: nullReturns,
|
|
225
277
|
handler: async (ctx, args) => {
|
|
226
278
|
const actor = requireActor(await options.actor(ctx));
|
|
279
|
+
const limited = await applyRateLimiter(asRateLimitContext(ctx), actor, options.rateLimiters?.editContent, rateLimitConfig);
|
|
280
|
+
if (limited !== undefined)
|
|
281
|
+
return limited;
|
|
227
282
|
return await ctx.runMutation(component.comments.remove, {
|
|
228
283
|
actor,
|
|
229
284
|
commentId: args.commentId,
|
|
@@ -233,9 +288,12 @@ export function exposeFeedbackApi(component, options) {
|
|
|
233
288
|
}),
|
|
234
289
|
setCommentLike: mutationGeneric({
|
|
235
290
|
args: { commentId: v.string(), desiredState: v.boolean() },
|
|
236
|
-
returns:
|
|
291
|
+
returns: commentLikeReturns,
|
|
237
292
|
handler: async (ctx, args) => {
|
|
238
293
|
const actor = requireActor(await options.actor(ctx));
|
|
294
|
+
const limited = await applyRateLimiter(asRateLimitContext(ctx), actor, options.rateLimiters?.reactions, rateLimitConfig);
|
|
295
|
+
if (limited !== undefined)
|
|
296
|
+
return limited;
|
|
239
297
|
return await ctx.runMutation(component.comments.setLike, {
|
|
240
298
|
actorId: actor.id,
|
|
241
299
|
commentId: args.commentId,
|
|
@@ -245,4 +303,7 @@ export function exposeFeedbackApi(component, options) {
|
|
|
245
303
|
}),
|
|
246
304
|
};
|
|
247
305
|
}
|
|
306
|
+
export function exposeFeedbackApi(component, options) {
|
|
307
|
+
return buildFeedbackApi(component, options);
|
|
308
|
+
}
|
|
248
309
|
//# sourceMappingURL=index.js.map
|
package/dist/client/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/client/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/client/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -116,7 +116,7 @@ export type ComponentApi<Name extends string | undefined = string | undefined> =
|
|
|
116
116
|
viewerHasUpvoted: boolean;
|
|
117
117
|
} | null, Name>;
|
|
118
118
|
list: FunctionReference<"query", "internal", {
|
|
119
|
-
|
|
119
|
+
kinds?: Array<"feedback" | "feature_request" | "bug_report">;
|
|
120
120
|
paginationOpts: {
|
|
121
121
|
cursor: string | null;
|
|
122
122
|
endCursor?: string | null;
|
|
@@ -148,7 +148,7 @@ export type ComponentApi<Name extends string | undefined = string | undefined> =
|
|
|
148
148
|
splitCursor?: string | null;
|
|
149
149
|
}, Name>;
|
|
150
150
|
search: FunctionReference<"query", "internal", {
|
|
151
|
-
|
|
151
|
+
kinds?: Array<"feedback" | "feature_request" | "bug_report">;
|
|
152
152
|
limit: number;
|
|
153
153
|
searchQuery: string;
|
|
154
154
|
status?: "open" | "under_review" | "planned" | "in_progress" | "completed" | "closed";
|