medusa-contact-us 0.0.3 → 0.0.11
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/src/admin/index.js +176 -1
- package/.medusa/server/src/admin/index.mjs +176 -1
- package/.medusa/server/src/api/admin/contact-email-subscriptions/route.js +29 -0
- package/.medusa/server/src/api/admin/contact-email-subscriptions/validators.js +12 -0
- package/.medusa/server/src/api/store/contact-email-subscriptions/route.js +19 -0
- package/.medusa/server/src/api/store/contact-email-subscriptions/validators.js +15 -0
- package/.medusa/server/src/constants.js +3 -2
- package/.medusa/server/src/helpers/__tests__/contact-subscription.test.js +109 -0
- package/.medusa/server/src/helpers/__tests__/submit-contact-request.test.js +33 -1
- package/.medusa/server/src/helpers/base-client.js +36 -0
- package/.medusa/server/src/helpers/contact-subscription.js +45 -0
- package/.medusa/server/src/helpers/index.js +5 -2
- package/.medusa/server/src/helpers/submit-contact-request.js +6 -35
- package/.medusa/server/src/index.js +7 -2
- package/.medusa/server/src/modules/contact-requests/migrations/Migration20241124090000.js +7 -2
- package/.medusa/server/src/modules/contact-requests/models/contact-request-comment.js +1 -2
- package/.medusa/server/src/modules/contact-requests/models/contact-request.js +1 -3
- package/.medusa/server/src/modules/contact-subscriptions/index.js +15 -0
- package/.medusa/server/src/modules/contact-subscriptions/migrations/Migration20241126103000.js +38 -0
- package/.medusa/server/src/modules/contact-subscriptions/models/contact-email-subscription.js +13 -0
- package/.medusa/server/src/modules/contact-subscriptions/service.js +57 -0
- package/README.md +107 -16
- package/package.json +1 -1
|
@@ -75,6 +75,38 @@ const buildPayload = () => ({
|
|
|
75
75
|
method: "POST",
|
|
76
76
|
}));
|
|
77
77
|
});
|
|
78
|
+
(0, vitest_1.it)("applies publishable API key to fetch headers", async () => {
|
|
79
|
+
const mockFetch = vitest_1.vi.fn().mockResolvedValue({
|
|
80
|
+
ok: true,
|
|
81
|
+
json: () => Promise.resolve({
|
|
82
|
+
contact_request: { id: "req_4" },
|
|
83
|
+
}),
|
|
84
|
+
});
|
|
85
|
+
await (0, submit_contact_request_1.submitContactRequest)(buildPayload(), {
|
|
86
|
+
fetchImpl: mockFetch,
|
|
87
|
+
baseUrl: "https://demo.store",
|
|
88
|
+
publishableApiKey: "pk_test_header",
|
|
89
|
+
});
|
|
90
|
+
const [, init] = mockFetch.mock.calls[0];
|
|
91
|
+
(0, vitest_1.expect)(init?.headers).toMatchObject({
|
|
92
|
+
"x-publishable-api-key": "pk_test_header",
|
|
93
|
+
});
|
|
94
|
+
});
|
|
95
|
+
(0, vitest_1.it)("applies publishable API key when invoking client request", async () => {
|
|
96
|
+
const mockClient = {
|
|
97
|
+
request: vitest_1.vi.fn().mockResolvedValue({
|
|
98
|
+
contact_request: { id: "req_5" },
|
|
99
|
+
}),
|
|
100
|
+
};
|
|
101
|
+
await (0, submit_contact_request_1.submitContactRequest)(buildPayload(), {
|
|
102
|
+
client: mockClient,
|
|
103
|
+
publishableApiKey: "pk_client",
|
|
104
|
+
});
|
|
105
|
+
const [, init] = mockClient.request.mock.calls[0];
|
|
106
|
+
(0, vitest_1.expect)(init?.headers).toMatchObject({
|
|
107
|
+
"x-publishable-api-key": "pk_client",
|
|
108
|
+
});
|
|
109
|
+
});
|
|
78
110
|
(0, vitest_1.it)("allows preconfigured helper via factory", async () => {
|
|
79
111
|
const mockFetch = vitest_1.vi.fn().mockResolvedValue({
|
|
80
112
|
ok: true,
|
|
@@ -90,4 +122,4 @@ const buildPayload = () => ({
|
|
|
90
122
|
(0, vitest_1.expect)(result.contact_request.id).toBe("req_3");
|
|
91
123
|
});
|
|
92
124
|
});
|
|
93
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
125
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3VibWl0LWNvbnRhY3QtcmVxdWVzdC50ZXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2hlbHBlcnMvX190ZXN0c19fL3N1Ym1pdC1jb250YWN0LXJlcXVlc3QudGVzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLG1DQUFpRDtBQUNqRCxzRUFHa0M7QUFFbEMsTUFBTSxZQUFZLEdBQUcsR0FBRyxFQUFFLENBQUMsQ0FBQztJQUMxQixLQUFLLEVBQUUsa0JBQWtCO0lBQ3pCLE9BQU8sRUFBRSxFQUFFLE9BQU8sRUFBRSxXQUFXLEVBQUU7SUFDakMsUUFBUSxFQUFFLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRTtJQUMvQixNQUFNLEVBQUUsWUFBWTtDQUNyQixDQUFDLENBQUE7QUFFRixJQUFBLGlCQUFRLEVBQUMsNkJBQTZCLEVBQUUsR0FBRyxFQUFFO0lBQzNDLE1BQU0sVUFBVSxHQUFHO1FBQ2pCO1lBQ0UsSUFBSSxFQUFFLDBEQUEwRDtZQUNoRSxLQUFLLEVBQUUsR0FBRyxFQUFFO2dCQUNWLE1BQU0sU0FBUyxHQUFHLFdBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxpQkFBaUIsQ0FBQztvQkFDMUMsRUFBRSxFQUFFLElBQUk7b0JBQ1IsSUFBSSxFQUFFLEdBQUcsRUFBRSxDQUNULE9BQU8sQ0FBQyxPQUFPLENBQUM7d0JBQ2QsZUFBZSxFQUFFLEVBQUUsRUFBRSxFQUFFLE9BQU8sRUFBRTtxQkFDakMsQ0FBQztpQkFDTCxDQUFDLENBQUE7Z0JBQ0YsT0FBTztvQkFDTCxTQUFTLEVBQUUsU0FBUztvQkFDcEIsV0FBVyxFQUFFLDJDQUEyQztpQkFDekQsQ0FBQTtZQUNILENBQUM7U0FDRjtRQUNEO1lBQ0UsSUFBSSxFQUFFLGdDQUFnQztZQUN0QyxLQUFLLEVBQUUsR0FBRyxFQUFFO2dCQUNWLE1BQU0sU0FBUyxHQUFHLFdBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxpQkFBaUIsQ0FBQztvQkFD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
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getClientRequest = exports.buildHeaders = exports.normalizeBaseUrl = void 0;
|
|
4
|
+
const normalizeBaseUrl = (baseUrl) => {
|
|
5
|
+
if (!baseUrl) {
|
|
6
|
+
return "";
|
|
7
|
+
}
|
|
8
|
+
return baseUrl.endsWith("/") ? baseUrl.slice(0, -1) : baseUrl;
|
|
9
|
+
};
|
|
10
|
+
exports.normalizeBaseUrl = normalizeBaseUrl;
|
|
11
|
+
const buildHeaders = (options) => {
|
|
12
|
+
const headers = {
|
|
13
|
+
"Content-Type": "application/json",
|
|
14
|
+
...(options.headers ?? {}),
|
|
15
|
+
};
|
|
16
|
+
const hasPublishableHeader = Object.keys(headers).some((key) => key.toLowerCase() === "x-publishable-api-key");
|
|
17
|
+
if (options.publishableApiKey && !hasPublishableHeader) {
|
|
18
|
+
headers["x-publishable-api-key"] = options.publishableApiKey;
|
|
19
|
+
}
|
|
20
|
+
return headers;
|
|
21
|
+
};
|
|
22
|
+
exports.buildHeaders = buildHeaders;
|
|
23
|
+
const getClientRequest = (client) => {
|
|
24
|
+
if (!client) {
|
|
25
|
+
return undefined;
|
|
26
|
+
}
|
|
27
|
+
if ("request" in client && typeof client.request === "function") {
|
|
28
|
+
return client.request.bind(client);
|
|
29
|
+
}
|
|
30
|
+
if ("client" in client && typeof client.client?.request === "function") {
|
|
31
|
+
return client.client.request.bind(client.client);
|
|
32
|
+
}
|
|
33
|
+
return undefined;
|
|
34
|
+
};
|
|
35
|
+
exports.getClientRequest = getClientRequest;
|
|
36
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1jbGllbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvaGVscGVycy9iYXNlLWNsaWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFvQ08sTUFBTSxnQkFBZ0IsR0FBRyxDQUFDLE9BQWdCLEVBQUUsRUFBRTtJQUNuRCxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDYixPQUFPLEVBQUUsQ0FBQTtJQUNYLENBQUM7SUFDRCxPQUFPLE9BQU8sQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQTtBQUMvRCxDQUFDLENBQUE7QUFMWSxRQUFBLGdCQUFnQixvQkFLNUI7QUFFTSxNQUFNLFlBQVksR0FBRyxDQUFDLE9BQStCLEVBQUUsRUFBRTtJQUM5RCxNQUFNLE9BQU8sR0FBMkI7UUFDdEMsY0FBYyxFQUFFLGtCQUFrQjtRQUNsQyxHQUFHLENBQUMsT0FBTyxDQUFDLE9BQU8sSUFBSSxFQUFFLENBQUM7S0FDM0IsQ0FBQTtJQUVELE1BQU0sb0JBQW9CLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQ3BELENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsV0FBVyxFQUFFLEtBQUssdUJBQXVCLENBQ3ZELENBQUE7SUFFRCxJQUFJLE9BQU8sQ0FBQyxpQkFBaUIsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7UUFDdkQsT0FBTyxDQUFDLHVCQUF1QixDQUFDLEdBQUcsT0FBTyxDQUFDLGlCQUFpQixDQUFBO0lBQzlELENBQUM7SUFFRCxPQUFPLE9BQU8sQ0FBQTtBQUNoQixDQUFDLENBQUE7QUFmWSxRQUFBLFlBQVksZ0JBZXhCO0FBRU0sTUFBTSxnQkFBZ0IsR0FBRyxDQUFDLE1BQXlCLEVBQUUsRUFBRTtJQUM1RCxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDWixPQUFPLFNBQVMsQ0FBQTtJQUNsQixDQUFDO0lBRUQsSUFBSSxTQUFTLElBQUksTUFBTSxJQUFJLE9BQU8sTUFBTSxDQUFDLE9BQU8sS0FBSyxVQUFVLEVBQUUsQ0FBQztRQUNoRSxPQUFPLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFBO0lBQ3BDLENBQUM7SUFFRCxJQUFJLFFBQVEsSUFBSSxNQUFNLElBQUksT0FBTyxNQUFNLENBQUMsTUFBTSxFQUFFLE9BQU8sS0FBSyxVQUFVLEVBQUUsQ0FBQztRQUN2RSxPQUFPLE1BQU0sQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUE7SUFDbEQsQ0FBQztJQUVELE9BQU8sU0FBUyxDQUFBO0FBQ2xCLENBQUMsQ0FBQTtBQWRZLFFBQUEsZ0JBQWdCLG9CQWM1QiJ9
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createUpsertContactSubscription = exports.upsertContactSubscription = void 0;
|
|
4
|
+
const base_client_1 = require("./base-client");
|
|
5
|
+
const SUBSCRIPTION_ENDPOINT = "/store/contact-email-subscriptions";
|
|
6
|
+
const resolveEndpoint = (endpoint) => endpoint?.startsWith("/") ? endpoint : SUBSCRIPTION_ENDPOINT;
|
|
7
|
+
const upsertContactSubscription = async (input, options = {}) => {
|
|
8
|
+
const endpoint = resolveEndpoint(input.endpoint);
|
|
9
|
+
const payload = {
|
|
10
|
+
email: input.email,
|
|
11
|
+
status: input.status ?? "subscribed",
|
|
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
|
+
return raw;
|
|
24
|
+
}
|
|
25
|
+
const fetchImpl = options.fetchImpl ?? globalThis.fetch;
|
|
26
|
+
if (!fetchImpl) {
|
|
27
|
+
throw new Error("No fetch implementation available. Provide `fetchImpl` or a Medusa client.");
|
|
28
|
+
}
|
|
29
|
+
const url = `${(0, base_client_1.normalizeBaseUrl)(options.baseUrl)}${endpoint}`;
|
|
30
|
+
const headers = (0, base_client_1.buildHeaders)(options);
|
|
31
|
+
const response = await fetchImpl(url || endpoint, {
|
|
32
|
+
method: "POST",
|
|
33
|
+
headers,
|
|
34
|
+
body: JSON.stringify(payload),
|
|
35
|
+
});
|
|
36
|
+
if (!response.ok) {
|
|
37
|
+
const body = await response.text();
|
|
38
|
+
throw new Error(body || `Failed to update subscription (status ${response.status})`);
|
|
39
|
+
}
|
|
40
|
+
return (await response.json());
|
|
41
|
+
};
|
|
42
|
+
exports.upsertContactSubscription = upsertContactSubscription;
|
|
43
|
+
const createUpsertContactSubscription = (options = {}) => (input) => (0, exports.upsertContactSubscription)(input, options);
|
|
44
|
+
exports.createUpsertContactSubscription = createUpsertContactSubscription;
|
|
45
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGFjdC1zdWJzY3JpcHRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvaGVscGVycy9jb250YWN0LXN1YnNjcmlwdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFFQSwrQ0FLc0I7QUFFdEIsTUFBTSxxQkFBcUIsR0FBRyxvQ0FBb0MsQ0FBQTtBQUVsRSxNQUFNLGVBQWUsR0FBRyxDQUFDLFFBQWlCLEVBQUUsRUFBRSxDQUM1QyxRQUFRLEVBQUUsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLHFCQUFxQixDQUFBO0FBYXZELE1BQU0seUJBQXlCLEdBQUcsS0FBSyxFQUM1QyxLQUFxQyxFQUNyQyxVQUE0QyxFQUFFLEVBQ0YsRUFBRTtJQUM5QyxNQUFNLFFBQVEsR0FBRyxlQUFlLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFBO0lBQ2hELE1BQU0sT0FBTyxHQUFHO1FBQ2QsS0FBSyxFQUFFLEtBQUssQ0FBQyxLQUFLO1FBQ2xCLE1BQU0sRUFBRSxLQUFLLENBQUMsTUFBTSxJQUFJLFlBQVk7UUFDcEMsUUFBUSxFQUFFLEtBQUssQ0FBQyxRQUFRO1FBQ3hCLE1BQU0sRUFBRSxLQUFLLENBQUMsTUFBTTtLQUNyQixDQUFBO0lBRUQsTUFBTSxhQUFhLEdBQUcsSUFBQSw4QkFBZ0IsRUFBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUE7SUFDdEQsSUFBSSxhQUFhLEVBQUUsQ0FBQztRQUNsQixNQUFNLE9BQU8sR0FBRyxJQUFBLDBCQUFZLEVBQUMsT0FBTyxDQUFDLENBQUE7UUFDckMsTUFBTSxHQUFHLEdBQUcsQ0FBQyxNQUFNLGFBQWEsQ0FBQyxRQUFRLEVBQUU7WUFDekMsTUFBTSxFQUFFLE1BQU07WUFDZCxJQUFJLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUM7WUFDN0IsT0FBTztTQUNSLENBQUMsQ0FBc0MsQ0FBQTtRQUV4QyxPQUFPLEdBQUcsQ0FBQTtJQUNaLENBQUM7SUFFRCxNQUFNLFNBQVMsR0FBRyxPQUFPLENBQUMsU0FBUyxJQUFJLFVBQVUsQ0FBQyxLQUFLLENBQUE7SUFDdkQsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQ2YsTUFBTSxJQUFJLEtBQUssQ0FDYiw0RUFBNEUsQ0FDN0UsQ0FBQTtJQUNILENBQUM7SUFFRCxNQUFNLEdBQUcsR0FBRyxHQUFHLElBQUEsOEJBQWdCLEVBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxHQUFHLFFBQVEsRUFBRSxDQUFBO0lBQzdELE1BQU0sT0FBTyxHQUFHLElBQUEsMEJBQVksRUFBQyxPQUFPLENBQUMsQ0FBQTtJQUVyQyxNQUFNLFFBQVEsR0FBRyxNQUFNLFNBQVMsQ0FBQyxHQUFHLElBQUksUUFBUSxFQUFFO1FBQ2hELE1BQU0sRUFBRSxNQUFNO1FBQ2QsT0FBTztRQUNQLElBQUksRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQztLQUM5QixDQUFDLENBQUE7SUFFRixJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUUsRUFBRSxDQUFDO1FBQ2pCLE1BQU0sSUFBSSxHQUFHLE1BQU0sUUFBUSxDQUFDLElBQUksRUFBRSxDQUFBO1FBQ2xDLE1BQU0sSUFBSSxLQUFLLENBQ2IsSUFBSSxJQUFJLHlDQUF5QyxRQUFRLENBQUMsTUFBTSxHQUFHLENBQ3BFLENBQUE7SUFDSCxDQUFDO0lBRUQsT0FBTyxDQUFDLE1BQU0sUUFBUSxDQUFDLElBQUksRUFBRSxDQUFzQyxDQUFBO0FBQ3JFLENBQUMsQ0FBQTtBQWhEWSxRQUFBLHlCQUF5Qiw2QkFnRHJDO0FBRU0sTUFBTSwrQkFBK0IsR0FDMUMsQ0FBQyxVQUE0QyxFQUFFLEVBQUUsRUFBRSxDQUNuRCxDQUFDLEtBQXFDLEVBQUUsRUFBRSxDQUN4QyxJQUFBLGlDQUF5QixFQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQTtBQUhoQyxRQUFBLCtCQUErQixtQ0FHQyJ9
|
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.submitContactRequest = void 0;
|
|
3
|
+
exports.createUpsertContactSubscription = exports.upsertContactSubscription = exports.submitContactRequest = void 0;
|
|
4
4
|
var submit_contact_request_1 = require("./submit-contact-request");
|
|
5
5
|
Object.defineProperty(exports, "submitContactRequest", { enumerable: true, get: function () { return submit_contact_request_1.submitContactRequest; } });
|
|
6
|
-
|
|
6
|
+
var contact_subscription_1 = require("./contact-subscription");
|
|
7
|
+
Object.defineProperty(exports, "upsertContactSubscription", { enumerable: true, get: function () { return contact_subscription_1.upsertContactSubscription; } });
|
|
8
|
+
Object.defineProperty(exports, "createUpsertContactSubscription", { enumerable: true, get: function () { return contact_subscription_1.createUpsertContactSubscription; } });
|
|
9
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvaGVscGVycy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxtRUFBK0Q7QUFBdEQsOEhBQUEsb0JBQW9CLE9BQUE7QUFDN0IsK0RBRytCO0FBRjdCLGlJQUFBLHlCQUF5QixPQUFBO0FBQ3pCLHVJQUFBLCtCQUErQixPQUFBIn0=
|
|
@@ -1,26 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.createSubmitContactRequest = exports.submitContactRequest = void 0;
|
|
4
|
+
const base_client_1 = require("./base-client");
|
|
4
5
|
const CONTACT_ENDPOINT = "/store/contact-requests";
|
|
5
6
|
const resolveEndpoint = (endpoint) => endpoint?.startsWith("/") ? endpoint : CONTACT_ENDPOINT;
|
|
6
|
-
const normalizeBaseUrl = (baseUrl) => {
|
|
7
|
-
if (!baseUrl) {
|
|
8
|
-
return "";
|
|
9
|
-
}
|
|
10
|
-
return baseUrl.endsWith("/") ? baseUrl.slice(0, -1) : baseUrl;
|
|
11
|
-
};
|
|
12
|
-
const getClientRequest = (client) => {
|
|
13
|
-
if (!client) {
|
|
14
|
-
return undefined;
|
|
15
|
-
}
|
|
16
|
-
if ("request" in client && typeof client.request === "function") {
|
|
17
|
-
return client.request.bind(client);
|
|
18
|
-
}
|
|
19
|
-
if ("client" in client && typeof client.client?.request === "function") {
|
|
20
|
-
return client.client.request.bind(client.client);
|
|
21
|
-
}
|
|
22
|
-
return undefined;
|
|
23
|
-
};
|
|
24
7
|
const submitContactRequest = async (input, options = {}) => {
|
|
25
8
|
const endpoint = resolveEndpoint(input.endpoint);
|
|
26
9
|
const payload = {
|
|
@@ -29,15 +12,9 @@ const submitContactRequest = async (input, options = {}) => {
|
|
|
29
12
|
metadata: input.metadata,
|
|
30
13
|
source: input.source,
|
|
31
14
|
};
|
|
32
|
-
const clientRequest = getClientRequest(options.client);
|
|
15
|
+
const clientRequest = (0, base_client_1.getClientRequest)(options.client);
|
|
33
16
|
if (clientRequest) {
|
|
34
|
-
const headers =
|
|
35
|
-
"Content-Type": "application/json",
|
|
36
|
-
...(options.headers ?? {}),
|
|
37
|
-
};
|
|
38
|
-
if (options.publishableApiKey) {
|
|
39
|
-
headers["x-publishable-api-key"] = options.publishableApiKey;
|
|
40
|
-
}
|
|
17
|
+
const headers = (0, base_client_1.buildHeaders)(options);
|
|
41
18
|
const raw = (await clientRequest(endpoint, {
|
|
42
19
|
method: "POST",
|
|
43
20
|
body: JSON.stringify(payload),
|
|
@@ -49,14 +26,8 @@ const submitContactRequest = async (input, options = {}) => {
|
|
|
49
26
|
if (!fetchImpl) {
|
|
50
27
|
throw new Error("No fetch implementation available. Provide `fetchImpl` or a Medusa client.");
|
|
51
28
|
}
|
|
52
|
-
const url = `${normalizeBaseUrl(options.baseUrl)}${endpoint}`;
|
|
53
|
-
const headers =
|
|
54
|
-
"Content-Type": "application/json",
|
|
55
|
-
...(options.headers ?? {}),
|
|
56
|
-
};
|
|
57
|
-
if (options.publishableApiKey) {
|
|
58
|
-
headers["x-publishable-api-key"] = options.publishableApiKey;
|
|
59
|
-
}
|
|
29
|
+
const url = `${(0, base_client_1.normalizeBaseUrl)(options.baseUrl)}${endpoint}`;
|
|
30
|
+
const headers = (0, base_client_1.buildHeaders)(options);
|
|
60
31
|
const response = await fetchImpl(url || endpoint, {
|
|
61
32
|
method: "POST",
|
|
62
33
|
headers,
|
|
@@ -71,4 +42,4 @@ const submitContactRequest = async (input, options = {}) => {
|
|
|
71
42
|
exports.submitContactRequest = submitContactRequest;
|
|
72
43
|
const createSubmitContactRequest = (options = {}) => (input) => (0, exports.submitContactRequest)(input, options);
|
|
73
44
|
exports.createSubmitContactRequest = createSubmitContactRequest;
|
|
74
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
45
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3VibWl0LWNvbnRhY3QtcmVxdWVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9oZWxwZXJzL3N1Ym1pdC1jb250YWN0LXJlcXVlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBRUEsK0NBS3NCO0FBRXRCLE1BQU0sZ0JBQWdCLEdBQUcseUJBQXlCLENBQUE7QUFZbEQsTUFBTSxlQUFlLEdBQUcsQ0FBQyxRQUFpQixFQUFFLEVBQUUsQ0FDNUMsUUFBUSxFQUFFLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQTtBQUVsRCxNQUFNLG9CQUFvQixHQUFHLEtBQUssRUFDdkMsS0FBZ0MsRUFDaEMsVUFBdUMsRUFBRSxFQUNGLEVBQUU7SUFDekMsTUFBTSxRQUFRLEdBQUcsZUFBZSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQTtJQUNoRCxNQUFNLE9BQU8sR0FBRztRQUNkLEtBQUssRUFBRSxLQUFLLENBQUMsS0FBSztRQUNsQixPQUFPLEVBQUUsS0FBSyxDQUFDLE9BQU8sSUFBSSxFQUFFO1FBQzVCLFFBQVEsRUFBRSxLQUFLLENBQUMsUUFBUTtRQUN4QixNQUFNLEVBQUUsS0FBSyxDQUFDLE1BQU07S0FDckIsQ0FBQTtJQUVELE1BQU0sYUFBYSxHQUFHLElBQUEsOEJBQWdCLEVBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFBO0lBQ3RELElBQUksYUFBYSxFQUFFLENBQUM7UUFDbEIsTUFBTSxPQUFPLEdBQUcsSUFBQSwwQkFBWSxFQUFDLE9BQU8sQ0FBQyxDQUFBO1FBQ3JDLE1BQU0sR0FBRyxHQUFHLENBQUMsTUFBTSxhQUFhLENBQUMsUUFBUSxFQUFFO1lBQ3pDLE1BQU0sRUFBRSxNQUFNO1lBQ2QsSUFBSSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDO1lBQzdCLE9BQU87U0FDUixDQUFDLENBQWlDLENBQUE7UUFFbkMsT0FBTyxHQUFHLENBQUE7SUFDWixDQUFDO0lBRUQsTUFBTSxTQUFTLEdBQUcsT0FBTyxDQUFDLFNBQVMsSUFBSSxVQUFVLENBQUMsS0FBSyxDQUFBO0lBQ3ZELElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUNmLE1BQU0sSUFBSSxLQUFLLENBQ2IsNEVBQTRFLENBQzdFLENBQUE7SUFDSCxDQUFDO0lBRUQsTUFBTSxHQUFHLEdBQUcsR0FBRyxJQUFBLDhCQUFnQixFQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsR0FBRyxRQUFRLEVBQUUsQ0FBQTtJQUM3RCxNQUFNLE9BQU8sR0FBRyxJQUFBLDBCQUFZLEVBQUMsT0FBTyxDQUFDLENBQUE7SUFFckMsTUFBTSxRQUFRLEdBQUcsTUFBTSxTQUFTLENBQUMsR0FBRyxJQUFJLFFBQVEsRUFBRTtRQUNoRCxNQUFNLEVBQUUsTUFBTTtRQUNkLE9BQU87UUFDUCxJQUFJLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUM7S0FDOUIsQ0FBQyxDQUFBO0lBRUYsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFLEVBQUUsQ0FBQztRQUNqQixNQUFNLElBQUksR0FBRyxNQUFNLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQTtRQUNsQyxNQUFNLElBQUksS0FBSyxDQUNiLElBQUksSUFBSSw0Q0FBNEMsUUFBUSxDQUFDLE1BQU0sR0FBRyxDQUN2RSxDQUFBO0lBQ0gsQ0FBQztJQUVELE9BQU8sQ0FBQyxNQUFNLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBaUMsQ0FBQTtBQUNoRSxDQUFDLENBQUE7QUFoRFksUUFBQSxvQkFBb0Isd0JBZ0RoQztBQUVNLE1BQU0sMEJBQTBCLEdBQ3JDLENBQUMsVUFBdUMsRUFBRSxFQUFFLEVBQUUsQ0FDOUMsQ0FBQyxLQUFnQyxFQUFFLEVBQUUsQ0FDbkMsSUFBQSw0QkFBb0IsRUFBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUE7QUFIM0IsUUFBQSwwQkFBMEIsOEJBR0MifQ==
|
|
@@ -17,9 +17,10 @@ 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.ContactRequestModuleService = exports.ContactRequestModule = void 0;
|
|
20
|
+
exports.ContactSubscriptionModuleService = exports.ContactSubscriptionModule = exports.ContactRequestModuleService = exports.ContactRequestModule = void 0;
|
|
21
21
|
__exportStar(require("./constants"), exports);
|
|
22
22
|
__exportStar(require("./helpers/submit-contact-request"), exports);
|
|
23
|
+
__exportStar(require("./helpers/contact-subscription"), exports);
|
|
23
24
|
__exportStar(require("./plugin-options"), exports);
|
|
24
25
|
__exportStar(require("./types"), exports);
|
|
25
26
|
__exportStar(require("./workflows"), exports);
|
|
@@ -27,4 +28,8 @@ var contact_requests_1 = require("./modules/contact-requests");
|
|
|
27
28
|
Object.defineProperty(exports, "ContactRequestModule", { enumerable: true, get: function () { return __importDefault(contact_requests_1).default; } });
|
|
28
29
|
var contact_requests_2 = require("./modules/contact-requests");
|
|
29
30
|
Object.defineProperty(exports, "ContactRequestModuleService", { enumerable: true, get: function () { return contact_requests_2.ContactRequestModuleService; } });
|
|
30
|
-
|
|
31
|
+
var contact_subscriptions_1 = require("./modules/contact-subscriptions");
|
|
32
|
+
Object.defineProperty(exports, "ContactSubscriptionModule", { enumerable: true, get: function () { return __importDefault(contact_subscriptions_1).default; } });
|
|
33
|
+
var contact_subscriptions_2 = require("./modules/contact-subscriptions");
|
|
34
|
+
Object.defineProperty(exports, "ContactSubscriptionModuleService", { enumerable: true, get: function () { return contact_subscriptions_2.ContactSubscriptionModuleService; } });
|
|
35
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSw4Q0FBMkI7QUFDM0IsbUVBQWdEO0FBQ2hELGlFQUE4QztBQUM5QyxtREFBZ0M7QUFDaEMsMENBQXVCO0FBQ3ZCLDhDQUEyQjtBQUMzQiwrREFBNEU7QUFBbkUseUlBQUEsT0FBTyxPQUF3QjtBQUN4QywrREFBd0U7QUFBL0QsK0hBQUEsMkJBQTJCLE9BQUE7QUFDcEMseUVBRXdDO0FBRHRDLG1KQUFBLE9BQU8sT0FBNkI7QUFFdEMseUVBQWtGO0FBQXpFLHlJQUFBLGdDQUFnQyxPQUFBIn0=
|
|
@@ -14,7 +14,8 @@ class Migration20241124090000 extends migrations_1.Migration {
|
|
|
14
14
|
"metadata" jsonb NULL,
|
|
15
15
|
"source" text NULL,
|
|
16
16
|
"created_at" timestamptz NOT NULL DEFAULT now(),
|
|
17
|
-
"updated_at" timestamptz NOT NULL DEFAULT now()
|
|
17
|
+
"updated_at" timestamptz NOT NULL DEFAULT now(),
|
|
18
|
+
"deleted_at" timestamptz NULL
|
|
18
19
|
);
|
|
19
20
|
`);
|
|
20
21
|
this.addSql(`
|
|
@@ -35,6 +36,10 @@ class Migration20241124090000 extends migrations_1.Migration {
|
|
|
35
36
|
this.addSql(`
|
|
36
37
|
CREATE INDEX IF NOT EXISTS "IDX_contact_request_comment_request_id"
|
|
37
38
|
ON "contact_request_comment" ("contact_request_id");
|
|
39
|
+
`);
|
|
40
|
+
this.addSql(`
|
|
41
|
+
CREATE INDEX IF NOT EXISTS "IDX_contact_request_deleted_at"
|
|
42
|
+
ON "contact_request" ("deleted_at");
|
|
38
43
|
`);
|
|
39
44
|
}
|
|
40
45
|
async down() {
|
|
@@ -43,4 +48,4 @@ class Migration20241124090000 extends migrations_1.Migration {
|
|
|
43
48
|
}
|
|
44
49
|
}
|
|
45
50
|
exports.Migration20241124090000 = Migration20241124090000;
|
|
46
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
51
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTWlncmF0aW9uMjAyNDExMjQwOTAwMDAuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbW9kdWxlcy9jb250YWN0LXJlcXVlc3RzL21pZ3JhdGlvbnMvTWlncmF0aW9uMjAyNDExMjQwOTAwMDAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsc0RBQWlEO0FBRWpELE1BQWEsdUJBQXdCLFNBQVEsc0JBQVM7SUFDcEQsS0FBSyxDQUFDLEVBQUU7UUFDTixJQUFJLENBQUMsTUFBTSxDQUFDOzs7Ozs7Ozs7Ozs7O0tBYVgsQ0FBQyxDQUFBO1FBRUYsSUFBSSxDQUFDLE1BQU0sQ0FBQzs7S0FFWCxDQUFDLENBQUE7UUFFRixJQUFJLENBQUMsTUFBTSxDQUFDOztLQUVYLENBQUMsQ0FBQTtRQUVGLElBQUksQ0FBQyxNQUFNLENBQUM7Ozs7Ozs7O0tBUVgsQ0FBQyxDQUFBO1FBRUYsSUFBSSxDQUFDLE1BQU0sQ0FBQzs7O0tBR1gsQ0FBQyxDQUFBO1FBRUYsSUFBSSxDQUFDLE1BQU0sQ0FBQzs7O0tBR1gsQ0FBQyxDQUFBO0lBQ0osQ0FBQztJQUVELEtBQUssQ0FBQyxJQUFJO1FBQ1IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxpREFBaUQsQ0FBQyxDQUFBO1FBQzlELElBQUksQ0FBQyxNQUFNLENBQUMseUNBQXlDLENBQUMsQ0FBQTtJQUN4RCxDQUFDO0NBQ0Y7QUFsREQsMERBa0RDIn0=
|
|
@@ -7,6 +7,5 @@ exports.ContactRequestComment = utils_1.model.define("contact_request_comment",
|
|
|
7
7
|
contact_request_id: utils_1.model.text().searchable(),
|
|
8
8
|
actor_id: utils_1.model.text().nullable(),
|
|
9
9
|
comment: utils_1.model.text(),
|
|
10
|
-
created_at: utils_1.model.dateTime(),
|
|
11
10
|
});
|
|
12
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
11
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGFjdC1yZXF1ZXN0LWNvbW1lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbW9kdWxlcy9jb250YWN0LXJlcXVlc3RzL21vZGVscy9jb250YWN0LXJlcXVlc3QtY29tbWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxxREFBaUQ7QUFFcEMsUUFBQSxxQkFBcUIsR0FBRyxhQUFLLENBQUMsTUFBTSxDQUFDLHlCQUF5QixFQUFFO0lBQzNFLEVBQUUsRUFBRSxhQUFLLENBQUMsRUFBRSxFQUFFLENBQUMsVUFBVSxFQUFFO0lBQzNCLGtCQUFrQixFQUFFLGFBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxVQUFVLEVBQUU7SUFDN0MsUUFBUSxFQUFFLGFBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxRQUFRLEVBQUU7SUFDakMsT0FBTyxFQUFFLGFBQUssQ0FBQyxJQUFJLEVBQUU7Q0FDdEIsQ0FBQyxDQUFBIn0=
|
|
@@ -10,7 +10,5 @@ exports.ContactRequest = utils_1.model.define("contact_request", {
|
|
|
10
10
|
status_history: utils_1.model.json(),
|
|
11
11
|
metadata: utils_1.model.json().nullable(),
|
|
12
12
|
source: utils_1.model.text().nullable(),
|
|
13
|
-
created_at: utils_1.model.dateTime(),
|
|
14
|
-
updated_at: utils_1.model.dateTime(),
|
|
15
13
|
});
|
|
16
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
14
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGFjdC1yZXF1ZXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL21vZHVsZXMvY29udGFjdC1yZXF1ZXN0cy9tb2RlbHMvY29udGFjdC1yZXF1ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHFEQUFpRDtBQUVwQyxRQUFBLGNBQWMsR0FBRyxhQUFLLENBQUMsTUFBTSxDQUFDLGlCQUFpQixFQUFFO0lBQzVELEVBQUUsRUFBRSxhQUFLLENBQUMsRUFBRSxFQUFFLENBQUMsVUFBVSxFQUFFO0lBQzNCLEtBQUssRUFBRSxhQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsVUFBVSxFQUFFO0lBQ2hDLE9BQU8sRUFBRSxhQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztJQUNqQyxNQUFNLEVBQUUsYUFBSyxDQUFDLElBQUksRUFBRSxDQUFDLFVBQVUsRUFBRTtJQUNqQyxjQUFjLEVBQUUsYUFBSyxDQUFDLElBQUksRUFBRTtJQUM1QixRQUFRLEVBQUUsYUFBSyxDQUFDLElBQUksRUFBRSxDQUFDLFFBQVEsRUFBRTtJQUNqQyxNQUFNLEVBQUUsYUFBSyxDQUFDLElBQUksRUFBRSxDQUFDLFFBQVEsRUFBRTtDQUNoQyxDQUFDLENBQUEifQ==
|
|
@@ -0,0 +1,15 @@
|
|
|
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.CONTACT_SUBSCRIPTION_MODULE = exports.ContactSubscriptionModuleService = void 0;
|
|
7
|
+
const utils_1 = require("@medusajs/framework/utils");
|
|
8
|
+
const constants_1 = require("../../constants");
|
|
9
|
+
Object.defineProperty(exports, "CONTACT_SUBSCRIPTION_MODULE", { enumerable: true, get: function () { return constants_1.CONTACT_SUBSCRIPTION_MODULE; } });
|
|
10
|
+
const service_1 = __importDefault(require("./service"));
|
|
11
|
+
exports.ContactSubscriptionModuleService = service_1.default;
|
|
12
|
+
exports.default = (0, utils_1.Module)(constants_1.CONTACT_SUBSCRIPTION_MODULE, {
|
|
13
|
+
service: service_1.default,
|
|
14
|
+
});
|
|
15
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbW9kdWxlcy9jb250YWN0LXN1YnNjcmlwdGlvbnMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEscURBQWtEO0FBQ2xELCtDQUE2RDtBQVFwRCw0R0FSQSx1Q0FBMkIsT0FRQTtBQVBwQyx3REFBd0Q7QUFNL0MsMkNBTkYsaUJBQWdDLENBTUU7QUFKekMsa0JBQWUsSUFBQSxjQUFNLEVBQUMsdUNBQTJCLEVBQUU7SUFDakQsT0FBTyxFQUFFLGlCQUFnQztDQUMxQyxDQUFDLENBQUEifQ==
|
package/.medusa/server/src/modules/contact-subscriptions/migrations/Migration20241126103000.js
ADDED
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Migration20241126103000 = void 0;
|
|
4
|
+
const migrations_1 = require("@mikro-orm/migrations");
|
|
5
|
+
class Migration20241126103000 extends migrations_1.Migration {
|
|
6
|
+
async up() {
|
|
7
|
+
this.addSql(`
|
|
8
|
+
CREATE TABLE IF NOT EXISTS "contact_email_subscription" (
|
|
9
|
+
"id" text PRIMARY KEY,
|
|
10
|
+
"email" text NOT NULL,
|
|
11
|
+
"status" text NOT NULL DEFAULT 'subscribed',
|
|
12
|
+
"metadata" jsonb NULL,
|
|
13
|
+
"source" text NULL,
|
|
14
|
+
"unsubscribed_at" timestamptz NULL,
|
|
15
|
+
"created_at" timestamptz NOT NULL DEFAULT now(),
|
|
16
|
+
"updated_at" timestamptz NOT NULL DEFAULT now(),
|
|
17
|
+
"deleted_at" timestamptz NULL
|
|
18
|
+
);
|
|
19
|
+
`);
|
|
20
|
+
this.addSql(`
|
|
21
|
+
CREATE UNIQUE INDEX IF NOT EXISTS "IDX_contact_email_subscription_email"
|
|
22
|
+
ON "contact_email_subscription" ("email");
|
|
23
|
+
`);
|
|
24
|
+
this.addSql(`
|
|
25
|
+
CREATE INDEX IF NOT EXISTS "IDX_contact_email_subscription_status"
|
|
26
|
+
ON "contact_email_subscription" ("status");
|
|
27
|
+
`);
|
|
28
|
+
this.addSql(`
|
|
29
|
+
CREATE INDEX IF NOT EXISTS "IDX_contact_email_subscription_deleted_at"
|
|
30
|
+
ON "contact_email_subscription" ("deleted_at");
|
|
31
|
+
`);
|
|
32
|
+
}
|
|
33
|
+
async down() {
|
|
34
|
+
this.addSql(`DROP TABLE IF EXISTS "contact_email_subscription";`);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
exports.Migration20241126103000 = Migration20241126103000;
|
|
38
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTWlncmF0aW9uMjAyNDExMjYxMDMwMDAuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbW9kdWxlcy9jb250YWN0LXN1YnNjcmlwdGlvbnMvbWlncmF0aW9ucy9NaWdyYXRpb24yMDI0MTEyNjEwMzAwMC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxzREFBaUQ7QUFFakQsTUFBYSx1QkFBd0IsU0FBUSxzQkFBUztJQUNwRCxLQUFLLENBQUMsRUFBRTtRQUNOLElBQUksQ0FBQyxNQUFNLENBQUM7Ozs7Ozs7Ozs7OztLQVlYLENBQUMsQ0FBQTtRQUVGLElBQUksQ0FBQyxNQUFNLENBQUM7OztLQUdYLENBQUMsQ0FBQTtRQUVGLElBQUksQ0FBQyxNQUFNLENBQUM7OztLQUdYLENBQUMsQ0FBQTtRQUVGLElBQUksQ0FBQyxNQUFNLENBQUM7OztLQUdYLENBQUMsQ0FBQTtJQUNKLENBQUM7SUFFRCxLQUFLLENBQUMsSUFBSTtRQUNSLElBQUksQ0FBQyxNQUFNLENBQUMsb0RBQW9ELENBQUMsQ0FBQTtJQUNuRSxDQUFDO0NBQ0Y7QUFuQ0QsMERBbUNDIn0=
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ContactEmailSubscription = void 0;
|
|
4
|
+
const utils_1 = require("@medusajs/framework/utils");
|
|
5
|
+
exports.ContactEmailSubscription = utils_1.model.define("contact_email_subscription", {
|
|
6
|
+
id: utils_1.model.id().primaryKey(),
|
|
7
|
+
email: utils_1.model.text().searchable(),
|
|
8
|
+
status: utils_1.model.text().default("subscribed").searchable(),
|
|
9
|
+
metadata: utils_1.model.json().nullable(),
|
|
10
|
+
source: utils_1.model.text().nullable(),
|
|
11
|
+
unsubscribed_at: utils_1.model.dateTime().nullable(),
|
|
12
|
+
});
|
|
13
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGFjdC1lbWFpbC1zdWJzY3JpcHRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbW9kdWxlcy9jb250YWN0LXN1YnNjcmlwdGlvbnMvbW9kZWxzL2NvbnRhY3QtZW1haWwtc3Vic2NyaXB0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHFEQUFpRDtBQUVwQyxRQUFBLHdCQUF3QixHQUFHLGFBQUssQ0FBQyxNQUFNLENBQ2xELDRCQUE0QixFQUM1QjtJQUNFLEVBQUUsRUFBRSxhQUFLLENBQUMsRUFBRSxFQUFFLENBQUMsVUFBVSxFQUFFO0lBQzNCLEtBQUssRUFBRSxhQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsVUFBVSxFQUFFO0lBQ2hDLE1BQU0sRUFBRSxhQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxDQUFDLFVBQVUsRUFBRTtJQUN2RCxRQUFRLEVBQUUsYUFBSyxDQUFDLElBQUksRUFBRSxDQUFDLFFBQVEsRUFBRTtJQUNqQyxNQUFNLEVBQUUsYUFBSyxDQUFDLElBQUksRUFBRSxDQUFDLFFBQVEsRUFBRTtJQUMvQixlQUFlLEVBQUUsYUFBSyxDQUFDLFFBQVEsRUFBRSxDQUFDLFFBQVEsRUFBRTtDQUM3QyxDQUNGLENBQUEifQ==
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const utils_1 = require("@medusajs/framework/utils");
|
|
4
|
+
const constants_1 = require("../../constants");
|
|
5
|
+
const contact_email_subscription_1 = require("./models/contact-email-subscription");
|
|
6
|
+
class ContactSubscriptionModuleService extends (0, utils_1.MedusaService)({
|
|
7
|
+
ContactEmailSubscription: contact_email_subscription_1.ContactEmailSubscription,
|
|
8
|
+
}) {
|
|
9
|
+
get moduleKey() {
|
|
10
|
+
return constants_1.CONTACT_SUBSCRIPTION_MODULE;
|
|
11
|
+
}
|
|
12
|
+
normalizeSubscription(raw) {
|
|
13
|
+
return {
|
|
14
|
+
id: raw.id,
|
|
15
|
+
email: raw.email,
|
|
16
|
+
status: raw.status,
|
|
17
|
+
metadata: raw.metadata ?? undefined,
|
|
18
|
+
source: raw.source ?? undefined,
|
|
19
|
+
unsubscribed_at: raw.unsubscribed_at
|
|
20
|
+
? new Date(raw.unsubscribed_at)
|
|
21
|
+
: null,
|
|
22
|
+
created_at: new Date(raw.created_at ?? new Date()),
|
|
23
|
+
updated_at: new Date(raw.updated_at ?? new Date()),
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
async upsertSubscription(input) {
|
|
27
|
+
const email = input.email.trim().toLowerCase();
|
|
28
|
+
const status = input.status ?? "subscribed";
|
|
29
|
+
const [existing] = await this.listContactEmailSubscriptions({ email }, { take: 1 });
|
|
30
|
+
const baseData = {
|
|
31
|
+
email,
|
|
32
|
+
status,
|
|
33
|
+
metadata: input.metadata ?? existing?.metadata ?? {},
|
|
34
|
+
source: input.source ?? existing?.source ?? "storefront",
|
|
35
|
+
unsubscribed_at: status === "unsubscribed" ? new Date() : null,
|
|
36
|
+
};
|
|
37
|
+
if (!existing) {
|
|
38
|
+
const created = await this.createContactEmailSubscriptions(baseData);
|
|
39
|
+
return this.normalizeSubscription(created);
|
|
40
|
+
}
|
|
41
|
+
await this.updateContactEmailSubscriptions({
|
|
42
|
+
selector: { id: existing.id },
|
|
43
|
+
data: baseData,
|
|
44
|
+
});
|
|
45
|
+
const latest = await this.retrieveContactEmailSubscription(existing.id);
|
|
46
|
+
return this.normalizeSubscription(latest);
|
|
47
|
+
}
|
|
48
|
+
async listWithFilters(selector, config) {
|
|
49
|
+
const [subscriptions, count] = await this.listAndCountContactEmailSubscriptions(selector, config);
|
|
50
|
+
return [
|
|
51
|
+
subscriptions.map((subscription) => this.normalizeSubscription(subscription)),
|
|
52
|
+
count,
|
|
53
|
+
];
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
exports.default = ContactSubscriptionModuleService;
|
|
57
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9tb2R1bGVzL2NvbnRhY3Qtc3Vic2NyaXB0aW9ucy9zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEscURBQXlEO0FBQ3pELCtDQUE2RDtBQU03RCxvRkFBOEU7QUFFOUUsTUFBcUIsZ0NBQWlDLFNBQVEsSUFBQSxxQkFBYSxFQUFDO0lBQzFFLHdCQUF3QixFQUF4QixxREFBd0I7Q0FDekIsQ0FBQztJQUNBLElBQUksU0FBUztRQUNYLE9BQU8sdUNBQTJCLENBQUE7SUFDcEMsQ0FBQztJQUVTLHFCQUFxQixDQUFDLEdBQVE7UUFDdEMsT0FBTztZQUNMLEVBQUUsRUFBRSxHQUFHLENBQUMsRUFBRTtZQUNWLEtBQUssRUFBRSxHQUFHLENBQUMsS0FBSztZQUNoQixNQUFNLEVBQUUsR0FBRyxDQUFDLE1BQXdDO1lBQ3BELFFBQVEsRUFBRSxHQUFHLENBQUMsUUFBUSxJQUFJLFNBQVM7WUFDbkMsTUFBTSxFQUFFLEdBQUcsQ0FBQyxNQUFNLElBQUksU0FBUztZQUMvQixlQUFlLEVBQUUsR0FBRyxDQUFDLGVBQWU7Z0JBQ2xDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsZUFBZSxDQUFDO2dCQUMvQixDQUFDLENBQUMsSUFBSTtZQUNSLFVBQVUsRUFBRSxJQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsVUFBVSxJQUFJLElBQUksSUFBSSxFQUFFLENBQUM7WUFDbEQsVUFBVSxFQUFFLElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxVQUFVLElBQUksSUFBSSxJQUFJLEVBQUUsQ0FBQztTQUNuRCxDQUFBO0lBQ0gsQ0FBQztJQUVELEtBQUssQ0FBQyxrQkFBa0IsQ0FDdEIsS0FBMEM7UUFFMUMsTUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxXQUFXLEVBQUUsQ0FBQTtRQUM5QyxNQUFNLE1BQU0sR0FDVixLQUFLLENBQUMsTUFBTSxJQUFJLFlBQVksQ0FBQTtRQUU5QixNQUFNLENBQUMsUUFBUSxDQUFDLEdBQUcsTUFBTSxJQUFJLENBQUMsNkJBQTZCLENBQ3pELEVBQUUsS0FBSyxFQUFFLEVBQ1QsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQ1osQ0FBQTtRQUVELE1BQU0sUUFBUSxHQUFHO1lBQ2YsS0FBSztZQUNMLE1BQU07WUFDTixRQUFRLEVBQUUsS0FBSyxDQUFDLFFBQVEsSUFBSSxRQUFRLEVBQUUsUUFBUSxJQUFJLEVBQUU7WUFDcEQsTUFBTSxFQUFFLEtBQUssQ0FBQyxNQUFNLElBQUksUUFBUSxFQUFFLE1BQU0sSUFBSSxZQUFZO1lBQ3hELGVBQWUsRUFBRSxNQUFNLEtBQUssY0FBYyxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJO1NBQy9ELENBQUE7UUFFRCxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDZCxNQUFNLE9BQU8sR0FBRyxNQUFNLElBQUksQ0FBQywrQkFBK0IsQ0FBQyxRQUFRLENBQUMsQ0FBQTtZQUNwRSxPQUFPLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxPQUFPLENBQUMsQ0FBQTtRQUM1QyxDQUFDO1FBRUQsTUFBTSxJQUFJLENBQUMsK0JBQStCLENBQUM7WUFDekMsUUFBUSxFQUFFLEVBQUUsRUFBRSxFQUFFLFFBQVEsQ0FBQyxFQUFFLEVBQUU7WUFDN0IsSUFBSSxFQUFFLFFBQVE7U0FDZixDQUFDLENBQUE7UUFFRixNQUFNLE1BQU0sR0FBRyxNQUFNLElBQUksQ0FBQyxnQ0FBZ0MsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUE7UUFDdkUsT0FBTyxJQUFJLENBQUMscUJBQXFCLENBQUMsTUFBTSxDQUFDLENBQUE7SUFDM0MsQ0FBQztJQUVELEtBQUssQ0FBQyxlQUFlLENBQ25CLFFBQWlDLEVBQ2pDLE1BQWdDO1FBRWhDLE1BQU0sQ0FBQyxhQUFhLEVBQUUsS0FBSyxDQUFDLEdBQUcsTUFBTSxJQUFJLENBQUMscUNBQXFDLENBQzdFLFFBQVEsRUFDUixNQUFNLENBQ1AsQ0FBQTtRQUVELE9BQU87WUFDTCxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUMsWUFBWSxFQUFFLEVBQUUsQ0FDakMsSUFBSSxDQUFDLHFCQUFxQixDQUFDLFlBQVksQ0FBQyxDQUN6QztZQUNELEtBQUs7U0FDcUMsQ0FBQTtJQUM5QyxDQUFDO0NBQ0Y7QUF4RUQsbURBd0VDIn0=
|