nextblogkit 0.6.2 → 0.7.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 +84 -21
- package/dist/admin/index.cjs +656 -115
- package/dist/admin/index.cjs.map +1 -1
- package/dist/admin/index.d.cts +7 -3
- package/dist/admin/index.d.ts +7 -3
- package/dist/admin/index.js +575 -37
- package/dist/admin/index.js.map +1 -1
- package/dist/api/categories.cjs +32 -32
- package/dist/api/categories.cjs.map +1 -1
- package/dist/api/categories.d.cts +1 -1
- package/dist/api/categories.d.ts +1 -1
- package/dist/api/categories.js +6 -6
- package/dist/api/categories.js.map +1 -1
- package/dist/api/media.cjs +37 -30
- package/dist/api/media.cjs.map +1 -1
- package/dist/api/media.d.cts +1 -1
- package/dist/api/media.d.ts +1 -1
- package/dist/api/media.js +13 -6
- package/dist/api/media.js.map +1 -1
- package/dist/api/posts.cjs +39 -39
- package/dist/api/posts.cjs.map +1 -1
- package/dist/api/posts.d.cts +1 -1
- package/dist/api/posts.d.ts +1 -1
- package/dist/api/posts.js +6 -6
- package/dist/api/posts.js.map +1 -1
- package/dist/api/rss.cjs +3 -3
- package/dist/api/rss.js +2 -2
- package/dist/api/settings.cjs +13 -13
- package/dist/api/settings.cjs.map +1 -1
- package/dist/api/settings.d.cts +1 -1
- package/dist/api/settings.d.ts +1 -1
- package/dist/api/settings.js +5 -5
- package/dist/api/settings.js.map +1 -1
- package/dist/api/sitemap.cjs +3 -3
- package/dist/api/sitemap.js +2 -2
- package/dist/api/tokens.cjs +56 -0
- package/dist/api/tokens.cjs.map +1 -0
- package/dist/api/tokens.d.cts +22 -0
- package/dist/api/tokens.d.ts +22 -0
- package/dist/api/tokens.js +52 -0
- package/dist/api/tokens.js.map +1 -0
- package/dist/{chunk-6HKMZOI4.cjs → chunk-3BKPNOES.cjs} +8 -7
- package/dist/chunk-3BKPNOES.cjs.map +1 -0
- package/dist/{chunk-N5MKAD7J.cjs → chunk-DR7QNI32.cjs} +6 -2
- package/dist/chunk-DR7QNI32.cjs.map +1 -0
- package/dist/{chunk-QE4VLQYN.cjs → chunk-F47RPOTU.cjs} +13 -10
- package/dist/chunk-F47RPOTU.cjs.map +1 -0
- package/dist/{chunk-64HUVJOZ.js → chunk-JI2RK6KX.js} +80 -13
- package/dist/chunk-JI2RK6KX.js.map +1 -0
- package/dist/{chunk-R6MO3QIP.js → chunk-NSR7NYSB.js} +6 -5
- package/dist/chunk-NSR7NYSB.js.map +1 -0
- package/dist/{chunk-4PY224XM.js → chunk-O3XES5O2.js} +6 -3
- package/dist/chunk-O3XES5O2.js.map +1 -0
- package/dist/{chunk-4NKOJYWJ.js → chunk-OOUJYUGP.js} +8 -7
- package/dist/chunk-OOUJYUGP.js.map +1 -0
- package/dist/{chunk-A2S32RZN.js → chunk-OWWWTTUT.js} +8 -3
- package/dist/chunk-OWWWTTUT.js.map +1 -0
- package/dist/{chunk-E2QLTHKN.cjs → chunk-QBZLGBHQ.cjs} +11 -10
- package/dist/chunk-QBZLGBHQ.cjs.map +1 -0
- package/dist/{chunk-ZP5XRVVH.cjs → chunk-SUJT6LWH.cjs} +12 -7
- package/dist/chunk-SUJT6LWH.cjs.map +1 -0
- package/dist/{chunk-JM7QRXXK.js → chunk-TVHY4BR2.js} +10 -7
- package/dist/chunk-TVHY4BR2.js.map +1 -0
- package/dist/{chunk-JLPJKNRZ.js → chunk-UMIBGO4S.js} +18 -5
- package/dist/chunk-UMIBGO4S.js.map +1 -0
- package/dist/{chunk-U2ROR6AY.cjs → chunk-VWKVU3SE.cjs} +86 -12
- package/dist/chunk-VWKVU3SE.cjs.map +1 -0
- package/dist/{chunk-KDZER3PU.cjs → chunk-YTJQ426D.cjs} +19 -5
- package/dist/chunk-YTJQ426D.cjs.map +1 -0
- package/dist/cli/index.cjs +90 -19
- package/dist/components/index.cjs +12 -6
- package/dist/components/index.cjs.map +1 -1
- package/dist/components/index.d.cts +2 -1
- package/dist/components/index.d.ts +2 -1
- package/dist/components/index.js +12 -6
- package/dist/components/index.js.map +1 -1
- package/dist/db-OUSQPM53.js +3 -0
- package/dist/db-OUSQPM53.js.map +1 -0
- package/dist/db-RFY6O5UE.cjs +108 -0
- package/dist/db-RFY6O5UE.cjs.map +1 -0
- package/dist/editor/index.cjs +49 -12
- package/dist/editor/index.cjs.map +1 -1
- package/dist/editor/index.d.cts +5 -1
- package/dist/editor/index.d.ts +5 -1
- package/dist/editor/index.js +37 -1
- package/dist/editor/index.js.map +1 -1
- package/dist/{index-vjlZDWNr.d.cts → index-Bk8gOqBq.d.cts} +25 -21
- package/dist/{index-Cgzphklp.d.ts → index-DsnG2kdW.d.ts} +25 -21
- package/dist/index.cjs +47 -47
- package/dist/index.d.cts +3 -3
- package/dist/index.d.ts +3 -3
- package/dist/index.js +5 -5
- package/dist/lib/index.cjs +39 -35
- package/dist/lib/index.d.cts +2 -2
- package/dist/lib/index.d.ts +2 -2
- package/dist/lib/index.js +5 -5
- package/dist/{types-CBEEBR4A.d.ts → types-Cu515Egx.d.cts} +16 -1
- package/dist/{types-CBEEBR4A.d.cts → types-Cu515Egx.d.ts} +16 -1
- package/package.json +1 -1
- package/dist/chunk-4NKOJYWJ.js.map +0 -1
- package/dist/chunk-4PY224XM.js.map +0 -1
- package/dist/chunk-64HUVJOZ.js.map +0 -1
- package/dist/chunk-6HKMZOI4.cjs.map +0 -1
- package/dist/chunk-A2S32RZN.js.map +0 -1
- package/dist/chunk-E2QLTHKN.cjs.map +0 -1
- package/dist/chunk-JLPJKNRZ.js.map +0 -1
- package/dist/chunk-JM7QRXXK.js.map +0 -1
- package/dist/chunk-KDZER3PU.cjs.map +0 -1
- package/dist/chunk-N5MKAD7J.cjs.map +0 -1
- package/dist/chunk-QE4VLQYN.cjs.map +0 -1
- package/dist/chunk-R6MO3QIP.js.map +0 -1
- package/dist/chunk-U2ROR6AY.cjs.map +0 -1
- package/dist/chunk-ZP5XRVVH.cjs.map +0 -1
package/dist/api/posts.cjs
CHANGED
|
@@ -1,26 +1,26 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
4
|
-
var
|
|
5
|
-
var
|
|
3
|
+
var chunkDR7QNI32_cjs = require('../chunk-DR7QNI32.cjs');
|
|
4
|
+
var chunkYTJQ426D_cjs = require('../chunk-YTJQ426D.cjs');
|
|
5
|
+
var chunkVWKVU3SE_cjs = require('../chunk-VWKVU3SE.cjs');
|
|
6
6
|
|
|
7
7
|
// src/api/posts.ts
|
|
8
8
|
async function GET(request) {
|
|
9
9
|
try {
|
|
10
|
-
const params =
|
|
10
|
+
const params = chunkYTJQ426D_cjs.getSearchParams(request);
|
|
11
11
|
if (params.slug) {
|
|
12
|
-
const post = await
|
|
13
|
-
if (!post) return
|
|
14
|
-
return
|
|
12
|
+
const post = await chunkVWKVU3SE_cjs.getPostBySlug(params.slug);
|
|
13
|
+
if (!post) return chunkYTJQ426D_cjs.jsonError("NOT_FOUND", "Post not found", 404);
|
|
14
|
+
return chunkYTJQ426D_cjs.jsonSuccess(post);
|
|
15
15
|
}
|
|
16
16
|
if (params.id) {
|
|
17
|
-
const post = await
|
|
18
|
-
if (!post) return
|
|
19
|
-
return
|
|
17
|
+
const post = await chunkVWKVU3SE_cjs.getPostById(params.id);
|
|
18
|
+
if (!post) return chunkYTJQ426D_cjs.jsonError("NOT_FOUND", "Post not found", 404);
|
|
19
|
+
return chunkYTJQ426D_cjs.jsonSuccess(post);
|
|
20
20
|
}
|
|
21
|
-
const result = await
|
|
22
|
-
page:
|
|
23
|
-
limit:
|
|
21
|
+
const result = await chunkVWKVU3SE_cjs.listPosts({
|
|
22
|
+
page: chunkYTJQ426D_cjs.parseIntParam(params.page, 1),
|
|
23
|
+
limit: chunkYTJQ426D_cjs.parseIntParam(params.limit, 10),
|
|
24
24
|
category: params.category,
|
|
25
25
|
tag: params.tag,
|
|
26
26
|
status: params.status,
|
|
@@ -28,9 +28,9 @@ async function GET(request) {
|
|
|
28
28
|
sortBy: params.sortBy || "publishedAt",
|
|
29
29
|
sortOrder: params.sortOrder || "desc"
|
|
30
30
|
});
|
|
31
|
-
const page =
|
|
32
|
-
const limit =
|
|
33
|
-
return
|
|
31
|
+
const page = chunkYTJQ426D_cjs.parseIntParam(params.page, 1);
|
|
32
|
+
const limit = chunkYTJQ426D_cjs.parseIntParam(params.limit, 10);
|
|
33
|
+
return chunkYTJQ426D_cjs.jsonSuccess(result.posts, {
|
|
34
34
|
page,
|
|
35
35
|
limit,
|
|
36
36
|
total: result.total,
|
|
@@ -38,60 +38,60 @@ async function GET(request) {
|
|
|
38
38
|
});
|
|
39
39
|
} catch (error) {
|
|
40
40
|
console.error("[nextblogkit] GET /posts error:", error);
|
|
41
|
-
return
|
|
41
|
+
return chunkYTJQ426D_cjs.jsonError("INTERNAL_ERROR", "Failed to fetch posts", 500);
|
|
42
42
|
}
|
|
43
43
|
}
|
|
44
44
|
async function POST(request) {
|
|
45
45
|
try {
|
|
46
|
-
const authError =
|
|
46
|
+
const authError = await chunkYTJQ426D_cjs.requireAuth(request);
|
|
47
47
|
if (authError) return authError;
|
|
48
48
|
const body = await request.json();
|
|
49
|
-
const parsed =
|
|
49
|
+
const parsed = chunkDR7QNI32_cjs.CreatePostSchema.safeParse(body);
|
|
50
50
|
if (!parsed.success) {
|
|
51
51
|
const errors = parsed.error.issues.map((i) => `${i.path.join(".")}: ${i.message}`);
|
|
52
|
-
return
|
|
52
|
+
return chunkYTJQ426D_cjs.jsonError("VALIDATION_ERROR", errors.join("; "));
|
|
53
53
|
}
|
|
54
|
-
const post = await
|
|
55
|
-
return
|
|
54
|
+
const post = await chunkVWKVU3SE_cjs.createPost(parsed.data);
|
|
55
|
+
return chunkYTJQ426D_cjs.jsonSuccess(post, void 0, 201);
|
|
56
56
|
} catch (error) {
|
|
57
57
|
console.error("[nextblogkit] POST /posts error:", error);
|
|
58
|
-
return
|
|
58
|
+
return chunkYTJQ426D_cjs.jsonError("INTERNAL_ERROR", "Failed to create post", 500);
|
|
59
59
|
}
|
|
60
60
|
}
|
|
61
61
|
async function PUT(request) {
|
|
62
62
|
try {
|
|
63
|
-
const authError =
|
|
63
|
+
const authError = await chunkYTJQ426D_cjs.requireAuth(request);
|
|
64
64
|
if (authError) return authError;
|
|
65
|
-
const params =
|
|
65
|
+
const params = chunkYTJQ426D_cjs.getSearchParams(request);
|
|
66
66
|
const id = params.id;
|
|
67
|
-
if (!id) return
|
|
67
|
+
if (!id) return chunkYTJQ426D_cjs.jsonError("MISSING_ID", "Post ID is required");
|
|
68
68
|
const body = await request.json();
|
|
69
|
-
const parsed =
|
|
69
|
+
const parsed = chunkDR7QNI32_cjs.UpdatePostSchema.safeParse(body);
|
|
70
70
|
if (!parsed.success) {
|
|
71
71
|
const errors = parsed.error.issues.map((i) => `${i.path.join(".")}: ${i.message}`);
|
|
72
|
-
return
|
|
72
|
+
return chunkYTJQ426D_cjs.jsonError("VALIDATION_ERROR", errors.join("; "));
|
|
73
73
|
}
|
|
74
|
-
const post = await
|
|
75
|
-
if (!post) return
|
|
76
|
-
return
|
|
74
|
+
const post = await chunkVWKVU3SE_cjs.updatePost(id, parsed.data);
|
|
75
|
+
if (!post) return chunkYTJQ426D_cjs.jsonError("NOT_FOUND", "Post not found", 404);
|
|
76
|
+
return chunkYTJQ426D_cjs.jsonSuccess(post);
|
|
77
77
|
} catch (error) {
|
|
78
78
|
console.error("[nextblogkit] PUT /posts error:", error);
|
|
79
|
-
return
|
|
79
|
+
return chunkYTJQ426D_cjs.jsonError("INTERNAL_ERROR", "Failed to update post", 500);
|
|
80
80
|
}
|
|
81
81
|
}
|
|
82
82
|
async function DELETE(request) {
|
|
83
83
|
try {
|
|
84
|
-
const authError =
|
|
84
|
+
const authError = await chunkYTJQ426D_cjs.requireAuth(request);
|
|
85
85
|
if (authError) return authError;
|
|
86
|
-
const params =
|
|
86
|
+
const params = chunkYTJQ426D_cjs.getSearchParams(request);
|
|
87
87
|
const id = params.id;
|
|
88
|
-
if (!id) return
|
|
89
|
-
const deleted = await
|
|
90
|
-
if (!deleted) return
|
|
91
|
-
return
|
|
88
|
+
if (!id) return chunkYTJQ426D_cjs.jsonError("MISSING_ID", "Post ID is required");
|
|
89
|
+
const deleted = await chunkVWKVU3SE_cjs.deletePost(id);
|
|
90
|
+
if (!deleted) return chunkYTJQ426D_cjs.jsonError("NOT_FOUND", "Post not found", 404);
|
|
91
|
+
return chunkYTJQ426D_cjs.jsonSuccess({ deleted: true });
|
|
92
92
|
} catch (error) {
|
|
93
93
|
console.error("[nextblogkit] DELETE /posts error:", error);
|
|
94
|
-
return
|
|
94
|
+
return chunkYTJQ426D_cjs.jsonError("INTERNAL_ERROR", "Failed to delete post", 500);
|
|
95
95
|
}
|
|
96
96
|
}
|
|
97
97
|
|
package/dist/api/posts.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/api/posts.ts"],"names":["getSearchParams","getPostBySlug","jsonError","jsonSuccess","getPostById","listPosts","parseIntParam","requireAuth","CreatePostSchema","createPost","UpdatePostSchema","updatePost","deletePost"],"mappings":";;;;;;;AAkBA,eAAsB,IAAI,OAAA,EAAkB;AAC1C,EAAA,IAAI;AACF,IAAA,MAAM,MAAA,GAASA,kCAAgB,OAAO,CAAA;AAGtC,IAAA,IAAI,OAAO,IAAA,EAAM;AACf,MAAA,MAAM,IAAA,GAAO,MAAMC,+BAAA,CAAc,MAAA,CAAO,IAAI,CAAA;AAC5C,MAAA,IAAI,CAAC,IAAA,EAAM,OAAOC,2BAAA,CAAU,WAAA,EAAa,kBAAkB,GAAG,CAAA;AAC9D,MAAA,OAAOC,8BAAY,IAAI,CAAA;AAAA,IACzB;AAGA,IAAA,IAAI,OAAO,EAAA,EAAI;AACb,MAAA,MAAM,IAAA,GAAO,MAAMC,6BAAA,CAAY,MAAA,CAAO,EAAE,CAAA;AACxC,MAAA,IAAI,CAAC,IAAA,EAAM,OAAOF,2BAAA,CAAU,WAAA,EAAa,kBAAkB,GAAG,CAAA;AAC9D,MAAA,OAAOC,8BAAY,IAAI,CAAA;AAAA,IACzB;AAGA,IAAA,MAAM,MAAA,GAAS,MAAME,2BAAA,CAAU;AAAA,MAC7B,IAAA,EAAMC,+BAAA,CAAc,MAAA,CAAO,IAAA,EAAM,CAAC,CAAA;AAAA,MAClC,KAAA,EAAOA,+BAAA,CAAc,MAAA,CAAO,KAAA,EAAO,EAAE,CAAA;AAAA,MACrC,UAAU,MAAA,CAAO,QAAA;AAAA,MACjB,KAAK,MAAA,CAAO,GAAA;AAAA,MACZ,QAAQ,MAAA,CAAO,MAAA;AAAA,MACf,MAAA,EAAQ,MAAA,CAAO,CAAA,IAAK,MAAA,CAAO,MAAA;AAAA,MAC3B,MAAA,EAAS,OAAO,MAAA,IAAoD,aAAA;AAAA,MACpE,SAAA,EAAY,OAAO,SAAA,IAAgC;AAAA,KACpD,CAAA;AAED,IAAA,MAAM,IAAA,GAAOA,+BAAA,CAAc,MAAA,CAAO,IAAA,EAAM,CAAC,CAAA;AACzC,IAAA,MAAM,KAAA,GAAQA,+BAAA,CAAc,MAAA,CAAO,KAAA,EAAO,EAAE,CAAA;AAE5C,IAAA,OAAOH,6BAAA,CAAY,OAAO,KAAA,EAAO;AAAA,MAC/B,IAAA;AAAA,MACA,KAAA;AAAA,MACA,OAAO,MAAA,CAAO,KAAA;AAAA,MACd,UAAA,EAAY,IAAA,CAAK,IAAA,CAAK,MAAA,CAAO,QAAQ,KAAK;AAAA,KAC3C,CAAA;AAAA,EACH,SAAS,KAAA,EAAO;AACd,IAAA,OAAA,CAAQ,KAAA,CAAM,mCAAmC,KAAK,CAAA;AACtD,IAAA,OAAOD,2BAAA,CAAU,gBAAA,EAAkB,uBAAA,EAAyB,GAAG,CAAA;AAAA,EACjE;AACF;AAEA,eAAsB,KAAK,OAAA,EAAkB;AAC3C,EAAA,IAAI;AACF,IAAA,MAAM,SAAA,
|
|
1
|
+
{"version":3,"sources":["../../src/api/posts.ts"],"names":["getSearchParams","getPostBySlug","jsonError","jsonSuccess","getPostById","listPosts","parseIntParam","requireAuth","CreatePostSchema","createPost","UpdatePostSchema","updatePost","deletePost"],"mappings":"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","file":"posts.cjs","sourcesContent":["import { NextResponse } from 'next/server';\nimport {\n listPosts,\n getPostBySlug,\n getPostById,\n createPost,\n updatePost,\n deletePost,\n} from '../lib/db';\nimport { CreatePostSchema, UpdatePostSchema, type PostStatus } from '../lib/types';\nimport {\n jsonSuccess,\n jsonError,\n requireAuth,\n getSearchParams,\n parseIntParam,\n} from './middleware';\n\nexport async function GET(request: Request) {\n try {\n const params = getSearchParams(request);\n\n // Single post by slug\n if (params.slug) {\n const post = await getPostBySlug(params.slug);\n if (!post) return jsonError('NOT_FOUND', 'Post not found', 404);\n return jsonSuccess(post);\n }\n\n // Single post by id\n if (params.id) {\n const post = await getPostById(params.id);\n if (!post) return jsonError('NOT_FOUND', 'Post not found', 404);\n return jsonSuccess(post);\n }\n\n // List posts\n const result = await listPosts({\n page: parseIntParam(params.page, 1),\n limit: parseIntParam(params.limit, 10),\n category: params.category,\n tag: params.tag,\n status: params.status as PostStatus | undefined,\n search: params.q || params.search,\n sortBy: (params.sortBy as 'publishedAt' | 'createdAt' | 'title') || 'publishedAt',\n sortOrder: (params.sortOrder as 'asc' | 'desc') || 'desc',\n });\n\n const page = parseIntParam(params.page, 1);\n const limit = parseIntParam(params.limit, 10);\n\n return jsonSuccess(result.posts, {\n page,\n limit,\n total: result.total,\n totalPages: Math.ceil(result.total / limit),\n });\n } catch (error) {\n console.error('[nextblogkit] GET /posts error:', error);\n return jsonError('INTERNAL_ERROR', 'Failed to fetch posts', 500);\n }\n}\n\nexport async function POST(request: Request) {\n try {\n const authError = await requireAuth(request);\n if (authError) return authError;\n\n const body = await request.json();\n const parsed = CreatePostSchema.safeParse(body);\n\n if (!parsed.success) {\n const errors = parsed.error.issues.map((i) => `${i.path.join('.')}: ${i.message}`);\n return jsonError('VALIDATION_ERROR', errors.join('; '));\n }\n\n const post = await createPost(parsed.data);\n return jsonSuccess(post, undefined, 201);\n } catch (error) {\n console.error('[nextblogkit] POST /posts error:', error);\n return jsonError('INTERNAL_ERROR', 'Failed to create post', 500);\n }\n}\n\nexport async function PUT(request: Request) {\n try {\n const authError = await requireAuth(request);\n if (authError) return authError;\n\n const params = getSearchParams(request);\n const id = params.id;\n if (!id) return jsonError('MISSING_ID', 'Post ID is required');\n\n const body = await request.json();\n const parsed = UpdatePostSchema.safeParse(body);\n\n if (!parsed.success) {\n const errors = parsed.error.issues.map((i) => `${i.path.join('.')}: ${i.message}`);\n return jsonError('VALIDATION_ERROR', errors.join('; '));\n }\n\n const post = await updatePost(id, parsed.data);\n if (!post) return jsonError('NOT_FOUND', 'Post not found', 404);\n\n return jsonSuccess(post);\n } catch (error) {\n console.error('[nextblogkit] PUT /posts error:', error);\n return jsonError('INTERNAL_ERROR', 'Failed to update post', 500);\n }\n}\n\nexport async function DELETE(request: Request) {\n try {\n const authError = await requireAuth(request);\n if (authError) return authError;\n\n const params = getSearchParams(request);\n const id = params.id;\n if (!id) return jsonError('MISSING_ID', 'Post ID is required');\n\n const deleted = await deletePost(id);\n if (!deleted) return jsonError('NOT_FOUND', 'Post not found', 404);\n\n return jsonSuccess({ deleted: true });\n } catch (error) {\n console.error('[nextblogkit] DELETE /posts error:', error);\n return jsonError('INTERNAL_ERROR', 'Failed to delete post', 500);\n }\n}\n"]}
|
package/dist/api/posts.d.cts
CHANGED
package/dist/api/posts.d.ts
CHANGED
package/dist/api/posts.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { CreatePostSchema, UpdatePostSchema } from '../chunk-
|
|
2
|
-
import { getSearchParams, jsonError, jsonSuccess, parseIntParam, requireAuth } from '../chunk-
|
|
3
|
-
import { getPostBySlug, getPostById, listPosts, createPost, updatePost, deletePost } from '../chunk-
|
|
1
|
+
import { CreatePostSchema, UpdatePostSchema } from '../chunk-O3XES5O2.js';
|
|
2
|
+
import { getSearchParams, jsonError, jsonSuccess, parseIntParam, requireAuth } from '../chunk-UMIBGO4S.js';
|
|
3
|
+
import { getPostBySlug, getPostById, listPosts, createPost, updatePost, deletePost } from '../chunk-JI2RK6KX.js';
|
|
4
4
|
|
|
5
5
|
// src/api/posts.ts
|
|
6
6
|
async function GET(request) {
|
|
@@ -41,7 +41,7 @@ async function GET(request) {
|
|
|
41
41
|
}
|
|
42
42
|
async function POST(request) {
|
|
43
43
|
try {
|
|
44
|
-
const authError = requireAuth(request);
|
|
44
|
+
const authError = await requireAuth(request);
|
|
45
45
|
if (authError) return authError;
|
|
46
46
|
const body = await request.json();
|
|
47
47
|
const parsed = CreatePostSchema.safeParse(body);
|
|
@@ -58,7 +58,7 @@ async function POST(request) {
|
|
|
58
58
|
}
|
|
59
59
|
async function PUT(request) {
|
|
60
60
|
try {
|
|
61
|
-
const authError = requireAuth(request);
|
|
61
|
+
const authError = await requireAuth(request);
|
|
62
62
|
if (authError) return authError;
|
|
63
63
|
const params = getSearchParams(request);
|
|
64
64
|
const id = params.id;
|
|
@@ -79,7 +79,7 @@ async function PUT(request) {
|
|
|
79
79
|
}
|
|
80
80
|
async function DELETE(request) {
|
|
81
81
|
try {
|
|
82
|
-
const authError = requireAuth(request);
|
|
82
|
+
const authError = await requireAuth(request);
|
|
83
83
|
if (authError) return authError;
|
|
84
84
|
const params = getSearchParams(request);
|
|
85
85
|
const id = params.id;
|
package/dist/api/posts.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/api/posts.ts"],"names":[],"mappings":";;;;;AAkBA,eAAsB,IAAI,OAAA,EAAkB;AAC1C,EAAA,IAAI;AACF,IAAA,MAAM,MAAA,GAAS,gBAAgB,OAAO,CAAA;AAGtC,IAAA,IAAI,OAAO,IAAA,EAAM;AACf,MAAA,MAAM,IAAA,GAAO,MAAM,aAAA,CAAc,MAAA,CAAO,IAAI,CAAA;AAC5C,MAAA,IAAI,CAAC,IAAA,EAAM,OAAO,SAAA,CAAU,WAAA,EAAa,kBAAkB,GAAG,CAAA;AAC9D,MAAA,OAAO,YAAY,IAAI,CAAA;AAAA,IACzB;AAGA,IAAA,IAAI,OAAO,EAAA,EAAI;AACb,MAAA,MAAM,IAAA,GAAO,MAAM,WAAA,CAAY,MAAA,CAAO,EAAE,CAAA;AACxC,MAAA,IAAI,CAAC,IAAA,EAAM,OAAO,SAAA,CAAU,WAAA,EAAa,kBAAkB,GAAG,CAAA;AAC9D,MAAA,OAAO,YAAY,IAAI,CAAA;AAAA,IACzB;AAGA,IAAA,MAAM,MAAA,GAAS,MAAM,SAAA,CAAU;AAAA,MAC7B,IAAA,EAAM,aAAA,CAAc,MAAA,CAAO,IAAA,EAAM,CAAC,CAAA;AAAA,MAClC,KAAA,EAAO,aAAA,CAAc,MAAA,CAAO,KAAA,EAAO,EAAE,CAAA;AAAA,MACrC,UAAU,MAAA,CAAO,QAAA;AAAA,MACjB,KAAK,MAAA,CAAO,GAAA;AAAA,MACZ,QAAQ,MAAA,CAAO,MAAA;AAAA,MACf,MAAA,EAAQ,MAAA,CAAO,CAAA,IAAK,MAAA,CAAO,MAAA;AAAA,MAC3B,MAAA,EAAS,OAAO,MAAA,IAAoD,aAAA;AAAA,MACpE,SAAA,EAAY,OAAO,SAAA,IAAgC;AAAA,KACpD,CAAA;AAED,IAAA,MAAM,IAAA,GAAO,aAAA,CAAc,MAAA,CAAO,IAAA,EAAM,CAAC,CAAA;AACzC,IAAA,MAAM,KAAA,GAAQ,aAAA,CAAc,MAAA,CAAO,KAAA,EAAO,EAAE,CAAA;AAE5C,IAAA,OAAO,WAAA,CAAY,OAAO,KAAA,EAAO;AAAA,MAC/B,IAAA;AAAA,MACA,KAAA;AAAA,MACA,OAAO,MAAA,CAAO,KAAA;AAAA,MACd,UAAA,EAAY,IAAA,CAAK,IAAA,CAAK,MAAA,CAAO,QAAQ,KAAK;AAAA,KAC3C,CAAA;AAAA,EACH,SAAS,KAAA,EAAO;AACd,IAAA,OAAA,CAAQ,KAAA,CAAM,mCAAmC,KAAK,CAAA;AACtD,IAAA,OAAO,SAAA,CAAU,gBAAA,EAAkB,uBAAA,EAAyB,GAAG,CAAA;AAAA,EACjE;AACF;AAEA,eAAsB,KAAK,OAAA,EAAkB;AAC3C,EAAA,IAAI;AACF,IAAA,MAAM,SAAA,GAAY,
|
|
1
|
+
{"version":3,"sources":["../../src/api/posts.ts"],"names":[],"mappings":"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","file":"posts.js","sourcesContent":["import { NextResponse } from 'next/server';\nimport {\n listPosts,\n getPostBySlug,\n getPostById,\n createPost,\n updatePost,\n deletePost,\n} from '../lib/db';\nimport { CreatePostSchema, UpdatePostSchema, type PostStatus } from '../lib/types';\nimport {\n jsonSuccess,\n jsonError,\n requireAuth,\n getSearchParams,\n parseIntParam,\n} from './middleware';\n\nexport async function GET(request: Request) {\n try {\n const params = getSearchParams(request);\n\n // Single post by slug\n if (params.slug) {\n const post = await getPostBySlug(params.slug);\n if (!post) return jsonError('NOT_FOUND', 'Post not found', 404);\n return jsonSuccess(post);\n }\n\n // Single post by id\n if (params.id) {\n const post = await getPostById(params.id);\n if (!post) return jsonError('NOT_FOUND', 'Post not found', 404);\n return jsonSuccess(post);\n }\n\n // List posts\n const result = await listPosts({\n page: parseIntParam(params.page, 1),\n limit: parseIntParam(params.limit, 10),\n category: params.category,\n tag: params.tag,\n status: params.status as PostStatus | undefined,\n search: params.q || params.search,\n sortBy: (params.sortBy as 'publishedAt' | 'createdAt' | 'title') || 'publishedAt',\n sortOrder: (params.sortOrder as 'asc' | 'desc') || 'desc',\n });\n\n const page = parseIntParam(params.page, 1);\n const limit = parseIntParam(params.limit, 10);\n\n return jsonSuccess(result.posts, {\n page,\n limit,\n total: result.total,\n totalPages: Math.ceil(result.total / limit),\n });\n } catch (error) {\n console.error('[nextblogkit] GET /posts error:', error);\n return jsonError('INTERNAL_ERROR', 'Failed to fetch posts', 500);\n }\n}\n\nexport async function POST(request: Request) {\n try {\n const authError = await requireAuth(request);\n if (authError) return authError;\n\n const body = await request.json();\n const parsed = CreatePostSchema.safeParse(body);\n\n if (!parsed.success) {\n const errors = parsed.error.issues.map((i) => `${i.path.join('.')}: ${i.message}`);\n return jsonError('VALIDATION_ERROR', errors.join('; '));\n }\n\n const post = await createPost(parsed.data);\n return jsonSuccess(post, undefined, 201);\n } catch (error) {\n console.error('[nextblogkit] POST /posts error:', error);\n return jsonError('INTERNAL_ERROR', 'Failed to create post', 500);\n }\n}\n\nexport async function PUT(request: Request) {\n try {\n const authError = await requireAuth(request);\n if (authError) return authError;\n\n const params = getSearchParams(request);\n const id = params.id;\n if (!id) return jsonError('MISSING_ID', 'Post ID is required');\n\n const body = await request.json();\n const parsed = UpdatePostSchema.safeParse(body);\n\n if (!parsed.success) {\n const errors = parsed.error.issues.map((i) => `${i.path.join('.')}: ${i.message}`);\n return jsonError('VALIDATION_ERROR', errors.join('; '));\n }\n\n const post = await updatePost(id, parsed.data);\n if (!post) return jsonError('NOT_FOUND', 'Post not found', 404);\n\n return jsonSuccess(post);\n } catch (error) {\n console.error('[nextblogkit] PUT /posts error:', error);\n return jsonError('INTERNAL_ERROR', 'Failed to update post', 500);\n }\n}\n\nexport async function DELETE(request: Request) {\n try {\n const authError = await requireAuth(request);\n if (authError) return authError;\n\n const params = getSearchParams(request);\n const id = params.id;\n if (!id) return jsonError('MISSING_ID', 'Post ID is required');\n\n const deleted = await deletePost(id);\n if (!deleted) return jsonError('NOT_FOUND', 'Post not found', 404);\n\n return jsonSuccess({ deleted: true });\n } catch (error) {\n console.error('[nextblogkit] DELETE /posts error:', error);\n return jsonError('INTERNAL_ERROR', 'Failed to delete post', 500);\n }\n}\n"]}
|
package/dist/api/rss.cjs
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
4
|
-
require('../chunk-
|
|
3
|
+
var chunk3BKPNOES_cjs = require('../chunk-3BKPNOES.cjs');
|
|
4
|
+
require('../chunk-VWKVU3SE.cjs');
|
|
5
5
|
var server = require('next/server');
|
|
6
6
|
|
|
7
7
|
async function GET() {
|
|
8
8
|
try {
|
|
9
|
-
const xml = await
|
|
9
|
+
const xml = await chunk3BKPNOES_cjs.generateRSSFeed();
|
|
10
10
|
return new server.NextResponse(xml, {
|
|
11
11
|
status: 200,
|
|
12
12
|
headers: {
|
package/dist/api/rss.js
CHANGED
package/dist/api/settings.cjs
CHANGED
|
@@ -1,36 +1,36 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
4
|
-
var
|
|
5
|
-
var
|
|
3
|
+
var chunkDR7QNI32_cjs = require('../chunk-DR7QNI32.cjs');
|
|
4
|
+
var chunkYTJQ426D_cjs = require('../chunk-YTJQ426D.cjs');
|
|
5
|
+
var chunkVWKVU3SE_cjs = require('../chunk-VWKVU3SE.cjs');
|
|
6
6
|
|
|
7
7
|
// src/api/settings.ts
|
|
8
8
|
async function GET(request) {
|
|
9
9
|
try {
|
|
10
|
-
const authError =
|
|
10
|
+
const authError = await chunkYTJQ426D_cjs.requireAuth(request);
|
|
11
11
|
if (authError) return authError;
|
|
12
|
-
const settings = await
|
|
13
|
-
return
|
|
12
|
+
const settings = await chunkVWKVU3SE_cjs.getSettings();
|
|
13
|
+
return chunkYTJQ426D_cjs.jsonSuccess(settings);
|
|
14
14
|
} catch (error) {
|
|
15
15
|
console.error("[nextblogkit] GET /settings error:", error);
|
|
16
|
-
return
|
|
16
|
+
return chunkYTJQ426D_cjs.jsonError("INTERNAL_ERROR", "Failed to fetch settings", 500);
|
|
17
17
|
}
|
|
18
18
|
}
|
|
19
19
|
async function PUT(request) {
|
|
20
20
|
try {
|
|
21
|
-
const authError =
|
|
21
|
+
const authError = await chunkYTJQ426D_cjs.requireAuth(request);
|
|
22
22
|
if (authError) return authError;
|
|
23
23
|
const body = await request.json();
|
|
24
|
-
const parsed =
|
|
24
|
+
const parsed = chunkDR7QNI32_cjs.BlogSettingsSchema.partial().safeParse(body);
|
|
25
25
|
if (!parsed.success) {
|
|
26
26
|
const errors = parsed.error.issues.map((i) => `${i.path.join(".")}: ${i.message}`);
|
|
27
|
-
return
|
|
27
|
+
return chunkYTJQ426D_cjs.jsonError("VALIDATION_ERROR", errors.join("; "));
|
|
28
28
|
}
|
|
29
|
-
const settings = await
|
|
30
|
-
return
|
|
29
|
+
const settings = await chunkVWKVU3SE_cjs.updateSettings(parsed.data);
|
|
30
|
+
return chunkYTJQ426D_cjs.jsonSuccess(settings);
|
|
31
31
|
} catch (error) {
|
|
32
32
|
console.error("[nextblogkit] PUT /settings error:", error);
|
|
33
|
-
return
|
|
33
|
+
return chunkYTJQ426D_cjs.jsonError("INTERNAL_ERROR", "Failed to update settings", 500);
|
|
34
34
|
}
|
|
35
35
|
}
|
|
36
36
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/api/settings.ts"],"names":["requireAuth","getSettings","jsonSuccess","jsonError","BlogSettingsSchema","updateSettings"],"mappings":";;;;;;;AAIA,eAAsB,IAAI,OAAA,EAAkB;AAC1C,EAAA,IAAI;AACF,IAAA,MAAM,SAAA,
|
|
1
|
+
{"version":3,"sources":["../../src/api/settings.ts"],"names":["requireAuth","getSettings","jsonSuccess","jsonError","BlogSettingsSchema","updateSettings"],"mappings":";;;;;;;AAIA,eAAsB,IAAI,OAAA,EAAkB;AAC1C,EAAA,IAAI;AACF,IAAA,MAAM,SAAA,GAAY,MAAMA,6BAAA,CAAY,OAAO,CAAA;AAC3C,IAAA,IAAI,WAAW,OAAO,SAAA;AAEtB,IAAA,MAAM,QAAA,GAAW,MAAMC,6BAAA,EAAY;AACnC,IAAA,OAAOC,8BAAY,QAAQ,CAAA;AAAA,EAC7B,SAAS,KAAA,EAAO;AACd,IAAA,OAAA,CAAQ,KAAA,CAAM,sCAAsC,KAAK,CAAA;AACzD,IAAA,OAAOC,2BAAA,CAAU,gBAAA,EAAkB,0BAAA,EAA4B,GAAG,CAAA;AAAA,EACpE;AACF;AAEA,eAAsB,IAAI,OAAA,EAAkB;AAC1C,EAAA,IAAI;AACF,IAAA,MAAM,SAAA,GAAY,MAAMH,6BAAA,CAAY,OAAO,CAAA;AAC3C,IAAA,IAAI,WAAW,OAAO,SAAA;AAEtB,IAAA,MAAM,IAAA,GAAO,MAAM,OAAA,CAAQ,IAAA,EAAK;AAChC,IAAA,MAAM,MAAA,GAASI,oCAAA,CAAmB,OAAA,EAAQ,CAAE,UAAU,IAAI,CAAA;AAE1D,IAAA,IAAI,CAAC,OAAO,OAAA,EAAS;AACnB,MAAA,MAAM,SAAS,MAAA,CAAO,KAAA,CAAM,MAAA,CAAO,GAAA,CAAI,CAAC,CAAA,KAAM,CAAA,EAAG,CAAA,CAAE,IAAA,CAAK,KAAK,GAAG,CAAC,CAAA,EAAA,EAAK,CAAA,CAAE,OAAO,CAAA,CAAE,CAAA;AACjF,MAAA,OAAOD,2BAAA,CAAU,kBAAA,EAAoB,MAAA,CAAO,IAAA,CAAK,IAAI,CAAC,CAAA;AAAA,IACxD;AAEA,IAAA,MAAM,QAAA,GAAW,MAAME,gCAAA,CAAe,MAAA,CAAO,IAAI,CAAA;AACjD,IAAA,OAAOH,8BAAY,QAAQ,CAAA;AAAA,EAC7B,SAAS,KAAA,EAAO;AACd,IAAA,OAAA,CAAQ,KAAA,CAAM,sCAAsC,KAAK,CAAA;AACzD,IAAA,OAAOC,2BAAA,CAAU,gBAAA,EAAkB,2BAAA,EAA6B,GAAG,CAAA;AAAA,EACrE;AACF","file":"settings.cjs","sourcesContent":["import { getSettings, updateSettings } from '../lib/db';\nimport { BlogSettingsSchema } from '../lib/types';\nimport { jsonSuccess, jsonError, requireAuth } from './middleware';\n\nexport async function GET(request: Request) {\n try {\n const authError = await requireAuth(request);\n if (authError) return authError;\n\n const settings = await getSettings();\n return jsonSuccess(settings);\n } catch (error) {\n console.error('[nextblogkit] GET /settings error:', error);\n return jsonError('INTERNAL_ERROR', 'Failed to fetch settings', 500);\n }\n}\n\nexport async function PUT(request: Request) {\n try {\n const authError = await requireAuth(request);\n if (authError) return authError;\n\n const body = await request.json();\n const parsed = BlogSettingsSchema.partial().safeParse(body);\n\n if (!parsed.success) {\n const errors = parsed.error.issues.map((i) => `${i.path.join('.')}: ${i.message}`);\n return jsonError('VALIDATION_ERROR', errors.join('; '));\n }\n\n const settings = await updateSettings(parsed.data);\n return jsonSuccess(settings);\n } catch (error) {\n console.error('[nextblogkit] PUT /settings error:', error);\n return jsonError('INTERNAL_ERROR', 'Failed to update settings', 500);\n }\n}\n"]}
|
package/dist/api/settings.d.cts
CHANGED
package/dist/api/settings.d.ts
CHANGED
package/dist/api/settings.js
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import { BlogSettingsSchema } from '../chunk-
|
|
2
|
-
import { requireAuth, jsonSuccess, jsonError } from '../chunk-
|
|
3
|
-
import { getSettings, updateSettings } from '../chunk-
|
|
1
|
+
import { BlogSettingsSchema } from '../chunk-O3XES5O2.js';
|
|
2
|
+
import { requireAuth, jsonSuccess, jsonError } from '../chunk-UMIBGO4S.js';
|
|
3
|
+
import { getSettings, updateSettings } from '../chunk-JI2RK6KX.js';
|
|
4
4
|
|
|
5
5
|
// src/api/settings.ts
|
|
6
6
|
async function GET(request) {
|
|
7
7
|
try {
|
|
8
|
-
const authError = requireAuth(request);
|
|
8
|
+
const authError = await requireAuth(request);
|
|
9
9
|
if (authError) return authError;
|
|
10
10
|
const settings = await getSettings();
|
|
11
11
|
return jsonSuccess(settings);
|
|
@@ -16,7 +16,7 @@ async function GET(request) {
|
|
|
16
16
|
}
|
|
17
17
|
async function PUT(request) {
|
|
18
18
|
try {
|
|
19
|
-
const authError = requireAuth(request);
|
|
19
|
+
const authError = await requireAuth(request);
|
|
20
20
|
if (authError) return authError;
|
|
21
21
|
const body = await request.json();
|
|
22
22
|
const parsed = BlogSettingsSchema.partial().safeParse(body);
|
package/dist/api/settings.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/api/settings.ts"],"names":[],"mappings":";;;;;AAIA,eAAsB,IAAI,OAAA,EAAkB;AAC1C,EAAA,IAAI;AACF,IAAA,MAAM,SAAA,GAAY,
|
|
1
|
+
{"version":3,"sources":["../../src/api/settings.ts"],"names":[],"mappings":";;;;;AAIA,eAAsB,IAAI,OAAA,EAAkB;AAC1C,EAAA,IAAI;AACF,IAAA,MAAM,SAAA,GAAY,MAAM,WAAA,CAAY,OAAO,CAAA;AAC3C,IAAA,IAAI,WAAW,OAAO,SAAA;AAEtB,IAAA,MAAM,QAAA,GAAW,MAAM,WAAA,EAAY;AACnC,IAAA,OAAO,YAAY,QAAQ,CAAA;AAAA,EAC7B,SAAS,KAAA,EAAO;AACd,IAAA,OAAA,CAAQ,KAAA,CAAM,sCAAsC,KAAK,CAAA;AACzD,IAAA,OAAO,SAAA,CAAU,gBAAA,EAAkB,0BAAA,EAA4B,GAAG,CAAA;AAAA,EACpE;AACF;AAEA,eAAsB,IAAI,OAAA,EAAkB;AAC1C,EAAA,IAAI;AACF,IAAA,MAAM,SAAA,GAAY,MAAM,WAAA,CAAY,OAAO,CAAA;AAC3C,IAAA,IAAI,WAAW,OAAO,SAAA;AAEtB,IAAA,MAAM,IAAA,GAAO,MAAM,OAAA,CAAQ,IAAA,EAAK;AAChC,IAAA,MAAM,MAAA,GAAS,kBAAA,CAAmB,OAAA,EAAQ,CAAE,UAAU,IAAI,CAAA;AAE1D,IAAA,IAAI,CAAC,OAAO,OAAA,EAAS;AACnB,MAAA,MAAM,SAAS,MAAA,CAAO,KAAA,CAAM,MAAA,CAAO,GAAA,CAAI,CAAC,CAAA,KAAM,CAAA,EAAG,CAAA,CAAE,IAAA,CAAK,KAAK,GAAG,CAAC,CAAA,EAAA,EAAK,CAAA,CAAE,OAAO,CAAA,CAAE,CAAA;AACjF,MAAA,OAAO,SAAA,CAAU,kBAAA,EAAoB,MAAA,CAAO,IAAA,CAAK,IAAI,CAAC,CAAA;AAAA,IACxD;AAEA,IAAA,MAAM,QAAA,GAAW,MAAM,cAAA,CAAe,MAAA,CAAO,IAAI,CAAA;AACjD,IAAA,OAAO,YAAY,QAAQ,CAAA;AAAA,EAC7B,SAAS,KAAA,EAAO;AACd,IAAA,OAAA,CAAQ,KAAA,CAAM,sCAAsC,KAAK,CAAA;AACzD,IAAA,OAAO,SAAA,CAAU,gBAAA,EAAkB,2BAAA,EAA6B,GAAG,CAAA;AAAA,EACrE;AACF","file":"settings.js","sourcesContent":["import { getSettings, updateSettings } from '../lib/db';\nimport { BlogSettingsSchema } from '../lib/types';\nimport { jsonSuccess, jsonError, requireAuth } from './middleware';\n\nexport async function GET(request: Request) {\n try {\n const authError = await requireAuth(request);\n if (authError) return authError;\n\n const settings = await getSettings();\n return jsonSuccess(settings);\n } catch (error) {\n console.error('[nextblogkit] GET /settings error:', error);\n return jsonError('INTERNAL_ERROR', 'Failed to fetch settings', 500);\n }\n}\n\nexport async function PUT(request: Request) {\n try {\n const authError = await requireAuth(request);\n if (authError) return authError;\n\n const body = await request.json();\n const parsed = BlogSettingsSchema.partial().safeParse(body);\n\n if (!parsed.success) {\n const errors = parsed.error.issues.map((i) => `${i.path.join('.')}: ${i.message}`);\n return jsonError('VALIDATION_ERROR', errors.join('; '));\n }\n\n const settings = await updateSettings(parsed.data);\n return jsonSuccess(settings);\n } catch (error) {\n console.error('[nextblogkit] PUT /settings error:', error);\n return jsonError('INTERNAL_ERROR', 'Failed to update settings', 500);\n }\n}\n"]}
|
package/dist/api/sitemap.cjs
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
4
|
-
require('../chunk-
|
|
3
|
+
var chunkQBZLGBHQ_cjs = require('../chunk-QBZLGBHQ.cjs');
|
|
4
|
+
require('../chunk-VWKVU3SE.cjs');
|
|
5
5
|
var server = require('next/server');
|
|
6
6
|
|
|
7
7
|
async function GET() {
|
|
8
8
|
try {
|
|
9
|
-
const xml = await
|
|
9
|
+
const xml = await chunkQBZLGBHQ_cjs.generateSitemap();
|
|
10
10
|
return new server.NextResponse(xml, {
|
|
11
11
|
status: 200,
|
|
12
12
|
headers: {
|
package/dist/api/sitemap.js
CHANGED
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var chunkDR7QNI32_cjs = require('../chunk-DR7QNI32.cjs');
|
|
4
|
+
var chunkYTJQ426D_cjs = require('../chunk-YTJQ426D.cjs');
|
|
5
|
+
var chunkVWKVU3SE_cjs = require('../chunk-VWKVU3SE.cjs');
|
|
6
|
+
|
|
7
|
+
// src/api/tokens.ts
|
|
8
|
+
async function GET(request) {
|
|
9
|
+
try {
|
|
10
|
+
const authError = chunkYTJQ426D_cjs.requireMasterAuth(request);
|
|
11
|
+
if (authError) return authError;
|
|
12
|
+
const tokens = await chunkVWKVU3SE_cjs.listApiTokens();
|
|
13
|
+
return chunkYTJQ426D_cjs.jsonSuccess(tokens);
|
|
14
|
+
} catch (error) {
|
|
15
|
+
console.error("[nextblogkit] GET /tokens error:", error);
|
|
16
|
+
return chunkYTJQ426D_cjs.jsonError("INTERNAL_ERROR", "Failed to fetch tokens", 500);
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
async function POST(request) {
|
|
20
|
+
try {
|
|
21
|
+
const authError = chunkYTJQ426D_cjs.requireMasterAuth(request);
|
|
22
|
+
if (authError) return authError;
|
|
23
|
+
const body = await request.json();
|
|
24
|
+
const parsed = chunkDR7QNI32_cjs.CreateApiTokenSchema.safeParse(body);
|
|
25
|
+
if (!parsed.success) {
|
|
26
|
+
const errors = parsed.error.issues.map((i) => `${i.path.join(".")}: ${i.message}`);
|
|
27
|
+
return chunkYTJQ426D_cjs.jsonError("VALIDATION_ERROR", errors.join("; "));
|
|
28
|
+
}
|
|
29
|
+
const { token, plainToken } = await chunkVWKVU3SE_cjs.createApiToken(parsed.data.name);
|
|
30
|
+
return chunkYTJQ426D_cjs.jsonSuccess({ ...token, plainToken }, void 0, 201);
|
|
31
|
+
} catch (error) {
|
|
32
|
+
console.error("[nextblogkit] POST /tokens error:", error);
|
|
33
|
+
return chunkYTJQ426D_cjs.jsonError("INTERNAL_ERROR", "Failed to create token", 500);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
async function DELETE(request) {
|
|
37
|
+
try {
|
|
38
|
+
const authError = chunkYTJQ426D_cjs.requireMasterAuth(request);
|
|
39
|
+
if (authError) return authError;
|
|
40
|
+
const params = chunkYTJQ426D_cjs.getSearchParams(request);
|
|
41
|
+
const id = params.id;
|
|
42
|
+
if (!id) return chunkYTJQ426D_cjs.jsonError("MISSING_ID", "Token ID is required");
|
|
43
|
+
const deleted = await chunkVWKVU3SE_cjs.deleteApiToken(id);
|
|
44
|
+
if (!deleted) return chunkYTJQ426D_cjs.jsonError("NOT_FOUND", "Token not found", 404);
|
|
45
|
+
return chunkYTJQ426D_cjs.jsonSuccess({ deleted: true });
|
|
46
|
+
} catch (error) {
|
|
47
|
+
console.error("[nextblogkit] DELETE /tokens error:", error);
|
|
48
|
+
return chunkYTJQ426D_cjs.jsonError("INTERNAL_ERROR", "Failed to delete token", 500);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
exports.DELETE = DELETE;
|
|
53
|
+
exports.GET = GET;
|
|
54
|
+
exports.POST = POST;
|
|
55
|
+
//# sourceMappingURL=tokens.cjs.map
|
|
56
|
+
//# sourceMappingURL=tokens.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/api/tokens.ts"],"names":["requireMasterAuth","listApiTokens","jsonSuccess","jsonError","CreateApiTokenSchema","createApiToken","getSearchParams","deleteApiToken"],"mappings":";;;;;;;AAIA,eAAsB,IAAI,OAAA,EAAkB;AAC1C,EAAA,IAAI;AACF,IAAA,MAAM,SAAA,GAAYA,oCAAkB,OAAO,CAAA;AAC3C,IAAA,IAAI,WAAW,OAAO,SAAA;AAEtB,IAAA,MAAM,MAAA,GAAS,MAAMC,+BAAA,EAAc;AACnC,IAAA,OAAOC,8BAAY,MAAM,CAAA;AAAA,EAC3B,SAAS,KAAA,EAAO;AACd,IAAA,OAAA,CAAQ,KAAA,CAAM,oCAAoC,KAAK,CAAA;AACvD,IAAA,OAAOC,2BAAA,CAAU,gBAAA,EAAkB,wBAAA,EAA0B,GAAG,CAAA;AAAA,EAClE;AACF;AAEA,eAAsB,KAAK,OAAA,EAAkB;AAC3C,EAAA,IAAI;AACF,IAAA,MAAM,SAAA,GAAYH,oCAAkB,OAAO,CAAA;AAC3C,IAAA,IAAI,WAAW,OAAO,SAAA;AAEtB,IAAA,MAAM,IAAA,GAAO,MAAM,OAAA,CAAQ,IAAA,EAAK;AAChC,IAAA,MAAM,MAAA,GAASI,sCAAA,CAAqB,SAAA,CAAU,IAAI,CAAA;AAElD,IAAA,IAAI,CAAC,OAAO,OAAA,EAAS;AACnB,MAAA,MAAM,SAAS,MAAA,CAAO,KAAA,CAAM,MAAA,CAAO,GAAA,CAAI,CAAC,CAAA,KAAM,CAAA,EAAG,CAAA,CAAE,IAAA,CAAK,KAAK,GAAG,CAAC,CAAA,EAAA,EAAK,CAAA,CAAE,OAAO,CAAA,CAAE,CAAA;AACjF,MAAA,OAAOD,2BAAA,CAAU,kBAAA,EAAoB,MAAA,CAAO,IAAA,CAAK,IAAI,CAAC,CAAA;AAAA,IACxD;AAEA,IAAA,MAAM,EAAE,OAAO,UAAA,EAAW,GAAI,MAAME,gCAAA,CAAe,MAAA,CAAO,KAAK,IAAI,CAAA;AACnE,IAAA,OAAOH,8BAAY,EAAE,GAAG,OAAO,UAAA,EAAW,EAAG,QAAW,GAAG,CAAA;AAAA,EAC7D,SAAS,KAAA,EAAO;AACd,IAAA,OAAA,CAAQ,KAAA,CAAM,qCAAqC,KAAK,CAAA;AACxD,IAAA,OAAOC,2BAAA,CAAU,gBAAA,EAAkB,wBAAA,EAA0B,GAAG,CAAA;AAAA,EAClE;AACF;AAEA,eAAsB,OAAO,OAAA,EAAkB;AAC7C,EAAA,IAAI;AACF,IAAA,MAAM,SAAA,GAAYH,oCAAkB,OAAO,CAAA;AAC3C,IAAA,IAAI,WAAW,OAAO,SAAA;AAEtB,IAAA,MAAM,MAAA,GAASM,kCAAgB,OAAO,CAAA;AACtC,IAAA,MAAM,KAAK,MAAA,CAAO,EAAA;AAClB,IAAA,IAAI,CAAC,EAAA,EAAI,OAAOH,2BAAA,CAAU,cAAc,sBAAsB,CAAA;AAE9D,IAAA,MAAM,OAAA,GAAU,MAAMI,gCAAA,CAAe,EAAE,CAAA;AACvC,IAAA,IAAI,CAAC,OAAA,EAAS,OAAOJ,2BAAA,CAAU,WAAA,EAAa,mBAAmB,GAAG,CAAA;AAElE,IAAA,OAAOD,6BAAA,CAAY,EAAE,OAAA,EAAS,IAAA,EAAM,CAAA;AAAA,EACtC,SAAS,KAAA,EAAO;AACd,IAAA,OAAA,CAAQ,KAAA,CAAM,uCAAuC,KAAK,CAAA;AAC1D,IAAA,OAAOC,2BAAA,CAAU,gBAAA,EAAkB,wBAAA,EAA0B,GAAG,CAAA;AAAA,EAClE;AACF","file":"tokens.cjs","sourcesContent":["import { createApiToken, listApiTokens, deleteApiToken } from '../lib/db';\nimport { CreateApiTokenSchema } from '../lib/types';\nimport { jsonSuccess, jsonError, requireMasterAuth, getSearchParams } from './middleware';\n\nexport async function GET(request: Request) {\n try {\n const authError = requireMasterAuth(request);\n if (authError) return authError;\n\n const tokens = await listApiTokens();\n return jsonSuccess(tokens);\n } catch (error) {\n console.error('[nextblogkit] GET /tokens error:', error);\n return jsonError('INTERNAL_ERROR', 'Failed to fetch tokens', 500);\n }\n}\n\nexport async function POST(request: Request) {\n try {\n const authError = requireMasterAuth(request);\n if (authError) return authError;\n\n const body = await request.json();\n const parsed = CreateApiTokenSchema.safeParse(body);\n\n if (!parsed.success) {\n const errors = parsed.error.issues.map((i) => `${i.path.join('.')}: ${i.message}`);\n return jsonError('VALIDATION_ERROR', errors.join('; '));\n }\n\n const { token, plainToken } = await createApiToken(parsed.data.name);\n return jsonSuccess({ ...token, plainToken }, undefined, 201);\n } catch (error) {\n console.error('[nextblogkit] POST /tokens error:', error);\n return jsonError('INTERNAL_ERROR', 'Failed to create token', 500);\n }\n}\n\nexport async function DELETE(request: Request) {\n try {\n const authError = requireMasterAuth(request);\n if (authError) return authError;\n\n const params = getSearchParams(request);\n const id = params.id;\n if (!id) return jsonError('MISSING_ID', 'Token ID is required');\n\n const deleted = await deleteApiToken(id);\n if (!deleted) return jsonError('NOT_FOUND', 'Token not found', 404);\n\n return jsonSuccess({ deleted: true });\n } catch (error) {\n console.error('[nextblogkit] DELETE /tokens error:', error);\n return jsonError('INTERNAL_ERROR', 'Failed to delete token', 500);\n }\n}\n"]}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import * as next_server from 'next/server';
|
|
2
|
+
import { A as ApiErrorResponse } from '../types-Cu515Egx.cjs';
|
|
3
|
+
import 'zod';
|
|
4
|
+
import 'mongodb';
|
|
5
|
+
|
|
6
|
+
declare function GET(request: Request): Promise<next_server.NextResponse<ApiErrorResponse> | next_server.NextResponse<{
|
|
7
|
+
success: boolean;
|
|
8
|
+
data: unknown;
|
|
9
|
+
meta: Record<string, unknown> | undefined;
|
|
10
|
+
}>>;
|
|
11
|
+
declare function POST(request: Request): Promise<next_server.NextResponse<ApiErrorResponse> | next_server.NextResponse<{
|
|
12
|
+
success: boolean;
|
|
13
|
+
data: unknown;
|
|
14
|
+
meta: Record<string, unknown> | undefined;
|
|
15
|
+
}>>;
|
|
16
|
+
declare function DELETE(request: Request): Promise<next_server.NextResponse<ApiErrorResponse> | next_server.NextResponse<{
|
|
17
|
+
success: boolean;
|
|
18
|
+
data: unknown;
|
|
19
|
+
meta: Record<string, unknown> | undefined;
|
|
20
|
+
}>>;
|
|
21
|
+
|
|
22
|
+
export { DELETE, GET, POST };
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import * as next_server from 'next/server';
|
|
2
|
+
import { A as ApiErrorResponse } from '../types-Cu515Egx.js';
|
|
3
|
+
import 'zod';
|
|
4
|
+
import 'mongodb';
|
|
5
|
+
|
|
6
|
+
declare function GET(request: Request): Promise<next_server.NextResponse<ApiErrorResponse> | next_server.NextResponse<{
|
|
7
|
+
success: boolean;
|
|
8
|
+
data: unknown;
|
|
9
|
+
meta: Record<string, unknown> | undefined;
|
|
10
|
+
}>>;
|
|
11
|
+
declare function POST(request: Request): Promise<next_server.NextResponse<ApiErrorResponse> | next_server.NextResponse<{
|
|
12
|
+
success: boolean;
|
|
13
|
+
data: unknown;
|
|
14
|
+
meta: Record<string, unknown> | undefined;
|
|
15
|
+
}>>;
|
|
16
|
+
declare function DELETE(request: Request): Promise<next_server.NextResponse<ApiErrorResponse> | next_server.NextResponse<{
|
|
17
|
+
success: boolean;
|
|
18
|
+
data: unknown;
|
|
19
|
+
meta: Record<string, unknown> | undefined;
|
|
20
|
+
}>>;
|
|
21
|
+
|
|
22
|
+
export { DELETE, GET, POST };
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { CreateApiTokenSchema } from '../chunk-O3XES5O2.js';
|
|
2
|
+
import { requireMasterAuth, jsonSuccess, jsonError, getSearchParams } from '../chunk-UMIBGO4S.js';
|
|
3
|
+
import { listApiTokens, createApiToken, deleteApiToken } from '../chunk-JI2RK6KX.js';
|
|
4
|
+
|
|
5
|
+
// src/api/tokens.ts
|
|
6
|
+
async function GET(request) {
|
|
7
|
+
try {
|
|
8
|
+
const authError = requireMasterAuth(request);
|
|
9
|
+
if (authError) return authError;
|
|
10
|
+
const tokens = await listApiTokens();
|
|
11
|
+
return jsonSuccess(tokens);
|
|
12
|
+
} catch (error) {
|
|
13
|
+
console.error("[nextblogkit] GET /tokens error:", error);
|
|
14
|
+
return jsonError("INTERNAL_ERROR", "Failed to fetch tokens", 500);
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
async function POST(request) {
|
|
18
|
+
try {
|
|
19
|
+
const authError = requireMasterAuth(request);
|
|
20
|
+
if (authError) return authError;
|
|
21
|
+
const body = await request.json();
|
|
22
|
+
const parsed = CreateApiTokenSchema.safeParse(body);
|
|
23
|
+
if (!parsed.success) {
|
|
24
|
+
const errors = parsed.error.issues.map((i) => `${i.path.join(".")}: ${i.message}`);
|
|
25
|
+
return jsonError("VALIDATION_ERROR", errors.join("; "));
|
|
26
|
+
}
|
|
27
|
+
const { token, plainToken } = await createApiToken(parsed.data.name);
|
|
28
|
+
return jsonSuccess({ ...token, plainToken }, void 0, 201);
|
|
29
|
+
} catch (error) {
|
|
30
|
+
console.error("[nextblogkit] POST /tokens error:", error);
|
|
31
|
+
return jsonError("INTERNAL_ERROR", "Failed to create token", 500);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
async function DELETE(request) {
|
|
35
|
+
try {
|
|
36
|
+
const authError = requireMasterAuth(request);
|
|
37
|
+
if (authError) return authError;
|
|
38
|
+
const params = getSearchParams(request);
|
|
39
|
+
const id = params.id;
|
|
40
|
+
if (!id) return jsonError("MISSING_ID", "Token ID is required");
|
|
41
|
+
const deleted = await deleteApiToken(id);
|
|
42
|
+
if (!deleted) return jsonError("NOT_FOUND", "Token not found", 404);
|
|
43
|
+
return jsonSuccess({ deleted: true });
|
|
44
|
+
} catch (error) {
|
|
45
|
+
console.error("[nextblogkit] DELETE /tokens error:", error);
|
|
46
|
+
return jsonError("INTERNAL_ERROR", "Failed to delete token", 500);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
export { DELETE, GET, POST };
|
|
51
|
+
//# sourceMappingURL=tokens.js.map
|
|
52
|
+
//# sourceMappingURL=tokens.js.map
|