@hszrdm/core 1.1.0 → 1.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.medusa/server/src/admin/index.js +4107 -3308
- package/.medusa/server/src/admin/index.mjs +4109 -3310
- package/.medusa/server/src/api/admin/ai-translations/apply/route.d.ts +11 -0
- package/.medusa/server/src/api/admin/ai-translations/apply/route.js +102 -0
- package/.medusa/server/src/api/admin/ai-translations/preview/route.d.ts +10 -0
- package/.medusa/server/src/api/admin/ai-translations/preview/route.js +141 -0
- package/.medusa/server/src/api/admin/ai-translations/route.d.ts +2 -0
- package/.medusa/server/src/api/admin/ai-translations/route.js +19 -0
- package/.medusa/server/src/api/admin/newsletter/subscribers/export/route.d.ts +2 -0
- package/.medusa/server/src/api/admin/newsletter/subscribers/export/route.js +74 -0
- package/.medusa/server/src/api/admin/newsletter/subscribers/route.d.ts +2 -0
- package/.medusa/server/src/api/admin/newsletter/subscribers/route.js +57 -0
- package/.medusa/server/src/api/admin/product-reviews/[id]/route.d.ts +7 -0
- package/.medusa/server/src/api/admin/product-reviews/[id]/route.js +40 -0
- package/.medusa/server/src/api/admin/product-reviews/route.d.ts +2 -0
- package/.medusa/server/src/api/admin/product-reviews/route.js +31 -0
- package/.medusa/server/src/api/middlewares.js +9 -1
- package/.medusa/server/src/api/store/account/wishlist/[productId]/route.d.ts +2 -0
- package/.medusa/server/src/api/store/account/wishlist/[productId]/route.js +18 -0
- package/.medusa/server/src/api/store/account/wishlist/merge/route.d.ts +6 -0
- package/.medusa/server/src/api/store/account/wishlist/merge/route.js +51 -0
- package/.medusa/server/src/api/store/account/wishlist/route.d.ts +7 -0
- package/.medusa/server/src/api/store/account/wishlist/route.js +76 -0
- package/.medusa/server/src/api/store/cms/entries/[slug]/route.js +4 -4
- package/.medusa/server/src/api/store/cms/entries/route.js +4 -4
- package/.medusa/server/src/api/store/newsletter/config/route.d.ts +2 -0
- package/.medusa/server/src/api/store/newsletter/config/route.js +14 -0
- package/.medusa/server/src/api/store/newsletter/confirm/route.d.ts +4 -0
- package/.medusa/server/src/api/store/newsletter/confirm/route.js +52 -0
- package/.medusa/server/src/api/store/newsletter/route.d.ts +4 -0
- package/.medusa/server/src/api/store/newsletter/route.js +172 -0
- package/.medusa/server/src/api/store/newsletter/unsubscribe/route.d.ts +4 -0
- package/.medusa/server/src/api/store/newsletter/unsubscribe/route.js +54 -0
- package/.medusa/server/src/api/store/products/[id]/reviews/route.d.ts +8 -0
- package/.medusa/server/src/api/store/products/[id]/reviews/route.js +174 -0
- package/.medusa/server/src/core/ai-translation.d.ts +26 -0
- package/.medusa/server/src/core/ai-translation.js +173 -0
- package/.medusa/server/src/core/version.d.ts +2 -2
- package/.medusa/server/src/core/version.js +2 -2
- package/.medusa/server/src/modules/cms/config.d.ts +2 -1
- package/.medusa/server/src/modules/cms/config.js +27 -12
- package/.medusa/server/src/modules/cms/content-types.d.ts +24 -0
- package/.medusa/server/src/modules/cms/content-types.js +27 -0
- package/.medusa/server/src/modules/cms/index.d.ts +1 -0
- package/.medusa/server/src/modules/cms/index.js +6 -2
- package/.medusa/server/src/modules/newsletter/config.d.ts +14 -0
- package/.medusa/server/src/modules/newsletter/config.js +51 -0
- package/.medusa/server/src/modules/newsletter/email.d.ts +9 -0
- package/.medusa/server/src/modules/newsletter/email.js +38 -0
- package/.medusa/server/src/modules/newsletter/events.d.ts +10 -0
- package/.medusa/server/src/modules/newsletter/events.js +34 -0
- package/.medusa/server/src/modules/newsletter/index.d.ts +10 -0
- package/.medusa/server/src/modules/newsletter/index.js +33 -0
- package/.medusa/server/src/modules/newsletter/migrations/Migration20261030130000.d.ts +5 -0
- package/.medusa/server/src/modules/newsletter/migrations/Migration20261030130000.js +18 -0
- package/.medusa/server/src/modules/newsletter/models/newsletter-subscriber.d.ts +21 -0
- package/.medusa/server/src/modules/newsletter/models/newsletter-subscriber.js +35 -0
- package/.medusa/server/src/modules/newsletter/service.d.ts +24 -0
- package/.medusa/server/src/modules/newsletter/service.js +11 -0
- package/.medusa/server/src/modules/newsletter/token.d.ts +10 -0
- package/.medusa/server/src/modules/newsletter/token.js +97 -0
- package/.medusa/server/src/modules/product-review/config.d.ts +5 -0
- package/.medusa/server/src/modules/product-review/config.js +10 -0
- package/.medusa/server/src/modules/product-review/index.d.ts +7 -0
- package/.medusa/server/src/modules/product-review/index.js +18 -0
- package/.medusa/server/src/modules/product-review/migrations/Migration20261030160100.d.ts +5 -0
- package/.medusa/server/src/modules/product-review/migrations/Migration20261030160100.js +18 -0
- package/.medusa/server/src/modules/product-review/models/product-review.d.ts +16 -0
- package/.medusa/server/src/modules/product-review/models/product-review.js +26 -0
- package/.medusa/server/src/modules/product-review/service.d.ts +25 -0
- package/.medusa/server/src/modules/product-review/service.js +12 -0
- package/.medusa/server/src/modules/wishlist/index.d.ts +5 -0
- package/.medusa/server/src/modules/wishlist/index.js +14 -0
- package/.medusa/server/src/modules/wishlist/migrations/Migration20261030160000.d.ts +5 -0
- package/.medusa/server/src/modules/wishlist/migrations/Migration20261030160000.js +17 -0
- package/.medusa/server/src/modules/wishlist/models/wishlist-item.d.ts +6 -0
- package/.medusa/server/src/modules/wishlist/models/wishlist-item.js +14 -0
- package/.medusa/server/src/modules/wishlist/service.d.ts +15 -0
- package/.medusa/server/src/modules/wishlist/service.js +12 -0
- package/package.json +2 -1
|
@@ -0,0 +1,173 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.AI_TRANSLATION_FIELDS = exports.AI_TRANSLATION_REFERENCES = void 0;
|
|
4
|
+
exports.getAiTranslationConfig = getAiTranslationConfig;
|
|
5
|
+
exports.isAiTranslationReference = isAiTranslationReference;
|
|
6
|
+
exports.filterAiTranslatableFields = filterAiTranslatableFields;
|
|
7
|
+
exports.generateAiTranslations = generateAiTranslations;
|
|
8
|
+
exports.AI_TRANSLATION_REFERENCES = ["product", "cms_entry"];
|
|
9
|
+
exports.AI_TRANSLATION_FIELDS = {
|
|
10
|
+
product: ["title", "description", "subtitle", "material"],
|
|
11
|
+
cms_entry: [
|
|
12
|
+
"title",
|
|
13
|
+
"excerpt",
|
|
14
|
+
"body",
|
|
15
|
+
"featured_image_alt",
|
|
16
|
+
"seo_title",
|
|
17
|
+
"seo_description",
|
|
18
|
+
],
|
|
19
|
+
};
|
|
20
|
+
function getAiTranslationConfig() {
|
|
21
|
+
const enabled = bool(process.env.AI_TRANSLATION_ENABLED, false);
|
|
22
|
+
const provider = (process.env.AI_TRANSLATION_PROVIDER || "openai").trim().toLowerCase();
|
|
23
|
+
const model = (process.env.AI_TRANSLATION_MODEL || "gpt-6-astra").trim();
|
|
24
|
+
const baseUrl = (process.env.OPENAI_BASE_URL || "https://api.openai.com/v1").replace(/\/+$/, "");
|
|
25
|
+
const apiKeyConfigured = Boolean(process.env.OPENAI_API_KEY?.trim());
|
|
26
|
+
const defaultSourceLocale = (process.env.STORE_LOCALE || "hu-HU").trim();
|
|
27
|
+
return {
|
|
28
|
+
enabled,
|
|
29
|
+
provider,
|
|
30
|
+
model,
|
|
31
|
+
baseUrl,
|
|
32
|
+
apiKeyConfigured,
|
|
33
|
+
defaultSourceLocale,
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
function isAiTranslationReference(value) {
|
|
37
|
+
return typeof value === "string" && exports.AI_TRANSLATION_REFERENCES.includes(value);
|
|
38
|
+
}
|
|
39
|
+
function filterAiTranslatableFields(reference, value) {
|
|
40
|
+
const allowed = new Set(exports.AI_TRANSLATION_FIELDS[reference]);
|
|
41
|
+
const result = {};
|
|
42
|
+
for (const [key, raw] of Object.entries(value || {})) {
|
|
43
|
+
if (!allowed.has(key) || typeof raw !== "string" || !raw.trim())
|
|
44
|
+
continue;
|
|
45
|
+
result[key] = raw;
|
|
46
|
+
}
|
|
47
|
+
return result;
|
|
48
|
+
}
|
|
49
|
+
async function generateAiTranslations(tasks) {
|
|
50
|
+
if (!tasks.length)
|
|
51
|
+
return [];
|
|
52
|
+
if (tasks.length > 40)
|
|
53
|
+
throw new Error("Egyszerre legfeljebb 40 fordítási feladat generálható.");
|
|
54
|
+
const config = getAiTranslationConfig();
|
|
55
|
+
if (!config.enabled)
|
|
56
|
+
throw new Error("Az automatikus fordítás nincs engedélyezve.");
|
|
57
|
+
if (config.provider !== "openai")
|
|
58
|
+
throw new Error(`Nem támogatott fordítási provider: ${config.provider}`);
|
|
59
|
+
const apiKey = process.env.OPENAI_API_KEY?.trim();
|
|
60
|
+
if (!apiKey)
|
|
61
|
+
throw new Error("Az OPENAI_API_KEY nincs beállítva.");
|
|
62
|
+
const response = await fetch(`${config.baseUrl}/responses`, {
|
|
63
|
+
method: "POST",
|
|
64
|
+
headers: {
|
|
65
|
+
authorization: `Bearer ${apiKey}`,
|
|
66
|
+
"content-type": "application/json",
|
|
67
|
+
},
|
|
68
|
+
body: JSON.stringify({
|
|
69
|
+
model: config.model,
|
|
70
|
+
store: false,
|
|
71
|
+
instructions: [
|
|
72
|
+
"You are a professional ecommerce translation engine.",
|
|
73
|
+
"Translate faithfully into the requested target locale.",
|
|
74
|
+
"Keep brand names, SKUs, URLs, template variables, technical tokens and measurements unchanged unless normal language rules require otherwise.",
|
|
75
|
+
"For HTML input, preserve valid HTML structure, tags, attributes, links and embedded URLs while translating human-readable text.",
|
|
76
|
+
"Do not summarize, add marketing claims, remove information, or rewrite the meaning.",
|
|
77
|
+
"Return every requested field exactly once.",
|
|
78
|
+
].join(" "),
|
|
79
|
+
input: JSON.stringify({ tasks }),
|
|
80
|
+
text: {
|
|
81
|
+
format: {
|
|
82
|
+
type: "json_schema",
|
|
83
|
+
name: "hszrdm_translation_batch",
|
|
84
|
+
strict: true,
|
|
85
|
+
schema: {
|
|
86
|
+
type: "object",
|
|
87
|
+
properties: {
|
|
88
|
+
items: {
|
|
89
|
+
type: "array",
|
|
90
|
+
items: {
|
|
91
|
+
type: "object",
|
|
92
|
+
properties: {
|
|
93
|
+
task_id: { type: "string" },
|
|
94
|
+
translations: {
|
|
95
|
+
type: "array",
|
|
96
|
+
items: {
|
|
97
|
+
type: "object",
|
|
98
|
+
properties: {
|
|
99
|
+
key: { type: "string" },
|
|
100
|
+
value: { type: "string" },
|
|
101
|
+
},
|
|
102
|
+
required: ["key", "value"],
|
|
103
|
+
additionalProperties: false,
|
|
104
|
+
},
|
|
105
|
+
},
|
|
106
|
+
},
|
|
107
|
+
required: ["task_id", "translations"],
|
|
108
|
+
additionalProperties: false,
|
|
109
|
+
},
|
|
110
|
+
},
|
|
111
|
+
},
|
|
112
|
+
required: ["items"],
|
|
113
|
+
additionalProperties: false,
|
|
114
|
+
},
|
|
115
|
+
},
|
|
116
|
+
},
|
|
117
|
+
}),
|
|
118
|
+
});
|
|
119
|
+
const payload = (await response.json());
|
|
120
|
+
if (!response.ok) {
|
|
121
|
+
const message = payload?.error?.message || payload?.message || `OpenAI API hiba (${response.status}).`;
|
|
122
|
+
throw new Error(message);
|
|
123
|
+
}
|
|
124
|
+
const outputText = extractOutputText(payload);
|
|
125
|
+
if (!outputText)
|
|
126
|
+
throw new Error("Az OpenAI válasz nem tartalmazott fordítási eredményt.");
|
|
127
|
+
let parsed;
|
|
128
|
+
try {
|
|
129
|
+
parsed = JSON.parse(outputText);
|
|
130
|
+
}
|
|
131
|
+
catch {
|
|
132
|
+
throw new Error("Az OpenAI fordítási válasza nem értelmezhető JSON-ként.");
|
|
133
|
+
}
|
|
134
|
+
const taskMap = new Map(tasks.map((task) => [task.taskId, task]));
|
|
135
|
+
const results = [];
|
|
136
|
+
for (const item of Array.isArray(parsed?.items) ? parsed.items : []) {
|
|
137
|
+
const taskId = typeof item?.task_id === "string" ? item.task_id : "";
|
|
138
|
+
const task = taskMap.get(taskId);
|
|
139
|
+
if (!task)
|
|
140
|
+
continue;
|
|
141
|
+
const translations = {};
|
|
142
|
+
const allowedFields = new Set(Object.keys(task.fields));
|
|
143
|
+
for (const pair of Array.isArray(item?.translations) ? item.translations : []) {
|
|
144
|
+
const key = typeof pair?.key === "string" ? pair.key : "";
|
|
145
|
+
const value = typeof pair?.value === "string" ? pair.value.trim() : "";
|
|
146
|
+
if (!key || !value || !allowedFields.has(key))
|
|
147
|
+
continue;
|
|
148
|
+
translations[key] = value;
|
|
149
|
+
}
|
|
150
|
+
if (Object.keys(translations).length)
|
|
151
|
+
results.push({ taskId, translations });
|
|
152
|
+
}
|
|
153
|
+
return results;
|
|
154
|
+
}
|
|
155
|
+
function extractOutputText(payload) {
|
|
156
|
+
if (typeof payload.output_text === "string" && payload.output_text.trim()) {
|
|
157
|
+
return payload.output_text.trim();
|
|
158
|
+
}
|
|
159
|
+
for (const item of Array.isArray(payload.output) ? payload.output : []) {
|
|
160
|
+
for (const content of Array.isArray(item?.content) ? item.content : []) {
|
|
161
|
+
if (content?.type === "output_text" && typeof content.text === "string" && content.text.trim()) {
|
|
162
|
+
return content.text.trim();
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
return "";
|
|
167
|
+
}
|
|
168
|
+
function bool(value, fallback) {
|
|
169
|
+
if (value === undefined || value === "")
|
|
170
|
+
return fallback;
|
|
171
|
+
return ["1", "true", "yes", "on"].includes(value.trim().toLowerCase());
|
|
172
|
+
}
|
|
173
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWktdHJhbnNsYXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29yZS9haS10cmFuc2xhdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUE4QkEsd0RBZ0JDO0FBRUQsNERBRUM7QUFFRCxnRUFhQztBQUVELHdEQTZHQztBQWhMWSxRQUFBLHlCQUF5QixHQUFHLENBQUMsU0FBUyxFQUFFLFdBQVcsQ0FBVSxDQUFBO0FBSTdELFFBQUEscUJBQXFCLEdBQXNEO0lBQ3RGLE9BQU8sRUFBRSxDQUFDLE9BQU8sRUFBRSxhQUFhLEVBQUUsVUFBVSxFQUFFLFVBQVUsQ0FBQztJQUN6RCxTQUFTLEVBQUU7UUFDVCxPQUFPO1FBQ1AsU0FBUztRQUNULE1BQU07UUFDTixvQkFBb0I7UUFDcEIsV0FBVztRQUNYLGlCQUFpQjtLQUNsQjtDQUNGLENBQUE7QUFnQkQsU0FBZ0Isc0JBQXNCO0lBQ3BDLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLHNCQUFzQixFQUFFLEtBQUssQ0FBQyxDQUFBO0lBQy9ELE1BQU0sUUFBUSxHQUFHLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyx1QkFBdUIsSUFBSSxRQUFRLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxXQUFXLEVBQUUsQ0FBQTtJQUN2RixNQUFNLEtBQUssR0FBRyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsb0JBQW9CLElBQUksYUFBYSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUE7SUFDeEUsTUFBTSxPQUFPLEdBQUcsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLGVBQWUsSUFBSSwyQkFBMkIsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLENBQUE7SUFDaEcsTUFBTSxnQkFBZ0IsR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxjQUFjLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQTtJQUNw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
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export declare const CORE_VERSION = "1.
|
|
1
|
+
export declare const CORE_VERSION = "1.2.0";
|
|
2
2
|
export declare const CORE_API_CONTRACT_VERSION = "1.0";
|
|
3
3
|
export declare const STOREFRONT_CORE_CONFIG_SCHEMA_VERSION = 1;
|
|
4
|
-
export declare const CORE_DB_SCHEMA_VERSION =
|
|
4
|
+
export declare const CORE_DB_SCHEMA_VERSION = 4;
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.CORE_DB_SCHEMA_VERSION = exports.STOREFRONT_CORE_CONFIG_SCHEMA_VERSION = exports.CORE_API_CONTRACT_VERSION = exports.CORE_VERSION = void 0;
|
|
4
|
-
exports.CORE_VERSION = "1.
|
|
4
|
+
exports.CORE_VERSION = "1.2.0";
|
|
5
5
|
exports.CORE_API_CONTRACT_VERSION = "1.0";
|
|
6
6
|
exports.STOREFRONT_CORE_CONFIG_SCHEMA_VERSION = 1;
|
|
7
|
-
exports.CORE_DB_SCHEMA_VERSION =
|
|
7
|
+
exports.CORE_DB_SCHEMA_VERSION = 4;
|
|
8
8
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb3JlL3ZlcnNpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQWEsUUFBQSxZQUFZLEdBQUcsT0FBTyxDQUFBO0FBQ3RCLFFBQUEseUJBQXlCLEdBQUcsS0FBSyxDQUFBO0FBQ2pDLFFBQUEscUNBQXFDLEdBQUcsQ0FBQyxDQUFBO0FBQ3pDLFFBQUEsc0JBQXNCLEdBQUcsQ0FBQyxDQUFBIn0=
|
|
@@ -1,12 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.loadCmsConfig = loadCmsConfig;
|
|
4
|
-
const
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
];
|
|
4
|
+
const content_types_1 = require("./content-types");
|
|
5
|
+
const CORE_CONTENT_TYPES = content_types_1.CORE_CMS_CONTENT_TYPE_OPTIONS.map((option) => ({
|
|
6
|
+
key: option.value,
|
|
7
|
+
label: option.label,
|
|
8
|
+
}));
|
|
10
9
|
function loadCmsConfig(env = process.env) {
|
|
11
10
|
return {
|
|
12
11
|
enabled: env.CMS_ENABLED !== "false",
|
|
@@ -15,12 +14,20 @@ function loadCmsConfig(env = process.env) {
|
|
|
15
14
|
};
|
|
16
15
|
}
|
|
17
16
|
function parseContentTypes(raw) {
|
|
17
|
+
const configured = parseConfiguredContentTypes(raw);
|
|
18
|
+
const builtInKeys = new Set(CORE_CONTENT_TYPES.map((item) => item.key));
|
|
19
|
+
return [
|
|
20
|
+
...CORE_CONTENT_TYPES,
|
|
21
|
+
...configured.filter((item) => !builtInKeys.has(item.key)),
|
|
22
|
+
];
|
|
23
|
+
}
|
|
24
|
+
function parseConfiguredContentTypes(raw) {
|
|
18
25
|
if (!raw?.trim())
|
|
19
|
-
return
|
|
26
|
+
return [];
|
|
20
27
|
try {
|
|
21
28
|
const parsed = JSON.parse(raw);
|
|
22
29
|
if (!Array.isArray(parsed))
|
|
23
|
-
return
|
|
30
|
+
return [];
|
|
24
31
|
const values = parsed
|
|
25
32
|
.map((item) => {
|
|
26
33
|
if (!item || typeof item !== "object" || Array.isArray(item))
|
|
@@ -28,13 +35,21 @@ function parseContentTypes(raw) {
|
|
|
28
35
|
const record = item;
|
|
29
36
|
const key = slugKey(record.key);
|
|
30
37
|
const label = text(record.label);
|
|
31
|
-
return key && label
|
|
38
|
+
return key && label
|
|
39
|
+
? { key: key, label: label.slice(0, 120) }
|
|
40
|
+
: null;
|
|
32
41
|
})
|
|
33
42
|
.filter((item) => Boolean(item));
|
|
34
|
-
|
|
43
|
+
const seen = new Set();
|
|
44
|
+
return values.filter((item) => {
|
|
45
|
+
if (seen.has(item.key))
|
|
46
|
+
return false;
|
|
47
|
+
seen.add(item.key);
|
|
48
|
+
return true;
|
|
49
|
+
});
|
|
35
50
|
}
|
|
36
51
|
catch {
|
|
37
|
-
return
|
|
52
|
+
return [];
|
|
38
53
|
}
|
|
39
54
|
}
|
|
40
55
|
function slugKey(value) {
|
|
@@ -47,4 +62,4 @@ function slugKey(value) {
|
|
|
47
62
|
function text(value) {
|
|
48
63
|
return typeof value === "string" && value.trim() ? value.trim() : "";
|
|
49
64
|
}
|
|
50
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
65
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL21vZHVsZXMvY21zL2NvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQXNCQSxzQ0FNQztBQTVCRCxtREFHd0I7QUFheEIsTUFBTSxrQkFBa0IsR0FDdEIsNkNBQTZCLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQzdDLEdBQUcsRUFBRSxNQUFNLENBQUMsS0FBSztJQUNqQixLQUFLLEVBQUUsTUFBTSxDQUFDLEtBQUs7Q0FDcEIsQ0FBQyxDQUFDLENBQUE7QUFFTCxTQUFnQixhQUFhLENBQUMsTUFBeUIsT0FBTyxDQUFDLEdBQUc7SUFDaEUsT0FBTztRQUNMLE9BQU8sRUFBRSxHQUFHLENBQUMsV0FBVyxLQUFLLE9BQU87UUFDcEMsYUFBYSxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsa0JBQWtCLENBQUMsSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxJQUFJLE9BQU87UUFDaEYsWUFBWSxFQUFFLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxzQkFBc0IsQ0FBQztLQUM1RCxDQUFBO0FBQ0gsQ0FBQztBQUVELFNBQVMsaUJBQWlCLENBQUMsR0FBWTtJQUNyQyxNQUFNLFVBQVUsR0FBRywyQkFBMkIsQ0FBQyxHQUFHLENBQUMsQ0FBQTtJQUNuRCxNQUFNLFdBQVcsR0FBRyxJQUFJLEdBQUcsQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFBO0lBRXZFLE9BQU87UUFDTCxHQUFHLGtCQUFrQjtRQUNyQixHQUFHLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7S0FDM0QsQ0FBQTtBQUNILENBQUM7QUFFRCxTQUFTLDJCQUEyQixDQUFDLEdBQVk7SUFDL0MsSUFBSSxDQUFDLEdBQUcsRUFBRSxJQUFJLEVBQUU7UUFBRSxPQUFPLEVBQUUsQ0FBQTtJQUMzQixJQUFJLENBQUM7UUFDSCxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFBO1FBQzlCLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQztZQUFFLE9BQU8sRUFBRSxDQUFBO1FBRXJDLE1BQU0sTUFBTSxHQUFHLE1BQU07YUFDbEIsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7WUFDWixJQUFJLENBQUMsSUFBSSxJQUFJLE9BQU8sSUFBSSxLQUFLLFFBQVEsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQztnQkFBRSxPQUFPLElBQUksQ0FBQTtZQUN6RSxNQUFNLE1BQU0sR0FBRyxJQUErQixDQUFBO1lBQzlDLE1BQU0sR0FBRyxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUE7WUFDL0IsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQTtZQUNoQyxPQUFPLEdBQUcsSUFBSSxLQUFLO2dCQUNqQixDQUFDLENBQUMsRUFBRSxHQUFHLEVBQUUsR0FBcUIsRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLEVBQUU7Z0JBQzVELENBQUMsQ0FBQyxJQUFJLENBQUE7UUFDVixDQUFDLENBQUM7YUFDRCxNQUFNLENBQUMsQ0FBQyxJQUFJLEVBQW9DLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQTtRQUVwRSxNQUFNLElBQUksR0FBRyxJQUFJLEdBQUcsRUFBVSxDQUFBO1FBQzlCLE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO1lBQzVCLElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDO2dCQUFFLE9BQU8sS0FBSyxDQUFBO1lBQ3BDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFBO1lBQ2xCLE9BQU8sSUFBSSxDQUFBO1FBQ2IsQ0FBQyxDQUFDLENBQUE7SUFDSixDQUFDO0lBQUMsTUFBTSxDQUFDO1FBQ1AsT0FBTyxFQUFFLENBQUE7SUFDWCxDQUFDO0FBQ0gsQ0FBQztBQUVELFNBQVMsT0FBTyxDQUFDLEtBQWM7SUFDN0IsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDO1FBQ2hCLEVBQUUsV0FBVyxFQUFFO1NBQ2QsT0FBTyxDQUFDLGVBQWUsRUFBRSxHQUFHLENBQUM7U0FDN0IsT0FBTyxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUM7U0FDdkIsS0FBSyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUE7QUFDdkIsQ0FBQztBQUVELFNBQVMsSUFBSSxDQUFDLEtBQWM7SUFDMUIsT0FBTyxPQUFPLEtBQUssS0FBSyxRQUFRLElBQUksS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQTtBQUN0RSxDQUFDIn0=
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
export declare const CORE_CMS_CONTENT_TYPES: {
|
|
2
|
+
readonly BLOG_POST: "blog_post";
|
|
3
|
+
readonly PAGE: "page";
|
|
4
|
+
readonly KNOWLEDGE_BASE: "knowledge_base";
|
|
5
|
+
};
|
|
6
|
+
export type CoreCmsContentType = typeof CORE_CMS_CONTENT_TYPES[keyof typeof CORE_CMS_CONTENT_TYPES];
|
|
7
|
+
/**
|
|
8
|
+
* Built-in HSZRDM Commerce CMS content types.
|
|
9
|
+
*
|
|
10
|
+
* Projects may still persist and query arbitrary custom content_type strings.
|
|
11
|
+
* This type keeps the built-ins discoverable without restricting extensions.
|
|
12
|
+
*/
|
|
13
|
+
export type CmsContentType = CoreCmsContentType | (string & {});
|
|
14
|
+
export declare const CORE_CMS_CONTENT_TYPE_OPTIONS: readonly [{
|
|
15
|
+
readonly value: "blog_post";
|
|
16
|
+
readonly label: "Blogbejegyzés";
|
|
17
|
+
}, {
|
|
18
|
+
readonly value: "page";
|
|
19
|
+
readonly label: "Oldal";
|
|
20
|
+
}, {
|
|
21
|
+
readonly value: "knowledge_base";
|
|
22
|
+
readonly label: "Tudástár";
|
|
23
|
+
}];
|
|
24
|
+
export declare function isCoreCmsContentType(value: string): value is CoreCmsContentType;
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.CORE_CMS_CONTENT_TYPE_OPTIONS = exports.CORE_CMS_CONTENT_TYPES = void 0;
|
|
4
|
+
exports.isCoreCmsContentType = isCoreCmsContentType;
|
|
5
|
+
exports.CORE_CMS_CONTENT_TYPES = {
|
|
6
|
+
BLOG_POST: "blog_post",
|
|
7
|
+
PAGE: "page",
|
|
8
|
+
KNOWLEDGE_BASE: "knowledge_base",
|
|
9
|
+
};
|
|
10
|
+
exports.CORE_CMS_CONTENT_TYPE_OPTIONS = [
|
|
11
|
+
{
|
|
12
|
+
value: exports.CORE_CMS_CONTENT_TYPES.BLOG_POST,
|
|
13
|
+
label: "Blogbejegyzés",
|
|
14
|
+
},
|
|
15
|
+
{
|
|
16
|
+
value: exports.CORE_CMS_CONTENT_TYPES.PAGE,
|
|
17
|
+
label: "Oldal",
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
value: exports.CORE_CMS_CONTENT_TYPES.KNOWLEDGE_BASE,
|
|
21
|
+
label: "Tudástár",
|
|
22
|
+
},
|
|
23
|
+
];
|
|
24
|
+
function isCoreCmsContentType(value) {
|
|
25
|
+
return Object.values(exports.CORE_CMS_CONTENT_TYPES).includes(value);
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGVudC10eXBlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9tb2R1bGVzL2Ntcy9jb250ZW50LXR5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQWdDQSxvREFFQztBQWxDWSxRQUFBLHNCQUFzQixHQUFHO0lBQ3BDLFNBQVMsRUFBRSxXQUFXO0lBQ3RCLElBQUksRUFBRSxNQUFNO0lBQ1osY0FBYyxFQUFFLGdCQUFnQjtDQUN4QixDQUFBO0FBYUcsUUFBQSw2QkFBNkIsR0FBRztJQUMzQztRQUNFLEtBQUssRUFBRSw4QkFBc0IsQ0FBQyxTQUFTO1FBQ3ZDLEtBQUssRUFBRSxlQUFlO0tBQ3ZCO0lBQ0Q7UUFDRSxLQUFLLEVBQUUsOEJBQXNCLENBQUMsSUFBSTtRQUNsQyxLQUFLLEVBQUUsT0FBTztLQUNmO0lBQ0Q7UUFDRSxLQUFLLEVBQUUsOEJBQXNCLENBQUMsY0FBYztRQUM1QyxLQUFLLEVBQUUsVUFBVTtLQUNsQjtDQUNPLENBQUE7QUFFVixTQUFnQixvQkFBb0IsQ0FBQyxLQUFhO0lBQ2hELE9BQVEsTUFBTSxDQUFDLE1BQU0sQ0FBQyw4QkFBc0IsQ0FBYyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQTtBQUM1RSxDQUFDIn0=
|
|
@@ -4,5 +4,6 @@ declare const _default: any;
|
|
|
4
4
|
export default _default;
|
|
5
5
|
export { CmsService };
|
|
6
6
|
export { loadCmsConfig, type CmsConfig, type CmsContentTypeDefinition } from "./config";
|
|
7
|
+
export { CORE_CMS_CONTENT_TYPES, CORE_CMS_CONTENT_TYPE_OPTIONS, isCoreCmsContentType, type CoreCmsContentType, type CmsContentType, } from "./content-types";
|
|
7
8
|
export { slugifyCms, normalizeCmsEntryInput, normalizeCmsTaxonomyInput, isCmsEntryPublic, publicCmsEntry, } from "./utils";
|
|
8
9
|
export { CMS_ENTRY_STATUSES, CMS_BODY_FORMATS, CMS_TAXONOMIES, CmsEntry, CmsTaxonomyTerm, } from "./models/cms";
|
|
@@ -3,7 +3,7 @@ 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.CmsTaxonomyTerm = exports.CmsEntry = exports.CMS_TAXONOMIES = exports.CMS_BODY_FORMATS = exports.CMS_ENTRY_STATUSES = exports.publicCmsEntry = exports.isCmsEntryPublic = exports.normalizeCmsTaxonomyInput = exports.normalizeCmsEntryInput = exports.slugifyCms = exports.loadCmsConfig = exports.CmsService = exports.CMS_MODULE = void 0;
|
|
6
|
+
exports.CmsTaxonomyTerm = exports.CmsEntry = exports.CMS_TAXONOMIES = exports.CMS_BODY_FORMATS = exports.CMS_ENTRY_STATUSES = exports.publicCmsEntry = exports.isCmsEntryPublic = exports.normalizeCmsTaxonomyInput = exports.normalizeCmsEntryInput = exports.slugifyCms = exports.isCoreCmsContentType = exports.CORE_CMS_CONTENT_TYPE_OPTIONS = exports.CORE_CMS_CONTENT_TYPES = exports.loadCmsConfig = exports.CmsService = exports.CMS_MODULE = void 0;
|
|
7
7
|
const utils_1 = require("@medusajs/framework/utils");
|
|
8
8
|
const service_1 = __importDefault(require("./service"));
|
|
9
9
|
exports.CmsService = service_1.default;
|
|
@@ -13,6 +13,10 @@ exports.default = (0, utils_1.Module)(exports.CMS_MODULE, {
|
|
|
13
13
|
});
|
|
14
14
|
var config_1 = require("./config");
|
|
15
15
|
Object.defineProperty(exports, "loadCmsConfig", { enumerable: true, get: function () { return config_1.loadCmsConfig; } });
|
|
16
|
+
var content_types_1 = require("./content-types");
|
|
17
|
+
Object.defineProperty(exports, "CORE_CMS_CONTENT_TYPES", { enumerable: true, get: function () { return content_types_1.CORE_CMS_CONTENT_TYPES; } });
|
|
18
|
+
Object.defineProperty(exports, "CORE_CMS_CONTENT_TYPE_OPTIONS", { enumerable: true, get: function () { return content_types_1.CORE_CMS_CONTENT_TYPE_OPTIONS; } });
|
|
19
|
+
Object.defineProperty(exports, "isCoreCmsContentType", { enumerable: true, get: function () { return content_types_1.isCoreCmsContentType; } });
|
|
16
20
|
var utils_2 = require("./utils");
|
|
17
21
|
Object.defineProperty(exports, "slugifyCms", { enumerable: true, get: function () { return utils_2.slugifyCms; } });
|
|
18
22
|
Object.defineProperty(exports, "normalizeCmsEntryInput", { enumerable: true, get: function () { return utils_2.normalizeCmsEntryInput; } });
|
|
@@ -25,4 +29,4 @@ Object.defineProperty(exports, "CMS_BODY_FORMATS", { enumerable: true, get: func
|
|
|
25
29
|
Object.defineProperty(exports, "CMS_TAXONOMIES", { enumerable: true, get: function () { return cms_1.CMS_TAXONOMIES; } });
|
|
26
30
|
Object.defineProperty(exports, "CmsEntry", { enumerable: true, get: function () { return cms_1.CmsEntry; } });
|
|
27
31
|
Object.defineProperty(exports, "CmsTaxonomyTerm", { enumerable: true, get: function () { return cms_1.CmsTaxonomyTerm; } });
|
|
28
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
32
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbW9kdWxlcy9jbXMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEscURBQWtEO0FBQ2xELHdEQUFrQztBQVF6QixxQkFSRixpQkFBVSxDQVFFO0FBTk4sUUFBQSxVQUFVLEdBQUcsS0FBSyxDQUFBO0FBRS9CLGtCQUFlLElBQUEsY0FBTSxFQUFDLGtCQUFVLEVBQUU7SUFDaEMsT0FBTyxFQUFFLGlCQUFVO0NBQ3BCLENBQUMsQ0FBQTtBQUdGLG1DQUF1RjtBQUE5RSx1R0FBQSxhQUFhLE9BQUE7QUFDdEIsaURBTXdCO0FBTHRCLHVIQUFBLHNCQUFzQixPQUFBO0FBQ3RCLDhIQUFBLDZCQUE2QixPQUFBO0FBQzdCLHFIQUFBLG9CQUFvQixPQUFBO0FBSXRCLGlDQU1nQjtBQUxkLG1HQUFBLFVBQVUsT0FBQTtBQUNWLCtHQUFBLHNCQUFzQixPQUFBO0FBQ3RCLGtIQUFBLHlCQUF5QixPQUFBO0FBQ3pCLHlHQUFBLGdCQUFnQixPQUFBO0FBQ2hCLHVHQUFBLGNBQWMsT0FBQTtBQUVoQixvQ0FNcUI7QUFMbkIseUdBQUEsa0JBQWtCLE9BQUE7QUFDbEIsdUdBQUEsZ0JBQWdCLE9BQUE7QUFDaEIscUdBQUEsY0FBYyxPQUFBO0FBQ2QsK0ZBQUEsUUFBUSxPQUFBO0FBQ1Isc0dBQUEsZUFBZSxPQUFBIn0=
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export type NewsletterConfig = {
|
|
2
|
+
enabled: boolean;
|
|
3
|
+
doubleOptIn: boolean;
|
|
4
|
+
emailEnabled: boolean;
|
|
5
|
+
consentVersion: string;
|
|
6
|
+
consentUrl: string | null;
|
|
7
|
+
confirmationTtlHours: number;
|
|
8
|
+
storefrontUrl: string;
|
|
9
|
+
confirmPath: string;
|
|
10
|
+
unsubscribePath: string;
|
|
11
|
+
};
|
|
12
|
+
export declare function loadNewsletterConfig(): NewsletterConfig;
|
|
13
|
+
export declare function newsletterConfirmUrl(token: string, config?: NewsletterConfig): string;
|
|
14
|
+
export declare function newsletterUnsubscribeUrl(token: string, config?: NewsletterConfig): string;
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.loadNewsletterConfig = loadNewsletterConfig;
|
|
4
|
+
exports.newsletterConfirmUrl = newsletterConfirmUrl;
|
|
5
|
+
exports.newsletterUnsubscribeUrl = newsletterUnsubscribeUrl;
|
|
6
|
+
function loadNewsletterConfig() {
|
|
7
|
+
return {
|
|
8
|
+
enabled: process.env.NEWSLETTER_ENABLED !== "false",
|
|
9
|
+
doubleOptIn: process.env.NEWSLETTER_DOUBLE_OPT_IN === "true",
|
|
10
|
+
emailEnabled: process.env.NEWSLETTER_EMAIL_ENABLED !== "false",
|
|
11
|
+
consentVersion: text(process.env.NEWSLETTER_CONSENT_VERSION) || "1",
|
|
12
|
+
consentUrl: nullable(process.env.NEWSLETTER_CONSENT_URL),
|
|
13
|
+
confirmationTtlHours: positiveNumber(process.env.NEWSLETTER_CONFIRM_TTL_HOURS, 72),
|
|
14
|
+
storefrontUrl: normalizeBaseUrl(process.env.STOREFRONT_URL || "http://localhost:3000"),
|
|
15
|
+
confirmPath: normalizePath(process.env.NEWSLETTER_CONFIRM_PATH || "/newsletter/confirm"),
|
|
16
|
+
unsubscribePath: normalizePath(process.env.NEWSLETTER_UNSUBSCRIBE_PATH || "/newsletter/unsubscribe"),
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
function newsletterConfirmUrl(token, config = loadNewsletterConfig()) {
|
|
20
|
+
return `${config.storefrontUrl}${config.confirmPath}?token=${encodeURIComponent(token)}`;
|
|
21
|
+
}
|
|
22
|
+
function newsletterUnsubscribeUrl(token, config = loadNewsletterConfig()) {
|
|
23
|
+
return `${config.storefrontUrl}${config.unsubscribePath}?token=${encodeURIComponent(token)}`;
|
|
24
|
+
}
|
|
25
|
+
function normalizeBaseUrl(value) {
|
|
26
|
+
try {
|
|
27
|
+
const url = new URL(value);
|
|
28
|
+
url.hash = "";
|
|
29
|
+
url.search = "";
|
|
30
|
+
return url.toString().replace(/\/$/, "");
|
|
31
|
+
}
|
|
32
|
+
catch {
|
|
33
|
+
return "http://localhost:3000";
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
function normalizePath(value) {
|
|
37
|
+
const raw = text(value) || "/";
|
|
38
|
+
return `/${raw.replace(/^\/+/, "")}`.replace(/\/+$/, "") || "/";
|
|
39
|
+
}
|
|
40
|
+
function positiveNumber(value, fallback) {
|
|
41
|
+
const parsed = Number(value);
|
|
42
|
+
return Number.isFinite(parsed) && parsed > 0 ? parsed : fallback;
|
|
43
|
+
}
|
|
44
|
+
function nullable(value) {
|
|
45
|
+
const result = text(value);
|
|
46
|
+
return result || null;
|
|
47
|
+
}
|
|
48
|
+
function text(value) {
|
|
49
|
+
return typeof value === "string" ? value.trim() : "";
|
|
50
|
+
}
|
|
51
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL21vZHVsZXMvbmV3c2xldHRlci9jb25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFZQSxvREFZQztBQUVELG9EQUVDO0FBRUQsNERBRUM7QUFwQkQsU0FBZ0Isb0JBQW9CO0lBQ2xDLE9BQU87UUFDTCxPQUFPLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxrQkFBa0IsS0FBSyxPQUFPO1FBQ25ELFdBQVcsRUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLHdCQUF3QixLQUFLLE1BQU07UUFDNUQsWUFBWSxFQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsd0JBQXdCLEtBQUssT0FBTztRQUM5RCxjQUFjLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsMEJBQTBCLENBQUMsSUFBSSxHQUFHO1FBQ25FLFVBQVUsRUFBRSxRQUFRLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxzQkFBc0IsQ0FBQztRQUN4RCxvQkFBb0IsRUFBRSxjQUFjLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyw0QkFBNEIsRUFBRSxFQUFFLENBQUM7UUFDbEYsYUFBYSxFQUFFLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsY0FBYyxJQUFJLHVCQUF1QixDQUFDO1FBQ3RGLFdBQVcsRUFBRSxhQUFhLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyx1QkFBdUIsSUFBSSxxQkFBcUIsQ0FBQztRQUN4RixlQUFlLEVBQUUsYUFBYSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsMkJBQTJCLElBQUkseUJBQXlCLENBQUM7S0FDckcsQ0FBQTtBQUNILENBQUM7QUFFRCxTQUFnQixvQkFBb0IsQ0FBQyxLQUFhLEVBQUUsTUFBTSxHQUFHLG9CQUFvQixFQUFFO0lBQ2pGLE9BQU8sR0FBRyxNQUFNLENBQUMsYUFBYSxHQUFHLE1BQU0sQ0FBQyxXQUFXLFVBQVUsa0JBQWtCLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQTtBQUMxRixDQUFDO0FBRUQsU0FBZ0Isd0JBQXdCLENBQUMsS0FBYSxFQUFFLE1BQU0sR0FBRyxvQkFBb0IsRUFBRTtJQUNyRixPQUFPLEdBQUcsTUFBTSxDQUFDLGFBQWEsR0FBRyxNQUFNLENBQUMsZUFBZSxVQUFVLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUE7QUFDOUYsQ0FBQztBQUVELFNBQVMsZ0JBQWdCLENBQUMsS0FBYTtJQUNyQyxJQUFJLENBQUM7UUFDSCxNQUFNLEdBQUcsR0FBRyxJQUFJLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQTtRQUMxQixHQUFHLENBQUMsSUFBSSxHQUFHLEVBQUUsQ0FBQTtRQUNiLEdBQUcsQ0FBQyxNQUFNLEdBQUcsRUFBRSxDQUFBO1FBQ2YsT0FBTyxHQUFHLENBQUMsUUFBUSxFQUFFLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQTtJQUMxQyxDQUFDO0lBQUMsTUFBTSxDQUFDO1FBQ1AsT0FBTyx1QkFBdUIsQ0FBQTtJQUNoQyxDQUFDO0FBQ0gsQ0FBQztBQUVELFNBQVMsYUFBYSxDQUFDLEtBQWE7SUFDbEMsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEdBQUcsQ0FBQTtJQUM5QixPQUFPLElBQUksR0FBRyxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxJQUFJLEdBQUcsQ0FBQTtBQUNqRSxDQUFDO0FBRUQsU0FBUyxjQUFjLENBQUMsS0FBeUIsRUFBRSxRQUFnQjtJQUNqRSxNQUFNLE1BQU0sR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUE7SUFDNUIsT0FBTyxNQUFNLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxJQUFJLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFBO0FBQ2xFLENBQUM7QUFFRCxTQUFTLFFBQVEsQ0FBQyxLQUF5QjtJQUN6QyxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUE7SUFDMUIsT0FBTyxNQUFNLElBQUksSUFBSSxDQUFBO0FBQ3ZCLENBQUM7QUFFRCxTQUFTLElBQUksQ0FBQyxLQUFjO0lBQzFCLE9BQU8sT0FBTyxLQUFLLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQTtBQUN0RCxDQUFDIn0=
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.newsletterConfirmationEmail = newsletterConfirmationEmail;
|
|
4
|
+
function newsletterConfirmationEmail(input) {
|
|
5
|
+
const subject = `Erősítsd meg a hírlevél-feliratkozást – ${input.brand}`;
|
|
6
|
+
const text = [
|
|
7
|
+
`Köszönjük, hogy feliratkoztál a ${input.brand} hírlevelére.`,
|
|
8
|
+
"",
|
|
9
|
+
"A feliratkozás megerősítéséhez nyisd meg ezt a linket:",
|
|
10
|
+
input.confirmUrl,
|
|
11
|
+
"",
|
|
12
|
+
"Ha nem te kezdeményezted a feliratkozást, nincs teendőd.",
|
|
13
|
+
"",
|
|
14
|
+
`Leiratkozás: ${input.unsubscribeUrl}`,
|
|
15
|
+
].join("\n");
|
|
16
|
+
const html = `
|
|
17
|
+
<div style="font-family:Arial,sans-serif;line-height:1.6;max-width:640px;margin:0 auto">
|
|
18
|
+
<h2>${escapeHtml(input.brand)} hírlevél</h2>
|
|
19
|
+
<p>Köszönjük, hogy feliratkoztál.</p>
|
|
20
|
+
<p><a href="${escapeAttribute(input.confirmUrl)}" style="display:inline-block;padding:12px 18px;background:#111;color:#fff;text-decoration:none;border-radius:6px">Feliratkozás megerősítése</a></p>
|
|
21
|
+
<p style="color:#666;font-size:13px">Ha nem te kezdeményezted a feliratkozást, nincs teendőd.</p>
|
|
22
|
+
<p style="color:#666;font-size:13px"><a href="${escapeAttribute(input.unsubscribeUrl)}">Leiratkozás</a></p>
|
|
23
|
+
</div>`;
|
|
24
|
+
return { subject, text, html };
|
|
25
|
+
}
|
|
26
|
+
function escapeHtml(value) {
|
|
27
|
+
return value.replace(/[&<>"']/g, (char) => ({
|
|
28
|
+
"&": "&",
|
|
29
|
+
"<": "<",
|
|
30
|
+
">": ">",
|
|
31
|
+
'"': """,
|
|
32
|
+
"'": "'",
|
|
33
|
+
})[char] || char);
|
|
34
|
+
}
|
|
35
|
+
function escapeAttribute(value) {
|
|
36
|
+
return escapeHtml(value);
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW1haWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbW9kdWxlcy9uZXdzbGV0dGVyL2VtYWlsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsa0VBMkJDO0FBM0JELFNBQWdCLDJCQUEyQixDQUFDLEtBSTNDO0lBQ0MsTUFBTSxPQUFPLEdBQUcsMkNBQTJDLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQTtJQUN4RSxNQUFNLElBQUksR0FBRztRQUNYLG1DQUFtQyxLQUFLLENBQUMsS0FBSyxlQUFlO1FBQzdELEVBQUU7UUFDRix3REFBd0Q7UUFDeEQsS0FBSyxDQUFDLFVBQVU7UUFDaEIsRUFBRTtRQUNGLDBEQUEwRDtRQUMxRCxFQUFFO1FBQ0YsZ0JBQWdCLEtBQUssQ0FBQyxjQUFjLEVBQUU7S0FDdkMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUE7SUFFWixNQUFNLElBQUksR0FBRzs7WUFFSCxVQUFVLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQzs7b0JBRWYsZUFBZSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUM7O3NEQUVDLGVBQWUsQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDO1dBQ2hGLENBQUE7SUFFVCxPQUFPLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBQTtBQUNoQyxDQUFDO0FBRUQsU0FBUyxVQUFVLENBQUMsS0FBYTtJQUMvQixPQUFPLEtBQUssQ0FBQyxPQUFPLENBQUMsVUFBVSxFQUFFLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQzFDLEdBQUcsRUFBRSxPQUFPO1FBQ1osR0FBRyxFQUFFLE1BQU07UUFDWCxHQUFHLEVBQUUsTUFBTTtRQUNYLEdBQUcsRUFBRSxRQUFRO1FBQ2IsR0FBRyxFQUFFLE9BQU87S0FDYixDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLENBQUE7QUFDbkIsQ0FBQztBQUVELFNBQVMsZUFBZSxDQUFDLEtBQWE7SUFDcEMsT0FBTyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUE7QUFDMUIsQ0FBQyJ9
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export declare const NEWSLETTER_EVENTS: {
|
|
2
|
+
readonly pending: "newsletter.subscription.pending";
|
|
3
|
+
readonly subscribed: "newsletter.subscription.subscribed";
|
|
4
|
+
readonly unsubscribed: "newsletter.subscription.unsubscribed";
|
|
5
|
+
};
|
|
6
|
+
type ResolveContainer = {
|
|
7
|
+
resolve: (key: string) => unknown;
|
|
8
|
+
};
|
|
9
|
+
export declare function emitNewsletterEvent(container: ResolveContainer, name: (typeof NEWSLETTER_EVENTS)[keyof typeof NEWSLETTER_EVENTS], subscriber: Record<string, any>): Promise<void>;
|
|
10
|
+
export {};
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.NEWSLETTER_EVENTS = void 0;
|
|
4
|
+
exports.emitNewsletterEvent = emitNewsletterEvent;
|
|
5
|
+
const utils_1 = require("@medusajs/framework/utils");
|
|
6
|
+
exports.NEWSLETTER_EVENTS = {
|
|
7
|
+
pending: "newsletter.subscription.pending",
|
|
8
|
+
subscribed: "newsletter.subscription.subscribed",
|
|
9
|
+
unsubscribed: "newsletter.subscription.unsubscribed",
|
|
10
|
+
};
|
|
11
|
+
async function emitNewsletterEvent(container, name, subscriber) {
|
|
12
|
+
try {
|
|
13
|
+
const eventBus = container.resolve(utils_1.Modules.EVENT_BUS);
|
|
14
|
+
await eventBus.emit({
|
|
15
|
+
name,
|
|
16
|
+
data: {
|
|
17
|
+
id: subscriber.id,
|
|
18
|
+
email: subscriber.email,
|
|
19
|
+
status: subscriber.status,
|
|
20
|
+
source: subscriber.source || null,
|
|
21
|
+
consent_version: subscriber.consent_version,
|
|
22
|
+
consent_at: subscriber.consent_at || null,
|
|
23
|
+
subscribed_at: subscriber.subscribed_at || null,
|
|
24
|
+
unsubscribed_at: subscriber.unsubscribed_at || null,
|
|
25
|
+
utm: subscriber.utm || null,
|
|
26
|
+
},
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
catch {
|
|
30
|
+
// Provider synchronization is downstream work. A missing/unavailable event
|
|
31
|
+
// bus must not roll back the subscriber consent lifecycle itself.
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL21vZHVsZXMvbmV3c2xldHRlci9ldmVudHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBZ0JBLGtEQXlCQztBQXpDRCxxREFBbUQ7QUFFdEMsUUFBQSxpQkFBaUIsR0FBRztJQUMvQixPQUFPLEVBQUUsaUNBQWlDO0lBQzFDLFVBQVUsRUFBRSxvQ0FBb0M7SUFDaEQsWUFBWSxFQUFFLHNDQUFzQztDQUM1QyxDQUFBO0FBVUgsS0FBSyxVQUFVLG1CQUFtQixDQUN2QyxTQUEyQixFQUMzQixJQUFnRSxFQUNoRSxVQUErQjtJQUUvQixJQUFJLENBQUM7UUFDSCxNQUFNLFFBQVEsR0FBRyxTQUFTLENBQUMsT0FBTyxDQUFDLGVBQU8sQ0FBQyxTQUFTLENBQWEsQ0FBQTtRQUNqRSxNQUFNLFFBQVEsQ0FBQyxJQUFJLENBQUM7WUFDbEIsSUFBSTtZQUNKLElBQUksRUFBRTtnQkFDSixFQUFFLEVBQUUsVUFBVSxDQUFDLEVBQUU7Z0JBQ2pCLEtBQUssRUFBRSxVQUFVLENBQUMsS0FBSztnQkFDdkIsTUFBTSxFQUFFLFVBQVUsQ0FBQyxNQUFNO2dCQUN6QixNQUFNLEVBQUUsVUFBVSxDQUFDLE1BQU0sSUFBSSxJQUFJO2dCQUNqQyxlQUFlLEVBQUUsVUFBVSxDQUFDLGVBQWU7Z0JBQzNDLFVBQVUsRUFBRSxVQUFVLENBQUMsVUFBVSxJQUFJLElBQUk7Z0JBQ3pDLGFBQWEsRUFBRSxVQUFVLENBQUMsYUFBYSxJQUFJLElBQUk7Z0JBQy9DLGVBQWUsRUFBRSxVQUFVLENBQUMsZUFBZSxJQUFJLElBQUk7Z0JBQ25ELEdBQUcsRUFBRSxVQUFVLENBQUMsR0FBRyxJQUFJLElBQUk7YUFDNUI7U0FDRixDQUFDLENBQUE7SUFDSixDQUFDO0lBQUMsTUFBTSxDQUFDO1FBQ1AsMkVBQTJFO1FBQzNFLGtFQUFrRTtJQUNwRSxDQUFDO0FBQ0gsQ0FBQyJ9
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import NewsletterService from "./service";
|
|
2
|
+
export declare const NEWSLETTER_MODULE = "newsletter";
|
|
3
|
+
declare const _default: any;
|
|
4
|
+
export default _default;
|
|
5
|
+
export { NewsletterService };
|
|
6
|
+
export { NEWSLETTER_STATUSES } from "./models/newsletter-subscriber";
|
|
7
|
+
export { loadNewsletterConfig, newsletterConfirmUrl, newsletterUnsubscribeUrl, type NewsletterConfig, } from "./config";
|
|
8
|
+
export { createNewsletterToken, hashNewsletterToken, createNewsletterUnsubscribeToken, newsletterSubscriberIdFromUnsubscribeToken, verifyNewsletterUnsubscribeToken, normalizeNewsletterEmail, normalizeNewsletterUtm, } from "./token";
|
|
9
|
+
export { newsletterConfirmationEmail } from "./email";
|
|
10
|
+
export { NEWSLETTER_EVENTS, emitNewsletterEvent } from "./events";
|
|
@@ -0,0 +1,33 @@
|
|
|
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.emitNewsletterEvent = exports.NEWSLETTER_EVENTS = exports.newsletterConfirmationEmail = exports.normalizeNewsletterUtm = exports.normalizeNewsletterEmail = exports.verifyNewsletterUnsubscribeToken = exports.newsletterSubscriberIdFromUnsubscribeToken = exports.createNewsletterUnsubscribeToken = exports.hashNewsletterToken = exports.createNewsletterToken = exports.newsletterUnsubscribeUrl = exports.newsletterConfirmUrl = exports.loadNewsletterConfig = exports.NEWSLETTER_STATUSES = exports.NewsletterService = exports.NEWSLETTER_MODULE = void 0;
|
|
7
|
+
const utils_1 = require("@medusajs/framework/utils");
|
|
8
|
+
const service_1 = __importDefault(require("./service"));
|
|
9
|
+
exports.NewsletterService = service_1.default;
|
|
10
|
+
exports.NEWSLETTER_MODULE = "newsletter";
|
|
11
|
+
exports.default = (0, utils_1.Module)(exports.NEWSLETTER_MODULE, {
|
|
12
|
+
service: service_1.default,
|
|
13
|
+
});
|
|
14
|
+
var newsletter_subscriber_1 = require("./models/newsletter-subscriber");
|
|
15
|
+
Object.defineProperty(exports, "NEWSLETTER_STATUSES", { enumerable: true, get: function () { return newsletter_subscriber_1.NEWSLETTER_STATUSES; } });
|
|
16
|
+
var config_1 = require("./config");
|
|
17
|
+
Object.defineProperty(exports, "loadNewsletterConfig", { enumerable: true, get: function () { return config_1.loadNewsletterConfig; } });
|
|
18
|
+
Object.defineProperty(exports, "newsletterConfirmUrl", { enumerable: true, get: function () { return config_1.newsletterConfirmUrl; } });
|
|
19
|
+
Object.defineProperty(exports, "newsletterUnsubscribeUrl", { enumerable: true, get: function () { return config_1.newsletterUnsubscribeUrl; } });
|
|
20
|
+
var token_1 = require("./token");
|
|
21
|
+
Object.defineProperty(exports, "createNewsletterToken", { enumerable: true, get: function () { return token_1.createNewsletterToken; } });
|
|
22
|
+
Object.defineProperty(exports, "hashNewsletterToken", { enumerable: true, get: function () { return token_1.hashNewsletterToken; } });
|
|
23
|
+
Object.defineProperty(exports, "createNewsletterUnsubscribeToken", { enumerable: true, get: function () { return token_1.createNewsletterUnsubscribeToken; } });
|
|
24
|
+
Object.defineProperty(exports, "newsletterSubscriberIdFromUnsubscribeToken", { enumerable: true, get: function () { return token_1.newsletterSubscriberIdFromUnsubscribeToken; } });
|
|
25
|
+
Object.defineProperty(exports, "verifyNewsletterUnsubscribeToken", { enumerable: true, get: function () { return token_1.verifyNewsletterUnsubscribeToken; } });
|
|
26
|
+
Object.defineProperty(exports, "normalizeNewsletterEmail", { enumerable: true, get: function () { return token_1.normalizeNewsletterEmail; } });
|
|
27
|
+
Object.defineProperty(exports, "normalizeNewsletterUtm", { enumerable: true, get: function () { return token_1.normalizeNewsletterUtm; } });
|
|
28
|
+
var email_1 = require("./email");
|
|
29
|
+
Object.defineProperty(exports, "newsletterConfirmationEmail", { enumerable: true, get: function () { return email_1.newsletterConfirmationEmail; } });
|
|
30
|
+
var events_1 = require("./events");
|
|
31
|
+
Object.defineProperty(exports, "NEWSLETTER_EVENTS", { enumerable: true, get: function () { return events_1.NEWSLETTER_EVENTS; } });
|
|
32
|
+
Object.defineProperty(exports, "emitNewsletterEvent", { enumerable: true, get: function () { return events_1.emitNewsletterEvent; } });
|
|
33
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbW9kdWxlcy9uZXdzbGV0dGVyL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLHFEQUFrRDtBQUNsRCx3REFBeUM7QUFRaEMsNEJBUkYsaUJBQWlCLENBUUU7QUFOYixRQUFBLGlCQUFpQixHQUFHLFlBQVksQ0FBQTtBQUU3QyxrQkFBZSxJQUFBLGNBQU0sRUFBQyx5QkFBaUIsRUFBRTtJQUN2QyxPQUFPLEVBQUUsaUJBQWlCO0NBQzNCLENBQUMsQ0FBQTtBQUdGLHdFQUFvRTtBQUEzRCw0SEFBQSxtQkFBbUIsT0FBQTtBQUM1QixtQ0FLaUI7QUFKZiw4R0FBQSxvQkFBb0IsT0FBQTtBQUNwQiw4R0FBQSxvQkFBb0IsT0FBQTtBQUNwQixrSEFBQSx3QkFBd0IsT0FBQTtBQUcxQixpQ0FRZ0I7QUFQZCw4R0FBQSxxQkFBcUIsT0FBQTtBQUNyQiw0R0FBQSxtQkFBbUIsT0FBQTtBQUNuQix5SEFBQSxnQ0FBZ0MsT0FBQTtBQUNoQyxtSUFBQSwwQ0FBMEMsT0FBQTtBQUMxQyx5SEFBQSxnQ0FBZ0MsT0FBQTtBQUNoQyxpSEFBQSx3QkFBd0IsT0FBQTtBQUN4QiwrR0FBQSxzQkFBc0IsT0FBQTtBQUV4QixpQ0FBcUQ7QUFBNUMsb0hBQUEsMkJBQTJCLE9BQUE7QUFDcEMsbUNBQWlFO0FBQXhELDJHQUFBLGlCQUFpQixPQUFBO0FBQUUsNkdBQUEsbUJBQW1CLE9BQUEifQ==
|