@btst/stack 2.1.0 → 2.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/api/index.cjs +9 -1
- package/dist/api/index.d.cts +4 -4
- package/dist/api/index.d.mts +4 -4
- package/dist/api/index.d.ts +4 -4
- package/dist/api/index.mjs +9 -1
- package/dist/client/index.d.cts +2 -2
- package/dist/client/index.d.mts +2 -2
- package/dist/client/index.d.ts +2 -2
- package/dist/index.d.cts +1 -1
- package/dist/index.d.mts +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/packages/stack/src/plugins/ai-chat/api/getters.cjs +42 -0
- package/dist/packages/stack/src/plugins/ai-chat/api/getters.mjs +39 -0
- package/dist/packages/stack/src/plugins/ai-chat/api/plugin.cjs +5 -0
- package/dist/packages/stack/src/plugins/ai-chat/api/plugin.mjs +5 -0
- package/dist/packages/stack/src/plugins/blog/api/getters.cjs +131 -0
- package/dist/packages/stack/src/plugins/blog/api/getters.mjs +127 -0
- package/dist/packages/stack/src/plugins/blog/api/plugin.cjs +9 -107
- package/dist/packages/stack/src/plugins/blog/api/plugin.mjs +9 -107
- package/dist/packages/stack/src/plugins/blog/client/plugin.cjs +1 -1
- package/dist/packages/stack/src/plugins/blog/client/plugin.mjs +1 -1
- package/dist/packages/stack/src/plugins/cms/api/getters.cjs +146 -0
- package/dist/packages/stack/src/plugins/cms/api/getters.mjs +138 -0
- package/dist/packages/stack/src/plugins/cms/api/plugin.cjs +560 -622
- package/dist/packages/stack/src/plugins/cms/api/plugin.mjs +559 -621
- package/dist/packages/stack/src/plugins/cms/client/components/pages/content-editor-page.internal.cjs +1 -1
- package/dist/packages/stack/src/plugins/cms/client/components/pages/content-editor-page.internal.mjs +1 -1
- package/dist/packages/stack/src/plugins/cms/client/hooks/cms-hooks.cjs +6 -3
- package/dist/packages/stack/src/plugins/cms/client/hooks/cms-hooks.mjs +6 -3
- package/dist/packages/stack/src/plugins/form-builder/api/getters.cjs +111 -0
- package/dist/packages/stack/src/plugins/form-builder/api/getters.mjs +104 -0
- package/dist/packages/stack/src/plugins/form-builder/api/plugin.cjs +16 -88
- package/dist/packages/stack/src/plugins/form-builder/api/plugin.mjs +12 -84
- package/dist/packages/stack/src/plugins/form-builder/client/components/pages/submissions-page.internal.cjs +1 -1
- package/dist/packages/stack/src/plugins/form-builder/client/components/pages/submissions-page.internal.mjs +1 -1
- package/dist/packages/stack/src/plugins/kanban/api/getters.cjs +84 -0
- package/dist/packages/stack/src/plugins/kanban/api/getters.mjs +81 -0
- package/dist/packages/stack/src/plugins/kanban/api/plugin.cjs +9 -123
- package/dist/packages/stack/src/plugins/kanban/api/plugin.mjs +9 -123
- package/dist/packages/stack/src/plugins/kanban/client/plugin.cjs +1 -1
- package/dist/packages/stack/src/plugins/kanban/client/plugin.mjs +1 -1
- package/dist/plugins/ai-chat/api/index.cjs +3 -0
- package/dist/plugins/ai-chat/api/index.d.cts +27 -4
- package/dist/plugins/ai-chat/api/index.d.mts +27 -4
- package/dist/plugins/ai-chat/api/index.d.ts +27 -4
- package/dist/plugins/ai-chat/api/index.mjs +1 -0
- package/dist/plugins/ai-chat/client/hooks/index.d.cts +2 -2
- package/dist/plugins/ai-chat/client/hooks/index.d.mts +2 -2
- package/dist/plugins/ai-chat/client/hooks/index.d.ts +2 -2
- package/dist/plugins/ai-chat/query-keys.d.cts +9 -284
- package/dist/plugins/ai-chat/query-keys.d.mts +9 -284
- package/dist/plugins/ai-chat/query-keys.d.ts +9 -284
- package/dist/plugins/api/index.d.cts +4 -3
- package/dist/plugins/api/index.d.mts +4 -3
- package/dist/plugins/api/index.d.ts +4 -3
- package/dist/plugins/blog/api/index.cjs +4 -0
- package/dist/plugins/blog/api/index.d.cts +3 -2
- package/dist/plugins/blog/api/index.d.mts +3 -2
- package/dist/plugins/blog/api/index.d.ts +3 -2
- package/dist/plugins/blog/api/index.mjs +1 -0
- package/dist/plugins/blog/client/hooks/index.d.cts +4 -4
- package/dist/plugins/blog/client/hooks/index.d.mts +4 -4
- package/dist/plugins/blog/client/hooks/index.d.ts +4 -4
- package/dist/plugins/blog/client/index.d.cts +1 -1
- package/dist/plugins/blog/client/index.d.mts +1 -1
- package/dist/plugins/blog/client/index.d.ts +1 -1
- package/dist/plugins/blog/query-keys.cjs +7 -4
- package/dist/plugins/blog/query-keys.d.cts +81 -27
- package/dist/plugins/blog/query-keys.d.mts +81 -27
- package/dist/plugins/blog/query-keys.d.ts +81 -27
- package/dist/plugins/blog/query-keys.mjs +7 -4
- package/dist/plugins/client/index.d.cts +2 -2
- package/dist/plugins/client/index.d.mts +2 -2
- package/dist/plugins/client/index.d.ts +2 -2
- package/dist/plugins/cms/api/index.cjs +4 -0
- package/dist/plugins/cms/api/index.d.cts +61 -5
- package/dist/plugins/cms/api/index.d.mts +61 -5
- package/dist/plugins/cms/api/index.d.ts +61 -5
- package/dist/plugins/cms/api/index.mjs +1 -0
- package/dist/plugins/cms/client/hooks/index.d.cts +1 -1
- package/dist/plugins/cms/client/hooks/index.d.mts +1 -1
- package/dist/plugins/cms/client/hooks/index.d.ts +1 -1
- package/dist/plugins/cms/query-keys.d.cts +2 -1
- package/dist/plugins/cms/query-keys.d.mts +2 -1
- package/dist/plugins/cms/query-keys.d.ts +2 -1
- package/dist/plugins/form-builder/api/index.cjs +4 -0
- package/dist/plugins/form-builder/api/index.d.cts +77 -7
- package/dist/plugins/form-builder/api/index.d.mts +77 -7
- package/dist/plugins/form-builder/api/index.d.ts +77 -7
- package/dist/plugins/form-builder/api/index.mjs +1 -0
- package/dist/plugins/form-builder/client/components/index.d.cts +1 -1
- package/dist/plugins/form-builder/client/components/index.d.mts +1 -1
- package/dist/plugins/form-builder/client/components/index.d.ts +1 -1
- package/dist/plugins/form-builder/client/hooks/index.d.cts +1 -1
- package/dist/plugins/form-builder/client/hooks/index.d.mts +1 -1
- package/dist/plugins/form-builder/client/hooks/index.d.ts +1 -1
- package/dist/plugins/form-builder/query-keys.d.cts +2 -1
- package/dist/plugins/form-builder/query-keys.d.mts +2 -1
- package/dist/plugins/form-builder/query-keys.d.ts +2 -1
- package/dist/plugins/kanban/api/index.cjs +3 -0
- package/dist/plugins/kanban/api/index.d.cts +40 -43
- package/dist/plugins/kanban/api/index.d.mts +40 -43
- package/dist/plugins/kanban/api/index.d.ts +40 -43
- package/dist/plugins/kanban/api/index.mjs +1 -0
- package/dist/plugins/kanban/client/components/index.d.cts +1 -1
- package/dist/plugins/kanban/client/components/index.d.mts +1 -1
- package/dist/plugins/kanban/client/components/index.d.ts +1 -1
- package/dist/plugins/kanban/client/hooks/index.d.cts +1 -1
- package/dist/plugins/kanban/client/hooks/index.d.mts +1 -1
- package/dist/plugins/kanban/client/hooks/index.d.ts +1 -1
- package/dist/plugins/kanban/client/index.d.cts +1 -1
- package/dist/plugins/kanban/client/index.d.mts +1 -1
- package/dist/plugins/kanban/client/index.d.ts +1 -1
- package/dist/plugins/kanban/query-keys.cjs +4 -3
- package/dist/plugins/kanban/query-keys.d.cts +2 -1
- package/dist/plugins/kanban/query-keys.d.mts +2 -1
- package/dist/plugins/kanban/query-keys.d.ts +2 -1
- package/dist/plugins/kanban/query-keys.mjs +4 -3
- package/dist/plugins/open-api/api/index.d.cts +2 -2
- package/dist/plugins/open-api/api/index.d.mts +2 -2
- package/dist/plugins/open-api/api/index.d.ts +2 -2
- package/dist/plugins/route-docs/client/index.d.cts +1 -1
- package/dist/plugins/route-docs/client/index.d.mts +1 -1
- package/dist/plugins/route-docs/client/index.d.ts +1 -1
- package/dist/plugins/ui-builder/index.d.cts +1 -1
- package/dist/plugins/ui-builder/index.d.mts +1 -1
- package/dist/plugins/ui-builder/index.d.ts +1 -1
- package/dist/shared/{stack.BoA0xkJv.d.cts → stack.7n9Y_u7N.d.cts} +33 -7
- package/dist/shared/{stack.BoA0xkJv.d.mts → stack.7n9Y_u7N.d.mts} +33 -7
- package/dist/shared/{stack.BoA0xkJv.d.ts → stack.7n9Y_u7N.d.ts} +33 -7
- package/dist/shared/stack.BeSm90va.d.ts +289 -0
- package/dist/shared/{stack.DzH_wcvr.d.mts → stack.CIrIsc-A.d.cts} +2 -2
- package/dist/shared/{stack.DzH_wcvr.d.ts → stack.CIrIsc-A.d.mts} +2 -2
- package/dist/shared/{stack.DzH_wcvr.d.cts → stack.CIrIsc-A.d.ts} +2 -2
- package/dist/shared/stack.CMh_EdxW.d.cts +289 -0
- package/dist/shared/{stack.BsXokfNh.d.mts → stack.CXjzTMsb.d.cts} +1 -1
- package/dist/shared/{stack.BsXokfNh.d.ts → stack.CXjzTMsb.d.mts} +1 -1
- package/dist/shared/{stack.BsXokfNh.d.cts → stack.CXjzTMsb.d.ts} +1 -1
- package/dist/shared/stack.Dg09R0oB.d.mts +289 -0
- package/dist/shared/{stack.DKDMI-QO.d.mts → stack.QD1y_7NY.d.cts} +7 -1
- package/dist/shared/{stack.DKDMI-QO.d.ts → stack.QD1y_7NY.d.mts} +7 -1
- package/dist/shared/{stack.DKDMI-QO.d.cts → stack.QD1y_7NY.d.ts} +7 -1
- package/package.json +1 -1
- package/src/__tests__/stack-api.test.ts +118 -0
- package/src/api/index.ts +15 -1
- package/src/plugins/ai-chat/__tests__/getters.test.ts +109 -0
- package/src/plugins/ai-chat/api/getters.ts +71 -0
- package/src/plugins/ai-chat/api/index.ts +1 -0
- package/src/plugins/ai-chat/api/plugin.ts +8 -0
- package/src/plugins/api/index.ts +3 -1
- package/src/plugins/blog/__tests__/getters.test.ts +540 -0
- package/src/plugins/blog/api/getters.ts +243 -0
- package/src/plugins/blog/api/index.ts +7 -0
- package/src/plugins/blog/api/plugin.ts +13 -141
- package/src/plugins/blog/client/plugin.tsx +2 -1
- package/src/plugins/blog/query-keys.ts +16 -13
- package/src/plugins/cms/__tests__/getters.test.ts +206 -0
- package/src/plugins/cms/api/getters.ts +244 -0
- package/src/plugins/cms/api/index.ts +5 -0
- package/src/plugins/cms/api/plugin.ts +50 -154
- package/src/plugins/cms/client/components/pages/content-editor-page.internal.tsx +1 -1
- package/src/plugins/cms/client/hooks/cms-hooks.tsx +3 -0
- package/src/plugins/cms/types.ts +1 -1
- package/src/plugins/form-builder/__tests__/getters.test.ts +159 -0
- package/src/plugins/form-builder/api/getters.ts +203 -0
- package/src/plugins/form-builder/api/index.ts +1 -0
- package/src/plugins/form-builder/api/plugin.ts +22 -115
- package/src/plugins/form-builder/client/components/pages/submissions-page.internal.tsx +1 -1
- package/src/plugins/form-builder/types.ts +2 -2
- package/src/plugins/kanban/__tests__/getters.test.ts +172 -0
- package/src/plugins/kanban/api/getters.ts +149 -0
- package/src/plugins/kanban/api/index.ts +1 -0
- package/src/plugins/kanban/api/plugin.ts +16 -146
- package/src/plugins/kanban/client/plugin.tsx +2 -1
- package/src/plugins/kanban/query-keys.ts +8 -5
- package/src/types.ts +44 -5
- package/dist/shared/{stack.CbuN2zVV.d.cts → stack.BkYlUT_8.d.cts} +6 -6
- package/dist/shared/{stack.CbuN2zVV.d.mts → stack.BkYlUT_8.d.mts} +6 -6
- package/dist/shared/{stack.CbuN2zVV.d.ts → stack.BkYlUT_8.d.ts} +6 -6
|
@@ -1,10 +1,71 @@
|
|
|
1
1
|
import * as _btst_stack_plugins_api from '@btst/stack/plugins/api';
|
|
2
2
|
import * as better_call from 'better-call';
|
|
3
|
+
import { Adapter } from '@btst/db';
|
|
4
|
+
import { P as Post, T as Tag, c as createPostSchema, u as updatePostSchema, S as SerializedPost, a as SerializedTag } from '../../shared/stack.BkYlUT_8.cjs';
|
|
3
5
|
import { z } from 'zod';
|
|
4
|
-
import { c as createPostSchema, u as updatePostSchema, P as Post, T as Tag, S as SerializedPost, a as SerializedTag } from '../../shared/stack.CbuN2zVV.cjs';
|
|
5
6
|
import * as _tanstack_react_query from '@tanstack/react-query';
|
|
6
7
|
import { createApiClient } from '@btst/stack/plugins/client';
|
|
7
8
|
|
|
9
|
+
/**
|
|
10
|
+
* Parameters for filtering/paginating posts.
|
|
11
|
+
* Mirrors the shape of the list API query schema.
|
|
12
|
+
*/
|
|
13
|
+
interface PostListParams {
|
|
14
|
+
slug?: string;
|
|
15
|
+
tagSlug?: string;
|
|
16
|
+
offset?: number;
|
|
17
|
+
limit?: number;
|
|
18
|
+
query?: string;
|
|
19
|
+
published?: boolean;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Paginated result returned by {@link getAllPosts}.
|
|
23
|
+
*/
|
|
24
|
+
interface PostListResult {
|
|
25
|
+
items: Array<Post & {
|
|
26
|
+
tags: Tag[];
|
|
27
|
+
}>;
|
|
28
|
+
total: number;
|
|
29
|
+
limit?: number;
|
|
30
|
+
offset?: number;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Retrieve all posts matching optional filter criteria.
|
|
34
|
+
* Pure DB function — no hooks, no HTTP context. Safe for SSG and server-side use.
|
|
35
|
+
*
|
|
36
|
+
* @remarks **Security:** Authorization hooks (e.g. `onBeforeListPosts`) are NOT
|
|
37
|
+
* called. The caller is responsible for any access-control checks before
|
|
38
|
+
* invoking this function.
|
|
39
|
+
*
|
|
40
|
+
* @param adapter - The database adapter
|
|
41
|
+
* @param params - Optional filter/pagination parameters (same shape as the list API query)
|
|
42
|
+
*/
|
|
43
|
+
declare function getAllPosts(adapter: Adapter, params?: PostListParams): Promise<PostListResult>;
|
|
44
|
+
/**
|
|
45
|
+
* Retrieve a single post by its slug, including associated tags.
|
|
46
|
+
* Returns null if no post is found.
|
|
47
|
+
* Pure DB function — no hooks, no HTTP context. Safe for SSG and server-side use.
|
|
48
|
+
*
|
|
49
|
+
* @remarks **Security:** Authorization hooks are NOT called. The caller is
|
|
50
|
+
* responsible for any access-control checks before invoking this function.
|
|
51
|
+
*
|
|
52
|
+
* @param adapter - The database adapter
|
|
53
|
+
* @param slug - The post slug
|
|
54
|
+
*/
|
|
55
|
+
declare function getPostBySlug(adapter: Adapter, slug: string): Promise<(Post & {
|
|
56
|
+
tags: Tag[];
|
|
57
|
+
}) | null>;
|
|
58
|
+
/**
|
|
59
|
+
* Retrieve all tags, sorted alphabetically by name.
|
|
60
|
+
* Pure DB function — no hooks, no HTTP context. Safe for SSG and server-side use.
|
|
61
|
+
*
|
|
62
|
+
* @remarks **Security:** Authorization hooks are NOT called. The caller is
|
|
63
|
+
* responsible for any access-control checks before invoking this function.
|
|
64
|
+
*
|
|
65
|
+
* @param adapter - The database adapter
|
|
66
|
+
*/
|
|
67
|
+
declare function getAllTags(adapter: Adapter): Promise<Tag[]>;
|
|
68
|
+
|
|
8
69
|
declare const PostListQuerySchema: z.ZodObject<{
|
|
9
70
|
slug: z.ZodOptional<z.ZodString>;
|
|
10
71
|
tagSlug: z.ZodOptional<z.ZodString>;
|
|
@@ -59,11 +120,13 @@ interface BlogBackendHooks {
|
|
|
59
120
|
onBeforeDeletePost?: (postId: string, context: BlogApiContext) => Promise<boolean> | boolean;
|
|
60
121
|
/**
|
|
61
122
|
* Called after posts are read successfully
|
|
62
|
-
* @param posts -
|
|
123
|
+
* @param posts - The list of posts returned by the query
|
|
63
124
|
* @param filter - Query parameters used for filtering
|
|
64
125
|
* @param context - Request context
|
|
65
126
|
*/
|
|
66
|
-
onPostsRead?: (posts: Post
|
|
127
|
+
onPostsRead?: (posts: Array<Post & {
|
|
128
|
+
tags: Tag[];
|
|
129
|
+
}>, filter: z.infer<typeof PostListQuerySchema>, context: BlogApiContext) => Promise<void> | void;
|
|
67
130
|
/**
|
|
68
131
|
* Called after a post is created successfully
|
|
69
132
|
* @param post - The created post
|
|
@@ -125,34 +188,16 @@ declare const blogBackendPlugin: (hooks?: BlogBackendHooks) => _btst_stack_plugi
|
|
|
125
188
|
query: z.ZodOptional<z.ZodString>;
|
|
126
189
|
published: z.ZodPipe<z.ZodOptional<z.ZodString>, z.ZodTransform<boolean | undefined, string | undefined>>;
|
|
127
190
|
}, z.core.$strip>;
|
|
128
|
-
},
|
|
129
|
-
tags: Tag[];
|
|
130
|
-
id: string;
|
|
131
|
-
authorId?: string;
|
|
132
|
-
defaultLocale?: string;
|
|
133
|
-
slug: string;
|
|
134
|
-
title: string;
|
|
135
|
-
content: string;
|
|
136
|
-
excerpt: string;
|
|
137
|
-
image?: string;
|
|
138
|
-
published: boolean;
|
|
139
|
-
status?: "DRAFT" | "PUBLISHED";
|
|
140
|
-
publishedAt?: Date;
|
|
141
|
-
createdAt: Date;
|
|
142
|
-
updatedAt: Date;
|
|
143
|
-
}[]>;
|
|
191
|
+
}, PostListResult>;
|
|
144
192
|
readonly createPost: better_call.StrictEndpoint<"/posts", {
|
|
145
193
|
method: "POST";
|
|
146
194
|
body: z.ZodObject<{
|
|
195
|
+
title: z.ZodString;
|
|
147
196
|
slug: z.ZodOptional<z.ZodString>;
|
|
148
|
-
|
|
197
|
+
published: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
|
|
149
198
|
createdAt: z.ZodOptional<z.ZodCoercedDate<unknown>>;
|
|
150
199
|
updatedAt: z.ZodOptional<z.ZodCoercedDate<unknown>>;
|
|
151
|
-
|
|
152
|
-
content: z.ZodString;
|
|
153
|
-
excerpt: z.ZodString;
|
|
154
|
-
image: z.ZodOptional<z.ZodString>;
|
|
155
|
-
published: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
|
|
200
|
+
publishedAt: z.ZodOptional<z.ZodCoercedDate<unknown>>;
|
|
156
201
|
tags: z.ZodDefault<z.ZodOptional<z.ZodArray<z.ZodUnion<readonly [z.ZodObject<{
|
|
157
202
|
name: z.ZodString;
|
|
158
203
|
}, z.core.$strip>, z.ZodObject<{
|
|
@@ -160,6 +205,9 @@ declare const blogBackendPlugin: (hooks?: BlogBackendHooks) => _btst_stack_plugi
|
|
|
160
205
|
name: z.ZodString;
|
|
161
206
|
slug: z.ZodString;
|
|
162
207
|
}, z.core.$strip>]>>>>;
|
|
208
|
+
content: z.ZodString;
|
|
209
|
+
excerpt: z.ZodString;
|
|
210
|
+
image: z.ZodOptional<z.ZodString>;
|
|
163
211
|
}, z.core.$strip>;
|
|
164
212
|
}, Post>;
|
|
165
213
|
readonly updatePost: better_call.StrictEndpoint<"/posts/:id", {
|
|
@@ -231,6 +279,12 @@ declare const blogBackendPlugin: (hooks?: BlogBackendHooks) => _btst_stack_plugi
|
|
|
231
279
|
readonly listTags: better_call.StrictEndpoint<"/tags", {
|
|
232
280
|
method: "GET";
|
|
233
281
|
}, Tag[]>;
|
|
282
|
+
}, {
|
|
283
|
+
getAllPosts: (params?: Parameters<typeof getAllPosts>[1]) => Promise<PostListResult>;
|
|
284
|
+
getPostBySlug: (slug: string) => Promise<(Post & {
|
|
285
|
+
tags: Tag[];
|
|
286
|
+
}) | null>;
|
|
287
|
+
getAllTags: () => Promise<Tag[]>;
|
|
234
288
|
}>;
|
|
235
289
|
type BlogApiRouter = ReturnType<ReturnType<typeof blogBackendPlugin>["routes"]>;
|
|
236
290
|
|
|
@@ -329,5 +383,5 @@ declare function createBlogQueryKeys(client: ReturnType<typeof createApiClient<B
|
|
|
329
383
|
};
|
|
330
384
|
};
|
|
331
385
|
|
|
332
|
-
export { NextPreviousPostsQuerySchema as N,
|
|
333
|
-
export type { BlogApiContext as B, BlogBackendHooks as
|
|
386
|
+
export { NextPreviousPostsQuerySchema as N, getPostBySlug as a, getAllTags as b, createBlogQueryKeys, PostListQuerySchema as d, blogBackendPlugin as f, getAllPosts as g };
|
|
387
|
+
export type { BlogApiContext as B, PostListParams as P, PostListResult as c, BlogBackendHooks as e, BlogApiRouter as h };
|
|
@@ -1,10 +1,71 @@
|
|
|
1
1
|
import * as _btst_stack_plugins_api from '@btst/stack/plugins/api';
|
|
2
2
|
import * as better_call from 'better-call';
|
|
3
|
+
import { Adapter } from '@btst/db';
|
|
4
|
+
import { P as Post, T as Tag, c as createPostSchema, u as updatePostSchema, S as SerializedPost, a as SerializedTag } from '../../shared/stack.BkYlUT_8.mjs';
|
|
3
5
|
import { z } from 'zod';
|
|
4
|
-
import { c as createPostSchema, u as updatePostSchema, P as Post, T as Tag, S as SerializedPost, a as SerializedTag } from '../../shared/stack.CbuN2zVV.mjs';
|
|
5
6
|
import * as _tanstack_react_query from '@tanstack/react-query';
|
|
6
7
|
import { createApiClient } from '@btst/stack/plugins/client';
|
|
7
8
|
|
|
9
|
+
/**
|
|
10
|
+
* Parameters for filtering/paginating posts.
|
|
11
|
+
* Mirrors the shape of the list API query schema.
|
|
12
|
+
*/
|
|
13
|
+
interface PostListParams {
|
|
14
|
+
slug?: string;
|
|
15
|
+
tagSlug?: string;
|
|
16
|
+
offset?: number;
|
|
17
|
+
limit?: number;
|
|
18
|
+
query?: string;
|
|
19
|
+
published?: boolean;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Paginated result returned by {@link getAllPosts}.
|
|
23
|
+
*/
|
|
24
|
+
interface PostListResult {
|
|
25
|
+
items: Array<Post & {
|
|
26
|
+
tags: Tag[];
|
|
27
|
+
}>;
|
|
28
|
+
total: number;
|
|
29
|
+
limit?: number;
|
|
30
|
+
offset?: number;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Retrieve all posts matching optional filter criteria.
|
|
34
|
+
* Pure DB function — no hooks, no HTTP context. Safe for SSG and server-side use.
|
|
35
|
+
*
|
|
36
|
+
* @remarks **Security:** Authorization hooks (e.g. `onBeforeListPosts`) are NOT
|
|
37
|
+
* called. The caller is responsible for any access-control checks before
|
|
38
|
+
* invoking this function.
|
|
39
|
+
*
|
|
40
|
+
* @param adapter - The database adapter
|
|
41
|
+
* @param params - Optional filter/pagination parameters (same shape as the list API query)
|
|
42
|
+
*/
|
|
43
|
+
declare function getAllPosts(adapter: Adapter, params?: PostListParams): Promise<PostListResult>;
|
|
44
|
+
/**
|
|
45
|
+
* Retrieve a single post by its slug, including associated tags.
|
|
46
|
+
* Returns null if no post is found.
|
|
47
|
+
* Pure DB function — no hooks, no HTTP context. Safe for SSG and server-side use.
|
|
48
|
+
*
|
|
49
|
+
* @remarks **Security:** Authorization hooks are NOT called. The caller is
|
|
50
|
+
* responsible for any access-control checks before invoking this function.
|
|
51
|
+
*
|
|
52
|
+
* @param adapter - The database adapter
|
|
53
|
+
* @param slug - The post slug
|
|
54
|
+
*/
|
|
55
|
+
declare function getPostBySlug(adapter: Adapter, slug: string): Promise<(Post & {
|
|
56
|
+
tags: Tag[];
|
|
57
|
+
}) | null>;
|
|
58
|
+
/**
|
|
59
|
+
* Retrieve all tags, sorted alphabetically by name.
|
|
60
|
+
* Pure DB function — no hooks, no HTTP context. Safe for SSG and server-side use.
|
|
61
|
+
*
|
|
62
|
+
* @remarks **Security:** Authorization hooks are NOT called. The caller is
|
|
63
|
+
* responsible for any access-control checks before invoking this function.
|
|
64
|
+
*
|
|
65
|
+
* @param adapter - The database adapter
|
|
66
|
+
*/
|
|
67
|
+
declare function getAllTags(adapter: Adapter): Promise<Tag[]>;
|
|
68
|
+
|
|
8
69
|
declare const PostListQuerySchema: z.ZodObject<{
|
|
9
70
|
slug: z.ZodOptional<z.ZodString>;
|
|
10
71
|
tagSlug: z.ZodOptional<z.ZodString>;
|
|
@@ -59,11 +120,13 @@ interface BlogBackendHooks {
|
|
|
59
120
|
onBeforeDeletePost?: (postId: string, context: BlogApiContext) => Promise<boolean> | boolean;
|
|
60
121
|
/**
|
|
61
122
|
* Called after posts are read successfully
|
|
62
|
-
* @param posts -
|
|
123
|
+
* @param posts - The list of posts returned by the query
|
|
63
124
|
* @param filter - Query parameters used for filtering
|
|
64
125
|
* @param context - Request context
|
|
65
126
|
*/
|
|
66
|
-
onPostsRead?: (posts: Post
|
|
127
|
+
onPostsRead?: (posts: Array<Post & {
|
|
128
|
+
tags: Tag[];
|
|
129
|
+
}>, filter: z.infer<typeof PostListQuerySchema>, context: BlogApiContext) => Promise<void> | void;
|
|
67
130
|
/**
|
|
68
131
|
* Called after a post is created successfully
|
|
69
132
|
* @param post - The created post
|
|
@@ -125,34 +188,16 @@ declare const blogBackendPlugin: (hooks?: BlogBackendHooks) => _btst_stack_plugi
|
|
|
125
188
|
query: z.ZodOptional<z.ZodString>;
|
|
126
189
|
published: z.ZodPipe<z.ZodOptional<z.ZodString>, z.ZodTransform<boolean | undefined, string | undefined>>;
|
|
127
190
|
}, z.core.$strip>;
|
|
128
|
-
},
|
|
129
|
-
tags: Tag[];
|
|
130
|
-
id: string;
|
|
131
|
-
authorId?: string;
|
|
132
|
-
defaultLocale?: string;
|
|
133
|
-
slug: string;
|
|
134
|
-
title: string;
|
|
135
|
-
content: string;
|
|
136
|
-
excerpt: string;
|
|
137
|
-
image?: string;
|
|
138
|
-
published: boolean;
|
|
139
|
-
status?: "DRAFT" | "PUBLISHED";
|
|
140
|
-
publishedAt?: Date;
|
|
141
|
-
createdAt: Date;
|
|
142
|
-
updatedAt: Date;
|
|
143
|
-
}[]>;
|
|
191
|
+
}, PostListResult>;
|
|
144
192
|
readonly createPost: better_call.StrictEndpoint<"/posts", {
|
|
145
193
|
method: "POST";
|
|
146
194
|
body: z.ZodObject<{
|
|
195
|
+
title: z.ZodString;
|
|
147
196
|
slug: z.ZodOptional<z.ZodString>;
|
|
148
|
-
|
|
197
|
+
published: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
|
|
149
198
|
createdAt: z.ZodOptional<z.ZodCoercedDate<unknown>>;
|
|
150
199
|
updatedAt: z.ZodOptional<z.ZodCoercedDate<unknown>>;
|
|
151
|
-
|
|
152
|
-
content: z.ZodString;
|
|
153
|
-
excerpt: z.ZodString;
|
|
154
|
-
image: z.ZodOptional<z.ZodString>;
|
|
155
|
-
published: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
|
|
200
|
+
publishedAt: z.ZodOptional<z.ZodCoercedDate<unknown>>;
|
|
156
201
|
tags: z.ZodDefault<z.ZodOptional<z.ZodArray<z.ZodUnion<readonly [z.ZodObject<{
|
|
157
202
|
name: z.ZodString;
|
|
158
203
|
}, z.core.$strip>, z.ZodObject<{
|
|
@@ -160,6 +205,9 @@ declare const blogBackendPlugin: (hooks?: BlogBackendHooks) => _btst_stack_plugi
|
|
|
160
205
|
name: z.ZodString;
|
|
161
206
|
slug: z.ZodString;
|
|
162
207
|
}, z.core.$strip>]>>>>;
|
|
208
|
+
content: z.ZodString;
|
|
209
|
+
excerpt: z.ZodString;
|
|
210
|
+
image: z.ZodOptional<z.ZodString>;
|
|
163
211
|
}, z.core.$strip>;
|
|
164
212
|
}, Post>;
|
|
165
213
|
readonly updatePost: better_call.StrictEndpoint<"/posts/:id", {
|
|
@@ -231,6 +279,12 @@ declare const blogBackendPlugin: (hooks?: BlogBackendHooks) => _btst_stack_plugi
|
|
|
231
279
|
readonly listTags: better_call.StrictEndpoint<"/tags", {
|
|
232
280
|
method: "GET";
|
|
233
281
|
}, Tag[]>;
|
|
282
|
+
}, {
|
|
283
|
+
getAllPosts: (params?: Parameters<typeof getAllPosts>[1]) => Promise<PostListResult>;
|
|
284
|
+
getPostBySlug: (slug: string) => Promise<(Post & {
|
|
285
|
+
tags: Tag[];
|
|
286
|
+
}) | null>;
|
|
287
|
+
getAllTags: () => Promise<Tag[]>;
|
|
234
288
|
}>;
|
|
235
289
|
type BlogApiRouter = ReturnType<ReturnType<typeof blogBackendPlugin>["routes"]>;
|
|
236
290
|
|
|
@@ -329,5 +383,5 @@ declare function createBlogQueryKeys(client: ReturnType<typeof createApiClient<B
|
|
|
329
383
|
};
|
|
330
384
|
};
|
|
331
385
|
|
|
332
|
-
export { NextPreviousPostsQuerySchema as N,
|
|
333
|
-
export type { BlogApiContext as B, BlogBackendHooks as
|
|
386
|
+
export { NextPreviousPostsQuerySchema as N, getPostBySlug as a, getAllTags as b, createBlogQueryKeys, PostListQuerySchema as d, blogBackendPlugin as f, getAllPosts as g };
|
|
387
|
+
export type { BlogApiContext as B, PostListParams as P, PostListResult as c, BlogBackendHooks as e, BlogApiRouter as h };
|
|
@@ -1,10 +1,71 @@
|
|
|
1
1
|
import * as _btst_stack_plugins_api from '@btst/stack/plugins/api';
|
|
2
2
|
import * as better_call from 'better-call';
|
|
3
|
+
import { Adapter } from '@btst/db';
|
|
4
|
+
import { P as Post, T as Tag, c as createPostSchema, u as updatePostSchema, S as SerializedPost, a as SerializedTag } from '../../shared/stack.BkYlUT_8.js';
|
|
3
5
|
import { z } from 'zod';
|
|
4
|
-
import { c as createPostSchema, u as updatePostSchema, P as Post, T as Tag, S as SerializedPost, a as SerializedTag } from '../../shared/stack.CbuN2zVV.js';
|
|
5
6
|
import * as _tanstack_react_query from '@tanstack/react-query';
|
|
6
7
|
import { createApiClient } from '@btst/stack/plugins/client';
|
|
7
8
|
|
|
9
|
+
/**
|
|
10
|
+
* Parameters for filtering/paginating posts.
|
|
11
|
+
* Mirrors the shape of the list API query schema.
|
|
12
|
+
*/
|
|
13
|
+
interface PostListParams {
|
|
14
|
+
slug?: string;
|
|
15
|
+
tagSlug?: string;
|
|
16
|
+
offset?: number;
|
|
17
|
+
limit?: number;
|
|
18
|
+
query?: string;
|
|
19
|
+
published?: boolean;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Paginated result returned by {@link getAllPosts}.
|
|
23
|
+
*/
|
|
24
|
+
interface PostListResult {
|
|
25
|
+
items: Array<Post & {
|
|
26
|
+
tags: Tag[];
|
|
27
|
+
}>;
|
|
28
|
+
total: number;
|
|
29
|
+
limit?: number;
|
|
30
|
+
offset?: number;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Retrieve all posts matching optional filter criteria.
|
|
34
|
+
* Pure DB function — no hooks, no HTTP context. Safe for SSG and server-side use.
|
|
35
|
+
*
|
|
36
|
+
* @remarks **Security:** Authorization hooks (e.g. `onBeforeListPosts`) are NOT
|
|
37
|
+
* called. The caller is responsible for any access-control checks before
|
|
38
|
+
* invoking this function.
|
|
39
|
+
*
|
|
40
|
+
* @param adapter - The database adapter
|
|
41
|
+
* @param params - Optional filter/pagination parameters (same shape as the list API query)
|
|
42
|
+
*/
|
|
43
|
+
declare function getAllPosts(adapter: Adapter, params?: PostListParams): Promise<PostListResult>;
|
|
44
|
+
/**
|
|
45
|
+
* Retrieve a single post by its slug, including associated tags.
|
|
46
|
+
* Returns null if no post is found.
|
|
47
|
+
* Pure DB function — no hooks, no HTTP context. Safe for SSG and server-side use.
|
|
48
|
+
*
|
|
49
|
+
* @remarks **Security:** Authorization hooks are NOT called. The caller is
|
|
50
|
+
* responsible for any access-control checks before invoking this function.
|
|
51
|
+
*
|
|
52
|
+
* @param adapter - The database adapter
|
|
53
|
+
* @param slug - The post slug
|
|
54
|
+
*/
|
|
55
|
+
declare function getPostBySlug(adapter: Adapter, slug: string): Promise<(Post & {
|
|
56
|
+
tags: Tag[];
|
|
57
|
+
}) | null>;
|
|
58
|
+
/**
|
|
59
|
+
* Retrieve all tags, sorted alphabetically by name.
|
|
60
|
+
* Pure DB function — no hooks, no HTTP context. Safe for SSG and server-side use.
|
|
61
|
+
*
|
|
62
|
+
* @remarks **Security:** Authorization hooks are NOT called. The caller is
|
|
63
|
+
* responsible for any access-control checks before invoking this function.
|
|
64
|
+
*
|
|
65
|
+
* @param adapter - The database adapter
|
|
66
|
+
*/
|
|
67
|
+
declare function getAllTags(adapter: Adapter): Promise<Tag[]>;
|
|
68
|
+
|
|
8
69
|
declare const PostListQuerySchema: z.ZodObject<{
|
|
9
70
|
slug: z.ZodOptional<z.ZodString>;
|
|
10
71
|
tagSlug: z.ZodOptional<z.ZodString>;
|
|
@@ -59,11 +120,13 @@ interface BlogBackendHooks {
|
|
|
59
120
|
onBeforeDeletePost?: (postId: string, context: BlogApiContext) => Promise<boolean> | boolean;
|
|
60
121
|
/**
|
|
61
122
|
* Called after posts are read successfully
|
|
62
|
-
* @param posts -
|
|
123
|
+
* @param posts - The list of posts returned by the query
|
|
63
124
|
* @param filter - Query parameters used for filtering
|
|
64
125
|
* @param context - Request context
|
|
65
126
|
*/
|
|
66
|
-
onPostsRead?: (posts: Post
|
|
127
|
+
onPostsRead?: (posts: Array<Post & {
|
|
128
|
+
tags: Tag[];
|
|
129
|
+
}>, filter: z.infer<typeof PostListQuerySchema>, context: BlogApiContext) => Promise<void> | void;
|
|
67
130
|
/**
|
|
68
131
|
* Called after a post is created successfully
|
|
69
132
|
* @param post - The created post
|
|
@@ -125,34 +188,16 @@ declare const blogBackendPlugin: (hooks?: BlogBackendHooks) => _btst_stack_plugi
|
|
|
125
188
|
query: z.ZodOptional<z.ZodString>;
|
|
126
189
|
published: z.ZodPipe<z.ZodOptional<z.ZodString>, z.ZodTransform<boolean | undefined, string | undefined>>;
|
|
127
190
|
}, z.core.$strip>;
|
|
128
|
-
},
|
|
129
|
-
tags: Tag[];
|
|
130
|
-
id: string;
|
|
131
|
-
authorId?: string;
|
|
132
|
-
defaultLocale?: string;
|
|
133
|
-
slug: string;
|
|
134
|
-
title: string;
|
|
135
|
-
content: string;
|
|
136
|
-
excerpt: string;
|
|
137
|
-
image?: string;
|
|
138
|
-
published: boolean;
|
|
139
|
-
status?: "DRAFT" | "PUBLISHED";
|
|
140
|
-
publishedAt?: Date;
|
|
141
|
-
createdAt: Date;
|
|
142
|
-
updatedAt: Date;
|
|
143
|
-
}[]>;
|
|
191
|
+
}, PostListResult>;
|
|
144
192
|
readonly createPost: better_call.StrictEndpoint<"/posts", {
|
|
145
193
|
method: "POST";
|
|
146
194
|
body: z.ZodObject<{
|
|
195
|
+
title: z.ZodString;
|
|
147
196
|
slug: z.ZodOptional<z.ZodString>;
|
|
148
|
-
|
|
197
|
+
published: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
|
|
149
198
|
createdAt: z.ZodOptional<z.ZodCoercedDate<unknown>>;
|
|
150
199
|
updatedAt: z.ZodOptional<z.ZodCoercedDate<unknown>>;
|
|
151
|
-
|
|
152
|
-
content: z.ZodString;
|
|
153
|
-
excerpt: z.ZodString;
|
|
154
|
-
image: z.ZodOptional<z.ZodString>;
|
|
155
|
-
published: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
|
|
200
|
+
publishedAt: z.ZodOptional<z.ZodCoercedDate<unknown>>;
|
|
156
201
|
tags: z.ZodDefault<z.ZodOptional<z.ZodArray<z.ZodUnion<readonly [z.ZodObject<{
|
|
157
202
|
name: z.ZodString;
|
|
158
203
|
}, z.core.$strip>, z.ZodObject<{
|
|
@@ -160,6 +205,9 @@ declare const blogBackendPlugin: (hooks?: BlogBackendHooks) => _btst_stack_plugi
|
|
|
160
205
|
name: z.ZodString;
|
|
161
206
|
slug: z.ZodString;
|
|
162
207
|
}, z.core.$strip>]>>>>;
|
|
208
|
+
content: z.ZodString;
|
|
209
|
+
excerpt: z.ZodString;
|
|
210
|
+
image: z.ZodOptional<z.ZodString>;
|
|
163
211
|
}, z.core.$strip>;
|
|
164
212
|
}, Post>;
|
|
165
213
|
readonly updatePost: better_call.StrictEndpoint<"/posts/:id", {
|
|
@@ -231,6 +279,12 @@ declare const blogBackendPlugin: (hooks?: BlogBackendHooks) => _btst_stack_plugi
|
|
|
231
279
|
readonly listTags: better_call.StrictEndpoint<"/tags", {
|
|
232
280
|
method: "GET";
|
|
233
281
|
}, Tag[]>;
|
|
282
|
+
}, {
|
|
283
|
+
getAllPosts: (params?: Parameters<typeof getAllPosts>[1]) => Promise<PostListResult>;
|
|
284
|
+
getPostBySlug: (slug: string) => Promise<(Post & {
|
|
285
|
+
tags: Tag[];
|
|
286
|
+
}) | null>;
|
|
287
|
+
getAllTags: () => Promise<Tag[]>;
|
|
234
288
|
}>;
|
|
235
289
|
type BlogApiRouter = ReturnType<ReturnType<typeof blogBackendPlugin>["routes"]>;
|
|
236
290
|
|
|
@@ -329,5 +383,5 @@ declare function createBlogQueryKeys(client: ReturnType<typeof createApiClient<B
|
|
|
329
383
|
};
|
|
330
384
|
};
|
|
331
385
|
|
|
332
|
-
export { NextPreviousPostsQuerySchema as N,
|
|
333
|
-
export type { BlogApiContext as B, BlogBackendHooks as
|
|
386
|
+
export { NextPreviousPostsQuerySchema as N, getPostBySlug as a, getAllTags as b, createBlogQueryKeys, PostListQuerySchema as d, blogBackendPlugin as f, getAllPosts as g };
|
|
387
|
+
export type { BlogApiContext as B, PostListParams as P, PostListResult as c, BlogBackendHooks as e, BlogApiRouter as h };
|
|
@@ -50,7 +50,8 @@ function createPostsQueries(client, headers) {
|
|
|
50
50
|
const errorResponse = response;
|
|
51
51
|
throw toError(errorResponse.error);
|
|
52
52
|
}
|
|
53
|
-
|
|
53
|
+
const dataResponse = response;
|
|
54
|
+
return dataResponse.data?.items ?? [];
|
|
54
55
|
} catch (error) {
|
|
55
56
|
throw error;
|
|
56
57
|
}
|
|
@@ -72,7 +73,7 @@ function createPostsQueries(client, headers) {
|
|
|
72
73
|
throw toError(errorResponse.error);
|
|
73
74
|
}
|
|
74
75
|
const dataResponse = response;
|
|
75
|
-
return dataResponse.data?.[0] ?? null;
|
|
76
|
+
return dataResponse.data?.items?.[0] ?? null;
|
|
76
77
|
} catch (error) {
|
|
77
78
|
throw error;
|
|
78
79
|
}
|
|
@@ -115,7 +116,8 @@ function createPostsQueries(client, headers) {
|
|
|
115
116
|
const errorResponse = response;
|
|
116
117
|
throw toError(errorResponse.error);
|
|
117
118
|
}
|
|
118
|
-
|
|
119
|
+
const recentResponse = response;
|
|
120
|
+
let posts = recentResponse.data?.items ?? [];
|
|
119
121
|
if (params?.excludeSlug) {
|
|
120
122
|
posts = posts.filter((post) => post.slug !== params.excludeSlug);
|
|
121
123
|
}
|
|
@@ -151,7 +153,8 @@ function createDraftsQueries(client, headers) {
|
|
|
151
153
|
const errorResponse = response;
|
|
152
154
|
throw toError(errorResponse.error);
|
|
153
155
|
}
|
|
154
|
-
|
|
156
|
+
const draftsResponse = response;
|
|
157
|
+
return draftsResponse.data?.items ?? [];
|
|
155
158
|
} catch (error) {
|
|
156
159
|
throw error;
|
|
157
160
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { C as ClientPlugin } from '../../shared/stack.
|
|
2
|
-
export { P as PluginOverrides } from '../../shared/stack.
|
|
1
|
+
import { C as ClientPlugin } from '../../shared/stack.7n9Y_u7N.cjs';
|
|
2
|
+
export { P as PluginOverrides } from '../../shared/stack.7n9Y_u7N.cjs';
|
|
3
3
|
import { Route } from '@btst/yar';
|
|
4
4
|
export { Route, createRoute, createRouter } from '@btst/yar';
|
|
5
5
|
import { createClient } from 'better-call/client';
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { C as ClientPlugin } from '../../shared/stack.
|
|
2
|
-
export { P as PluginOverrides } from '../../shared/stack.
|
|
1
|
+
import { C as ClientPlugin } from '../../shared/stack.7n9Y_u7N.mjs';
|
|
2
|
+
export { P as PluginOverrides } from '../../shared/stack.7n9Y_u7N.mjs';
|
|
3
3
|
import { Route } from '@btst/yar';
|
|
4
4
|
export { Route, createRoute, createRouter } from '@btst/yar';
|
|
5
5
|
import { createClient } from 'better-call/client';
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { C as ClientPlugin } from '../../shared/stack.
|
|
2
|
-
export { P as PluginOverrides } from '../../shared/stack.
|
|
1
|
+
import { C as ClientPlugin } from '../../shared/stack.7n9Y_u7N.js';
|
|
2
|
+
export { P as PluginOverrides } from '../../shared/stack.7n9Y_u7N.js';
|
|
3
3
|
import { Route } from '@btst/yar';
|
|
4
4
|
export { Route, createRoute, createRouter } from '@btst/yar';
|
|
5
5
|
import { createClient } from 'better-call/client';
|
|
@@ -1,7 +1,11 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
const plugin = require('../../../packages/stack/src/plugins/cms/api/plugin.cjs');
|
|
4
|
+
const getters = require('../../../packages/stack/src/plugins/cms/api/getters.cjs');
|
|
4
5
|
|
|
5
6
|
|
|
6
7
|
|
|
7
8
|
exports.cmsBackendPlugin = plugin.cmsBackendPlugin;
|
|
9
|
+
exports.getAllContentItems = getters.getAllContentItems;
|
|
10
|
+
exports.getAllContentTypes = getters.getAllContentTypes;
|
|
11
|
+
exports.getContentItemBySlug = getters.getContentItemBySlug;
|
|
@@ -1,7 +1,54 @@
|
|
|
1
1
|
import * as _btst_stack_plugins_api from '@btst/stack/plugins/api';
|
|
2
|
+
import { a as SerializedContentItemWithType, S as SerializedContentType, b as CMSBackendConfig, I as InverseRelation } from '../../../shared/stack.CXjzTMsb.cjs';
|
|
2
3
|
import * as better_call from 'better-call';
|
|
3
4
|
import { z } from 'zod';
|
|
4
|
-
import {
|
|
5
|
+
import { Adapter } from '@btst/db';
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Retrieve all content types.
|
|
9
|
+
* Pure DB function — no hooks, no HTTP context. Safe for SSG and server-side use.
|
|
10
|
+
*
|
|
11
|
+
* @remarks **Security:** Authorization hooks are NOT called. The caller is
|
|
12
|
+
* responsible for any access-control checks before invoking this function.
|
|
13
|
+
*
|
|
14
|
+
* @param adapter - The database adapter
|
|
15
|
+
*/
|
|
16
|
+
declare function getAllContentTypes(adapter: Adapter): Promise<SerializedContentType[]>;
|
|
17
|
+
/**
|
|
18
|
+
* Retrieve all content items for a given content type, with optional pagination.
|
|
19
|
+
* Pure DB function — no hooks, no HTTP context. Safe for SSG and server-side use.
|
|
20
|
+
*
|
|
21
|
+
* @remarks **Security:** Authorization hooks (e.g. `onBeforeListItems`) are NOT
|
|
22
|
+
* called. The caller is responsible for any access-control checks before
|
|
23
|
+
* invoking this function.
|
|
24
|
+
*
|
|
25
|
+
* @param adapter - The database adapter
|
|
26
|
+
* @param contentTypeSlug - The slug of the content type to query
|
|
27
|
+
* @param params - Optional filter/pagination parameters
|
|
28
|
+
*/
|
|
29
|
+
declare function getAllContentItems(adapter: Adapter, contentTypeSlug: string, params?: {
|
|
30
|
+
slug?: string;
|
|
31
|
+
limit?: number;
|
|
32
|
+
offset?: number;
|
|
33
|
+
}): Promise<{
|
|
34
|
+
items: SerializedContentItemWithType[];
|
|
35
|
+
total: number;
|
|
36
|
+
limit?: number;
|
|
37
|
+
offset?: number;
|
|
38
|
+
}>;
|
|
39
|
+
/**
|
|
40
|
+
* Retrieve a single content item by its slug within a content type.
|
|
41
|
+
* Returns null if the content type or item is not found.
|
|
42
|
+
* Pure DB function — no hooks, no HTTP context. Safe for SSG and server-side use.
|
|
43
|
+
*
|
|
44
|
+
* @remarks **Security:** Authorization hooks are NOT called. The caller is
|
|
45
|
+
* responsible for any access-control checks before invoking this function.
|
|
46
|
+
*
|
|
47
|
+
* @param adapter - The database adapter
|
|
48
|
+
* @param contentTypeSlug - The slug of the content type
|
|
49
|
+
* @param slug - The slug of the content item
|
|
50
|
+
*/
|
|
51
|
+
declare function getContentItemBySlug(adapter: Adapter, contentTypeSlug: string, slug: string): Promise<SerializedContentItemWithType | null>;
|
|
5
52
|
|
|
6
53
|
/**
|
|
7
54
|
* CMS backend plugin
|
|
@@ -41,10 +88,10 @@ declare const cmsBackendPlugin: (config: CMSBackendConfig) => _btst_stack_plugin
|
|
|
41
88
|
offset: z.ZodDefault<z.ZodOptional<z.ZodCoercedNumber<unknown>>>;
|
|
42
89
|
}, z.core.$strip>;
|
|
43
90
|
}, {
|
|
44
|
-
items: SerializedContentItemWithType
|
|
91
|
+
items: SerializedContentItemWithType[];
|
|
45
92
|
total: number;
|
|
46
|
-
limit
|
|
47
|
-
offset
|
|
93
|
+
limit?: number;
|
|
94
|
+
offset?: number;
|
|
48
95
|
}>;
|
|
49
96
|
getContentItem: better_call.StrictEndpoint<"/content/:typeSlug/:id", {
|
|
50
97
|
method: "GET";
|
|
@@ -156,8 +203,17 @@ declare const cmsBackendPlugin: (config: CMSBackendConfig) => _btst_stack_plugin
|
|
|
156
203
|
limit: number;
|
|
157
204
|
offset: number;
|
|
158
205
|
}>;
|
|
206
|
+
}, {
|
|
207
|
+
getAllContentTypes: () => Promise<SerializedContentType[]>;
|
|
208
|
+
getAllContentItems: (contentTypeSlug: string, params?: Parameters<typeof getAllContentItems>[2]) => Promise<{
|
|
209
|
+
items: SerializedContentItemWithType[];
|
|
210
|
+
total: number;
|
|
211
|
+
limit?: number;
|
|
212
|
+
offset?: number;
|
|
213
|
+
}>;
|
|
214
|
+
getContentItemBySlug: (contentTypeSlug: string, slug: string) => Promise<SerializedContentItemWithType<Record<string, unknown>> | null>;
|
|
159
215
|
}>;
|
|
160
216
|
type CMSApiRouter = ReturnType<ReturnType<typeof cmsBackendPlugin>["routes"]>;
|
|
161
217
|
|
|
162
|
-
export { cmsBackendPlugin };
|
|
218
|
+
export { cmsBackendPlugin, getAllContentItems, getAllContentTypes, getContentItemBySlug };
|
|
163
219
|
export type { CMSApiRouter };
|