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,109 @@
|
|
|
1
|
+
import {
|
|
2
|
+
requireAuthHeader
|
|
3
|
+
} from "../chunk-WZBYMYVW.mjs";
|
|
4
|
+
import {
|
|
5
|
+
readJsonBody
|
|
6
|
+
} from "../chunk-VQJQHVEV.mjs";
|
|
7
|
+
import "../chunk-VWF3JO32.mjs";
|
|
8
|
+
import {
|
|
9
|
+
withErrorHandler
|
|
10
|
+
} from "../chunk-TO5AFLVQ.mjs";
|
|
11
|
+
import {
|
|
12
|
+
getCachedNextly
|
|
13
|
+
} from "../chunk-P7NH2OSC.mjs";
|
|
14
|
+
import "../chunk-2OALJTK6.mjs";
|
|
15
|
+
import "../chunk-VJ66NCL4.mjs";
|
|
16
|
+
import "../chunk-R6JJQHFC.mjs";
|
|
17
|
+
import "../chunk-X23WKS3Z.mjs";
|
|
18
|
+
import "../chunk-X7TXCYYN.mjs";
|
|
19
|
+
import "../chunk-YZNBLFIW.mjs";
|
|
20
|
+
import "../chunk-FQULBZ53.mjs";
|
|
21
|
+
import "../chunk-67GXH6PR.mjs";
|
|
22
|
+
import "../chunk-2TFX4ND3.mjs";
|
|
23
|
+
import "../chunk-W4MGXIRR.mjs";
|
|
24
|
+
import "../chunk-NSEFNNU4.mjs";
|
|
25
|
+
import "../chunk-3FA7FKAV.mjs";
|
|
26
|
+
import "../chunk-AGJ6F2T3.mjs";
|
|
27
|
+
import "../chunk-KIMNCZGV.mjs";
|
|
28
|
+
import "../chunk-AK6Z23OX.mjs";
|
|
29
|
+
import "../chunk-INV7QKLG.mjs";
|
|
30
|
+
import "../chunk-GZ6DCQKC.mjs";
|
|
31
|
+
import "../chunk-SBACDPNX.mjs";
|
|
32
|
+
import "../chunk-RJLLGGPG.mjs";
|
|
33
|
+
import "../chunk-V4EQTOA4.mjs";
|
|
34
|
+
import "../chunk-I4JMR3UR.mjs";
|
|
35
|
+
import "../chunk-XZKLBMN6.mjs";
|
|
36
|
+
import "../chunk-IZWPRDC3.mjs";
|
|
37
|
+
import "../chunk-DNNG377Z.mjs";
|
|
38
|
+
import "../chunk-5HMZ644B.mjs";
|
|
39
|
+
import "../chunk-W5KKPZT5.mjs";
|
|
40
|
+
import "../chunk-56WO4WX7.mjs";
|
|
41
|
+
import "../chunk-2W3DVD7S.mjs";
|
|
42
|
+
import "../chunk-TS7GHTG2.mjs";
|
|
43
|
+
import "../chunk-H26B4FYG.mjs";
|
|
44
|
+
import "../chunk-DP3G27G5.mjs";
|
|
45
|
+
import "../chunk-DV6WVX2Q.mjs";
|
|
46
|
+
import "../chunk-UJ2IMJ4W.mjs";
|
|
47
|
+
import "../chunk-EGXBZCGC.mjs";
|
|
48
|
+
import "../chunk-G2AA4QLC.mjs";
|
|
49
|
+
import "../chunk-4MJLT6PZ.mjs";
|
|
50
|
+
import {
|
|
51
|
+
respondAction,
|
|
52
|
+
respondDoc,
|
|
53
|
+
respondMutation
|
|
54
|
+
} from "../chunk-IUDOC7N7.mjs";
|
|
55
|
+
import "../chunk-LAZXX4HR.mjs";
|
|
56
|
+
import {
|
|
57
|
+
container
|
|
58
|
+
} from "../chunk-D5HQBNUB.mjs";
|
|
59
|
+
import "../chunk-NRUWQ5Z7.mjs";
|
|
60
|
+
import "../chunk-VTJADRO3.mjs";
|
|
61
|
+
import "../chunk-5APFUGAD.mjs";
|
|
62
|
+
import "../chunk-7P6ASYW6.mjs";
|
|
63
|
+
|
|
64
|
+
// src/api/email-providers-detail.ts
|
|
65
|
+
async function getEmailProviderService() {
|
|
66
|
+
await getCachedNextly();
|
|
67
|
+
return container.get("emailProviderService");
|
|
68
|
+
}
|
|
69
|
+
var GET = withErrorHandler(
|
|
70
|
+
async (request, context) => {
|
|
71
|
+
requireAuthHeader(request);
|
|
72
|
+
const { id } = await context.params;
|
|
73
|
+
const service = await getEmailProviderService();
|
|
74
|
+
const provider = await service.getProvider(id);
|
|
75
|
+
return respondDoc(provider);
|
|
76
|
+
}
|
|
77
|
+
);
|
|
78
|
+
var PATCH = withErrorHandler(
|
|
79
|
+
async (request, context) => {
|
|
80
|
+
requireAuthHeader(request);
|
|
81
|
+
const { id } = await context.params;
|
|
82
|
+
const body = await readJsonBody(request);
|
|
83
|
+
const updateData = {};
|
|
84
|
+
if (body.name !== void 0) updateData.name = body.name;
|
|
85
|
+
if (body.type !== void 0) updateData.type = body.type;
|
|
86
|
+
if (body.fromEmail !== void 0) updateData.fromEmail = body.fromEmail;
|
|
87
|
+
if (body.fromName !== void 0) updateData.fromName = body.fromName;
|
|
88
|
+
if (body.configuration !== void 0)
|
|
89
|
+
updateData.configuration = body.configuration;
|
|
90
|
+
if (body.isActive !== void 0) updateData.isActive = body.isActive;
|
|
91
|
+
const service = await getEmailProviderService();
|
|
92
|
+
const provider = await service.updateProvider(id, updateData);
|
|
93
|
+
return respondMutation("Email provider updated.", provider);
|
|
94
|
+
}
|
|
95
|
+
);
|
|
96
|
+
var DELETE = withErrorHandler(
|
|
97
|
+
async (request, context) => {
|
|
98
|
+
requireAuthHeader(request);
|
|
99
|
+
const { id } = await context.params;
|
|
100
|
+
const service = await getEmailProviderService();
|
|
101
|
+
await service.deleteProvider(id);
|
|
102
|
+
return respondAction("Email provider deleted.", { providerId: id });
|
|
103
|
+
}
|
|
104
|
+
);
|
|
105
|
+
export {
|
|
106
|
+
DELETE,
|
|
107
|
+
GET,
|
|
108
|
+
PATCH
|
|
109
|
+
};
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Email Provider Test API Route Handler for Next.js
|
|
3
|
+
*
|
|
4
|
+
* Sends a test email through a specific provider to verify configuration.
|
|
5
|
+
* Re-export in your Next.js application at /api/email-providers/[id]/test.
|
|
6
|
+
*
|
|
7
|
+
* @example
|
|
8
|
+
* ```typescript
|
|
9
|
+
* // In your Next.js app: app/api/email-providers/[id]/test/route.ts
|
|
10
|
+
* export { POST } from 'nextly/api/email-providers-test';
|
|
11
|
+
* ```
|
|
12
|
+
*
|
|
13
|
+
* @module api/email-providers-test
|
|
14
|
+
*/
|
|
15
|
+
interface RouteContext {
|
|
16
|
+
params: Promise<{
|
|
17
|
+
id: string;
|
|
18
|
+
}>;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* POST handler for testing an email provider.
|
|
22
|
+
*
|
|
23
|
+
* Sends a test email through the specified provider to verify that
|
|
24
|
+
* the configuration (credentials, host, etc.) is correct.
|
|
25
|
+
*
|
|
26
|
+
* Requires authentication. Provider must be active.
|
|
27
|
+
*
|
|
28
|
+
* Request Body (optional):
|
|
29
|
+
* - email: Email address to send the test email to (optional; falls back
|
|
30
|
+
* to the provider's `fromEmail`)
|
|
31
|
+
*
|
|
32
|
+
* Response Codes:
|
|
33
|
+
* - 200 OK: Test completed (check `success` field for result)
|
|
34
|
+
* - 400 Bad Request: Invalid input
|
|
35
|
+
* - 401 Unauthorized: Authentication required
|
|
36
|
+
* - 404 Not Found: Provider with ID does not exist
|
|
37
|
+
* - 500 Internal Server Error: Test failed
|
|
38
|
+
*
|
|
39
|
+
* Response: `{ "data": { "success": boolean, "error"?: string } }`
|
|
40
|
+
*/
|
|
41
|
+
declare const POST: (request: Request, context: RouteContext) => Promise<Response>;
|
|
42
|
+
|
|
43
|
+
export { POST };
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
import {
|
|
2
|
+
requireAuthHeader
|
|
3
|
+
} from "../chunk-WZBYMYVW.mjs";
|
|
4
|
+
import {
|
|
5
|
+
nextlyValidationFromZod
|
|
6
|
+
} from "../chunk-GJNSJU4S.mjs";
|
|
7
|
+
import "../chunk-VWF3JO32.mjs";
|
|
8
|
+
import {
|
|
9
|
+
withErrorHandler
|
|
10
|
+
} from "../chunk-TO5AFLVQ.mjs";
|
|
11
|
+
import {
|
|
12
|
+
getCachedNextly
|
|
13
|
+
} from "../chunk-P7NH2OSC.mjs";
|
|
14
|
+
import "../chunk-2OALJTK6.mjs";
|
|
15
|
+
import "../chunk-VJ66NCL4.mjs";
|
|
16
|
+
import "../chunk-R6JJQHFC.mjs";
|
|
17
|
+
import "../chunk-X23WKS3Z.mjs";
|
|
18
|
+
import "../chunk-X7TXCYYN.mjs";
|
|
19
|
+
import "../chunk-YZNBLFIW.mjs";
|
|
20
|
+
import "../chunk-FQULBZ53.mjs";
|
|
21
|
+
import "../chunk-67GXH6PR.mjs";
|
|
22
|
+
import "../chunk-2TFX4ND3.mjs";
|
|
23
|
+
import "../chunk-W4MGXIRR.mjs";
|
|
24
|
+
import "../chunk-NSEFNNU4.mjs";
|
|
25
|
+
import "../chunk-3FA7FKAV.mjs";
|
|
26
|
+
import "../chunk-AGJ6F2T3.mjs";
|
|
27
|
+
import "../chunk-KIMNCZGV.mjs";
|
|
28
|
+
import "../chunk-AK6Z23OX.mjs";
|
|
29
|
+
import "../chunk-INV7QKLG.mjs";
|
|
30
|
+
import "../chunk-GZ6DCQKC.mjs";
|
|
31
|
+
import "../chunk-SBACDPNX.mjs";
|
|
32
|
+
import "../chunk-RJLLGGPG.mjs";
|
|
33
|
+
import "../chunk-V4EQTOA4.mjs";
|
|
34
|
+
import "../chunk-I4JMR3UR.mjs";
|
|
35
|
+
import "../chunk-XZKLBMN6.mjs";
|
|
36
|
+
import "../chunk-IZWPRDC3.mjs";
|
|
37
|
+
import "../chunk-DNNG377Z.mjs";
|
|
38
|
+
import "../chunk-5HMZ644B.mjs";
|
|
39
|
+
import "../chunk-W5KKPZT5.mjs";
|
|
40
|
+
import "../chunk-56WO4WX7.mjs";
|
|
41
|
+
import "../chunk-2W3DVD7S.mjs";
|
|
42
|
+
import "../chunk-TS7GHTG2.mjs";
|
|
43
|
+
import "../chunk-H26B4FYG.mjs";
|
|
44
|
+
import "../chunk-DP3G27G5.mjs";
|
|
45
|
+
import "../chunk-DV6WVX2Q.mjs";
|
|
46
|
+
import "../chunk-UJ2IMJ4W.mjs";
|
|
47
|
+
import "../chunk-EGXBZCGC.mjs";
|
|
48
|
+
import "../chunk-G2AA4QLC.mjs";
|
|
49
|
+
import "../chunk-4MJLT6PZ.mjs";
|
|
50
|
+
import {
|
|
51
|
+
respondAction
|
|
52
|
+
} from "../chunk-IUDOC7N7.mjs";
|
|
53
|
+
import "../chunk-LAZXX4HR.mjs";
|
|
54
|
+
import {
|
|
55
|
+
container
|
|
56
|
+
} from "../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/email-providers-test.ts
|
|
65
|
+
import { z } from "zod";
|
|
66
|
+
async function getEmailProviderService() {
|
|
67
|
+
await getCachedNextly();
|
|
68
|
+
return container.get("emailProviderService");
|
|
69
|
+
}
|
|
70
|
+
var testProviderSchema = z.object({
|
|
71
|
+
// Optional; when omitted the service falls back to the provider's fromEmail.
|
|
72
|
+
email: z.string().email("A valid test email address is required").optional()
|
|
73
|
+
});
|
|
74
|
+
var POST = withErrorHandler(
|
|
75
|
+
async (request, context) => {
|
|
76
|
+
requireAuthHeader(request);
|
|
77
|
+
const { id } = await context.params;
|
|
78
|
+
const service = await getEmailProviderService();
|
|
79
|
+
let body = {};
|
|
80
|
+
const contentType = request.headers.get("content-type") ?? "";
|
|
81
|
+
if (contentType.includes("application/json")) {
|
|
82
|
+
try {
|
|
83
|
+
body = await request.json();
|
|
84
|
+
} catch {
|
|
85
|
+
throw new NextlyError({
|
|
86
|
+
code: "VALIDATION_ERROR",
|
|
87
|
+
publicMessage: "Validation failed.",
|
|
88
|
+
publicData: {
|
|
89
|
+
errors: [
|
|
90
|
+
{
|
|
91
|
+
path: "",
|
|
92
|
+
code: "invalid_json",
|
|
93
|
+
message: "Request body is not valid JSON."
|
|
94
|
+
}
|
|
95
|
+
]
|
|
96
|
+
},
|
|
97
|
+
logContext: { reason: "invalid-json-body" }
|
|
98
|
+
});
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
let validated;
|
|
102
|
+
try {
|
|
103
|
+
validated = testProviderSchema.parse(body);
|
|
104
|
+
} catch (err) {
|
|
105
|
+
if (err instanceof z.ZodError) throw nextlyValidationFromZod(err);
|
|
106
|
+
throw err;
|
|
107
|
+
}
|
|
108
|
+
const result = await service.testProvider(id, validated.email);
|
|
109
|
+
return respondAction("Test email dispatched.", { result });
|
|
110
|
+
}
|
|
111
|
+
);
|
|
112
|
+
export {
|
|
113
|
+
POST
|
|
114
|
+
};
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Email Providers API Route Handlers for Next.js
|
|
3
|
+
*
|
|
4
|
+
* These route handlers can be re-exported in your Next.js application to provide
|
|
5
|
+
* email provider management endpoints at /api/email-providers.
|
|
6
|
+
*
|
|
7
|
+
* Services are auto-initialized on first request using environment variables:
|
|
8
|
+
* - DB_DIALECT: Database dialect ("postgresql" | "mysql" | "sqlite")
|
|
9
|
+
* - DATABASE_URL: Database connection string
|
|
10
|
+
*
|
|
11
|
+
* @example
|
|
12
|
+
* ```typescript
|
|
13
|
+
* // In your Next.js app: app/api/email-providers/route.ts
|
|
14
|
+
* export { GET, POST } from 'nextly/api/email-providers';
|
|
15
|
+
* ```
|
|
16
|
+
*
|
|
17
|
+
* The list endpoint is not server-paginated; admin code reads the array
|
|
18
|
+
* length directly. There is no synthetic `meta.total`.
|
|
19
|
+
*
|
|
20
|
+
* @module api/email-providers
|
|
21
|
+
*/
|
|
22
|
+
/**
|
|
23
|
+
* GET handler for listing all email providers.
|
|
24
|
+
*
|
|
25
|
+
* Requires authentication. Returns providers with masked configuration
|
|
26
|
+
* (sensitive fields like API keys and passwords are replaced with "••••••••").
|
|
27
|
+
*
|
|
28
|
+
* Response Codes:
|
|
29
|
+
* - 200 OK: Providers list retrieved successfully
|
|
30
|
+
* - 401 Unauthorized: Authentication required
|
|
31
|
+
* - 500 Internal Server Error: Failed to fetch providers
|
|
32
|
+
*
|
|
33
|
+
* Response: `{ "data": EmailProvider[] }`; non-paginated list.
|
|
34
|
+
*
|
|
35
|
+
* @example
|
|
36
|
+
* ```bash
|
|
37
|
+
* curl -H "Authorization: Bearer <token>" \
|
|
38
|
+
* "http://localhost:3000/api/email-providers"
|
|
39
|
+
* # => {"data":[...]}
|
|
40
|
+
* ```
|
|
41
|
+
*/
|
|
42
|
+
declare const GET: (request: Request) => Promise<Response>;
|
|
43
|
+
/**
|
|
44
|
+
* POST handler for creating a new email provider.
|
|
45
|
+
*
|
|
46
|
+
* Requires authentication. Creates a provider with encrypted configuration.
|
|
47
|
+
* If `isDefault` is true, the previous default provider is unset atomically.
|
|
48
|
+
*
|
|
49
|
+
* Request Body:
|
|
50
|
+
* - name: Display name (required)
|
|
51
|
+
* - type: Provider type, one of "smtp", "resend", or "sendlayer" (required)
|
|
52
|
+
* - fromEmail: From email address (required)
|
|
53
|
+
* - fromName: From display name (optional)
|
|
54
|
+
* - configuration: Provider-specific config object (required)
|
|
55
|
+
* - isDefault: Set as default provider (optional, default: false)
|
|
56
|
+
* - isActive: Enable provider (optional, default: true)
|
|
57
|
+
*
|
|
58
|
+
* Response Codes:
|
|
59
|
+
* - 201 Created: Provider created successfully
|
|
60
|
+
* - 400 Bad Request: Invalid input
|
|
61
|
+
* - 401 Unauthorized: Authentication required
|
|
62
|
+
* - 500 Internal Server Error: Creation failed
|
|
63
|
+
*
|
|
64
|
+
* Response: `{ "data": EmailProvider }`; created provider with masked
|
|
65
|
+
* configuration. Status 201.
|
|
66
|
+
*/
|
|
67
|
+
declare const POST: (request: Request) => Promise<Response>;
|
|
68
|
+
|
|
69
|
+
export { GET, POST };
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
import {
|
|
2
|
+
requireAuthHeader
|
|
3
|
+
} from "../chunk-WZBYMYVW.mjs";
|
|
4
|
+
import {
|
|
5
|
+
readJsonBody
|
|
6
|
+
} from "../chunk-VQJQHVEV.mjs";
|
|
7
|
+
import {
|
|
8
|
+
nextlyValidationFromZod
|
|
9
|
+
} from "../chunk-GJNSJU4S.mjs";
|
|
10
|
+
import "../chunk-VWF3JO32.mjs";
|
|
11
|
+
import {
|
|
12
|
+
withErrorHandler
|
|
13
|
+
} from "../chunk-TO5AFLVQ.mjs";
|
|
14
|
+
import {
|
|
15
|
+
getCachedNextly
|
|
16
|
+
} from "../chunk-P7NH2OSC.mjs";
|
|
17
|
+
import "../chunk-2OALJTK6.mjs";
|
|
18
|
+
import "../chunk-VJ66NCL4.mjs";
|
|
19
|
+
import "../chunk-R6JJQHFC.mjs";
|
|
20
|
+
import "../chunk-X23WKS3Z.mjs";
|
|
21
|
+
import "../chunk-X7TXCYYN.mjs";
|
|
22
|
+
import "../chunk-YZNBLFIW.mjs";
|
|
23
|
+
import "../chunk-FQULBZ53.mjs";
|
|
24
|
+
import "../chunk-67GXH6PR.mjs";
|
|
25
|
+
import "../chunk-2TFX4ND3.mjs";
|
|
26
|
+
import "../chunk-W4MGXIRR.mjs";
|
|
27
|
+
import "../chunk-NSEFNNU4.mjs";
|
|
28
|
+
import "../chunk-3FA7FKAV.mjs";
|
|
29
|
+
import "../chunk-AGJ6F2T3.mjs";
|
|
30
|
+
import "../chunk-KIMNCZGV.mjs";
|
|
31
|
+
import "../chunk-AK6Z23OX.mjs";
|
|
32
|
+
import "../chunk-INV7QKLG.mjs";
|
|
33
|
+
import "../chunk-GZ6DCQKC.mjs";
|
|
34
|
+
import "../chunk-SBACDPNX.mjs";
|
|
35
|
+
import "../chunk-RJLLGGPG.mjs";
|
|
36
|
+
import "../chunk-V4EQTOA4.mjs";
|
|
37
|
+
import "../chunk-I4JMR3UR.mjs";
|
|
38
|
+
import "../chunk-XZKLBMN6.mjs";
|
|
39
|
+
import "../chunk-IZWPRDC3.mjs";
|
|
40
|
+
import "../chunk-DNNG377Z.mjs";
|
|
41
|
+
import "../chunk-5HMZ644B.mjs";
|
|
42
|
+
import "../chunk-W5KKPZT5.mjs";
|
|
43
|
+
import "../chunk-56WO4WX7.mjs";
|
|
44
|
+
import "../chunk-2W3DVD7S.mjs";
|
|
45
|
+
import "../chunk-TS7GHTG2.mjs";
|
|
46
|
+
import "../chunk-H26B4FYG.mjs";
|
|
47
|
+
import "../chunk-DP3G27G5.mjs";
|
|
48
|
+
import "../chunk-DV6WVX2Q.mjs";
|
|
49
|
+
import "../chunk-UJ2IMJ4W.mjs";
|
|
50
|
+
import "../chunk-EGXBZCGC.mjs";
|
|
51
|
+
import "../chunk-G2AA4QLC.mjs";
|
|
52
|
+
import "../chunk-4MJLT6PZ.mjs";
|
|
53
|
+
import {
|
|
54
|
+
respondData,
|
|
55
|
+
respondMutation
|
|
56
|
+
} from "../chunk-IUDOC7N7.mjs";
|
|
57
|
+
import "../chunk-LAZXX4HR.mjs";
|
|
58
|
+
import {
|
|
59
|
+
container
|
|
60
|
+
} from "../chunk-D5HQBNUB.mjs";
|
|
61
|
+
import "../chunk-NRUWQ5Z7.mjs";
|
|
62
|
+
import "../chunk-VTJADRO3.mjs";
|
|
63
|
+
import "../chunk-5APFUGAD.mjs";
|
|
64
|
+
import "../chunk-7P6ASYW6.mjs";
|
|
65
|
+
|
|
66
|
+
// src/api/email-providers.ts
|
|
67
|
+
import { z } from "zod";
|
|
68
|
+
async function getEmailProviderService() {
|
|
69
|
+
await getCachedNextly();
|
|
70
|
+
return container.get("emailProviderService");
|
|
71
|
+
}
|
|
72
|
+
var createProviderSchema = z.object({
|
|
73
|
+
name: z.string().min(1, "Name is required").max(255),
|
|
74
|
+
type: z.enum(["smtp", "resend", "sendlayer"], {
|
|
75
|
+
message: "Type must be 'smtp', 'resend', or 'sendlayer'"
|
|
76
|
+
}),
|
|
77
|
+
fromEmail: z.string().email("Invalid from email address"),
|
|
78
|
+
fromName: z.string().max(255).optional().nullable(),
|
|
79
|
+
configuration: z.record(z.string(), z.unknown()),
|
|
80
|
+
isDefault: z.boolean().optional(),
|
|
81
|
+
isActive: z.boolean().optional()
|
|
82
|
+
});
|
|
83
|
+
var GET = withErrorHandler(
|
|
84
|
+
async (request) => {
|
|
85
|
+
requireAuthHeader(request);
|
|
86
|
+
const service = await getEmailProviderService();
|
|
87
|
+
const providers = await service.listProviders();
|
|
88
|
+
return respondData({ providers });
|
|
89
|
+
}
|
|
90
|
+
);
|
|
91
|
+
var POST = withErrorHandler(
|
|
92
|
+
async (request) => {
|
|
93
|
+
requireAuthHeader(request);
|
|
94
|
+
const body = await readJsonBody(request);
|
|
95
|
+
let validated;
|
|
96
|
+
try {
|
|
97
|
+
validated = createProviderSchema.parse(body);
|
|
98
|
+
} catch (err) {
|
|
99
|
+
if (err instanceof z.ZodError) throw nextlyValidationFromZod(err);
|
|
100
|
+
throw err;
|
|
101
|
+
}
|
|
102
|
+
const service = await getEmailProviderService();
|
|
103
|
+
const provider = await service.createProvider(validated);
|
|
104
|
+
return respondMutation("Email provider created.", provider, { status: 201 });
|
|
105
|
+
}
|
|
106
|
+
);
|
|
107
|
+
export {
|
|
108
|
+
GET,
|
|
109
|
+
POST
|
|
110
|
+
};
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Email Send-With-Template API Route Handler for Next.js
|
|
3
|
+
*
|
|
4
|
+
* Sends an email rendered from a named template.
|
|
5
|
+
* Re-export in your Next.js application at /api/email/send-with-template.
|
|
6
|
+
*
|
|
7
|
+
* @example
|
|
8
|
+
* ```typescript
|
|
9
|
+
* // app/api/email/send-with-template/route.ts
|
|
10
|
+
* export { POST } from 'nextly/api/email-send-template';
|
|
11
|
+
* ```
|
|
12
|
+
*
|
|
13
|
+
* The service returns `{ success, messageId? }`; the body surfaces both
|
|
14
|
+
* fields plus the resolved template id alongside a server-authored toast
|
|
15
|
+
* via `respondAction`. The attachment resolver throws `NextlyError`
|
|
16
|
+
* directly (validation for caller-fixable failures, internal for storage
|
|
17
|
+
* I/O); the machine-readable `EMAIL_ATTACHMENT_*` code lives at
|
|
18
|
+
* `error.data.errors[0].code`.
|
|
19
|
+
*
|
|
20
|
+
* @module api/email-send-template
|
|
21
|
+
*/
|
|
22
|
+
/**
|
|
23
|
+
* POST handler for sending an email using a template.
|
|
24
|
+
*
|
|
25
|
+
* Request body:
|
|
26
|
+
* - `to` (string, required): Recipient email address
|
|
27
|
+
* - `template` (string, required): Template slug
|
|
28
|
+
* - `variables` (object, optional): Interpolation variables
|
|
29
|
+
* - `cc` / `bcc` (string[], optional)
|
|
30
|
+
* - `providerId` (string, optional)
|
|
31
|
+
* - `attachments` (array, optional): `[{ mediaId, filename? }]`
|
|
32
|
+
*
|
|
33
|
+
* Response codes:
|
|
34
|
+
* - 200 OK: `{ message, success, messageId?, templateId }` via `respondAction`.
|
|
35
|
+
* - 400 Bad Request: invalid body / attachment count or size exceeded / mediaId not found.
|
|
36
|
+
* - 401 Unauthorized.
|
|
37
|
+
* - 500 Internal Server Error: storage read failed or provider error.
|
|
38
|
+
*/
|
|
39
|
+
declare const POST: (request: Request) => Promise<Response>;
|
|
40
|
+
|
|
41
|
+
export { POST };
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import {
|
|
2
|
+
POST
|
|
3
|
+
} from "../chunk-LDKCUMHK.mjs";
|
|
4
|
+
import "../chunk-2Q2SX2CS.mjs";
|
|
5
|
+
import "../chunk-DXGGXIUZ.mjs";
|
|
6
|
+
import "../chunk-GJNSJU4S.mjs";
|
|
7
|
+
import "../chunk-LRXMECUA.mjs";
|
|
8
|
+
import "../chunk-UUOFWCM6.mjs";
|
|
9
|
+
import "../chunk-VWF3JO32.mjs";
|
|
10
|
+
import "../chunk-2ZFKXPQM.mjs";
|
|
11
|
+
import "../chunk-TO5AFLVQ.mjs";
|
|
12
|
+
import "../chunk-P7NH2OSC.mjs";
|
|
13
|
+
import "../chunk-2OALJTK6.mjs";
|
|
14
|
+
import "../chunk-VJ66NCL4.mjs";
|
|
15
|
+
import "../chunk-R6JJQHFC.mjs";
|
|
16
|
+
import "../chunk-X23WKS3Z.mjs";
|
|
17
|
+
import "../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 "../chunk-IUDOC7N7.mjs";
|
|
50
|
+
import "../chunk-LAZXX4HR.mjs";
|
|
51
|
+
import "../chunk-D5HQBNUB.mjs";
|
|
52
|
+
import "../chunk-NRUWQ5Z7.mjs";
|
|
53
|
+
import "../chunk-VTJADRO3.mjs";
|
|
54
|
+
import "../chunk-5APFUGAD.mjs";
|
|
55
|
+
import "../chunk-7P6ASYW6.mjs";
|
|
56
|
+
export {
|
|
57
|
+
POST
|
|
58
|
+
};
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Email Send API Route Handler for Next.js
|
|
3
|
+
*
|
|
4
|
+
* Sends a raw email through the default (or specified) provider.
|
|
5
|
+
* Re-export in your Next.js application at /api/email/send.
|
|
6
|
+
*
|
|
7
|
+
* @example
|
|
8
|
+
* ```typescript
|
|
9
|
+
* // app/api/email/send/route.ts
|
|
10
|
+
* export { POST } from 'nextly/api/email-send';
|
|
11
|
+
* ```
|
|
12
|
+
*
|
|
13
|
+
* The service returns `{ success, messageId? }`; the `messageId` is the
|
|
14
|
+
* useful caller-facing field, paired with a server-authored toast via
|
|
15
|
+
* `respondAction`. The attachment resolver throws `NextlyError` directly
|
|
16
|
+
* (validation for caller-fixable failures, internal for storage I/O); the
|
|
17
|
+
* machine-readable `EMAIL_ATTACHMENT_*` code lives at
|
|
18
|
+
* `error.data.errors[0].code`.
|
|
19
|
+
*
|
|
20
|
+
* @module api/email-send
|
|
21
|
+
*/
|
|
22
|
+
/**
|
|
23
|
+
* POST handler for sending a raw email.
|
|
24
|
+
*
|
|
25
|
+
* Request body:
|
|
26
|
+
* - `to` (string, required): Recipient email address
|
|
27
|
+
* - `subject` (string, required)
|
|
28
|
+
* - `html` (string, required)
|
|
29
|
+
* - `plainText` (string, optional)
|
|
30
|
+
* - `cc` / `bcc` (string[], optional)
|
|
31
|
+
* - `providerId` (string, optional): use a specific email provider
|
|
32
|
+
* - `attachments` (array, optional): `[{ mediaId, filename? }]`
|
|
33
|
+
*
|
|
34
|
+
* Response codes:
|
|
35
|
+
* - 200 OK: `{ message, success, messageId? }` via `respondAction`.
|
|
36
|
+
* - 400 Bad Request: invalid body / attachment count or size exceeded / mediaId not found.
|
|
37
|
+
* - 401 Unauthorized.
|
|
38
|
+
* - 500 Internal Server Error: storage read failed or provider error.
|
|
39
|
+
*/
|
|
40
|
+
declare const POST: (request: Request) => Promise<Response>;
|
|
41
|
+
|
|
42
|
+
export { POST };
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import {
|
|
2
|
+
POST
|
|
3
|
+
} from "../chunk-YV4Y7SDL.mjs";
|
|
4
|
+
import "../chunk-2Q2SX2CS.mjs";
|
|
5
|
+
import "../chunk-DXGGXIUZ.mjs";
|
|
6
|
+
import "../chunk-GJNSJU4S.mjs";
|
|
7
|
+
import "../chunk-LRXMECUA.mjs";
|
|
8
|
+
import "../chunk-UUOFWCM6.mjs";
|
|
9
|
+
import "../chunk-VWF3JO32.mjs";
|
|
10
|
+
import "../chunk-2ZFKXPQM.mjs";
|
|
11
|
+
import "../chunk-TO5AFLVQ.mjs";
|
|
12
|
+
import "../chunk-P7NH2OSC.mjs";
|
|
13
|
+
import "../chunk-2OALJTK6.mjs";
|
|
14
|
+
import "../chunk-VJ66NCL4.mjs";
|
|
15
|
+
import "../chunk-R6JJQHFC.mjs";
|
|
16
|
+
import "../chunk-X23WKS3Z.mjs";
|
|
17
|
+
import "../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 "../chunk-IUDOC7N7.mjs";
|
|
50
|
+
import "../chunk-LAZXX4HR.mjs";
|
|
51
|
+
import "../chunk-D5HQBNUB.mjs";
|
|
52
|
+
import "../chunk-NRUWQ5Z7.mjs";
|
|
53
|
+
import "../chunk-VTJADRO3.mjs";
|
|
54
|
+
import "../chunk-5APFUGAD.mjs";
|
|
55
|
+
import "../chunk-7P6ASYW6.mjs";
|
|
56
|
+
export {
|
|
57
|
+
POST
|
|
58
|
+
};
|