@nextsparkjs/core 0.1.0-beta.194 → 0.1.0-beta.195

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 (338) hide show
  1. package/dist/components/app/guards/DeveloperGuard.d.ts +8 -1
  2. package/dist/components/app/guards/DeveloperGuard.d.ts.map +1 -1
  3. package/dist/components/app/guards/DeveloperGuard.js +2 -1
  4. package/dist/components/app/guards/SuperAdminGuard.d.ts +8 -1
  5. package/dist/components/app/guards/SuperAdminGuard.d.ts.map +1 -1
  6. package/dist/components/app/guards/SuperAdminGuard.js +2 -1
  7. package/dist/components/dashboard/block-editor/block-picker.d.ts.map +1 -1
  8. package/dist/components/dashboard/block-editor/block-picker.js +2 -1
  9. package/dist/components/dashboard/block-editor/builder-editor-view.d.ts.map +1 -1
  10. package/dist/components/dashboard/block-editor/builder-editor-view.js +39 -23
  11. package/dist/components/dashboard/block-editor/pattern-reference-preview.d.ts.map +1 -1
  12. package/dist/components/dashboard/block-editor/pattern-reference-preview.js +2 -1
  13. package/dist/components/dashboard/layouts/AuthGuard.d.ts.map +1 -1
  14. package/dist/components/dashboard/layouts/AuthGuard.js +3 -4
  15. package/dist/components/dashboard/layouts/AuthenticatedDashboardLayout.d.ts.map +1 -1
  16. package/dist/components/dashboard/layouts/AuthenticatedDashboardLayout.js +9 -10
  17. package/dist/components/dashboard/layouts/DashboardAuthLayout.d.ts.map +1 -1
  18. package/dist/components/dashboard/layouts/DashboardAuthLayout.js +3 -4
  19. package/dist/components/dashboard/layouts/DashboardAuthSkeleton.d.ts +2 -2
  20. package/dist/components/entities/wrappers/EntityDetailWrapper.d.ts.map +1 -1
  21. package/dist/components/entities/wrappers/EntityDetailWrapper.js +5 -2
  22. package/dist/components/entities/wrappers/EntityFormWrapper.d.ts.map +1 -1
  23. package/dist/components/entities/wrappers/EntityFormWrapper.js +5 -2
  24. package/dist/components/entities/wrappers/EntityListWrapper.d.ts.map +1 -1
  25. package/dist/components/entities/wrappers/EntityListWrapper.js +5 -2
  26. package/dist/components/ui/relation-display.d.ts.map +1 -1
  27. package/dist/components/ui/relation-display.js +2 -1
  28. package/dist/components/ui/user-display.d.ts.map +1 -1
  29. package/dist/components/ui/user-display.js +2 -1
  30. package/dist/emails/otp-verification.d.ts.map +1 -1
  31. package/dist/emails/otp-verification.js +5 -3
  32. package/dist/emails/reset-password.d.ts.map +1 -1
  33. package/dist/emails/reset-password.js +5 -3
  34. package/dist/emails/team-invitation.d.ts.map +1 -1
  35. package/dist/emails/team-invitation.js +3 -2
  36. package/dist/emails/verify-email.d.ts.map +1 -1
  37. package/dist/emails/verify-email.js +5 -3
  38. package/dist/hooks/useAuth.d.ts.map +1 -1
  39. package/dist/hooks/useAuth.js +21 -4
  40. package/dist/hooks/usePatternUsages.d.ts.map +1 -1
  41. package/dist/hooks/usePatternUsages.js +3 -2
  42. package/dist/lib/api/auth.d.ts +2 -0
  43. package/dist/lib/api/auth.d.ts.map +1 -1
  44. package/dist/lib/api/auth.js +10 -10
  45. package/dist/lib/api/client-headers.d.ts +11 -0
  46. package/dist/lib/api/client-headers.d.ts.map +1 -0
  47. package/dist/lib/api/client-headers.js +12 -0
  48. package/dist/lib/api/client-ip.d.ts +59 -0
  49. package/dist/lib/api/client-ip.d.ts.map +1 -0
  50. package/dist/lib/api/client-ip.js +91 -0
  51. package/dist/lib/api/cors-response.d.ts +54 -0
  52. package/dist/lib/api/cors-response.d.ts.map +1 -0
  53. package/dist/lib/api/cors-response.js +88 -0
  54. package/dist/lib/api/entities.d.ts.map +1 -1
  55. package/dist/lib/api/entities.js +4 -3
  56. package/dist/lib/api/entity/audit-log.d.ts.map +1 -1
  57. package/dist/lib/api/entity/audit-log.js +2 -1
  58. package/dist/lib/api/entity/generic-handler.d.ts.map +1 -1
  59. package/dist/lib/api/entity/generic-handler.js +23 -5
  60. package/dist/lib/api/helpers.d.ts +8 -2
  61. package/dist/lib/api/helpers.d.ts.map +1 -1
  62. package/dist/lib/api/helpers.js +27 -81
  63. package/dist/lib/api/keys.d.ts +6 -0
  64. package/dist/lib/api/keys.d.ts.map +1 -1
  65. package/dist/lib/api/keys.js +7 -1
  66. package/dist/lib/api/rate-limit.d.ts +4 -0
  67. package/dist/lib/api/rate-limit.d.ts.map +1 -1
  68. package/dist/lib/api/rate-limit.js +16 -40
  69. package/dist/lib/api/request-origin.d.ts +16 -7
  70. package/dist/lib/api/request-origin.d.ts.map +1 -1
  71. package/dist/lib/api/request-origin.js +43 -20
  72. package/dist/lib/auth/load-login-page.d.ts +10 -0
  73. package/dist/lib/auth/load-login-page.d.ts.map +1 -0
  74. package/dist/lib/auth/load-login-page.js +7 -0
  75. package/dist/lib/auth/runtime-readiness.d.ts.map +1 -1
  76. package/dist/lib/auth/runtime-readiness.js +2 -0
  77. package/dist/lib/auth/security-notifications/device-fingerprint.d.ts +1 -8
  78. package/dist/lib/auth/security-notifications/device-fingerprint.d.ts.map +1 -1
  79. package/dist/lib/auth/security-notifications/device-fingerprint.js +2 -12
  80. package/dist/lib/auth-email-callbacks.js +3 -3
  81. package/dist/lib/auth.d.ts.map +1 -1
  82. package/dist/lib/auth.js +7 -2
  83. package/dist/lib/config/config-client.d.ts.map +1 -1
  84. package/dist/lib/config/config-client.js +1 -1
  85. package/dist/lib/config/config-sync.d.ts.map +1 -1
  86. package/dist/lib/config/config-sync.js +1 -1
  87. package/dist/lib/config/public-config-client.d.ts +1 -0
  88. package/dist/lib/config/public-config-client.d.ts.map +1 -1
  89. package/dist/lib/config/public-config-client.js +3 -1
  90. package/dist/lib/config/types.d.ts +2 -0
  91. package/dist/lib/config/types.d.ts.map +1 -1
  92. package/dist/lib/constants/reserved-slugs.d.ts +17 -8
  93. package/dist/lib/constants/reserved-slugs.d.ts.map +1 -1
  94. package/dist/lib/constants/reserved-slugs.js +16 -52
  95. package/dist/lib/db.d.ts.map +1 -1
  96. package/dist/lib/db.js +9 -3
  97. package/dist/lib/entities/external-api-generator.d.ts.map +1 -1
  98. package/dist/lib/entities/external-api-generator.js +2 -4
  99. package/dist/lib/entities/public-slug.d.ts +46 -0
  100. package/dist/lib/entities/public-slug.d.ts.map +1 -0
  101. package/dist/lib/entities/public-slug.js +39 -0
  102. package/dist/routes/(auth)/signup/page.cc.d.ts +3 -8
  103. package/dist/routes/(auth)/signup/page.cc.d.ts.map +1 -1
  104. package/dist/routes/(auth)/signup/page.cc.js +7 -1
  105. package/dist/routes/(auth)/verify-email/page.d.ts.map +1 -1
  106. package/dist/routes/(auth)/verify-email/page.js +2 -1
  107. package/dist/routes/(public)/page.cc.d.ts +3 -0
  108. package/dist/routes/(public)/page.cc.d.ts.map +1 -0
  109. package/dist/routes/(public)/page.cc.js +3 -0
  110. package/dist/routes/_internal/area-access.cc.d.ts +21 -0
  111. package/dist/routes/_internal/area-access.cc.d.ts.map +1 -0
  112. package/dist/routes/_internal/area-access.cc.js +19 -0
  113. package/dist/routes/_internal/auth-layout.d.ts.map +1 -1
  114. package/dist/routes/_internal/auth-layout.js +3 -2
  115. package/dist/routes/_internal/dashboard-main-shared.d.ts +7 -0
  116. package/dist/routes/_internal/dashboard-main-shared.d.ts.map +1 -0
  117. package/dist/routes/_internal/dashboard-main-shared.js +49 -0
  118. package/dist/routes/_internal/default-auth-layout.d.ts.map +1 -1
  119. package/dist/routes/_internal/default-auth-layout.js +3 -2
  120. package/dist/routes/_internal/devtools-layout.cc.d.ts +3 -2
  121. package/dist/routes/_internal/devtools-layout.cc.d.ts.map +1 -1
  122. package/dist/routes/_internal/devtools-layout.cc.js +1 -1
  123. package/dist/routes/_internal/devtools-layout.d.ts +7 -2
  124. package/dist/routes/_internal/devtools-layout.d.ts.map +1 -1
  125. package/dist/routes/_internal/devtools-layout.js +4 -4
  126. package/dist/routes/_internal/entity-detail-route.cc.d.ts +8 -0
  127. package/dist/routes/_internal/entity-detail-route.cc.d.ts.map +1 -0
  128. package/dist/routes/_internal/entity-detail-route.cc.js +5 -0
  129. package/dist/routes/_internal/entity-edit-route.cc.d.ts +8 -0
  130. package/dist/routes/_internal/entity-edit-route.cc.d.ts.map +1 -0
  131. package/dist/routes/_internal/entity-edit-route.cc.js +5 -0
  132. package/dist/routes/_internal/public-archive-route.d.ts +1 -1
  133. package/dist/routes/_internal/public-archive-route.d.ts.map +1 -1
  134. package/dist/routes/_internal/public-archive-route.js +8 -3
  135. package/dist/routes/_internal/public-item-route.cc.d.ts +5 -1
  136. package/dist/routes/_internal/public-item-route.cc.d.ts.map +1 -1
  137. package/dist/routes/_internal/public-item-route.cc.js +2 -1
  138. package/dist/routes/_internal/public-item-route.d.ts +7 -0
  139. package/dist/routes/_internal/public-item-route.d.ts.map +1 -1
  140. package/dist/routes/_internal/public-item-route.js +6 -1
  141. package/dist/routes/_internal/superadmin-layout.cc.d.ts +2 -1
  142. package/dist/routes/_internal/superadmin-layout.cc.d.ts.map +1 -1
  143. package/dist/routes/_internal/superadmin-layout.cc.js +1 -1
  144. package/dist/routes/_internal/superadmin-layout.d.ts +7 -2
  145. package/dist/routes/_internal/superadmin-layout.d.ts.map +1 -1
  146. package/dist/routes/_internal/superadmin-layout.js +6 -6
  147. package/dist/routes/_internal/suspended-route.d.ts +16 -0
  148. package/dist/routes/_internal/suspended-route.d.ts.map +1 -0
  149. package/dist/routes/_internal/suspended-route.js +7 -0
  150. package/dist/routes/api/auth/[...all]/route.d.ts.map +1 -1
  151. package/dist/routes/api/auth/[...all]/route.js +4 -12
  152. package/dist/routes/api/csp-report/route.d.ts.map +1 -1
  153. package/dist/routes/api/csp-report/route.js +2 -13
  154. package/dist/routes/api/devtools/config/entities/route.d.ts +2 -0
  155. package/dist/routes/api/devtools/config/entities/route.d.ts.map +1 -1
  156. package/dist/routes/api/devtools/config/entities/route.js +2 -0
  157. package/dist/routes/api/devtools/config/theme/route.d.ts +2 -0
  158. package/dist/routes/api/devtools/config/theme/route.d.ts.map +1 -1
  159. package/dist/routes/api/devtools/config/theme/route.js +2 -0
  160. package/dist/routes/api/devtools/tests/[...path]/route.d.ts +2 -0
  161. package/dist/routes/api/devtools/tests/[...path]/route.d.ts.map +1 -1
  162. package/dist/routes/api/devtools/tests/[...path]/route.js +2 -0
  163. package/dist/routes/api/devtools/tests/route.d.ts +2 -0
  164. package/dist/routes/api/devtools/tests/route.d.ts.map +1 -1
  165. package/dist/routes/api/devtools/tests/route.js +2 -0
  166. package/dist/routes/api/health/route.d.ts +2 -0
  167. package/dist/routes/api/health/route.d.ts.map +1 -1
  168. package/dist/routes/api/health/route.js +2 -0
  169. package/dist/routes/api/internal/user-metadata/route.d.ts +2 -0
  170. package/dist/routes/api/internal/user-metadata/route.d.ts.map +1 -1
  171. package/dist/routes/api/internal/user-metadata/route.js +2 -0
  172. package/dist/routes/api/mcp/route.d.ts +2 -0
  173. package/dist/routes/api/mcp/route.d.ts.map +1 -1
  174. package/dist/routes/api/mcp/route.js +2 -0
  175. package/dist/routes/api/superadmin/subscriptions/route.d.ts +2 -0
  176. package/dist/routes/api/superadmin/subscriptions/route.d.ts.map +1 -1
  177. package/dist/routes/api/superadmin/subscriptions/route.js +2 -0
  178. package/dist/routes/api/superadmin/teams/[teamId]/route.d.ts +2 -0
  179. package/dist/routes/api/superadmin/teams/[teamId]/route.d.ts.map +1 -1
  180. package/dist/routes/api/superadmin/teams/[teamId]/route.js +2 -0
  181. package/dist/routes/api/superadmin/teams/route.d.ts +2 -0
  182. package/dist/routes/api/superadmin/teams/route.d.ts.map +1 -1
  183. package/dist/routes/api/superadmin/teams/route.js +2 -0
  184. package/dist/routes/api/superadmin/users/[userId]/route.d.ts +2 -0
  185. package/dist/routes/api/superadmin/users/[userId]/route.d.ts.map +1 -1
  186. package/dist/routes/api/superadmin/users/[userId]/route.js +2 -0
  187. package/dist/routes/api/superadmin/users/route.d.ts +2 -0
  188. package/dist/routes/api/superadmin/users/route.d.ts.map +1 -1
  189. package/dist/routes/api/superadmin/users/route.js +2 -0
  190. package/dist/routes/api/user/delete-account/route.d.ts +2 -0
  191. package/dist/routes/api/user/delete-account/route.d.ts.map +1 -1
  192. package/dist/routes/api/user/delete-account/route.js +2 -0
  193. package/dist/routes/api/user/plan-flags/route.d.ts +2 -0
  194. package/dist/routes/api/user/plan-flags/route.d.ts.map +1 -1
  195. package/dist/routes/api/user/plan-flags/route.js +2 -0
  196. package/dist/routes/api/user/profile/route.d.ts +2 -0
  197. package/dist/routes/api/user/profile/route.d.ts.map +1 -1
  198. package/dist/routes/api/user/profile/route.js +4 -3
  199. package/dist/routes/api/v1/[entity]/[id]/child/[childType]/[childId]/route.d.ts +2 -0
  200. package/dist/routes/api/v1/[entity]/[id]/child/[childType]/[childId]/route.d.ts.map +1 -1
  201. package/dist/routes/api/v1/[entity]/[id]/child/[childType]/[childId]/route.js +2 -0
  202. package/dist/routes/api/v1/[entity]/[id]/child/[childType]/route.d.ts +2 -0
  203. package/dist/routes/api/v1/[entity]/[id]/child/[childType]/route.d.ts.map +1 -1
  204. package/dist/routes/api/v1/[entity]/[id]/child/[childType]/route.js +2 -0
  205. package/dist/routes/api/v1/billing/cancel/route.d.ts +2 -0
  206. package/dist/routes/api/v1/billing/cancel/route.d.ts.map +1 -1
  207. package/dist/routes/api/v1/billing/cancel/route.js +2 -0
  208. package/dist/routes/api/v1/billing/change-plan/route.d.ts +2 -0
  209. package/dist/routes/api/v1/billing/change-plan/route.d.ts.map +1 -1
  210. package/dist/routes/api/v1/billing/change-plan/route.js +2 -0
  211. package/dist/routes/api/v1/billing/check-action/route.d.ts +2 -0
  212. package/dist/routes/api/v1/billing/check-action/route.d.ts.map +1 -1
  213. package/dist/routes/api/v1/billing/check-action/route.js +2 -0
  214. package/dist/routes/api/v1/billing/checkout/route.d.ts +2 -0
  215. package/dist/routes/api/v1/billing/checkout/route.d.ts.map +1 -1
  216. package/dist/routes/api/v1/billing/checkout/route.js +2 -0
  217. package/dist/routes/api/v1/billing/plans/route.d.ts +2 -0
  218. package/dist/routes/api/v1/billing/plans/route.d.ts.map +1 -1
  219. package/dist/routes/api/v1/billing/plans/route.js +2 -0
  220. package/dist/routes/api/v1/billing/portal/route.d.ts +2 -0
  221. package/dist/routes/api/v1/billing/portal/route.d.ts.map +1 -1
  222. package/dist/routes/api/v1/billing/portal/route.js +2 -0
  223. package/dist/routes/api/v1/blocks/[slug]/route.d.ts +2 -0
  224. package/dist/routes/api/v1/blocks/[slug]/route.d.ts.map +1 -1
  225. package/dist/routes/api/v1/blocks/[slug]/route.js +2 -0
  226. package/dist/routes/api/v1/blocks/route.d.ts +2 -0
  227. package/dist/routes/api/v1/blocks/route.d.ts.map +1 -1
  228. package/dist/routes/api/v1/blocks/route.js +2 -0
  229. package/dist/routes/api/v1/blocks/validate/route.d.ts +2 -0
  230. package/dist/routes/api/v1/blocks/validate/route.d.ts.map +1 -1
  231. package/dist/routes/api/v1/blocks/validate/route.js +2 -0
  232. package/dist/routes/api/v1/devtools/blocks/route.d.ts +2 -1
  233. package/dist/routes/api/v1/devtools/blocks/route.d.ts.map +1 -1
  234. package/dist/routes/api/v1/devtools/blocks/route.js +2 -9
  235. package/dist/routes/api/v1/devtools/docs/route.d.ts +2 -0
  236. package/dist/routes/api/v1/devtools/docs/route.d.ts.map +1 -1
  237. package/dist/routes/api/v1/devtools/docs/route.js +2 -0
  238. package/dist/routes/api/v1/devtools/features/route.d.ts +2 -1
  239. package/dist/routes/api/v1/devtools/features/route.d.ts.map +1 -1
  240. package/dist/routes/api/v1/devtools/features/route.js +2 -9
  241. package/dist/routes/api/v1/devtools/flows/route.d.ts +2 -1
  242. package/dist/routes/api/v1/devtools/flows/route.d.ts.map +1 -1
  243. package/dist/routes/api/v1/devtools/flows/route.js +2 -9
  244. package/dist/routes/api/v1/devtools/scheduled-actions/route.d.ts +2 -1
  245. package/dist/routes/api/v1/devtools/scheduled-actions/route.d.ts.map +1 -1
  246. package/dist/routes/api/v1/devtools/scheduled-actions/route.js +2 -9
  247. package/dist/routes/api/v1/devtools/scheduled-actions/run/route.d.ts +2 -1
  248. package/dist/routes/api/v1/devtools/scheduled-actions/run/route.d.ts.map +1 -1
  249. package/dist/routes/api/v1/devtools/scheduled-actions/run/route.js +2 -9
  250. package/dist/routes/api/v1/devtools/testing/route.d.ts +2 -1
  251. package/dist/routes/api/v1/devtools/testing/route.d.ts.map +1 -1
  252. package/dist/routes/api/v1/devtools/testing/route.js +2 -9
  253. package/dist/routes/api/v1/media/[id]/route.d.ts +2 -0
  254. package/dist/routes/api/v1/media/[id]/route.d.ts.map +1 -1
  255. package/dist/routes/api/v1/media/[id]/route.js +2 -0
  256. package/dist/routes/api/v1/media/[id]/tags/route.d.ts +2 -0
  257. package/dist/routes/api/v1/media/[id]/tags/route.d.ts.map +1 -1
  258. package/dist/routes/api/v1/media/[id]/tags/route.js +2 -0
  259. package/dist/routes/api/v1/media/check-duplicates/route.d.ts +2 -0
  260. package/dist/routes/api/v1/media/check-duplicates/route.d.ts.map +1 -1
  261. package/dist/routes/api/v1/media/check-duplicates/route.js +2 -0
  262. package/dist/routes/api/v1/media/route.d.ts +2 -0
  263. package/dist/routes/api/v1/media/route.d.ts.map +1 -1
  264. package/dist/routes/api/v1/media/route.js +2 -0
  265. package/dist/routes/api/v1/media/upload/route.d.ts +2 -0
  266. package/dist/routes/api/v1/media/upload/route.d.ts.map +1 -1
  267. package/dist/routes/api/v1/media/upload/route.js +2 -0
  268. package/dist/routes/api/v1/media-tags/route.d.ts +2 -0
  269. package/dist/routes/api/v1/media-tags/route.d.ts.map +1 -1
  270. package/dist/routes/api/v1/media-tags/route.js +2 -0
  271. package/dist/routes/api/v1/post-categories/[id]/route.d.ts +2 -0
  272. package/dist/routes/api/v1/post-categories/[id]/route.d.ts.map +1 -1
  273. package/dist/routes/api/v1/post-categories/[id]/route.js +2 -0
  274. package/dist/routes/api/v1/post-categories/route.d.ts +2 -0
  275. package/dist/routes/api/v1/post-categories/route.d.ts.map +1 -1
  276. package/dist/routes/api/v1/post-categories/route.js +2 -0
  277. package/dist/routes/api/v1/teams/[teamId]/members/route.js +2 -2
  278. package/dist/routes/api/v1/teams/[teamId]/subscription/route.d.ts +2 -0
  279. package/dist/routes/api/v1/teams/[teamId]/subscription/route.d.ts.map +1 -1
  280. package/dist/routes/api/v1/teams/[teamId]/subscription/route.js +2 -0
  281. package/dist/routes/api/v1/teams/[teamId]/usage/[limitSlug]/route.d.ts +2 -0
  282. package/dist/routes/api/v1/teams/[teamId]/usage/[limitSlug]/route.d.ts.map +1 -1
  283. package/dist/routes/api/v1/teams/[teamId]/usage/[limitSlug]/route.js +2 -0
  284. package/dist/routes/api/v1/users/[id]/route.d.ts.map +1 -1
  285. package/dist/routes/api/v1/users/[id]/route.js +3 -2
  286. package/dist/routes/api/v1/users/docs.md +34 -19
  287. package/dist/routes/api/v1/users/me/route.d.ts +6 -0
  288. package/dist/routes/api/v1/users/me/route.d.ts.map +1 -0
  289. package/dist/routes/api/v1/users/me/route.js +5 -0
  290. package/dist/routes/api/v1/users/presets.ts +2 -2
  291. package/dist/routes/dashboard/(main)/layout.cc.d.ts +4 -0
  292. package/dist/routes/dashboard/(main)/layout.cc.d.ts.map +1 -0
  293. package/dist/routes/dashboard/(main)/layout.cc.js +10 -0
  294. package/dist/routes/dashboard/(main)/layout.d.ts.map +1 -1
  295. package/dist/routes/dashboard/(main)/layout.js +3 -44
  296. package/dist/routes/dashboard/permission-denied/page.d.ts +1 -1
  297. package/dist/routes/dashboard/permission-denied/page.d.ts.map +1 -1
  298. package/dist/routes/dashboard/permission-denied/page.js +5 -1
  299. package/dist/routes/devtools/layout.cc.d.ts.map +1 -1
  300. package/dist/routes/devtools/layout.cc.js +5 -1
  301. package/dist/routes/manifest.json +10 -0
  302. package/dist/routes/robots.d.ts +10 -0
  303. package/dist/routes/robots.d.ts.map +1 -0
  304. package/dist/routes/robots.js +10 -0
  305. package/dist/routes/superadmin/layout.cc.d.ts.map +1 -1
  306. package/dist/routes/superadmin/layout.cc.js +5 -1
  307. package/dist/routes/variants.json +12 -2
  308. package/dist/templates/next.config.mjs +2 -29
  309. package/dist/templates/projects/blog/api/authors/[username]/route.ts +3 -0
  310. package/dist/templates/projects/blog/api/authors/route.ts +3 -0
  311. package/dist/templates/projects/blog/api/posts/public/route.ts +3 -0
  312. package/dist/templates/proxy.ts +12 -1
  313. package/dist/templates/public/favicon.ico +0 -0
  314. package/package.json +2 -2
  315. package/scripts/build/registry/__tests__/api-docs-colocated.test.mjs +3 -0
  316. package/scripts/build/registry/__tests__/billing-registry.test.mjs +50 -1
  317. package/scripts/build/registry/__tests__/block-registry.test.mjs +3 -0
  318. package/scripts/build/registry/__tests__/icons-discovery.test.mjs +3 -0
  319. package/scripts/build/registry/__tests__/quiet-console.mjs +17 -0
  320. package/scripts/build/registry/__tests__/safe-fs.test.mjs +3 -0
  321. package/scripts/build/registry/__tests__/team-roles.test.mjs +3 -0
  322. package/scripts/build/registry/discovery/permissions.test.mjs +3 -0
  323. package/scripts/build/registry/discovery/plugin-capabilities.mjs +2 -2
  324. package/scripts/build/registry/generators/billing-registry.mjs +7 -3
  325. package/scripts/build/registry/host/README.md +25 -1
  326. package/scripts/build/registry/host/__tests__/host-area-access.test.mjs +32 -0
  327. package/scripts/build/registry/host/__tests__/host-entities.test.mjs +32 -1
  328. package/scripts/build/registry/host/__tests__/host-plan.test.mjs +12 -2
  329. package/scripts/build/registry/host/entity-routes.mjs +9 -3
  330. package/scripts/build/registry/host/static-imports.mjs +4 -0
  331. package/scripts/build/routes-manifest.mjs +13 -1
  332. package/scripts/db/ssl-config.mjs +12 -1
  333. package/templates/next.config.mjs +2 -29
  334. package/templates/projects/blog/api/authors/[username]/route.ts +3 -0
  335. package/templates/projects/blog/api/authors/route.ts +3 -0
  336. package/templates/projects/blog/api/posts/public/route.ts +3 -0
  337. package/templates/proxy.ts +12 -1
  338. package/templates/public/favicon.ico +0 -0
@@ -8,6 +8,7 @@ import {
8
8
  import { queryWithRLS } from "@nextsparkjs/core/lib/db";
9
9
  import { getAllRegisteredActions } from "@nextsparkjs/core/lib/scheduled-actions/registry";
10
10
  import { withRateLimitTier } from "@nextsparkjs/core/lib/api/rate-limit";
11
+ import { corsPreflight } from "@nextsparkjs/core/lib/api/cors-response";
11
12
  import { scheduleAction } from "@nextsparkjs/core/lib/scheduled-actions/scheduler";
12
13
  export const GET = withRateLimitTier(async (request) => {
13
14
  var _a, _b;
@@ -169,12 +170,4 @@ export const POST = withRateLimitTier(async (request) => {
169
170
  }
170
171
  });
171
172
  }, "write");
172
- export async function OPTIONS() {
173
- return new NextResponse(null, {
174
- status: 204,
175
- headers: {
176
- "Access-Control-Allow-Methods": "GET, POST, OPTIONS",
177
- "Access-Control-Allow-Headers": "Content-Type, Authorization, x-api-key"
178
- }
179
- });
180
- }
173
+ export const OPTIONS = corsPreflight;
@@ -7,6 +7,7 @@
7
7
  * Requires the developer role.
8
8
  */
9
9
  import { NextRequest, NextResponse } from 'next/server';
10
+ import { corsPreflight } from '@nextsparkjs/core/lib/api/cors-response';
10
11
  export declare const POST: (request: NextRequest) => Promise<NextResponse>;
11
- export declare function OPTIONS(): Promise<NextResponse<unknown>>;
12
+ export declare const OPTIONS: typeof corsPreflight;
12
13
  //# sourceMappingURL=route.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"route.d.ts","sourceRoot":"","sources":["../../../../../../../src/routes/api/v1/devtools/scheduled-actions/run/route.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAYvD,eAAO,MAAM,IAAI,iDA+EN,CAAC;AAEZ,wBAAsB,OAAO,mCAQ5B"}
1
+ {"version":3,"file":"route.d.ts","sourceRoot":"","sources":["../../../../../../../src/routes/api/v1/devtools/scheduled-actions/run/route.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAUvD,OAAO,EAAE,aAAa,EAAE,MAAM,yCAAyC,CAAA;AAGvE,eAAO,MAAM,IAAI,iDA+EN,CAAC;AAEZ,eAAO,MAAM,OAAO,sBAAgB,CAAA"}
@@ -7,6 +7,7 @@ import {
7
7
  } from "@nextsparkjs/core/lib/api/auth/devtools-auth";
8
8
  import { queryWithRLS } from "@nextsparkjs/core/lib/db";
9
9
  import { withRateLimitTier } from "@nextsparkjs/core/lib/api/rate-limit";
10
+ import { corsPreflight } from "@nextsparkjs/core/lib/api/cors-response";
10
11
  import { executeAction } from "@nextsparkjs/core/lib/scheduled-actions/processor";
11
12
  export const POST = withRateLimitTier(async (request) => {
12
13
  const authResult = await authenticateRequest(request, { requiredScope: "admin:devtools" });
@@ -71,12 +72,4 @@ export const POST = withRateLimitTier(async (request) => {
71
72
  }, { status: 500 });
72
73
  }
73
74
  }, "write");
74
- export async function OPTIONS() {
75
- return new NextResponse(null, {
76
- status: 204,
77
- headers: {
78
- "Access-Control-Allow-Methods": "POST, OPTIONS",
79
- "Access-Control-Allow-Headers": "Content-Type, Authorization, x-api-key"
80
- }
81
- });
82
- }
75
+ export const OPTIONS = corsPreflight;
@@ -7,6 +7,7 @@
7
7
  * Requires the developer role.
8
8
  */
9
9
  import { NextRequest, NextResponse } from 'next/server';
10
+ import { corsPreflight } from '@nextsparkjs/core/lib/api/cors-response';
10
11
  export declare const GET: (request: NextRequest) => Promise<NextResponse>;
11
- export declare function OPTIONS(): Promise<NextResponse<unknown>>;
12
+ export declare const OPTIONS: typeof corsPreflight;
12
13
  //# sourceMappingURL=route.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"route.d.ts","sourceRoot":"","sources":["../../../../../../src/routes/api/v1/devtools/testing/route.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAevD,eAAO,MAAM,GAAG,iDAiDN,CAAC;AAEX,wBAAsB,OAAO,mCAQ5B"}
1
+ {"version":3,"file":"route.d.ts","sourceRoot":"","sources":["../../../../../../src/routes/api/v1/devtools/testing/route.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAcvD,OAAO,EAAE,aAAa,EAAE,MAAM,yCAAyC,CAAA;AAEvE,eAAO,MAAM,GAAG,iDAiDN,CAAC;AAEX,eAAO,MAAM,OAAO,sBAAgB,CAAA"}
@@ -12,6 +12,7 @@ import {
12
12
  FLOW_REGISTRY
13
13
  } from "@nextsparkjs/registries/testing-registry";
14
14
  import { withRateLimitTier } from "@nextsparkjs/core/lib/api/rate-limit";
15
+ import { corsPreflight } from "@nextsparkjs/core/lib/api/cors-response";
15
16
  export const GET = withRateLimitTier(async (request) => {
16
17
  const authResult = await authenticateRequest(request, { requiredScope: "admin:devtools" });
17
18
  if (!authResult.success) {
@@ -53,12 +54,4 @@ export const GET = withRateLimitTier(async (request) => {
53
54
  }
54
55
  });
55
56
  }, "read");
56
- export async function OPTIONS() {
57
- return new NextResponse(null, {
58
- status: 204,
59
- headers: {
60
- "Access-Control-Allow-Methods": "GET, OPTIONS",
61
- "Access-Control-Allow-Headers": "Content-Type, Authorization, x-api-key"
62
- }
63
- });
64
- }
57
+ export const OPTIONS = corsPreflight;
@@ -1,4 +1,5 @@
1
1
  import { NextRequest } from 'next/server';
2
+ import { corsPreflight } from '@nextsparkjs/core/lib/api/cors-response';
2
3
  /**
3
4
  * GET /api/v1/media/:id
4
5
  *
@@ -44,4 +45,5 @@ export declare const DELETE: (request: NextRequest, args_0: {
44
45
  id: string;
45
46
  }>;
46
47
  }) => Promise<import("next/server").NextResponse>;
48
+ export declare const OPTIONS: typeof corsPreflight;
47
49
  //# sourceMappingURL=route.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"route.d.ts","sourceRoot":"","sources":["../../../../../../src/routes/api/v1/media/[id]/route.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AASzC;;;;;;;GAOG;AACH,eAAO,MAAM,GAAG;YAEQ,OAAO,CAAC;QAAE,EAAE,EAAE,MAAM,CAAA;KAAE,CAAC;iDAmCrC,CAAA;AAEV;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,KAAK;YAEM,OAAO,CAAC;QAAE,EAAE,EAAE,MAAM,CAAA;KAAE,CAAC;iDAgDpC,CAAA;AAEX;;;;;;;;GAQG;AACH,eAAO,MAAM,MAAM;YAEK,OAAO,CAAC;QAAE,EAAE,EAAE,MAAM,CAAA;KAAE,CAAC;iDAmCpC,CAAA"}
1
+ {"version":3,"file":"route.d.ts","sourceRoot":"","sources":["../../../../../../src/routes/api/v1/media/[id]/route.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AAMzC,OAAO,EAAE,aAAa,EAAE,MAAM,yCAAyC,CAAA;AAIvE;;;;;;;GAOG;AACH,eAAO,MAAM,GAAG;YAEQ,OAAO,CAAC;QAAE,EAAE,EAAE,MAAM,CAAA;KAAE,CAAC;iDAmCrC,CAAA;AAEV;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,KAAK;YAEM,OAAO,CAAC;QAAE,EAAE,EAAE,MAAM,CAAA;KAAE,CAAC;iDAgDpC,CAAA;AAEX;;;;;;;;GAQG;AACH,eAAO,MAAM,MAAM;YAEK,OAAO,CAAC;QAAE,EAAE,EAAE,MAAM,CAAA;KAAE,CAAC;iDAmCpC,CAAA;AAEX,eAAO,MAAM,OAAO,sBAAgB,CAAA"}
@@ -3,6 +3,7 @@ import { createApiResponse, createApiError } from "@nextsparkjs/core/lib/api/hel
3
3
  import { API_ERROR_CODES } from "@nextsparkjs/core/lib/api/api-error";
4
4
  import { checkPermission } from "@nextsparkjs/core/lib/permissions/check";
5
5
  import { withRateLimitTier } from "@nextsparkjs/core/lib/api/rate-limit";
6
+ import { corsPreflight } from "@nextsparkjs/core/lib/api/cors-response";
6
7
  import { MediaService } from "@nextsparkjs/core/lib/services/media.service";
7
8
  import { updateMediaSchema } from "@nextsparkjs/core/lib/media/schemas";
8
9
  export const GET = withRateLimitTier(async (request, { params }) => {
@@ -84,3 +85,4 @@ export const DELETE = withRateLimitTier(async (request, { params }) => {
84
85
  return createApiError("Failed to delete media", 500);
85
86
  }
86
87
  }, "write");
88
+ export const OPTIONS = corsPreflight;
@@ -1,4 +1,5 @@
1
1
  import { NextRequest } from 'next/server';
2
+ import { corsPreflight } from '@nextsparkjs/core/lib/api/cors-response';
2
3
  /**
3
4
  * GET /api/v1/media/{id}/tags
4
5
  *
@@ -42,4 +43,5 @@ export declare const DELETE: (request: NextRequest, args_0: {
42
43
  id: string;
43
44
  }>;
44
45
  }) => Promise<import("next/server").NextResponse>;
46
+ export declare const OPTIONS: typeof corsPreflight;
45
47
  //# sourceMappingURL=route.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"route.d.ts","sourceRoot":"","sources":["../../../../../../../src/routes/api/v1/media/[id]/tags/route.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AAiBzC;;;;GAIG;AACH,eAAO,MAAM,GAAG;YAEQ,OAAO,CAAC;QAAE,EAAE,EAAE,MAAM,CAAA;KAAE,CAAC;iDAiCrC,CAAA;AAEV;;;;;GAKG;AACH,eAAO,MAAM,IAAI;YAEO,OAAO,CAAC;QAAE,EAAE,EAAE,MAAM,CAAA;KAAE,CAAC;iDA0CpC,CAAA;AAEX;;;;;GAKG;AACH,eAAO,MAAM,GAAG;YAEQ,OAAO,CAAC;QAAE,EAAE,EAAE,MAAM,CAAA;KAAE,CAAC;iDA0CpC,CAAA;AAEX;;;;;GAKG;AACH,eAAO,MAAM,MAAM;YAEK,OAAO,CAAC;QAAE,EAAE,EAAE,MAAM,CAAA;KAAE,CAAC;iDAwCpC,CAAA"}
1
+ {"version":3,"file":"route.d.ts","sourceRoot":"","sources":["../../../../../../../src/routes/api/v1/media/[id]/tags/route.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AAMzC,OAAO,EAAE,aAAa,EAAE,MAAM,yCAAyC,CAAA;AAYvE;;;;GAIG;AACH,eAAO,MAAM,GAAG;YAEQ,OAAO,CAAC;QAAE,EAAE,EAAE,MAAM,CAAA;KAAE,CAAC;iDAiCrC,CAAA;AAEV;;;;;GAKG;AACH,eAAO,MAAM,IAAI;YAEO,OAAO,CAAC;QAAE,EAAE,EAAE,MAAM,CAAA;KAAE,CAAC;iDA0CpC,CAAA;AAEX;;;;;GAKG;AACH,eAAO,MAAM,GAAG;YAEQ,OAAO,CAAC;QAAE,EAAE,EAAE,MAAM,CAAA;KAAE,CAAC;iDA0CpC,CAAA;AAEX;;;;;GAKG;AACH,eAAO,MAAM,MAAM;YAEK,OAAO,CAAC;QAAE,EAAE,EAAE,MAAM,CAAA;KAAE,CAAC;iDAwCpC,CAAA;AAEX,eAAO,MAAM,OAAO,sBAAgB,CAAA"}
@@ -3,6 +3,7 @@ import { createApiResponse, createApiError } from "@nextsparkjs/core/lib/api/hel
3
3
  import { API_ERROR_CODES } from "@nextsparkjs/core/lib/api/api-error";
4
4
  import { checkPermission } from "@nextsparkjs/core/lib/permissions/check";
5
5
  import { withRateLimitTier } from "@nextsparkjs/core/lib/api/rate-limit";
6
+ import { corsPreflight } from "@nextsparkjs/core/lib/api/cors-response";
6
7
  import { MediaService } from "@nextsparkjs/core/lib/services/media.service";
7
8
  import * as z from "zod";
8
9
  const addTagSchema = z.object({
@@ -124,3 +125,4 @@ export const DELETE = withRateLimitTier(async (request, { params }) => {
124
125
  return createApiError("Failed to remove tag", 500);
125
126
  }
126
127
  }, "write");
128
+ export const OPTIONS = corsPreflight;
@@ -1,4 +1,5 @@
1
1
  import { NextRequest } from 'next/server';
2
+ import { corsPreflight } from '@nextsparkjs/core/lib/api/cors-response';
2
3
  /**
3
4
  * POST /api/v1/media/check-duplicates
4
5
  *
@@ -9,4 +10,5 @@ import { NextRequest } from 'next/server';
9
10
  * Returns: { duplicates: [{ filename, fileSize, existing: Media[] }] }
10
11
  */
11
12
  export declare const POST: (request: NextRequest) => Promise<import("next/server").NextResponse>;
13
+ export declare const OPTIONS: typeof corsPreflight;
12
14
  //# sourceMappingURL=route.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"route.d.ts","sourceRoot":"","sources":["../../../../../../src/routes/api/v1/media/check-duplicates/route.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AAQzC;;;;;;;;GAQG;AACH,eAAO,MAAM,IAAI,uEAgDP,CAAA"}
1
+ {"version":3,"file":"route.d.ts","sourceRoot":"","sources":["../../../../../../src/routes/api/v1/media/check-duplicates/route.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AAMzC,OAAO,EAAE,aAAa,EAAE,MAAM,yCAAyC,CAAA;AAGvE;;;;;;;;GAQG;AACH,eAAO,MAAM,IAAI,uEAgDP,CAAA;AAEV,eAAO,MAAM,OAAO,sBAAgB,CAAA"}
@@ -3,6 +3,7 @@ import { createApiResponse, createApiError } from "@nextsparkjs/core/lib/api/hel
3
3
  import { API_ERROR_CODES } from "@nextsparkjs/core/lib/api/api-error";
4
4
  import { checkPermission } from "@nextsparkjs/core/lib/permissions/check";
5
5
  import { withRateLimitTier } from "@nextsparkjs/core/lib/api/rate-limit";
6
+ import { corsPreflight } from "@nextsparkjs/core/lib/api/cors-response";
6
7
  import { MediaService } from "@nextsparkjs/core/lib/services/media.service";
7
8
  export const POST = withRateLimitTier(async (request) => {
8
9
  try {
@@ -43,3 +44,4 @@ export const POST = withRateLimitTier(async (request) => {
43
44
  return createApiError("Failed to check duplicates", 500);
44
45
  }
45
46
  }, "read");
47
+ export const OPTIONS = corsPreflight;
@@ -1,4 +1,5 @@
1
1
  import { NextRequest } from 'next/server';
2
+ import { corsPreflight } from '@nextsparkjs/core/lib/api/cors-response';
2
3
  /**
3
4
  * GET /api/v1/media
4
5
  *
@@ -17,4 +18,5 @@ import { NextRequest } from 'next/server';
17
18
  * RLS: Returns only media from teams the user is a member of
18
19
  */
19
20
  export declare const GET: (request: NextRequest) => Promise<import("next/server").NextResponse>;
21
+ export declare const OPTIONS: typeof corsPreflight;
20
22
  //# sourceMappingURL=route.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"route.d.ts","sourceRoot":"","sources":["../../../../../src/routes/api/v1/media/route.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AASzC;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,GAAG,uEAqCN,CAAA"}
1
+ {"version":3,"file":"route.d.ts","sourceRoot":"","sources":["../../../../../src/routes/api/v1/media/route.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AAMzC,OAAO,EAAE,aAAa,EAAE,MAAM,yCAAyC,CAAA;AAIvE;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,GAAG,uEAqCN,CAAA;AAEV,eAAO,MAAM,OAAO,sBAAgB,CAAA"}
@@ -3,6 +3,7 @@ import { createApiResponse, createApiError } from "@nextsparkjs/core/lib/api/hel
3
3
  import { API_ERROR_CODES } from "@nextsparkjs/core/lib/api/api-error";
4
4
  import { checkPermission } from "@nextsparkjs/core/lib/permissions/check";
5
5
  import { withRateLimitTier } from "@nextsparkjs/core/lib/api/rate-limit";
6
+ import { corsPreflight } from "@nextsparkjs/core/lib/api/cors-response";
6
7
  import { MediaService } from "@nextsparkjs/core/lib/services/media.service";
7
8
  import { mediaListQuerySchema } from "@nextsparkjs/core/lib/media/schemas";
8
9
  export const GET = withRateLimitTier(async (request) => {
@@ -31,3 +32,4 @@ export const GET = withRateLimitTier(async (request) => {
31
32
  return createApiError("Failed to list media", 500);
32
33
  }
33
34
  }, "read");
35
+ export const OPTIONS = corsPreflight;
@@ -1,4 +1,5 @@
1
1
  import { NextRequest } from 'next/server';
2
+ import { corsPreflight } from '@nextsparkjs/core/lib/api/cors-response';
2
3
  /**
3
4
  * POST /api/v1/media/upload
4
5
  *
@@ -21,4 +22,5 @@ export declare const POST: (request: NextRequest) => Promise<import("next/server
21
22
  * Get upload endpoint information.
22
23
  */
23
24
  export declare const GET: (request: NextRequest) => Promise<import("next/server").NextResponse>;
25
+ export declare const OPTIONS: typeof corsPreflight;
24
26
  //# sourceMappingURL=route.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"route.d.ts","sourceRoot":"","sources":["../../../../../../src/routes/api/v1/media/upload/route.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AAwCzC;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,IAAI,uEA0KN,CAAC;AAEZ;;;;GAIG;AACH,eAAO,MAAM,GAAG,uEA0CN,CAAC"}
1
+ {"version":3,"file":"route.d.ts","sourceRoot":"","sources":["../../../../../../src/routes/api/v1/media/upload/route.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AAOzC,OAAO,EAAE,aAAa,EAAE,MAAM,yCAAyC,CAAA;AAkCvE;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,IAAI,uEA0KN,CAAC;AAEZ;;;;GAIG;AACH,eAAO,MAAM,GAAG,uEA0CN,CAAC;AAEX,eAAO,MAAM,OAAO,sBAAgB,CAAA"}
@@ -4,6 +4,7 @@ import { createApiResponse, createApiError } from "@nextsparkjs/core/lib/api/hel
4
4
  import { API_ERROR_CODES } from "@nextsparkjs/core/lib/api/api-error";
5
5
  import { checkPermission } from "@nextsparkjs/core/lib/permissions/check";
6
6
  import { withRateLimitTier } from "@nextsparkjs/core/lib/api/rate-limit";
7
+ import { corsPreflight } from "@nextsparkjs/core/lib/api/cors-response";
7
8
  import { MEDIA_CONFIG } from "@nextsparkjs/core/lib/config/config-sync";
8
9
  import { MediaService } from "@nextsparkjs/core/lib/services/media.service";
9
10
  import { extractImageDimensions } from "@nextsparkjs/core/lib/media/utils";
@@ -194,3 +195,4 @@ export const GET = withRateLimitTier(async (request) => {
194
195
  );
195
196
  }
196
197
  }, "read");
198
+ export const OPTIONS = corsPreflight;
@@ -1,4 +1,5 @@
1
1
  import { NextRequest } from 'next/server';
2
+ import { corsPreflight } from '@nextsparkjs/core/lib/api/cors-response';
2
3
  /**
3
4
  * GET /api/v1/media-tags
4
5
  *
@@ -16,4 +17,5 @@ export declare const GET: (request: NextRequest) => Promise<import("next/server"
16
17
  * Authentication: Requires valid session or API key with media:write scope
17
18
  */
18
19
  export declare const POST: (request: NextRequest) => Promise<import("next/server").NextResponse>;
20
+ export declare const OPTIONS: typeof corsPreflight;
19
21
  //# sourceMappingURL=route.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"route.d.ts","sourceRoot":"","sources":["../../../../../src/routes/api/v1/media-tags/route.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AAQzC;;;;;;GAMG;AACH,eAAO,MAAM,GAAG,uEAwBN,CAAA;AAEV;;;;;;;GAOG;AACH,eAAO,MAAM,IAAI,uEA+BN,CAAA"}
1
+ {"version":3,"file":"route.d.ts","sourceRoot":"","sources":["../../../../../src/routes/api/v1/media-tags/route.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AAMzC,OAAO,EAAE,aAAa,EAAE,MAAM,yCAAyC,CAAA;AAGvE;;;;;;GAMG;AACH,eAAO,MAAM,GAAG,uEAwBN,CAAA;AAEV;;;;;;;GAOG;AACH,eAAO,MAAM,IAAI,uEA+BN,CAAA;AAEX,eAAO,MAAM,OAAO,sBAAgB,CAAA"}
@@ -3,6 +3,7 @@ import { createApiResponse, createApiError } from "@nextsparkjs/core/lib/api/hel
3
3
  import { API_ERROR_CODES } from "@nextsparkjs/core/lib/api/api-error";
4
4
  import { checkPermission } from "@nextsparkjs/core/lib/permissions/check";
5
5
  import { withRateLimitTier } from "@nextsparkjs/core/lib/api/rate-limit";
6
+ import { corsPreflight } from "@nextsparkjs/core/lib/api/cors-response";
6
7
  import { MediaService } from "@nextsparkjs/core/lib/services/media.service";
7
8
  export const GET = withRateLimitTier(async (request) => {
8
9
  try {
@@ -47,3 +48,4 @@ export const POST = withRateLimitTier(async (request) => {
47
48
  return createApiError("Failed to create media tag", 500);
48
49
  }
49
50
  }, "write");
51
+ export const OPTIONS = corsPreflight;
@@ -1,4 +1,5 @@
1
1
  import { NextRequest, NextResponse } from 'next/server';
2
+ import { corsPreflight } from '@nextsparkjs/core/lib/api/cors-response';
2
3
  export declare const GET: (request: NextRequest, args_0: {
3
4
  params: Promise<{
4
5
  id: string;
@@ -14,4 +15,5 @@ export declare const DELETE: (request: NextRequest, args_0: {
14
15
  id: string;
15
16
  }>;
16
17
  }) => Promise<NextResponse>;
18
+ export declare const OPTIONS: typeof corsPreflight;
17
19
  //# sourceMappingURL=route.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"route.d.ts","sourceRoot":"","sources":["../../../../../../src/routes/api/v1/post-categories/[id]/route.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAmBvD,eAAO,MAAM,GAAG;YAEQ,OAAO,CAAC;QAAE,EAAE,EAAE,MAAM,CAAA;KAAE,CAAC;2BAyBrC,CAAC;AAGX,eAAO,MAAM,GAAG;YAEQ,OAAO,CAAC;QAAE,EAAE,EAAE,MAAM,CAAA;KAAE,CAAC;2BAwIpC,CAAC;AAGZ,eAAO,MAAM,MAAM;YAEK,OAAO,CAAC;QAAE,EAAE,EAAE,MAAM,CAAA;KAAE,CAAC;2BAiEpC,CAAC"}
1
+ {"version":3,"file":"route.d.ts","sourceRoot":"","sources":["../../../../../../src/routes/api/v1/post-categories/[id]/route.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAKvD,OAAO,EAAE,aAAa,EAAE,MAAM,yCAAyC,CAAA;AAevE,eAAO,MAAM,GAAG;YAEQ,OAAO,CAAC;QAAE,EAAE,EAAE,MAAM,CAAA;KAAE,CAAC;2BAyBrC,CAAC;AAGX,eAAO,MAAM,GAAG;YAEQ,OAAO,CAAC;QAAE,EAAE,EAAE,MAAM,CAAA;KAAE,CAAC;2BAwIpC,CAAC;AAGZ,eAAO,MAAM,MAAM;YAEK,OAAO,CAAC;QAAE,EAAE,EAAE,MAAM,CAAA;KAAE,CAAC;2BAiEpC,CAAC;AAEZ,eAAO,MAAM,OAAO,sBAAgB,CAAA"}
@@ -3,6 +3,7 @@ import { authenticateRequest, createAuthFailureResponse } from "@nextsparkjs/cor
3
3
  import { query as dbQuery } from "@nextsparkjs/core/lib/db";
4
4
  import * as z from "zod";
5
5
  import { withRateLimitTier } from "@nextsparkjs/core/lib/api/rate-limit";
6
+ import { corsPreflight } from "@nextsparkjs/core/lib/api/cors-response";
6
7
  const updateCategorySchema = z.object({
7
8
  name: z.string().min(1).max(255).optional(),
8
9
  slug: z.string().min(2).max(100).regex(/^[a-z0-9-]+$/, "Slug must be lowercase alphanumeric with dashes").optional(),
@@ -201,3 +202,4 @@ export const DELETE = withRateLimitTier(async (request, { params }) => {
201
202
  return NextResponse.json({ success: false, error: "Internal server error" }, { status: 500 });
202
203
  }
203
204
  }, "write");
205
+ export const OPTIONS = corsPreflight;
@@ -1,4 +1,6 @@
1
1
  import { NextRequest, NextResponse } from 'next/server';
2
+ import { corsPreflight } from '@nextsparkjs/core/lib/api/cors-response';
2
3
  export declare const GET: (request: NextRequest) => Promise<NextResponse>;
3
4
  export declare const POST: (request: NextRequest) => Promise<NextResponse>;
5
+ export declare const OPTIONS: typeof corsPreflight;
4
6
  //# sourceMappingURL=route.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"route.d.ts","sourceRoot":"","sources":["../../../../../src/routes/api/v1/post-categories/route.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AA6BvD,eAAO,MAAM,GAAG,iDAkBN,CAAC;AAGX,eAAO,MAAM,IAAI,iDAsEN,CAAC"}
1
+ {"version":3,"file":"route.d.ts","sourceRoot":"","sources":["../../../../../src/routes/api/v1/post-categories/route.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAKvD,OAAO,EAAE,aAAa,EAAE,MAAM,yCAAyC,CAAA;AAyBvE,eAAO,MAAM,GAAG,iDAkBN,CAAC;AAGX,eAAO,MAAM,IAAI,iDAsEN,CAAC;AAEZ,eAAO,MAAM,OAAO,sBAAgB,CAAA"}
@@ -3,6 +3,7 @@ import { authenticateRequest, createAuthFailureResponse } from "@nextsparkjs/cor
3
3
  import { query as dbQuery } from "@nextsparkjs/core/lib/db";
4
4
  import * as z from "zod";
5
5
  import { withRateLimitTier } from "@nextsparkjs/core/lib/api/rate-limit";
6
+ import { corsPreflight } from "@nextsparkjs/core/lib/api/cors-response";
6
7
  const createCategorySchema = z.object({
7
8
  name: z.string().min(1).max(255),
8
9
  slug: z.string().min(2).max(100).regex(/^[a-z0-9-]+$/, "Slug must be lowercase alphanumeric with dashes").optional(),
@@ -92,3 +93,4 @@ export const POST = withRateLimitTier(async (request) => {
92
93
  return NextResponse.json({ success: false, error: "Internal server error" }, { status: 500 });
93
94
  }
94
95
  }, "write");
96
+ export const OPTIONS = corsPreflight;
@@ -17,7 +17,7 @@ import { MembershipService } from "@nextsparkjs/core/lib/services";
17
17
  import { canInviteToRole } from "@nextsparkjs/core/lib/teams/permissions";
18
18
  import { EmailFactory } from "@nextsparkjs/core/lib/email/factory";
19
19
  import { sendTeamInvitationEmail } from "@nextsparkjs/core/lib/email/send";
20
- import { I18N_CONFIG } from "@nextsparkjs/core/lib/config";
20
+ import { I18N_CONFIG, APP_NAME } from "@nextsparkjs/core/lib/config";
21
21
  import { withBasePath } from "@nextsparkjs/core/lib/base-path";
22
22
  export async function OPTIONS(request) {
23
23
  return handleCorsPreflightRequest(request);
@@ -230,7 +230,7 @@ export const POST = withRateLimitTier(withApiLogging(
230
230
  role: validatedData.role,
231
231
  acceptUrl,
232
232
  expiresIn: "7 days",
233
- appName: process.env.NEXT_PUBLIC_APP_NAME || "Your App"
233
+ appName: process.env.NEXT_PUBLIC_APP_NAME || APP_NAME
234
234
  }, I18N_CONFIG.defaultLocale);
235
235
  await emailProvider.send({
236
236
  to: validatedData.email,
@@ -4,11 +4,13 @@
4
4
  * GET /api/v1/teams/[teamId]/subscription - Get team's active subscription
5
5
  */
6
6
  import { NextRequest, NextResponse } from 'next/server';
7
+ import { corsPreflight } from '@nextsparkjs/core/lib/api/cors-response';
7
8
  interface RouteParams {
8
9
  params: Promise<{
9
10
  teamId: string;
10
11
  }>;
11
12
  }
12
13
  export declare const GET: (request: NextRequest, props: RouteParams) => Promise<NextResponse>;
14
+ export declare const OPTIONS: typeof corsPreflight;
13
15
  export {};
14
16
  //# sourceMappingURL=route.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"route.d.ts","sourceRoot":"","sources":["../../../../../../../src/routes/api/v1/teams/[teamId]/subscription/route.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAKvD,UAAU,WAAW;IACnB,MAAM,EAAE,OAAO,CAAC;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CACpC;AAED,eAAO,MAAM,GAAG,qEAmCN,CAAA"}
1
+ {"version":3,"file":"route.d.ts","sourceRoot":"","sources":["../../../../../../../src/routes/api/v1/teams/[teamId]/subscription/route.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAGvD,OAAO,EAAE,aAAa,EAAE,MAAM,yCAAyC,CAAA;AAGvE,UAAU,WAAW;IACnB,MAAM,EAAE,OAAO,CAAC;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CACpC;AAED,eAAO,MAAM,GAAG,qEAmCN,CAAA;AAEV,eAAO,MAAM,OAAO,sBAAgB,CAAA"}
@@ -1,6 +1,7 @@
1
1
  import { NextResponse } from "next/server";
2
2
  import { validateAndAuthenticateRequest, createApiResponse, createApiError } from "@nextsparkjs/core/lib/api/helpers";
3
3
  import { withRateLimitTier } from "@nextsparkjs/core/lib/api/rate-limit";
4
+ import { corsPreflight } from "@nextsparkjs/core/lib/api/cors-response";
4
5
  import { SubscriptionService, MembershipService } from "@nextsparkjs/core/lib/services";
5
6
  export const GET = withRateLimitTier(async function GET2(request, props) {
6
7
  const { auth, rateLimitResponse, errorResponse } = await validateAndAuthenticateRequest(request, { requiredScope: "billing:read" });
@@ -28,3 +29,4 @@ export const GET = withRateLimitTier(async function GET2(request, props) {
28
29
  return createApiError("Failed to fetch subscription", 500);
29
30
  }
30
31
  }, "read");
32
+ export const OPTIONS = corsPreflight;
@@ -5,6 +5,7 @@
5
5
  * POST /api/v1/teams/[teamId]/usage/[limitSlug] - Track usage
6
6
  */
7
7
  import { NextRequest, NextResponse } from 'next/server';
8
+ import { corsPreflight } from '@nextsparkjs/core/lib/api/cors-response';
8
9
  interface RouteParams {
9
10
  params: Promise<{
10
11
  teamId: string;
@@ -13,5 +14,6 @@ interface RouteParams {
13
14
  }
14
15
  export declare const GET: (request: NextRequest, props: RouteParams) => Promise<NextResponse>;
15
16
  export declare const POST: (request: NextRequest, props: RouteParams) => Promise<NextResponse>;
17
+ export declare const OPTIONS: typeof corsPreflight;
16
18
  export {};
17
19
  //# sourceMappingURL=route.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"route.d.ts","sourceRoot":"","sources":["../../../../../../../../src/routes/api/v1/teams/[teamId]/usage/[limitSlug]/route.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAMvD,UAAU,WAAW;IACnB,MAAM,EAAE,OAAO,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CACvD;AAED,eAAO,MAAM,GAAG,qEAgCN,CAAA;AAEV,eAAO,MAAM,IAAI,qEA4CN,CAAA"}
1
+ {"version":3,"file":"route.d.ts","sourceRoot":"","sources":["../../../../../../../../src/routes/api/v1/teams/[teamId]/usage/[limitSlug]/route.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAGvD,OAAO,EAAE,aAAa,EAAE,MAAM,yCAAyC,CAAA;AAIvE,UAAU,WAAW;IACnB,MAAM,EAAE,OAAO,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CACvD;AAED,eAAO,MAAM,GAAG,qEAgCN,CAAA;AAEV,eAAO,MAAM,IAAI,qEA4CN,CAAA;AAEX,eAAO,MAAM,OAAO,sBAAgB,CAAA"}
@@ -1,6 +1,7 @@
1
1
  import { NextResponse } from "next/server";
2
2
  import { validateAndAuthenticateRequest, createApiResponse, createApiError } from "@nextsparkjs/core/lib/api/helpers";
3
3
  import { withRateLimitTier } from "@nextsparkjs/core/lib/api/rate-limit";
4
+ import { corsPreflight } from "@nextsparkjs/core/lib/api/cors-response";
4
5
  import { SubscriptionService, UsageService, MembershipService } from "@nextsparkjs/core/lib/services";
5
6
  import { trackUsageSchema } from "@nextsparkjs/core/lib/billing/schema";
6
7
  export const GET = withRateLimitTier(async function GET2(request, props) {
@@ -65,3 +66,4 @@ export const POST = withRateLimitTier(async function POST2(request, props) {
65
66
  return createApiError(errorMessage, 500);
66
67
  }
67
68
  }, "write");
69
+ export const OPTIONS = corsPreflight;
@@ -1 +1 @@
1
- {"version":3,"file":"route.d.ts","sourceRoot":"","sources":["../../../../../../src/routes/api/v1/users/[id]/route.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AA2BxD,wBAAsB,OAAO,CAAC,OAAO,EAAE,WAAW,kCAEjD;AAGD,eAAO,MAAM,GAAG;YAEQ,OAAO,CAAC;QAAE,EAAE,EAAE,MAAM,CAAA;KAAE,CAAC;2BAoDpC,CAAC;AAGZ,eAAO,MAAM,KAAK;YAEM,OAAO,CAAC;QAAE,EAAE,EAAE,MAAM,CAAA;KAAE,CAAC;2BAqInC,CAAC;AAGb,eAAO,MAAM,MAAM;YAEK,OAAO,CAAC;QAAE,EAAE,EAAE,MAAM,CAAA;KAAE,CAAC;2BAiEnC,CAAC"}
1
+ {"version":3,"file":"route.d.ts","sourceRoot":"","sources":["../../../../../../src/routes/api/v1/users/[id]/route.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AA+BxD,wBAAsB,OAAO,CAAC,OAAO,EAAE,WAAW,kCAEjD;AAGD,eAAO,MAAM,GAAG;YAEQ,OAAO,CAAC;QAAE,EAAE,EAAE,MAAM,CAAA;KAAE,CAAC;2BAoDpC,CAAC;AAGZ,eAAO,MAAM,KAAK;YAEM,OAAO,CAAC;QAAE,EAAE,EAAE,MAAM,CAAA;KAAE,CAAC;2BAqInC,CAAC;AAGb,eAAO,MAAM,MAAM;YAEK,OAAO,CAAC;QAAE,EAAE,EAAE,MAAM,CAAA;KAAE,CAAC;2BAiEnC,CAAC"}
@@ -21,6 +21,7 @@ const updateUserSchema = z.object({
21
21
  role: z.enum(["member", "superadmin"]).optional(),
22
22
  metas: z.record(z.string(), z.any()).optional()
23
23
  });
24
+ const resolveUserId = ({ id }, callerId) => id === "me" ? callerId : id;
24
25
  export async function OPTIONS(request) {
25
26
  return handleCorsPreflightRequest(request);
26
27
  }
@@ -33,7 +34,7 @@ export const GET = withRateLimitTier(withApiLogging(async (req, { params }) => {
33
34
  if (authResult.rateLimitResponse) {
34
35
  return authResult.rateLimitResponse;
35
36
  }
36
- const { id } = await params;
37
+ const id = resolveUserId(await params, authResult.user.id);
37
38
  if (!id || id.trim() === "") {
38
39
  const response2 = createApiError("User ID or email is required", 400, null, "MISSING_IDENTIFIER");
39
40
  return addCorsHeaders(response2, req);
@@ -70,7 +71,7 @@ export const PATCH = withRateLimitTier(withApiLogging(async (req, { params }) =>
70
71
  if (authResult.rateLimitResponse) {
71
72
  return authResult.rateLimitResponse;
72
73
  }
73
- const { id } = await params;
74
+ const id = resolveUserId(await params, authResult.user.id);
74
75
  if (!id || id.trim() === "") {
75
76
  const response2 = createApiError("User ID or email is required", 400, null, "MISSING_IDENTIFIER");
76
77
  return addCorsHeaders(response2, req);
@@ -4,52 +4,67 @@ Manage user profiles and account settings.
4
4
 
5
5
  ## Overview
6
6
 
7
- The Users API allows you to view and update user profile information. Users can update their own profile, while admins can manage other users within their team.
7
+ The Users API allows you to view and update user profile information. Users can read and update their own profile; a superadmin can manage any user.
8
8
 
9
9
  ## Authentication
10
10
 
11
11
  All endpoints require authentication via:
12
12
  - **Session cookie** (for browser-based requests)
13
- - **API Key** header (for server-to-server requests)
13
+ - **API Key** (for server-to-server requests), sent as `x-api-key: <key>` or `Authorization: Bearer <key>`: it needs the `users:read` scope to read and `users:write` to update, and it answers as the key's owner
14
+
15
+ A user can read and update only themselves; a superadmin can manage any user. Anything else answers `403`.
14
16
 
15
17
  ## Endpoints
16
18
 
17
19
  ### Get Current User
18
20
  `GET /api/v1/users/me`
19
21
 
20
- Returns the currently authenticated user's profile.
22
+ Returns the signed-in user, with a session cookie or an API key. It is `GET /api/v1/users/:id` for the caller's own id, so it takes the same `metas` query parameters and answers with the same fields.
23
+
24
+ ```bash
25
+ curl -H "Cookie: <session cookie>" https://yourdomain.com/api/v1/users/me
26
+ curl -H "Authorization: Bearer <api key>" https://yourdomain.com/api/v1/users/me
27
+ curl -H "x-api-key: <api key>" https://yourdomain.com/api/v1/users/me
28
+ ```
21
29
 
22
30
  **Example Response:**
23
31
  ```json
24
32
  {
25
- "id": "user_123",
26
- "name": "John Doe",
27
- "email": "john@example.com",
28
- "image": "/uploads/avatar.png",
29
- "createdAt": "2024-01-15T10:30:00Z",
30
- "teams": [
31
- {
32
- "id": "team_456",
33
- "name": "Acme Corp",
34
- "role": "admin"
35
- }
36
- ]
33
+ "success": true,
34
+ "data": {
35
+ "id": "user_123",
36
+ "email": "john@example.com",
37
+ "name": "John Doe",
38
+ "firstName": "John",
39
+ "lastName": "Doe",
40
+ "image": "/uploads/avatar.png",
41
+ "country": null,
42
+ "timezone": null,
43
+ "language": "en",
44
+ "role": "member",
45
+ "emailVerified": true,
46
+ "createdAt": "2024-01-15T10:30:00Z",
47
+ "updatedAt": "2024-01-15T10:30:00Z"
48
+ }
37
49
  }
38
50
  ```
39
51
 
40
52
  ### Update Current User
41
53
  `PATCH /api/v1/users/me`
42
54
 
43
- Update the current user's profile.
55
+ Update the signed-in user. It is `PATCH /api/v1/users/:id` for the caller's own id, with the same rules: only `firstName`, `lastName`, `language` and `metas` are accepted, and `role` is a superadmin's to change (anyone else gets `403`).
44
56
 
45
57
  **Request Body:**
46
58
  ```json
47
59
  {
48
- "name": "John Smith",
49
- "image": "/uploads/new-avatar.png"
60
+ "firstName": "John",
61
+ "lastName": "Smith",
62
+ "metas": { "preferences": { "theme": "dark" } }
50
63
  }
51
64
  ```
52
65
 
66
+ To store per-user settings (the mobile client's preferences), use the user's metadata: `GET`/`PUT /api/v1/users/:id/meta/:key`.
67
+
53
68
  ### List Team Members
54
69
  `GET /api/v1/users`
55
70
 
@@ -63,7 +78,7 @@ Returns all users in the current team.
63
78
  ### Get User by ID
64
79
  `GET /api/v1/users/[id]`
65
80
 
66
- Returns a specific user's profile (within the same team).
81
+ Returns a specific user's profile. Only that user or a superadmin can read it; `403` otherwise.
67
82
 
68
83
  **Path Parameters:**
69
84
  - `id` (string, required): User ID
@@ -0,0 +1,6 @@
1
+ import type { NextRequest } from 'next/server';
2
+ import { OPTIONS } from '@nextsparkjs/core/routes/api/v1/users/[id]/route';
3
+ export { OPTIONS };
4
+ export declare const GET: (req: NextRequest) => Promise<import("next/server").NextResponse<unknown>>;
5
+ export declare const PATCH: (req: NextRequest) => Promise<import("next/server").NextResponse<unknown>>;
6
+ //# sourceMappingURL=route.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"route.d.ts","sourceRoot":"","sources":["../../../../../../src/routes/api/v1/users/me/route.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AAC9C,OAAO,EAAE,OAAO,EAAsC,MAAM,kDAAkD,CAAA;AAO9G,OAAO,EAAE,OAAO,EAAE,CAAA;AAClB,eAAO,MAAM,GAAG,GAAI,KAAK,WAAW,yDAAqB,CAAA;AACzD,eAAO,MAAM,KAAK,GAAI,KAAK,WAAW,yDAAuB,CAAA"}
@@ -0,0 +1,5 @@
1
+ import { OPTIONS, GET as getUser, PATCH as patchUser } from "@nextsparkjs/core/routes/api/v1/users/[id]/route";
2
+ const me = { params: Promise.resolve({ id: "me" }) };
3
+ export { OPTIONS };
4
+ export const GET = (req) => getUser(req, me);
5
+ export const PATCH = (req) => patchUser(req, me);
@@ -34,13 +34,13 @@ export default defineApiEndpoint({
34
34
  {
35
35
  id: 'update-profile',
36
36
  title: 'Update My Profile',
37
- description: 'Update current user name',
37
+ description: 'Update the current user first name',
38
38
  method: 'PATCH',
39
39
  pathParams: {
40
40
  id: 'me'
41
41
  },
42
42
  payload: {
43
- name: 'Updated Name'
43
+ firstName: 'Updated'
44
44
  },
45
45
  tags: ['write', 'profile']
46
46
  },
@@ -0,0 +1,4 @@
1
+ export default function MainDashboardLayout({ children }: {
2
+ children: React.ReactNode;
3
+ }): import("react/jsx-runtime").JSX.Element;
4
+ //# sourceMappingURL=layout.cc.d.ts.map