@hartl-services/medusa-base 0.4.0 → 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.medusa/server/src/admin/index.js +1657 -111
- package/.medusa/server/src/admin/index.mjs +1647 -101
- package/.medusa/server/src/api/admin/email/messages/[id]/resends/route.js +24 -0
- package/.medusa/server/src/api/admin/email/messages/[id]/route.js +12 -0
- package/.medusa/server/src/api/admin/email/messages/route.js +12 -0
- package/.medusa/server/src/api/admin/email/terms-versions/[id]/download/route.js +16 -0
- package/.medusa/server/src/api/admin/email/terms-versions/route.js +47 -0
- package/.medusa/server/src/api/admin/orders/[id]/documents/[document_id]/download/route.js +21 -0
- package/.medusa/server/src/api/admin/orders/[id]/documents/[document_id]/regenerate/route.js +38 -0
- package/.medusa/server/src/api/admin/orders/[id]/documents/regenerate/route.js +32 -0
- package/.medusa/server/src/api/admin/orders/[id]/documents/route.js +36 -0
- package/.medusa/server/src/api/admin/orders/[id]/packing-lists/[fulfillment_id]/download/route.js +24 -0
- package/.medusa/server/src/api/admin/orders/[id]/packing-lists/[fulfillment_id]/retry/route.js +44 -0
- package/.medusa/server/src/api/admin/orders/[id]/packing-lists/route.js +82 -0
- package/.medusa/server/src/api/document-download-response.js +16 -0
- package/.medusa/server/src/api/document-response.js +23 -0
- package/.medusa/server/src/api/files/[asset]/route.js +24 -0
- package/.medusa/server/src/api/files/file-response.js +43 -0
- package/.medusa/server/src/api/files/gateway-options.js +31 -0
- package/.medusa/server/src/api/files/private/[token]/route.js +29 -0
- package/.medusa/server/src/api/files/upload/[token]/route.js +66 -0
- package/.medusa/server/src/api/middlewares.js +168 -1
- package/.medusa/server/src/api/packing-list-response.js +22 -0
- package/.medusa/server/src/api/route.js +27 -0
- package/.medusa/server/src/api/store/documents/[id]/download/route.js +21 -0
- package/.medusa/server/src/api/store/documents/[id]/route.js +15 -0
- package/.medusa/server/src/api/store/documents/route.js +11 -0
- package/.medusa/server/src/api/terms-download-response.js +12 -0
- package/.medusa/server/src/documents/config/index.js +18 -0
- package/.medusa/server/src/documents/paths/documents.js +6 -0
- package/.medusa/server/src/documents/paths/index.js +18 -0
- package/.medusa/server/src/documents/plugin-features.js +38 -0
- package/.medusa/server/src/documents/schemas/documents.js +18 -0
- package/.medusa/server/src/documents/schemas/index.js +18 -0
- package/.medusa/server/src/documents/scripts/verify-documents-file-storage.js +55 -0
- package/.medusa/server/src/documents/templates/financial-document.js +160 -0
- package/.medusa/server/src/documents/templates/format.js +73 -0
- package/.medusa/server/src/documents/templates/html-factory.js +42 -0
- package/.medusa/server/src/documents/templates/html-utils.js +23 -0
- package/.medusa/server/src/documents/templates/layout.js +142 -0
- package/.medusa/server/src/documents/templates/packing-list.js +52 -0
- package/.medusa/server/src/documents/types/admin-api.js +3 -0
- package/.medusa/server/src/documents/types/document-summary.js +3 -0
- package/.medusa/server/src/documents/types/documents.js +3 -0
- package/.medusa/server/src/documents/types/html-factory.js +6 -0
- package/.medusa/server/src/documents/types/index.js +22 -0
- package/.medusa/server/src/documents/types/store-api.js +3 -0
- package/.medusa/server/src/documents/utils/document-merchant.js +22 -0
- package/.medusa/server/src/documents/utils/document-render-settings.js +59 -0
- package/.medusa/server/src/documents/utils/html-to-pdf.js +61 -0
- package/.medusa/server/src/documents/utils/private-file-storage.js +64 -0
- package/.medusa/server/src/documents/utils/resolve-services.js +7 -0
- package/.medusa/server/src/email/application/handle-invite-event.js +318 -0
- package/.medusa/server/src/email/application/handle-password-reset-event.js +366 -0
- package/.medusa/server/src/email/config/index.js +84 -0
- package/.medusa/server/src/email/config/notification-module.js +20 -0
- package/.medusa/server/src/email/domain/business-keys.js +50 -0
- package/.medusa/server/src/email/domain/documents-fact-fingerprint.js +7 -0
- package/.medusa/server/src/email/domain/event-schemas.js +36 -0
- package/.medusa/server/src/email/domain/failure-classification.js +53 -0
- package/.medusa/server/src/email/domain/order-summary.js +103 -0
- package/.medusa/server/src/email/domain/refund-summary.js +43 -0
- package/.medusa/server/src/email/domain/return-summary.js +118 -0
- package/.medusa/server/src/email/domain/shipment-summary.js +74 -0
- package/.medusa/server/src/email/plugin-features.js +39 -0
- package/.medusa/server/src/email/rendering/default-templates.js +719 -0
- package/.medusa/server/src/email/rendering/load-email-shop-details.js +36 -0
- package/.medusa/server/src/email/rendering/render-email.js +50 -0
- package/.medusa/server/src/email/rendering/resolve-shop-configuration.js +67 -0
- package/.medusa/server/src/email/types/email-kinds.js +18 -0
- package/.medusa/server/src/email/types/index.js +21 -0
- package/.medusa/server/src/email/types/shop-configuration.js +3 -0
- package/.medusa/server/src/email/types/smtp-configuration.js +3 -0
- package/.medusa/server/src/email/types/template-data.js +232 -0
- package/.medusa/server/src/files/config/index.js +256 -0
- package/.medusa/server/src/files/gateway/index.js +115 -0
- package/.medusa/server/src/files/types/index.js +6 -0
- package/.medusa/server/src/files/types/public.js +6 -0
- package/.medusa/server/src/jobs/document-fact-publication-reconciliation.js +18 -0
- package/.medusa/server/src/jobs/document-resolution-reconciliation.js +20 -0
- package/.medusa/server/src/jobs/packing-list-reconciliation.js +49 -0
- package/.medusa/server/src/jobs/reconcile-email-attempts.js +63 -0
- package/.medusa/server/src/jobs/reconcile-pending-email-messages.js +41 -0
- package/.medusa/server/src/jobs/retry-email-messages.js +27 -0
- package/.medusa/server/src/migration-scripts/dismiss-orphaned-cart-promotion-links.js +26 -0
- package/.medusa/server/src/modules/documents/domain/cancellation-snapshot.js +97 -0
- package/.medusa/server/src/modules/documents/domain/document-number.js +36 -0
- package/.medusa/server/src/modules/documents/domain/document-resolution.js +24 -0
- package/.medusa/server/src/modules/documents/domain/issuance-rules.js +37 -0
- package/.medusa/server/src/modules/documents/domain/merchant.js +86 -0
- package/.medusa/server/src/modules/documents/domain/options.js +40 -0
- package/.medusa/server/src/modules/documents/domain/packing-list.js +90 -0
- package/.medusa/server/src/modules/documents/domain/snapshot-normalization.js +17 -0
- package/.medusa/server/src/modules/documents/domain/tax-breakdown.js +66 -0
- package/.medusa/server/src/modules/documents/index.js +15 -0
- package/.medusa/server/src/modules/documents/loaders/assert-private-file-storage.js +20 -0
- package/.medusa/server/src/modules/documents/migrations/Migration20260827061749.js +75 -0
- package/.medusa/server/src/modules/documents/migrations/Migration20260830111207.js +28 -0
- package/.medusa/server/src/modules/documents/models/document-artifact.js +25 -0
- package/.medusa/server/src/modules/documents/models/document-number-sequence.js +29 -0
- package/.medusa/server/src/modules/documents/models/document.js +82 -0
- package/.medusa/server/src/modules/documents/models/order-cancellation-resolution.js +51 -0
- package/.medusa/server/src/modules/documents/models/packing-list-revision.js +36 -0
- package/.medusa/server/src/modules/documents/models/packing-list.js +27 -0
- package/.medusa/server/src/modules/documents/models/refund-document-resolution.js +66 -0
- package/.medusa/server/src/modules/documents/models/shipment-invoice-assignment.js +51 -0
- package/.medusa/server/src/modules/documents/models/shipment-invoice-coordinator.js +44 -0
- package/.medusa/server/src/modules/documents/service.js +1701 -0
- package/.medusa/server/src/modules/email/domain/attachment.js +25 -0
- package/.medusa/server/src/modules/email/domain/message-state.js +69 -0
- package/.medusa/server/src/modules/email/index.js +13 -0
- package/.medusa/server/src/modules/email/migrations/Migration20260826173422.js +32 -0
- package/.medusa/server/src/modules/email/migrations/Migration20260827172945.js +16 -0
- package/.medusa/server/src/modules/email/migrations/Migration20260827194804.js +22 -0
- package/.medusa/server/src/modules/email/migrations/Migration20260906195205.js +16 -0
- package/.medusa/server/src/modules/email/models/email-attempt.js +56 -0
- package/.medusa/server/src/modules/email/models/email-message.js +71 -0
- package/.medusa/server/src/modules/email/models/email-terms-version.js +37 -0
- package/.medusa/server/src/modules/email/service.js +1285 -0
- package/.medusa/server/src/modules/plugin-features/domain/plugin-settings.js +4 -3
- package/.medusa/server/src/providers/s3-cache/cache/atomic-write.js +25 -0
- package/.medusa/server/src/providers/s3-cache/cache/cache-manager.js +115 -0
- package/.medusa/server/src/providers/s3-cache/cache/keyed-lock.js +28 -0
- package/.medusa/server/src/providers/s3-cache/index.js +8 -0
- package/.medusa/server/src/providers/s3-cache/object-key.js +53 -0
- package/.medusa/server/src/providers/s3-cache/s3-cache-file.js +229 -0
- package/.medusa/server/src/providers/s3-cache/s3-object-store.js +86 -0
- package/.medusa/server/src/providers/smtp/index.js +8 -0
- package/.medusa/server/src/providers/smtp/service.js +236 -0
- package/.medusa/server/src/providers/smtp/types.js +11 -0
- package/.medusa/server/src/public/config.js +186 -0
- package/.medusa/server/src/public/descriptor.js +3 -1
- package/.medusa/server/src/public/gateway.js +19 -0
- package/.medusa/server/src/public/instrumentation.js +56 -0
- package/.medusa/server/src/public/shop-config.js +12 -0
- package/.medusa/server/src/public/shop-master-data.js +2 -2
- package/.medusa/server/src/public/shop-types.js +24 -0
- package/.medusa/server/src/shop-config/build-food-shop-config.js +252 -0
- package/.medusa/server/src/shop-config/options.js +75 -0
- package/.medusa/server/src/subscribers/affiliate-consignment-reminder-due.js +26 -0
- package/.medusa/server/src/subscribers/documents-order-canceled.js +24 -0
- package/.medusa/server/src/subscribers/documents-order-cancellation-ready.js +26 -0
- package/.medusa/server/src/subscribers/documents-refund-ready.js +24 -0
- package/.medusa/server/src/subscribers/documents-shipment-created.js +36 -0
- package/.medusa/server/src/subscribers/documents-shipment-invoice-assignment-decided.js +26 -0
- package/.medusa/server/src/subscribers/email-order-canceled.js +28 -0
- package/.medusa/server/src/subscribers/email-shipment-created.js +32 -0
- package/.medusa/server/src/subscribers/order-placed.js +27 -0
- package/.medusa/server/src/subscribers/packing-list-allocation-revised.js +32 -0
- package/.medusa/server/src/subscribers/packing-list-fulfillment-canceled.js +54 -0
- package/.medusa/server/src/subscribers/packing-list-fulfillment-created.js +31 -0
- package/.medusa/server/src/subscribers/password-reset.js +23 -0
- package/.medusa/server/src/subscribers/payment-refunded.js +38 -0
- package/.medusa/server/src/subscribers/return-received.js +27 -0
- package/.medusa/server/src/subscribers/return-requested.js +27 -0
- package/.medusa/server/src/subscribers/user-invite.js +23 -0
- package/.medusa/server/src/utils/cart-promotion-links.js +101 -0
- package/.medusa/server/src/workflows/documents/issue-cancellation-after-refund.js +246 -0
- package/.medusa/server/src/workflows/documents/issue-document.js +165 -0
- package/.medusa/server/src/workflows/documents/issue-invoice-after-shipment.js +521 -0
- package/.medusa/server/src/workflows/documents/issue-packing-list.js +390 -0
- package/.medusa/server/src/workflows/documents/publish-document-facts.js +53 -0
- package/.medusa/server/src/workflows/documents/reconcile-document-resolutions.js +48 -0
- package/.medusa/server/src/workflows/documents/reconcile-order-cancellation.js +92 -0
- package/.medusa/server/src/workflows/documents/regenerate-issued-document.js +61 -0
- package/.medusa/server/src/workflows/email/dispatch-email-message.js +301 -0
- package/.medusa/server/src/workflows/email/documents-required-facts.js +30 -0
- package/.medusa/server/src/workflows/email/prepare-affiliate-reminder-email.js +58 -0
- package/.medusa/server/src/workflows/email/prepare-order-canceled-email.js +102 -0
- package/.medusa/server/src/workflows/email/prepare-order-received-email.js +82 -0
- package/.medusa/server/src/workflows/email/prepare-refund-email.js +71 -0
- package/.medusa/server/src/workflows/email/prepare-return-email.js +136 -0
- package/.medusa/server/src/workflows/email/prepare-shipment-email.js +115 -0
- package/.medusa/server/src/workflows/email/retry-email-messages.js +31 -0
- package/.medusa/server/src/workflows/hooks/dismiss-deleted-promotion-cart-links.js +23 -0
- package/README.md +1777 -8
- package/dist/admin-components/features/plugin-features/components/ImageSettingInput.d.ts +15 -0
- package/dist/admin-components/features/plugin-features/components/ImageSettingInput.js +42 -0
- package/dist/admin-components/features/plugin-features/components/PluginSettingsForm.js +4 -2
- package/dist/admin-components/features/plugin-features/hooks/usePluginFeatureEnabled.d.ts +1 -1
- package/dist/admin-components/features/plugin-features/hooks/usePluginFeatures.d.ts +4 -4
- package/dist/admin-components/features/plugin-features/hooks/usePluginSettingsForm.d.ts +1 -1
- package/dist/admin-components/features/plugin-features/lib/image-upload.d.ts +6 -0
- package/dist/admin-components/features/plugin-features/lib/image-upload.js +17 -0
- package/dist/admin-components/features/plugin-features/lib/plugin-features-admin-client.d.ts +4 -4
- package/dist/admin-components/i18n/texts.d.ts +6 -0
- package/dist/admin-components/i18n/texts.js +6 -0
- package/dist/documents/config/index.d.ts +11 -0
- package/dist/documents/config/index.js +17 -0
- package/dist/documents/templates/financial-document.d.ts +3 -0
- package/dist/documents/templates/financial-document.js +159 -0
- package/dist/documents/templates/format.d.ts +30 -0
- package/dist/documents/templates/format.js +72 -0
- package/dist/documents/templates/html-factory.d.ts +15 -0
- package/dist/documents/templates/html-factory.js +41 -0
- package/dist/documents/templates/html-utils.d.ts +8 -0
- package/dist/documents/templates/html-utils.js +22 -0
- package/dist/documents/templates/layout.d.ts +35 -0
- package/dist/documents/templates/layout.js +141 -0
- package/dist/documents/templates/packing-list.d.ts +3 -0
- package/dist/documents/templates/packing-list.js +51 -0
- package/dist/documents/types/admin-api.d.ts +1 -0
- package/dist/documents/types/admin-api.js +2 -0
- package/dist/documents/types/document-summary.d.ts +1 -0
- package/dist/documents/types/document-summary.js +2 -0
- package/dist/documents/types/documents.d.ts +191 -0
- package/dist/documents/types/documents.js +2 -0
- package/dist/documents/types/html-factory.d.ts +8 -0
- package/dist/documents/types/html-factory.js +5 -0
- package/dist/documents/types/index.d.ts +5 -0
- package/dist/documents/types/index.js +21 -0
- package/dist/documents/types/store-api.d.ts +1 -0
- package/dist/documents/types/store-api.js +2 -0
- package/dist/email/config/index.d.ts +17 -0
- package/dist/email/config/index.js +83 -0
- package/dist/email/config/notification-module.d.ts +22 -0
- package/dist/email/config/notification-module.js +19 -0
- package/dist/email/types/email-kinds.d.ts +15 -0
- package/dist/email/types/email-kinds.js +17 -0
- package/dist/email/types/index.d.ts +4 -0
- package/dist/email/types/index.js +20 -0
- package/dist/email/types/shop-configuration.d.ts +68 -0
- package/dist/email/types/shop-configuration.js +2 -0
- package/dist/email/types/smtp-configuration.d.ts +9 -0
- package/dist/email/types/smtp-configuration.js +2 -0
- package/dist/email/types/template-data.d.ts +609 -0
- package/dist/email/types/template-data.js +231 -0
- package/dist/files/config/index.d.ts +32 -0
- package/dist/files/config/index.js +255 -0
- package/dist/files/gateway/index.d.ts +30 -0
- package/dist/files/gateway/index.js +114 -0
- package/dist/files/types/index.d.ts +2 -0
- package/dist/files/types/index.js +5 -0
- package/dist/files/types/public.d.ts +90 -0
- package/dist/files/types/public.js +5 -0
- package/dist/modules/documents/domain/merchant.d.ts +22 -0
- package/dist/modules/documents/domain/merchant.js +85 -0
- package/dist/modules/documents/domain/options.d.ts +34 -0
- package/dist/modules/documents/domain/options.js +39 -0
- package/dist/public/config.d.ts +59 -0
- package/dist/public/config.js +185 -0
- package/dist/public/descriptor.js +2 -0
- package/dist/public/gateway.d.ts +2 -0
- package/dist/public/gateway.js +18 -0
- package/dist/public/instrumentation.d.ts +12 -0
- package/dist/public/instrumentation.js +55 -0
- package/dist/public/shop-config.d.ts +8 -0
- package/dist/public/shop-config.js +11 -0
- package/dist/public/shop-master-data.d.ts +1 -1
- package/dist/public/shop-master-data.js +1 -1
- package/dist/public/shop-types.d.ts +7 -0
- package/dist/public/shop-types.js +23 -0
- package/dist/public/types.d.ts +19 -2
- package/dist/shop-config/build-food-shop-config.d.ts +44 -0
- package/dist/shop-config/build-food-shop-config.js +251 -0
- package/dist/shop-config/options.d.ts +48 -0
- package/dist/shop-config/options.js +74 -0
- package/package.json +48 -5
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.loadEmailShopDetails = void 0;
|
|
4
|
+
const utils_1 = require("@medusajs/framework/utils");
|
|
5
|
+
const public_1 = require("../../public");
|
|
6
|
+
const plugin_features_1 = require("../plugin-features");
|
|
7
|
+
const warn = (container, message) => {
|
|
8
|
+
try {
|
|
9
|
+
container.resolve(utils_1.ContainerRegistrationKeys.LOGGER).warn(message);
|
|
10
|
+
}
|
|
11
|
+
catch {
|
|
12
|
+
// No logger registered (e.g. unit tests); nothing else to do.
|
|
13
|
+
}
|
|
14
|
+
};
|
|
15
|
+
/**
|
|
16
|
+
* The shop master data and the E-Mail logo for the layout of one mail.
|
|
17
|
+
* Branding must never block a mail: each failed read renders without its
|
|
18
|
+
* part (company details or logo).
|
|
19
|
+
*/
|
|
20
|
+
const loadEmailShopDetails = async (container) => {
|
|
21
|
+
const [masterData, logo] = await Promise.all([
|
|
22
|
+
(0, public_1.getShopMasterData)(container).then(({ values }) => values, () => {
|
|
23
|
+
warn(container, "Email: shop master data unavailable; rendering without it.");
|
|
24
|
+
return {};
|
|
25
|
+
}),
|
|
26
|
+
(0, public_1.getPluginSettings)(container, plugin_features_1.emailPluginFeatures).then(({ values }) => values.logo, () => {
|
|
27
|
+
warn(container, "Email: logo setting unavailable; rendering without it.");
|
|
28
|
+
return undefined;
|
|
29
|
+
}),
|
|
30
|
+
]);
|
|
31
|
+
return typeof logo === "string" && logo
|
|
32
|
+
? { ...masterData, logo }
|
|
33
|
+
: masterData;
|
|
34
|
+
};
|
|
35
|
+
exports.loadEmailShopDetails = loadEmailShopDetails;
|
|
36
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9hZC1lbWFpbC1zaG9wLWRldGFpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvZW1haWwvcmVuZGVyaW5nL2xvYWQtZW1haWwtc2hvcC1kZXRhaWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUNBLHFEQUFzRTtBQUV0RSx5Q0FBb0U7QUFDcEUsd0RBQXlEO0FBR3pELE1BQU0sSUFBSSxHQUFHLENBQUMsU0FBMEIsRUFBRSxPQUFlLEVBQVEsRUFBRTtJQUNqRSxJQUFJLENBQUM7UUFDSCxTQUFTLENBQUMsT0FBTyxDQUFTLGlDQUF5QixDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUM1RSxDQUFDO0lBQUMsTUFBTSxDQUFDO1FBQ1AsOERBQThEO0lBQ2hFLENBQUM7QUFDSCxDQUFDLENBQUM7QUFFRjs7OztHQUlHO0FBQ0ksTUFBTSxvQkFBb0IsR0FBRyxLQUFLLEVBQ3ZDLFNBQTBCLEVBQ0MsRUFBRTtJQUM3QixNQUFNLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxHQUFHLE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FBQztRQUMzQyxJQUFBLDBCQUFpQixFQUFDLFNBQVMsQ0FBQyxDQUFDLElBQUksQ0FDL0IsQ0FBQyxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUUsQ0FBQyxNQUFNLEVBQ3RCLEdBQUcsRUFBRTtZQUNILElBQUksQ0FDRixTQUFTLEVBQ1QsNERBQTRELENBQzdELENBQUM7WUFDRixPQUFPLEVBQUUsQ0FBQztRQUNaLENBQUMsQ0FDRjtRQUNELElBQUEsMEJBQWlCLEVBQUMsU0FBUyxFQUFFLHFDQUFtQixDQUFDLENBQUMsSUFBSSxDQUNwRCxDQUFDLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQzNCLEdBQUcsRUFBRTtZQUNILElBQUksQ0FDRixTQUFTLEVBQ1Qsd0RBQXdELENBQ3pELENBQUM7WUFDRixPQUFPLFNBQVMsQ0FBQztRQUNuQixDQUFDLENBQ0Y7S0FDRixDQUFDLENBQUM7SUFDSCxPQUFPLE9BQU8sSUFBSSxLQUFLLFFBQVEsSUFBSSxJQUFJO1FBQ3JDLENBQUMsQ0FBQyxFQUFFLEdBQUcsVUFBVSxFQUFFLElBQUksRUFBRTtRQUN6QixDQUFDLENBQUMsVUFBVSxDQUFDO0FBQ2pCLENBQUMsQ0FBQztBQTVCVyxRQUFBLG9CQUFvQix3QkE0Qi9CIn0=
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.renderEmail = void 0;
|
|
4
|
+
const utils_1 = require("@medusajs/framework/utils");
|
|
5
|
+
const types_1 = require("../types");
|
|
6
|
+
/** Kinds that go to the shop's own team instead of a customer. */
|
|
7
|
+
const SHOP_AUDIENCE_KINDS = new Set([
|
|
8
|
+
"order.received.admin",
|
|
9
|
+
"user.invite",
|
|
10
|
+
]);
|
|
11
|
+
const invalidRenderInput = () => {
|
|
12
|
+
throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, "Invalid email render input.");
|
|
13
|
+
};
|
|
14
|
+
const requireContent = (value) => {
|
|
15
|
+
if (typeof value !== "string" || !value.trim()) {
|
|
16
|
+
throw new utils_1.MedusaError(utils_1.MedusaError.Types.UNEXPECTED_STATE, "Email renderer returned empty content.");
|
|
17
|
+
}
|
|
18
|
+
return value;
|
|
19
|
+
};
|
|
20
|
+
const renderEmail = (configuration, input, shop) => {
|
|
21
|
+
const kindResult = types_1.EmailKindSchema.safeParse(input.kind);
|
|
22
|
+
if (!kindResult.success) {
|
|
23
|
+
return invalidRenderInput();
|
|
24
|
+
}
|
|
25
|
+
const kind = kindResult.data;
|
|
26
|
+
const dataResult = types_1.EmailRenderDataSchemas[kind].safeParse(input.data);
|
|
27
|
+
if (!dataResult.success) {
|
|
28
|
+
return invalidRenderInput();
|
|
29
|
+
}
|
|
30
|
+
const renderer = configuration.renderers[kind];
|
|
31
|
+
if (typeof renderer !== "function") {
|
|
32
|
+
return invalidRenderInput();
|
|
33
|
+
}
|
|
34
|
+
const rendered = renderer(dataResult.data);
|
|
35
|
+
const bodyHtml = requireContent(rendered?.bodyHtml);
|
|
36
|
+
const subject = requireContent(rendered?.subject);
|
|
37
|
+
const text = requireContent(rendered?.text);
|
|
38
|
+
const html = requireContent(configuration.layout({
|
|
39
|
+
audience: (SHOP_AUDIENCE_KINDS.has(kind)
|
|
40
|
+
? "shop"
|
|
41
|
+
: "customer"),
|
|
42
|
+
bodyHtml,
|
|
43
|
+
preheader: text,
|
|
44
|
+
subject,
|
|
45
|
+
shop,
|
|
46
|
+
}));
|
|
47
|
+
return { bodyHtml, html, subject, text };
|
|
48
|
+
};
|
|
49
|
+
exports.renderEmail = renderEmail;
|
|
50
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVuZGVyLWVtYWlsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2VtYWlsL3JlbmRlcmluZy9yZW5kZXItZW1haWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEscURBQXdEO0FBRXhELG9DQVFrQjtBQWdCbEIsa0VBQWtFO0FBQ2xFLE1BQU0sbUJBQW1CLEdBQTJCLElBQUksR0FBRyxDQUFDO0lBQzFELHNCQUFzQjtJQUN0QixhQUFhO0NBQ2QsQ0FBQyxDQUFDO0FBRUgsTUFBTSxrQkFBa0IsR0FBRyxHQUFVLEVBQUU7SUFDckMsTUFBTSxJQUFJLG1CQUFXLENBQ25CLG1CQUFXLENBQUMsS0FBSyxDQUFDLFlBQVksRUFDOUIsNkJBQTZCLENBQzlCLENBQUM7QUFDSixDQUFDLENBQUM7QUFFRixNQUFNLGNBQWMsR0FBRyxDQUFDLEtBQWMsRUFBVSxFQUFFO0lBQ2hELElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUM7UUFDL0MsTUFBTSxJQUFJLG1CQUFXLENBQ25CLG1CQUFXLENBQUMsS0FBSyxDQUFDLGdCQUFnQixFQUNsQyx3Q0FBd0MsQ0FDekMsQ0FBQztJQUNKLENBQUM7SUFDRCxPQUFPLEtBQUssQ0FBQztBQUNmLENBQUMsQ0FBQztBQUVLLE1BQU0sV0FBVyxHQUFHLENBQ3pCLGFBQTZDLEVBQzdDLEtBQXVCLEVBQ3ZCLElBQXNCLEVBQ1AsRUFBRTtJQUNqQixNQUFNLFVBQVUsR0FBRyx1QkFBZSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDekQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUN4QixPQUFPLGtCQUFrQixFQUFFLENBQUM7SUFDOUIsQ0FBQztJQUNELE1BQU0sSUFBSSxHQUFHLFVBQVUsQ0FBQyxJQUFJLENBQUM7SUFDN0IsTUFBTSxVQUFVLEdBQUcsOEJBQXNCLENBQUMsSUFBSSxDQUFDLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN0RSxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ3hCLE9BQU8sa0JBQWtCLEVBQUUsQ0FBQztJQUM5QixDQUFDO0lBQ0QsTUFBTSxRQUFRLEdBQUcsYUFBYSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBRWpDLENBQUM7SUFDYixJQUFJLE9BQU8sUUFBUSxLQUFLLFVBQVUsRUFBRSxDQUFDO1FBQ25DLE9BQU8sa0JBQWtCLEVBQUUsQ0FBQztJQUM5QixDQUFDO0lBQ0QsTUFBTSxRQUFRLEdBQUcsUUFBUSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQTRCLENBQUM7SUFDdEUsTUFBTSxRQUFRLEdBQUcsY0FBYyxDQUFDLFFBQVEsRUFBRSxRQUFRLENBQUMsQ0FBQztJQUNwRCxNQUFNLE9BQU8sR0FBRyxjQUFjLENBQUMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ2xELE1BQU0sSUFBSSxHQUFHLGNBQWMsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDNUMsTUFBTSxJQUFJLEdBQUcsY0FBYyxDQUN6QixhQUFhLENBQUMsTUFBTSxDQUFDO1FBQ25CLFFBQVEsRUFBRSxDQUFDLG1CQUFtQixDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUM7WUFDdEMsQ0FBQyxDQUFDLE1BQU07WUFDUixDQUFDLENBQUMsVUFBVSxDQUF5QjtRQUN2QyxRQUFRO1FBQ1IsU0FBUyxFQUFFLElBQUk7UUFDZixPQUFPO1FBQ1AsSUFBSTtLQUNMLENBQUMsQ0FDSCxDQUFDO0lBRUYsT0FBTyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxDQUFDO0FBQzNDLENBQUMsQ0FBQztBQXJDVyxRQUFBLFdBQVcsZUFxQ3RCIn0=
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.resolveShopEmailConfiguration = void 0;
|
|
4
|
+
const utils_1 = require("@medusajs/framework/utils");
|
|
5
|
+
const types_1 = require("../types");
|
|
6
|
+
const default_templates_1 = require("./default-templates");
|
|
7
|
+
const isTimeZone = (value) => {
|
|
8
|
+
if (typeof value !== "string" || !value.trim()) {
|
|
9
|
+
return false;
|
|
10
|
+
}
|
|
11
|
+
try {
|
|
12
|
+
new Intl.DateTimeFormat("de", { timeZone: value });
|
|
13
|
+
return true;
|
|
14
|
+
}
|
|
15
|
+
catch {
|
|
16
|
+
return false;
|
|
17
|
+
}
|
|
18
|
+
};
|
|
19
|
+
const invalidConfiguration = (message) => {
|
|
20
|
+
throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, `Invalid email shop configuration: ${message}`);
|
|
21
|
+
};
|
|
22
|
+
/**
|
|
23
|
+
* Validates the shop configuration and merges the default layout and
|
|
24
|
+
* renderers into it. Runs once when the Email module boots, so a bad
|
|
25
|
+
* configuration fails at startup and not at the first send.
|
|
26
|
+
*/
|
|
27
|
+
const resolveShopEmailConfiguration = (shop) => {
|
|
28
|
+
if (typeof shop?.displayName !== "string" || !shop.displayName.trim()) {
|
|
29
|
+
invalidConfiguration("displayName must be a non-empty string.");
|
|
30
|
+
}
|
|
31
|
+
if (shop.layout !== undefined && typeof shop.layout !== "function") {
|
|
32
|
+
invalidConfiguration("layout must be a function.");
|
|
33
|
+
}
|
|
34
|
+
if (shop.adminOrderUrl !== undefined &&
|
|
35
|
+
typeof shop.adminOrderUrl !== "function") {
|
|
36
|
+
invalidConfiguration("adminOrderUrl must be a function.");
|
|
37
|
+
}
|
|
38
|
+
if (shop.timeZone !== undefined && !isTimeZone(shop.timeZone)) {
|
|
39
|
+
invalidConfiguration("timeZone must be an IANA time zone.");
|
|
40
|
+
}
|
|
41
|
+
if (shop.renderers !== undefined &&
|
|
42
|
+
(typeof shop.renderers !== "object" || shop.renderers === null)) {
|
|
43
|
+
invalidConfiguration("renderers must be an object.");
|
|
44
|
+
}
|
|
45
|
+
const overrides = { ...shop.renderers };
|
|
46
|
+
for (const kind of Object.keys(overrides)) {
|
|
47
|
+
if (!types_1.EMAIL_KINDS.includes(kind)) {
|
|
48
|
+
invalidConfiguration(`renderers contains the unknown kind "${kind}".`);
|
|
49
|
+
}
|
|
50
|
+
if (overrides[kind] === undefined) {
|
|
51
|
+
delete overrides[kind];
|
|
52
|
+
}
|
|
53
|
+
else if (typeof overrides[kind] !== "function") {
|
|
54
|
+
invalidConfiguration(`renderers["${kind}"] must be a function.`);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
return {
|
|
58
|
+
...shop,
|
|
59
|
+
layout: shop.layout ?? (0, default_templates_1.createDefaultEmailLayout)(shop.displayName),
|
|
60
|
+
renderers: {
|
|
61
|
+
...(0, default_templates_1.createDefaultEmailRenderers)(shop),
|
|
62
|
+
...overrides,
|
|
63
|
+
},
|
|
64
|
+
};
|
|
65
|
+
};
|
|
66
|
+
exports.resolveShopEmailConfiguration = resolveShopEmailConfiguration;
|
|
67
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzb2x2ZS1zaG9wLWNvbmZpZ3VyYXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvZW1haWwvcmVuZGVyaW5nL3Jlc29sdmUtc2hvcC1jb25maWd1cmF0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHFEQUF3RDtBQUV4RCxvQ0FJa0I7QUFDbEIsMkRBRzZCO0FBRTdCLE1BQU0sVUFBVSxHQUFHLENBQUMsS0FBYyxFQUFXLEVBQUU7SUFDN0MsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQztRQUMvQyxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFDRCxJQUFJLENBQUM7UUFDSCxJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7UUFDbkQsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBQUMsTUFBTSxDQUFDO1FBQ1AsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0FBQ0gsQ0FBQyxDQUFDO0FBRUYsTUFBTSxvQkFBb0IsR0FBRyxDQUFDLE9BQWUsRUFBUyxFQUFFO0lBQ3RELE1BQU0sSUFBSSxtQkFBVyxDQUNuQixtQkFBVyxDQUFDLEtBQUssQ0FBQyxZQUFZLEVBQzlCLHFDQUFxQyxPQUFPLEVBQUUsQ0FDL0MsQ0FBQztBQUNKLENBQUMsQ0FBQztBQUVGOzs7O0dBSUc7QUFDSSxNQUFNLDZCQUE2QixHQUFHLENBQzNDLElBQTRCLEVBQ0ksRUFBRTtJQUNsQyxJQUFJLE9BQU8sSUFBSSxFQUFFLFdBQVcsS0FBSyxRQUFRLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUM7UUFDdEUsb0JBQW9CLENBQUMseUNBQXlDLENBQUMsQ0FBQztJQUNsRSxDQUFDO0lBQ0QsSUFBSSxJQUFJLENBQUMsTUFBTSxLQUFLLFNBQVMsSUFBSSxPQUFPLElBQUksQ0FBQyxNQUFNLEtBQUssVUFBVSxFQUFFLENBQUM7UUFDbkUsb0JBQW9CLENBQUMsNEJBQTRCLENBQUMsQ0FBQztJQUNyRCxDQUFDO0lBQ0QsSUFDRSxJQUFJLENBQUMsYUFBYSxLQUFLLFNBQVM7UUFDaEMsT0FBTyxJQUFJLENBQUMsYUFBYSxLQUFLLFVBQVUsRUFDeEMsQ0FBQztRQUNELG9CQUFvQixDQUFDLG1DQUFtQyxDQUFDLENBQUM7SUFDNUQsQ0FBQztJQUNELElBQUksSUFBSSxDQUFDLFFBQVEsS0FBSyxTQUFTLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7UUFDOUQsb0JBQW9CLENBQUMscUNBQXFDLENBQUMsQ0FBQztJQUM5RCxDQUFDO0lBQ0QsSUFDRSxJQUFJLENBQUMsU0FBUyxLQUFLLFNBQVM7UUFDNUIsQ0FBQyxPQUFPLElBQUksQ0FBQyxTQUFTLEtBQUssUUFBUSxJQUFJLElBQUksQ0FBQyxTQUFTLEtBQUssSUFBSSxDQUFDLEVBQy9ELENBQUM7UUFDRCxvQkFBb0IsQ0FBQyw4QkFBOEIsQ0FBQyxDQUFDO0lBQ3ZELENBQUM7SUFFRCxNQUFNLFNBQVMsR0FBNEIsRUFBRSxHQUFHLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUNqRSxLQUFLLE1BQU0sSUFBSSxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQztRQUMxQyxJQUFJLENBQUUsbUJBQWlDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDdkQsb0JBQW9CLENBQUMsd0NBQXdDLElBQUksSUFBSSxDQUFDLENBQUM7UUFDekUsQ0FBQztRQUNELElBQUksU0FBUyxDQUFDLElBQUksQ0FBQyxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQ2xDLE9BQU8sU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3pCLENBQUM7YUFBTSxJQUFJLE9BQU8sU0FBUyxDQUFDLElBQUksQ0FBQyxLQUFLLFVBQVUsRUFBRSxDQUFDO1lBQ2pELG9CQUFvQixDQUFDLGNBQWMsSUFBSSx3QkFBd0IsQ0FBQyxDQUFDO1FBQ25FLENBQUM7SUFDSCxDQUFDO0lBRUQsT0FBTztRQUNMLEdBQUcsSUFBSTtRQUNQLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTSxJQUFJLElBQUEsNENBQXdCLEVBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQztRQUNqRSxTQUFTLEVBQUU7WUFDVCxHQUFHLElBQUEsK0NBQTJCLEVBQUMsSUFBSSxDQUFDO1lBQ3BDLEdBQUcsU0FBUztTQUNiO0tBQ0YsQ0FBQztBQUNKLENBQUMsQ0FBQztBQTdDVyxRQUFBLDZCQUE2QixpQ0E2Q3hDIn0=
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.EmailKindSchema = exports.EMAIL_KINDS = void 0;
|
|
4
|
+
const zod_1 = require("@medusajs/framework/zod");
|
|
5
|
+
exports.EMAIL_KINDS = [
|
|
6
|
+
"order.received",
|
|
7
|
+
"order.received.admin",
|
|
8
|
+
"order.shipped",
|
|
9
|
+
"order.canceled",
|
|
10
|
+
"order.return_requested",
|
|
11
|
+
"order.return_received",
|
|
12
|
+
"order.refunded",
|
|
13
|
+
"auth.password_reset",
|
|
14
|
+
"affiliate.consignment_report_due",
|
|
15
|
+
"user.invite",
|
|
16
|
+
];
|
|
17
|
+
exports.EmailKindSchema = zod_1.z.enum(exports.EMAIL_KINDS);
|
|
18
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW1haWwta2luZHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvZW1haWwvdHlwZXMvZW1haWwta2luZHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsaURBQTRDO0FBRS9CLFFBQUEsV0FBVyxHQUFHO0lBQ3pCLGdCQUFnQjtJQUNoQixzQkFBc0I7SUFDdEIsZUFBZTtJQUNmLGdCQUFnQjtJQUNoQix3QkFBd0I7SUFDeEIsdUJBQXVCO0lBQ3ZCLGdCQUFnQjtJQUNoQixxQkFBcUI7SUFDckIsa0NBQWtDO0lBQ2xDLGFBQWE7Q0FDTCxDQUFDO0FBRUUsUUFBQSxlQUFlLEdBQUcsT0FBQyxDQUFDLElBQUksQ0FBQyxtQkFBVyxDQUFDLENBQUMifQ==
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./email-kinds"), exports);
|
|
18
|
+
__exportStar(require("./shop-configuration"), exports);
|
|
19
|
+
__exportStar(require("./smtp-configuration"), exports);
|
|
20
|
+
__exportStar(require("./template-data"), exports);
|
|
21
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvZW1haWwvdHlwZXMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLGdEQUE4QjtBQUM5Qix1REFBcUM7QUFDckMsdURBQXFDO0FBQ3JDLGtEQUFnQyJ9
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hvcC1jb25maWd1cmF0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2VtYWlsL3R5cGVzL3Nob3AtY29uZmlndXJhdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIn0=
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic210cC1jb25maWd1cmF0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2VtYWlsL3R5cGVzL3NtdHAtY29uZmlndXJhdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIn0=
|
|
@@ -0,0 +1,232 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.EmailRenderDataSchemas = exports.EmailPersistedDataSchemas = exports.RefundSummarySchema = exports.ReturnReceivedSummarySchema = exports.ReturnSummarySchema = exports.ShipmentSummarySchema = exports.OrderSummarySchema = void 0;
|
|
4
|
+
const zod_1 = require("@medusajs/framework/zod");
|
|
5
|
+
const affiliate_1 = require("@hartl-services/medusa-food-supplements-contracts/schemas/affiliate");
|
|
6
|
+
const NonEmptyStringSchema = zod_1.z.string().trim().min(1);
|
|
7
|
+
const NullableLocaleSchema = NonEmptyStringSchema.max(35).nullable();
|
|
8
|
+
const DocumentsFactFingerprintSchema = zod_1.z
|
|
9
|
+
.string()
|
|
10
|
+
.regex(/^[a-f0-9]{64}$/)
|
|
11
|
+
.optional();
|
|
12
|
+
const AmountSchema = zod_1.z.string().regex(/^-?\d+(\.\d+)?$/);
|
|
13
|
+
const OptionalTextSchema = zod_1.z.string().nullable();
|
|
14
|
+
const OrderSummaryAddressSchema = zod_1.z
|
|
15
|
+
.object({
|
|
16
|
+
first_name: OptionalTextSchema,
|
|
17
|
+
last_name: OptionalTextSchema,
|
|
18
|
+
company: OptionalTextSchema,
|
|
19
|
+
address_1: OptionalTextSchema,
|
|
20
|
+
address_2: OptionalTextSchema,
|
|
21
|
+
postal_code: OptionalTextSchema,
|
|
22
|
+
city: OptionalTextSchema,
|
|
23
|
+
country_code: OptionalTextSchema,
|
|
24
|
+
})
|
|
25
|
+
.strict();
|
|
26
|
+
/**
|
|
27
|
+
* Snapshot of an order when it was placed. Amounts are Medusa's gross
|
|
28
|
+
* decimal strings: item and shipping rows before discounts, so
|
|
29
|
+
* `original_item_total + original_shipping_total - discount_total` is the
|
|
30
|
+
* `total`, which already contains `tax_total`.
|
|
31
|
+
*/
|
|
32
|
+
exports.OrderSummarySchema = zod_1.z
|
|
33
|
+
.object({
|
|
34
|
+
display_id: zod_1.z.number().int().nullable(),
|
|
35
|
+
/** The order's e-mail address; `null` when the order has none. */
|
|
36
|
+
email: OptionalTextSchema,
|
|
37
|
+
/** When the order was placed (ISO 8601). */
|
|
38
|
+
placed_at: zod_1.z.string().datetime(),
|
|
39
|
+
currency_code: NonEmptyStringSchema,
|
|
40
|
+
items: zod_1.z.array(zod_1.z
|
|
41
|
+
.object({
|
|
42
|
+
title: NonEmptyStringSchema,
|
|
43
|
+
variant_title: OptionalTextSchema,
|
|
44
|
+
quantity: zod_1.z.number().positive(),
|
|
45
|
+
original_total: AmountSchema,
|
|
46
|
+
})
|
|
47
|
+
.strict()),
|
|
48
|
+
shipping_method_names: zod_1.z.array(NonEmptyStringSchema),
|
|
49
|
+
original_item_total: AmountSchema,
|
|
50
|
+
original_shipping_total: AmountSchema,
|
|
51
|
+
discount_total: AmountSchema,
|
|
52
|
+
tax_total: AmountSchema,
|
|
53
|
+
total: AmountSchema,
|
|
54
|
+
billing_address: OrderSummaryAddressSchema.nullable(),
|
|
55
|
+
shipping_address: OrderSummaryAddressSchema.nullable(),
|
|
56
|
+
})
|
|
57
|
+
.strict();
|
|
58
|
+
/**
|
|
59
|
+
* Snapshot of one shipment when it was shipped: the parcel's items (title
|
|
60
|
+
* of the order line, shipped quantity), tracking numbers and links as
|
|
61
|
+
* entered at shipping, and whether more of the order is still to be shipped.
|
|
62
|
+
*/
|
|
63
|
+
exports.ShipmentSummarySchema = zod_1.z
|
|
64
|
+
.object({
|
|
65
|
+
display_id: zod_1.z.number().int().nullable(),
|
|
66
|
+
shipping_method_name: OptionalTextSchema,
|
|
67
|
+
tracking: zod_1.z.array(zod_1.z
|
|
68
|
+
.object({
|
|
69
|
+
number: OptionalTextSchema,
|
|
70
|
+
url: OptionalTextSchema,
|
|
71
|
+
})
|
|
72
|
+
.strict()),
|
|
73
|
+
items: zod_1.z.array(zod_1.z
|
|
74
|
+
.object({
|
|
75
|
+
title: NonEmptyStringSchema,
|
|
76
|
+
variant_title: OptionalTextSchema,
|
|
77
|
+
quantity: zod_1.z.number().positive(),
|
|
78
|
+
})
|
|
79
|
+
.strict()),
|
|
80
|
+
delivery_address: OrderSummaryAddressSchema.nullable(),
|
|
81
|
+
more_to_follow: zod_1.z.boolean(),
|
|
82
|
+
})
|
|
83
|
+
.strict();
|
|
84
|
+
/**
|
|
85
|
+
* Snapshot of a return when it was requested: the return and order numbers,
|
|
86
|
+
* the items to send back (title of the order line, quantity, reason label),
|
|
87
|
+
* the return shipping option and where to send the parcel.
|
|
88
|
+
*/
|
|
89
|
+
exports.ReturnSummarySchema = zod_1.z
|
|
90
|
+
.object({
|
|
91
|
+
display_id: zod_1.z.number().int().nullable(),
|
|
92
|
+
order_display_id: zod_1.z.number().int().nullable(),
|
|
93
|
+
shipping_method_name: OptionalTextSchema,
|
|
94
|
+
items: zod_1.z.array(zod_1.z
|
|
95
|
+
.object({
|
|
96
|
+
title: NonEmptyStringSchema,
|
|
97
|
+
variant_title: OptionalTextSchema,
|
|
98
|
+
quantity: zod_1.z.number().positive(),
|
|
99
|
+
reason: OptionalTextSchema,
|
|
100
|
+
})
|
|
101
|
+
.strict()),
|
|
102
|
+
return_address: OrderSummaryAddressSchema.nullable(),
|
|
103
|
+
})
|
|
104
|
+
.strict();
|
|
105
|
+
/**
|
|
106
|
+
* Snapshot of a return when it was completely received: the return and
|
|
107
|
+
* order numbers, when it arrived and the received items (title of the order
|
|
108
|
+
* line, received quantity and how much of it arrived damaged).
|
|
109
|
+
*/
|
|
110
|
+
exports.ReturnReceivedSummarySchema = zod_1.z
|
|
111
|
+
.object({
|
|
112
|
+
display_id: zod_1.z.number().int().nullable(),
|
|
113
|
+
order_display_id: zod_1.z.number().int().nullable(),
|
|
114
|
+
received_at: zod_1.z.string().datetime().nullable(),
|
|
115
|
+
items: zod_1.z.array(zod_1.z
|
|
116
|
+
.object({
|
|
117
|
+
title: NonEmptyStringSchema,
|
|
118
|
+
variant_title: OptionalTextSchema,
|
|
119
|
+
quantity: zod_1.z.number().positive(),
|
|
120
|
+
damaged_quantity: zod_1.z.number().nonnegative(),
|
|
121
|
+
})
|
|
122
|
+
.strict()),
|
|
123
|
+
})
|
|
124
|
+
.strict();
|
|
125
|
+
/**
|
|
126
|
+
* Snapshot of one refund when its Documents fact arrived: the order number,
|
|
127
|
+
* the refunded gross amount, when it was refunded and the refund reason
|
|
128
|
+
* chosen in the Admin.
|
|
129
|
+
*/
|
|
130
|
+
exports.RefundSummarySchema = zod_1.z
|
|
131
|
+
.object({
|
|
132
|
+
order_display_id: zod_1.z.number().int().nullable(),
|
|
133
|
+
amount: AmountSchema,
|
|
134
|
+
currency_code: NonEmptyStringSchema,
|
|
135
|
+
refunded_at: zod_1.z.string().datetime().nullable(),
|
|
136
|
+
reason: OptionalTextSchema,
|
|
137
|
+
})
|
|
138
|
+
.strict();
|
|
139
|
+
exports.EmailPersistedDataSchemas = {
|
|
140
|
+
"order.received": zod_1.z
|
|
141
|
+
.object({
|
|
142
|
+
order_id: NonEmptyStringSchema,
|
|
143
|
+
// Optional: messages stored before the summary existed have none.
|
|
144
|
+
summary: exports.OrderSummarySchema.optional(),
|
|
145
|
+
})
|
|
146
|
+
.strict(),
|
|
147
|
+
"order.received.admin": zod_1.z
|
|
148
|
+
.object({
|
|
149
|
+
order_id: NonEmptyStringSchema,
|
|
150
|
+
// Optional: messages stored before the summary existed have none.
|
|
151
|
+
summary: exports.OrderSummarySchema.optional(),
|
|
152
|
+
})
|
|
153
|
+
.strict(),
|
|
154
|
+
"order.shipped": zod_1.z
|
|
155
|
+
.object({
|
|
156
|
+
order_id: NonEmptyStringSchema,
|
|
157
|
+
fulfillment_id: NonEmptyStringSchema,
|
|
158
|
+
documents_fact_fingerprint: DocumentsFactFingerprintSchema,
|
|
159
|
+
// Optional: messages stored before the snapshot existed have none.
|
|
160
|
+
shipment: exports.ShipmentSummarySchema.optional(),
|
|
161
|
+
/** The invoice PDF is attached (Documents chose this shipment). */
|
|
162
|
+
invoice_attached: zod_1.z.boolean().optional(),
|
|
163
|
+
})
|
|
164
|
+
.strict(),
|
|
165
|
+
"order.canceled": zod_1.z
|
|
166
|
+
.object({
|
|
167
|
+
order_id: NonEmptyStringSchema,
|
|
168
|
+
documents_fact_fingerprint: DocumentsFactFingerprintSchema,
|
|
169
|
+
// Optional: messages stored before the snapshot existed have none.
|
|
170
|
+
summary: exports.OrderSummarySchema.optional(),
|
|
171
|
+
/** When the order was canceled (ISO 8601). */
|
|
172
|
+
canceled_at: zod_1.z.string().datetime().optional(),
|
|
173
|
+
/** A cancellation document PDF is attached (from Documents). */
|
|
174
|
+
cancellation_attached: zod_1.z.boolean().optional(),
|
|
175
|
+
})
|
|
176
|
+
.strict(),
|
|
177
|
+
"order.return_requested": zod_1.z
|
|
178
|
+
.object({
|
|
179
|
+
order_id: NonEmptyStringSchema,
|
|
180
|
+
return_id: NonEmptyStringSchema,
|
|
181
|
+
// Optional: messages stored before the snapshot existed have none.
|
|
182
|
+
summary: exports.ReturnSummarySchema.optional(),
|
|
183
|
+
})
|
|
184
|
+
.strict(),
|
|
185
|
+
"order.return_received": zod_1.z
|
|
186
|
+
.object({
|
|
187
|
+
order_id: NonEmptyStringSchema,
|
|
188
|
+
return_id: NonEmptyStringSchema,
|
|
189
|
+
// Optional: messages stored before the snapshot existed have none.
|
|
190
|
+
summary: exports.ReturnReceivedSummarySchema.optional(),
|
|
191
|
+
})
|
|
192
|
+
.strict(),
|
|
193
|
+
"order.refunded": zod_1.z
|
|
194
|
+
.object({
|
|
195
|
+
order_id: NonEmptyStringSchema,
|
|
196
|
+
refund_id: NonEmptyStringSchema,
|
|
197
|
+
documents_fact_fingerprint: DocumentsFactFingerprintSchema,
|
|
198
|
+
// Optional: messages stored before the snapshot existed have none.
|
|
199
|
+
summary: exports.RefundSummarySchema.optional(),
|
|
200
|
+
/** A cancellation document PDF is attached (from Documents). */
|
|
201
|
+
cancellation_attached: zod_1.z.boolean().optional(),
|
|
202
|
+
})
|
|
203
|
+
.strict(),
|
|
204
|
+
"auth.password_reset": zod_1.z
|
|
205
|
+
.object({
|
|
206
|
+
locale: NullableLocaleSchema,
|
|
207
|
+
})
|
|
208
|
+
.strict(),
|
|
209
|
+
"affiliate.consignment_report_due": zod_1.z
|
|
210
|
+
.object({
|
|
211
|
+
affiliate_display_name: NonEmptyStringSchema,
|
|
212
|
+
period_start: affiliate_1.CalendarMonthSchema,
|
|
213
|
+
due_date: affiliate_1.CalendarDateSchema,
|
|
214
|
+
locale: NullableLocaleSchema,
|
|
215
|
+
})
|
|
216
|
+
.strict(),
|
|
217
|
+
"user.invite": zod_1.z.object({}).strict(),
|
|
218
|
+
};
|
|
219
|
+
exports.EmailRenderDataSchemas = {
|
|
220
|
+
...exports.EmailPersistedDataSchemas,
|
|
221
|
+
"auth.password_reset": exports.EmailPersistedDataSchemas["auth.password_reset"].extend({
|
|
222
|
+
reset_url: zod_1.z.string().url(),
|
|
223
|
+
/** How long the reset link is valid, from the token; `undefined` if unknown. */
|
|
224
|
+
valid_minutes: zod_1.z.number().int().positive().optional(),
|
|
225
|
+
}),
|
|
226
|
+
"user.invite": exports.EmailPersistedDataSchemas["user.invite"].extend({
|
|
227
|
+
invite_url: zod_1.z.string().url(),
|
|
228
|
+
/** When the invite expires (ISO 8601), from the current invite. */
|
|
229
|
+
expires_at: zod_1.z.string().datetime().optional(),
|
|
230
|
+
}),
|
|
231
|
+
};
|
|
232
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVtcGxhdGUtZGF0YS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9lbWFpbC90eXBlcy90ZW1wbGF0ZS1kYXRhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLGlEQUE0QztBQUM1QyxtR0FHNkU7QUFJN0UsTUFBTSxvQkFBb0IsR0FBRyxPQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3RELE1BQU0sb0JBQW9CLEdBQUcsb0JBQW9CLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDO0FBQ3JFLE1BQU0sOEJBQThCLEdBQUcsT0FBQztLQUNyQyxNQUFNLEVBQUU7S0FDUixLQUFLLENBQUMsZ0JBQWdCLENBQUM7S0FDdkIsUUFBUSxFQUFFLENBQUM7QUFFZCxNQUFNLFlBQVksR0FBRyxPQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsS0FBSyxDQUFDLGlCQUFpQixDQUFDLENBQUM7QUFDekQsTUFBTSxrQkFBa0IsR0FBRyxPQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxFQUFFLENBQUM7QUFFakQsTUFBTSx5QkFBeUIsR0FBRyxPQUFDO0tBQ2hDLE1BQU0sQ0FBQztJQUNOLFVBQVUsRUFBRSxrQkFBa0I7SUFDOUIsU0FBUyxFQUFFLGtCQUFrQjtJQUM3QixPQUFPLEVBQUUsa0JBQWtCO0lBQzNCLFNBQVMsRUFBRSxrQkFBa0I7SUFDN0IsU0FBUyxFQUFFLGtCQUFrQjtJQUM3QixXQUFXLEVBQUUsa0JBQWtCO0lBQy9CLElBQUksRUFBRSxrQkFBa0I7SUFDeEIsWUFBWSxFQUFFLGtCQUFrQjtDQUNqQyxDQUFDO0tBQ0QsTUFBTSxFQUFFLENBQUM7QUFFWjs7Ozs7R0FLRztBQUNVLFFBQUEsa0JBQWtCLEdBQUcsT0FBQztLQUNoQyxNQUFNLENBQUM7SUFDTixVQUFVLEVBQUUsT0FBQyxDQUFDLE1B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
|