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.
- package/.medusa/server/medusa-config.d.ts +1 -0
- package/.medusa/server/medusa-config.js +27 -0
- package/.medusa/server/src/admin/index.js +6388 -0
- package/.medusa/server/src/admin/index.mjs +6386 -0
- package/.medusa/server/src/api/admin/form-submissions/[id]/route.d.ts +5 -0
- package/.medusa/server/src/api/admin/form-submissions/[id]/route.js +27 -0
- package/.medusa/server/src/api/admin/form-submissions/route.d.ts +4 -0
- package/.medusa/server/src/api/admin/form-submissions/route.js +32 -0
- package/.medusa/server/src/api/admin/forms/[id]/fields/[fieldId]/options/[optionId]/route.d.ts +4 -0
- package/.medusa/server/src/api/admin/forms/[id]/fields/[fieldId]/options/[optionId]/route.js +20 -0
- package/.medusa/server/src/api/admin/forms/[id]/fields/[fieldId]/options/route.d.ts +4 -0
- package/.medusa/server/src/api/admin/forms/[id]/fields/[fieldId]/options/route.js +21 -0
- package/.medusa/server/src/api/admin/forms/[id]/fields/[fieldId]/route.d.ts +4 -0
- package/.medusa/server/src/api/admin/forms/[id]/fields/[fieldId]/route.js +41 -0
- package/.medusa/server/src/api/admin/forms/[id]/fields/route.d.ts +5 -0
- package/.medusa/server/src/api/admin/forms/[id]/fields/route.js +33 -0
- package/.medusa/server/src/api/admin/forms/[id]/route.d.ts +5 -0
- package/.medusa/server/src/api/admin/forms/[id]/route.js +57 -0
- package/.medusa/server/src/api/admin/forms/route.d.ts +5 -0
- package/.medusa/server/src/api/admin/forms/route.js +41 -0
- package/.medusa/server/src/api/forms/[handle]/route.d.ts +3 -0
- package/.medusa/server/src/api/forms/[handle]/route.js +85 -0
- package/.medusa/server/src/api/middlewares.d.ts +2 -0
- package/.medusa/server/src/api/middlewares.js +142 -0
- package/.medusa/server/src/api/validators.d.ts +390 -0
- package/.medusa/server/src/api/validators.js +106 -0
- package/.medusa/server/src/modules/form/index.d.ts +64 -0
- package/.medusa/server/src/modules/form/index.js +23 -0
- package/.medusa/server/src/modules/form/migrations/Migration20260409171800.d.ts +5 -0
- package/.medusa/server/src/modules/form/migrations/Migration20260409171800.js +38 -0
- package/.medusa/server/src/modules/form/models/form-field-option.d.ts +34 -0
- package/.medusa/server/src/modules/form/models/form-field-option.js +13 -0
- package/.medusa/server/src/modules/form/models/form-field.d.ts +34 -0
- package/.medusa/server/src/modules/form/models/form-field.js +21 -0
- package/.medusa/server/src/modules/form/models/form-submission.d.ts +39 -0
- package/.medusa/server/src/modules/form/models/form-submission.js +20 -0
- package/.medusa/server/src/modules/form/models/form.d.ts +34 -0
- package/.medusa/server/src/modules/form/models/form.js +23 -0
- package/.medusa/server/src/modules/form/service.d.ts +145 -0
- package/.medusa/server/src/modules/form/service.js +24 -0
- package/.medusa/server/src/modules/form/types.d.ts +4 -0
- package/.medusa/server/src/modules/form/types.js +3 -0
- package/LICENSE +21 -0
- package/README.md +157 -0
- 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==
|
package/.medusa/server/src/api/admin/forms/[id]/fields/[fieldId]/options/[optionId]/route.d.ts
ADDED
|
@@ -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,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,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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
|