medusa-plugin-forms 0.1.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 (45) hide show
  1. package/.medusa/server/medusa-config.d.ts +1 -0
  2. package/.medusa/server/medusa-config.js +27 -0
  3. package/.medusa/server/src/admin/index.js +6388 -0
  4. package/.medusa/server/src/admin/index.mjs +6386 -0
  5. package/.medusa/server/src/api/admin/form-submissions/[id]/route.d.ts +5 -0
  6. package/.medusa/server/src/api/admin/form-submissions/[id]/route.js +27 -0
  7. package/.medusa/server/src/api/admin/form-submissions/route.d.ts +4 -0
  8. package/.medusa/server/src/api/admin/form-submissions/route.js +32 -0
  9. package/.medusa/server/src/api/admin/forms/[id]/fields/[fieldId]/options/[optionId]/route.d.ts +4 -0
  10. package/.medusa/server/src/api/admin/forms/[id]/fields/[fieldId]/options/[optionId]/route.js +20 -0
  11. package/.medusa/server/src/api/admin/forms/[id]/fields/[fieldId]/options/route.d.ts +4 -0
  12. package/.medusa/server/src/api/admin/forms/[id]/fields/[fieldId]/options/route.js +21 -0
  13. package/.medusa/server/src/api/admin/forms/[id]/fields/[fieldId]/route.d.ts +4 -0
  14. package/.medusa/server/src/api/admin/forms/[id]/fields/[fieldId]/route.js +41 -0
  15. package/.medusa/server/src/api/admin/forms/[id]/fields/route.d.ts +5 -0
  16. package/.medusa/server/src/api/admin/forms/[id]/fields/route.js +33 -0
  17. package/.medusa/server/src/api/admin/forms/[id]/route.d.ts +5 -0
  18. package/.medusa/server/src/api/admin/forms/[id]/route.js +57 -0
  19. package/.medusa/server/src/api/admin/forms/route.d.ts +5 -0
  20. package/.medusa/server/src/api/admin/forms/route.js +41 -0
  21. package/.medusa/server/src/api/forms/[handle]/route.d.ts +3 -0
  22. package/.medusa/server/src/api/forms/[handle]/route.js +85 -0
  23. package/.medusa/server/src/api/middlewares.d.ts +2 -0
  24. package/.medusa/server/src/api/middlewares.js +142 -0
  25. package/.medusa/server/src/api/validators.d.ts +390 -0
  26. package/.medusa/server/src/api/validators.js +106 -0
  27. package/.medusa/server/src/modules/form/index.d.ts +64 -0
  28. package/.medusa/server/src/modules/form/index.js +23 -0
  29. package/.medusa/server/src/modules/form/migrations/Migration20260409171800.d.ts +5 -0
  30. package/.medusa/server/src/modules/form/migrations/Migration20260409171800.js +38 -0
  31. package/.medusa/server/src/modules/form/models/form-field-option.d.ts +34 -0
  32. package/.medusa/server/src/modules/form/models/form-field-option.js +13 -0
  33. package/.medusa/server/src/modules/form/models/form-field.d.ts +34 -0
  34. package/.medusa/server/src/modules/form/models/form-field.js +21 -0
  35. package/.medusa/server/src/modules/form/models/form-submission.d.ts +39 -0
  36. package/.medusa/server/src/modules/form/models/form-submission.js +20 -0
  37. package/.medusa/server/src/modules/form/models/form.d.ts +34 -0
  38. package/.medusa/server/src/modules/form/models/form.js +23 -0
  39. package/.medusa/server/src/modules/form/service.d.ts +145 -0
  40. package/.medusa/server/src/modules/form/service.js +24 -0
  41. package/.medusa/server/src/modules/form/types.d.ts +4 -0
  42. package/.medusa/server/src/modules/form/types.js +3 -0
  43. package/LICENSE +21 -0
  44. package/README.md +157 -0
  45. package/package.json +88 -0
@@ -0,0 +1,5 @@
1
+ import { AuthenticatedMedusaRequest, MedusaResponse } from '@medusajs/framework/http';
2
+ import { AdminGetFormSubmissionType, AdminUpdateFormSubmissionType } from '../../../validators';
3
+ export declare const GET: (req: AuthenticatedMedusaRequest<AdminGetFormSubmissionType>, res: MedusaResponse) => Promise<void>;
4
+ export declare const POST: (req: AuthenticatedMedusaRequest<AdminUpdateFormSubmissionType>, res: MedusaResponse) => Promise<void>;
5
+ export declare const DELETE: (req: AuthenticatedMedusaRequest, res: MedusaResponse) => Promise<void>;
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DELETE = exports.POST = exports.GET = void 0;
4
+ const utils_1 = require("@medusajs/framework/utils");
5
+ const form_1 = require("../../../../modules/form");
6
+ const GET = async (req, res) => {
7
+ const query = req.scope.resolve(utils_1.ContainerRegistrationKeys.QUERY);
8
+ const { data: [form_submission] } = await query.graph({ entity: 'form_submission', ...req.queryConfig, filters: { id: req.params.id } }, { throwIfKeyNotFound: true });
9
+ res.json({ form_submission });
10
+ };
11
+ exports.GET = GET;
12
+ const POST = async (req, res) => {
13
+ const formService = req.scope.resolve(form_1.FORM_MODULE);
14
+ const form_submission = await formService.updateFormSubmissions({
15
+ id: req.params.id,
16
+ status: req.validatedBody.status
17
+ });
18
+ res.json({ form_submission });
19
+ };
20
+ exports.POST = POST;
21
+ const DELETE = async (req, res) => {
22
+ const formService = req.scope.resolve(form_1.FORM_MODULE);
23
+ await formService.deleteFormSubmissions([req.params.id]);
24
+ res.json({ deleted: [req.params.id] });
25
+ };
26
+ exports.DELETE = DELETE;
27
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL2FkbWluL2Zvcm0tc3VibWlzc2lvbnMvW2lkXS9yb3V0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFDQSxxREFBcUU7QUFDckUsbURBQXNEO0FBSy9DLE1BQU0sR0FBRyxHQUFHLEtBQUssRUFDdkIsR0FBMkQsRUFDM0QsR0FBbUIsRUFDbEIsRUFBRTtJQUNILE1BQU0sS0FBSyxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLGlDQUF5QixDQUFDLEtBQUssQ0FBQyxDQUFBO0lBRWhFLE1BQU0sRUFDTCxJQUFJLEVBQUUsQ0FBQyxlQUFlLENBQUMsRUFDdkIsR0FBRyxNQUFNLEtBQUssQ0FBQyxLQUFLLENBQ3BCLEVBQUUsTUFBTSxFQUFFLGlCQUFpQixFQUFFLEdBQUcsR0FBRyxDQUFDLFdBQVcsRUFBRSxPQUFPLEVBQUUsRUFBRSxFQUFFLEVBQUUsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUNqRixFQUFFLGtCQUFrQixFQUFFLElBQUksRUFBRSxDQUM1QixDQUFBO0lBRUQsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLGVBQWUsRUFBRSxDQUFDLENBQUE7QUFDOUIsQ0FBQyxDQUFBO0FBZFksUUFBQSxHQUFHLE9BY2Y7QUFFTSxNQUFNLElBQUksR0FBRyxLQUFLLEVBQ3hCLEdBQThELEVBQzlELEdBQW1CLEVBQ2xCLEVBQUU7SUFDSCxNQUFNLFdBQVcsR0FBZ0IsR0FBRyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsa0JBQVcsQ0FBQyxDQUFBO0lBQy9ELE1BQU0sZUFBZSxHQUFHLE1BQU0sV0FBVyxDQUFDLHFCQUFxQixDQUFDO1FBQy9ELEVBQUUsRUFBRSxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUU7UUFDakIsTUFBTSxFQUFFLEdBQUcsQ0FBQyxhQUFhLENBQUMsTUFBMEI7S0FDcEQsQ0FBQyxDQUFBO0lBQ0YsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLGVBQWUsRUFBRSxDQUFDLENBQUE7QUFDOUIsQ0FBQyxDQUFBO0FBVlksUUFBQSxJQUFJLFFBVWhCO0FBRU0sTUFBTSxNQUFNLEdBQUcsS0FBSyxFQUFFLEdBQStCLEVBQUUsR0FBbUIsRUFBRSxFQUFFO0lBQ3BGLE1BQU0sV0FBVyxHQUFnQixHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxrQkFBVyxDQUFDLENBQUE7SUFDL0QsTUFBTSxXQUFXLENBQUMscUJBQXFCLENBQUMsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUE7SUFDeEQsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFBO0FBQ3ZDLENBQUMsQ0FBQTtBQUpZLFFBQUEsTUFBTSxVQUlsQiJ9
@@ -0,0 +1,4 @@
1
+ import { AuthenticatedMedusaRequest, MedusaResponse } from '@medusajs/framework/http';
2
+ import { AdminDeleteFormSubmissionsType, AdminGetFormSubmissionsType } from '../../validators';
3
+ export declare const GET: (req: AuthenticatedMedusaRequest<AdminGetFormSubmissionsType>, res: MedusaResponse) => Promise<void>;
4
+ export declare const DELETE: (req: AuthenticatedMedusaRequest<AdminDeleteFormSubmissionsType>, res: MedusaResponse) => Promise<void>;
@@ -0,0 +1,32 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DELETE = exports.GET = void 0;
4
+ const utils_1 = require("@medusajs/framework/utils");
5
+ const form_1 = require("../../../modules/form");
6
+ const GET = async (req, res) => {
7
+ const query = req.scope.resolve(utils_1.ContainerRegistrationKeys.QUERY);
8
+ const { form_id, status } = req.validatedQuery;
9
+ const { data: form_submissions, metadata } = await query.graph({
10
+ entity: 'form_submission',
11
+ ...req.queryConfig,
12
+ filters: {
13
+ ...(form_id ? { form_id } : {}),
14
+ ...(status ? { status } : {})
15
+ }
16
+ });
17
+ res.json({
18
+ form_submissions,
19
+ count: metadata?.count,
20
+ limit: metadata?.take,
21
+ offset: metadata?.skip
22
+ });
23
+ };
24
+ exports.GET = GET;
25
+ const DELETE = async (req, res) => {
26
+ const { ids } = req.validatedBody;
27
+ const formService = req.scope.resolve(form_1.FORM_MODULE);
28
+ await formService.deleteFormSubmissions(ids);
29
+ res.json({ deleted: ids });
30
+ };
31
+ exports.DELETE = DELETE;
32
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL2FkbWluL2Zvcm0tc3VibWlzc2lvbnMvcm91dGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQ0EscURBQXFFO0FBQ3JFLGdEQUFtRDtBQUk1QyxNQUFNLEdBQUcsR0FBRyxLQUFLLEVBQ3ZCLEdBQTRELEVBQzVELEdBQW1CLEVBQ2xCLEVBQUU7SUFDSCxNQUFNLEtBQUssR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxpQ0FBeUIsQ0FBQyxLQUFLLENBQUMsQ0FBQTtJQUNoRSxNQUFNLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxHQUFHLEdBQUcsQ0FBQyxjQUFjLENBQUE7SUFFOUMsTUFBTSxFQUFFLElBQUksRUFBRSxnQkFBZ0IsRUFBRSxRQUFRLEVBQUUsR0FBRyxNQUFNLEtBQUssQ0FBQyxLQUFLLENBQUM7UUFDOUQsTUFBTSxFQUFFLGlCQUFpQjtRQUN6QixHQUFHLEdBQUcsQ0FBQyxXQUFXO1FBQ2xCLE9BQU8sRUFBRTtZQUNSLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUMvQixHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7U0FDN0I7S0FDRCxDQUFDLENBQUE7SUFFRixHQUFHLENBQUMsSUFBSSxDQUFDO1FBQ1IsZ0JBQWdCO1FBQ2hCLEtBQUssRUFBRSxRQUFRLEVBQUUsS0FBSztRQUN0QixLQUFLLEVBQUUsUUFBUSxFQUFFLElBQUk7UUFDckIsTUFBTSxFQUFFLFFBQVEsRUFBRSxJQUFJO0tBQ3RCLENBQUMsQ0FBQTtBQUNILENBQUMsQ0FBQTtBQXRCWSxRQUFBLEdBQUcsT0FzQmY7QUFFTSxNQUFNLE1BQU0sR0FBRyxLQUFLLEVBQzFCLEdBQStELEVBQy9ELEdBQW1CLEVBQ2xCLEVBQUU7SUFDSCxNQUFNLEVBQUUsR0FBRyxFQUFFLEdBQUcsR0FBRyxDQUFDLGFBQWEsQ0FBQTtJQUNqQyxNQUFNLFdBQVcsR0FBZ0IsR0FBRyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsa0JBQVcsQ0FBQyxDQUFBO0lBQy9ELE1BQU0sV0FBVyxDQUFDLHFCQUFxQixDQUFDLEdBQUcsQ0FBQyxDQUFBO0lBQzVDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQTtBQUMzQixDQUFDLENBQUE7QUFSWSxRQUFBLE1BQU0sVUFRbEIifQ==
@@ -0,0 +1,4 @@
1
+ import { AuthenticatedMedusaRequest, MedusaResponse } from '@medusajs/framework/http';
2
+ import { AdminUpdateFormFieldOptionType } from '../../../../../../../validators';
3
+ export declare const POST: (req: AuthenticatedMedusaRequest<AdminUpdateFormFieldOptionType>, res: MedusaResponse) => Promise<void>;
4
+ export declare const DELETE: (req: AuthenticatedMedusaRequest, res: MedusaResponse) => Promise<void>;
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DELETE = exports.POST = void 0;
4
+ const form_1 = require("../../../../../../../../modules/form");
5
+ const POST = async (req, res) => {
6
+ const formService = req.scope.resolve(form_1.FORM_MODULE);
7
+ const option = await formService.updateFormFieldOptions({
8
+ id: req.params.optionId,
9
+ ...req.validatedBody
10
+ });
11
+ res.json({ option });
12
+ };
13
+ exports.POST = POST;
14
+ const DELETE = async (req, res) => {
15
+ const formService = req.scope.resolve(form_1.FORM_MODULE);
16
+ await formService.deleteFormFieldOptions([req.params.optionId]);
17
+ res.json({ deleted: [req.params.optionId] });
18
+ };
19
+ exports.DELETE = DELETE;
20
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL2FkbWluL2Zvcm1zL1tpZF0vZmllbGRzL1tmaWVsZElkXS9vcHRpb25zL1tvcHRpb25JZF0vcm91dGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQ0EsK0RBQWtFO0FBSTNELE1BQU0sSUFBSSxHQUFHLEtBQUssRUFDeEIsR0FBK0QsRUFDL0QsR0FBbUIsRUFDbEIsRUFBRTtJQUNILE1BQU0sV0FBVyxHQUFnQixHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxrQkFBVyxDQUFDLENBQUE7SUFDL0QsTUFBTSxNQUFNLEdBQUcsTUFBTSxXQUFXLENBQUMsc0JBQXNCLENBQUM7UUFDdkQsRUFBRSxFQUFFLEdBQUcsQ0FBQyxNQUFNLENBQUMsUUFBUTtRQUN2QixHQUFHLEdBQUcsQ0FBQyxhQUFhO0tBQ3BCLENBQUMsQ0FBQTtJQUNGLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFBO0FBQ3JCLENBQUMsQ0FBQTtBQVZZLFFBQUEsSUFBSSxRQVVoQjtBQUVNLE1BQU0sTUFBTSxHQUFHLEtBQUssRUFBRSxHQUErQixFQUFFLEdBQW1CLEVBQUUsRUFBRTtJQUNwRixNQUFNLFdBQVcsR0FBZ0IsR0FBRyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsa0JBQVcsQ0FBQyxDQUFBO0lBQy9ELE1BQU0sV0FBVyxDQUFDLHNCQUFzQixDQUFDLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFBO0lBQy9ELEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQTtBQUM3QyxDQUFDLENBQUE7QUFKWSxRQUFBLE1BQU0sVUFJbEIifQ==
@@ -0,0 +1,4 @@
1
+ import { AuthenticatedMedusaRequest, MedusaResponse } from '@medusajs/framework/http';
2
+ import { AdminCreateFormFieldOptionType, AdminDeleteFormFieldOptionsType } from '../../../../../../validators';
3
+ export declare const POST: (req: AuthenticatedMedusaRequest<AdminCreateFormFieldOptionType>, res: MedusaResponse) => Promise<void>;
4
+ export declare const DELETE: (req: AuthenticatedMedusaRequest<AdminDeleteFormFieldOptionsType>, res: MedusaResponse) => Promise<void>;
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DELETE = exports.POST = void 0;
4
+ const form_1 = require("../../../../../../../modules/form");
5
+ const POST = async (req, res) => {
6
+ const formService = req.scope.resolve(form_1.FORM_MODULE);
7
+ const option = await formService.createFormFieldOptions({
8
+ form_field_id: req.params.fieldId,
9
+ ...req.validatedBody
10
+ });
11
+ res.json({ option });
12
+ };
13
+ exports.POST = POST;
14
+ const DELETE = async (req, res) => {
15
+ const { ids } = req.validatedBody;
16
+ const formService = req.scope.resolve(form_1.FORM_MODULE);
17
+ await formService.deleteFormFieldOptions(ids);
18
+ res.json({ deleted: ids });
19
+ };
20
+ exports.DELETE = DELETE;
21
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL2FkbWluL2Zvcm1zL1tpZF0vZmllbGRzL1tmaWVsZElkXS9vcHRpb25zL3JvdXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUNBLDREQUErRDtBQU94RCxNQUFNLElBQUksR0FBRyxLQUFLLEVBQ3hCLEdBQStELEVBQy9ELEdBQW1CLEVBQ2xCLEVBQUU7SUFDSCxNQUFNLFdBQVcsR0FBZ0IsR0FBRyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsa0JBQVcsQ0FBQyxDQUFBO0lBQy9ELE1BQU0sTUFBTSxHQUFHLE1BQU0sV0FBVyxDQUFDLHNCQUFzQixDQUFDO1FBQ3ZELGFBQWEsRUFBRSxHQUFHLENBQUMsTUFBTSxDQUFDLE9BQU87UUFDakMsR0FBRyxHQUFHLENBQUMsYUFBYTtLQUNwQixDQUFDLENBQUE7SUFDRixHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQTtBQUNyQixDQUFDLENBQUE7QUFWWSxRQUFBLElBQUksUUFVaEI7QUFFTSxNQUFNLE1BQU0sR0FBRyxLQUFLLEVBQzFCLEdBQWdFLEVBQ2hFLEdBQW1CLEVBQ2xCLEVBQUU7SUFDSCxNQUFNLEVBQUUsR0FBRyxFQUFFLEdBQUcsR0FBRyxDQUFDLGFBQWEsQ0FBQTtJQUNqQyxNQUFNLFdBQVcsR0FBZ0IsR0FBRyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsa0JBQVcsQ0FBQyxDQUFBO0lBQy9ELE1BQU0sV0FBVyxDQUFDLHNCQUFzQixDQUFDLEdBQUcsQ0FBQyxDQUFBO0lBQzdDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQTtBQUMzQixDQUFDLENBQUE7QUFSWSxRQUFBLE1BQU0sVUFRbEIifQ==
@@ -0,0 +1,4 @@
1
+ import { AuthenticatedMedusaRequest, MedusaResponse } from '@medusajs/framework/http';
2
+ import { AdminUpdateFormFieldType } from '../../../../../validators';
3
+ export declare const POST: (req: AuthenticatedMedusaRequest<AdminUpdateFormFieldType>, res: MedusaResponse) => Promise<void>;
4
+ export declare const DELETE: (req: AuthenticatedMedusaRequest, res: MedusaResponse) => Promise<void>;
@@ -0,0 +1,41 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DELETE = exports.POST = void 0;
4
+ const form_1 = require("../../../../../../modules/form");
5
+ const POST = async (req, res) => {
6
+ const formService = req.scope.resolve(form_1.FORM_MODULE);
7
+ const { field_options: incomingOptions, ...fieldData } = req.validatedBody;
8
+ const field = await formService.updateFormFields({ id: req.params.fieldId, ...fieldData });
9
+ if (incomingOptions !== undefined) {
10
+ const existing = await formService.listFormFieldOptions({ form_field_id: req.params.fieldId });
11
+ const existingIds = new Set(existing.map(o => o.id));
12
+ const incomingIds = new Set(incomingOptions.filter(o => o.id).map(o => o.id));
13
+ const toDelete = [...existingIds].filter(id => !incomingIds.has(id));
14
+ const toCreate = incomingOptions.filter(o => !o.id);
15
+ const toUpdate = incomingOptions.filter(o => o.id && existingIds.has(o.id));
16
+ await Promise.all([
17
+ toDelete.length > 0 ? formService.deleteFormFieldOptions(toDelete) : Promise.resolve(),
18
+ ...toCreate.map((o, i) => formService.createFormFieldOptions({
19
+ form_field_id: req.params.fieldId,
20
+ label: o.label,
21
+ value: o.value,
22
+ sort_order: o.sort_order ?? i
23
+ })),
24
+ ...toUpdate.map(o => formService.updateFormFieldOptions({
25
+ id: o.id,
26
+ label: o.label,
27
+ value: o.value,
28
+ sort_order: o.sort_order
29
+ }))
30
+ ]);
31
+ }
32
+ res.json({ field });
33
+ };
34
+ exports.POST = POST;
35
+ const DELETE = async (req, res) => {
36
+ const formService = req.scope.resolve(form_1.FORM_MODULE);
37
+ await formService.deleteFormFields([req.params.fieldId]);
38
+ res.json({ deleted: [req.params.fieldId] });
39
+ };
40
+ exports.DELETE = DELETE;
41
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL2FkbWluL2Zvcm1zL1tpZF0vZmllbGRzL1tmaWVsZElkXS9yb3V0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFDQSx5REFBNEQ7QUFJckQsTUFBTSxJQUFJLEdBQUcsS0FBSyxFQUN4QixHQUF5RCxFQUN6RCxHQUFtQixFQUNsQixFQUFFO0lBQ0gsTUFBTSxXQUFXLEdBQWdCLEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLGtCQUFXLENBQUMsQ0FBQTtJQUMvRCxNQUFNLEVBQUUsYUFBYSxFQUFFLGVBQWUsRUFBRSxHQUFHLFNBQVMsRUFBRSxHQUFHLEdBQUcsQ0FBQyxhQUFhLENBQUE7SUFFMUUsTUFBTSxLQUFLLEdBQUcsTUFBTSxXQUFXLENBQUMsZ0JBQWdCLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsR0FBRyxTQUFTLEVBQUUsQ0FBQyxDQUFBO0lBRTFGLElBQUksZUFBZSxLQUFLLFNBQVMsRUFBRSxDQUFDO1FBQ25DLE1BQU0sUUFBUSxHQUFHLE1BQU0sV0FBVyxDQUFDLG9CQUFvQixDQUFDLEVBQUUsYUFBYSxFQUFFLEdBQUcsQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQTtRQUM5RixNQUFNLFdBQVcsR0FBRyxJQUFJLEdBQUcsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUE7UUFDcEQsTUFBTSxXQUFXLEdBQUcsSUFBSSxHQUFHLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRyxDQUFDLENBQUMsQ0FBQTtRQUU5RSxNQUFNLFFBQVEsR0FBRyxDQUFDLEdBQUcsV0FBVyxDQUFDLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUE7UUFDcEUsTUFBTSxRQUFRLEdBQUcsZUFBZSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFBO1FBQ25ELE1BQU0sUUFBUSxHQUFHLGVBQWUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUcsQ0FBQyxDQUFDLENBQUE7UUFFNUUsTUFBTSxPQUFPLENBQUMsR0FBRyxDQUFDO1lBQ2pCLFFBQVEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsc0JBQXNCLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUU7WUFDdEYsR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQ3hCLFdBQVcsQ0FBQyxzQkFBc0IsQ0FBQztnQkFDbEMsYUFBYSxFQUFFLEdBQUcsQ0FBQyxNQUFNLENBQUMsT0FBTztnQkFDakMsS0FBSyxFQUFFLENBQUMsQ0FBQyxLQUFLO2dCQUNkLEtBQUssRUFBRSxDQUFDLENBQUMsS0FBSztnQkFDZCxVQUFVLEVBQUUsQ0FBQyxDQUFDLFVBQVUsSUFBSSxDQUFDO2FBQzdCLENBQUMsQ0FDRjtZQUNELEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUNuQixXQUFXLENBQUMsc0JBQXNCLENBQUM7Z0JBQ2xDLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRztnQkFDVCxLQUFLLEVBQUUsQ0FBQyxDQUFDLEtBQUs7Z0JBQ2QsS0FBSyxFQUFFLENBQUMsQ0FBQyxLQUFLO2dCQUNkLFVBQVUsRUFBRSxDQUFDLENBQUMsVUFBVTthQUN4QixDQUFDLENBQ0Y7U0FDRCxDQUFDLENBQUE7SUFDSCxDQUFDO0lBRUQsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUE7QUFDcEIsQ0FBQyxDQUFBO0FBeENZLFFBQUEsSUFBSSxRQXdDaEI7QUFFTSxNQUFNLE1BQU0sR0FBRyxLQUFLLEVBQUUsR0FBK0IsRUFBRSxHQUFtQixFQUFFLEVBQUU7SUFDcEYsTUFBTSxXQUFXLEdBQWdCLEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLGtCQUFXLENBQUMsQ0FBQTtJQUMvRCxNQUFNLFdBQVcsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQTtJQUN4RCxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUE7QUFDNUMsQ0FBQyxDQUFBO0FBSlksUUFBQSxNQUFNLFVBSWxCIn0=
@@ -0,0 +1,5 @@
1
+ import { AuthenticatedMedusaRequest, MedusaResponse } from '@medusajs/framework/http';
2
+ import { AdminCreateFormFieldType, AdminDeleteFormFieldsType, AdminGetFormFieldsType } from '../../../../validators';
3
+ export declare const GET: (req: AuthenticatedMedusaRequest<AdminGetFormFieldsType>, res: MedusaResponse) => Promise<void>;
4
+ export declare const POST: (req: AuthenticatedMedusaRequest<AdminCreateFormFieldType>, res: MedusaResponse) => Promise<void>;
5
+ export declare const DELETE: (req: AuthenticatedMedusaRequest<AdminDeleteFormFieldsType>, res: MedusaResponse) => Promise<void>;
@@ -0,0 +1,33 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DELETE = exports.POST = exports.GET = void 0;
4
+ const utils_1 = require("@medusajs/framework/utils");
5
+ const form_1 = require("../../../../../modules/form");
6
+ const GET = async (req, res) => {
7
+ const query = req.scope.resolve(utils_1.ContainerRegistrationKeys.QUERY);
8
+ const { id: form_id } = req.params;
9
+ const { data: fields, metadata } = await query.graph({
10
+ entity: 'form_field',
11
+ ...req.queryConfig,
12
+ filters: { form_id }
13
+ });
14
+ res.json({ fields, count: metadata?.count, limit: metadata?.take, offset: metadata?.skip });
15
+ };
16
+ exports.GET = GET;
17
+ const POST = async (req, res) => {
18
+ const formService = req.scope.resolve(form_1.FORM_MODULE);
19
+ const field = await formService.createFormFields({
20
+ form_id: req.params.id,
21
+ ...req.validatedBody
22
+ });
23
+ res.json({ field });
24
+ };
25
+ exports.POST = POST;
26
+ const DELETE = async (req, res) => {
27
+ const { ids } = req.validatedBody;
28
+ const formService = req.scope.resolve(form_1.FORM_MODULE);
29
+ await formService.deleteFormFields(ids);
30
+ res.json({ deleted: ids });
31
+ };
32
+ exports.DELETE = DELETE;
33
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL2FkbWluL2Zvcm1zL1tpZF0vZmllbGRzL3JvdXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUNBLHFEQUFxRTtBQUNyRSxzREFBeUQ7QUFRbEQsTUFBTSxHQUFHLEdBQUcsS0FBSyxFQUN2QixHQUF1RCxFQUN2RCxHQUFtQixFQUNsQixFQUFFO0lBQ0gsTUFBTSxLQUFLLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsaUNBQXlCLENBQUMsS0FBSyxDQUFDLENBQUE7SUFDaEUsTUFBTSxFQUFFLEVBQUUsRUFBRSxPQUFPLEVBQUUsR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFBO0lBRWxDLE1BQU0sRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxHQUFHLE1BQU0sS0FBSyxDQUFDLEtBQUssQ0FBQztRQUNwRCxNQUFNLEVBQUUsWUFBWTtRQUNwQixHQUFHLEdBQUcsQ0FBQyxXQUFXO1FBQ2xCLE9BQU8sRUFBRSxFQUFFLE9BQU8sRUFBRTtLQUNwQixDQUFDLENBQUE7SUFFRixHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQTtBQUM1RixDQUFDLENBQUE7QUFkWSxRQUFBLEdBQUcsT0FjZjtBQUVNLE1BQU0sSUFBSSxHQUFHLEtBQUssRUFDeEIsR0FBeUQsRUFDekQsR0FBbUIsRUFDbEIsRUFBRTtJQUNILE1BQU0sV0FBVyxHQUFnQixHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxrQkFBVyxDQUFDLENBQUE7SUFDL0QsTUFBTSxLQUFLLEdBQUcsTUFBTSxXQUFXLENBQUMsZ0JBQWdCLENBQUM7UUFDaEQsT0FBTyxFQUFFLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRTtRQUN0QixHQUFHLEdBQUcsQ0FBQyxhQUFhO0tBQ3BCLENBQUMsQ0FBQTtJQUNGLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFBO0FBQ3BCLENBQUMsQ0FBQTtBQVZZLFFBQUEsSUFBSSxRQVVoQjtBQUVNLE1BQU0sTUFBTSxHQUFHLEtBQUssRUFDMUIsR0FBMEQsRUFDMUQsR0FBbUIsRUFDbEIsRUFBRTtJQUNILE1BQU0sRUFBRSxHQUFHLEVBQUUsR0FBRyxHQUFHLENBQUMsYUFBYSxDQUFBO0lBQ2pDLE1BQU0sV0FBVyxHQUFnQixHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxrQkFBVyxDQUFDLENBQUE7SUFDL0QsTUFBTSxXQUFXLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLENBQUE7SUFDdkMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFBO0FBQzNCLENBQUMsQ0FBQTtBQVJZLFFBQUEsTUFBTSxVQVFsQiJ9
@@ -0,0 +1,5 @@
1
+ import { AuthenticatedMedusaRequest, MedusaResponse } from '@medusajs/framework/http';
2
+ import { AdminGetFormType, AdminUpdateFormType } from '../../../validators';
3
+ export declare const GET: (req: AuthenticatedMedusaRequest<AdminGetFormType>, res: MedusaResponse) => Promise<void>;
4
+ export declare const POST: (req: AuthenticatedMedusaRequest<AdminUpdateFormType>, res: MedusaResponse) => Promise<void>;
5
+ export declare const DELETE: (req: AuthenticatedMedusaRequest, res: MedusaResponse) => Promise<void>;
@@ -0,0 +1,57 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DELETE = exports.POST = exports.GET = void 0;
4
+ const utils_1 = require("@medusajs/framework/utils");
5
+ const form_1 = require("../../../../modules/form");
6
+ const GET = async (req, res) => {
7
+ const query = req.scope.resolve(utils_1.ContainerRegistrationKeys.QUERY);
8
+ const { id } = req.params;
9
+ const { data: [form] } = await query.graph({ entity: 'form', ...req.queryConfig, filters: { id } }, { throwIfKeyNotFound: true });
10
+ res.json({ form });
11
+ };
12
+ exports.GET = GET;
13
+ const POST = async (req, res) => {
14
+ const formService = req.scope.resolve(form_1.FORM_MODULE);
15
+ const { form_fields: incomingFields, ...formData } = req.validatedBody;
16
+ const form = await formService.updateForms({ id: req.params.id, ...formData });
17
+ if (incomingFields !== undefined) {
18
+ const existing = await formService.listFormFields({ form_id: req.params.id });
19
+ const existingIds = new Set(existing.map(f => f.id));
20
+ const incomingIds = new Set(incomingFields.filter(f => f.id).map(f => f.id));
21
+ const toDelete = [...existingIds].filter(id => !incomingIds.has(id));
22
+ const toCreate = incomingFields.filter(f => !f.id);
23
+ const toUpdate = incomingFields.filter(f => f.id && existingIds.has(f.id));
24
+ if (toDelete.length > 0) {
25
+ await formService.deleteFormFields(toDelete);
26
+ }
27
+ if (toCreate.length > 0) {
28
+ await formService.createFormFields(toCreate.map((f, i) => ({
29
+ form_id: req.params.id,
30
+ name: f.name,
31
+ label: f.label,
32
+ field_type: f.field_type,
33
+ required: f.required ?? false,
34
+ sort_order: f.sort_order ?? i
35
+ })));
36
+ }
37
+ if (toUpdate.length > 0) {
38
+ await formService.updateFormFields(toUpdate.map(f => ({
39
+ id: f.id,
40
+ name: f.name,
41
+ label: f.label,
42
+ field_type: f.field_type,
43
+ required: f.required ?? false,
44
+ sort_order: f.sort_order
45
+ })));
46
+ }
47
+ }
48
+ res.json({ form });
49
+ };
50
+ exports.POST = POST;
51
+ const DELETE = async (req, res) => {
52
+ const formService = req.scope.resolve(form_1.FORM_MODULE);
53
+ await formService.deleteForms([req.params.id]);
54
+ res.json({ deleted: [req.params.id] });
55
+ };
56
+ exports.DELETE = DELETE;
57
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL2FkbWluL2Zvcm1zL1tpZF0vcm91dGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQ0EscURBQXFFO0FBQ3JFLG1EQUFzRDtBQUkvQyxNQUFNLEdBQUcsR0FBRyxLQUFLLEVBQ3ZCLEdBQWlELEVBQ2pELEdBQW1CLEVBQ2xCLEVBQUU7SUFDSCxNQUFNLEtBQUssR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxpQ0FBeUIsQ0FBQyxLQUFLLENBQUMsQ0FBQTtJQUNoRSxNQUFNLEVBQUUsRUFBRSxFQUFFLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQTtJQUV6QixNQUFNLEVBQ0wsSUFBSSxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQ1osR0FBRyxNQUFNLEtBQUssQ0FBQyxLQUFLLENBQ3BCLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLEdBQUcsQ0FBQyxXQUFXLEVBQUUsT0FBTyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFDdkQsRUFBRSxrQkFBa0IsRUFBRSxJQUFJLEVBQUUsQ0FDNUIsQ0FBQTtJQUVELEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFBO0FBQ25CLENBQUMsQ0FBQTtBQWZZLFFBQUEsR0FBRyxPQWVmO0FBRU0sTUFBTSxJQUFJLEdBQUcsS0FBSyxFQUN4QixHQUFvRCxFQUNwRCxHQUFtQixFQUNsQixFQUFFO0lBQ0gsTUFBTSxXQUFXLEdBQWdCLEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLGtCQUFXLENBQUMsQ0FBQTtJQUMvRCxNQUFNLEVBQUUsV0FBVyxFQUFFLGNBQWMsRUFBRSxHQUFHLFFBQVEsRUFBRSxHQUFHLEdBQUcsQ0FBQyxhQUFhLENBQUE7SUFFdEUsTUFBTSxJQUFJLEdBQUcsTUFBTSxXQUFXLENBQUMsV0FBVyxDQUFDLEVBQUUsRUFB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
@@ -0,0 +1,5 @@
1
+ import { AuthenticatedMedusaRequest, MedusaResponse } from '@medusajs/framework/http';
2
+ import { AdminCreateFormType, AdminDeleteFormsType, AdminGetFormsType } from '../../validators';
3
+ export declare const GET: (req: AuthenticatedMedusaRequest<AdminGetFormsType>, res: MedusaResponse) => Promise<void>;
4
+ export declare const POST: (req: AuthenticatedMedusaRequest<AdminCreateFormType>, res: MedusaResponse) => Promise<void>;
5
+ export declare const DELETE: (req: AuthenticatedMedusaRequest<AdminDeleteFormsType>, res: MedusaResponse) => Promise<void>;
@@ -0,0 +1,41 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DELETE = exports.POST = exports.GET = void 0;
4
+ const utils_1 = require("@medusajs/framework/utils");
5
+ const form_1 = require("../../../modules/form");
6
+ const GET = async (req, res) => {
7
+ const query = req.scope.resolve(utils_1.ContainerRegistrationKeys.QUERY);
8
+ const { q, active, ...rest } = req.validatedQuery;
9
+ const { data: forms, metadata } = await query.graph({
10
+ entity: 'form',
11
+ ...req.queryConfig,
12
+ filters: {
13
+ ...(active != null ? { active } : {}),
14
+ ...(q ? { $or: [{ name: { $ilike: `%${q}%` } }, { handle: { $ilike: `%${q}%` } }] } : {})
15
+ }
16
+ });
17
+ res.json({ forms, count: metadata?.count, limit: metadata?.take, offset: metadata?.skip });
18
+ };
19
+ exports.GET = GET;
20
+ const POST = async (req, res) => {
21
+ const formService = req.scope.resolve(form_1.FORM_MODULE);
22
+ const { form_fields: fieldInputs, ...formData } = req.validatedBody;
23
+ const form = await formService.createForms(formData);
24
+ if (fieldInputs?.length) {
25
+ await formService.createFormFields(fieldInputs.map((f, i) => ({
26
+ ...f,
27
+ form_id: form.id,
28
+ sort_order: f.sort_order ?? i
29
+ })));
30
+ }
31
+ res.json({ form });
32
+ };
33
+ exports.POST = POST;
34
+ const DELETE = async (req, res) => {
35
+ const { ids } = req.validatedBody;
36
+ const formService = req.scope.resolve(form_1.FORM_MODULE);
37
+ await formService.deleteForms(ids);
38
+ res.json({ deleted: ids });
39
+ };
40
+ exports.DELETE = DELETE;
41
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL2FkbWluL2Zvcm1zL3JvdXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUNBLHFEQUFxRTtBQUNyRSxnREFBbUQ7QUFRNUMsTUFBTSxHQUFHLEdBQUcsS0FBSyxFQUN2QixHQUFrRCxFQUNsRCxHQUFtQixFQUNsQixFQUFFO0lBQ0gsTUFBTSxLQUFLLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsaUNBQXlCLENBQUMsS0FBSyxDQUFDLENBQUE7SUFDaEUsTUFBTSxFQUFFLENBQUMsRUFBRSxNQUFNLEVBQUUsR0FBRyxJQUFJLEVBQUUsR0FBRyxHQUFHLENBQUMsY0FBYyxDQUFBO0lBRWpELE1BQU0sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxHQUFHLE1BQU0sS0FBSyxDQUFDLEtBQUssQ0FBQztRQUNuRCxNQUFNLEVBQUUsTUFBTTtRQUNkLEdBQUcsR0FBRyxDQUFDLFdBQVc7UUFDbEIsT0FBTyxFQUFFO1lBQ1IsR0FBRyxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUNyQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLEVBQUUsTUFBTSxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1NBQ3pGO0tBQ0QsQ0FBQyxDQUFBO0lBRUYsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUE7QUFDM0YsQ0FBQyxDQUFBO0FBakJZLFFBQUEsR0FBRyxPQWlCZjtBQUVNLE1BQU0sSUFBSSxHQUFHLEtBQUssRUFDeEIsR0FBb0QsRUFDcEQsR0FBbUIsRUFDbEIsRUFBRTtJQUNILE1BQU0sV0FBVyxHQUFnQixHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxrQkFBVyxDQUFDLENBQUE7SUFDL0QsTUFBTSxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsR0FBRyxRQUFRLEVBQUUsR0FBRyxHQUFHLENBQUMsYUFBYSxDQUFBO0lBRW5FLE1BQU0sSUFBSSxHQUFHLE1BQU0sV0FBVyxDQUFDLFdBQVcsQ0FBQyxRQUFlLENBQUMsQ0FBQTtJQUUzRCxJQUFJLFdBQVcsRUFBRSxNQUFNLEVBQUUsQ0FBQztRQUN6QixNQUFNLFdBQVcsQ0FBQyxnQkFBZ0IsQ0FDakMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDMUIsR0FBRyxDQUFDO1lBQ0osT0FBTyxFQUFFLElBQUksQ0FBQyxFQUFFO1lBQ2hCLFVBQVUsRUFBRSxDQUFDLENBQUMsVUFBVSxJQUFJLENBQUM7U0FDN0IsQ0FBQyxDQUFDLENBQ0gsQ0FBQTtJQUNGLENBQUM7SUFFRCxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQTtBQUNuQixDQUFDLENBQUE7QUFwQlksUUFBQSxJQUFJLFFBb0JoQjtBQUVNLE1BQU0sTUFBTSxHQUFHLEtBQUssRUFDMUIsR0FBcUQsRUFDckQsR0FBbUIsRUFDbEIsRUFBRTtJQUNILE1BQU0sRUFBRSxHQUFHLEVBQUUsR0FBRyxHQUFHLENBQUMsYUFBYSxDQUFBO0lBQ2pDLE1BQU0sV0FBVyxHQUFnQixHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxrQkFBVyxDQUFDLENBQUE7SUFDL0QsTUFBTSxXQUFXLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFBO0lBQ2xDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQTtBQUMzQixDQUFDLENBQUE7QUFSWSxRQUFBLE1BQU0sVUFRbEIifQ==
@@ -0,0 +1,3 @@
1
+ import { MedusaRequest, MedusaResponse } from '@medusajs/framework/http';
2
+ import { StoreSubmitFormType } from '../../validators';
3
+ export declare const POST: (req: MedusaRequest<StoreSubmitFormType>, res: MedusaResponse) => Promise<void>;
@@ -0,0 +1,85 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.POST = void 0;
4
+ const utils_1 = require("@medusajs/framework/utils");
5
+ const form_1 = require("../../../modules/form");
6
+ async function validateTurnstileToken(token, secret) {
7
+ const response = await fetch('https://challenges.cloudflare.com/turnstile/v0/siteverify', {
8
+ method: 'POST',
9
+ headers: { 'content-type': 'application/json' },
10
+ body: JSON.stringify({ response: token, secret })
11
+ });
12
+ const data = await response.json();
13
+ return data.success;
14
+ }
15
+ const POST = async (req, res) => {
16
+ const query = req.scope.resolve(utils_1.ContainerRegistrationKeys.QUERY);
17
+ const formService = req.scope.resolve(form_1.FORM_MODULE);
18
+ // Look up form by handle, include fields for validation
19
+ const { data: forms } = await query.graph({
20
+ entity: 'form',
21
+ fields: [
22
+ 'id',
23
+ 'active',
24
+ 'turnstile_enabled',
25
+ 'form_fields.name',
26
+ 'form_fields.label',
27
+ 'form_fields.required'
28
+ ],
29
+ filters: { handle: req.params.handle }
30
+ });
31
+ const form = forms[0];
32
+ if (!form) {
33
+ throw new utils_1.MedusaError(utils_1.MedusaError.Types.NOT_FOUND, `Form "${req.params.handle}" not found`);
34
+ }
35
+ if (!form.active) {
36
+ throw new utils_1.MedusaError(utils_1.MedusaError.Types.NOT_ALLOWED, `Form "${req.params.handle}" is not accepting submissions`);
37
+ }
38
+ const { cf_turnstile_response, data } = req.validatedBody;
39
+ // ── Sanitize data immediately: strip unknown fields and cap value sizes ──
40
+ const MAX_FIELD_VALUE_LENGTH = 10_000;
41
+ const configuredFields = form.form_fields ?? [];
42
+ const allowedFieldNames = new Set(configuredFields.map(f => f.name));
43
+ const filteredData = {};
44
+ for (const key of Object.keys(data)) {
45
+ if (!allowedFieldNames.has(key))
46
+ continue;
47
+ const val = data[key];
48
+ if (typeof val === 'string' && val.length > MAX_FIELD_VALUE_LENGTH) {
49
+ throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, `Field "${key}" exceeds maximum length of ${MAX_FIELD_VALUE_LENGTH} characters`);
50
+ }
51
+ filteredData[key] = val;
52
+ }
53
+ // Validate Turnstile token if required
54
+ if (form.turnstile_enabled) {
55
+ if (!cf_turnstile_response) {
56
+ throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, 'Turnstile token is required');
57
+ }
58
+ const { turnstileSecretKey } = formService.getOptions();
59
+ if (!turnstileSecretKey) {
60
+ throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, 'Turnstile is not configured on the server');
61
+ }
62
+ const valid = await validateTurnstileToken(cf_turnstile_response, turnstileSecretKey);
63
+ if (!valid) {
64
+ throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, 'Turnstile verification failed');
65
+ }
66
+ }
67
+ // Validate required fields (against already-filtered data)
68
+ const missingFields = configuredFields
69
+ .filter(f => f.required && (filteredData[f.name] == null || filteredData[f.name] === ''))
70
+ .map(f => f.label);
71
+ if (missingFields.length > 0) {
72
+ throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, `Missing required fields: ${missingFields.join(', ')}`);
73
+ }
74
+ const submission = await formService.createFormSubmissions({
75
+ form_id: form.id,
76
+ data: filteredData,
77
+ ip_address: req.headers['x-forwarded-for']?.split(',')[0]?.trim() ?? req.ip ?? null,
78
+ user_agent: req.headers['user-agent'] ?? null
79
+ });
80
+ const eventBus = req.scope.resolve(utils_1.Modules.EVENT_BUS);
81
+ await eventBus.emit({ name: 'form.submitted', data: { id: submission.id } });
82
+ res.status(201).json({ submitted: true });
83
+ };
84
+ exports.POST = POST;
85
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL2Zvcm1zL1toYW5kbGVdL3JvdXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUNBLHFEQUEyRjtBQUMzRixnREFBbUQ7QUFlbkQsS0FBSyxVQUFVLHNCQUFzQixDQUFDLEtBQWEsRUFBRSxNQUFjO0lBQ2xFLE1BQU0sUUFBUSxHQUFHLE1BQU0sS0FBSyxDQUFDLDJEQUEyRCxFQUFFO1FBQ3pGLE1BQU0sRUFBRSxNQUFNO1FBQ2QsT0FBTyxFQUFFLEVBQUUsY0FBYyxFQUFFLGtCQUFrQixFQUFFO1FBQy9DLElBQUksRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsQ0FBQztLQUNqRCxDQUFDLENBQUE7SUFDRixNQUFNLElBQUksR0FBRyxNQUFNLFFBQVEsQ0FBQyxJQUFJLEVBQTBCLENBQUE7SUFDMUQsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFBO0FBQ3BCLENBQUM7QUFFTSxNQUFNLElBQUksR0FBRyxLQUFLLEVBQ3hCLEdBQXVDLEVBQ3ZDLEdBQW1CLEVBQ2xCLEVBQUU7SUFDSCxNQUFNLEtBQUssR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxpQ0FBeUIsQ0FBQyxLQUFLLENBQUMsQ0FBQTtJQUNoRSxNQUFNLFdBQVcsR0FBZ0IsR0FBRyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsa0JBQVcsQ0FBQyxDQUFBO0lBRS9ELHdEQUF3RDtJQUN4RCxNQUFNLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxHQUFHLE1BQU0sS0FBSyxDQUFDLEtBQUssQ0FBQztRQUN6QyxNQUFNLEVBQUUsTUFBTTtRQUNkLE1BQU0sRUFBRTtZQUNQLElBQUk7WUFDSixRQUFRO1lBQ1IsbUJBQW1CO1lBQ25CLGtCQUFrQjtZQUNsQixtQkFBbUI7WUFDbkIsc0JBQXNCO1NBQ3RCO1FB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
@@ -0,0 +1,2 @@
1
+ declare const _default: import("@medusajs/framework/http").MiddlewaresConfig;
2
+ export default _default;
@@ -0,0 +1,142 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const http_1 = require("@medusajs/framework/http");
4
+ const validators_1 = require("./validators");
5
+ exports.default = (0, http_1.defineMiddlewares)([
6
+ {
7
+ matcher: '/admin/forms',
8
+ method: ['GET'],
9
+ middlewares: [
10
+ (0, http_1.validateAndTransformQuery)(validators_1.AdminGetForms, {
11
+ defaults: [
12
+ 'id', 'name', 'handle', 'description', 'active', 'turnstile_enabled',
13
+ 'notification_emails', 'metadata', 'created_at', 'updated_at', 'form_fields.id'
14
+ ],
15
+ isList: true,
16
+ defaultLimit: 15
17
+ })
18
+ ]
19
+ },
20
+ {
21
+ matcher: '/admin/forms',
22
+ method: ['POST'],
23
+ middlewares: [(0, http_1.validateAndTransformBody)(validators_1.AdminCreateForm)]
24
+ },
25
+ {
26
+ matcher: '/admin/forms',
27
+ method: ['DELETE'],
28
+ middlewares: [(0, http_1.validateAndTransformBody)(validators_1.AdminDeleteForms)]
29
+ },
30
+ {
31
+ matcher: '/admin/forms/:id',
32
+ method: ['GET'],
33
+ middlewares: [
34
+ (0, http_1.validateAndTransformQuery)(validators_1.AdminGetForm, {
35
+ defaults: [
36
+ 'id', 'name', 'handle', 'description', 'active', 'turnstile_enabled',
37
+ 'notification_emails', 'metadata', 'created_at', 'updated_at',
38
+ 'form_fields.id', 'form_fields.name', 'form_fields.label',
39
+ 'form_fields.field_type', 'form_fields.required', 'form_fields.sort_order',
40
+ 'form_fields.field_options.id', 'form_fields.field_options.label',
41
+ 'form_fields.field_options.value', 'form_fields.field_options.sort_order'
42
+ ],
43
+ isList: false
44
+ })
45
+ ]
46
+ },
47
+ {
48
+ matcher: '/admin/forms/:id',
49
+ method: ['POST'],
50
+ middlewares: [(0, http_1.validateAndTransformBody)(validators_1.AdminUpdateForm)]
51
+ },
52
+ {
53
+ matcher: '/admin/forms/:id/fields',
54
+ method: ['GET'],
55
+ middlewares: [
56
+ (0, http_1.validateAndTransformQuery)(validators_1.AdminGetFormFields, {
57
+ defaults: [
58
+ 'id', 'name', 'label', 'field_type', 'required', 'options', 'sort_order',
59
+ 'created_at', 'updated_at'
60
+ ],
61
+ isList: true,
62
+ defaultLimit: 50
63
+ })
64
+ ]
65
+ },
66
+ {
67
+ matcher: '/admin/forms/:id/fields',
68
+ method: ['POST'],
69
+ middlewares: [(0, http_1.validateAndTransformBody)(validators_1.AdminCreateFormField)]
70
+ },
71
+ {
72
+ matcher: '/admin/forms/:id/fields',
73
+ method: ['DELETE'],
74
+ middlewares: [(0, http_1.validateAndTransformBody)(validators_1.AdminDeleteFormFields)]
75
+ },
76
+ {
77
+ matcher: '/admin/forms/:id/fields/:fieldId',
78
+ method: ['POST'],
79
+ middlewares: [(0, http_1.validateAndTransformBody)(validators_1.AdminUpdateFormField)]
80
+ },
81
+ {
82
+ matcher: '/admin/forms/:id/fields/:fieldId/options',
83
+ method: ['POST'],
84
+ middlewares: [(0, http_1.validateAndTransformBody)(validators_1.AdminCreateFormFieldOption)]
85
+ },
86
+ {
87
+ matcher: '/admin/forms/:id/fields/:fieldId/options',
88
+ method: ['DELETE'],
89
+ middlewares: [(0, http_1.validateAndTransformBody)(validators_1.AdminDeleteFormFieldOptions)]
90
+ },
91
+ {
92
+ matcher: '/admin/forms/:id/fields/:fieldId/options/:optionId',
93
+ method: ['POST'],
94
+ middlewares: [(0, http_1.validateAndTransformBody)(validators_1.AdminUpdateFormFieldOption)]
95
+ },
96
+ {
97
+ matcher: '/admin/form-submissions',
98
+ method: ['GET'],
99
+ middlewares: [
100
+ (0, http_1.validateAndTransformQuery)(validators_1.AdminGetFormSubmissions, {
101
+ defaults: [
102
+ 'id', 'status', 'data', 'ip_address', 'user_agent', 'created_at', 'updated_at',
103
+ 'form.id', 'form.name', 'form.handle'
104
+ ],
105
+ isList: true,
106
+ defaultLimit: 20
107
+ })
108
+ ]
109
+ },
110
+ {
111
+ matcher: '/admin/form-submissions',
112
+ method: ['DELETE'],
113
+ middlewares: [(0, http_1.validateAndTransformBody)(validators_1.AdminDeleteFormSubmissions)]
114
+ },
115
+ {
116
+ matcher: '/admin/form-submissions/:id',
117
+ method: ['GET'],
118
+ middlewares: [
119
+ (0, http_1.validateAndTransformQuery)(validators_1.AdminGetFormSubmission, {
120
+ defaults: [
121
+ 'id', 'status', 'data', 'ip_address', 'user_agent', 'created_at', 'updated_at',
122
+ 'form.id', 'form.name', 'form.handle',
123
+ 'form.form_fields.id', 'form.form_fields.name',
124
+ 'form.form_fields.label', 'form.form_fields.field_type'
125
+ ],
126
+ isList: false
127
+ })
128
+ ]
129
+ },
130
+ {
131
+ matcher: '/admin/form-submissions/:id',
132
+ method: ['POST'],
133
+ middlewares: [(0, http_1.validateAndTransformBody)(validators_1.AdminUpdateFormSubmission)]
134
+ },
135
+ // Store
136
+ {
137
+ matcher: '/forms/:handle',
138
+ method: ['POST'],
139
+ middlewares: [(0, http_1.validateAndTransformBody)(validators_1.StoreSubmitForm)]
140
+ }
141
+ ]);
142
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWlkZGxld2FyZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYXBpL21pZGRsZXdhcmVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsbURBQWlIO0FBQ2pILDZDQWtCcUI7QUFFckIsa0JBQWUsSUFBQSx3QkFBaUIsRUFBQztJQUNoQztRQUNDLE9BQU8sRUFBRSxjQUFjO1FBQ3ZCLE1BQU0sRUFBRSxDQUFDLEtBQUssQ0FBQztRQUNmLFdBQVcsRUFBRTtZQUNaLElBQUEsZ0NBQXlCLEVBQUMsMEJBQWEsRUFBRTtnQkFDeEMsUUFBUSxFQUFFO29CQUNULElBQUksRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLGFBQWEsRUFBRSxRQUFRLEVBQUUsbUJBQW1CO29CQUNwRSxxQkFBcUIsRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLFlBQVksRUFBRSxnQkFBZ0I7aUJBQy9FO2dCQUNELE1BQU0sRUFBRSxJQUFJO2dCQUNaLFlBQVksRUFBRSxFQUFFO2FBQ2hCLENBQUM7U0FDRjtLQUNEO0lBQ0Q7UUFDQyxPQUFPLEVBQUUsY0FBYztRQUN2QixNQUFNLEVBQUUsQ0FBQyxNQUFNLENBQUM7UUFDaEIsV0FBVyxFQUFFLENBQUMsSUFBQSwrQkFBd0IsRUFBQyw0QkFBZSxDQUFDLENBQUM7S0FDeEQ7SUFDRDtRQUNDLE9BQU8sRUFBRSxjQUFjO1FBQ3ZCLE1BQU0sRUFBRSxDQUFDLFFBQVEsQ0FBQztRQUNsQixXQUFXLEVBQUUsQ0FBQyxJQUFBLCtCQUF3QixFQUFDLDZCQUFnQixDQUFDLENBQUM7S0FDekQ7SUFDRDtRQUNDLE9BQU8sRUFBRSxrQkFBa0I7UUFDM0IsTUFBTSxFQUFFLENBQUMsS0FBSyxDQUFDO1FBQ2YsV0FBVyxFQUFFO1lBQ1osSUFBQSxnQ0FBeUIsRUFBQyx5QkFBWSxFQUFFO2dCQUN2QyxRQUFRLEVBQUU7b0JBQ1QsSUFBSSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsYUFBYSxFQUFFLFFBQVEs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