nextly 0.0.1 → 0.0.2-alpha.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (268) hide show
  1. package/LICENSE +22 -0
  2. package/README.md +122 -0
  3. package/dist/_dts-chunks/collections-handler.d-DjgO74Wt.d.ts +20540 -0
  4. package/dist/_dts-chunks/config.d-DNwsDnjs.d.ts +2589 -0
  5. package/dist/_dts-chunks/define-component.d-BUgTHmt3.d.ts +1149 -0
  6. package/dist/_dts-chunks/image-processor.d-OO1PmMrv.d.ts +335 -0
  7. package/dist/_dts-chunks/index.d-axCAzZ7m.d.ts +17842 -0
  8. package/dist/_dts-chunks/media.d-DjDOZo4B.d.ts +117 -0
  9. package/dist/_dts-chunks/on-error.d-CHIKWNxd.d.ts +38 -0
  10. package/dist/_dts-chunks/storage.d-BUhQ2we_.d.ts +404 -0
  11. package/dist/actions/index.d.ts +239 -0
  12. package/dist/actions/index.mjs +281 -0
  13. package/dist/api/auth-state.d.ts +5 -0
  14. package/dist/api/auth-state.mjs +131 -0
  15. package/dist/api/collections-schema-detail.d.ts +56 -0
  16. package/dist/api/collections-schema-detail.mjs +244 -0
  17. package/dist/api/collections-schema-export.d.ts +56 -0
  18. package/dist/api/collections-schema-export.mjs +129 -0
  19. package/dist/api/collections-schema.d.ts +59 -0
  20. package/dist/api/collections-schema.mjs +207 -0
  21. package/dist/api/components-detail.d.ts +50 -0
  22. package/dist/api/components-detail.mjs +132 -0
  23. package/dist/api/components.d.ts +69 -0
  24. package/dist/api/components.mjs +144 -0
  25. package/dist/api/email-providers-default.d.ts +40 -0
  26. package/dist/api/email-providers-default.mjs +75 -0
  27. package/dist/api/email-providers-detail.d.ts +81 -0
  28. package/dist/api/email-providers-detail.mjs +109 -0
  29. package/dist/api/email-providers-test.d.ts +43 -0
  30. package/dist/api/email-providers-test.mjs +114 -0
  31. package/dist/api/email-providers.d.ts +69 -0
  32. package/dist/api/email-providers.mjs +110 -0
  33. package/dist/api/email-send-template.d.ts +41 -0
  34. package/dist/api/email-send-template.mjs +58 -0
  35. package/dist/api/email-send.d.ts +42 -0
  36. package/dist/api/email-send.mjs +58 -0
  37. package/dist/api/email-templates-detail.d.ts +74 -0
  38. package/dist/api/email-templates-detail.mjs +112 -0
  39. package/dist/api/email-templates-layout.d.ts +55 -0
  40. package/dist/api/email-templates-layout.mjs +92 -0
  41. package/dist/api/email-templates-preview.d.ts +48 -0
  42. package/dist/api/email-templates-preview.mjs +93 -0
  43. package/dist/api/email-templates.d.ts +61 -0
  44. package/dist/api/email-templates.mjs +118 -0
  45. package/dist/api/health.d.ts +68 -0
  46. package/dist/api/health.mjs +67 -0
  47. package/dist/api/index.d.ts +54 -0
  48. package/dist/api/index.mjs +16 -0
  49. package/dist/api/media-bulk.d.ts +74 -0
  50. package/dist/api/media-bulk.mjs +196 -0
  51. package/dist/api/media-folders.d.ts +112 -0
  52. package/dist/api/media-folders.mjs +187 -0
  53. package/dist/api/media-handlers.d.ts +102 -0
  54. package/dist/api/media-handlers.mjs +437 -0
  55. package/dist/api/media.d.ts +117 -0
  56. package/dist/api/media.mjs +242 -0
  57. package/dist/api/singles-detail.d.ts +87 -0
  58. package/dist/api/singles-detail.mjs +170 -0
  59. package/dist/api/singles-schema-detail.d.ts +54 -0
  60. package/dist/api/singles-schema-detail.mjs +182 -0
  61. package/dist/api/singles.d.ts +34 -0
  62. package/dist/api/singles.mjs +94 -0
  63. package/dist/api/storage-upload-url.d.ts +48 -0
  64. package/dist/api/storage-upload-url.mjs +202 -0
  65. package/dist/api/uploads.d.ts +109 -0
  66. package/dist/api/uploads.mjs +359 -0
  67. package/dist/auth/index.d.ts +425 -0
  68. package/dist/auth/index.mjs +199 -0
  69. package/dist/boot-apply-PQSYLDIN.mjs +7 -0
  70. package/dist/chunk-2OALJTK6.mjs +489 -0
  71. package/dist/chunk-2Q2SX2CS.mjs +365 -0
  72. package/dist/chunk-2TFX4ND3.mjs +13 -0
  73. package/dist/chunk-2TWPDSYD.mjs +87 -0
  74. package/dist/chunk-2W3DVD7S.mjs +647 -0
  75. package/dist/chunk-2ZFKXPQM.mjs +88 -0
  76. package/dist/chunk-3FA7FKAV.mjs +832 -0
  77. package/dist/chunk-3NZ2KMBL.mjs +58 -0
  78. package/dist/chunk-4MJLT6PZ.mjs +0 -0
  79. package/dist/chunk-56WO4WX7.mjs +0 -0
  80. package/dist/chunk-5APFUGAD.mjs +89 -0
  81. package/dist/chunk-5HMZ644B.mjs +108 -0
  82. package/dist/chunk-67GXH6PR.mjs +32 -0
  83. package/dist/chunk-6JNEPWRW.mjs +14368 -0
  84. package/dist/chunk-6NFHQIJD.mjs +45 -0
  85. package/dist/chunk-7P6ASYW6.mjs +9 -0
  86. package/dist/chunk-A3WPLSDT.mjs +1364 -0
  87. package/dist/chunk-AGJ6F2T3.mjs +144 -0
  88. package/dist/chunk-AK6Z23OX.mjs +1464 -0
  89. package/dist/chunk-APKKRD2G.mjs +102 -0
  90. package/dist/chunk-B2GV2BWH.mjs +73 -0
  91. package/dist/chunk-D5HQBNUB.mjs +74 -0
  92. package/dist/chunk-DNNG377Z.mjs +204 -0
  93. package/dist/chunk-DP3G27G5.mjs +135 -0
  94. package/dist/chunk-DV6WVX2Q.mjs +0 -0
  95. package/dist/chunk-DXGGXIUZ.mjs +57 -0
  96. package/dist/chunk-EGXBZCGC.mjs +943 -0
  97. package/dist/chunk-ERCNLX3V.mjs +176 -0
  98. package/dist/chunk-FQULBZ53.mjs +850 -0
  99. package/dist/chunk-G2AA4QLC.mjs +262 -0
  100. package/dist/chunk-GDBJ5JCU.mjs +488 -0
  101. package/dist/chunk-GJNSJU4S.mjs +19 -0
  102. package/dist/chunk-GZ6DCQKC.mjs +69 -0
  103. package/dist/chunk-H26B4FYG.mjs +167 -0
  104. package/dist/chunk-I4JMR3UR.mjs +21 -0
  105. package/dist/chunk-INV7QKLG.mjs +508 -0
  106. package/dist/chunk-IUDOC7N7.mjs +46 -0
  107. package/dist/chunk-IZWPRDC3.mjs +206 -0
  108. package/dist/chunk-KIMNCZGV.mjs +15 -0
  109. package/dist/chunk-L6HW2DA7.mjs +15 -0
  110. package/dist/chunk-LAZXX4HR.mjs +100 -0
  111. package/dist/chunk-LDKCUMHK.mjs +95 -0
  112. package/dist/chunk-LRXMECUA.mjs +0 -0
  113. package/dist/chunk-M52VMPGA.mjs +119 -0
  114. package/dist/chunk-MGUWEEI6.mjs +160 -0
  115. package/dist/chunk-NRUWQ5Z7.mjs +419 -0
  116. package/dist/chunk-NSEFNNU4.mjs +25360 -0
  117. package/dist/chunk-NTHVDFGO.mjs +138 -0
  118. package/dist/chunk-O3QHXMOX.mjs +3166 -0
  119. package/dist/chunk-P7NH2OSC.mjs +2605 -0
  120. package/dist/chunk-PKMABBB5.mjs +184 -0
  121. package/dist/chunk-PWS6XGJK.mjs +76 -0
  122. package/dist/chunk-R6JJQHFC.mjs +20 -0
  123. package/dist/chunk-RJLLGGPG.mjs +0 -0
  124. package/dist/chunk-SBACDPNX.mjs +689 -0
  125. package/dist/chunk-TO5AFLVQ.mjs +124 -0
  126. package/dist/chunk-TS7GHTG2.mjs +5436 -0
  127. package/dist/chunk-UJ2IMJ4W.mjs +133 -0
  128. package/dist/chunk-UOP63Q54.mjs +102 -0
  129. package/dist/chunk-UUOFWCM6.mjs +78 -0
  130. package/dist/chunk-V4EQTOA4.mjs +893 -0
  131. package/dist/chunk-VJ66NCL4.mjs +193 -0
  132. package/dist/chunk-VQJQHVEV.mjs +29 -0
  133. package/dist/chunk-VTJADRO3.mjs +141 -0
  134. package/dist/chunk-VWF3JO32.mjs +0 -0
  135. package/dist/chunk-W4MGXIRR.mjs +27 -0
  136. package/dist/chunk-W5KKPZT5.mjs +1204 -0
  137. package/dist/chunk-WD34YQ6T.mjs +381 -0
  138. package/dist/chunk-WZBYMYVW.mjs +14 -0
  139. package/dist/chunk-X23WKS3Z.mjs +50 -0
  140. package/dist/chunk-X7TXCYYN.mjs +6496 -0
  141. package/dist/chunk-XGI4EMS3.mjs +140 -0
  142. package/dist/chunk-XZKLBMN6.mjs +1153 -0
  143. package/dist/chunk-YB7INWPY.mjs +0 -0
  144. package/dist/chunk-YV4Y7SDL.mjs +83 -0
  145. package/dist/chunk-YZNBLFIW.mjs +1688 -0
  146. package/dist/chunk-YZZCTONM.mjs +263 -0
  147. package/dist/chunk-ZE6A3FYH.mjs +289 -0
  148. package/dist/cli/nextly.mjs +68 -0
  149. package/dist/cli/utils/index.d.ts +449 -0
  150. package/dist/cli/utils/index.mjs +49 -0
  151. package/dist/component-schema-service-5577KVW6.mjs +11 -0
  152. package/dist/config-loader-23YEMC3Z.mjs +23 -0
  153. package/dist/config.d.ts +44 -0
  154. package/dist/config.mjs +109 -0
  155. package/dist/container-ORGFGYSZ.mjs +9 -0
  156. package/dist/database/index.d.ts +12 -0
  157. package/dist/database/index.mjs +40 -0
  158. package/dist/database/seeders/index.d.ts +93 -0
  159. package/dist/database/seeders/index.mjs +47 -0
  160. package/dist/db-sync-demote-LJGKLB3S.mjs +117 -0
  161. package/dist/db-sync-promote-B26VSYQF.mjs +113 -0
  162. package/dist/dev-reload-broadcaster-B73IQ53V.mjs +25 -0
  163. package/dist/dist-M2NOU37V.mjs +19 -0
  164. package/dist/drizzle-kit-lazy-D2M2PXR2.mjs +13 -0
  165. package/dist/dynamic-collection-schema-service-IEXTPIZ7.mjs +8 -0
  166. package/dist/errors/index.d.ts +159 -0
  167. package/dist/errors/index.mjs +10 -0
  168. package/dist/factory-IWMBKUJM.mjs +15 -0
  169. package/dist/first-run-QIVKWJIF.mjs +63 -0
  170. package/dist/fresh-push-NR67DC3R.mjs +8 -0
  171. package/dist/index.d.ts +4175 -0
  172. package/dist/index.mjs +1336 -0
  173. package/dist/local-plugin-PTET4NAT.mjs +7 -0
  174. package/dist/logger-NU46DXNY.mjs +15 -0
  175. package/dist/logger-YE4TC7ZN.mjs +9 -0
  176. package/dist/migration-journal-EP532Y4L.mjs +139 -0
  177. package/dist/migrations/mysql/0000_eager_sentry.sql +174 -0
  178. package/dist/migrations/mysql/0001_soft_giant_girl.sql +27 -0
  179. package/dist/migrations/mysql/0002_media_table.sql +24 -0
  180. package/dist/migrations/mysql/0003_dynamic_singles.sql +37 -0
  181. package/dist/migrations/mysql/0004_dynamic_components.sql +35 -0
  182. package/dist/migrations/mysql/0005_user_management_tables.sql +92 -0
  183. package/dist/migrations/mysql/0006_api_keys.sql +36 -0
  184. package/dist/migrations/mysql/0007_general_settings.sql +20 -0
  185. package/dist/migrations/mysql/0008_site_settings_logo_url.sql +9 -0
  186. package/dist/migrations/mysql/0009_activity_log.sql +30 -0
  187. package/dist/migrations/mysql/0010_site_settings_sidebar.sql +13 -0
  188. package/dist/migrations/mysql/0011_missing_tables_and_columns.sql +54 -0
  189. package/dist/migrations/mysql/0012_image_sizes_and_focal_point.sql +30 -0
  190. package/dist/migrations/mysql/0012_media_folders.sql +43 -0
  191. package/dist/migrations/mysql/0013_user_brute_force_protection.sql +31 -0
  192. package/dist/migrations/mysql/0014_email_template_attachments.sql +12 -0
  193. package/dist/migrations/mysql/0015_media_uploaded_by_nullable.sql +15 -0
  194. package/dist/migrations/mysql/20260429_000000_000_initial_journal.sql +22 -0
  195. package/dist/migrations/mysql/20260501_000000_journal_batch.sql +17 -0
  196. package/dist/migrations/mysql/20260501_000001_audit_log.sql +24 -0
  197. package/dist/migrations/mysql/20260504_000000_nextly_meta.sql +21 -0
  198. package/dist/migrations/mysql/meta/0000_snapshot.json +1005 -0
  199. package/dist/migrations/mysql/meta/0001_snapshot.json +1099 -0
  200. package/dist/migrations/mysql/meta/_journal.json +41 -0
  201. package/dist/migrations/postgresql/0000_misty_king_bedlam.sql +169 -0
  202. package/dist/migrations/postgresql/0001_perpetual_captain_marvel.sql +8 -0
  203. package/dist/migrations/postgresql/0002_sad_spectrum.sql +16 -0
  204. package/dist/migrations/postgresql/0003_hesitant_ultron.sql +17 -0
  205. package/dist/migrations/postgresql/0004_media_table.sql +24 -0
  206. package/dist/migrations/postgresql/0005_media_folders.sql +36 -0
  207. package/dist/migrations/postgresql/0006_dynamic_collections_update.sql +50 -0
  208. package/dist/migrations/postgresql/0007_dynamic_singles.sql +38 -0
  209. package/dist/migrations/postgresql/0008_dynamic_components.sql +37 -0
  210. package/dist/migrations/postgresql/0009_user_management_tables.sql +95 -0
  211. package/dist/migrations/postgresql/0010_api_keys.sql +34 -0
  212. package/dist/migrations/postgresql/0011_general_settings.sql +20 -0
  213. package/dist/migrations/postgresql/0012_site_settings_logo_url.sql +9 -0
  214. package/dist/migrations/postgresql/0013_activity_log.sql +29 -0
  215. package/dist/migrations/postgresql/0014_image_sizes_and_focal_point.sql +33 -0
  216. package/dist/migrations/postgresql/0014_site_settings_sidebar.sql +13 -0
  217. package/dist/migrations/postgresql/0015_user_brute_force_protection.sql +29 -0
  218. package/dist/migrations/postgresql/0016_email_template_attachments.sql +12 -0
  219. package/dist/migrations/postgresql/0017_media_uploaded_by_nullable.sql +15 -0
  220. package/dist/migrations/postgresql/20260429_000000_000_initial_journal.sql +24 -0
  221. package/dist/migrations/postgresql/20260501_000000_journal_batch.sql +17 -0
  222. package/dist/migrations/postgresql/20260501_000001_audit_log.sql +24 -0
  223. package/dist/migrations/postgresql/20260504_000000_nextly_meta.sql +22 -0
  224. package/dist/migrations/postgresql/meta/0000_snapshot.json +1286 -0
  225. package/dist/migrations/postgresql/meta/0001_snapshot.json +1407 -0
  226. package/dist/migrations/postgresql/meta/0002_snapshot.json +1552 -0
  227. package/dist/migrations/postgresql/meta/0003_snapshot.json +1695 -0
  228. package/dist/migrations/postgresql/meta/0010_snapshot.json +2345 -0
  229. package/dist/migrations/postgresql/meta/_journal.json +90 -0
  230. package/dist/migrations/sqlite/0000_api_keys.sql +34 -0
  231. package/dist/migrations/sqlite/0001_general_settings.sql +20 -0
  232. package/dist/migrations/sqlite/0002_site_settings_logo_url.sql +9 -0
  233. package/dist/migrations/sqlite/0003_activity_log.sql +29 -0
  234. package/dist/migrations/sqlite/0004_image_sizes_and_focal_point.sql +29 -0
  235. package/dist/migrations/sqlite/0004_site_settings_sidebar.sql +11 -0
  236. package/dist/migrations/sqlite/0005_user_brute_force_protection.sql +29 -0
  237. package/dist/migrations/sqlite/0006_email_template_attachments.sql +12 -0
  238. package/dist/migrations/sqlite/0007_media_uploaded_by_nullable.sql +111 -0
  239. package/dist/migrations/sqlite/20260429_000000_000_initial_journal.sql +24 -0
  240. package/dist/migrations/sqlite/20260501_000000_journal_batch.sql +19 -0
  241. package/dist/migrations/sqlite/20260501_000001_audit_log.sql +24 -0
  242. package/dist/migrations/sqlite/20260504_000000_nextly_meta.sql +21 -0
  243. package/dist/migrations/sqlite/20260505_000000_user_management_tables.sql +77 -0
  244. package/dist/next.d.ts +57 -0
  245. package/dist/next.mjs +55 -0
  246. package/dist/observability/index.d.ts +87 -0
  247. package/dist/observability/index.mjs +57 -0
  248. package/dist/permissions-3DZZQZMI.mjs +39 -0
  249. package/dist/pipeline-YOML7SWF.mjs +29 -0
  250. package/dist/preview-ZZTR3QGS.mjs +9 -0
  251. package/dist/program-PW6UB2ZC.mjs +5934 -0
  252. package/dist/reconcile-single-tables-7ENVXJGB.mjs +7 -0
  253. package/dist/register-SF6E6FVU.mjs +49 -0
  254. package/dist/reload-config-HWQ4G5MM.mjs +23 -0
  255. package/dist/resolve-single-table-name-JSOMUB3R.mjs +7 -0
  256. package/dist/routeHandler-UNMMJIBM.mjs +77 -0
  257. package/dist/runtime-schema-generator-NRA6A6Z6.mjs +8 -0
  258. package/dist/runtime.d.ts +120 -0
  259. package/dist/runtime.mjs +73 -0
  260. package/dist/schema-hash-FMMG6VPJ.mjs +13 -0
  261. package/dist/schema-registry-EQ36FZDP.mjs +7 -0
  262. package/dist/scripts/load-env.mjs +42 -0
  263. package/dist/storage/index.d.ts +566 -0
  264. package/dist/storage/index.mjs +45 -0
  265. package/dist/super-admin-G5ZK5F4T.mjs +39 -0
  266. package/dist/system-table-service-WGSRVEGT.mjs +17 -0
  267. package/dist/users-7KELGRYJ.mjs +38 -0
  268. package/package.json +308 -9
@@ -0,0 +1,187 @@
1
+ import {
2
+ readJsonBody
3
+ } from "../chunk-VQJQHVEV.mjs";
4
+ import "../chunk-VWF3JO32.mjs";
5
+ import {
6
+ withErrorHandler
7
+ } from "../chunk-TO5AFLVQ.mjs";
8
+ import {
9
+ getCachedNextly
10
+ } from "../chunk-P7NH2OSC.mjs";
11
+ import "../chunk-2OALJTK6.mjs";
12
+ import "../chunk-VJ66NCL4.mjs";
13
+ import "../chunk-R6JJQHFC.mjs";
14
+ import "../chunk-X23WKS3Z.mjs";
15
+ import {
16
+ getService
17
+ } from "../chunk-X7TXCYYN.mjs";
18
+ import "../chunk-YZNBLFIW.mjs";
19
+ import "../chunk-FQULBZ53.mjs";
20
+ import "../chunk-67GXH6PR.mjs";
21
+ import "../chunk-2TFX4ND3.mjs";
22
+ import "../chunk-W4MGXIRR.mjs";
23
+ import "../chunk-NSEFNNU4.mjs";
24
+ import "../chunk-3FA7FKAV.mjs";
25
+ import "../chunk-AGJ6F2T3.mjs";
26
+ import "../chunk-KIMNCZGV.mjs";
27
+ import "../chunk-AK6Z23OX.mjs";
28
+ import "../chunk-INV7QKLG.mjs";
29
+ import "../chunk-GZ6DCQKC.mjs";
30
+ import "../chunk-SBACDPNX.mjs";
31
+ import "../chunk-RJLLGGPG.mjs";
32
+ import "../chunk-V4EQTOA4.mjs";
33
+ import "../chunk-I4JMR3UR.mjs";
34
+ import "../chunk-XZKLBMN6.mjs";
35
+ import "../chunk-IZWPRDC3.mjs";
36
+ import "../chunk-DNNG377Z.mjs";
37
+ import "../chunk-5HMZ644B.mjs";
38
+ import "../chunk-W5KKPZT5.mjs";
39
+ import "../chunk-56WO4WX7.mjs";
40
+ import "../chunk-2W3DVD7S.mjs";
41
+ import "../chunk-TS7GHTG2.mjs";
42
+ import "../chunk-H26B4FYG.mjs";
43
+ import "../chunk-DP3G27G5.mjs";
44
+ import "../chunk-DV6WVX2Q.mjs";
45
+ import "../chunk-UJ2IMJ4W.mjs";
46
+ import "../chunk-EGXBZCGC.mjs";
47
+ import "../chunk-G2AA4QLC.mjs";
48
+ import "../chunk-4MJLT6PZ.mjs";
49
+ import {
50
+ respondAction,
51
+ respondData,
52
+ respondDoc,
53
+ respondMutation
54
+ } from "../chunk-IUDOC7N7.mjs";
55
+ import "../chunk-LAZXX4HR.mjs";
56
+ import "../chunk-D5HQBNUB.mjs";
57
+ import {
58
+ NextlyError
59
+ } from "../chunk-NRUWQ5Z7.mjs";
60
+ import "../chunk-VTJADRO3.mjs";
61
+ import "../chunk-5APFUGAD.mjs";
62
+ import "../chunk-7P6ASYW6.mjs";
63
+
64
+ // src/api/media-folders.ts
65
+ async function getMediaService() {
66
+ await getCachedNextly();
67
+ return getService("mediaService");
68
+ }
69
+ function createRequestContext() {
70
+ return {};
71
+ }
72
+ function createAuthenticatedContext(userId) {
73
+ return {
74
+ user: {
75
+ id: userId,
76
+ email: `${userId}@api.local`,
77
+ role: "user",
78
+ permissions: []
79
+ }
80
+ };
81
+ }
82
+ var GET = withErrorHandler(
83
+ async (request) => {
84
+ const mediaService = await getMediaService();
85
+ const context = createRequestContext();
86
+ const { searchParams } = new URL(request.url);
87
+ const root = searchParams.get("root") === "true";
88
+ const parentId = searchParams.get("parentId");
89
+ const folders = root || !parentId ? await mediaService.listRootFolders(context) : await mediaService.listSubfolders(parentId, context);
90
+ return respondData({ folders });
91
+ }
92
+ );
93
+ var POST = withErrorHandler(
94
+ async (request) => {
95
+ const mediaService = await getMediaService();
96
+ const body = await readJsonBody(request);
97
+ const { createdBy, ...folderInput } = body;
98
+ const errors = [];
99
+ if (!createdBy) {
100
+ errors.push({
101
+ path: "createdBy",
102
+ code: "REQUIRED",
103
+ message: "createdBy is required."
104
+ });
105
+ }
106
+ if (!folderInput.name) {
107
+ errors.push({
108
+ path: "name",
109
+ code: "REQUIRED",
110
+ message: "name is required."
111
+ });
112
+ }
113
+ if (errors.length > 0) {
114
+ throw NextlyError.validation({ errors });
115
+ }
116
+ const context = createAuthenticatedContext(createdBy);
117
+ const folder = await mediaService.createFolder(
118
+ folderInput,
119
+ context
120
+ );
121
+ return respondMutation("Folder created.", folder, { status: 201 });
122
+ }
123
+ );
124
+ function getFolderById(request, routeContext) {
125
+ return withErrorHandler(
126
+ async (_req, ctx) => {
127
+ const mediaService = await getMediaService();
128
+ const params = await ctx.params;
129
+ const context = createRequestContext();
130
+ const folder = await mediaService.findFolderById(params.id, context);
131
+ return respondDoc(folder);
132
+ }
133
+ )(request, routeContext);
134
+ }
135
+ function updateFolder(request, routeContext) {
136
+ return withErrorHandler(
137
+ async (req, ctx) => {
138
+ const mediaService = await getMediaService();
139
+ const params = await ctx.params;
140
+ const body = await readJsonBody(req);
141
+ const context = createRequestContext();
142
+ const folder = await mediaService.updateFolder(params.id, body, context);
143
+ return respondMutation("Folder updated.", folder);
144
+ }
145
+ )(request, routeContext);
146
+ }
147
+ function deleteFolder(request, routeContext) {
148
+ return withErrorHandler(
149
+ async (req, ctx) => {
150
+ const mediaService = await getMediaService();
151
+ const params = await ctx.params;
152
+ const context = createRequestContext();
153
+ const { searchParams } = new URL(req.url);
154
+ const deleteContents = searchParams.get("deleteContents") === "true";
155
+ await mediaService.deleteFolder(params.id, deleteContents, context);
156
+ return respondAction("Folder deleted.", { id: params.id });
157
+ }
158
+ )(request, routeContext);
159
+ }
160
+ function getFolderContents(request, routeContext) {
161
+ return withErrorHandler(
162
+ async (_req, ctx) => {
163
+ const mediaService = await getMediaService();
164
+ const params = await ctx.params;
165
+ const context = createRequestContext();
166
+ const contents = await mediaService.getFolderContents(params.id, context);
167
+ return respondData(contents);
168
+ }
169
+ )(request, routeContext);
170
+ }
171
+ var getRootFolderContents = withErrorHandler(
172
+ async (_request) => {
173
+ const mediaService = await getMediaService();
174
+ const context = createRequestContext();
175
+ const contents = await mediaService.getFolderContents(null, context);
176
+ return respondData(contents);
177
+ }
178
+ );
179
+ export {
180
+ GET,
181
+ POST,
182
+ deleteFolder,
183
+ getFolderById,
184
+ getFolderContents,
185
+ getRootFolderContents,
186
+ updateFolder
187
+ };
@@ -0,0 +1,102 @@
1
+ import { S as SanitizedNextlyConfig } from '../_dts-chunks/config.d-DNwsDnjs.d.ts';
2
+ import '../_dts-chunks/collections-handler.d-DjgO74Wt.d.ts';
3
+ import '@nextlyhq/adapter-drizzle';
4
+ import '@nextlyhq/adapter-drizzle/types';
5
+ import 'drizzle-orm/pg-core';
6
+ import 'react';
7
+ import '../_dts-chunks/media.d-DjDOZo4B.d.ts';
8
+ import 'zod';
9
+ import '../_dts-chunks/image-processor.d-OO1PmMrv.d.ts';
10
+ import 'drizzle-orm';
11
+ import '../_dts-chunks/storage.d-BUhQ2we_.d.ts';
12
+
13
+ /**
14
+ * Dynamic Media Route Handler
15
+ *
16
+ * Creates HTTP method handlers for Next.js media API routes using a catch-all pattern.
17
+ * This provides a single handler that routes all media operations (files, folders).
18
+ *
19
+ * Uses a single catch-all route to handle all media-related endpoints,
20
+ * simplifying the consumer's route structure.
21
+ *
22
+ * **IMPORTANT:** For storage plugins (S3, Vercel Blob, etc.) to work, you must
23
+ * initialize Nextly with your config before these routes are called. The recommended
24
+ * approach is to use Next.js instrumentation:
25
+ *
26
+ * ```typescript
27
+ * // src/instrumentation.ts
28
+ * export async function register() {
29
+ * if (process.env.NEXT_RUNTIME === "nodejs") {
30
+ * const { getNextly } = await import("nextly");
31
+ * const nextlyConfig = (await import("./nextly.config")).default;
32
+ * await getNextly({ config: nextlyConfig });
33
+ * }
34
+ * }
35
+ * ```
36
+ *
37
+ * @example
38
+ * ```typescript
39
+ * // In your Next.js app: app/api/media/[[...path]]/route.ts
40
+ * import { createMediaHandlers } from 'nextly/api/media-handlers';
41
+ *
42
+ * const handlers = createMediaHandlers();
43
+ * export const GET = handlers.GET;
44
+ * export const POST = handlers.POST;
45
+ * export const PATCH = handlers.PATCH;
46
+ * export const DELETE = handlers.DELETE;
47
+ * ```
48
+ *
49
+ * Supported Routes:
50
+ * - GET /api/media - List media with pagination
51
+ * - POST /api/media - Upload new media file
52
+ * - GET /api/media/:id - Get media by ID
53
+ * - PATCH /api/media/:id - Update media metadata
54
+ * - DELETE /api/media/:id - Delete media file
55
+ * - PATCH /api/media/:id/move - Move media to folder
56
+ * - GET /api/media/folders - List folders
57
+ * - POST /api/media/folders - Create folder
58
+ * - GET /api/media/folders/:id - Get folder by ID
59
+ * - PATCH /api/media/folders/:id - Update folder
60
+ * - DELETE /api/media/folders/:id - Delete folder
61
+ * - GET /api/media/folders/:id/contents - Get folder contents
62
+ * - GET /api/media/folders/root/contents - Get root folder contents
63
+ *
64
+ * @module api/media-handlers
65
+ */
66
+
67
+ /**
68
+ * Route context for Next.js App Router dynamic routes.
69
+ */
70
+ interface RouteContext {
71
+ params: Promise<{
72
+ path?: string[];
73
+ }>;
74
+ }
75
+ /**
76
+ * Options for creating media handlers.
77
+ */
78
+ interface MediaHandlerOptions {
79
+ /**
80
+ * Nextly configuration object.
81
+ * Pass this to ensure storage plugins are available even if
82
+ * instrumentation hasn't run in this worker process.
83
+ */
84
+ config?: SanitizedNextlyConfig;
85
+ }
86
+ /**
87
+ * Create dynamic HTTP method handlers for Next.js media API routes
88
+ *
89
+ * Use with a catch-all route pattern: app/api/media/[[...path]]/route.ts
90
+ *
91
+ * @param options - Optional configuration including nextly config
92
+ * @returns Object with handlers for GET, POST, PATCH, DELETE
93
+ */
94
+ declare function createMediaHandlers(options?: MediaHandlerOptions): {
95
+ GET: (request: Request, ctx: RouteContext) => Promise<Response>;
96
+ POST: (request: Request, ctx: RouteContext) => Promise<Response>;
97
+ PATCH: (request: Request, ctx: RouteContext) => Promise<Response>;
98
+ DELETE: (request: Request, ctx: RouteContext) => Promise<Response>;
99
+ };
100
+
101
+ export { createMediaHandlers };
102
+ export type { MediaHandlerOptions, RouteContext };