medusa-contact-us 0.0.11 → 0.0.20

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 (48) hide show
  1. package/.medusa/server/src/admin/index.js +4 -494
  2. package/.medusa/server/src/admin/index.mjs +6 -496
  3. package/.medusa/server/src/api/admin/contact-email-subscriptions/route.js +3 -3
  4. package/.medusa/server/src/api/admin/contact-requests/[id]/route.js +10 -34
  5. package/.medusa/server/src/api/admin/contact-requests/[id]/status/route.js +24 -0
  6. package/.medusa/server/src/api/admin/contact-requests/route.js +47 -11
  7. package/.medusa/server/src/api/admin/contact-requests/validators.js +22 -12
  8. package/.medusa/server/src/api/store/contact-email-subscriptions/route.js +3 -3
  9. package/.medusa/server/src/api/store/contact-email-subscriptions/validators.js +2 -2
  10. package/.medusa/server/src/api/store/contact-requests/route.js +4 -10
  11. package/.medusa/server/src/api/store/contact-requests/validators.js +4 -8
  12. package/.medusa/server/src/constants.js +10 -4
  13. package/.medusa/server/src/helpers/contact-request.js +52 -0
  14. package/.medusa/server/src/helpers/contact-subscription.js +15 -4
  15. package/.medusa/server/src/helpers/index.js +5 -4
  16. package/.medusa/server/src/index.js +16 -13
  17. package/.medusa/server/src/modules/contact-requests/index.js +4 -5
  18. package/.medusa/server/src/modules/contact-requests/migrations/Migration20241129163317.js +47 -0
  19. package/.medusa/server/src/modules/contact-requests/models/contact-request.js +4 -3
  20. package/.medusa/server/src/modules/contact-requests/service.js +191 -141
  21. package/.medusa/server/src/modules/contact-requests/utils/resolve-options.js +48 -0
  22. package/.medusa/server/src/modules/contact-subscriptions/index.js +4 -5
  23. package/.medusa/server/src/modules/contact-subscriptions/service.js +20 -12
  24. package/.medusa/server/src/types/contact-request.js +3 -0
  25. package/.medusa/server/src/types.js +1 -208
  26. package/.medusa/server/src/workflows/create-contact-request-workflow.js +13 -0
  27. package/.medusa/server/src/workflows/index.js +5 -5
  28. package/.medusa/server/src/workflows/steps/create-contact-request-step.js +3 -7
  29. package/.medusa/server/src/workflows/steps/resolve-status-transition-step.js +15 -0
  30. package/.medusa/server/src/workflows/steps/send-status-notification-step.js +56 -0
  31. package/.medusa/server/src/workflows/steps/update-contact-request-status-step.js +7 -7
  32. package/.medusa/server/src/workflows/update-contact-request-status-workflow.js +33 -0
  33. package/README.md +329 -211
  34. package/package.json +2 -2
  35. package/.medusa/server/src/api/admin/contact-requests/[id]/comments/route.js +0 -22
  36. package/.medusa/server/src/api/admin/plugin/route.js +0 -11
  37. package/.medusa/server/src/api/store/plugin/route.js +0 -11
  38. package/.medusa/server/src/helpers/__tests__/submit-contact-request.test.js +0 -125
  39. package/.medusa/server/src/helpers/submit-contact-request.js +0 -45
  40. package/.medusa/server/src/modules/contact-requests/migrations/Migration20241124090000.js +0 -51
  41. package/.medusa/server/src/modules/contact-requests/models/contact-request-comment.js +0 -11
  42. package/.medusa/server/src/plugin-options.js +0 -16
  43. package/.medusa/server/src/types/__tests__/contact-options.test.js +0 -83
  44. package/.medusa/server/src/utils/__tests__/payload-validator.test.js +0 -81
  45. package/.medusa/server/src/utils/payload.js +0 -127
  46. package/.medusa/server/src/workflows/create-contact-request.js +0 -30
  47. package/.medusa/server/src/workflows/steps/send-contact-notification-step.js +0 -48
  48. package/.medusa/server/src/workflows/update-contact-request-status.js +0 -32
@@ -1,186 +1,236 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const utils_1 = require("@medusajs/framework/utils");
4
- const constants_1 = require("../../constants");
5
- const types_1 = require("../../types");
6
- const payload_1 = require("../../utils/payload");
4
+ const index_1 = require("./index");
7
5
  const contact_request_1 = require("./models/contact-request");
8
- const contact_request_comment_1 = require("./models/contact-request-comment");
6
+ const resolve_options_1 = require("./utils/resolve-options");
9
7
  class ContactRequestModuleService extends (0, utils_1.MedusaService)({
10
8
  ContactRequest: contact_request_1.ContactRequest,
11
- ContactRequestComment: contact_request_comment_1.ContactRequestComment,
12
9
  }) {
13
10
  constructor(container, moduleOptions, moduleDeclaration) {
14
11
  super(container, moduleOptions, moduleDeclaration);
15
- this.logger = container.logger;
16
- this.options = (0, types_1.resolveContactUsOptions)(moduleDeclaration?.options);
17
- this.statusLookup = new Map(this.options.status_options.map((option) => [
18
- option.code,
19
- {
20
- label: option.label,
21
- notify: option.notify_customer ?? false,
22
- },
23
- ]));
12
+ this.manager_ = container.manager;
13
+ const resolvedOptions = moduleDeclaration?.options ?? moduleOptions ?? {};
14
+ this.options_ = (0, resolve_options_1.resolveContactUsOptions)(resolvedOptions);
24
15
  }
25
16
  get moduleKey() {
26
- return constants_1.CONTACT_REQUEST_MODULE;
17
+ return index_1.CONTACT_REQUEST_MODULE;
27
18
  }
28
19
  getOptions() {
29
- return this.options;
20
+ return this.options_;
30
21
  }
31
- getStatusOptions() {
32
- return this.options.status_options;
22
+ getNextAllowedStatuses(currentStatus) {
23
+ return (0, resolve_options_1.getNextAllowedStatuses)(currentStatus, this.options_.status_transitions);
33
24
  }
34
- getStatusLabel(status) {
35
- return this.statusLookup.get(status)?.label ?? status;
25
+ getStatusTransition(from, to) {
26
+ return (0, resolve_options_1.getStatusTransition)(from, to, this.options_.status_transitions);
36
27
  }
37
- ensurePayloadSize(payload) {
38
- const payloadBytes = Buffer.byteLength(JSON.stringify(payload), "utf8");
39
- const limitBytes = this.options.form.max_payload_kb * 1024;
40
- if (payloadBytes > limitBytes) {
41
- throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, `Payload exceeds limit of ${this.options.form.max_payload_kb}KB`);
42
- }
43
- }
44
- assertStatusKnown(status) {
45
- if (!this.statusLookup.has(status)) {
46
- throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, `Unknown status "${status}"`);
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");
47
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
+ };
48
55
  }
49
- getAllowedStatuses(current) {
50
- if (current === this.options.statuses.final) {
51
- return [];
56
+ validatePayload(payload, fields) {
57
+ if (!payload || Object.keys(payload).length === 0) {
58
+ return;
52
59
  }
53
- const transitions = this.options.statuses.transitions ?? {};
54
- const fromConfigured = transitions[current];
55
- if (fromConfigured && fromConfigured.length > 0) {
56
- return fromConfigured;
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
+ }
57
113
  }
58
- const defaultTargets = [
59
- ...this.options.statuses.intermediates,
60
- this.options.statuses.final,
61
- ].filter((status) => status !== current);
62
- return Array.from(new Set(defaultTargets));
63
- }
64
- buildHistoryEntry(status, actor, note) {
65
- return {
66
- status,
67
- updated_at: new Date(),
68
- updated_by: actor,
69
- note,
70
- };
71
114
  }
72
115
  async createRequest(input) {
73
- if (!input.email) {
116
+ // Validate email
117
+ if (!input.email || typeof input.email !== "string") {
74
118
  throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, "Email is required");
75
119
  }
76
- const sanitizedPayload = (0, payload_1.sanitizeContactPayload)(input.payload, this.options);
77
- this.ensurePayloadSize(sanitizedPayload);
78
- const initialStatus = this.options.statuses.initial;
79
- const history = [this.buildHistoryEntry(initialStatus, input.source)];
80
- const request = await this.createContactRequests({
81
- email: input.email.trim().toLowerCase(),
82
- payload: sanitizedPayload,
83
- metadata: input.metadata ?? {},
84
- status: initialStatus,
85
- status_history: history,
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,
86
142
  source: input.source ?? "storefront",
87
143
  });
88
- return this.normalizeRequest(request);
144
+ return this.normalizeContactRequest(created);
89
145
  }
90
146
  async updateStatus(input) {
91
- const request = await this.retrieveContactRequest(input.request_id);
92
- if (!request) {
93
- throw new utils_1.MedusaError(utils_1.MedusaError.Types.NOT_FOUND, `Contact request ${input.request_id} not found`);
94
- }
95
- const nextStatus = input.status.trim();
96
- this.assertStatusKnown(nextStatus);
97
- if (request.status === nextStatus) {
98
- return this.normalizeRequest(request);
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`);
99
150
  }
100
- const allowed = this.getAllowedStatuses(request.status);
101
- if (!allowed.includes(nextStatus)) {
102
- throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, `Cannot move from ${request.status} to ${nextStatus}`);
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(", ")}`);
103
157
  }
104
- if (nextStatus === this.options.statuses.final &&
105
- this.options.comments.require_note_on_final &&
106
- !input.note) {
107
- throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, "A note is required when closing a request.");
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`);
108
161
  }
109
- const updatedHistory = [
110
- ...this.parseHistory(request.status_history),
111
- this.buildHistoryEntry(nextStatus, input.actor_id, input.note),
112
- ];
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];
113
171
  await this.updateContactRequests({
114
- selector: { id: request.id },
172
+ selector: { id: input.id },
115
173
  data: {
116
- status: nextStatus,
174
+ status: input.status,
117
175
  status_history: updatedHistory,
118
176
  },
119
177
  });
120
- const latest = await this.retrieveContactRequest(request.id);
121
- return this.normalizeRequest(latest);
122
- }
123
- async addComment(input) {
124
- if (!this.options.comments.enabled) {
125
- throw new utils_1.MedusaError(utils_1.MedusaError.Types.NOT_ALLOWED, "Comments are disabled in the plugin configuration.");
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
+ }
126
191
  }
127
- if (!input.comment || !input.comment.trim()) {
128
- throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, "Comment cannot be empty.");
192
+ if ("status" in selector && selector.status) {
193
+ query.status = selector.status;
129
194
  }
130
- const request = await this.retrieveContactRequest(input.request_id);
131
- if (!request) {
132
- throw new utils_1.MedusaError(utils_1.MedusaError.Types.NOT_FOUND, `Contact request ${input.request_id} not found`);
195
+ if ("source" in selector && selector.source) {
196
+ query.source = selector.source;
133
197
  }
134
- const comment = await this.createContactRequestComments({
135
- contact_request_id: input.request_id,
136
- actor_id: input.actor_id,
137
- comment: input.comment.trim(),
138
- });
139
- return comment;
140
- }
141
- async listWithFilters(selector, config) {
142
- const [requests, count] = await this.listAndCountContactRequests(selector, config);
143
- return [requests.map((request) => this.normalizeRequest(request)), count];
144
- }
145
- async retrieveWithComments(requestId) {
146
- const request = await this.retrieveContactRequest(requestId);
147
- if (!request) {
148
- throw new utils_1.MedusaError(utils_1.MedusaError.Types.NOT_FOUND, `Contact request ${requestId} not found`);
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
+ }
149
220
  }
150
- const comments = await this.listContactRequestComments({
151
- contact_request_id: requestId,
152
- });
153
- return {
154
- request: this.normalizeRequest(request),
155
- comments: comments.map((comment) => ({
156
- ...comment,
157
- created_at: comment.created_at ?? new Date(),
158
- })),
159
- };
160
- }
161
- getNextStatuses(current) {
162
- return this.getAllowedStatuses(current);
221
+ const [requests, count] = await this.listAndCountContactRequests(query, config);
222
+ return [
223
+ requests.map((request) => this.normalizeContactRequest(request)),
224
+ count,
225
+ ];
163
226
  }
164
- parseHistory(raw) {
165
- if (Array.isArray(raw)) {
166
- return raw;
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`);
167
231
  }
168
- return [];
169
- }
170
- normalizeRequest(raw) {
171
- const history = this.parseHistory(raw?.status_history);
172
- return {
173
- id: raw.id,
174
- email: raw.email,
175
- payload: (raw.payload ?? {}),
176
- status: raw.status,
177
- status_history: history,
178
- metadata: raw.metadata ?? undefined,
179
- source: raw.source ?? undefined,
180
- created_at: new Date(raw.created_at ?? new Date()),
181
- updated_at: new Date(raw.updated_at ?? new Date()),
182
- };
232
+ return this.normalizeContactRequest(request);
183
233
  }
184
234
  }
185
235
  exports.default = ContactRequestModuleService;
186
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9tb2R1bGVzL2NvbnRhY3QtcmVxdWVzdHMvc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLHFEQUFzRTtBQUN0RSwrQ0FBd0Q7QUFDeEQsdUNBUW9CO0FBQ3BCLGlEQUE0RDtBQUM1RCw4REFBeUQ7QUFDekQsOEVBQXdFO0FBYXhFLE1BQXFCLDJCQUE0QixTQUFRLElBQUEscUJBQWEsRUFBQztJQUNyRSxjQUFjLEVBQWQsZ0NBQWM7SUFDZCxxQkFBcUIsRUFBckIsK0NBQXFCO0NBQ3RCLENBQUM7SUFLQSxZQUNFLFNBQStCLEVBQy9CLGFBQXVDLEVBQ3ZDLGlCQUFxQztRQUVyQyxLQUFLLENBQUMsU0FBUyxFQUFFLGFBQWEsRUFBRSxpQkFBaUIsQ0FBQyxDQUFBO1FBQ2xELElBQUksQ0FBQyxNQUFNLEdBQUcsU0FBUyxDQUFDLE1BQU0sQ0FBQTtRQUM5QixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUEsK0JBQXVCLEVBQUMsaUJBQWlCLEVBQUUsT0FBTyxDQUFDLENBQUE7UUFDbEUsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLEdBQUcsQ0FDekIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQztZQUMxQyxNQUFNLENBQUMsSUFBSTtZQUNYO2dCQUNFLEtBQUssRUFBRSxNQUFNLENBQUMsS0FBSztnQkFDbkIsTUFBTSxFQUFFLE1BQU0sQ0FBQyxlQUFlLElBQUksS0FBSzthQUN4QztTQUNGLENBQUMsQ0FDSCxDQUFBO0lBQ0gsQ0FBQztJQUVELElBQUksU0FBUztRQUNYLE9BQU8sa0NBQXNCLENBQUE7SUFDL0IsQ0FBQztJQUVELFVBQVU7UUFDUixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUE7SUFDckIsQ0FBQztJQUVELGdCQUFnQjtRQUNkLE9BQU8sSUFBSSxDQUFD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
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
@@ -3,13 +3,12 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.CONTACT_SUBSCRIPTION_MODULE = exports.ContactSubscriptionModuleService = void 0;
6
+ exports.ContactSubscriptionModuleService = exports.CONTACT_SUBSCRIPTION_MODULE = void 0;
7
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
8
  const service_1 = __importDefault(require("./service"));
11
9
  exports.ContactSubscriptionModuleService = service_1.default;
12
- exports.default = (0, utils_1.Module)(constants_1.CONTACT_SUBSCRIPTION_MODULE, {
10
+ exports.CONTACT_SUBSCRIPTION_MODULE = "contact_email_subscriptions";
11
+ exports.default = (0, utils_1.Module)(exports.CONTACT_SUBSCRIPTION_MODULE, {
13
12
  service: service_1.default,
14
13
  });
15
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbW9kdWxlcy9jb250YWN0LXN1YnNjcmlwdGlvbnMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEscURBQWtEO0FBQ2xELCtDQUE2RDtBQVFwRCw0R0FSQSx1Q0FBMkIsT0FRQTtBQVBwQyx3REFBd0Q7QUFNL0MsMkNBTkYsaUJBQWdDLENBTUU7QUFKekMsa0JBQWUsSUFBQSxjQUFNLEVBQUMsdUNBQTJCLEVBQUU7SUFDakQsT0FBTyxFQUFFLGlCQUFnQztDQUMxQyxDQUFDLENBQUEifQ==
14
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbW9kdWxlcy9jb250YWN0LXN1YnNjcmlwdGlvbnMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEscURBQWtEO0FBQ2xELHdEQUF3RDtBQVEvQywyQ0FSRixpQkFBZ0MsQ0FRRTtBQU41QixRQUFBLDJCQUEyQixHQUFHLDZCQUE2QixDQUFBO0FBRXhFLGtCQUFlLElBQUEsY0FBTSxFQUFDLG1DQUEyQixFQUFFO0lBQ2pELE9BQU8sRUFBRSxpQkFBZ0M7Q0FDMUMsQ0FBQyxDQUFBIn0=
@@ -1,26 +1,34 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const utils_1 = require("@medusajs/framework/utils");
4
- const constants_1 = require("../../constants");
4
+ const index_1 = require("./index");
5
5
  const contact_email_subscription_1 = require("./models/contact-email-subscription");
6
6
  class ContactSubscriptionModuleService extends (0, utils_1.MedusaService)({
7
7
  ContactEmailSubscription: contact_email_subscription_1.ContactEmailSubscription,
8
8
  }) {
9
9
  get moduleKey() {
10
- return constants_1.CONTACT_SUBSCRIPTION_MODULE;
10
+ return index_1.CONTACT_SUBSCRIPTION_MODULE;
11
11
  }
12
12
  normalizeSubscription(raw) {
13
+ if (!raw ||
14
+ typeof raw !== "object" ||
15
+ !("id" in raw) ||
16
+ !("email" in raw) ||
17
+ !("status" in raw)) {
18
+ throw new Error("Invalid contact email subscription data");
19
+ }
20
+ const subscription = raw;
13
21
  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)
22
+ id: subscription.id,
23
+ email: subscription.email,
24
+ status: subscription.status,
25
+ metadata: subscription.metadata,
26
+ source: subscription.source,
27
+ unsubscribed_at: subscription.unsubscribed_at
28
+ ? new Date(subscription.unsubscribed_at)
21
29
  : null,
22
- created_at: new Date(raw.created_at ?? new Date()),
23
- updated_at: new Date(raw.updated_at ?? new Date()),
30
+ created_at: new Date(subscription.created_at ?? new Date()),
31
+ updated_at: new Date(subscription.updated_at ?? new Date()),
24
32
  };
25
33
  }
26
34
  async upsertSubscription(input) {
@@ -54,4 +62,4 @@ class ContactSubscriptionModuleService extends (0, utils_1.MedusaService)({
54
62
  }
55
63
  }
56
64
  exports.default = ContactSubscriptionModuleService;
57
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9tb2R1bGVzL2NvbnRhY3Qtc3Vic2NyaXB0aW9ucy9zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEscURBQXlEO0FBQ3pELCtDQUE2RDtBQU03RCxvRkFBOEU7QUFFOUUsTUFBcUIsZ0NBQWlDLFNBQVEsSUFBQSxxQkFBYSxFQUFDO0lBQzFFLHdCQUF3QixFQUF4QixxREFBd0I7Q0FDekIsQ0FBQztJQUNBLElBQUksU0FBUztRQUNYLE9BQU8sdUNBQTJCLENBQUE7SUFDcEMsQ0FBQztJQUVTLHFCQUFxQixDQUFDLEdBQVE7UUFDdEMsT0FBTztZQUNMLEVBQUUsRUFBRSxHQUFHLENBQUMsRUFBRTtZQUNWLEtBQUssRUFBRSxHQUFHLENBQUMsS0FBSztZQUNoQixNQUFNLEVBQUUsR0FBRyxDQUFDLE1BQXdDO1lBQ3BELFFBQVEsRUFBRSxHQUFHLENBQUMsUUFBUSxJQUFJLFNBQVM7WUFDbkMsTUFBTSxFQUFFLEdBQUcsQ0FBQyxNQUFNLElBQUksU0FBUztZQUMvQixlQUFlLEVBQUUsR0FBRyxDQUFDLGVBQWU7Z0JBQ2xDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsZUFBZSxDQUFDO2dCQUMvQixDQUFDLENBQUMsSUFBSTtZQUNSLFVBQVUsRUFBRSxJQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsVUFBVSxJQUFJLElBQUksSUFBSSxFQUFFLENBQUM7WUFDbEQsVUFBVSxFQUFFLElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxVQUFVLElBQUksSUFBSSxJQUFJLEVBQUUsQ0FBQztTQUNuRCxDQUFBO0lBQ0gsQ0FBQztJQUVELEtBQUssQ0FBQyxrQkFBa0IsQ0FDdEIsS0FBMEM7UUFFMUMsTUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxXQUFXLEVBQUUsQ0FBQTtRQUM5QyxNQUFNLE1BQU0sR0FDVixLQUFLLENBQUMsTUFBTSxJQUFJLFlBQVksQ0FBQTtRQUU5QixNQUFNLENBQUMsUUFBUSxDQUFDLEdBQUcsTUFBTSxJQUFJLENBQUMsNkJBQTZCLENBQ3pELEVBQUUsS0FBSyxFQUFFLEVBQ1QsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQ1osQ0FBQTtRQUVELE1BQU0sUUFBUSxHQUFHO1lBQ2YsS0FBSztZQUNMLE1BQU07WUFDTixRQUFRLEVBQUUsS0FBSyxDQUFDLFFBQVEsSUFBSSxRQUFRLEVBQUUsUUFBUSxJQUFJLEVBQUU7WUFDcEQsTUFBTSxFQUFFLEtBQUssQ0FBQyxNQUFNLElBQUksUUFBUSxFQUFFLE1BQU0sSUFBSSxZQUFZO1lBQ3hELGVBQWUsRUFBRSxNQUFNLEtBQUssY0FBYyxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJO1NBQy9ELENBQUE7UUFFRCxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDZCxNQUFNLE9BQU8sR0FBRyxNQUFNLElBQUksQ0FBQywrQkFBK0IsQ0FBQyxRQUFRLENBQUMsQ0FBQTtZQUNwRSxPQUFPLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxPQUFPLENBQUMsQ0FBQTtRQUM1QyxDQUFDO1FBRUQsTUFBTSxJQUFJLENBQUMsK0JBQStCLENBQUM7WUFDekMsUUFBUSxFQUFFLEVBQUUsRUFBRSxFQUFFLFFBQVEsQ0FBQyxFQUFFLEVBQUU7WUFDN0IsSUFBSSxFQUFFLFFBQVE7U0FDZixDQUFDLENBQUE7UUFFRixNQUFNLE1BQU0sR0FBRyxNQUFNLElBQUksQ0FBQyxnQ0FBZ0MsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUE7UUFDdkUsT0FBTyxJQUFJLENBQUMscUJBQXFCLENBQUMsTUFBTSxDQUFDLENBQUE7SUFDM0MsQ0FBQztJQUVELEtBQUssQ0FBQyxlQUFlLENBQ25CLFFBQWlDLEVBQ2pDLE1BQWdDO1FBRWhDLE1BQU0sQ0FBQyxhQUFhLEVBQUUsS0FBSyxDQUFDLEdBQUcsTUFBTSxJQUFJLENBQUMscUNBQXFDLENBQzdFLFFBQVEsRUFDUixNQUFNLENBQ1AsQ0FBQTtRQUVELE9BQU87WUFDTCxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUMsWUFBWSxFQUFFLEVBQUUsQ0FDakMsSUFBSSxDQUFDLHFCQUFxQixDQUFDLFlBQVksQ0FBQyxDQUN6QztZQUNELEtBQUs7U0FDcUMsQ0FBQTtJQUM5QyxDQUFDO0NBQ0Y7QUF4RUQsbURBd0VDIn0=
65
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9tb2R1bGVzL2NvbnRhY3Qtc3Vic2NyaXB0aW9ucy9zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEscURBQXlEO0FBQ3pELG1DQUFxRDtBQU1yRCxvRkFBOEU7QUFFOUUsTUFBcUIsZ0NBQWlDLFNBQVEsSUFBQSxxQkFBYSxFQUFDO0lBQzFFLHdCQUF3QixFQUF4QixxREFBd0I7Q0FDekIsQ0FBQztJQUNBLElBQUksU0FBUztRQUNYLE9BQU8sbUNBQTJCLENBQUE7SUFDcEMsQ0FBQztJQUVTLHFCQUFxQixDQUM3QixHQUFZO1FBRVosSUFDRSxDQUFDLEdBQUc7WUFDSixPQUFPLEdBQUcsS0FBSyxRQUFRO1lBQ3ZCLENBQUMsQ0FBQyxJQUFJLElBQUksR0FBRyxDQUFDO1lBQ2QsQ0FBQyxDQUFDLE9BQU8sSUFBSSxHQUFHLENBQUM7WUFDakIsQ0FBQyxDQUFDLFFBQVEsSUFBSSxHQUFHLENBQUMsRUFDbEIsQ0FBQztZQUNELE1BQU0sSUFBSSxLQUFLLENBQUMseUNBQXlDLENBQUMsQ0FBQTtRQUM1RCxDQUFDO1FBRUQsTUFBTSxZQUFZLEdBQUcsR0FTcEIsQ0FBQTtRQUVELE9BQU87WUFDTCxFQUFFLEVBQUUsWUFBWSxDQUFDLEVBQUU7WUFDbkIsS0FBSyxFQUFFLFlBQVksQ0FBQyxLQUFLO1lBQ3pCLE1BQU0sRUFBRSxZQUFZLENBQUMsTUFBd0M7WUFDN0QsUUFBUSxFQUFFLFlBQVksQ0FBQyxRQUErQztZQUN0RSxNQUFNLEVBQUUsWUFBWSxDQUFDLE1BQTRCO1lBQ2pELGVBQWUsRUFBRSxZQUFZLENBQUMsZUFBZTtnQkFDM0MsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxlQUFlLENBQUM7Z0JBQ3hDLENBQUMsQ0FBQyxJQUFJO1lBQ1IsVUFBVSxFQUFFLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxVQUFVLElBQUksSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUMzRCxVQUFVLEVBQUUsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLFVBQVUsSUFBSSxJQUFJLElBQUksRUFBRSxDQUFDO1NBQzVELENBQUE7SUFDSCxDQUFDO0lBRUQsS0FBSyxDQUFDLGtCQUFrQixDQUN0QixLQUEwQztRQUUxQyxNQUFNLEtBQUssR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDLFdBQVcsRUFBRSxDQUFBO1FBQzlDLE1BQU0sTUFBTSxHQUNWLEtBQUssQ0FBQyxNQUFNLElBQUksWUFBWSxDQUFBO1FBRTlCLE1BQU0sQ0FBQyxRQUFRLENBQUMsR0FBRyxNQUFNLElBQUksQ0FBQyw2QkFBNkIsQ0FDekQsRUFBRSxLQUFLLEVBQUUsRUFDVCxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FDWixDQUFBO1FBRUQsTUFBTSxRQUFRLEdBQUc7WUFDZixLQUFLO1lBQ0wsTUFBTTtZQUNOLFFBQVEsRUFBRSxLQUFLLENBQUMsUUFBUSxJQUFJLFFBQVEsRUFBRSxRQUFRLElBQUksRUFBRTtZQUNwRCxNQUFNLEVBQUUsS0FBSyxDQUFDLE1BQU0sSUFBSSxRQUFRLEVBQUUsTUFBTSxJQUFJLFlBQVk7WUFDeEQsZUFBZSxFQUFFLE1BQU0sS0FBSyxjQUFjLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUk7U0FDL0QsQ0FBQTtRQUVELElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNkLE1BQU0sT0FBTyxHQUFHLE1BQU0sSUFBSSxDQUFDLCtCQUErQixDQUFDLFFBQVEsQ0FBQyxDQUFBO1lBQ3BFLE9BQU8sSUFBSSxDQUFDLHFCQUFxQixDQUFDLE9BQU8sQ0FBQyxDQUFBO1FBQzVDLENBQUM7UUFFRCxNQUFNLElBQUksQ0FBQywrQkFBK0IsQ0FBQztZQUN6QyxRQUFRLEVBQUUsRUFBRSxFQUFFLEVBQUUsUUFBUSxDQUFDLEVBQUUsRUFBRTtZQUM3QixJQUFJLEVBQUUsUUFBUTtTQUNmLENBQUMsQ0FBQTtRQUVGLE1BQU0sTUFBTSxHQUFHLE1BQU0sSUFBSSxDQUFDLGdDQUFnQyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQTtRQUN2RSxPQUFPLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxNQUFNLENBQUMsQ0FBQTtJQUMzQyxDQUFDO0lBRUQsS0FBSyxDQUFDLGVBQWUsQ0FDbkIsUUFBaUMsRUFDakMsTUFBZ0M7UUFFaEMsTUFBTSxDQUFDLGFBQWEsRUFBRSxLQUFLLENBQUMsR0FBRyxNQUFNLElBQUksQ0FBQyxxQ0FBcUMsQ0FDN0UsUUFBUSxFQUNSLE1BQU0sQ0FDUCxDQUFBO1FBRUQsT0FBTztZQUNMLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxZQUFZLEVBQUUsRUFBRSxDQUNqQyxJQUFJLENBQUMscUJBQXFCLENBQUMsWUFBWSxDQUFDLENBQ3pDO1lBQ0QsS0FBSztTQUNxQyxDQUFBO0lBQzlDLENBQUM7Q0FDRjtBQS9GRCxtREErRkMifQ==
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGFjdC1yZXF1ZXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3R5cGVzL2NvbnRhY3QtcmVxdWVzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIn0=