convex-feedback 0.1.4 → 0.2.0-beta.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +87 -27
- package/dist/.tsbuildinfo +1 -1
- package/dist/client/api.d.ts +80 -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 +261 -8
- package/dist/client/index.js.map +1 -1
- package/dist/component/_generated/api.d.ts +8 -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 +295 -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 +4 -3
- package/dist/component/comments.js.map +1 -1
- package/dist/component/crons.d.ts +3 -0
- package/dist/component/crons.d.ts.map +1 -0
- package/dist/component/crons.js +8 -0
- package/dist/component/crons.js.map +1 -0
- package/dist/component/entries.d.ts +29 -16
- package/dist/component/entries.d.ts.map +1 -1
- package/dist/component/entries.js +136 -12
- 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/migrations.d.ts +11 -0
- package/dist/component/migrations.d.ts.map +1 -0
- package/dist/component/migrations.js +35 -0
- package/dist/component/migrations.js.map +1 -0
- package/dist/component/model.d.ts +144 -24
- package/dist/component/model.d.ts.map +1 -1
- package/dist/component/model.js +34 -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 +67 -5
- package/dist/component/schema.d.ts.map +1 -1
- package/dist/component/schema.js +57 -2
- package/dist/component/schema.js.map +1 -1
- package/dist/component/tags.d.ts +58 -0
- package/dist/component/tags.d.ts.map +1 -0
- package/dist/component/tags.js +216 -0
- package/dist/component/tags.js.map +1 -0
- package/dist/react/index.d.ts +173 -12
- package/dist/react/index.d.ts.map +1 -1
- package/dist/react/index.js +78 -1
- package/dist/react/index.js.map +1 -1
- package/dist/test.d.ts +67 -5
- package/dist/test.d.ts.map +1 -1
- package/package.json +6 -2
- package/src/client/README.md +1 -1
- package/src/client/api.ts +183 -0
- package/src/client/config.ts +1 -1
- package/src/client/index.ts +340 -13
- package/src/component/README.md +3 -1
- package/src/component/_generated/api.ts +8 -0
- package/src/component/_generated/component.ts +373 -9
- package/src/component/admin.ts +180 -0
- package/src/component/comments.ts +5 -2
- package/src/component/crons.ts +16 -0
- package/src/component/entries.ts +175 -11
- package/src/component/helpers.ts +44 -1
- package/src/component/migrations.ts +44 -0
- package/src/component/model.ts +79 -4
- package/src/component/roadmap.ts +627 -0
- package/src/component/schema.ts +61 -1
- package/src/react/README.md +2 -2
- package/src/react/index.ts +152 -4
package/dist/client/api.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { FunctionReference, PaginationOptions, PaginationResult } from "convex/server";
|
|
2
|
-
import type { CommentSort, EntryKind, EntrySort, EntryStatus, FeedbackComment, FeedbackEntry, FeedbackMetadata, SimilarEntriesResult } from "../component/model.js";
|
|
2
|
+
import type { CommentSort, EntryKind, EntrySort, EntryStatus, EntryStatusFilter, FeedbackComment, FeedbackEntry, FeedbackMetadata, AdminFeedbackEntry, EntryPriority, RoadmapItem, RoadmapStatus, SimilarEntriesResult } from "../component/model.js";
|
|
3
3
|
/**
|
|
4
4
|
* Arguments for cursor-paginated entry listing.
|
|
5
5
|
*/
|
|
@@ -22,6 +22,8 @@ export type ListEntriesArgs = {
|
|
|
22
22
|
kinds?: EntryKind[];
|
|
23
23
|
/** Restricts entries to this workflow status. */
|
|
24
24
|
status?: EntryStatus;
|
|
25
|
+
/** Restricts entries to the indexed open or closed board bucket. */
|
|
26
|
+
statusFilter?: EntryStatusFilter;
|
|
25
27
|
/**
|
|
26
28
|
* Server-side ordering strategy.
|
|
27
29
|
*
|
|
@@ -51,6 +53,8 @@ export type SearchEntriesArgs = {
|
|
|
51
53
|
kinds?: EntryKind[];
|
|
52
54
|
/** Optional workflow-status restriction. */
|
|
53
55
|
status?: EntryStatus;
|
|
56
|
+
/** Optional indexed open or closed board bucket. */
|
|
57
|
+
statusFilter?: EntryStatusFilter;
|
|
54
58
|
/**
|
|
55
59
|
* Maximum number of results to return.
|
|
56
60
|
*
|
|
@@ -128,6 +132,63 @@ export type SetEntryStatusArgs = {
|
|
|
128
132
|
/** Desired workflow status. */
|
|
129
133
|
status: EntryStatus;
|
|
130
134
|
};
|
|
135
|
+
export type AdminListEntriesArgs = {
|
|
136
|
+
/** Convex cursor-pagination options. */
|
|
137
|
+
paginationOpts: PaginationOptions;
|
|
138
|
+
kinds?: EntryKind[];
|
|
139
|
+
status?: EntryStatus;
|
|
140
|
+
priority?: EntryPriority;
|
|
141
|
+
};
|
|
142
|
+
export type AdminSearchEntriesArgs = AdminListEntriesArgs & {
|
|
143
|
+
searchQuery: string;
|
|
144
|
+
};
|
|
145
|
+
export type SetEntryPriorityArgs = {
|
|
146
|
+
entryId: string;
|
|
147
|
+
priority: EntryPriority | null;
|
|
148
|
+
};
|
|
149
|
+
export type ListRoadmapArgs = {
|
|
150
|
+
/** Convex cursor-pagination options. */
|
|
151
|
+
paginationOpts: PaginationOptions;
|
|
152
|
+
status?: RoadmapStatus;
|
|
153
|
+
};
|
|
154
|
+
export type SearchRoadmapArgs = {
|
|
155
|
+
searchQuery: string;
|
|
156
|
+
limit?: number;
|
|
157
|
+
};
|
|
158
|
+
export type CreateRoadmapArgs = {
|
|
159
|
+
title: string;
|
|
160
|
+
description?: string;
|
|
161
|
+
status: RoadmapStatus;
|
|
162
|
+
};
|
|
163
|
+
export type CreateRoadmapForEntryArgs = CreateRoadmapArgs & {
|
|
164
|
+
entryId: string;
|
|
165
|
+
};
|
|
166
|
+
export type UpdateRoadmapArgs = {
|
|
167
|
+
roadmapId: string;
|
|
168
|
+
title: string;
|
|
169
|
+
description?: string;
|
|
170
|
+
};
|
|
171
|
+
export type DeleteRoadmapArgs = {
|
|
172
|
+
roadmapId: string;
|
|
173
|
+
};
|
|
174
|
+
export type MoveRoadmapArgs = {
|
|
175
|
+
roadmapId: string;
|
|
176
|
+
status: RoadmapStatus;
|
|
177
|
+
previousItemId?: string;
|
|
178
|
+
nextItemId?: string;
|
|
179
|
+
};
|
|
180
|
+
export type AttachFeedbackToRoadmapArgs = {
|
|
181
|
+
roadmapId: string;
|
|
182
|
+
entryId: string;
|
|
183
|
+
};
|
|
184
|
+
export type DetachFeedbackFromRoadmapArgs = {
|
|
185
|
+
entryId: string;
|
|
186
|
+
};
|
|
187
|
+
export type ListRoadmapFeedbackArgs = {
|
|
188
|
+
/** Convex cursor-pagination options. */
|
|
189
|
+
paginationOpts: PaginationOptions;
|
|
190
|
+
roadmapId: string;
|
|
191
|
+
};
|
|
131
192
|
/**
|
|
132
193
|
* Arguments for setting the current actor's entry-upvote state.
|
|
133
194
|
*/
|
|
@@ -243,6 +304,10 @@ export type SetCommentLikeResult = {
|
|
|
243
304
|
* the original success-only mutation results.
|
|
244
305
|
*/
|
|
245
306
|
export interface FeedbackPublicApi<Name extends string | undefined = string | undefined, RateLimitResult = never> {
|
|
307
|
+
/** Returns whether the host actor has admin permissions. */
|
|
308
|
+
isAdmin: FunctionReference<"query", "public", Record<string, never>, boolean, Name>;
|
|
309
|
+
/** Returns whether the current request has an authenticated host actor. */
|
|
310
|
+
isAuthenticated: FunctionReference<"query", "public", Record<string, never>, boolean, Name>;
|
|
246
311
|
/** Returns a cursor-paginated entry list. */
|
|
247
312
|
listEntries: FunctionReference<"query", "public", ListEntriesArgs, PaginationResult<FeedbackEntry>, Name>;
|
|
248
313
|
/** Returns one entry or `null` when it does not exist. */
|
|
@@ -257,6 +322,20 @@ export interface FeedbackPublicApi<Name extends string | undefined = string | un
|
|
|
257
322
|
updateEntry: FunctionReference<"mutation", "public", UpdateEntryArgs, null | RateLimitResult, Name>;
|
|
258
323
|
/** Changes entry status, or returns a configured rate-limit rejection. */
|
|
259
324
|
setEntryStatus: FunctionReference<"mutation", "public", SetEntryStatusArgs, null | RateLimitResult, Name>;
|
|
325
|
+
adminListEntries: FunctionReference<"query", "public", AdminListEntriesArgs, PaginationResult<AdminFeedbackEntry>, Name>;
|
|
326
|
+
adminGetEntry: FunctionReference<"query", "public", GetEntryArgs, AdminFeedbackEntry | null, Name>;
|
|
327
|
+
adminSearchEntries: FunctionReference<"query", "public", AdminSearchEntriesArgs, PaginationResult<AdminFeedbackEntry>, Name>;
|
|
328
|
+
setEntryPriority: FunctionReference<"mutation", "public", SetEntryPriorityArgs, null | RateLimitResult, Name>;
|
|
329
|
+
listRoadmap: FunctionReference<"query", "public", ListRoadmapArgs, PaginationResult<RoadmapItem>, Name>;
|
|
330
|
+
searchRoadmap: FunctionReference<"query", "public", SearchRoadmapArgs, RoadmapItem[], Name>;
|
|
331
|
+
createRoadmap: FunctionReference<"mutation", "public", CreateRoadmapArgs, string | RateLimitResult, Name>;
|
|
332
|
+
createRoadmapForEntry: FunctionReference<"mutation", "public", CreateRoadmapForEntryArgs, string | RateLimitResult, Name>;
|
|
333
|
+
updateRoadmap: FunctionReference<"mutation", "public", UpdateRoadmapArgs, null | RateLimitResult, Name>;
|
|
334
|
+
deleteRoadmap: FunctionReference<"mutation", "public", DeleteRoadmapArgs, null | RateLimitResult, Name>;
|
|
335
|
+
moveRoadmapItem: FunctionReference<"mutation", "public", MoveRoadmapArgs, number | RateLimitResult, Name>;
|
|
336
|
+
attachFeedbackToRoadmap: FunctionReference<"mutation", "public", AttachFeedbackToRoadmapArgs, null | RateLimitResult, Name>;
|
|
337
|
+
detachFeedbackFromRoadmap: FunctionReference<"mutation", "public", DetachFeedbackFromRoadmapArgs, null | RateLimitResult, Name>;
|
|
338
|
+
listRoadmapFeedback: FunctionReference<"query", "public", ListRoadmapFeedbackArgs, PaginationResult<FeedbackEntry>, Name>;
|
|
260
339
|
/** Sets entry-upvote state, or returns a configured rate-limit rejection. */
|
|
261
340
|
setEntryUpvote: FunctionReference<"mutation", "public", SetEntryUpvoteArgs, SetEntryUpvoteResult | RateLimitResult, Name>;
|
|
262
341
|
/** Returns one paginated level of comments or replies. */
|
package/dist/client/api.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../src/client/api.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../src/client/api.ts"],"names":[],"mappings":"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"}
|
package/dist/client/config.d.ts
CHANGED
|
@@ -32,7 +32,7 @@ export interface FeedbackEntriesConfig {
|
|
|
32
32
|
/**
|
|
33
33
|
* Whether entry authors may edit their own title and body.
|
|
34
34
|
*
|
|
35
|
-
*
|
|
35
|
+
* Admins are governed separately by the resolved actor permissions.
|
|
36
36
|
*
|
|
37
37
|
* @default true
|
|
38
38
|
*/
|
package/dist/client/index.d.ts
CHANGED
|
@@ -4,7 +4,7 @@ import type { ComponentApi } from "../component/_generated/component.js";
|
|
|
4
4
|
import { type FeedbackActor } from "../component/model.js";
|
|
5
5
|
import type { FeedbackPublicApi } from "./api.js";
|
|
6
6
|
import { type FeedbackConfigOverrides } from "./config.js";
|
|
7
|
-
export type { CommentSort, EntryKind, EntrySort, EntryStatus, FeedbackActor, FeedbackComment, FeedbackEntry, FeedbackMetadata, FeedbackMetadataValue, SimilarEntriesResult, } from "../component/model.js";
|
|
7
|
+
export type { AdminFeedbackEntry, CommentSort, EntryKind, EntryPriority, EntrySort, EntryStatus, EntryStatusFilter, FeedbackActor, FeedbackComment, FeedbackEntry, FeedbackMetadata, FeedbackMetadataValue, RoadmapItem, RoadmapStatus, SimilarEntriesResult, } from "../component/model.js";
|
|
8
8
|
export type { FeedbackPublicApi } from "./api.js";
|
|
9
9
|
export { createFeedbackConfig, defaultFeedbackConfig, type FeedbackConfig, type FeedbackConfigOverrides, } from "./config.js";
|
|
10
10
|
/**
|
|
@@ -59,10 +59,12 @@ export interface ThrowingFeedbackRateLimitConfig {
|
|
|
59
59
|
*/
|
|
60
60
|
behavior?: "throw";
|
|
61
61
|
/**
|
|
62
|
-
* Whether all configured limiter groups apply to
|
|
62
|
+
* Whether all configured limiter groups apply to admins.
|
|
63
63
|
*
|
|
64
64
|
* @default false
|
|
65
65
|
*/
|
|
66
|
+
limitAdmins?: boolean;
|
|
67
|
+
/** @deprecated Use `limitAdmins`. */
|
|
66
68
|
limitModerators?: boolean;
|
|
67
69
|
/** Not accepted in throwing mode; select `"return"` to provide a validator. */
|
|
68
70
|
returns?: never;
|
|
@@ -89,10 +91,12 @@ export interface ReturningFeedbackRateLimitConfig<ReturnsValidator extends Feedb
|
|
|
89
91
|
*/
|
|
90
92
|
returns: ReturnsValidator;
|
|
91
93
|
/**
|
|
92
|
-
* Whether all configured limiter groups apply to
|
|
94
|
+
* Whether all configured limiter groups apply to admins.
|
|
93
95
|
*
|
|
94
96
|
* @default false
|
|
95
97
|
*/
|
|
98
|
+
limitAdmins?: boolean;
|
|
99
|
+
/** @deprecated Use `limitAdmins`. */
|
|
96
100
|
limitModerators?: boolean;
|
|
97
101
|
}
|
|
98
102
|
/**
|
|
@@ -131,10 +135,10 @@ export type ThrowingExposeFeedbackOptions = Omit<ExposeFeedbackOptionsBase, "con
|
|
|
131
135
|
/** Optional component behavior and throwing rate-limit overrides. */
|
|
132
136
|
config?: FeedbackConfigOverrides & {
|
|
133
137
|
/**
|
|
134
|
-
* Controls throwing behavior and the
|
|
138
|
+
* Controls throwing behavior and the admin exemption.
|
|
135
139
|
*
|
|
136
140
|
* Omit this object to use `behavior: "throw"` and
|
|
137
|
-
* `
|
|
141
|
+
* `limitAdmins: false`.
|
|
138
142
|
*/
|
|
139
143
|
rateLimiting?: FeedbackRateLimitConfig;
|
|
140
144
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/client/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAKL,KAAK,IAAI,EACT,KAAK,mBAAmB,EACxB,KAAK,iBAAiB,EACtB,KAAK,gBAAgB,EACrB,KAAK,kBAAkB,EAEvB,KAAK,kBAAkB,EACvB,KAAK,eAAe,EACrB,MAAM,eAAe,CAAC;AACvB,OAAO,EAGL,KAAK,KAAK,EACV,KAAK,SAAS,EACd,KAAK,KAAK,EAEX,MAAM,eAAe,CAAC;AAEvB,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sCAAsC,CAAC;AACzE,OAAO,
|
|
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,6 +1,6 @@
|
|
|
1
1
|
import { mutationGeneric, paginationOptsValidator, paginationResultValidator, queryGeneric, } from "convex/server";
|
|
2
2
|
import { ConvexError, v, } from "convex/values";
|
|
3
|
-
import { commentSortValidator, entryKindValidator, entrySortValidator, entryStatusValidator, feedbackMetadataValidator, publicCommentValidator, publicEntryValidator, similarEntriesValidator, } from "../component/model.js";
|
|
3
|
+
import { adminEntryValidator, commentSortValidator, entryKindValidator, entryPriorityValidator, entrySortValidator, entryStatusFilterValidator, entryStatusValidator, feedbackMetadataValidator, publicCommentValidator, publicEntryValidator, roadmapItemValidator, roadmapStatusValidator, similarEntriesValidator, actorIsAdmin, } from "../component/model.js";
|
|
4
4
|
import { createFeedbackConfig, } from "./config.js";
|
|
5
5
|
export { createFeedbackConfig, defaultFeedbackConfig, } from "./config.js";
|
|
6
6
|
function requireActor(actor) {
|
|
@@ -9,17 +9,17 @@ function requireActor(actor) {
|
|
|
9
9
|
}
|
|
10
10
|
return actor;
|
|
11
11
|
}
|
|
12
|
-
function
|
|
13
|
-
if (!actor
|
|
14
|
-
throw new ConvexError("
|
|
12
|
+
function requireAdmin(actor) {
|
|
13
|
+
if (!actorIsAdmin(actor)) {
|
|
14
|
+
throw new ConvexError("Admin permissions are required.");
|
|
15
15
|
}
|
|
16
16
|
}
|
|
17
17
|
function rateLimitedReturns(base, limit) {
|
|
18
18
|
return (limit === undefined ? base : v.union(base, limit));
|
|
19
19
|
}
|
|
20
20
|
async function applyRateLimiter(ctx, actor, limiter, rateLimitConfig) {
|
|
21
|
-
|
|
22
|
-
|
|
21
|
+
const limitAdmins = rateLimitConfig?.limitAdmins ?? rateLimitConfig?.limitModerators ?? false;
|
|
22
|
+
if (limiter === undefined || (actorIsAdmin(actor) && !limitAdmins)) {
|
|
23
23
|
return undefined;
|
|
24
24
|
}
|
|
25
25
|
const result = await limiter(ctx, actor.id);
|
|
@@ -59,12 +59,33 @@ function buildFeedbackApi(component, options) {
|
|
|
59
59
|
const nullReturns = rateLimitedReturns(v.null(), rateLimitReturnValidator);
|
|
60
60
|
const entryUpvoteReturns = rateLimitedReturns(v.object({ active: v.boolean(), upvoteCount: v.number() }), rateLimitReturnValidator);
|
|
61
61
|
const commentLikeReturns = rateLimitedReturns(v.object({ active: v.boolean(), likeCount: v.number() }), rateLimitReturnValidator);
|
|
62
|
+
const numberReturns = rateLimitedReturns(v.number(), rateLimitReturnValidator);
|
|
63
|
+
const requireAdminActor = async (ctx) => {
|
|
64
|
+
const actor = requireActor(await options.actor(ctx));
|
|
65
|
+
requireAdmin(actor);
|
|
66
|
+
return actor;
|
|
67
|
+
};
|
|
68
|
+
const applyAdminEditLimit = async (ctx, actor) => await applyRateLimiter(ctx, actor, options.rateLimiters?.editContent, rateLimitConfig);
|
|
62
69
|
return {
|
|
70
|
+
isAdmin: queryGeneric({
|
|
71
|
+
args: {},
|
|
72
|
+
returns: v.boolean(),
|
|
73
|
+
handler: async (ctx) => {
|
|
74
|
+
const actor = await options.actor(ctx);
|
|
75
|
+
return actor !== null && actorIsAdmin(actor);
|
|
76
|
+
},
|
|
77
|
+
}),
|
|
78
|
+
isAuthenticated: queryGeneric({
|
|
79
|
+
args: {},
|
|
80
|
+
returns: v.boolean(),
|
|
81
|
+
handler: async (ctx) => (await options.actor(ctx)) !== null,
|
|
82
|
+
}),
|
|
63
83
|
listEntries: queryGeneric({
|
|
64
84
|
args: {
|
|
65
85
|
paginationOpts: paginationOptsValidator,
|
|
66
86
|
kinds: v.optional(v.array(entryKindValidator)),
|
|
67
87
|
status: v.optional(entryStatusValidator),
|
|
88
|
+
statusFilter: v.optional(entryStatusFilterValidator),
|
|
68
89
|
sort: v.optional(entrySortValidator),
|
|
69
90
|
},
|
|
70
91
|
returns: paginationResultValidator(publicEntryValidator),
|
|
@@ -74,6 +95,9 @@ function buildFeedbackApi(component, options) {
|
|
|
74
95
|
paginationOpts: clampPagination(args.paginationOpts, config.entries.maxPageSize),
|
|
75
96
|
...(args.kinds === undefined ? {} : { kinds: args.kinds }),
|
|
76
97
|
...(args.status === undefined ? {} : { status: args.status }),
|
|
98
|
+
...(args.statusFilter === undefined
|
|
99
|
+
? {}
|
|
100
|
+
: { statusFilter: args.statusFilter }),
|
|
77
101
|
sort: args.sort ?? config.entries.defaultSort,
|
|
78
102
|
...actorIdFields(actor),
|
|
79
103
|
});
|
|
@@ -87,7 +111,9 @@ function buildFeedbackApi(component, options) {
|
|
|
87
111
|
return await ctx.runQuery(component.entries.get, {
|
|
88
112
|
entryId: args.entryId,
|
|
89
113
|
...actorIdFields(actor),
|
|
90
|
-
...(actor
|
|
114
|
+
...(actor !== null && actorIsAdmin(actor)
|
|
115
|
+
? { viewerIsAdmin: true }
|
|
116
|
+
: {}),
|
|
91
117
|
});
|
|
92
118
|
},
|
|
93
119
|
}),
|
|
@@ -96,6 +122,7 @@ function buildFeedbackApi(component, options) {
|
|
|
96
122
|
searchQuery: v.string(),
|
|
97
123
|
kinds: v.optional(v.array(entryKindValidator)),
|
|
98
124
|
status: v.optional(entryStatusValidator),
|
|
125
|
+
statusFilter: v.optional(entryStatusFilterValidator),
|
|
99
126
|
limit: v.optional(v.number()),
|
|
100
127
|
},
|
|
101
128
|
returns: v.array(publicEntryValidator),
|
|
@@ -105,6 +132,9 @@ function buildFeedbackApi(component, options) {
|
|
|
105
132
|
searchQuery: args.searchQuery,
|
|
106
133
|
...(args.kinds === undefined ? {} : { kinds: args.kinds }),
|
|
107
134
|
...(args.status === undefined ? {} : { status: args.status }),
|
|
135
|
+
...(args.statusFilter === undefined
|
|
136
|
+
? {}
|
|
137
|
+
: { statusFilter: args.statusFilter }),
|
|
108
138
|
limit: clampPositive(args.limit, config.search.defaultLimit, config.search.maxLimit),
|
|
109
139
|
...actorIdFields(actor),
|
|
110
140
|
});
|
|
@@ -186,7 +216,7 @@ function buildFeedbackApi(component, options) {
|
|
|
186
216
|
returns: nullReturns,
|
|
187
217
|
handler: async (ctx, args) => {
|
|
188
218
|
const actor = requireActor(await options.actor(ctx));
|
|
189
|
-
|
|
219
|
+
requireAdmin(actor);
|
|
190
220
|
const limited = await applyRateLimiter(asRateLimitContext(ctx), actor, options.rateLimiters?.editContent, rateLimitConfig);
|
|
191
221
|
if (limited !== undefined)
|
|
192
222
|
return limited;
|
|
@@ -197,6 +227,75 @@ function buildFeedbackApi(component, options) {
|
|
|
197
227
|
});
|
|
198
228
|
},
|
|
199
229
|
}),
|
|
230
|
+
adminListEntries: queryGeneric({
|
|
231
|
+
args: {
|
|
232
|
+
paginationOpts: paginationOptsValidator,
|
|
233
|
+
kinds: v.optional(v.array(entryKindValidator)),
|
|
234
|
+
status: v.optional(entryStatusValidator),
|
|
235
|
+
priority: v.optional(entryPriorityValidator),
|
|
236
|
+
},
|
|
237
|
+
returns: paginationResultValidator(adminEntryValidator),
|
|
238
|
+
handler: async (ctx, args) => {
|
|
239
|
+
const actor = await requireAdminActor(ctx);
|
|
240
|
+
return await ctx.runQuery(component.admin.listEntries, {
|
|
241
|
+
...(args.kinds === undefined ? {} : { kinds: args.kinds }),
|
|
242
|
+
...(args.status === undefined ? {} : { status: args.status }),
|
|
243
|
+
...(args.priority === undefined ? {} : { priority: args.priority }),
|
|
244
|
+
paginationOpts: clampPagination(args.paginationOpts, config.entries.maxPageSize),
|
|
245
|
+
viewerActorId: actor.id,
|
|
246
|
+
});
|
|
247
|
+
},
|
|
248
|
+
}),
|
|
249
|
+
adminGetEntry: queryGeneric({
|
|
250
|
+
args: { entryId: v.string() },
|
|
251
|
+
returns: v.union(adminEntryValidator, v.null()),
|
|
252
|
+
handler: async (ctx, args) => {
|
|
253
|
+
const actor = await requireAdminActor(ctx);
|
|
254
|
+
return await ctx.runQuery(component.admin.getEntry, {
|
|
255
|
+
entryId: args.entryId,
|
|
256
|
+
viewerActorId: actor.id,
|
|
257
|
+
});
|
|
258
|
+
},
|
|
259
|
+
}),
|
|
260
|
+
adminSearchEntries: queryGeneric({
|
|
261
|
+
args: {
|
|
262
|
+
paginationOpts: paginationOptsValidator,
|
|
263
|
+
searchQuery: v.string(),
|
|
264
|
+
kinds: v.optional(v.array(entryKindValidator)),
|
|
265
|
+
status: v.optional(entryStatusValidator),
|
|
266
|
+
priority: v.optional(entryPriorityValidator),
|
|
267
|
+
},
|
|
268
|
+
returns: paginationResultValidator(adminEntryValidator),
|
|
269
|
+
handler: async (ctx, args) => {
|
|
270
|
+
const actor = await requireAdminActor(ctx);
|
|
271
|
+
return await ctx.runQuery(component.admin.searchEntries, {
|
|
272
|
+
searchQuery: args.searchQuery,
|
|
273
|
+
...(args.kinds === undefined ? {} : { kinds: args.kinds }),
|
|
274
|
+
...(args.status === undefined ? {} : { status: args.status }),
|
|
275
|
+
...(args.priority === undefined ? {} : { priority: args.priority }),
|
|
276
|
+
paginationOpts: clampPagination(args.paginationOpts, config.entries.maxPageSize),
|
|
277
|
+
viewerActorId: actor.id,
|
|
278
|
+
});
|
|
279
|
+
},
|
|
280
|
+
}),
|
|
281
|
+
setEntryPriority: mutationGeneric({
|
|
282
|
+
args: {
|
|
283
|
+
entryId: v.string(),
|
|
284
|
+
priority: v.union(entryPriorityValidator, v.null()),
|
|
285
|
+
},
|
|
286
|
+
returns: nullReturns,
|
|
287
|
+
handler: async (ctx, args) => {
|
|
288
|
+
const actor = await requireAdminActor(ctx);
|
|
289
|
+
const limited = await applyAdminEditLimit(asRateLimitContext(ctx), actor);
|
|
290
|
+
if (limited !== undefined)
|
|
291
|
+
return limited;
|
|
292
|
+
return await ctx.runMutation(component.entries.setPriority, {
|
|
293
|
+
actor,
|
|
294
|
+
entryId: args.entryId,
|
|
295
|
+
priority: args.priority,
|
|
296
|
+
});
|
|
297
|
+
},
|
|
298
|
+
}),
|
|
200
299
|
setEntryUpvote: mutationGeneric({
|
|
201
300
|
args: { entryId: v.string(), desiredState: v.boolean() },
|
|
202
301
|
returns: entryUpvoteReturns,
|
|
@@ -304,6 +403,160 @@ function buildFeedbackApi(component, options) {
|
|
|
304
403
|
});
|
|
305
404
|
},
|
|
306
405
|
}),
|
|
406
|
+
listRoadmap: queryGeneric({
|
|
407
|
+
args: {
|
|
408
|
+
paginationOpts: paginationOptsValidator,
|
|
409
|
+
status: v.optional(roadmapStatusValidator),
|
|
410
|
+
},
|
|
411
|
+
returns: paginationResultValidator(roadmapItemValidator),
|
|
412
|
+
handler: async (ctx, args) => {
|
|
413
|
+
return await ctx.runQuery(component.roadmap.list, {
|
|
414
|
+
...args,
|
|
415
|
+
paginationOpts: clampPagination(args.paginationOpts, config.entries.maxPageSize),
|
|
416
|
+
});
|
|
417
|
+
},
|
|
418
|
+
}),
|
|
419
|
+
searchRoadmap: queryGeneric({
|
|
420
|
+
args: { searchQuery: v.string(), limit: v.optional(v.number()) },
|
|
421
|
+
returns: v.array(roadmapItemValidator),
|
|
422
|
+
handler: async (ctx, args) => {
|
|
423
|
+
return await ctx.runQuery(component.roadmap.search, {
|
|
424
|
+
searchQuery: args.searchQuery,
|
|
425
|
+
limit: clampPositive(args.limit, 10, 50),
|
|
426
|
+
});
|
|
427
|
+
},
|
|
428
|
+
}),
|
|
429
|
+
createRoadmap: mutationGeneric({
|
|
430
|
+
args: {
|
|
431
|
+
title: v.string(),
|
|
432
|
+
description: v.optional(v.string()),
|
|
433
|
+
status: roadmapStatusValidator,
|
|
434
|
+
},
|
|
435
|
+
returns: idReturns,
|
|
436
|
+
handler: async (ctx, args) => {
|
|
437
|
+
const actor = await requireAdminActor(ctx);
|
|
438
|
+
const limited = await applyAdminEditLimit(asRateLimitContext(ctx), actor);
|
|
439
|
+
if (limited !== undefined)
|
|
440
|
+
return limited;
|
|
441
|
+
return await ctx.runMutation(component.roadmap.create, {
|
|
442
|
+
actor,
|
|
443
|
+
...args,
|
|
444
|
+
});
|
|
445
|
+
},
|
|
446
|
+
}),
|
|
447
|
+
createRoadmapForEntry: mutationGeneric({
|
|
448
|
+
args: {
|
|
449
|
+
title: v.string(),
|
|
450
|
+
description: v.optional(v.string()),
|
|
451
|
+
status: roadmapStatusValidator,
|
|
452
|
+
entryId: v.string(),
|
|
453
|
+
},
|
|
454
|
+
returns: idReturns,
|
|
455
|
+
handler: async (ctx, args) => {
|
|
456
|
+
const actor = await requireAdminActor(ctx);
|
|
457
|
+
const limited = await applyAdminEditLimit(asRateLimitContext(ctx), actor);
|
|
458
|
+
if (limited !== undefined)
|
|
459
|
+
return limited;
|
|
460
|
+
return await ctx.runMutation(component.roadmap.createForEntry, {
|
|
461
|
+
actor,
|
|
462
|
+
...args,
|
|
463
|
+
});
|
|
464
|
+
},
|
|
465
|
+
}),
|
|
466
|
+
updateRoadmap: mutationGeneric({
|
|
467
|
+
args: {
|
|
468
|
+
roadmapId: v.string(),
|
|
469
|
+
title: v.string(),
|
|
470
|
+
description: v.optional(v.string()),
|
|
471
|
+
},
|
|
472
|
+
returns: nullReturns,
|
|
473
|
+
handler: async (ctx, args) => {
|
|
474
|
+
const actor = await requireAdminActor(ctx);
|
|
475
|
+
const limited = await applyAdminEditLimit(asRateLimitContext(ctx), actor);
|
|
476
|
+
if (limited !== undefined)
|
|
477
|
+
return limited;
|
|
478
|
+
return await ctx.runMutation(component.roadmap.update, {
|
|
479
|
+
actor,
|
|
480
|
+
...args,
|
|
481
|
+
});
|
|
482
|
+
},
|
|
483
|
+
}),
|
|
484
|
+
deleteRoadmap: mutationGeneric({
|
|
485
|
+
args: { roadmapId: v.string() },
|
|
486
|
+
returns: nullReturns,
|
|
487
|
+
handler: async (ctx, args) => {
|
|
488
|
+
const actor = await requireAdminActor(ctx);
|
|
489
|
+
const limited = await applyAdminEditLimit(asRateLimitContext(ctx), actor);
|
|
490
|
+
if (limited !== undefined)
|
|
491
|
+
return limited;
|
|
492
|
+
return await ctx.runMutation(component.roadmap.remove, {
|
|
493
|
+
actor,
|
|
494
|
+
...args,
|
|
495
|
+
});
|
|
496
|
+
},
|
|
497
|
+
}),
|
|
498
|
+
moveRoadmapItem: mutationGeneric({
|
|
499
|
+
args: {
|
|
500
|
+
roadmapId: v.string(),
|
|
501
|
+
status: roadmapStatusValidator,
|
|
502
|
+
previousItemId: v.optional(v.string()),
|
|
503
|
+
nextItemId: v.optional(v.string()),
|
|
504
|
+
},
|
|
505
|
+
returns: numberReturns,
|
|
506
|
+
handler: async (ctx, args) => {
|
|
507
|
+
const actor = await requireAdminActor(ctx);
|
|
508
|
+
const limited = await applyAdminEditLimit(asRateLimitContext(ctx), actor);
|
|
509
|
+
if (limited !== undefined)
|
|
510
|
+
return limited;
|
|
511
|
+
return await ctx.runMutation(component.roadmap.move, {
|
|
512
|
+
actor,
|
|
513
|
+
...args,
|
|
514
|
+
});
|
|
515
|
+
},
|
|
516
|
+
}),
|
|
517
|
+
attachFeedbackToRoadmap: mutationGeneric({
|
|
518
|
+
args: { roadmapId: v.string(), entryId: v.string() },
|
|
519
|
+
returns: nullReturns,
|
|
520
|
+
handler: async (ctx, args) => {
|
|
521
|
+
const actor = await requireAdminActor(ctx);
|
|
522
|
+
const limited = await applyAdminEditLimit(asRateLimitContext(ctx), actor);
|
|
523
|
+
if (limited !== undefined)
|
|
524
|
+
return limited;
|
|
525
|
+
return await ctx.runMutation(component.roadmap.attachFeedback, {
|
|
526
|
+
actor,
|
|
527
|
+
...args,
|
|
528
|
+
});
|
|
529
|
+
},
|
|
530
|
+
}),
|
|
531
|
+
detachFeedbackFromRoadmap: mutationGeneric({
|
|
532
|
+
args: { entryId: v.string() },
|
|
533
|
+
returns: nullReturns,
|
|
534
|
+
handler: async (ctx, args) => {
|
|
535
|
+
const actor = await requireAdminActor(ctx);
|
|
536
|
+
const limited = await applyAdminEditLimit(asRateLimitContext(ctx), actor);
|
|
537
|
+
if (limited !== undefined)
|
|
538
|
+
return limited;
|
|
539
|
+
return await ctx.runMutation(component.roadmap.detachFeedback, {
|
|
540
|
+
actor,
|
|
541
|
+
...args,
|
|
542
|
+
});
|
|
543
|
+
},
|
|
544
|
+
}),
|
|
545
|
+
listRoadmapFeedback: queryGeneric({
|
|
546
|
+
args: {
|
|
547
|
+
paginationOpts: paginationOptsValidator,
|
|
548
|
+
roadmapId: v.string(),
|
|
549
|
+
},
|
|
550
|
+
returns: paginationResultValidator(publicEntryValidator),
|
|
551
|
+
handler: async (ctx, args) => {
|
|
552
|
+
const actor = await options.actor(ctx);
|
|
553
|
+
return await ctx.runQuery(component.roadmap.listFeedback, {
|
|
554
|
+
...args,
|
|
555
|
+
paginationOpts: clampPagination(args.paginationOpts, config.entries.maxPageSize),
|
|
556
|
+
...(actor === null ? {} : { viewerActorId: actor.id }),
|
|
557
|
+
});
|
|
558
|
+
},
|
|
559
|
+
}),
|
|
307
560
|
};
|
|
308
561
|
}
|
|
309
562
|
export function exposeFeedbackApi(component, options) {
|