@nextsparkjs/core 0.1.0-beta.82 → 0.1.0-beta.84

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 (365) hide show
  1. package/dist/components/entities/wrappers/EntityDetailWrapper.d.ts.map +1 -1
  2. package/dist/components/entities/wrappers/EntityDetailWrapper.js +11 -39
  3. package/dist/hooks/useEntityQuery.d.ts.map +1 -1
  4. package/dist/hooks/useEntityQuery.js +21 -3
  5. package/dist/lib/theme/get-default-theme-mode.d.ts +11 -0
  6. package/dist/lib/theme/get-default-theme-mode.d.ts.map +1 -1
  7. package/dist/lib/theme/get-default-theme-mode.js +42 -25
  8. package/dist/styles/classes.json +1 -1
  9. package/dist/types/theme.d.ts +2 -0
  10. package/dist/types/theme.d.ts.map +1 -1
  11. package/package.json +3 -3
  12. package/dist/templates/app/(auth)/forgot-password/page.tsx +0 -216
  13. package/dist/templates/app/(auth)/layout.tsx +0 -51
  14. package/dist/templates/app/(auth)/login/page.tsx +0 -21
  15. package/dist/templates/app/(auth)/reset-password/page.tsx +0 -212
  16. package/dist/templates/app/(auth)/signup/page.tsx +0 -21
  17. package/dist/templates/app/(auth)/verify-email/page.tsx +0 -190
  18. package/dist/templates/app/(public)/[...slug]/page.tsx +0 -378
  19. package/dist/templates/app/(public)/docs/[section]/[page]/page.tsx +0 -90
  20. package/dist/templates/app/(public)/docs/layout.tsx +0 -25
  21. package/dist/templates/app/(public)/docs/page.tsx +0 -81
  22. package/dist/templates/app/(public)/layout.tsx +0 -41
  23. package/dist/templates/app/(public)/page.tsx +0 -19
  24. package/dist/templates/app/403/page.tsx +0 -89
  25. package/dist/templates/app/api/auth/[...all]/route.ts +0 -78
  26. package/dist/templates/app/api/cron/billing/lifecycle/route.ts +0 -98
  27. package/dist/templates/app/api/csp-report/route.ts +0 -175
  28. package/dist/templates/app/api/devtools/config/entities/route.ts +0 -108
  29. package/dist/templates/app/api/devtools/config/theme/route.ts +0 -66
  30. package/dist/templates/app/api/devtools/tests/[...path]/route.ts +0 -130
  31. package/dist/templates/app/api/devtools/tests/route.ts +0 -134
  32. package/dist/templates/app/api/health/route.ts +0 -29
  33. package/dist/templates/app/api/internal/user-metadata/route.ts +0 -36
  34. package/dist/templates/app/api/superadmin/subscriptions/route.ts +0 -310
  35. package/dist/templates/app/api/superadmin/teams/[teamId]/route.ts +0 -286
  36. package/dist/templates/app/api/superadmin/teams/route.ts +0 -188
  37. package/dist/templates/app/api/superadmin/users/[userId]/route.ts +0 -540
  38. package/dist/templates/app/api/superadmin/users/route.ts +0 -323
  39. package/dist/templates/app/api/user/delete-account/route.ts +0 -55
  40. package/dist/templates/app/api/user/plan-flags/route.ts +0 -283
  41. package/dist/templates/app/api/user/profile/route.ts +0 -133
  42. package/dist/templates/app/api/v1/[entity]/[id]/child/[childType]/[childId]/route.ts +0 -210
  43. package/dist/templates/app/api/v1/[entity]/[id]/child/[childType]/route.ts +0 -331
  44. package/dist/templates/app/api/v1/[entity]/[id]/route.ts +0 -35
  45. package/dist/templates/app/api/v1/[entity]/docs.md +0 -369
  46. package/dist/templates/app/api/v1/[entity]/presets.ts +0 -194
  47. package/dist/templates/app/api/v1/[entity]/route.ts +0 -31
  48. package/dist/templates/app/api/v1/api-keys/[id]/route.ts +0 -303
  49. package/dist/templates/app/api/v1/api-keys/docs.md +0 -101
  50. package/dist/templates/app/api/v1/api-keys/presets.ts +0 -31
  51. package/dist/templates/app/api/v1/api-keys/route.ts +0 -250
  52. package/dist/templates/app/api/v1/auth/docs.md +0 -184
  53. package/dist/templates/app/api/v1/auth/presets.ts +0 -44
  54. package/dist/templates/app/api/v1/auth/signup-with-invite/route.ts +0 -227
  55. package/dist/templates/app/api/v1/billing/cancel/route.ts +0 -206
  56. package/dist/templates/app/api/v1/billing/change-plan/route.ts +0 -97
  57. package/dist/templates/app/api/v1/billing/check-action/route.ts +0 -81
  58. package/dist/templates/app/api/v1/billing/checkout/route.ts +0 -124
  59. package/dist/templates/app/api/v1/billing/docs.md +0 -209
  60. package/dist/templates/app/api/v1/billing/plans/route.ts +0 -85
  61. package/dist/templates/app/api/v1/billing/portal/route.ts +0 -90
  62. package/dist/templates/app/api/v1/billing/presets.ts +0 -121
  63. package/dist/templates/app/api/v1/billing/webhooks/stripe/route.ts +0 -428
  64. package/dist/templates/app/api/v1/blocks/[slug]/route.ts +0 -29
  65. package/dist/templates/app/api/v1/blocks/docs.md +0 -173
  66. package/dist/templates/app/api/v1/blocks/presets.ts +0 -121
  67. package/dist/templates/app/api/v1/blocks/route.ts +0 -45
  68. package/dist/templates/app/api/v1/blocks/validate/route.ts +0 -45
  69. package/dist/templates/app/api/v1/cron/docs.md +0 -116
  70. package/dist/templates/app/api/v1/cron/presets.ts +0 -26
  71. package/dist/templates/app/api/v1/cron/process/route.ts +0 -108
  72. package/dist/templates/app/api/v1/devtools/blocks/route.ts +0 -82
  73. package/dist/templates/app/api/v1/devtools/docs/route.ts +0 -150
  74. package/dist/templates/app/api/v1/devtools/docs.md +0 -204
  75. package/dist/templates/app/api/v1/devtools/features/route.ts +0 -61
  76. package/dist/templates/app/api/v1/devtools/flows/route.ts +0 -61
  77. package/dist/templates/app/api/v1/devtools/presets.ts +0 -113
  78. package/dist/templates/app/api/v1/devtools/scheduled-actions/route.ts +0 -120
  79. package/dist/templates/app/api/v1/devtools/testing/route.ts +0 -82
  80. package/dist/templates/app/api/v1/media/docs.md +0 -117
  81. package/dist/templates/app/api/v1/media/presets.ts +0 -24
  82. package/dist/templates/app/api/v1/media/upload/route.ts +0 -150
  83. package/dist/templates/app/api/v1/patterns/[id]/usages/route.ts +0 -116
  84. package/dist/templates/app/api/v1/plugin/[...path]/route.ts +0 -373
  85. package/dist/templates/app/api/v1/plugin/docs.md +0 -79
  86. package/dist/templates/app/api/v1/plugin/presets.ts +0 -21
  87. package/dist/templates/app/api/v1/plugin/route.ts +0 -96
  88. package/dist/templates/app/api/v1/post-categories/[id]/route.ts +0 -255
  89. package/dist/templates/app/api/v1/post-categories/docs.md +0 -134
  90. package/dist/templates/app/api/v1/post-categories/presets.ts +0 -78
  91. package/dist/templates/app/api/v1/post-categories/route.ts +0 -119
  92. package/dist/templates/app/api/v1/team-invitations/[token]/accept/route.ts +0 -179
  93. package/dist/templates/app/api/v1/team-invitations/[token]/decline/route.ts +0 -120
  94. package/dist/templates/app/api/v1/team-invitations/[token]/route.ts +0 -89
  95. package/dist/templates/app/api/v1/team-invitations/docs.md +0 -88
  96. package/dist/templates/app/api/v1/team-invitations/presets.ts +0 -43
  97. package/dist/templates/app/api/v1/team-invitations/route.ts +0 -114
  98. package/dist/templates/app/api/v1/teams/[teamId]/invitations/route.ts +0 -171
  99. package/dist/templates/app/api/v1/teams/[teamId]/invoices/[invoiceNumber]/route.ts +0 -105
  100. package/dist/templates/app/api/v1/teams/[teamId]/invoices/route.ts +0 -125
  101. package/dist/templates/app/api/v1/teams/[teamId]/members/[memberId]/route.ts +0 -263
  102. package/dist/templates/app/api/v1/teams/[teamId]/members/route.ts +0 -358
  103. package/dist/templates/app/api/v1/teams/[teamId]/route.ts +0 -322
  104. package/dist/templates/app/api/v1/teams/[teamId]/subscription/route.ts +0 -50
  105. package/dist/templates/app/api/v1/teams/[teamId]/usage/[limitSlug]/route.ts +0 -91
  106. package/dist/templates/app/api/v1/teams/docs.md +0 -320
  107. package/dist/templates/app/api/v1/teams/presets.ts +0 -178
  108. package/dist/templates/app/api/v1/teams/route.ts +0 -293
  109. package/dist/templates/app/api/v1/teams/switch/route.ts +0 -88
  110. package/dist/templates/app/api/v1/theme/[...path]/route.ts +0 -361
  111. package/dist/templates/app/api/v1/theme/docs.md +0 -74
  112. package/dist/templates/app/api/v1/theme/presets.ts +0 -21
  113. package/dist/templates/app/api/v1/theme/route.ts +0 -96
  114. package/dist/templates/app/api/v1/users/[id]/meta/[key]/route.ts +0 -363
  115. package/dist/templates/app/api/v1/users/[id]/route.ts +0 -302
  116. package/dist/templates/app/api/v1/users/docs.md +0 -93
  117. package/dist/templates/app/api/v1/users/presets.ts +0 -59
  118. package/dist/templates/app/api/v1/users/route.ts +0 -197
  119. package/dist/templates/app/dashboard/(main)/[entity]/[id]/edit/page.tsx +0 -117
  120. package/dist/templates/app/dashboard/(main)/[entity]/[id]/page.tsx +0 -103
  121. package/dist/templates/app/dashboard/(main)/[entity]/create/page.tsx +0 -95
  122. package/dist/templates/app/dashboard/(main)/[entity]/error.tsx +0 -51
  123. package/dist/templates/app/dashboard/(main)/[entity]/layout.tsx +0 -113
  124. package/dist/templates/app/dashboard/(main)/[entity]/loading.tsx +0 -61
  125. package/dist/templates/app/dashboard/(main)/[entity]/page.tsx +0 -90
  126. package/dist/templates/app/dashboard/(main)/layout.tsx +0 -98
  127. package/dist/templates/app/dashboard/(main)/loading.tsx +0 -5
  128. package/dist/templates/app/dashboard/(main)/page.tsx +0 -201
  129. package/dist/templates/app/dashboard/(main)/patterns/[id]/edit/page.tsx +0 -114
  130. package/dist/templates/app/dashboard/(main)/patterns/[id]/page.tsx +0 -20
  131. package/dist/templates/app/dashboard/(main)/patterns/[id]/reports/page.tsx +0 -171
  132. package/dist/templates/app/dashboard/(main)/patterns/create/page.tsx +0 -86
  133. package/dist/templates/app/dashboard/(main)/patterns/page.tsx +0 -444
  134. package/dist/templates/app/dashboard/features/analytics/page.tsx +0 -35
  135. package/dist/templates/app/dashboard/features/automation/page.tsx +0 -35
  136. package/dist/templates/app/dashboard/features/layout.tsx +0 -13
  137. package/dist/templates/app/dashboard/features/loading.tsx +0 -5
  138. package/dist/templates/app/dashboard/features/webhooks/page.tsx +0 -35
  139. package/dist/templates/app/dashboard/layout.tsx +0 -86
  140. package/dist/templates/app/dashboard/permission-denied/page.tsx +0 -29
  141. package/dist/templates/app/dashboard/settings/api-keys/loading.tsx +0 -5
  142. package/dist/templates/app/dashboard/settings/api-keys/page.tsx +0 -513
  143. package/dist/templates/app/dashboard/settings/billing/loading.tsx +0 -5
  144. package/dist/templates/app/dashboard/settings/billing/page.tsx +0 -284
  145. package/dist/templates/app/dashboard/settings/invoices/[invoiceNumber]/page.tsx +0 -222
  146. package/dist/templates/app/dashboard/settings/invoices/loading.tsx +0 -5
  147. package/dist/templates/app/dashboard/settings/invoices/page.tsx +0 -82
  148. package/dist/templates/app/dashboard/settings/layout.tsx +0 -151
  149. package/dist/templates/app/dashboard/settings/loading.tsx +0 -5
  150. package/dist/templates/app/dashboard/settings/notifications/loading.tsx +0 -5
  151. package/dist/templates/app/dashboard/settings/notifications/page.tsx +0 -462
  152. package/dist/templates/app/dashboard/settings/page.tsx +0 -92
  153. package/dist/templates/app/dashboard/settings/password/loading.tsx +0 -5
  154. package/dist/templates/app/dashboard/settings/password/page.tsx +0 -306
  155. package/dist/templates/app/dashboard/settings/plans/loading.tsx +0 -5
  156. package/dist/templates/app/dashboard/settings/plans/page.tsx +0 -40
  157. package/dist/templates/app/dashboard/settings/profile/loading.tsx +0 -5
  158. package/dist/templates/app/dashboard/settings/profile/page.tsx +0 -686
  159. package/dist/templates/app/dashboard/settings/security/loading.tsx +0 -5
  160. package/dist/templates/app/dashboard/settings/security/page.tsx +0 -505
  161. package/dist/templates/app/dashboard/settings/teams/loading.tsx +0 -5
  162. package/dist/templates/app/dashboard/settings/teams/page.tsx +0 -272
  163. package/dist/templates/app/dashboard/settings/teams/permissions/page.tsx +0 -92
  164. package/dist/templates/app/devtools/blocks/[slug]/page.tsx +0 -39
  165. package/dist/templates/app/devtools/blocks/page.tsx +0 -31
  166. package/dist/templates/app/devtools/config/page.tsx +0 -31
  167. package/dist/templates/app/devtools/features/page.tsx +0 -31
  168. package/dist/templates/app/devtools/flows/page.tsx +0 -31
  169. package/dist/templates/app/devtools/layout.tsx +0 -58
  170. package/dist/templates/app/devtools/page.tsx +0 -121
  171. package/dist/templates/app/devtools/scheduled-actions/page.tsx +0 -157
  172. package/dist/templates/app/devtools/style/page.tsx +0 -330
  173. package/dist/templates/app/devtools/tags/page.tsx +0 -31
  174. package/dist/templates/app/devtools/tests/[[...path]]/page.tsx +0 -47
  175. package/dist/templates/app/favicon.ico +0 -0
  176. package/dist/templates/app/globals.css +0 -12
  177. package/dist/templates/app/layout.tsx +0 -96
  178. package/dist/templates/app/public/page.tsx +0 -30
  179. package/dist/templates/app/superadmin/docs/[section]/[page]/page.tsx +0 -92
  180. package/dist/templates/app/superadmin/docs/page.tsx +0 -75
  181. package/dist/templates/app/superadmin/layout.tsx +0 -67
  182. package/dist/templates/app/superadmin/page.tsx +0 -149
  183. package/dist/templates/app/superadmin/subscriptions/page.tsx +0 -655
  184. package/dist/templates/app/superadmin/team-roles/page.tsx +0 -493
  185. package/dist/templates/app/superadmin/teams/[teamId]/page.tsx +0 -687
  186. package/dist/templates/app/superadmin/teams/page.tsx +0 -302
  187. package/dist/templates/app/superadmin/users/[userId]/page.tsx +0 -548
  188. package/dist/templates/app/superadmin/users/page.tsx +0 -528
  189. package/templates/app/(auth)/forgot-password/page.tsx +0 -216
  190. package/templates/app/(auth)/layout.tsx +0 -51
  191. package/templates/app/(auth)/login/page.tsx +0 -21
  192. package/templates/app/(auth)/reset-password/page.tsx +0 -212
  193. package/templates/app/(auth)/signup/page.tsx +0 -21
  194. package/templates/app/(auth)/verify-email/page.tsx +0 -190
  195. package/templates/app/(public)/[...slug]/page.tsx +0 -378
  196. package/templates/app/(public)/docs/[section]/[page]/page.tsx +0 -90
  197. package/templates/app/(public)/docs/layout.tsx +0 -25
  198. package/templates/app/(public)/docs/page.tsx +0 -81
  199. package/templates/app/(public)/layout.tsx +0 -41
  200. package/templates/app/(public)/page.tsx +0 -19
  201. package/templates/app/403/page.tsx +0 -89
  202. package/templates/app/api/auth/[...all]/route.ts +0 -78
  203. package/templates/app/api/cron/billing/lifecycle/route.ts +0 -98
  204. package/templates/app/api/csp-report/route.ts +0 -175
  205. package/templates/app/api/devtools/config/entities/route.ts +0 -108
  206. package/templates/app/api/devtools/config/theme/route.ts +0 -66
  207. package/templates/app/api/devtools/tests/[...path]/route.ts +0 -130
  208. package/templates/app/api/devtools/tests/route.ts +0 -134
  209. package/templates/app/api/health/route.ts +0 -29
  210. package/templates/app/api/internal/user-metadata/route.ts +0 -36
  211. package/templates/app/api/superadmin/subscriptions/route.ts +0 -310
  212. package/templates/app/api/superadmin/teams/[teamId]/route.ts +0 -286
  213. package/templates/app/api/superadmin/teams/route.ts +0 -188
  214. package/templates/app/api/superadmin/users/[userId]/route.ts +0 -540
  215. package/templates/app/api/superadmin/users/route.ts +0 -323
  216. package/templates/app/api/user/delete-account/route.ts +0 -55
  217. package/templates/app/api/user/plan-flags/route.ts +0 -283
  218. package/templates/app/api/user/profile/route.ts +0 -133
  219. package/templates/app/api/v1/[entity]/[id]/child/[childType]/[childId]/route.ts +0 -210
  220. package/templates/app/api/v1/[entity]/[id]/child/[childType]/route.ts +0 -331
  221. package/templates/app/api/v1/[entity]/[id]/route.ts +0 -35
  222. package/templates/app/api/v1/[entity]/docs.md +0 -369
  223. package/templates/app/api/v1/[entity]/presets.ts +0 -194
  224. package/templates/app/api/v1/[entity]/route.ts +0 -31
  225. package/templates/app/api/v1/api-keys/[id]/route.ts +0 -303
  226. package/templates/app/api/v1/api-keys/docs.md +0 -101
  227. package/templates/app/api/v1/api-keys/presets.ts +0 -31
  228. package/templates/app/api/v1/api-keys/route.ts +0 -250
  229. package/templates/app/api/v1/auth/docs.md +0 -184
  230. package/templates/app/api/v1/auth/presets.ts +0 -44
  231. package/templates/app/api/v1/auth/signup-with-invite/route.ts +0 -227
  232. package/templates/app/api/v1/billing/cancel/route.ts +0 -206
  233. package/templates/app/api/v1/billing/change-plan/route.ts +0 -97
  234. package/templates/app/api/v1/billing/check-action/route.ts +0 -81
  235. package/templates/app/api/v1/billing/checkout/route.ts +0 -124
  236. package/templates/app/api/v1/billing/docs.md +0 -209
  237. package/templates/app/api/v1/billing/plans/route.ts +0 -85
  238. package/templates/app/api/v1/billing/portal/route.ts +0 -90
  239. package/templates/app/api/v1/billing/presets.ts +0 -121
  240. package/templates/app/api/v1/billing/webhooks/stripe/route.ts +0 -428
  241. package/templates/app/api/v1/blocks/[slug]/route.ts +0 -29
  242. package/templates/app/api/v1/blocks/docs.md +0 -173
  243. package/templates/app/api/v1/blocks/presets.ts +0 -121
  244. package/templates/app/api/v1/blocks/route.ts +0 -45
  245. package/templates/app/api/v1/blocks/validate/route.ts +0 -45
  246. package/templates/app/api/v1/cron/docs.md +0 -116
  247. package/templates/app/api/v1/cron/presets.ts +0 -26
  248. package/templates/app/api/v1/cron/process/route.ts +0 -108
  249. package/templates/app/api/v1/devtools/blocks/route.ts +0 -82
  250. package/templates/app/api/v1/devtools/docs/route.ts +0 -150
  251. package/templates/app/api/v1/devtools/docs.md +0 -204
  252. package/templates/app/api/v1/devtools/features/route.ts +0 -61
  253. package/templates/app/api/v1/devtools/flows/route.ts +0 -61
  254. package/templates/app/api/v1/devtools/presets.ts +0 -113
  255. package/templates/app/api/v1/devtools/scheduled-actions/route.ts +0 -120
  256. package/templates/app/api/v1/devtools/testing/route.ts +0 -82
  257. package/templates/app/api/v1/media/docs.md +0 -117
  258. package/templates/app/api/v1/media/presets.ts +0 -24
  259. package/templates/app/api/v1/media/upload/route.ts +0 -150
  260. package/templates/app/api/v1/patterns/[id]/usages/route.ts +0 -116
  261. package/templates/app/api/v1/plugin/[...path]/route.ts +0 -373
  262. package/templates/app/api/v1/plugin/docs.md +0 -79
  263. package/templates/app/api/v1/plugin/presets.ts +0 -21
  264. package/templates/app/api/v1/plugin/route.ts +0 -96
  265. package/templates/app/api/v1/post-categories/[id]/route.ts +0 -255
  266. package/templates/app/api/v1/post-categories/docs.md +0 -134
  267. package/templates/app/api/v1/post-categories/presets.ts +0 -78
  268. package/templates/app/api/v1/post-categories/route.ts +0 -119
  269. package/templates/app/api/v1/team-invitations/[token]/accept/route.ts +0 -179
  270. package/templates/app/api/v1/team-invitations/[token]/decline/route.ts +0 -120
  271. package/templates/app/api/v1/team-invitations/[token]/route.ts +0 -89
  272. package/templates/app/api/v1/team-invitations/docs.md +0 -88
  273. package/templates/app/api/v1/team-invitations/presets.ts +0 -43
  274. package/templates/app/api/v1/team-invitations/route.ts +0 -114
  275. package/templates/app/api/v1/teams/[teamId]/invitations/route.ts +0 -171
  276. package/templates/app/api/v1/teams/[teamId]/invoices/[invoiceNumber]/route.ts +0 -105
  277. package/templates/app/api/v1/teams/[teamId]/invoices/route.ts +0 -125
  278. package/templates/app/api/v1/teams/[teamId]/members/[memberId]/route.ts +0 -263
  279. package/templates/app/api/v1/teams/[teamId]/members/route.ts +0 -358
  280. package/templates/app/api/v1/teams/[teamId]/route.ts +0 -322
  281. package/templates/app/api/v1/teams/[teamId]/subscription/route.ts +0 -50
  282. package/templates/app/api/v1/teams/[teamId]/usage/[limitSlug]/route.ts +0 -91
  283. package/templates/app/api/v1/teams/docs.md +0 -320
  284. package/templates/app/api/v1/teams/presets.ts +0 -178
  285. package/templates/app/api/v1/teams/route.ts +0 -293
  286. package/templates/app/api/v1/teams/switch/route.ts +0 -88
  287. package/templates/app/api/v1/theme/[...path]/route.ts +0 -361
  288. package/templates/app/api/v1/theme/docs.md +0 -74
  289. package/templates/app/api/v1/theme/presets.ts +0 -21
  290. package/templates/app/api/v1/theme/route.ts +0 -96
  291. package/templates/app/api/v1/users/[id]/meta/[key]/route.ts +0 -363
  292. package/templates/app/api/v1/users/[id]/route.ts +0 -302
  293. package/templates/app/api/v1/users/docs.md +0 -93
  294. package/templates/app/api/v1/users/presets.ts +0 -59
  295. package/templates/app/api/v1/users/route.ts +0 -197
  296. package/templates/app/dashboard/(main)/[entity]/[id]/edit/page.tsx +0 -117
  297. package/templates/app/dashboard/(main)/[entity]/[id]/page.tsx +0 -103
  298. package/templates/app/dashboard/(main)/[entity]/create/page.tsx +0 -95
  299. package/templates/app/dashboard/(main)/[entity]/error.tsx +0 -51
  300. package/templates/app/dashboard/(main)/[entity]/layout.tsx +0 -113
  301. package/templates/app/dashboard/(main)/[entity]/loading.tsx +0 -61
  302. package/templates/app/dashboard/(main)/[entity]/page.tsx +0 -90
  303. package/templates/app/dashboard/(main)/layout.tsx +0 -98
  304. package/templates/app/dashboard/(main)/loading.tsx +0 -5
  305. package/templates/app/dashboard/(main)/page.tsx +0 -201
  306. package/templates/app/dashboard/(main)/patterns/[id]/edit/page.tsx +0 -114
  307. package/templates/app/dashboard/(main)/patterns/[id]/page.tsx +0 -20
  308. package/templates/app/dashboard/(main)/patterns/[id]/reports/page.tsx +0 -171
  309. package/templates/app/dashboard/(main)/patterns/create/page.tsx +0 -86
  310. package/templates/app/dashboard/(main)/patterns/page.tsx +0 -444
  311. package/templates/app/dashboard/features/analytics/page.tsx +0 -35
  312. package/templates/app/dashboard/features/automation/page.tsx +0 -35
  313. package/templates/app/dashboard/features/layout.tsx +0 -13
  314. package/templates/app/dashboard/features/loading.tsx +0 -5
  315. package/templates/app/dashboard/features/webhooks/page.tsx +0 -35
  316. package/templates/app/dashboard/layout.tsx +0 -86
  317. package/templates/app/dashboard/permission-denied/page.tsx +0 -29
  318. package/templates/app/dashboard/settings/api-keys/loading.tsx +0 -5
  319. package/templates/app/dashboard/settings/api-keys/page.tsx +0 -513
  320. package/templates/app/dashboard/settings/billing/loading.tsx +0 -5
  321. package/templates/app/dashboard/settings/billing/page.tsx +0 -284
  322. package/templates/app/dashboard/settings/invoices/[invoiceNumber]/page.tsx +0 -222
  323. package/templates/app/dashboard/settings/invoices/loading.tsx +0 -5
  324. package/templates/app/dashboard/settings/invoices/page.tsx +0 -82
  325. package/templates/app/dashboard/settings/layout.tsx +0 -151
  326. package/templates/app/dashboard/settings/loading.tsx +0 -5
  327. package/templates/app/dashboard/settings/notifications/loading.tsx +0 -5
  328. package/templates/app/dashboard/settings/notifications/page.tsx +0 -462
  329. package/templates/app/dashboard/settings/page.tsx +0 -92
  330. package/templates/app/dashboard/settings/password/loading.tsx +0 -5
  331. package/templates/app/dashboard/settings/password/page.tsx +0 -306
  332. package/templates/app/dashboard/settings/plans/loading.tsx +0 -5
  333. package/templates/app/dashboard/settings/plans/page.tsx +0 -40
  334. package/templates/app/dashboard/settings/profile/loading.tsx +0 -5
  335. package/templates/app/dashboard/settings/profile/page.tsx +0 -686
  336. package/templates/app/dashboard/settings/security/loading.tsx +0 -5
  337. package/templates/app/dashboard/settings/security/page.tsx +0 -505
  338. package/templates/app/dashboard/settings/teams/loading.tsx +0 -5
  339. package/templates/app/dashboard/settings/teams/page.tsx +0 -272
  340. package/templates/app/dashboard/settings/teams/permissions/page.tsx +0 -92
  341. package/templates/app/devtools/blocks/[slug]/page.tsx +0 -39
  342. package/templates/app/devtools/blocks/page.tsx +0 -31
  343. package/templates/app/devtools/config/page.tsx +0 -31
  344. package/templates/app/devtools/features/page.tsx +0 -31
  345. package/templates/app/devtools/flows/page.tsx +0 -31
  346. package/templates/app/devtools/layout.tsx +0 -58
  347. package/templates/app/devtools/page.tsx +0 -121
  348. package/templates/app/devtools/scheduled-actions/page.tsx +0 -157
  349. package/templates/app/devtools/style/page.tsx +0 -330
  350. package/templates/app/devtools/tags/page.tsx +0 -31
  351. package/templates/app/devtools/tests/[[...path]]/page.tsx +0 -47
  352. package/templates/app/favicon.ico +0 -0
  353. package/templates/app/globals.css +0 -12
  354. package/templates/app/layout.tsx +0 -96
  355. package/templates/app/public/page.tsx +0 -30
  356. package/templates/app/superadmin/docs/[section]/[page]/page.tsx +0 -92
  357. package/templates/app/superadmin/docs/page.tsx +0 -75
  358. package/templates/app/superadmin/layout.tsx +0 -67
  359. package/templates/app/superadmin/page.tsx +0 -149
  360. package/templates/app/superadmin/subscriptions/page.tsx +0 -655
  361. package/templates/app/superadmin/team-roles/page.tsx +0 -493
  362. package/templates/app/superadmin/teams/[teamId]/page.tsx +0 -687
  363. package/templates/app/superadmin/teams/page.tsx +0 -302
  364. package/templates/app/superadmin/users/[userId]/page.tsx +0 -548
  365. package/templates/app/superadmin/users/page.tsx +0 -528
@@ -1,373 +0,0 @@
1
- /**
2
- * Dynamic Plugin API Router with Catch-All Paths
3
- *
4
- * Handles API requests for any plugin with nested paths
5
- * Route: /api/v1/plugins/[...path]
6
- */
7
-
8
- import { NextRequest, NextResponse } from 'next/server'
9
- import { PluginService, type RouteFileEndpoint, type PluginRegistryEntry } from '@nextsparkjs/core/lib/services'
10
- import { PLUGIN_REGISTRY } from '@nextsparkjs/registries/plugin-registry'
11
-
12
- export async function GET(
13
- request: NextRequest,
14
- { params }: { params: Promise<{ path: string[] }> }
15
- ) {
16
- const { path } = await params
17
- return handlePluginRequest(request, path, 'GET')
18
- }
19
-
20
- export async function POST(
21
- request: NextRequest,
22
- { params }: { params: Promise<{ path: string[] }> }
23
- ) {
24
- const { path } = await params
25
- return handlePluginRequest(request, path, 'POST')
26
- }
27
-
28
- export async function PUT(
29
- request: NextRequest,
30
- { params }: { params: Promise<{ path: string[] }> }
31
- ) {
32
- const { path } = await params
33
- return handlePluginRequest(request, path, 'PUT')
34
- }
35
-
36
- export async function DELETE(
37
- request: NextRequest,
38
- { params }: { params: Promise<{ path: string[] }> }
39
- ) {
40
- const { path } = await params
41
- return handlePluginRequest(request, path, 'DELETE')
42
- }
43
-
44
- export async function PATCH(
45
- request: NextRequest,
46
- { params }: { params: Promise<{ path: string[] }> }
47
- ) {
48
- const { path } = await params
49
- return handlePluginRequest(request, path, 'PATCH')
50
- }
51
-
52
- /**
53
- * Handle plugin API requests with nested paths
54
- */
55
- async function handlePluginRequest(
56
- request: NextRequest,
57
- pathSegments: string[],
58
- method: string
59
- ): Promise<NextResponse> {
60
- console.log(`[Plugin API] Handling request: ${method} ${pathSegments.join('/')}`)
61
-
62
- try {
63
- // Extract plugin name from path segments
64
- if (!pathSegments || pathSegments.length === 0) {
65
- return NextResponse.json(
66
- {
67
- error: 'Plugin name is required',
68
- format: '/api/v1/plugins/{pluginName}/{endpoint}'
69
- },
70
- { status: 400 }
71
- )
72
- }
73
-
74
- const [pluginName, ...remainingPath] = pathSegments
75
-
76
- // Get registered plugins
77
- const plugins = PluginService.getAll()
78
- const plugin = plugins.find(p => p.name === pluginName)
79
-
80
- if (!plugin) {
81
- return NextResponse.json(
82
- {
83
- error: 'Plugin not found',
84
- requested: pluginName,
85
- available: plugins.map(p => p.name)
86
- },
87
- { status: 404 }
88
- )
89
- }
90
-
91
- if (!plugin.enabled) {
92
- return NextResponse.json(
93
- { error: 'Plugin is disabled' },
94
- { status: 403 }
95
- )
96
- }
97
-
98
- // Construct the endpoint path
99
- const endpointPath = remainingPath.length > 0 ? '/' + remainingPath.join('/') : '/'
100
-
101
- // Construct the full request path for registry lookup
102
- const requestPath = `/api/v1/plugin/${pathSegments.join('/')}`
103
-
104
- // Check if route exists in registry metadata
105
- if (PluginService.hasRoute(requestPath, method)) {
106
- console.log(`[Plugin API] Route found in registry: ${requestPath}`)
107
- // Note: Route exists but execution handled by fallback mechanisms below
108
- // This maintains zero-dynamic-imports policy
109
- } else {
110
- console.log(`[Plugin API] No route found for ${requestPath}, method: ${method}`)
111
-
112
- // Check if this plugin has route files but handler not found - possible configuration issue
113
- const pluginEntry = (PLUGIN_REGISTRY as Record<string, PluginRegistryEntry>)[pluginName]
114
- if (pluginEntry?.routeFiles && pluginEntry.routeFiles.length > 0) {
115
- console.warn(`[Plugin API] Plugin '${pluginName}' has route files but route '${requestPath}' not found in registry`)
116
- }
117
- }
118
-
119
- // Fallback: Try to load plugin's API handler from registry
120
- const pluginEntry2 = (PLUGIN_REGISTRY as Record<string, PluginRegistryEntry>)[pluginName]
121
- if (pluginEntry2?.hasAPI) {
122
- const response = await loadPluginAPIFromRegistry(pluginName, request, method, endpointPath)
123
- if (response) {
124
- return response
125
- }
126
- }
127
-
128
-
129
- // Fallback to plugin's built-in API handler
130
- if (plugin.api && typeof plugin.api.handler === 'function') {
131
- return plugin.api.handler(request, method, endpointPath)
132
- }
133
-
134
- // Default plugin info endpoint
135
- if (endpointPath === '/' && method === 'GET') {
136
- return NextResponse.json({
137
- plugin: {
138
- name: plugin.name,
139
- displayName: plugin.displayName,
140
- version: plugin.version,
141
- description: plugin.description,
142
- enabled: plugin.enabled,
143
- dependencies: plugin.dependencies,
144
- hasAPI: !!plugin.api || hasPluginAPIFiles(pluginName) || PluginService.getPluginRouteEndpoints().length > 0,
145
- components: plugin.components ? Object.keys(plugin.components) : [],
146
- services: plugin.services ? Object.keys(plugin.services) : []
147
- }
148
- })
149
- }
150
-
151
- // Plugin doesn't support this endpoint
152
- return NextResponse.json(
153
- {
154
- error: 'Endpoint not supported by plugin',
155
- plugin: plugin.name,
156
- path: endpointPath,
157
- method,
158
- availableEndpoints: getPluginEndpoints(pluginName)
159
- },
160
- { status: 404 }
161
- )
162
-
163
- } catch (error) {
164
- console.error('[Plugin API] Error handling nested request:', error)
165
-
166
- return NextResponse.json(
167
- {
168
- error: 'Internal server error',
169
- message: error instanceof Error ? error.message : 'Unknown error'
170
- },
171
- { status: 500 }
172
- )
173
- }
174
- }
175
-
176
- /**
177
- * Match route pattern with dynamic parameters
178
- * Example: 'orders/[orderId]/items' matches 'orders/123/items'
179
- */
180
- function matchRoutePattern(pattern: string, path: string): { matches: boolean; params: Record<string, string> } {
181
- const params: Record<string, string> = {}
182
-
183
- // Split both pattern and path into segments
184
- const patternSegments = pattern.split('/').filter(Boolean)
185
- const pathSegments = path.split('/').filter(Boolean)
186
-
187
- // Must have same number of segments
188
- if (patternSegments.length !== pathSegments.length) {
189
- return { matches: false, params }
190
- }
191
-
192
- // Check each segment
193
- for (let i = 0; i < patternSegments.length; i++) {
194
- const patternSeg = patternSegments[i]
195
- const pathSeg = pathSegments[i]
196
-
197
- // Check if this is a dynamic parameter [paramName]
198
- if (patternSeg.startsWith('[') && patternSeg.endsWith(']')) {
199
- // Extract parameter name
200
- const paramName = patternSeg.slice(1, -1)
201
- params[paramName] = pathSeg
202
- } else {
203
- // Static segment must match exactly
204
- if (patternSeg !== pathSeg) {
205
- return { matches: false, params: {} }
206
- }
207
- }
208
- }
209
-
210
- return { matches: true, params }
211
- }
212
-
213
- /**
214
- * Load plugin API handler from registry (dynamic plugin loading)
215
- */
216
- async function loadPluginAPIFromRegistry(
217
- pluginName: string,
218
- request: NextRequest,
219
- method: string,
220
- path: string
221
- ): Promise<NextResponse | null> {
222
- try {
223
- const pluginEntry = (PLUGIN_REGISTRY as Record<string, PluginRegistryEntry>)[pluginName]
224
-
225
- if (!pluginEntry) {
226
- return null
227
- }
228
-
229
- // First, check if the plugin has a config-based API handler
230
- const plugin = pluginEntry.config
231
- if (plugin.api && typeof plugin.api.handler === 'function') {
232
- console.log(`[Plugin API] Using ${pluginName} config handler for ${path}`)
233
-
234
- // Ensure endpoints are registered if the plugin has a registration function
235
- if (plugin.api.registerEndpoints && typeof plugin.api.registerEndpoints === 'function') {
236
- plugin.api.registerEndpoints()
237
- }
238
-
239
- return plugin.api.handler(request, method, path)
240
- }
241
-
242
- // Use the plugin config's API handler if available
243
- console.log(`[Plugin API] Checking plugin config for API handler`)
244
-
245
- // If no API handler in config, and the plugin has route files, show available routes
246
- if (pluginEntry.routeFiles && pluginEntry.routeFiles.length > 0) {
247
- // Find matching route with dynamic parameter support
248
- let matchedRoute: RouteFileEndpoint | undefined
249
- let extractedParams: Record<string, string> = {}
250
-
251
- const endpointPath = path.substring(1) // Remove leading slash
252
-
253
- for (const route of pluginEntry.routeFiles) {
254
- const { matches, params } = matchRoutePattern(route.relativePath, endpointPath)
255
-
256
- if (matches && route.methods.includes(method)) {
257
- matchedRoute = route
258
- extractedParams = params
259
- break
260
- }
261
- }
262
-
263
- if (matchedRoute) {
264
- console.log(`[Plugin API] Found route file for ${pluginName}: ${matchedRoute.relativePath}`)
265
- console.log(`[Plugin API] Extracted params:`, extractedParams)
266
-
267
- // Execute the plugin route using static imports (Next.js compatible)
268
- try {
269
- console.log(`[Plugin API] Executing ${method} for ${pluginName}:${matchedRoute.relativePath}`)
270
-
271
- // Use the pattern from registry for handler lookup (not the actual path)
272
- const routeKey = `${pluginName}/${matchedRoute.relativePath}`
273
- const pluginHandler = RouteHandlerService.getPluginHandler(routeKey, method)
274
-
275
- if (!pluginHandler) {
276
- console.error(`[Plugin API] Handler not found for ${routeKey}:${method}`)
277
- return NextResponse.json(
278
- {
279
- error: `Method ${method} not supported`,
280
- plugin: pluginName,
281
- route: matchedRoute.relativePath,
282
- availableMethods: matchedRoute.methods
283
- },
284
- { status: 405 }
285
- )
286
- }
287
-
288
- // Execute the plugin handler with extracted dynamic parameters
289
- return await pluginHandler(request, {
290
- params: Promise.resolve(extractedParams)
291
- })
292
-
293
- } catch (executionError) {
294
- console.error(`[Plugin API] Error executing plugin route:`, executionError)
295
-
296
- return NextResponse.json(
297
- {
298
- success: false,
299
- error: 'Plugin route execution failed',
300
- plugin: pluginName,
301
- route: matchedRoute.relativePath,
302
- message: executionError instanceof Error ? executionError.message : 'Unknown execution error',
303
- details: 'Failed to execute plugin route handler'
304
- },
305
- { status: 500 }
306
- )
307
- }
308
- }
309
- }
310
-
311
- return null
312
-
313
- } catch (error) {
314
- console.error(`[Plugin API] Error loading ${pluginName} API from registry:`, error)
315
-
316
- return NextResponse.json(
317
- {
318
- error: 'Plugin API error',
319
- plugin: pluginName,
320
- message: error instanceof Error ? error.message : 'Unknown error'
321
- },
322
- { status: 500 }
323
- )
324
- }
325
- }
326
-
327
- /**
328
- * Check if plugin has API files (using registry)
329
- */
330
- function hasPluginAPIFiles(pluginName: string): boolean {
331
- const pluginEntry = (PLUGIN_REGISTRY as Record<string, PluginRegistryEntry>)[pluginName]
332
- return pluginEntry?.hasAPI || false
333
- }
334
-
335
- interface PluginEndpoint {
336
- path: string
337
- methods: string[]
338
- description: string
339
- source: string
340
- }
341
-
342
- /**
343
- * Get available endpoints for a plugin (using registry)
344
- */
345
- function getPluginEndpoints(pluginName: string): PluginEndpoint[] {
346
- const endpoints = []
347
-
348
- // Get plugin's route file endpoints from registry
349
- const pluginEntry = (PLUGIN_REGISTRY as Record<string, PluginRegistryEntry>)[pluginName]
350
-
351
- if (pluginEntry?.routeFiles) {
352
- endpoints.push(...pluginEntry.routeFiles.map((endpoint: RouteFileEndpoint) => ({
353
- path: endpoint.relativePath === '/' ? '/' : '/' + endpoint.relativePath,
354
- methods: endpoint.methods,
355
- description: `Route file endpoint`,
356
- source: 'route-file'
357
- })))
358
- }
359
-
360
- // Add default endpoint if plugin has API but no specific routes
361
- if (pluginEntry?.hasAPI && endpoints.length === 0) {
362
- endpoints.push({ path: '/', methods: ['GET'], description: 'Basic API available', source: 'default' })
363
- }
364
-
365
- return endpoints.length > 0 ? endpoints : [{ path: '/', methods: ['GET'], description: 'Basic API available', source: 'default' }]
366
- }
367
-
368
- // ========== ROUTE HANDLER REGISTRY (Zero Runtime I/O) ==========
369
- // Import from auto-generated registry - NO direct imports from @/contents allowed
370
- // All route handlers are resolved at build time by scripts/build-registry.mjs
371
- // This provides ~17,255x performance improvement over dynamic imports
372
-
373
- import { RouteHandlerService } from '@nextsparkjs/core/lib/services/route-handler.service'
@@ -1,79 +0,0 @@
1
- # Plugin API
2
-
3
- Access plugin metadata and route plugin-specific endpoints.
4
-
5
- ## Overview
6
-
7
- The Plugin API provides endpoints to list installed plugins and their API capabilities. Plugin-specific endpoints are routed through `/api/v1/plugin/{pluginName}/...`.
8
-
9
- ## Authentication
10
-
11
- - **GET /api/v1/plugin** (list plugins) is public
12
- - Plugin-specific routes may have their own authentication requirements
13
-
14
- ## Endpoints
15
-
16
- ### List Plugins
17
- `GET /api/v1/plugin`
18
-
19
- Returns all registered plugins with their API status and endpoints.
20
-
21
- **Response:**
22
- ```json
23
- {
24
- "success": true,
25
- "plugins": [
26
- {
27
- "name": "email-notifications",
28
- "displayName": "Email Notifications",
29
- "version": "1.0.0",
30
- "description": "Send email notifications for various events",
31
- "enabled": true,
32
- "hasAPI": true,
33
- "apiEndpoints": [
34
- {
35
- "path": "/send",
36
- "methods": ["POST"],
37
- "description": "Route file endpoint"
38
- }
39
- ],
40
- "baseUrl": "/api/v1/plugins/email-notifications",
41
- "components": ["NotificationSettings", "EmailPreview"],
42
- "services": ["EmailService"]
43
- }
44
- ],
45
- "totalPlugins": 5,
46
- "enabledPlugins": 4,
47
- "pluginsWithAPI": 3
48
- }
49
- ```
50
-
51
- ### Plugin-Specific Routes
52
- `* /api/v1/plugin/{pluginName}/...`
53
-
54
- Each plugin can define its own API routes. These are handled by the catch-all route and forwarded to the plugin's route handlers.
55
-
56
- **Example:**
57
- - `POST /api/v1/plugin/email-notifications/send` - Send notification
58
- - `GET /api/v1/plugin/analytics/stats` - Get analytics data
59
-
60
- ## Plugin Structure
61
-
62
- Plugins can expose:
63
- - **API Routes**: Custom endpoints under `/api/v1/plugin/{name}/`
64
- - **Components**: React components for UI
65
- - **Services**: Business logic services
66
-
67
- ## Plugin Registry
68
-
69
- The plugin registry (`PLUGIN_REGISTRY`) contains metadata about each plugin:
70
- - `hasAPI`: Whether the plugin has API routes
71
- - `routeFiles`: List of available route endpoints
72
- - `enabled`: Whether the plugin is active
73
-
74
- ## Error Responses
75
-
76
- | Status | Description |
77
- |--------|-------------|
78
- | 404 | Plugin not found or route doesn't exist |
79
- | 500 | Server Error - Failed to list plugins |
@@ -1,21 +0,0 @@
1
- /**
2
- * API Presets for Plugin
3
- *
4
- * These presets appear in the DevTools API Explorer's "Presets" tab.
5
- */
6
-
7
- import { defineApiEndpoint } from '@nextsparkjs/core/types/api-presets'
8
-
9
- export default defineApiEndpoint({
10
- endpoint: '/api/v1/plugin',
11
- summary: 'Access plugin metadata and API routes',
12
- presets: [
13
- {
14
- id: 'list-plugins',
15
- title: 'List All Plugins',
16
- description: 'Get all registered plugins with API status',
17
- method: 'GET',
18
- tags: ['read', 'list']
19
- }
20
- ]
21
- })
@@ -1,96 +0,0 @@
1
- /**
2
- * Plugin API Base Route
3
- *
4
- * Lists all available plugins and their API status
5
- * Route: /api/v1/plugins
6
- */
7
-
8
- import { NextResponse } from 'next/server'
9
- import { PluginService, type PluginRegistryEntry } from '@nextsparkjs/core/lib/services'
10
- import { PLUGIN_REGISTRY } from '@nextsparkjs/registries/plugin-registry'
11
-
12
- export async function GET() {
13
- return listPluginsWithAPI()
14
- }
15
-
16
- /**
17
- * List all plugins with their API status
18
- */
19
- async function listPluginsWithAPI(): Promise<NextResponse> {
20
- try {
21
- const plugins = PluginService.getAll()
22
-
23
- const pluginsWithAPI = plugins.map((plugin) => {
24
- const hasAPIFiles = hasPluginAPIFiles(plugin.name)
25
- const endpoints = getPluginEndpoints(plugin.name)
26
-
27
- return {
28
- name: plugin.name,
29
- displayName: plugin.displayName,
30
- version: plugin.version,
31
- description: plugin.description,
32
- enabled: plugin.enabled,
33
- hasAPI: !!plugin.api || hasAPIFiles,
34
- apiEndpoints: endpoints,
35
- baseUrl: `/api/v1/plugins/${plugin.name}`,
36
- components: plugin.components ? Object.keys(plugin.components) : [],
37
- services: plugin.services ? Object.keys(plugin.services) : []
38
- }
39
- })
40
-
41
- return NextResponse.json({
42
- success: true,
43
- plugins: pluginsWithAPI,
44
- totalPlugins: plugins.length,
45
- enabledPlugins: plugins.filter(p => p.enabled).length,
46
- pluginsWithAPI: pluginsWithAPI.filter(p => p.hasAPI).length
47
- })
48
-
49
- } catch (error) {
50
- console.error('[Plugin API] Error listing plugins:', error)
51
-
52
- return NextResponse.json(
53
- {
54
- error: 'Failed to list plugins',
55
- message: error instanceof Error ? error.message : 'Unknown error'
56
- },
57
- { status: 500 }
58
- )
59
- }
60
- }
61
-
62
- /**
63
- * Check if plugin has API files (using registry)
64
- */
65
- function hasPluginAPIFiles(pluginName: string): boolean {
66
- const pluginEntry = (PLUGIN_REGISTRY as Record<string, PluginRegistryEntry>)[pluginName]
67
- return pluginEntry?.hasAPI || false
68
- }
69
-
70
- interface PluginEndpoint {
71
- path: string
72
- methods: string[]
73
- description: string
74
- }
75
-
76
- /**
77
- * Get available endpoints for a plugin (using registry)
78
- */
79
- function getPluginEndpoints(pluginName: string): PluginEndpoint[] {
80
- const pluginEntry = (PLUGIN_REGISTRY as Record<string, PluginRegistryEntry>)[pluginName]
81
-
82
- if (pluginEntry?.routeFiles) {
83
- return pluginEntry.routeFiles.map((endpoint) => ({
84
- path: endpoint.relativePath === '/' ? '/' : '/' + endpoint.relativePath,
85
- methods: endpoint.methods,
86
- description: 'Route file endpoint'
87
- }))
88
- }
89
-
90
- // Default endpoint if plugin has API but no specific routes
91
- if (pluginEntry?.hasAPI) {
92
- return [{ path: '/', methods: ['GET'], description: 'Basic plugin info' }]
93
- }
94
-
95
- return []
96
- }