medusa-contact-us 0.0.17 → 0.0.21

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 (26) hide show
  1. package/.medusa/server/src/admin/index.js +493 -4
  2. package/.medusa/server/src/admin/index.mjs +495 -6
  3. package/.medusa/server/src/api/admin/contact-requests/[id]/route.js +17 -0
  4. package/.medusa/server/src/api/admin/contact-requests/[id]/status/route.js +24 -0
  5. package/.medusa/server/src/api/admin/contact-requests/route.js +67 -0
  6. package/.medusa/server/src/api/admin/contact-requests/validators.js +29 -0
  7. package/.medusa/server/src/api/store/contact-requests/route.js +23 -0
  8. package/.medusa/server/src/api/store/contact-requests/validators.js +11 -0
  9. package/.medusa/server/src/helpers/contact-request.js +52 -0
  10. package/.medusa/server/src/helpers/index.js +5 -2
  11. package/.medusa/server/src/index.js +10 -2
  12. package/.medusa/server/src/modules/contact-requests/index.js +14 -0
  13. package/.medusa/server/src/modules/contact-requests/migrations/Migration20241129163317.js +47 -0
  14. package/.medusa/server/src/modules/contact-requests/models/contact-request.js +15 -0
  15. package/.medusa/server/src/modules/contact-requests/service.js +236 -0
  16. package/.medusa/server/src/modules/contact-requests/utils/resolve-options.js +48 -0
  17. package/.medusa/server/src/types/contact-request.js +3 -0
  18. package/.medusa/server/src/workflows/create-contact-request-workflow.js +13 -0
  19. package/.medusa/server/src/workflows/index.js +8 -0
  20. package/.medusa/server/src/workflows/steps/create-contact-request-step.js +13 -0
  21. package/.medusa/server/src/workflows/steps/resolve-status-transition-step.js +15 -0
  22. package/.medusa/server/src/workflows/steps/send-status-notification-step.js +56 -0
  23. package/.medusa/server/src/workflows/steps/update-contact-request-status-step.js +17 -0
  24. package/.medusa/server/src/workflows/update-contact-request-status-workflow.js +33 -0
  25. package/README.md +381 -10
  26. package/package.json +2 -1
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AdminUpdateContactRequestStatusSchema = exports.AdminListContactRequestsSchema = exports.AdminCreateContactRequestSchema = void 0;
4
+ const zod_1 = require("zod");
5
+ exports.AdminCreateContactRequestSchema = zod_1.z.object({
6
+ email: zod_1.z.string().email(),
7
+ payload: zod_1.z.record(zod_1.z.unknown()).optional(),
8
+ metadata: zod_1.z.record(zod_1.z.unknown()).optional(),
9
+ source: zod_1.z.string().optional(),
10
+ });
11
+ exports.AdminListContactRequestsSchema = zod_1.z.object({
12
+ email: zod_1.z.string().optional(),
13
+ status: zod_1.z.string().optional(),
14
+ source: zod_1.z.string().optional(),
15
+ created_at: zod_1.z
16
+ .object({
17
+ gte: zod_1.z.string().datetime().optional(),
18
+ lte: zod_1.z.string().datetime().optional(),
19
+ })
20
+ .optional(),
21
+ limit: zod_1.z.coerce.number().int().positive().max(100).default(20),
22
+ offset: zod_1.z.coerce.number().int().nonnegative().default(0),
23
+ order: zod_1.z.enum(["created_at", "updated_at", "email"]).optional(),
24
+ order_direction: zod_1.z.enum(["ASC", "DESC"]).default("DESC"),
25
+ });
26
+ exports.AdminUpdateContactRequestStatusSchema = zod_1.z.object({
27
+ status: zod_1.z.string(),
28
+ });
29
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdG9ycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcGkvYWRtaW4vY29udGFjdC1yZXF1ZXN0cy92YWxpZGF0b3JzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDZCQUF1QjtBQUVWLFFBQUEsK0JBQStCLEdBQUcsT0FBQyxDQUFDLE1BQU0sQ0FBQztJQUN0RCxLQUFLLEVBQUUsT0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLEtBQUssRUFBRTtJQUN6QixPQUFPLEVBQUUsT0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxRQUFRLEVBQUU7SUFDekMsUUFBUSxFQUFFLE9BQUMsQ0FBQyxNQUFNLENBQUMsT0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsUUFBUSxFQUFFO0lBQzFDLE1BQU0sRUFBRSxPQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxFQUFFO0NBQzlCLENBQUMsQ0FBQTtBQU1XLFFBQUEsOEJBQThCLEdBQUcsT0FBQyxDQUFDLE1BQU0sQ0FBQztJQUNyRCxLQUFLLEVBQUUsT0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsRUFBRTtJQUM1QixNQUFNLEVBQUUsT0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsRUFBRTtJQUM3QixNQUFNLEVBQUUsT0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsRUFBRTtJQUM3QixVQUFVLEVBQUUsT0FBQztTQUNWLE1BQU0sQ0FBQztRQUNOLEdBQUcsRUFBRSxPQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxFQUFFLENBQUMsUUFBUSxFQUFFO1FBQ3JDLEdBQUcsRUFBRSxPQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxFQUFFLENBQUMsUUFBUSxFQUFFO0tBQ3RDLENBQUM7U0FDRCxRQUFRLEVBQUU7SUFDYixLQUFLLEVBQUUsT0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztJQUM5RCxNQUFNLEVBQUUsT0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO0lBQ3hELEtBQUssRUFBRSxPQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsWUFBWSxFQUFFLFlBQVksRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRTtJQUMvRCxlQUFlLEVBQUUsT0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUM7Q0FDekQsQ0FBQyxDQUFBO0FBTVcsUUFBQSxxQ0FBcUMsR0FBRyxPQUFDLENBQUMsTUFBTSxDQUFDO0lBQzVELE1BQU0sRUFBRSxPQUFDLENBQUMsTUFBTSxFQUFFO0NBQ25CLENBQUMsQ0FBQSJ9
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.POST = exports.AUTHENTICATE = void 0;
7
+ const validators_1 = require("./validators");
8
+ const create_contact_request_workflow_1 = __importDefault(require("../../../workflows/create-contact-request-workflow"));
9
+ exports.AUTHENTICATE = false;
10
+ const POST = async (req, res) => {
11
+ const body = validators_1.StoreCreateContactRequestSchema.parse(req.body ?? {});
12
+ const { result } = await (0, create_contact_request_workflow_1.default)(req.scope).run({
13
+ input: {
14
+ email: body.email,
15
+ payload: body.payload,
16
+ metadata: body.metadata,
17
+ source: body.source ?? "storefront",
18
+ },
19
+ });
20
+ res.status(200).json({ request: result.request });
21
+ };
22
+ exports.POST = POST;
23
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL3N0b3JlL2NvbnRhY3QtcmVxdWVzdHMvcm91dGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQ0EsNkNBQThEO0FBQzlELHlIQUE2RjtBQUVoRixRQUFBLFlBQVksR0FBRyxLQUFLLENBQUE7QUFFMUIsTUFBTSxJQUFJLEdBQUcsS0FBSyxFQUFFLEdBQWtCLEVBQUUsR0FBbUIsRUFBRSxFQUFFO0lBQ3BFLE1BQU0sSUFBSSxHQUFHLDRDQUErQixDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQyxDQUFBO0lBRWxFLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxNQUFNLElBQUEseUNBQTRCLEVBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsQ0FBQztRQUNuRSxLQUFLLEVBQUU7WUFDTCxLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUs7WUFDakIsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPO1lBQ3JCLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUTtZQUN2QixNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU0sSUFBSSxZQUFZO1NBQ3BDO0tBQ0YsQ0FBQyxDQUFBO0lBRUYsR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxPQUFPLEVBQUUsTUFBTSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUE7QUFDbkQsQ0FBQyxDQUFBO0FBYlksUUFBQSxJQUFJLFFBYWhCIn0=
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.StoreCreateContactRequestSchema = void 0;
4
+ const zod_1 = require("zod");
5
+ exports.StoreCreateContactRequestSchema = zod_1.z.object({
6
+ email: zod_1.z.string().email(),
7
+ payload: zod_1.z.record(zod_1.z.unknown()).optional(),
8
+ metadata: zod_1.z.record(zod_1.z.unknown()).optional(),
9
+ source: zod_1.z.string().optional(),
10
+ });
11
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdG9ycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcGkvc3RvcmUvY29udGFjdC1yZXF1ZXN0cy92YWxpZGF0b3JzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDZCQUF1QjtBQUVWLFFBQUEsK0JBQStCLEdBQUcsT0FBQyxDQUFDLE1BQU0sQ0FBQztJQUN0RCxLQUFLLEVBQUUsT0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLEtBQUssRUFBRTtJQUN6QixPQUFPLEVBQUUsT0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxRQUFRLEVBQUU7SUFDekMsUUFBUSxFQUFFLE9BQUMsQ0FBQyxNQUFNLENBQUMsT0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsUUFBUSxFQUFFO0lBQzFDLE1BQU0sRUFBRSxPQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxFQUFFO0NBQzlCLENBQUMsQ0FBQSJ9
@@ -0,0 +1,52 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createSubmitContactRequest = exports.submitContactRequest = void 0;
4
+ const base_client_1 = require("./base-client");
5
+ const CONTACT_REQUEST_ENDPOINT = "/store/contact-requests";
6
+ const resolveEndpoint = (endpoint) => endpoint?.startsWith("/") ? endpoint : CONTACT_REQUEST_ENDPOINT;
7
+ const submitContactRequest = async (input, options = {}) => {
8
+ const endpoint = resolveEndpoint(input.endpoint);
9
+ const payload = {
10
+ email: input.email,
11
+ payload: input.payload,
12
+ metadata: input.metadata,
13
+ source: input.source,
14
+ };
15
+ const clientRequest = (0, base_client_1.getClientRequest)(options.client);
16
+ if (clientRequest) {
17
+ const headers = (0, base_client_1.buildHeaders)(options);
18
+ const raw = await clientRequest(endpoint, {
19
+ method: "POST",
20
+ body: JSON.stringify(payload),
21
+ headers,
22
+ });
23
+ if (!raw || typeof raw !== "object" || !("request" in raw)) {
24
+ throw new Error("Invalid response from contact request endpoint");
25
+ }
26
+ return raw;
27
+ }
28
+ const fetchImpl = options.fetchImpl ?? globalThis.fetch;
29
+ if (!fetchImpl) {
30
+ throw new Error("No fetch implementation available. Provide `fetchImpl` or a Medusa client.");
31
+ }
32
+ const url = `${(0, base_client_1.normalizeBaseUrl)(options.baseUrl)}${endpoint}`;
33
+ const headers = (0, base_client_1.buildHeaders)(options);
34
+ const response = await fetchImpl(url || endpoint, {
35
+ method: "POST",
36
+ headers,
37
+ body: JSON.stringify(payload),
38
+ });
39
+ if (!response.ok) {
40
+ const body = await response.text();
41
+ throw new Error(body || `Failed to submit contact request (status ${response.status})`);
42
+ }
43
+ const json = await response.json();
44
+ if (!json || typeof json !== "object" || !("request" in json)) {
45
+ throw new Error("Invalid response format from contact request endpoint");
46
+ }
47
+ return json;
48
+ };
49
+ exports.submitContactRequest = submitContactRequest;
50
+ const createSubmitContactRequest = (options = {}) => (input) => (0, exports.submitContactRequest)(input, options);
51
+ exports.createSubmitContactRequest = createSubmitContactRequest;
52
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGFjdC1yZXF1ZXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2hlbHBlcnMvY29udGFjdC1yZXF1ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUVBLCtDQUtzQjtBQUV0QixNQUFNLHdCQUF3QixHQUFHLHlCQUF5QixDQUFBO0FBRTFELE1BQU0sZUFBZSxHQUFHLENBQUMsUUFBaUIsRUFBRSxFQUFFLENBQzVDLFFBQVEsRUFBRSxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsd0JBQXdCLENBQUE7QUFZMUQsTUFBTSxvQkFBb0IsR0FBRyxLQUFLLEVBQ3ZDLEtBQWdDLEVBQ2hDLFVBQXVDLEVBQUUsRUFDRixFQUFFO0lBQ3pDLE1BQU0sUUFBUSxHQUFHLGVBQWUsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUE7SUFDaEQsTUFBTSxPQUFPLEdBQUc7UUFDZCxLQUFLLEVBQUUsS0FBSyxDQUFDLEtBQUs7UUFDbEIsT0FBTyxFQUFFLEtBQUssQ0FBQyxPQUFPO1FBQ3RCLFFBQVEsRUFBRSxLQUFLLENBQUMsUUFBUTtRQUN4QixNQUFNLEVBQUUsS0FBSyxDQUFDLE1BQU07S0FDckIsQ0FBQTtJQUVELE1BQU0sYUFBYSxHQUFHLElBQUEsOEJBQWdCLEVBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFBO0lBQ3RELElBQUksYUFBYSxFQUFFLENBQUM7UUFDbEIsTUFBTSxPQUFPLEdBQUcsSUFBQSwwQkFBWSxFQUFDLE9BQU8sQ0FBQyxDQUFBO1FBQ3JDLE1BQU0sR0FBRyxHQUFHLE1BQU0sYUFBYSxDQUFDLFFBQVEsRUFBRTtZQUN4QyxNQUFNLEVBQUUsTUFBTTtZQUNkLElBQUksRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQztZQUM3QixPQUFPO1NBQ1IsQ0FBQyxDQUFBO1FBRUYsSUFBSSxDQUFDLEdBQUcsSUFBSSxPQUFPLEdBQUcsS0FBSyxRQUFRLElBQUksQ0FBQyxDQUFDLFNBQVMsSUFBSSxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQzNELE1BQU0sSUFBSSxLQUFLLENBQUMsZ0RBQWdELENBQUMsQ0FBQTtRQUNuRSxDQUFDO1FBRUQsT0FBTyxHQUFtQyxDQUFBO0lBQzVDLENBQUM7SUFFRCxNQUFNLFNBQVMsR0FBRyxPQUFPLENBQUMsU0FBUyxJQUFJLFVBQVUsQ0FBQyxLQUFLLENBQUE7SUFDdkQsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQ2YsTUFBTSxJQUFJLEtBQUssQ0FDYiw0RUFBNEUsQ0FDN0UsQ0FBQTtJQUNILENBQUM7SUFFRCxNQUFNLEdBQUcsR0FBRyxHQUFHLElBQUEsOEJBQWdCLEVBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxHQUFHLFFBQVEsRUFBRSxDQUFBO0lBQzdELE1BQU0sT0FBTyxHQUFHLElBQUEsMEJBQVksRUFBQyxPQUFPLENBQUMsQ0FBQTtJQUVyQyxNQUFNLFFBQVEsR0FBRyxNQUFNLFNBQVMsQ0FBQyxHQUFHLElBQUksUUFBUSxFQUFFO1FBQ2hELE1BQU0sRUFBRSxNQUFNO1FBQ2QsT0FBTztRQUNQLElBQUksRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQztLQUM5QixDQUFDLENBQUE7SUFFRixJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUUsRUFBRSxDQUFDO1FBQ2pCLE1BQU0sSUFBSSxHQUFHLE1BQU0sUUFBUSxDQUFDLElBQUksRUFBRSxDQUFBO1FBQ2xDLE1BQU0sSUFBSSxLQUFLLENBQ2IsSUFBSSxJQUFJLDRDQUE0QyxRQUFRLENBQUMsTUFBTSxHQUFHLENBQ3ZFLENBQUE7SUFDSCxDQUFDO0lBRUQsTUFBTSxJQUFJLEdBQUcsTUFBTSxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUE7SUFDbEMsSUFBSSxDQUFDLElBQUksSUFBSSxPQUFPLElBQUksS0FBSyxRQUFRLElBQUksQ0FBQyxDQUFDLFNBQVMsSUFBSSxJQUFJLENBQUMsRUFBRSxDQUFDO1FBQzlELE1BQU0sSUFBSSxLQUFLLENBQUMsdURBQXVELENBQUMsQ0FBQTtJQUMxRSxDQUFDO0lBRUQsT0FBTyxJQUFvQyxDQUFBO0FBQzdDLENBQUMsQ0FBQTtBQXpEWSxRQUFBLG9CQUFvQix3QkF5RGhDO0FBRU0sTUFBTSwwQkFBMEIsR0FDckMsQ0FBQyxVQUF1QyxFQUFFLEVBQUUsRUFBRSxDQUM5QyxDQUFDLEtBQWdDLEVBQUUsRUFBRSxDQUNuQyxJQUFBLDRCQUFvQixFQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQTtBQUgzQixRQUFBLDBCQUEwQiw4QkFHQyJ9
@@ -1,7 +1,10 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.createUpsertContactSubscription = exports.upsertContactSubscription = void 0;
3
+ exports.createSubmitContactRequest = exports.submitContactRequest = exports.createUpsertContactSubscription = exports.upsertContactSubscription = void 0;
4
4
  var contact_subscription_1 = require("./contact-subscription");
5
5
  Object.defineProperty(exports, "upsertContactSubscription", { enumerable: true, get: function () { return contact_subscription_1.upsertContactSubscription; } });
6
6
  Object.defineProperty(exports, "createUpsertContactSubscription", { enumerable: true, get: function () { return contact_subscription_1.createUpsertContactSubscription; } });
7
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvaGVscGVycy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSwrREFHK0I7QUFGN0IsaUlBQUEseUJBQXlCLE9BQUE7QUFDekIsdUlBQUEsK0JBQStCLE9BQUEifQ==
7
+ var contact_request_1 = require("./contact-request");
8
+ Object.defineProperty(exports, "submitContactRequest", { enumerable: true, get: function () { return contact_request_1.submitContactRequest; } });
9
+ Object.defineProperty(exports, "createSubmitContactRequest", { enumerable: true, get: function () { return contact_request_1.createSubmitContactRequest; } });
10
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvaGVscGVycy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSwrREFHK0I7QUFGN0IsaUlBQUEseUJBQXlCLE9BQUE7QUFDekIsdUlBQUEsK0JBQStCLE9BQUE7QUFFakMscURBRzBCO0FBRnhCLHVIQUFBLG9CQUFvQixPQUFBO0FBQ3BCLDZIQUFBLDBCQUEwQixPQUFBIn0=
@@ -17,14 +17,22 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
17
17
  return (mod && mod.__esModule) ? mod : { "default": mod };
18
18
  };
19
19
  Object.defineProperty(exports, "__esModule", { value: true });
20
- exports.ContactSubscriptionModuleService = exports.ContactSubscriptionModule = exports.CONTACT_SUBSCRIPTION_MODULE = void 0;
20
+ exports.ContactRequestModuleService = exports.ContactRequestModule = exports.ContactSubscriptionModuleService = exports.ContactSubscriptionModule = exports.CONTACT_REQUEST_MODULE = exports.CONTACT_SUBSCRIPTION_MODULE = void 0;
21
21
  // Export module constants for backward compatibility
22
22
  var contact_subscriptions_1 = require("./modules/contact-subscriptions");
23
23
  Object.defineProperty(exports, "CONTACT_SUBSCRIPTION_MODULE", { enumerable: true, get: function () { return contact_subscriptions_1.CONTACT_SUBSCRIPTION_MODULE; } });
24
+ var contact_requests_1 = require("./modules/contact-requests");
25
+ Object.defineProperty(exports, "CONTACT_REQUEST_MODULE", { enumerable: true, get: function () { return contact_requests_1.CONTACT_REQUEST_MODULE; } });
24
26
  __exportStar(require("./helpers/contact-subscription"), exports);
27
+ __exportStar(require("./helpers/contact-request"), exports);
25
28
  __exportStar(require("./types"), exports);
29
+ __exportStar(require("./types/contact-request"), exports);
26
30
  var contact_subscriptions_2 = require("./modules/contact-subscriptions");
27
31
  Object.defineProperty(exports, "ContactSubscriptionModule", { enumerable: true, get: function () { return __importDefault(contact_subscriptions_2).default; } });
28
32
  var contact_subscriptions_3 = require("./modules/contact-subscriptions");
29
33
  Object.defineProperty(exports, "ContactSubscriptionModuleService", { enumerable: true, get: function () { return contact_subscriptions_3.ContactSubscriptionModuleService; } });
30
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxxREFBcUQ7QUFDckQseUVBQTZFO0FBQXBFLG9JQUFBLDJCQUEyQixPQUFBO0FBRXBDLGlFQUE4QztBQUM5QywwQ0FBdUI7QUFDdkIseUVBRXdDO0FBRHRDLG1KQUFBLE9BQU8sT0FBNkI7QUFFdEMseUVBQWtGO0FBQXpFLHlJQUFBLGdDQUFnQyxPQUFBIn0=
34
+ var contact_requests_2 = require("./modules/contact-requests");
35
+ Object.defineProperty(exports, "ContactRequestModule", { enumerable: true, get: function () { return __importDefault(contact_requests_2).default; } });
36
+ var contact_requests_3 = require("./modules/contact-requests");
37
+ Object.defineProperty(exports, "ContactRequestModuleService", { enumerable: true, get: function () { return contact_requests_3.ContactRequestModuleService; } });
38
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxxREFBcUQ7QUFDckQseUVBQTZFO0FBQXBFLG9JQUFBLDJCQUEyQixPQUFBO0FBQ3BDLCtEQUFtRTtBQUExRCwwSEFBQSxzQkFBc0IsT0FBQTtBQUUvQixpRUFBOEM7QUFDOUMsNERBQXlDO0FBQ3pDLDBDQUF1QjtBQUN2QiwwREFBdUM7QUFDdkMseUVBRXdDO0FBRHRDLG1KQUFBLE9BQU8sT0FBNkI7QUFFdEMseUVBQWtGO0FBQXpFLHlJQUFBLGdDQUFnQyxPQUFBO0FBQ3pDLCtEQUVtQztBQURqQyx5SUFBQSxPQUFPLE9BQXdCO0FBRWpDLCtEQUF3RTtBQUEvRCwrSEFBQSwyQkFBMkIsT0FBQSJ9
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.ContactRequestModuleService = exports.CONTACT_REQUEST_MODULE = void 0;
7
+ const utils_1 = require("@medusajs/framework/utils");
8
+ const service_1 = __importDefault(require("./service"));
9
+ exports.ContactRequestModuleService = service_1.default;
10
+ exports.CONTACT_REQUEST_MODULE = "contact_requests";
11
+ exports.default = (0, utils_1.Module)(exports.CONTACT_REQUEST_MODULE, {
12
+ service: service_1.default,
13
+ });
14
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbW9kdWxlcy9jb250YWN0LXJlcXVlc3RzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLHFEQUFrRDtBQUNsRCx3REFBbUQ7QUFRMUMsc0NBUkYsaUJBQTJCLENBUUU7QUFOdkIsUUFBQSxzQkFBc0IsR0FBRyxrQkFBa0IsQ0FBQTtBQUV4RCxrQkFBZSxJQUFBLGNBQU0sRUFBQyw4QkFBc0IsRUFBRTtJQUM1QyxPQUFPLEVBQUUsaUJBQTJCO0NBQ3JDLENBQUMsQ0FBQSJ9
@@ -0,0 +1,47 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Migration20241129163317 = void 0;
4
+ const migrations_1 = require("@mikro-orm/migrations");
5
+ class Migration20241129163317 extends migrations_1.Migration {
6
+ async up() {
7
+ this.addSql(`
8
+ CREATE TABLE IF NOT EXISTS "contact_request" (
9
+ "id" text PRIMARY KEY,
10
+ "email" text NOT NULL,
11
+ "payload" jsonb NULL,
12
+ "status" text NOT NULL,
13
+ "status_history" jsonb NULL,
14
+ "metadata" jsonb NULL,
15
+ "source" text NULL,
16
+ "created_at" timestamptz NOT NULL DEFAULT now(),
17
+ "updated_at" timestamptz NOT NULL DEFAULT now(),
18
+ "deleted_at" timestamptz NULL
19
+ );
20
+ `);
21
+ this.addSql(`
22
+ CREATE INDEX IF NOT EXISTS "IDX_contact_request_email"
23
+ ON "contact_request" ("email");
24
+ `);
25
+ this.addSql(`
26
+ CREATE INDEX IF NOT EXISTS "IDX_contact_request_status"
27
+ ON "contact_request" ("status");
28
+ `);
29
+ this.addSql(`
30
+ CREATE INDEX IF NOT EXISTS "IDX_contact_request_source"
31
+ ON "contact_request" ("source");
32
+ `);
33
+ this.addSql(`
34
+ CREATE INDEX IF NOT EXISTS "IDX_contact_request_created_at"
35
+ ON "contact_request" ("created_at");
36
+ `);
37
+ this.addSql(`
38
+ CREATE INDEX IF NOT EXISTS "IDX_contact_request_deleted_at"
39
+ ON "contact_request" ("deleted_at");
40
+ `);
41
+ }
42
+ async down() {
43
+ this.addSql(`DROP TABLE IF EXISTS "contact_request";`);
44
+ }
45
+ }
46
+ exports.Migration20241129163317 = Migration20241129163317;
47
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTWlncmF0aW9uMjAyNDExMjkxNjMzMTcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbW9kdWxlcy9jb250YWN0LXJlcXVlc3RzL21pZ3JhdGlvbnMvTWlncmF0aW9uMjAyNDExMjkxNjMzMTcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsc0RBQWlEO0FBRWpELE1BQWEsdUJBQXdCLFNBQVEsc0JBQVM7SUFDcEQsS0FBSyxDQUFDLEVBQUU7UUFDTixJQUFJLENBQUMsTUFBTSxDQUFDOzs7Ozs7Ozs7Ozs7O0tBYVgsQ0FBQyxDQUFBO1FBRUYsSUFBSSxDQUFDLE1BQU0sQ0FBQzs7O0tBR1gsQ0FBQyxDQUFBO1FBRUYsSUFBSSxDQUFDLE1BQU0sQ0FBQzs7O0tBR1gsQ0FBQyxDQUFBO1FBRUYsSUFBSSxDQUFDLE1BQU0sQ0FBQzs7O0tBR1gsQ0FBQyxDQUFBO1FBRUYsSUFBSSxDQUFDLE1BQU0sQ0FBQzs7O0tBR1gsQ0FBQyxDQUFBO1FBRUYsSUFBSSxDQUFDLE1BQU0sQ0FBQzs7O0tBR1gsQ0FBQyxDQUFBO0lBQ0osQ0FBQztJQUVELEtBQUssQ0FBQyxJQUFJO1FBQ1IsSUFBSSxDQUFDLE1BQU0sQ0FBQyx5Q0FBeUMsQ0FBQyxDQUFBO0lBQ3hELENBQUM7Q0FDRjtBQTlDRCwwREE4Q0MifQ==
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ContactRequest = void 0;
4
+ const utils_1 = require("@medusajs/framework/utils");
5
+ exports.ContactRequest = utils_1.model.define("contact_request", {
6
+ id: utils_1.model.id().primaryKey(),
7
+ email: utils_1.model.text().searchable(),
8
+ payload: utils_1.model.json().nullable(),
9
+ status: utils_1.model.text().searchable(),
10
+ status_history: utils_1.model.json().nullable(),
11
+ metadata: utils_1.model.json().nullable(),
12
+ source: utils_1.model.text().nullable(),
13
+ });
14
+ exports.default = exports.ContactRequest;
15
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGFjdC1yZXF1ZXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL21vZHVsZXMvY29udGFjdC1yZXF1ZXN0cy9tb2RlbHMvY29udGFjdC1yZXF1ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHFEQUFpRDtBQUVwQyxRQUFBLGNBQWMsR0FBRyxhQUFLLENBQUMsTUFBTSxDQUFDLGlCQUFpQixFQUFFO0lBQzVELEVBQUUsRUFBRSxhQUFLLENBQUMsRUFBRSxFQUFFLENBQUMsVUFBVSxFQUFFO0lBQzNCLEtBQUssRUFBRSxhQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsVUFBVSxFQUFFO0lBQ2hDLE9BQU8sRUFBRSxhQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsUUFBUSxFQUFFO0lBQ2hDLE1BQU0sRUFBRSxhQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsVUFBVSxFQUFFO0lBQ2pDLGNBQWMsRUFBRSxhQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsUUFBUSxFQUFFO0lBQ3ZDLFFBQVEsRUFBRSxhQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsUUFBUSxFQUFFO0lBQ2pDLE1BQU0sRUFBRSxhQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsUUFBUSxFQUFFO0NBQ2hDLENBQUMsQ0FBQTtBQUVGLGtCQUFlLHNCQUFjLENBQUEifQ==
@@ -0,0 +1,236 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const utils_1 = require("@medusajs/framework/utils");
4
+ const index_1 = require("./index");
5
+ const contact_request_1 = require("./models/contact-request");
6
+ const resolve_options_1 = require("./utils/resolve-options");
7
+ class ContactRequestModuleService extends (0, utils_1.MedusaService)({
8
+ ContactRequest: contact_request_1.ContactRequest,
9
+ }) {
10
+ constructor(container, moduleOptions, moduleDeclaration) {
11
+ super(container, moduleOptions, moduleDeclaration);
12
+ this.manager_ = container.manager;
13
+ const resolvedOptions = moduleDeclaration?.options ?? moduleOptions ?? {};
14
+ this.options_ = (0, resolve_options_1.resolveContactUsOptions)(resolvedOptions);
15
+ }
16
+ get moduleKey() {
17
+ return index_1.CONTACT_REQUEST_MODULE;
18
+ }
19
+ getOptions() {
20
+ return this.options_;
21
+ }
22
+ getNextAllowedStatuses(currentStatus) {
23
+ return (0, resolve_options_1.getNextAllowedStatuses)(currentStatus, this.options_.status_transitions);
24
+ }
25
+ getStatusTransition(from, to) {
26
+ return (0, resolve_options_1.getStatusTransition)(from, to, this.options_.status_transitions);
27
+ }
28
+ normalizeContactRequest(raw) {
29
+ if (!raw ||
30
+ typeof raw !== "object" ||
31
+ !("id" in raw) ||
32
+ !("email" in raw) ||
33
+ !("status" in raw)) {
34
+ throw new Error("Invalid contact request data");
35
+ }
36
+ const request = raw;
37
+ return {
38
+ id: request.id,
39
+ email: request.email,
40
+ payload: request.payload && typeof request.payload === "object"
41
+ ? request.payload
42
+ : null,
43
+ status: request.status,
44
+ status_history: request.status_history && Array.isArray(request.status_history)
45
+ ? request.status_history
46
+ : null,
47
+ metadata: request.metadata && typeof request.metadata === "object"
48
+ ? request.metadata
49
+ : null,
50
+ source: request.source ?? null,
51
+ created_at: new Date(request.created_at ?? new Date()),
52
+ updated_at: new Date(request.updated_at ?? new Date()),
53
+ deleted_at: request.deleted_at ? new Date(request.deleted_at) : null,
54
+ };
55
+ }
56
+ validatePayload(payload, fields) {
57
+ if (!payload || Object.keys(payload).length === 0) {
58
+ return;
59
+ }
60
+ for (const field of fields) {
61
+ if (field.required && !(field.key in payload)) {
62
+ throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, `Field '${field.key}' is required`);
63
+ }
64
+ const value = payload[field.key];
65
+ if (value === undefined || value === null) {
66
+ continue;
67
+ }
68
+ // Type validation
69
+ switch (field.type) {
70
+ case "number":
71
+ if (typeof value !== "number") {
72
+ throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, `Field '${field.key}' must be a number`);
73
+ }
74
+ if (field.validation) {
75
+ if (field.validation.min !== undefined &&
76
+ value < field.validation.min) {
77
+ throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, `Field '${field.key}' must be at least ${field.validation.min}`);
78
+ }
79
+ if (field.validation.max !== undefined &&
80
+ value > field.validation.max) {
81
+ throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, `Field '${field.key}' must be at most ${field.validation.max}`);
82
+ }
83
+ }
84
+ break;
85
+ case "email":
86
+ if (typeof value !== "string" || !value.includes("@")) {
87
+ throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, `Field '${field.key}' must be a valid email`);
88
+ }
89
+ break;
90
+ case "text":
91
+ case "textarea":
92
+ if (typeof value !== "string") {
93
+ throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, `Field '${field.key}' must be a string`);
94
+ }
95
+ break;
96
+ case "checkbox":
97
+ if (typeof value !== "boolean") {
98
+ throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, `Field '${field.key}' must be a boolean`);
99
+ }
100
+ break;
101
+ case "select":
102
+ if (typeof value !== "string") {
103
+ throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, `Field '${field.key}' must be a string`);
104
+ }
105
+ if (field.options) {
106
+ const validValues = field.options.map((opt) => opt.value);
107
+ if (!validValues.includes(value)) {
108
+ throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, `Field '${field.key}' must be one of: ${validValues.join(", ")}`);
109
+ }
110
+ }
111
+ break;
112
+ }
113
+ }
114
+ }
115
+ async createRequest(input) {
116
+ // Validate email
117
+ if (!input.email || typeof input.email !== "string") {
118
+ throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, "Email is required");
119
+ }
120
+ const email = input.email.trim().toLowerCase();
121
+ if (!email.includes("@")) {
122
+ throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, "Email must be a valid email address");
123
+ }
124
+ // Validate payload against configured fields
125
+ if (input.payload) {
126
+ this.validatePayload(input.payload, this.options_.payload_fields);
127
+ }
128
+ const status = this.options_.default_status;
129
+ const statusHistory = [
130
+ {
131
+ from: null,
132
+ to: status,
133
+ changed_at: new Date(),
134
+ },
135
+ ];
136
+ const created = await this.createContactRequests({
137
+ email,
138
+ payload: input.payload ?? null,
139
+ status,
140
+ status_history: statusHistory,
141
+ metadata: input.metadata ?? null,
142
+ source: input.source ?? "storefront",
143
+ });
144
+ return this.normalizeContactRequest(created);
145
+ }
146
+ async updateStatus(input) {
147
+ const existing = await this.retrieveContactRequest(input.id);
148
+ if (!existing) {
149
+ throw new utils_1.MedusaError(utils_1.MedusaError.Types.NOT_FOUND, `Contact request with id ${input.id} not found`);
150
+ }
151
+ const currentStatus = this.normalizeContactRequest(existing).status;
152
+ // Validate transition
153
+ const transition = this.getStatusTransition(currentStatus, input.status);
154
+ if (!transition) {
155
+ const allowedStatuses = this.getNextAllowedStatuses(currentStatus);
156
+ throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, `Invalid status transition from '${currentStatus}' to '${input.status}'. Allowed next statuses: ${allowedStatuses.join(", ")}`);
157
+ }
158
+ // Validate that target status is in allowed statuses
159
+ if (!this.options_.allowed_statuses.includes(input.status)) {
160
+ throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, `Status '${input.status}' is not in allowed statuses`);
161
+ }
162
+ // Update status history
163
+ const existingHistory = (this.normalizeContactRequest(existing).status_history ?? []);
164
+ const newHistoryEntry = {
165
+ from: currentStatus,
166
+ to: input.status,
167
+ changed_at: new Date(),
168
+ changed_by: input.changed_by,
169
+ };
170
+ const updatedHistory = [...existingHistory, newHistoryEntry];
171
+ await this.updateContactRequests({
172
+ selector: { id: input.id },
173
+ data: {
174
+ status: input.status,
175
+ status_history: updatedHistory,
176
+ },
177
+ });
178
+ const updated = await this.retrieveContactRequest(input.id);
179
+ return this.normalizeContactRequest(updated);
180
+ }
181
+ async listRequests(selector = {}, config) {
182
+ const query = {};
183
+ // Handle both ContactRequestListInput and direct query format
184
+ if ("email" in selector && selector.email) {
185
+ if (typeof selector.email === "string") {
186
+ query.email = { $ilike: `%${selector.email}%` };
187
+ }
188
+ else if (typeof selector.email === "object" && "$ilike" in selector.email) {
189
+ query.email = selector.email;
190
+ }
191
+ }
192
+ if ("status" in selector && selector.status) {
193
+ query.status = selector.status;
194
+ }
195
+ if ("source" in selector && selector.source) {
196
+ query.source = selector.source;
197
+ }
198
+ if ("created_at" in selector && selector.created_at) {
199
+ if (typeof selector.created_at === "object") {
200
+ const dateQuery = {};
201
+ if ("gte" in selector.created_at && selector.created_at.gte) {
202
+ dateQuery.$gte = selector.created_at.gte;
203
+ }
204
+ if ("lte" in selector.created_at && selector.created_at.lte) {
205
+ dateQuery.$lte = selector.created_at.lte;
206
+ }
207
+ if ("$gte" in selector.created_at) {
208
+ dateQuery.$gte = selector.created_at.$gte;
209
+ }
210
+ if ("$lte" in selector.created_at) {
211
+ dateQuery.$lte = selector.created_at.$lte;
212
+ }
213
+ if (Object.keys(dateQuery).length > 0) {
214
+ query.created_at = dateQuery;
215
+ }
216
+ else {
217
+ query.created_at = selector.created_at;
218
+ }
219
+ }
220
+ }
221
+ const [requests, count] = await this.listAndCountContactRequests(query, config);
222
+ return [
223
+ requests.map((request) => this.normalizeContactRequest(request)),
224
+ count,
225
+ ];
226
+ }
227
+ async getRequest(id) {
228
+ const request = await this.retrieveContactRequest(id);
229
+ if (!request) {
230
+ throw new utils_1.MedusaError(utils_1.MedusaError.Types.NOT_FOUND, `Contact request with id ${id} not found`);
231
+ }
232
+ return this.normalizeContactRequest(request);
233
+ }
234
+ }
235
+ exports.default = ContactRequestModuleService;
236
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9tb2R1bGVzL2NvbnRhY3QtcmVxdWVzdHMvc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLHFEQUFzRTtBQUV0RSxtQ0FBZ0Q7QUFPaEQsOERBQXlEO0FBQ3pELDZEQUtnQztBQVdoQyxNQUFxQiwyQkFBNEIsU0FBUSxJQUFBLHFCQUFhLEVBQUM7SUFDckUsY0FBYyxFQUFkLGdDQUFjO0NBQ2YsQ0FBQztJQUlBLFlBQ0UsU0FBK0IsRUFDL0IsYUFBc0MsRUFDdEMsaUJBQXdEO1FBRXhELEtBQUssQ0FBQyxTQUFTLEVBQUUsYUFBYSxFQUFFLGlCQUFpQixDQUFDLENBQUE7UUFFbEQsSUFBSSxDQUFDLFFBQVEsR0FBRyxTQUFTLENBQUMsT0FBTyxDQUFBO1FBRWpDLE1BQU0sZUFBZSxHQUNuQixpQkFBaUIsRUFBRSxPQUFPLElBQUksYUFBYSxJQUFJLEVBQUUsQ0FBQTtRQUNuRCxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUEseUNBQXVCLEVBQUMsZUFBZSxDQUFDLENBQUE7SUFDMUQsQ0FBQztJQUVELElBQUksU0FBUztRQUNYLE9BQU8sOEJBQXNCLENBQUE7SUFDL0IsQ0FBQztJQUVELFVBQVU7UUFDUixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUE7SUFDdEIsQ0FBQztJQUVELHNCQUFzQixDQUFDLGFBQXFCO1FBQzFDLE9BQU8sSUFBQSx3Q0FBc0IsRUFDM0IsYUFBYSxFQUNiLElBQUksQ0FBQyxRQUFRLENBQUMsa0JBQWtCLENBQ2pDLENBQUE7SUFDSCxDQUFDO0lBRUQsbUJBQW1CLENBQ2pCLElBQW1CLEVBQ25CLEVBQVU7UUFFVixPQUFPLElBQUEscUNBQW1CLEVBQUMsSUFBSSxFQUFFLEVBQUUsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLGtCQUFrQixDQUFDLENBQUE7SUFDeEUsQ0FBQztJQUVTLHVCQUF1QixDQUFDLEdBQVk7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
@@ -0,0 +1,48 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.resolveContactUsOptions = resolveContactUsOptions;
4
+ exports.getNextAllowedStatuses = getNextAllowedStatuses;
5
+ exports.getStatusTransition = getStatusTransition;
6
+ const DEFAULT_OPTIONS = {
7
+ default_status: "pending",
8
+ payload_fields: [],
9
+ allowed_statuses: ["pending", "in_progress", "resolved", "closed"],
10
+ status_transitions: [
11
+ { from: null, to: "pending", send_email: false },
12
+ { from: "pending", to: "in_progress", send_email: true },
13
+ { from: "in_progress", to: "resolved", send_email: true },
14
+ { from: "resolved", to: "closed", send_email: false },
15
+ ],
16
+ email: {
17
+ enabled: true,
18
+ default_subject: "Contact Request Status Update",
19
+ default_template: null,
20
+ },
21
+ };
22
+ function resolveContactUsOptions(options) {
23
+ if (!options) {
24
+ return DEFAULT_OPTIONS;
25
+ }
26
+ return {
27
+ default_status: options.default_status ?? DEFAULT_OPTIONS.default_status,
28
+ payload_fields: options.payload_fields ?? DEFAULT_OPTIONS.payload_fields,
29
+ allowed_statuses: options.allowed_statuses ?? DEFAULT_OPTIONS.allowed_statuses,
30
+ status_transitions: options.status_transitions ?? DEFAULT_OPTIONS.status_transitions,
31
+ email: {
32
+ enabled: options.email?.enabled ?? DEFAULT_OPTIONS.email.enabled,
33
+ default_subject: options.email?.default_subject ??
34
+ DEFAULT_OPTIONS.email.default_subject,
35
+ default_template: options.email?.default_template ??
36
+ DEFAULT_OPTIONS.email.default_template,
37
+ },
38
+ };
39
+ }
40
+ function getNextAllowedStatuses(currentStatus, transitions) {
41
+ return transitions
42
+ .filter((transition) => transition.from === currentStatus)
43
+ .map((transition) => transition.to);
44
+ }
45
+ function getStatusTransition(from, to, transitions) {
46
+ return transitions.find((transition) => transition.from === from && transition.to === to);
47
+ }
48
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzb2x2ZS1vcHRpb25zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL21vZHVsZXMvY29udGFjdC1yZXF1ZXN0cy91dGlscy9yZXNvbHZlLW9wdGlvbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFtQ0EsMERBd0JDO0FBRUQsd0RBT0M7QUFFRCxrREFRQztBQTVERCxNQUFNLGVBQWUsR0FBNkI7SUFDaEQsY0FBYyxFQUFFLFNBQVM7SUFDekIsY0FBYyxFQUFFLEVBQUU7SUFDbEIsZ0JBQWdCLEVBQUUsQ0FBQyxTQUFTLEVBQUUsYUFBYSxFQUFFLFVBQVUsRUFBRSxRQUFRLENBQUM7SUFDbEUsa0JBQWtCLEVBQUU7UUFDbEIsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRTtRQUNoRCxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsRUFBRSxFQUFFLGFBQWEsRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFO1FBQ3hELEVBQUUsSUFBSSxFQUFFLGFBQWEsRUFBRSxFQUFFLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUU7UUFDekQsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLEVBQUUsRUFBRSxRQUFRLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRTtLQUN0RDtJQUNELEtBQUssRUFBRTtRQUNMLE9BQU8sRUFBRSxJQUFJO1FBQ2IsZUFBZSxFQUFFLCtCQUErQjtRQUNoRCxnQkFBZ0IsRUFBRSxJQUFJO0tBQ3ZCO0NBQ0YsQ0FBQTtBQUVELFNBQWdCLHVCQUF1QixDQUNyQyxPQUF1QztJQUV2QyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDYixPQUFPLGVBQWUsQ0FBQTtJQUN4QixDQUFDO0lBRUQsT0FBTztRQUNMLGNBQWMsRUFBRSxPQUFPLENBQUMsY0FBYyxJQUFJLGVBQWUsQ0FBQyxjQUFjO1FBQ3hFLGNBQWMsRUFBRSxPQUFPLENBQUMsY0FBYyxJQUFJLGVBQWUsQ0FBQyxjQUFjO1FBQ3hFLGdCQUFnQixFQUNkLE9BQU8sQ0FBQyxnQkFBZ0IsSUFBSSxlQUFlLENBQUMsZ0JBQWdCO1FBQzlELGtCQUFrQixFQUNoQixPQUFPLENBQUMsa0JBQWtCLElBQUksZUFBZSxDQUFDLGtCQUFrQjtRQUNsRSxLQUFLLEVBQUU7WUFDTCxPQUFPLEVBQUUsT0FBTyxDQUFDLEtBQUssRUFBRSxPQUFPLElBQUksZUFBZSxDQUFDLEtBQUssQ0FBQyxPQUFPO1lBQ2hFLGVBQWUsRUFDYixPQUFPLENBQUMsS0FBSyxFQUFFLGVBQWU7Z0JBQzlCLGVBQWUsQ0FBQyxLQUFLLENBQUMsZUFBZTtZQUN2QyxnQkFBZ0IsRUFDZCxPQUFPLENBQUMsS0FBSyxFQUFFLGdCQUFnQjtnQkFDL0IsZUFBZSxDQUFDLEtBQUssQ0FBQyxnQkFBZ0I7U0FDekM7S0FDRixDQUFBO0FBQ0gsQ0FBQztBQUVELFNBQWdCLHNCQUFzQixDQUNwQyxhQUFxQixFQUNyQixXQUFxQztJQUVyQyxPQUFPLFdBQVc7U0FDZixNQUFNLENBQUMsQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEtBQUssYUFBYSxDQUFDO1NBQ3pELEdBQUcsQ0FBQyxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFBO0FBQ3ZDLENBQUM7QUFFRCxTQUFnQixtQkFBbUIsQ0FDakMsSUFBbUIsRUFDbkIsRUFBVSxFQUNWLFdBQXFDO0lBRXJDLE9BQU8sV0FBVyxDQUFDLElBQUksQ0FDckIsQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEtBQUssSUFBSSxJQUFJLFVBQVUsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUNqRSxDQUFBO0FBQ0gsQ0FBQyJ9
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGFjdC1yZXF1ZXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3R5cGVzL2NvbnRhY3QtcmVxdWVzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIn0=
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createContactRequestWorkflow = void 0;
4
+ const workflows_sdk_1 = require("@medusajs/framework/workflows-sdk");
5
+ const create_contact_request_step_1 = require("./steps/create-contact-request-step");
6
+ exports.createContactRequestWorkflow = (0, workflows_sdk_1.createWorkflow)("create-contact-request", (input) => {
7
+ const { request } = (0, create_contact_request_step_1.createContactRequestStep)(input);
8
+ return new workflows_sdk_1.WorkflowResponse({
9
+ request,
10
+ });
11
+ });
12
+ exports.default = exports.createContactRequestWorkflow;
13
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLWNvbnRhY3QtcmVxdWVzdC13b3JrZmxvdy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy93b3JrZmxvd3MvY3JlYXRlLWNvbnRhY3QtcmVxdWVzdC13b3JrZmxvdy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxxRUFHMEM7QUFDMUMscUZBQThFO0FBWWpFLFFBQUEsNEJBQTRCLEdBQUcsSUFBQSw4QkFBYyxFQUN4RCx3QkFBd0IsRUFDeEIsQ0FDRSxLQUF3QyxFQUNjLEVBQUU7SUFDeEQsTUFBTSxFQUFFLE9BQU8sRUFBRSxHQUFHLElBQUEsc0RBQXdCLEVBQUMsS0FBSyxDQUFDLENBQUE7SUFFbkQsT0FBTyxJQUFJLGdDQUFnQixDQUFDO1FBQzFCLE9BQU87S0FDUixDQUFDLENBQUE7QUFDSixDQUFDLENBQ0YsQ0FBQTtBQUVELGtCQUFlLG9DQUE0QixDQUFBIn0=
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.updateContactRequestStatusWorkflow = exports.createContactRequestWorkflow = void 0;
4
+ var create_contact_request_workflow_1 = require("./create-contact-request-workflow");
5
+ Object.defineProperty(exports, "createContactRequestWorkflow", { enumerable: true, get: function () { return create_contact_request_workflow_1.createContactRequestWorkflow; } });
6
+ var update_contact_request_status_workflow_1 = require("./update-contact-request-status-workflow");
7
+ Object.defineProperty(exports, "updateContactRequestStatusWorkflow", { enumerable: true, get: function () { return update_contact_request_status_workflow_1.updateContactRequestStatusWorkflow; } });
8
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvd29ya2Zsb3dzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHFGQUFnRjtBQUF2RSwrSUFBQSw0QkFBNEIsT0FBQTtBQUNyQyxtR0FBNkY7QUFBcEYsNEpBQUEsa0NBQWtDLE9BQUEifQ==
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createContactRequestStep = void 0;
4
+ const workflows_sdk_1 = require("@medusajs/framework/workflows-sdk");
5
+ const contact_requests_1 = require("../../modules/contact-requests");
6
+ exports.createContactRequestStep = (0, workflows_sdk_1.createStep)("create-contact-request", async (input, { container }) => {
7
+ const service = container.resolve(contact_requests_1.CONTACT_REQUEST_MODULE);
8
+ const request = await service.createRequest(input);
9
+ return new workflows_sdk_1.StepResponse({
10
+ request,
11
+ });
12
+ });
13
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLWNvbnRhY3QtcmVxdWVzdC1zdGVwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL3dvcmtmbG93cy9zdGVwcy9jcmVhdGUtY29udGFjdC1yZXF1ZXN0LXN0ZXAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEscUVBQTRFO0FBQzVFLHFFQUF1RTtBQVcxRCxRQUFBLHdCQUF3QixHQUFHLElBQUEsMEJBQVUsRUFDaEQsd0JBQXdCLEVBQ3hCLEtBQUssRUFDSCxLQUFnQyxFQUNoQyxFQUFFLFNBQVMsRUFBRSxFQUMwQyxFQUFFO0lBQ3pELE1BQU0sT0FBTyxHQUFHLFNBQVMsQ0FBQyxPQUFPLENBQy9CLHlDQUFzQixDQUN2QixDQUFBO0lBRUQsTUFBTSxPQUFPLEdBQUcsTUFBTSxPQUFPLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFBO0lBRWxELE9BQU8sSUFBSSw0QkFBWSxDQUFpQztRQUN0RCxPQUFPO0tBQ1IsQ0FBQyxDQUFBO0FBQ0osQ0FBQyxDQUNGLENBQUEifQ==
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.resolveStatusTransitionStep = void 0;
4
+ const workflows_sdk_1 = require("@medusajs/framework/workflows-sdk");
5
+ const contact_requests_1 = require("../../modules/contact-requests");
6
+ exports.resolveStatusTransitionStep = (0, workflows_sdk_1.createStep)("resolve-status-transition", async (input, { container }) => {
7
+ const service = container.resolve(contact_requests_1.CONTACT_REQUEST_MODULE);
8
+ const options = service.getOptions();
9
+ const transition = service.getStatusTransition(input.fromStatus, input.toStatus);
10
+ return new workflows_sdk_1.StepResponse({
11
+ transition,
12
+ options,
13
+ });
14
+ });
15
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzb2x2ZS1zdGF0dXMtdHJhbnNpdGlvbi1zdGVwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL3dvcmtmbG93cy9zdGVwcy9yZXNvbHZlLXN0YXR1cy10cmFuc2l0aW9uLXN0ZXAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEscUVBQTRFO0FBQzVFLHFFQUF1RTtBQWUxRCxRQUFBLDJCQUEyQixHQUFHLElBQUEsMEJBQVUsRUFDbkQsMkJBQTJCLEVBQzNCLEtBQUssRUFDSCxLQUFtQyxFQUNuQyxFQUFFLFNBQVMsRUFBRSxFQUN5QyxFQUFFO0lBQ3hELE1BQU0sT0FBTyxHQUFHLFNBQVMsQ0FBQyxPQUFPLENBQy9CLHlDQUFzQixDQUN2QixDQUFBO0lBRUQsTUFBTSxPQUFPLEdBQUcsT0FBTyxDQUFDLFVBQVUsRUFBRSxDQUFBO0lBQ3BDLE1BQU0sVUFBVSxHQUFHLE9BQU8sQ0FBQyxtQkFBbUIsQ0FDNUMsS0FBSyxDQUFDLFVBQVUsRUFDaEIsS0FBSyxDQUFDLFFBQVEsQ0FDZixDQUFBO0lBRUQsT0FBTyxJQUFJLDRCQUFZLENBQWdDO1FBQ3JELFVBQVU7UUFDVixPQUFPO0tBQ1IsQ0FBQyxDQUFBO0FBQ0osQ0FBQyxDQUNGLENBQUEifQ==