litecms 0.1.1 → 0.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/README.md +746 -7
- package/dist/admin/CmsAdminLanding.d.ts +89 -0
- package/dist/admin/CmsAdminLanding.d.ts.map +1 -0
- package/dist/admin/CmsAdminLayout.d.ts +26 -3
- package/dist/admin/CmsAdminLayout.d.ts.map +1 -1
- package/dist/admin/CmsAdminPage.d.ts.map +1 -1
- package/dist/admin/CmsBlogAdmin.d.ts +37 -0
- package/dist/admin/CmsBlogAdmin.d.ts.map +1 -0
- package/dist/admin/config.d.ts +32 -0
- package/dist/admin/config.d.ts.map +1 -1
- package/dist/admin/config.js +16 -0
- package/dist/admin/exports.d.ts +5 -2
- package/dist/admin/exports.d.ts.map +1 -1
- package/dist/admin/exports.js +1467 -30
- package/dist/admin/language.d.ts +53 -0
- package/dist/admin/language.d.ts.map +1 -0
- package/dist/components/CmsAutoForm.d.ts.map +1 -1
- package/dist/components/CmsForm.d.ts.map +1 -1
- package/dist/components/CmsImageField.d.ts +2 -1
- package/dist/components/CmsImageField.d.ts.map +1 -1
- package/dist/components/CmsImagePickerModal.d.ts +21 -0
- package/dist/components/CmsImagePickerModal.d.ts.map +1 -0
- package/dist/components/CmsSimpleForm.d.ts.map +1 -1
- package/dist/components/index.d.ts +1 -0
- package/dist/components/index.d.ts.map +1 -1
- package/dist/components/index.js +51 -190
- package/dist/index-c9btr14k.js +4422 -0
- package/dist/index-szreq4v9.js +12 -0
- package/dist/index-wmd953zf.js +11423 -0
- package/dist/index.js +6 -2
- package/dist/schema/index.js +2 -0
- package/dist/server/index.d.ts +301 -0
- package/dist/server/index.d.ts.map +1 -1
- package/dist/server/index.js +2585 -1
- package/dist/storage/index.js +2 -0
- package/package.json +13 -3
- package/dist/domain/index.d.ts +0 -1
- package/dist/domain/index.d.ts.map +0 -1
- package/dist/stores/index.d.ts +0 -1
- package/dist/stores/index.d.ts.map +0 -1
package/dist/index.js
CHANGED
|
@@ -10,17 +10,21 @@ import {
|
|
|
10
10
|
CmsCheckbox,
|
|
11
11
|
CmsField,
|
|
12
12
|
CmsHiddenField,
|
|
13
|
-
CmsImageField
|
|
14
|
-
|
|
13
|
+
CmsImageField,
|
|
14
|
+
CmsImagePickerModal
|
|
15
|
+
} from "./index-c9btr14k.js";
|
|
16
|
+
import"./index-wmd953zf.js";
|
|
15
17
|
import {
|
|
16
18
|
defineSchema,
|
|
17
19
|
getEditableFields
|
|
18
20
|
} from "./schema/index.js";
|
|
21
|
+
import"./index-szreq4v9.js";
|
|
19
22
|
export {
|
|
20
23
|
useCmsForm,
|
|
21
24
|
getEditableFields,
|
|
22
25
|
defineSchema,
|
|
23
26
|
CmsSubmitButton,
|
|
27
|
+
CmsImagePickerModal,
|
|
24
28
|
CmsImageField,
|
|
25
29
|
CmsHiddenField,
|
|
26
30
|
CmsFormSuccess,
|
package/dist/schema/index.js
CHANGED
package/dist/server/index.d.ts
CHANGED
|
@@ -76,4 +76,305 @@ export declare function parseFormDataToObject(formData: FormData): Record<string
|
|
|
76
76
|
* Helper to parse FormData with a specific schema
|
|
77
77
|
*/
|
|
78
78
|
export declare function parseFormData<T extends z.ZodType>(schema: T, formData: FormData): z.infer<T> | null;
|
|
79
|
+
/**
|
|
80
|
+
* Supported CMS languages
|
|
81
|
+
*/
|
|
82
|
+
export type CmsLanguage = 'en' | 'de';
|
|
83
|
+
/**
|
|
84
|
+
* User settings shape for language preference
|
|
85
|
+
*/
|
|
86
|
+
export type UserLanguageSettings = {
|
|
87
|
+
language?: CmsLanguage;
|
|
88
|
+
};
|
|
89
|
+
/**
|
|
90
|
+
* Dependencies for creating language route handlers
|
|
91
|
+
*/
|
|
92
|
+
export type LanguageRoutesDeps = {
|
|
93
|
+
/**
|
|
94
|
+
* Get the current authenticated user's ID.
|
|
95
|
+
* Return null if not authenticated.
|
|
96
|
+
*/
|
|
97
|
+
getUserId: () => Promise<string | null>;
|
|
98
|
+
/**
|
|
99
|
+
* Get the user's current settings.
|
|
100
|
+
* Return null if user not found.
|
|
101
|
+
*/
|
|
102
|
+
getUserSettings: (userId: string) => Promise<UserLanguageSettings | null>;
|
|
103
|
+
/**
|
|
104
|
+
* Update the user's settings.
|
|
105
|
+
*/
|
|
106
|
+
updateUserSettings: (userId: string, settings: UserLanguageSettings) => Promise<void>;
|
|
107
|
+
};
|
|
108
|
+
/**
|
|
109
|
+
* Response helpers for Next.js routes
|
|
110
|
+
*/
|
|
111
|
+
type JsonResponse = {
|
|
112
|
+
json: (data: unknown, init?: {
|
|
113
|
+
status?: number;
|
|
114
|
+
}) => Response;
|
|
115
|
+
};
|
|
116
|
+
/**
|
|
117
|
+
* Creates GET and POST handlers for the language preference API route.
|
|
118
|
+
*
|
|
119
|
+
* @example
|
|
120
|
+
* ```ts
|
|
121
|
+
* // app/api/admin/language/route.ts
|
|
122
|
+
* import { createLanguageRoutes } from 'litecms/server';
|
|
123
|
+
* import { auth } from '@/app/lib/auth';
|
|
124
|
+
* import { db } from '@/app/db';
|
|
125
|
+
* import { user } from '@/app/db/auth-schema';
|
|
126
|
+
* import { eq } from 'drizzle-orm';
|
|
127
|
+
* import { headers } from 'next/headers';
|
|
128
|
+
*
|
|
129
|
+
* export const { GET, POST } = createLanguageRoutes({
|
|
130
|
+
* getUserId: async () => {
|
|
131
|
+
* const session = await auth.api.getSession({ headers: await headers() });
|
|
132
|
+
* return session?.user?.id ?? null;
|
|
133
|
+
* },
|
|
134
|
+
* getUserSettings: async (userId) => {
|
|
135
|
+
* const userData = await db.query.user.findFirst({
|
|
136
|
+
* where: eq(user.id, userId),
|
|
137
|
+
* columns: { settings: true },
|
|
138
|
+
* });
|
|
139
|
+
* return userData?.settings ?? null;
|
|
140
|
+
* },
|
|
141
|
+
* updateUserSettings: async (userId, settings) => {
|
|
142
|
+
* await db.update(user)
|
|
143
|
+
* .set({ settings, updatedAt: new Date() })
|
|
144
|
+
* .where(eq(user.id, userId));
|
|
145
|
+
* },
|
|
146
|
+
* });
|
|
147
|
+
* ```
|
|
148
|
+
*/
|
|
149
|
+
export declare function createLanguageRoutes(deps: LanguageRoutesDeps, NextResponse?: JsonResponse): {
|
|
150
|
+
GET: () => Promise<Response>;
|
|
151
|
+
POST: (request: Request) => Promise<Response>;
|
|
152
|
+
};
|
|
153
|
+
/**
|
|
154
|
+
* Blog post status
|
|
155
|
+
*/
|
|
156
|
+
export type BlogPostStatus = 'draft' | 'published';
|
|
157
|
+
/**
|
|
158
|
+
* Blog post shape for route handlers
|
|
159
|
+
*/
|
|
160
|
+
export type BlogPostData = {
|
|
161
|
+
id: string;
|
|
162
|
+
slug: string;
|
|
163
|
+
title: string;
|
|
164
|
+
excerpt?: string | null;
|
|
165
|
+
coverImage?: string | null;
|
|
166
|
+
content: string;
|
|
167
|
+
tags: string[];
|
|
168
|
+
authorName: string;
|
|
169
|
+
status: BlogPostStatus;
|
|
170
|
+
publishedAt?: Date | null;
|
|
171
|
+
createdAt: Date;
|
|
172
|
+
updatedAt: Date;
|
|
173
|
+
};
|
|
174
|
+
/**
|
|
175
|
+
* Input for creating a new blog post
|
|
176
|
+
*/
|
|
177
|
+
export type CreateBlogPostInput = {
|
|
178
|
+
id: string;
|
|
179
|
+
slug: string;
|
|
180
|
+
title: string;
|
|
181
|
+
excerpt?: string;
|
|
182
|
+
coverImage?: string;
|
|
183
|
+
content: string;
|
|
184
|
+
tags?: string[];
|
|
185
|
+
authorName: string;
|
|
186
|
+
status?: BlogPostStatus;
|
|
187
|
+
};
|
|
188
|
+
/**
|
|
189
|
+
* Input for updating a blog post
|
|
190
|
+
*/
|
|
191
|
+
export type UpdateBlogPostInput = {
|
|
192
|
+
slug?: string;
|
|
193
|
+
title?: string;
|
|
194
|
+
excerpt?: string | null;
|
|
195
|
+
coverImage?: string | null;
|
|
196
|
+
content?: string;
|
|
197
|
+
tags?: string[];
|
|
198
|
+
authorName?: string;
|
|
199
|
+
status?: BlogPostStatus;
|
|
200
|
+
};
|
|
201
|
+
/**
|
|
202
|
+
* Dependencies for blog posts collection routes (GET list, POST create)
|
|
203
|
+
*/
|
|
204
|
+
export type BlogPostsRoutesDeps = {
|
|
205
|
+
/**
|
|
206
|
+
* Check if the current user is authenticated.
|
|
207
|
+
* Return true if authorized, false otherwise.
|
|
208
|
+
*/
|
|
209
|
+
checkAuth: () => Promise<boolean>;
|
|
210
|
+
/**
|
|
211
|
+
* Get all blog posts ordered by creation date (newest first).
|
|
212
|
+
* Optionally filter by status.
|
|
213
|
+
*/
|
|
214
|
+
getPosts: (filter?: {
|
|
215
|
+
status?: BlogPostStatus;
|
|
216
|
+
}) => Promise<BlogPostData[]>;
|
|
217
|
+
/**
|
|
218
|
+
* Create a new blog post.
|
|
219
|
+
*/
|
|
220
|
+
createPost: (post: CreateBlogPostInput) => Promise<BlogPostData>;
|
|
221
|
+
/**
|
|
222
|
+
* Check if a slug is already taken.
|
|
223
|
+
*/
|
|
224
|
+
slugExists: (slug: string) => Promise<boolean>;
|
|
225
|
+
};
|
|
226
|
+
/**
|
|
227
|
+
* Dependencies for single blog post routes (GET, PATCH, DELETE)
|
|
228
|
+
*/
|
|
229
|
+
export type BlogPostRoutesDeps = {
|
|
230
|
+
/**
|
|
231
|
+
* Check if the current user is authenticated.
|
|
232
|
+
* Return true if authorized, false otherwise.
|
|
233
|
+
*/
|
|
234
|
+
checkAuth: () => Promise<boolean>;
|
|
235
|
+
/**
|
|
236
|
+
* Get a blog post by ID.
|
|
237
|
+
*/
|
|
238
|
+
getPost: (id: string) => Promise<BlogPostData | null>;
|
|
239
|
+
/**
|
|
240
|
+
* Update a blog post.
|
|
241
|
+
*/
|
|
242
|
+
updatePost: (id: string, data: UpdateBlogPostInput) => Promise<BlogPostData>;
|
|
243
|
+
/**
|
|
244
|
+
* Delete a blog post.
|
|
245
|
+
*/
|
|
246
|
+
deletePost: (id: string) => Promise<void>;
|
|
247
|
+
/**
|
|
248
|
+
* Check if a slug is already taken (excluding a specific post ID).
|
|
249
|
+
*/
|
|
250
|
+
slugExistsExcluding: (slug: string, excludeId: string) => Promise<boolean>;
|
|
251
|
+
};
|
|
252
|
+
/**
|
|
253
|
+
* Creates GET and POST handlers for the blog posts collection API route.
|
|
254
|
+
*
|
|
255
|
+
* @example
|
|
256
|
+
* ```ts
|
|
257
|
+
* // app/api/admin/blog/posts/route.ts
|
|
258
|
+
* import { createBlogPostsRoutes } from 'litecms/server';
|
|
259
|
+
* import { auth } from '@/app/lib/auth';
|
|
260
|
+
* import { db } from '@/app/db';
|
|
261
|
+
* import { blogPosts } from '@/app/db/schema';
|
|
262
|
+
* import { headers } from 'next/headers';
|
|
263
|
+
* import { desc, eq } from 'drizzle-orm';
|
|
264
|
+
*
|
|
265
|
+
* export const { GET, POST } = createBlogPostsRoutes({
|
|
266
|
+
* checkAuth: async () => {
|
|
267
|
+
* const session = await auth.api.getSession({ headers: await headers() });
|
|
268
|
+
* return !!session?.user;
|
|
269
|
+
* },
|
|
270
|
+
* getPosts: async (filter) => {
|
|
271
|
+
* const conditions = filter?.status ? [eq(blogPosts.status, filter.status)] : [];
|
|
272
|
+
* return db.query.blogPosts.findMany({
|
|
273
|
+
* where: conditions.length ? conditions[0] : undefined,
|
|
274
|
+
* orderBy: [desc(blogPosts.createdAt)],
|
|
275
|
+
* });
|
|
276
|
+
* },
|
|
277
|
+
* createPost: async (post) => {
|
|
278
|
+
* const [created] = await db.insert(blogPosts).values({
|
|
279
|
+
* ...post,
|
|
280
|
+
* tags: post.tags ?? [],
|
|
281
|
+
* publishedAt: post.status === 'published' ? new Date() : null,
|
|
282
|
+
* }).returning();
|
|
283
|
+
* return created;
|
|
284
|
+
* },
|
|
285
|
+
* slugExists: async (slug) => {
|
|
286
|
+
* const existing = await db.query.blogPosts.findFirst({
|
|
287
|
+
* where: eq(blogPosts.slug, slug),
|
|
288
|
+
* });
|
|
289
|
+
* return !!existing;
|
|
290
|
+
* },
|
|
291
|
+
* });
|
|
292
|
+
* ```
|
|
293
|
+
*/
|
|
294
|
+
export declare function createBlogPostsRoutes(deps: BlogPostsRoutesDeps, NextResponse?: {
|
|
295
|
+
json: (data: unknown, init?: {
|
|
296
|
+
status?: number;
|
|
297
|
+
}) => Response;
|
|
298
|
+
}): {
|
|
299
|
+
GET: (request: Request) => Promise<Response>;
|
|
300
|
+
POST: (request: Request) => Promise<Response>;
|
|
301
|
+
};
|
|
302
|
+
/**
|
|
303
|
+
* Creates GET, PATCH, and DELETE handlers for a single blog post API route.
|
|
304
|
+
*
|
|
305
|
+
* @example
|
|
306
|
+
* ```ts
|
|
307
|
+
* // app/api/admin/blog/posts/[id]/route.ts
|
|
308
|
+
* import { createBlogPostRoutes } from 'litecms/server';
|
|
309
|
+
* import { auth } from '@/app/lib/auth';
|
|
310
|
+
* import { db } from '@/app/db';
|
|
311
|
+
* import { blogPosts } from '@/app/db/schema';
|
|
312
|
+
* import { headers } from 'next/headers';
|
|
313
|
+
* import { eq, and, ne } from 'drizzle-orm';
|
|
314
|
+
*
|
|
315
|
+
* export const { GET, PATCH, DELETE } = createBlogPostRoutes({
|
|
316
|
+
* checkAuth: async () => {
|
|
317
|
+
* const session = await auth.api.getSession({ headers: await headers() });
|
|
318
|
+
* return !!session?.user;
|
|
319
|
+
* },
|
|
320
|
+
* getPost: async (id) => {
|
|
321
|
+
* return db.query.blogPosts.findFirst({
|
|
322
|
+
* where: eq(blogPosts.id, id),
|
|
323
|
+
* }) ?? null;
|
|
324
|
+
* },
|
|
325
|
+
* updatePost: async (id, data) => {
|
|
326
|
+
* const updateData = {
|
|
327
|
+
* ...data,
|
|
328
|
+
* updatedAt: new Date(),
|
|
329
|
+
* // Set publishedAt when publishing for the first time
|
|
330
|
+
* ...(data.status === 'published' && {
|
|
331
|
+
* publishedAt: new Date(),
|
|
332
|
+
* }),
|
|
333
|
+
* };
|
|
334
|
+
* const [updated] = await db.update(blogPosts)
|
|
335
|
+
* .set(updateData)
|
|
336
|
+
* .where(eq(blogPosts.id, id))
|
|
337
|
+
* .returning();
|
|
338
|
+
* return updated;
|
|
339
|
+
* },
|
|
340
|
+
* deletePost: async (id) => {
|
|
341
|
+
* await db.delete(blogPosts).where(eq(blogPosts.id, id));
|
|
342
|
+
* },
|
|
343
|
+
* slugExistsExcluding: async (slug, excludeId) => {
|
|
344
|
+
* const existing = await db.query.blogPosts.findFirst({
|
|
345
|
+
* where: and(eq(blogPosts.slug, slug), ne(blogPosts.id, excludeId)),
|
|
346
|
+
* });
|
|
347
|
+
* return !!existing;
|
|
348
|
+
* },
|
|
349
|
+
* });
|
|
350
|
+
* ```
|
|
351
|
+
*/
|
|
352
|
+
export declare function createBlogPostRoutes(deps: BlogPostRoutesDeps, NextResponse?: {
|
|
353
|
+
json: (data: unknown, init?: {
|
|
354
|
+
status?: number;
|
|
355
|
+
}) => Response;
|
|
356
|
+
}): {
|
|
357
|
+
GET: (_request: Request, { params }: {
|
|
358
|
+
params: {
|
|
359
|
+
id: string;
|
|
360
|
+
} | Promise<{
|
|
361
|
+
id: string;
|
|
362
|
+
}>;
|
|
363
|
+
}) => Promise<Response>;
|
|
364
|
+
PATCH: (request: Request, { params }: {
|
|
365
|
+
params: {
|
|
366
|
+
id: string;
|
|
367
|
+
} | Promise<{
|
|
368
|
+
id: string;
|
|
369
|
+
}>;
|
|
370
|
+
}) => Promise<Response>;
|
|
371
|
+
DELETE: (_request: Request, { params }: {
|
|
372
|
+
params: {
|
|
373
|
+
id: string;
|
|
374
|
+
} | Promise<{
|
|
375
|
+
id: string;
|
|
376
|
+
}>;
|
|
377
|
+
}) => Promise<Response>;
|
|
378
|
+
};
|
|
379
|
+
export {};
|
|
79
380
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/server/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;GAEG;AACH,MAAM,MAAM,WAAW,CAAC,CAAC,GAAG,OAAO,IAAI;IACnC,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,CAAC,CAAC;IACT,MAAM,CAAC,EAAE;QACL,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;QACvC,SAAS,CAAC,EAAE,MAAM,CAAC;KACtB,CAAC;CACL,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,aAAa,CAAC,KAAK,IAAI;IAC/B,mDAAmD;IACnD,IAAI,EAAE,CAAC,IAAI,EAAE,KAAK,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACrC,wEAAwE;IACxE,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB;;;;;;;;OAQG;IACH,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACtC;;;;;;;;;;;;OAYG;IACH,SAAS,CAAC,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;CACtC,CAAC;AAEF,eAAO,MAAM,gBAAgB,SAIY,CAAC;AAE1C;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,SAAS,CAAC,CAAC,OAAO,EACtD,MAAM,EAAE,OAAO,EACf,OAAO,EAAE,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAGpC,YAAY,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,EACzC,UAAU,QAAQ,KACnB,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAmE5C;AAED;;;;;;;;;GASG;AACH,wBAAgB,qBAAqB,CACjC,QAAQ,EAAE,QAAQ,GACnB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAyCzB;AAmDD;;GAEG;AACH,wBAAgB,aAAa,CAAC,CAAC,SAAS,CAAC,CAAC,OAAO,EAC7C,MAAM,EAAE,CAAC,EACT,QAAQ,EAAE,QAAQ,GACnB,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAInB"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/server/index.ts"],"names":[],"mappings":"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"}
|