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.
Files changed (113) hide show
  1. package/README.md +84 -21
  2. package/dist/admin/index.cjs +656 -115
  3. package/dist/admin/index.cjs.map +1 -1
  4. package/dist/admin/index.d.cts +7 -3
  5. package/dist/admin/index.d.ts +7 -3
  6. package/dist/admin/index.js +575 -37
  7. package/dist/admin/index.js.map +1 -1
  8. package/dist/api/categories.cjs +32 -32
  9. package/dist/api/categories.cjs.map +1 -1
  10. package/dist/api/categories.d.cts +1 -1
  11. package/dist/api/categories.d.ts +1 -1
  12. package/dist/api/categories.js +6 -6
  13. package/dist/api/categories.js.map +1 -1
  14. package/dist/api/media.cjs +37 -30
  15. package/dist/api/media.cjs.map +1 -1
  16. package/dist/api/media.d.cts +1 -1
  17. package/dist/api/media.d.ts +1 -1
  18. package/dist/api/media.js +13 -6
  19. package/dist/api/media.js.map +1 -1
  20. package/dist/api/posts.cjs +39 -39
  21. package/dist/api/posts.cjs.map +1 -1
  22. package/dist/api/posts.d.cts +1 -1
  23. package/dist/api/posts.d.ts +1 -1
  24. package/dist/api/posts.js +6 -6
  25. package/dist/api/posts.js.map +1 -1
  26. package/dist/api/rss.cjs +3 -3
  27. package/dist/api/rss.js +2 -2
  28. package/dist/api/settings.cjs +13 -13
  29. package/dist/api/settings.cjs.map +1 -1
  30. package/dist/api/settings.d.cts +1 -1
  31. package/dist/api/settings.d.ts +1 -1
  32. package/dist/api/settings.js +5 -5
  33. package/dist/api/settings.js.map +1 -1
  34. package/dist/api/sitemap.cjs +3 -3
  35. package/dist/api/sitemap.js +2 -2
  36. package/dist/api/tokens.cjs +56 -0
  37. package/dist/api/tokens.cjs.map +1 -0
  38. package/dist/api/tokens.d.cts +22 -0
  39. package/dist/api/tokens.d.ts +22 -0
  40. package/dist/api/tokens.js +52 -0
  41. package/dist/api/tokens.js.map +1 -0
  42. package/dist/{chunk-6HKMZOI4.cjs → chunk-3BKPNOES.cjs} +8 -7
  43. package/dist/chunk-3BKPNOES.cjs.map +1 -0
  44. package/dist/{chunk-N5MKAD7J.cjs → chunk-DR7QNI32.cjs} +6 -2
  45. package/dist/chunk-DR7QNI32.cjs.map +1 -0
  46. package/dist/{chunk-QE4VLQYN.cjs → chunk-F47RPOTU.cjs} +13 -10
  47. package/dist/chunk-F47RPOTU.cjs.map +1 -0
  48. package/dist/{chunk-64HUVJOZ.js → chunk-JI2RK6KX.js} +80 -13
  49. package/dist/chunk-JI2RK6KX.js.map +1 -0
  50. package/dist/{chunk-R6MO3QIP.js → chunk-NSR7NYSB.js} +6 -5
  51. package/dist/chunk-NSR7NYSB.js.map +1 -0
  52. package/dist/{chunk-4PY224XM.js → chunk-O3XES5O2.js} +6 -3
  53. package/dist/chunk-O3XES5O2.js.map +1 -0
  54. package/dist/{chunk-4NKOJYWJ.js → chunk-OOUJYUGP.js} +8 -7
  55. package/dist/chunk-OOUJYUGP.js.map +1 -0
  56. package/dist/{chunk-A2S32RZN.js → chunk-OWWWTTUT.js} +8 -3
  57. package/dist/chunk-OWWWTTUT.js.map +1 -0
  58. package/dist/{chunk-E2QLTHKN.cjs → chunk-QBZLGBHQ.cjs} +11 -10
  59. package/dist/chunk-QBZLGBHQ.cjs.map +1 -0
  60. package/dist/{chunk-ZP5XRVVH.cjs → chunk-SUJT6LWH.cjs} +12 -7
  61. package/dist/chunk-SUJT6LWH.cjs.map +1 -0
  62. package/dist/{chunk-JM7QRXXK.js → chunk-TVHY4BR2.js} +10 -7
  63. package/dist/chunk-TVHY4BR2.js.map +1 -0
  64. package/dist/{chunk-JLPJKNRZ.js → chunk-UMIBGO4S.js} +18 -5
  65. package/dist/chunk-UMIBGO4S.js.map +1 -0
  66. package/dist/{chunk-U2ROR6AY.cjs → chunk-VWKVU3SE.cjs} +86 -12
  67. package/dist/chunk-VWKVU3SE.cjs.map +1 -0
  68. package/dist/{chunk-KDZER3PU.cjs → chunk-YTJQ426D.cjs} +19 -5
  69. package/dist/chunk-YTJQ426D.cjs.map +1 -0
  70. package/dist/cli/index.cjs +90 -19
  71. package/dist/components/index.cjs +12 -6
  72. package/dist/components/index.cjs.map +1 -1
  73. package/dist/components/index.d.cts +2 -1
  74. package/dist/components/index.d.ts +2 -1
  75. package/dist/components/index.js +12 -6
  76. package/dist/components/index.js.map +1 -1
  77. package/dist/db-OUSQPM53.js +3 -0
  78. package/dist/db-OUSQPM53.js.map +1 -0
  79. package/dist/db-RFY6O5UE.cjs +108 -0
  80. package/dist/db-RFY6O5UE.cjs.map +1 -0
  81. package/dist/editor/index.cjs +49 -12
  82. package/dist/editor/index.cjs.map +1 -1
  83. package/dist/editor/index.d.cts +5 -1
  84. package/dist/editor/index.d.ts +5 -1
  85. package/dist/editor/index.js +37 -1
  86. package/dist/editor/index.js.map +1 -1
  87. package/dist/{index-vjlZDWNr.d.cts → index-Bk8gOqBq.d.cts} +25 -21
  88. package/dist/{index-Cgzphklp.d.ts → index-DsnG2kdW.d.ts} +25 -21
  89. package/dist/index.cjs +47 -47
  90. package/dist/index.d.cts +3 -3
  91. package/dist/index.d.ts +3 -3
  92. package/dist/index.js +5 -5
  93. package/dist/lib/index.cjs +39 -35
  94. package/dist/lib/index.d.cts +2 -2
  95. package/dist/lib/index.d.ts +2 -2
  96. package/dist/lib/index.js +5 -5
  97. package/dist/{types-CBEEBR4A.d.ts → types-Cu515Egx.d.cts} +16 -1
  98. package/dist/{types-CBEEBR4A.d.cts → types-Cu515Egx.d.ts} +16 -1
  99. package/package.json +1 -1
  100. package/dist/chunk-4NKOJYWJ.js.map +0 -1
  101. package/dist/chunk-4PY224XM.js.map +0 -1
  102. package/dist/chunk-64HUVJOZ.js.map +0 -1
  103. package/dist/chunk-6HKMZOI4.cjs.map +0 -1
  104. package/dist/chunk-A2S32RZN.js.map +0 -1
  105. package/dist/chunk-E2QLTHKN.cjs.map +0 -1
  106. package/dist/chunk-JLPJKNRZ.js.map +0 -1
  107. package/dist/chunk-JM7QRXXK.js.map +0 -1
  108. package/dist/chunk-KDZER3PU.cjs.map +0 -1
  109. package/dist/chunk-N5MKAD7J.cjs.map +0 -1
  110. package/dist/chunk-QE4VLQYN.cjs.map +0 -1
  111. package/dist/chunk-R6MO3QIP.js.map +0 -1
  112. package/dist/chunk-U2ROR6AY.cjs.map +0 -1
  113. package/dist/chunk-ZP5XRVVH.cjs.map +0 -1
@@ -1,26 +1,26 @@
1
1
  'use strict';
2
2
 
3
- var chunkN5MKAD7J_cjs = require('../chunk-N5MKAD7J.cjs');
4
- var chunkKDZER3PU_cjs = require('../chunk-KDZER3PU.cjs');
5
- var chunkU2ROR6AY_cjs = require('../chunk-U2ROR6AY.cjs');
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 = chunkKDZER3PU_cjs.getSearchParams(request);
10
+ const params = chunkYTJQ426D_cjs.getSearchParams(request);
11
11
  if (params.slug) {
12
- const post = await chunkU2ROR6AY_cjs.getPostBySlug(params.slug);
13
- if (!post) return chunkKDZER3PU_cjs.jsonError("NOT_FOUND", "Post not found", 404);
14
- return chunkKDZER3PU_cjs.jsonSuccess(post);
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 chunkU2ROR6AY_cjs.getPostById(params.id);
18
- if (!post) return chunkKDZER3PU_cjs.jsonError("NOT_FOUND", "Post not found", 404);
19
- return chunkKDZER3PU_cjs.jsonSuccess(post);
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 chunkU2ROR6AY_cjs.listPosts({
22
- page: chunkKDZER3PU_cjs.parseIntParam(params.page, 1),
23
- limit: chunkKDZER3PU_cjs.parseIntParam(params.limit, 10),
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 = chunkKDZER3PU_cjs.parseIntParam(params.page, 1);
32
- const limit = chunkKDZER3PU_cjs.parseIntParam(params.limit, 10);
33
- return chunkKDZER3PU_cjs.jsonSuccess(result.posts, {
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 chunkKDZER3PU_cjs.jsonError("INTERNAL_ERROR", "Failed to fetch posts", 500);
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 = chunkKDZER3PU_cjs.requireAuth(request);
46
+ const authError = await chunkYTJQ426D_cjs.requireAuth(request);
47
47
  if (authError) return authError;
48
48
  const body = await request.json();
49
- const parsed = chunkN5MKAD7J_cjs.CreatePostSchema.safeParse(body);
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 chunkKDZER3PU_cjs.jsonError("VALIDATION_ERROR", errors.join("; "));
52
+ return chunkYTJQ426D_cjs.jsonError("VALIDATION_ERROR", errors.join("; "));
53
53
  }
54
- const post = await chunkU2ROR6AY_cjs.createPost(parsed.data);
55
- return chunkKDZER3PU_cjs.jsonSuccess(post, void 0, 201);
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 chunkKDZER3PU_cjs.jsonError("INTERNAL_ERROR", "Failed to create post", 500);
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 = chunkKDZER3PU_cjs.requireAuth(request);
63
+ const authError = await chunkYTJQ426D_cjs.requireAuth(request);
64
64
  if (authError) return authError;
65
- const params = chunkKDZER3PU_cjs.getSearchParams(request);
65
+ const params = chunkYTJQ426D_cjs.getSearchParams(request);
66
66
  const id = params.id;
67
- if (!id) return chunkKDZER3PU_cjs.jsonError("MISSING_ID", "Post ID is required");
67
+ if (!id) return chunkYTJQ426D_cjs.jsonError("MISSING_ID", "Post ID is required");
68
68
  const body = await request.json();
69
- const parsed = chunkN5MKAD7J_cjs.UpdatePostSchema.safeParse(body);
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 chunkKDZER3PU_cjs.jsonError("VALIDATION_ERROR", errors.join("; "));
72
+ return chunkYTJQ426D_cjs.jsonError("VALIDATION_ERROR", errors.join("; "));
73
73
  }
74
- const post = await chunkU2ROR6AY_cjs.updatePost(id, parsed.data);
75
- if (!post) return chunkKDZER3PU_cjs.jsonError("NOT_FOUND", "Post not found", 404);
76
- return chunkKDZER3PU_cjs.jsonSuccess(post);
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 chunkKDZER3PU_cjs.jsonError("INTERNAL_ERROR", "Failed to update post", 500);
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 = chunkKDZER3PU_cjs.requireAuth(request);
84
+ const authError = await chunkYTJQ426D_cjs.requireAuth(request);
85
85
  if (authError) return authError;
86
- const params = chunkKDZER3PU_cjs.getSearchParams(request);
86
+ const params = chunkYTJQ426D_cjs.getSearchParams(request);
87
87
  const id = params.id;
88
- if (!id) return chunkKDZER3PU_cjs.jsonError("MISSING_ID", "Post ID is required");
89
- const deleted = await chunkU2ROR6AY_cjs.deletePost(id);
90
- if (!deleted) return chunkKDZER3PU_cjs.jsonError("NOT_FOUND", "Post not found", 404);
91
- return chunkKDZER3PU_cjs.jsonSuccess({ deleted: true });
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 chunkKDZER3PU_cjs.jsonError("INTERNAL_ERROR", "Failed to delete post", 500);
94
+ return chunkYTJQ426D_cjs.jsonError("INTERNAL_ERROR", "Failed to delete post", 500);
95
95
  }
96
96
  }
97
97
 
@@ -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":"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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 = 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 = 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 = 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"]}
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,GAAY,MAAMK,6BAAA,CAAY,OAAO,CAAA;AAC3C,IAAA,IAAI,WAAW,OAAO,SAAA;AAEtB,IAAA,MAAM,IAAA,GAAO,MAAM,OAAA,CAAQ,IAAA,EAAK;AAChC,IAAA,MAAM,MAAA,GAASC,kCAAA,CAAiB,SAAA,CAAU,IAAI,CAAA;AAE9C,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,OAAON,2BAAA,CAAU,kBAAA,EAAoB,MAAA,CAAO,IAAA,CAAK,IAAI,CAAC,CAAA;AAAA,IACxD;AAEA,IAAA,MAAM,IAAA,GAAO,MAAMO,4BAAA,CAAW,MAAA,CAAO,IAAI,CAAA;AACzC,IAAA,OAAON,6BAAA,CAAY,IAAA,EAAM,KAAA,CAAA,EAAW,GAAG,CAAA;AAAA,EACzC,SAAS,KAAA,EAAO;AACd,IAAA,OAAA,CAAQ,KAAA,CAAM,oCAAoC,KAAK,CAAA;AACvD,IAAA,OAAOD,2BAAA,CAAU,gBAAA,EAAkB,uBAAA,EAAyB,GAAG,CAAA;AAAA,EACjE;AACF;AAEA,eAAsB,IAAI,OAAA,EAAkB;AAC1C,EAAA,IAAI;AACF,IAAA,MAAM,SAAA,GAAY,MAAMK,6BAAA,CAAY,OAAO,CAAA;AAC3C,IAAA,IAAI,WAAW,OAAO,SAAA;AAEtB,IAAA,MAAM,MAAA,GAASP,kCAAgB,OAAO,CAAA;AACtC,IAAA,MAAM,KAAK,MAAA,CAAO,EAAA;AAClB,IAAA,IAAI,CAAC,EAAA,EAAI,OAAOE,2BAAA,CAAU,cAAc,qBAAqB,CAAA;AAE7D,IAAA,MAAM,IAAA,GAAO,MAAM,OAAA,CAAQ,IAAA,EAAK;AAChC,IAAA,MAAM,MAAA,GAASQ,kCAAA,CAAiB,SAAA,CAAU,IAAI,CAAA;AAE9C,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,OAAOR,2BAAA,CAAU,kBAAA,EAAoB,MAAA,CAAO,IAAA,CAAK,IAAI,CAAC,CAAA;AAAA,IACxD;AAEA,IAAA,MAAM,IAAA,GAAO,MAAMS,4BAAA,CAAW,EAAA,EAAI,OAAO,IAAI,CAAA;AAC7C,IAAA,IAAI,CAAC,IAAA,EAAM,OAAOT,2BAAA,CAAU,WAAA,EAAa,kBAAkB,GAAG,CAAA;AAE9D,IAAA,OAAOC,8BAAY,IAAI,CAAA;AAAA,EACzB,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,OAAO,OAAA,EAAkB;AAC7C,EAAA,IAAI;AACF,IAAA,MAAM,SAAA,GAAY,MAAMK,6BAAA,CAAY,OAAO,CAAA;AAC3C,IAAA,IAAI,WAAW,OAAO,SAAA;AAEtB,IAAA,MAAM,MAAA,GAASP,kCAAgB,OAAO,CAAA;AACtC,IAAA,MAAM,KAAK,MAAA,CAAO,EAAA;AAClB,IAAA,IAAI,CAAC,EAAA,EAAI,OAAOE,2BAAA,CAAU,cAAc,qBAAqB,CAAA;AAE7D,IAAA,MAAM,OAAA,GAAU,MAAMU,4BAAA,CAAW,EAAE,CAAA;AACnC,IAAA,IAAI,CAAC,OAAA,EAAS,OAAOV,2BAAA,CAAU,WAAA,EAAa,kBAAkB,GAAG,CAAA;AAEjE,IAAA,OAAOC,6BAAA,CAAY,EAAE,OAAA,EAAS,IAAA,EAAM,CAAA;AAAA,EACtC,SAAS,KAAA,EAAO;AACd,IAAA,OAAA,CAAQ,KAAA,CAAM,sCAAsC,KAAK,CAAA;AACzD,IAAA,OAAOD,2BAAA,CAAU,gBAAA,EAAkB,uBAAA,EAAyB,GAAG,CAAA;AAAA,EACjE;AACF","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"]}
@@ -1,4 +1,4 @@
1
- import { A as ApiErrorResponse } from '../types-CBEEBR4A.cjs';
1
+ import { A as ApiErrorResponse } from '../types-Cu515Egx.cjs';
2
2
  import { NextResponse } from 'next/server';
3
3
  import 'zod';
4
4
  import 'mongodb';
@@ -1,4 +1,4 @@
1
- import { A as ApiErrorResponse } from '../types-CBEEBR4A.js';
1
+ import { A as ApiErrorResponse } from '../types-Cu515Egx.js';
2
2
  import { NextResponse } from 'next/server';
3
3
  import 'zod';
4
4
  import 'mongodb';
package/dist/api/posts.js CHANGED
@@ -1,6 +1,6 @@
1
- import { CreatePostSchema, UpdatePostSchema } from '../chunk-4PY224XM.js';
2
- import { getSearchParams, jsonError, jsonSuccess, parseIntParam, requireAuth } from '../chunk-JLPJKNRZ.js';
3
- import { getPostBySlug, getPostById, listPosts, createPost, updatePost, deletePost } from '../chunk-64HUVJOZ.js';
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;
@@ -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,YAAY,OAAO,CAAA;AACrC,IAAA,IAAI,WAAW,OAAO,SAAA;AAEtB,IAAA,MAAM,IAAA,GAAO,MAAM,OAAA,CAAQ,IAAA,EAAK;AAChC,IAAA,MAAM,MAAA,GAAS,gBAAA,CAAiB,SAAA,CAAU,IAAI,CAAA;AAE9C,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,IAAA,GAAO,MAAM,UAAA,CAAW,MAAA,CAAO,IAAI,CAAA;AACzC,IAAA,OAAO,WAAA,CAAY,IAAA,EAAM,KAAA,CAAA,EAAW,GAAG,CAAA;AAAA,EACzC,SAAS,KAAA,EAAO;AACd,IAAA,OAAA,CAAQ,KAAA,CAAM,oCAAoC,KAAK,CAAA;AACvD,IAAA,OAAO,SAAA,CAAU,gBAAA,EAAkB,uBAAA,EAAyB,GAAG,CAAA;AAAA,EACjE;AACF;AAEA,eAAsB,IAAI,OAAA,EAAkB;AAC1C,EAAA,IAAI;AACF,IAAA,MAAM,SAAA,GAAY,YAAY,OAAO,CAAA;AACrC,IAAA,IAAI,WAAW,OAAO,SAAA;AAEtB,IAAA,MAAM,MAAA,GAAS,gBAAgB,OAAO,CAAA;AACtC,IAAA,MAAM,KAAK,MAAA,CAAO,EAAA;AAClB,IAAA,IAAI,CAAC,EAAA,EAAI,OAAO,SAAA,CAAU,cAAc,qBAAqB,CAAA;AAE7D,IAAA,MAAM,IAAA,GAAO,MAAM,OAAA,CAAQ,IAAA,EAAK;AAChC,IAAA,MAAM,MAAA,GAAS,gBAAA,CAAiB,SAAA,CAAU,IAAI,CAAA;AAE9C,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,IAAA,GAAO,MAAM,UAAA,CAAW,EAAA,EAAI,OAAO,IAAI,CAAA;AAC7C,IAAA,IAAI,CAAC,IAAA,EAAM,OAAO,SAAA,CAAU,WAAA,EAAa,kBAAkB,GAAG,CAAA;AAE9D,IAAA,OAAO,YAAY,IAAI,CAAA;AAAA,EACzB,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,OAAO,OAAA,EAAkB;AAC7C,EAAA,IAAI;AACF,IAAA,MAAM,SAAA,GAAY,YAAY,OAAO,CAAA;AACrC,IAAA,IAAI,WAAW,OAAO,SAAA;AAEtB,IAAA,MAAM,MAAA,GAAS,gBAAgB,OAAO,CAAA;AACtC,IAAA,MAAM,KAAK,MAAA,CAAO,EAAA;AAClB,IAAA,IAAI,CAAC,EAAA,EAAI,OAAO,SAAA,CAAU,cAAc,qBAAqB,CAAA;AAE7D,IAAA,MAAM,OAAA,GAAU,MAAM,UAAA,CAAW,EAAE,CAAA;AACnC,IAAA,IAAI,CAAC,OAAA,EAAS,OAAO,SAAA,CAAU,WAAA,EAAa,kBAAkB,GAAG,CAAA;AAEjE,IAAA,OAAO,WAAA,CAAY,EAAE,OAAA,EAAS,IAAA,EAAM,CAAA;AAAA,EACtC,SAAS,KAAA,EAAO;AACd,IAAA,OAAA,CAAQ,KAAA,CAAM,sCAAsC,KAAK,CAAA;AACzD,IAAA,OAAO,SAAA,CAAU,gBAAA,EAAkB,uBAAA,EAAyB,GAAG,CAAA;AAAA,EACjE;AACF","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 = 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 = 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 = 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"]}
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 chunk6HKMZOI4_cjs = require('../chunk-6HKMZOI4.cjs');
4
- require('../chunk-U2ROR6AY.cjs');
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 chunk6HKMZOI4_cjs.generateRSSFeed();
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
@@ -1,5 +1,5 @@
1
- import { generateRSSFeed } from '../chunk-R6MO3QIP.js';
2
- import '../chunk-64HUVJOZ.js';
1
+ import { generateRSSFeed } from '../chunk-NSR7NYSB.js';
2
+ import '../chunk-JI2RK6KX.js';
3
3
  import { NextResponse } from 'next/server';
4
4
 
5
5
  async function GET() {
@@ -1,36 +1,36 @@
1
1
  'use strict';
2
2
 
3
- var chunkN5MKAD7J_cjs = require('../chunk-N5MKAD7J.cjs');
4
- var chunkKDZER3PU_cjs = require('../chunk-KDZER3PU.cjs');
5
- var chunkU2ROR6AY_cjs = require('../chunk-U2ROR6AY.cjs');
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 = chunkKDZER3PU_cjs.requireAuth(request);
10
+ const authError = await chunkYTJQ426D_cjs.requireAuth(request);
11
11
  if (authError) return authError;
12
- const settings = await chunkU2ROR6AY_cjs.getSettings();
13
- return chunkKDZER3PU_cjs.jsonSuccess(settings);
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 chunkKDZER3PU_cjs.jsonError("INTERNAL_ERROR", "Failed to fetch settings", 500);
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 = chunkKDZER3PU_cjs.requireAuth(request);
21
+ const authError = await chunkYTJQ426D_cjs.requireAuth(request);
22
22
  if (authError) return authError;
23
23
  const body = await request.json();
24
- const parsed = chunkN5MKAD7J_cjs.BlogSettingsSchema.partial().safeParse(body);
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 chunkKDZER3PU_cjs.jsonError("VALIDATION_ERROR", errors.join("; "));
27
+ return chunkYTJQ426D_cjs.jsonError("VALIDATION_ERROR", errors.join("; "));
28
28
  }
29
- const settings = await chunkU2ROR6AY_cjs.updateSettings(parsed.data);
30
- return chunkKDZER3PU_cjs.jsonSuccess(settings);
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 chunkKDZER3PU_cjs.jsonError("INTERNAL_ERROR", "Failed to update settings", 500);
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,GAAYA,8BAAY,OAAO,CAAA;AACrC,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,GAAYH,8BAAY,OAAO,CAAA;AACrC,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 = 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 = 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"]}
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"]}
@@ -1,5 +1,5 @@
1
1
  import * as next_server from 'next/server';
2
- import { A as ApiErrorResponse } from '../types-CBEEBR4A.cjs';
2
+ import { A as ApiErrorResponse } from '../types-Cu515Egx.cjs';
3
3
  import 'zod';
4
4
  import 'mongodb';
5
5
 
@@ -1,5 +1,5 @@
1
1
  import * as next_server from 'next/server';
2
- import { A as ApiErrorResponse } from '../types-CBEEBR4A.js';
2
+ import { A as ApiErrorResponse } from '../types-Cu515Egx.js';
3
3
  import 'zod';
4
4
  import 'mongodb';
5
5
 
@@ -1,11 +1,11 @@
1
- import { BlogSettingsSchema } from '../chunk-4PY224XM.js';
2
- import { requireAuth, jsonSuccess, jsonError } from '../chunk-JLPJKNRZ.js';
3
- import { getSettings, updateSettings } from '../chunk-64HUVJOZ.js';
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);
@@ -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,YAAY,OAAO,CAAA;AACrC,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,YAAY,OAAO,CAAA;AACrC,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 = 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 = 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"]}
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"]}
@@ -1,12 +1,12 @@
1
1
  'use strict';
2
2
 
3
- var chunkE2QLTHKN_cjs = require('../chunk-E2QLTHKN.cjs');
4
- require('../chunk-U2ROR6AY.cjs');
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 chunkE2QLTHKN_cjs.generateSitemap();
9
+ const xml = await chunkQBZLGBHQ_cjs.generateSitemap();
10
10
  return new server.NextResponse(xml, {
11
11
  status: 200,
12
12
  headers: {
@@ -1,5 +1,5 @@
1
- import { generateSitemap } from '../chunk-4NKOJYWJ.js';
2
- import '../chunk-64HUVJOZ.js';
1
+ import { generateSitemap } from '../chunk-OOUJYUGP.js';
2
+ import '../chunk-JI2RK6KX.js';
3
3
  import { NextResponse } from 'next/server';
4
4
 
5
5
  async function GET() {
@@ -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