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.
- package/LICENSE +22 -0
- package/README.md +122 -0
- package/dist/_dts-chunks/collections-handler.d-DjgO74Wt.d.ts +20540 -0
- package/dist/_dts-chunks/config.d-DNwsDnjs.d.ts +2589 -0
- package/dist/_dts-chunks/define-component.d-BUgTHmt3.d.ts +1149 -0
- package/dist/_dts-chunks/image-processor.d-OO1PmMrv.d.ts +335 -0
- package/dist/_dts-chunks/index.d-axCAzZ7m.d.ts +17842 -0
- package/dist/_dts-chunks/media.d-DjDOZo4B.d.ts +117 -0
- package/dist/_dts-chunks/on-error.d-CHIKWNxd.d.ts +38 -0
- package/dist/_dts-chunks/storage.d-BUhQ2we_.d.ts +404 -0
- package/dist/actions/index.d.ts +239 -0
- package/dist/actions/index.mjs +281 -0
- package/dist/api/auth-state.d.ts +5 -0
- package/dist/api/auth-state.mjs +131 -0
- package/dist/api/collections-schema-detail.d.ts +56 -0
- package/dist/api/collections-schema-detail.mjs +244 -0
- package/dist/api/collections-schema-export.d.ts +56 -0
- package/dist/api/collections-schema-export.mjs +129 -0
- package/dist/api/collections-schema.d.ts +59 -0
- package/dist/api/collections-schema.mjs +207 -0
- package/dist/api/components-detail.d.ts +50 -0
- package/dist/api/components-detail.mjs +132 -0
- package/dist/api/components.d.ts +69 -0
- package/dist/api/components.mjs +144 -0
- package/dist/api/email-providers-default.d.ts +40 -0
- package/dist/api/email-providers-default.mjs +75 -0
- package/dist/api/email-providers-detail.d.ts +81 -0
- package/dist/api/email-providers-detail.mjs +109 -0
- package/dist/api/email-providers-test.d.ts +43 -0
- package/dist/api/email-providers-test.mjs +114 -0
- package/dist/api/email-providers.d.ts +69 -0
- package/dist/api/email-providers.mjs +110 -0
- package/dist/api/email-send-template.d.ts +41 -0
- package/dist/api/email-send-template.mjs +58 -0
- package/dist/api/email-send.d.ts +42 -0
- package/dist/api/email-send.mjs +58 -0
- package/dist/api/email-templates-detail.d.ts +74 -0
- package/dist/api/email-templates-detail.mjs +112 -0
- package/dist/api/email-templates-layout.d.ts +55 -0
- package/dist/api/email-templates-layout.mjs +92 -0
- package/dist/api/email-templates-preview.d.ts +48 -0
- package/dist/api/email-templates-preview.mjs +93 -0
- package/dist/api/email-templates.d.ts +61 -0
- package/dist/api/email-templates.mjs +118 -0
- package/dist/api/health.d.ts +68 -0
- package/dist/api/health.mjs +67 -0
- package/dist/api/index.d.ts +54 -0
- package/dist/api/index.mjs +16 -0
- package/dist/api/media-bulk.d.ts +74 -0
- package/dist/api/media-bulk.mjs +196 -0
- package/dist/api/media-folders.d.ts +112 -0
- package/dist/api/media-folders.mjs +187 -0
- package/dist/api/media-handlers.d.ts +102 -0
- package/dist/api/media-handlers.mjs +437 -0
- package/dist/api/media.d.ts +117 -0
- package/dist/api/media.mjs +242 -0
- package/dist/api/singles-detail.d.ts +87 -0
- package/dist/api/singles-detail.mjs +170 -0
- package/dist/api/singles-schema-detail.d.ts +54 -0
- package/dist/api/singles-schema-detail.mjs +182 -0
- package/dist/api/singles.d.ts +34 -0
- package/dist/api/singles.mjs +94 -0
- package/dist/api/storage-upload-url.d.ts +48 -0
- package/dist/api/storage-upload-url.mjs +202 -0
- package/dist/api/uploads.d.ts +109 -0
- package/dist/api/uploads.mjs +359 -0
- package/dist/auth/index.d.ts +425 -0
- package/dist/auth/index.mjs +199 -0
- package/dist/boot-apply-PQSYLDIN.mjs +7 -0
- package/dist/chunk-2OALJTK6.mjs +489 -0
- package/dist/chunk-2Q2SX2CS.mjs +365 -0
- package/dist/chunk-2TFX4ND3.mjs +13 -0
- package/dist/chunk-2TWPDSYD.mjs +87 -0
- package/dist/chunk-2W3DVD7S.mjs +647 -0
- package/dist/chunk-2ZFKXPQM.mjs +88 -0
- package/dist/chunk-3FA7FKAV.mjs +832 -0
- package/dist/chunk-3NZ2KMBL.mjs +58 -0
- package/dist/chunk-4MJLT6PZ.mjs +0 -0
- package/dist/chunk-56WO4WX7.mjs +0 -0
- package/dist/chunk-5APFUGAD.mjs +89 -0
- package/dist/chunk-5HMZ644B.mjs +108 -0
- package/dist/chunk-67GXH6PR.mjs +32 -0
- package/dist/chunk-6JNEPWRW.mjs +14368 -0
- package/dist/chunk-6NFHQIJD.mjs +45 -0
- package/dist/chunk-7P6ASYW6.mjs +9 -0
- package/dist/chunk-A3WPLSDT.mjs +1364 -0
- package/dist/chunk-AGJ6F2T3.mjs +144 -0
- package/dist/chunk-AK6Z23OX.mjs +1464 -0
- package/dist/chunk-APKKRD2G.mjs +102 -0
- package/dist/chunk-B2GV2BWH.mjs +73 -0
- package/dist/chunk-D5HQBNUB.mjs +74 -0
- package/dist/chunk-DNNG377Z.mjs +204 -0
- package/dist/chunk-DP3G27G5.mjs +135 -0
- package/dist/chunk-DV6WVX2Q.mjs +0 -0
- package/dist/chunk-DXGGXIUZ.mjs +57 -0
- package/dist/chunk-EGXBZCGC.mjs +943 -0
- package/dist/chunk-ERCNLX3V.mjs +176 -0
- package/dist/chunk-FQULBZ53.mjs +850 -0
- package/dist/chunk-G2AA4QLC.mjs +262 -0
- package/dist/chunk-GDBJ5JCU.mjs +488 -0
- package/dist/chunk-GJNSJU4S.mjs +19 -0
- package/dist/chunk-GZ6DCQKC.mjs +69 -0
- package/dist/chunk-H26B4FYG.mjs +167 -0
- package/dist/chunk-I4JMR3UR.mjs +21 -0
- package/dist/chunk-INV7QKLG.mjs +508 -0
- package/dist/chunk-IUDOC7N7.mjs +46 -0
- package/dist/chunk-IZWPRDC3.mjs +206 -0
- package/dist/chunk-KIMNCZGV.mjs +15 -0
- package/dist/chunk-L6HW2DA7.mjs +15 -0
- package/dist/chunk-LAZXX4HR.mjs +100 -0
- package/dist/chunk-LDKCUMHK.mjs +95 -0
- package/dist/chunk-LRXMECUA.mjs +0 -0
- package/dist/chunk-M52VMPGA.mjs +119 -0
- package/dist/chunk-MGUWEEI6.mjs +160 -0
- package/dist/chunk-NRUWQ5Z7.mjs +419 -0
- package/dist/chunk-NSEFNNU4.mjs +25360 -0
- package/dist/chunk-NTHVDFGO.mjs +138 -0
- package/dist/chunk-O3QHXMOX.mjs +3166 -0
- package/dist/chunk-P7NH2OSC.mjs +2605 -0
- package/dist/chunk-PKMABBB5.mjs +184 -0
- package/dist/chunk-PWS6XGJK.mjs +76 -0
- package/dist/chunk-R6JJQHFC.mjs +20 -0
- package/dist/chunk-RJLLGGPG.mjs +0 -0
- package/dist/chunk-SBACDPNX.mjs +689 -0
- package/dist/chunk-TO5AFLVQ.mjs +124 -0
- package/dist/chunk-TS7GHTG2.mjs +5436 -0
- package/dist/chunk-UJ2IMJ4W.mjs +133 -0
- package/dist/chunk-UOP63Q54.mjs +102 -0
- package/dist/chunk-UUOFWCM6.mjs +78 -0
- package/dist/chunk-V4EQTOA4.mjs +893 -0
- package/dist/chunk-VJ66NCL4.mjs +193 -0
- package/dist/chunk-VQJQHVEV.mjs +29 -0
- package/dist/chunk-VTJADRO3.mjs +141 -0
- package/dist/chunk-VWF3JO32.mjs +0 -0
- package/dist/chunk-W4MGXIRR.mjs +27 -0
- package/dist/chunk-W5KKPZT5.mjs +1204 -0
- package/dist/chunk-WD34YQ6T.mjs +381 -0
- package/dist/chunk-WZBYMYVW.mjs +14 -0
- package/dist/chunk-X23WKS3Z.mjs +50 -0
- package/dist/chunk-X7TXCYYN.mjs +6496 -0
- package/dist/chunk-XGI4EMS3.mjs +140 -0
- package/dist/chunk-XZKLBMN6.mjs +1153 -0
- package/dist/chunk-YB7INWPY.mjs +0 -0
- package/dist/chunk-YV4Y7SDL.mjs +83 -0
- package/dist/chunk-YZNBLFIW.mjs +1688 -0
- package/dist/chunk-YZZCTONM.mjs +263 -0
- package/dist/chunk-ZE6A3FYH.mjs +289 -0
- package/dist/cli/nextly.mjs +68 -0
- package/dist/cli/utils/index.d.ts +449 -0
- package/dist/cli/utils/index.mjs +49 -0
- package/dist/component-schema-service-5577KVW6.mjs +11 -0
- package/dist/config-loader-23YEMC3Z.mjs +23 -0
- package/dist/config.d.ts +44 -0
- package/dist/config.mjs +109 -0
- package/dist/container-ORGFGYSZ.mjs +9 -0
- package/dist/database/index.d.ts +12 -0
- package/dist/database/index.mjs +40 -0
- package/dist/database/seeders/index.d.ts +93 -0
- package/dist/database/seeders/index.mjs +47 -0
- package/dist/db-sync-demote-LJGKLB3S.mjs +117 -0
- package/dist/db-sync-promote-B26VSYQF.mjs +113 -0
- package/dist/dev-reload-broadcaster-B73IQ53V.mjs +25 -0
- package/dist/dist-M2NOU37V.mjs +19 -0
- package/dist/drizzle-kit-lazy-D2M2PXR2.mjs +13 -0
- package/dist/dynamic-collection-schema-service-IEXTPIZ7.mjs +8 -0
- package/dist/errors/index.d.ts +159 -0
- package/dist/errors/index.mjs +10 -0
- package/dist/factory-IWMBKUJM.mjs +15 -0
- package/dist/first-run-QIVKWJIF.mjs +63 -0
- package/dist/fresh-push-NR67DC3R.mjs +8 -0
- package/dist/index.d.ts +4175 -0
- package/dist/index.mjs +1336 -0
- package/dist/local-plugin-PTET4NAT.mjs +7 -0
- package/dist/logger-NU46DXNY.mjs +15 -0
- package/dist/logger-YE4TC7ZN.mjs +9 -0
- package/dist/migration-journal-EP532Y4L.mjs +139 -0
- package/dist/migrations/mysql/0000_eager_sentry.sql +174 -0
- package/dist/migrations/mysql/0001_soft_giant_girl.sql +27 -0
- package/dist/migrations/mysql/0002_media_table.sql +24 -0
- package/dist/migrations/mysql/0003_dynamic_singles.sql +37 -0
- package/dist/migrations/mysql/0004_dynamic_components.sql +35 -0
- package/dist/migrations/mysql/0005_user_management_tables.sql +92 -0
- package/dist/migrations/mysql/0006_api_keys.sql +36 -0
- package/dist/migrations/mysql/0007_general_settings.sql +20 -0
- package/dist/migrations/mysql/0008_site_settings_logo_url.sql +9 -0
- package/dist/migrations/mysql/0009_activity_log.sql +30 -0
- package/dist/migrations/mysql/0010_site_settings_sidebar.sql +13 -0
- package/dist/migrations/mysql/0011_missing_tables_and_columns.sql +54 -0
- package/dist/migrations/mysql/0012_image_sizes_and_focal_point.sql +30 -0
- package/dist/migrations/mysql/0012_media_folders.sql +43 -0
- package/dist/migrations/mysql/0013_user_brute_force_protection.sql +31 -0
- package/dist/migrations/mysql/0014_email_template_attachments.sql +12 -0
- package/dist/migrations/mysql/0015_media_uploaded_by_nullable.sql +15 -0
- package/dist/migrations/mysql/20260429_000000_000_initial_journal.sql +22 -0
- package/dist/migrations/mysql/20260501_000000_journal_batch.sql +17 -0
- package/dist/migrations/mysql/20260501_000001_audit_log.sql +24 -0
- package/dist/migrations/mysql/20260504_000000_nextly_meta.sql +21 -0
- package/dist/migrations/mysql/meta/0000_snapshot.json +1005 -0
- package/dist/migrations/mysql/meta/0001_snapshot.json +1099 -0
- package/dist/migrations/mysql/meta/_journal.json +41 -0
- package/dist/migrations/postgresql/0000_misty_king_bedlam.sql +169 -0
- package/dist/migrations/postgresql/0001_perpetual_captain_marvel.sql +8 -0
- package/dist/migrations/postgresql/0002_sad_spectrum.sql +16 -0
- package/dist/migrations/postgresql/0003_hesitant_ultron.sql +17 -0
- package/dist/migrations/postgresql/0004_media_table.sql +24 -0
- package/dist/migrations/postgresql/0005_media_folders.sql +36 -0
- package/dist/migrations/postgresql/0006_dynamic_collections_update.sql +50 -0
- package/dist/migrations/postgresql/0007_dynamic_singles.sql +38 -0
- package/dist/migrations/postgresql/0008_dynamic_components.sql +37 -0
- package/dist/migrations/postgresql/0009_user_management_tables.sql +95 -0
- package/dist/migrations/postgresql/0010_api_keys.sql +34 -0
- package/dist/migrations/postgresql/0011_general_settings.sql +20 -0
- package/dist/migrations/postgresql/0012_site_settings_logo_url.sql +9 -0
- package/dist/migrations/postgresql/0013_activity_log.sql +29 -0
- package/dist/migrations/postgresql/0014_image_sizes_and_focal_point.sql +33 -0
- package/dist/migrations/postgresql/0014_site_settings_sidebar.sql +13 -0
- package/dist/migrations/postgresql/0015_user_brute_force_protection.sql +29 -0
- package/dist/migrations/postgresql/0016_email_template_attachments.sql +12 -0
- package/dist/migrations/postgresql/0017_media_uploaded_by_nullable.sql +15 -0
- package/dist/migrations/postgresql/20260429_000000_000_initial_journal.sql +24 -0
- package/dist/migrations/postgresql/20260501_000000_journal_batch.sql +17 -0
- package/dist/migrations/postgresql/20260501_000001_audit_log.sql +24 -0
- package/dist/migrations/postgresql/20260504_000000_nextly_meta.sql +22 -0
- package/dist/migrations/postgresql/meta/0000_snapshot.json +1286 -0
- package/dist/migrations/postgresql/meta/0001_snapshot.json +1407 -0
- package/dist/migrations/postgresql/meta/0002_snapshot.json +1552 -0
- package/dist/migrations/postgresql/meta/0003_snapshot.json +1695 -0
- package/dist/migrations/postgresql/meta/0010_snapshot.json +2345 -0
- package/dist/migrations/postgresql/meta/_journal.json +90 -0
- package/dist/migrations/sqlite/0000_api_keys.sql +34 -0
- package/dist/migrations/sqlite/0001_general_settings.sql +20 -0
- package/dist/migrations/sqlite/0002_site_settings_logo_url.sql +9 -0
- package/dist/migrations/sqlite/0003_activity_log.sql +29 -0
- package/dist/migrations/sqlite/0004_image_sizes_and_focal_point.sql +29 -0
- package/dist/migrations/sqlite/0004_site_settings_sidebar.sql +11 -0
- package/dist/migrations/sqlite/0005_user_brute_force_protection.sql +29 -0
- package/dist/migrations/sqlite/0006_email_template_attachments.sql +12 -0
- package/dist/migrations/sqlite/0007_media_uploaded_by_nullable.sql +111 -0
- package/dist/migrations/sqlite/20260429_000000_000_initial_journal.sql +24 -0
- package/dist/migrations/sqlite/20260501_000000_journal_batch.sql +19 -0
- package/dist/migrations/sqlite/20260501_000001_audit_log.sql +24 -0
- package/dist/migrations/sqlite/20260504_000000_nextly_meta.sql +21 -0
- package/dist/migrations/sqlite/20260505_000000_user_management_tables.sql +77 -0
- package/dist/next.d.ts +57 -0
- package/dist/next.mjs +55 -0
- package/dist/observability/index.d.ts +87 -0
- package/dist/observability/index.mjs +57 -0
- package/dist/permissions-3DZZQZMI.mjs +39 -0
- package/dist/pipeline-YOML7SWF.mjs +29 -0
- package/dist/preview-ZZTR3QGS.mjs +9 -0
- package/dist/program-PW6UB2ZC.mjs +5934 -0
- package/dist/reconcile-single-tables-7ENVXJGB.mjs +7 -0
- package/dist/register-SF6E6FVU.mjs +49 -0
- package/dist/reload-config-HWQ4G5MM.mjs +23 -0
- package/dist/resolve-single-table-name-JSOMUB3R.mjs +7 -0
- package/dist/routeHandler-UNMMJIBM.mjs +77 -0
- package/dist/runtime-schema-generator-NRA6A6Z6.mjs +8 -0
- package/dist/runtime.d.ts +120 -0
- package/dist/runtime.mjs +73 -0
- package/dist/schema-hash-FMMG6VPJ.mjs +13 -0
- package/dist/schema-registry-EQ36FZDP.mjs +7 -0
- package/dist/scripts/load-env.mjs +42 -0
- package/dist/storage/index.d.ts +566 -0
- package/dist/storage/index.mjs +45 -0
- package/dist/super-admin-G5ZK5F4T.mjs +39 -0
- package/dist/system-table-service-WGSRVEGT.mjs +17 -0
- package/dist/users-7KELGRYJ.mjs +38 -0
- 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 };
|