@hartl-services/medusa-base 0.4.0 → 1.0.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 +1517 -87
- package/.medusa/server/src/admin/index.mjs +1518 -88
- 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 +24 -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 +142 -0
- package/.medusa/server/src/documents/templates/format.js +31 -0
- package/.medusa/server/src/documents/templates/html-factory.js +40 -0
- package/.medusa/server/src/documents/templates/html-utils.js +13 -0
- package/.medusa/server/src/documents/templates/layout.js +97 -0
- package/.medusa/server/src/documents/templates/packing-list.js +50 -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/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 +312 -0
- package/.medusa/server/src/email/application/handle-password-reset-event.js +354 -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/plugin-features.js +31 -0
- package/.medusa/server/src/email/rendering/default-templates.js +91 -0
- package/.medusa/server/src/email/rendering/render-email.js +37 -0
- package/.medusa/server/src/email/rendering/resolve-shop-configuration.js +48 -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 +79 -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/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/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-types.js +24 -0
- package/.medusa/server/src/shop-config/build-food-shop-config.js +248 -0
- package/.medusa/server/src/shop-config/options.js +71 -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 +163 -0
- package/.medusa/server/src/workflows/documents/issue-invoice-after-shipment.js +521 -0
- package/.medusa/server/src/workflows/documents/issue-packing-list.js +384 -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 +299 -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 +64 -0
- package/.medusa/server/src/workflows/email/prepare-order-received-email.js +56 -0
- package/.medusa/server/src/workflows/email/prepare-refund-email.js +47 -0
- package/.medusa/server/src/workflows/email/prepare-return-email.js +75 -0
- package/.medusa/server/src/workflows/email/prepare-shipment-email.js +82 -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 +1619 -7
- 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 +141 -0
- package/dist/documents/templates/format.d.ts +16 -0
- package/dist/documents/templates/format.js +30 -0
- package/dist/documents/templates/html-factory.d.ts +11 -0
- package/dist/documents/templates/html-factory.js +39 -0
- package/dist/documents/templates/html-utils.d.ts +2 -0
- package/dist/documents/templates/html-utils.js +12 -0
- package/dist/documents/templates/layout.d.ts +17 -0
- package/dist/documents/templates/layout.js +96 -0
- package/dist/documents/templates/packing-list.d.ts +3 -0
- package/dist/documents/templates/packing-list.js +49 -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 +174 -0
- package/dist/documents/types/documents.js +2 -0
- package/dist/documents/types/html-factory.d.ts +7 -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 +43 -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 +100 -0
- package/dist/email/types/template-data.js +78 -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/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-types.d.ts +7 -0
- package/dist/public/shop-types.js +23 -0
- package/dist/public/types.d.ts +17 -1
- package/dist/shop-config/build-food-shop-config.d.ts +44 -0
- package/dist/shop-config/build-food-shop-config.js +247 -0
- package/dist/shop-config/options.d.ts +41 -0
- package/dist/shop-config/options.js +70 -0
- package/package.json +48 -5
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.POST = void 0;
|
|
4
|
+
const email_1 = require("@hartl-services/medusa-food-supplements-contracts/schemas/email");
|
|
5
|
+
const email_2 = require("../../../../../../modules/email");
|
|
6
|
+
const dispatch_email_message_1 = require("../../../../../../workflows/email/dispatch-email-message");
|
|
7
|
+
const POST = async (req, res) => {
|
|
8
|
+
const email = req.scope.resolve(email_2.EMAIL_MODULE);
|
|
9
|
+
const clone = await email.createAdminResend({
|
|
10
|
+
source_message_id: req.params.id,
|
|
11
|
+
request_id: req.validatedBody.request_id,
|
|
12
|
+
requested_by_admin_id: req.auth_context.actor_id,
|
|
13
|
+
});
|
|
14
|
+
await (0, dispatch_email_message_1.dispatchEmailMessageWorkflow)(req.scope).run({
|
|
15
|
+
input: { message_id: clone.id },
|
|
16
|
+
});
|
|
17
|
+
const detail = await email.getAdminEmailMessage(clone.id);
|
|
18
|
+
const response = email_1.ResendAdminEmailMessageResponseSchema.parse({
|
|
19
|
+
message: detail.message,
|
|
20
|
+
});
|
|
21
|
+
res.json(response);
|
|
22
|
+
};
|
|
23
|
+
exports.POST = POST;
|
|
24
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL2FkbWluL2VtYWlsL21lc3NhZ2VzL1tpZF0vcmVzZW5kcy9yb3V0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFJQSwyRkFBd0g7QUFNeEgsMkRBQStEO0FBRS9ELHFHQUF3RztBQUVqRyxNQUFNLElBQUksR0FBRyxLQUFLLEVBQ3ZCLEdBQXdELEVBQ3hELEdBQW9ELEVBQ3JDLEVBQUU7SUFDakIsTUFBTSxLQUFLLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQXFCLG9CQUFZLENBQUMsQ0FBQztJQUNsRSxNQUFNLEtBQUssR0FBRyxNQUFNLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQztRQUMxQyxpQkFBaUIsRUFBRSxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUU7UUFDaEMsVUFBVSxFQUFFLEdBQUcsQ0FBQyxhQUFhLENBQUMsVUFBVTtRQUN4QyxxQkFBcUIsRUFBRSxHQUFHLENBQUMsWUFBWSxDQUFDLFFBQVE7S0FDakQsQ0FBQyxDQUFDO0lBQ0gsTUFBTSxJQUFBLHFEQUE0QixFQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLENBQUM7UUFDaEQsS0FBSyxFQUFFLEVBQUUsVUFBVSxFQUFFLEtBQUssQ0FBQyxFQUFFLEVBQUU7S0FDaEMsQ0FBQyxDQUFDO0lBQ0gsTUFBTSxNQUFNLEdBQUcsTUFBTSxLQUFLLENBQUMsb0JBQW9CLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzFELE1BQU0sUUFBUSxHQUFHLDZDQUFxQyxDQUFDLEtBQUssQ0FBQztRQUMzRCxPQUFPLEVBQUUsTUFBTSxDQUFDLE9BQU87S0FDeEIsQ0FBQyxDQUFDO0lBQ0gsR0FBRyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUNyQixDQUFDLENBQUM7QUFsQlcsUUFBQSxJQUFJLFFBa0JmIn0=
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.GET = void 0;
|
|
4
|
+
const email_1 = require("@hartl-services/medusa-food-supplements-contracts/schemas/email");
|
|
5
|
+
const email_2 = require("../../../../../modules/email");
|
|
6
|
+
const GET = async (req, res) => {
|
|
7
|
+
const email = req.scope.resolve(email_2.EMAIL_MODULE);
|
|
8
|
+
const response = email_1.GetAdminEmailMessageResponseSchema.parse(await email.getAdminEmailMessage(req.params.id));
|
|
9
|
+
res.json(response);
|
|
10
|
+
};
|
|
11
|
+
exports.GET = GET;
|
|
12
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL2FkbWluL2VtYWlsL21lc3NhZ2VzL1tpZF0vcm91dGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBSUEsMkZBQXFIO0FBR3JILHdEQUE0RDtBQUdyRCxNQUFNLEdBQUcsR0FBRyxLQUFLLEVBQ3RCLEdBQStCLEVBQy9CLEdBQWlELEVBQ2xDLEVBQUU7SUFDakIsTUFBTSxLQUFLLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQXFCLG9CQUFZLENBQUMsQ0FBQztJQUNsRSxNQUFNLFFBQVEsR0FBRywwQ0FBa0MsQ0FBQyxLQUFLLENBQ3ZELE1BQU0sS0FBSyxDQUFDLG9CQUFvQixDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQ2hELENBQUM7SUFDRixHQUFHLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQ3JCLENBQUMsQ0FBQztBQVRXLFFBQUEsR0FBRyxPQVNkIn0=
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.GET = void 0;
|
|
4
|
+
const email_1 = require("@hartl-services/medusa-food-supplements-contracts/schemas/email");
|
|
5
|
+
const email_2 = require("../../../../modules/email");
|
|
6
|
+
const GET = async (req, res) => {
|
|
7
|
+
const email = req.scope.resolve(email_2.EMAIL_MODULE);
|
|
8
|
+
const response = email_1.ListAdminEmailMessagesResponseSchema.parse(await email.listAdminEmailMessages(req.validatedQuery));
|
|
9
|
+
res.json(response);
|
|
10
|
+
};
|
|
11
|
+
exports.GET = GET;
|
|
12
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL2FkbWluL2VtYWlsL21lc3NhZ2VzL3JvdXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUlBLDJGQUF1SDtBQU12SCxxREFBeUQ7QUFHbEQsTUFBTSxHQUFHLEdBQUcsS0FBSyxFQUN0QixHQUFtRSxFQUNuRSxHQUFtRCxFQUNwQyxFQUFFO0lBQ2pCLE1BQU0sS0FBSyxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFxQixvQkFBWSxDQUFDLENBQUM7SUFDbEUsTUFBTSxRQUFRLEdBQUcsNENBQW9DLENBQUMsS0FBSyxDQUN6RCxNQUFNLEtBQUssQ0FBQyxzQkFBc0IsQ0FBQyxHQUFHLENBQUMsY0FBYyxDQUFDLENBQ3ZELENBQUM7SUFDRixHQUFHLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQ3JCLENBQUMsQ0FBQztBQVRXLFFBQUEsR0FBRyxPQVNkIn0=
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.GET = void 0;
|
|
4
|
+
const utils_1 = require("@medusajs/framework/utils");
|
|
5
|
+
const email_1 = require("../../../../../../modules/email");
|
|
6
|
+
const terms_download_response_1 = require("../../../../../terms-download-response");
|
|
7
|
+
const GET = async (req, res) => {
|
|
8
|
+
const email = req.scope.resolve(email_1.EMAIL_MODULE);
|
|
9
|
+
const version = await email.getEmailTermsVersionFile(req.params.id);
|
|
10
|
+
const files = req.scope.resolve(utils_1.Modules.FILE);
|
|
11
|
+
const stream = await files.getDownloadStream(version.file_id);
|
|
12
|
+
(0, terms_download_response_1.setTermsDownloadHeaders)(res, version.filename);
|
|
13
|
+
stream.pipe(res);
|
|
14
|
+
};
|
|
15
|
+
exports.GET = GET;
|
|
16
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL2FkbWluL2VtYWlsL3Rlcm1zLXZlcnNpb25zL1tpZF0vZG93bmxvYWQvcm91dGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBS0EscURBQW9EO0FBRXBELDJEQUErRDtBQUUvRCxvRkFBaUY7QUFFMUUsTUFBTSxHQUFHLEdBQUcsS0FBSyxFQUN0QixHQUErQixFQUMvQixHQUFtQixFQUNKLEVBQUU7SUFDakIsTUFBTSxLQUFLLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQXFCLG9CQUFZLENBQUMsQ0FBQztJQUNsRSxNQUFNLE9BQU8sR0FBRyxNQUFNLEtBQUssQ0FBQyx3QkFBd0IsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3BFLE1BQU0sS0FBSyxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFxQixlQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDbEUsTUFBTSxNQUFNLEdBQUcsTUFBTSxLQUFLLENBQUMsaUJBQWlCLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzlELElBQUEsaURBQXVCLEVBQUMsR0FBRyxFQUFFLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUMvQyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ25CLENBQUMsQ0FBQztBQVZXLFFBQUEsR0FBRyxPQVVkIn0=
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.POST = exports.GET = void 0;
|
|
4
|
+
const node_crypto_1 = require("node:crypto");
|
|
5
|
+
const utils_1 = require("@medusajs/framework/utils");
|
|
6
|
+
const email_1 = require("@hartl-services/medusa-food-supplements-contracts/schemas/email");
|
|
7
|
+
const email_2 = require("../../../../modules/email");
|
|
8
|
+
const decodePdf = (contentBase64) => {
|
|
9
|
+
const content = Buffer.from(contentBase64, "base64");
|
|
10
|
+
if (content.length < 1 ||
|
|
11
|
+
content.length > email_1.EMAIL_TERMS_MAX_PDF_BYTES ||
|
|
12
|
+
content.toString("base64") !== contentBase64 ||
|
|
13
|
+
content.subarray(0, 5).toString("ascii") !== "%PDF-") {
|
|
14
|
+
throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, "content_base64 must contain a valid PDF of at most 5 MiB.");
|
|
15
|
+
}
|
|
16
|
+
return content;
|
|
17
|
+
};
|
|
18
|
+
const GET = async (req, res) => {
|
|
19
|
+
const email = req.scope.resolve(email_2.EMAIL_MODULE);
|
|
20
|
+
const response = email_1.ListAdminEmailTermsVersionsResponseSchema.parse(await email.listAdminEmailTermsVersions(req.validatedQuery));
|
|
21
|
+
res.json(response);
|
|
22
|
+
};
|
|
23
|
+
exports.GET = GET;
|
|
24
|
+
const POST = async (req, res) => {
|
|
25
|
+
const body = req.validatedBody;
|
|
26
|
+
const content = decodePdf(body.content_base64);
|
|
27
|
+
const email = req.scope.resolve(email_2.EMAIL_MODULE);
|
|
28
|
+
const files = req.scope.resolve(utils_1.Modules.FILE);
|
|
29
|
+
const result = await email.createEmailTermsVersion({
|
|
30
|
+
request_id: body.request_id,
|
|
31
|
+
filename: body.filename,
|
|
32
|
+
effective_at: new Date(body.effective_at),
|
|
33
|
+
byte_size: content.byteLength,
|
|
34
|
+
sha256: (0, node_crypto_1.createHash)("sha256").update(content).digest("hex"),
|
|
35
|
+
}, async () => (await files.createFiles({
|
|
36
|
+
filename: body.filename,
|
|
37
|
+
mimeType: "application/pdf",
|
|
38
|
+
content: content.toString("base64"),
|
|
39
|
+
access: "private",
|
|
40
|
+
})).id, async (fileId) => {
|
|
41
|
+
await files.deleteFiles([fileId]);
|
|
42
|
+
});
|
|
43
|
+
const response = email_1.CreateAdminEmailTermsVersionResponseSchema.parse(result);
|
|
44
|
+
res.status(result.created ? 201 : 200).json(response);
|
|
45
|
+
};
|
|
46
|
+
exports.POST = POST;
|
|
47
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL2FkbWluL2VtYWlsL3Rlcm1zLXZlcnNpb25zL3JvdXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDZDQUF5QztBQU96QyxxREFBaUU7QUFDakUsMkZBSXlFO0FBUXpFLHFEQUF5RDtBQUd6RCxNQUFNLFNBQVMsR0FBRyxDQUFDLGFBQXFCLEVBQVUsRUFBRTtJQUNsRCxNQUFNLE9BQU8sR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxRQUFRLENBQUMsQ0FBQztJQUNyRCxJQUNFLE9BQU8sQ0FBQyxNQUFNLEdBQUcsQ0FBQztRQUNsQixPQUFPLENBQUMsTUFBTSxHQUFHLGlDQUF5QjtRQUMxQyxPQUFPLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxLQUFLLGFBQWE7UUFDNUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxLQUFLLE9BQU8sRUFDcEQsQ0FBQztRQUNELE1BQU0sSUFBSSxtQkFBVyxDQUNuQixtQkFBVyxDQUFDLEtBQUssQ0FBQyxZQUFZLEVBQzlCLDJEQUEyRCxDQUM1RCxDQUFDO0lBQ0osQ0FBQztJQUNELE9BQU8sT0FBTyxDQUFDO0FBQ2pCLENBQUMsQ0FBQztBQUVLLE1BQU0sR0FBRyxHQUFHLEtBQUssRUFDdEIsR0FBd0UsRUFDeEUsR0FBd0QsRUFDekMsRUFBRTtJQUNqQixNQUFNLEtBQUssR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBcUIsb0JBQVksQ0FBQyxDQUFDO0lBQ2xFLE1BQU0sUUFBUSxHQUFHLGlEQUF5QyxDQUFDLEtBQUssQ0FDOUQsTUFBTSxLQUFLLENBQUMsMkJBQTJCLENBQUMsR0FBRyxDQUFDLGNBQWMsQ0FBQyxDQUM1RCxDQUFDO0lBQ0YsR0FBRyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUNyQixDQUFDLENBQUM7QUFUVyxRQUFBLEdBQUcsT0FTZDtBQUVLLE1BQU0sSUFBSSxHQUFHLEtBQUssRUFDdkIsR0FBNkQsRUFDN0QsR0FBeUQsRUFDMUMsRUFBRTtJQUNqQixNQUFNLElBQUksR0FBRyxHQUFHLENBQUMsYUFBYSxDQUFDO0lBQy9CLE1BQU0sT0FBTyxHQUFHLFNBQVMsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDL0MsTUFBTSxLQUFLLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQXFCLG9CQUFZLENBQUMsQ0FBQztJQUNsRSxNQUFNLEtBQUssR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBcUIsZUFBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2xFLE1BQU0sTUFBTSxHQUFHLE1BQU0sS0FBSyxDQUFDLHVCQUF1QixDQUNoRDtRQUNFLFVBQVUsRUFBRSxJQUFJLENBQUMsVUFBVTtRQUMzQixRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVE7UUFDdkIsWUFBWSxFQUFFLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUM7UUFDekMsU0FBUyxFQUFFLE9BQU8sQ0FBQyxVQUFVO1FBQzdCLE1BQU0sRUFBRSxJQUFBLHdCQUFVLEVBQUMsUUFBUSxDQUFDLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUM7S0FDM0QsRUFDRCxLQUFLLElBQUksRUFBRSxDQUNULENBQ0UsTUFBTSxLQUFLLENBQUMsV0FBVyxDQUFDO1FBQ3RCLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUTtRQUN2QixRQUFRLEVBQUUsaUJBQWlCO1FBQzNCLE9BQU8sRUFBRSxPQUFPLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQztRQUNuQyxNQUFNLEVBQUUsU0FBUztLQUNsQixDQUFDLENBQ0gsQ0FBQyxFQUFFLEVBQ04sS0FBSyxFQUFFLE1BQU0sRUFBRSxFQUFFO1FBQ2YsTUFBTSxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNwQyxDQUFDLENBQ0YsQ0FBQztJQUNGLE1BQU0sUUFBUSxHQUFHLGtEQUEwQyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMxRSxHQUFHLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQ3hELENBQUMsQ0FBQztBQS9CVyxRQUFBLElBQUksUUErQmYifQ==
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.GET = void 0;
|
|
4
|
+
const utils_1 = require("@medusajs/framework/utils");
|
|
5
|
+
const document_download_response_1 = require("../../../../../../document-download-response");
|
|
6
|
+
const resolve_services_1 = require("../../../../../../../documents/utils/resolve-services");
|
|
7
|
+
const GET = async (req, res) => {
|
|
8
|
+
const document = await (0, resolve_services_1.resolveDocumentsService)(req.scope).getDocumentForOrder(req.params.document_id, req.params.id);
|
|
9
|
+
if (!document?.file_id || !document.filename) {
|
|
10
|
+
throw new utils_1.MedusaError(utils_1.MedusaError.Types.NOT_FOUND, "Document not found.");
|
|
11
|
+
}
|
|
12
|
+
const files = req.scope.resolve(utils_1.Modules.FILE);
|
|
13
|
+
const stream = await files.getDownloadStream(document.file_id);
|
|
14
|
+
(0, document_download_response_1.setDocumentDownloadHeaders)(res, {
|
|
15
|
+
filename: document.filename,
|
|
16
|
+
disposition: "inline",
|
|
17
|
+
});
|
|
18
|
+
stream.pipe(res);
|
|
19
|
+
};
|
|
20
|
+
exports.GET = GET;
|
|
21
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL2FkbWluL29yZGVycy9baWRdL2RvY3VtZW50cy9bZG9jdW1lbnRfaWRdL2Rvd25sb2FkL3JvdXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUtBLHFEQUFnRTtBQUVoRSw2RkFBeUY7QUFDekYsNEZBQStGO0FBRXhGLE1BQU0sR0FBRyxHQUFHLEtBQUssRUFDdEIsR0FBK0IsRUFDL0IsR0FBbUIsRUFDbkIsRUFBRTtJQUNGLE1BQU0sUUFBUSxHQUFHLE1BQU0sSUFBQSwwQ0FBdUIsRUFBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsbUJBQW1CLENBQzNFLEdBQUcsQ0FBQyxNQUFNLENBQUMsV0FBVyxFQUN0QixHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FDZCxDQUFBO0lBQ0QsSUFBSSxDQUFDLFFBQVEsRUFBRSxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDN0MsTUFBTSxJQUFJLG1CQUFXLENBQUMsbUJBQVcsQ0FBQyxLQUFLLENBQUMsU0FBUyxFQUFFLHFCQUFxQixDQUFDLENBQUE7SUFDM0UsQ0FBQztJQUVELE1BQU0sS0FBSyxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLGVBQU8sQ0FBQyxJQUFJLENBQXVCLENBQUE7SUFDbkUsTUFBTSxNQUFNLEdBQUcsTUFBTSxLQUFLLENBQUMsaUJBQWlCLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFBO0lBQzlELElBQUEsdURBQTBCLEVBQUMsR0FBRyxFQUFFO1FBQzlCLFFBQVEsRUFBRSxRQUFRLENBQUMsUUFBUTtRQUMzQixXQUFXLEVBQUUsUUFBUTtLQUN0QixDQUFDLENBQUE7SUFDRixNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFBO0FBQ2xCLENBQUMsQ0FBQTtBQW5CWSxRQUFBLEdBQUcsT0FtQmYifQ==
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.POST = void 0;
|
|
4
|
+
const utils_1 = require("@medusajs/framework/utils");
|
|
5
|
+
const document_response_1 = require("../../../../../../document-response");
|
|
6
|
+
const resolve_services_1 = require("../../../../../../../documents/utils/resolve-services");
|
|
7
|
+
const issue_invoice_after_shipment_1 = require("../../../../../../../workflows/documents/issue-invoice-after-shipment");
|
|
8
|
+
const regenerate_issued_document_1 = require("../../../../../../../workflows/documents/regenerate-issued-document");
|
|
9
|
+
/** Regenerates one issued document without creating a successor document. */
|
|
10
|
+
const POST = async (req, res) => {
|
|
11
|
+
const documentsService = (0, resolve_services_1.resolveDocumentsService)(req.scope);
|
|
12
|
+
const currentDocument = await documentsService.getDocumentForOrder(req.params.document_id, req.params.id);
|
|
13
|
+
if (!currentDocument) {
|
|
14
|
+
throw new utils_1.MedusaError(utils_1.MedusaError.Types.NOT_FOUND, "The issued document was not found for this order.");
|
|
15
|
+
}
|
|
16
|
+
const { result: regeneratedDocumentId } = currentDocument.kind === "invoice"
|
|
17
|
+
? await (0, issue_invoice_after_shipment_1.issueInvoiceAfterShipmentWorkflow)(req.scope).run({
|
|
18
|
+
input: {
|
|
19
|
+
order_id: req.params.id,
|
|
20
|
+
regenerate_document_id: currentDocument.id,
|
|
21
|
+
},
|
|
22
|
+
})
|
|
23
|
+
: await (0, regenerate_issued_document_1.regenerateIssuedDocumentWorkflow)(req.scope).run({
|
|
24
|
+
input: {
|
|
25
|
+
order_id: req.params.id,
|
|
26
|
+
document_id: currentDocument.id,
|
|
27
|
+
},
|
|
28
|
+
});
|
|
29
|
+
const regeneratedDocument = regeneratedDocumentId
|
|
30
|
+
? await documentsService.retrieveDocumentRecord(regeneratedDocumentId)
|
|
31
|
+
: null;
|
|
32
|
+
if (!regeneratedDocument) {
|
|
33
|
+
throw new utils_1.MedusaError(utils_1.MedusaError.Types.UNEXPECTED_STATE, "The regenerated document could not be retrieved.");
|
|
34
|
+
}
|
|
35
|
+
res.json({ document: (0, document_response_1.toDocumentSummary)(regeneratedDocument) });
|
|
36
|
+
};
|
|
37
|
+
exports.POST = POST;
|
|
38
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL2FkbWluL29yZGVycy9baWRdL2RvY3VtZW50cy9bZG9jdW1lbnRfaWRdL3JlZ2VuZXJhdGUvcm91dGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBSUEscURBQXVEO0FBTXZELDJFQUF1RTtBQUN2RSw0RkFBK0Y7QUFDL0Ysd0hBQXlIO0FBQ3pILG9IQUFzSDtBQUV0SCw2RUFBNkU7QUFDdEUsTUFBTSxJQUFJLEdBQUcsS0FBSyxFQUN2QixHQUFpRSxFQUNqRSxHQUF5RCxFQUN6RCxFQUFFO0lBQ0YsTUFBTSxnQkFBZ0IsR0FBRyxJQUFBLDBDQUF1QixFQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQTtJQUMzRCxNQUFNLGVBQWUsR0FBRyxNQUFNLGdCQUFnQixDQUFDLG1CQUFtQixDQUNoRSxHQUFHLENBQUMsTUFBTSxDQUFDLFdBQVcsRUFDdEIsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQ2QsQ0FBQTtJQUNELElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUNyQixNQUFNLElBQUksbUJBQVcsQ0FDbkIsbUJBQVcsQ0FBQyxLQUFLLENBQUMsU0FBUyxFQUMzQixtREFBbUQsQ0FDcEQsQ0FBQTtJQUNILENBQUM7SUFFRCxNQUFNLEVBQUUsTUFBTSxFQUFFLHFCQUFxQixFQUFFLEdBQ3JDLGVBQWUsQ0FBQyxJQUFJLEtBQUssU0FBUztRQUNoQyxDQUFDLENBQUMsTUFBTSxJQUFBLGdFQUFpQyxFQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLENBQUM7WUFDckQsS0FBSyxFQUFFO2dCQUNMLFFBQVEsRUFBRSxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUU7Z0JBQ3ZCLHNCQUFzQixFQUFFLGVBQWUsQ0FBQyxFQUFFO2FBQzNDO1NBQ0YsQ0FBQztRQUNKLENBQUMsQ0FBQyxNQUFNLElBQUEsNkRBQWdDLEVBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsQ0FBQztZQUNwRCxLQUFLLEVBQUU7Z0JBQ0wsUUFBUSxFQUFFLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRTtnQkFDdkIsV0FBVyxFQUFFLGVBQWUsQ0FBQyxFQUFFO2FBQ2hDO1NBQ0YsQ0FBQyxDQUFBO0lBRVIsTUFBTSxtQkFBbUIsR0FBRyxxQkFBcUI7UUFDL0MsQ0FBQyxDQUFDLE1BQU0sZ0JBQWdCLENBQUMsc0JBQXNCLENBQUMscUJBQXFCLENBQUM7UUFDdEUsQ0FBQyxDQUFDLElBQUksQ0FBQTtJQUNSLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO1FBQ3pCLE1BQU0sSUFBSSxtQkFBVyxDQUNuQixtQkFBVyxDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsRUFDbEMsa0RBQWtELENBQ25ELENBQUE7SUFDSCxDQUFDO0lBRUQsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLFFBQVEsRUFBRSxJQUFBLHFDQUFpQixFQUFDLG1CQUFtQixDQUFDLEVBQUUsQ0FBQyxDQUFBO0FBQ2hFLENBQUMsQ0FBQTtBQTFDWSxRQUFBLElBQUksUUEwQ2hCIn0=
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.POST = void 0;
|
|
4
|
+
const utils_1 = require("@medusajs/framework/utils");
|
|
5
|
+
const document_response_1 = require("../../../../../document-response");
|
|
6
|
+
const resolve_services_1 = require("../../../../../../documents/utils/resolve-services");
|
|
7
|
+
const issue_invoice_after_shipment_1 = require("../../../../../../workflows/documents/issue-invoice-after-shipment");
|
|
8
|
+
/** Regenerates the issued invoice in place from current order source data. */
|
|
9
|
+
const POST = async (req, res) => {
|
|
10
|
+
const documentsService = (0, resolve_services_1.resolveDocumentsService)(req.scope);
|
|
11
|
+
const currentInvoice = await documentsService.getIssuedInvoiceForOrder(req.params.id);
|
|
12
|
+
if (!currentInvoice) {
|
|
13
|
+
throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, "An issued invoice is required before it can be regenerated.");
|
|
14
|
+
}
|
|
15
|
+
const { result: issuedDocumentId } = await (0, issue_invoice_after_shipment_1.issueInvoiceAfterShipmentWorkflow)(req.scope).run({
|
|
16
|
+
input: {
|
|
17
|
+
order_id: req.params.id,
|
|
18
|
+
regenerate_document_id: currentInvoice.id,
|
|
19
|
+
},
|
|
20
|
+
});
|
|
21
|
+
const regeneratedInvoice = issuedDocumentId
|
|
22
|
+
? await documentsService.retrieveDocumentRecord(issuedDocumentId)
|
|
23
|
+
: null;
|
|
24
|
+
if (!regeneratedInvoice) {
|
|
25
|
+
throw new utils_1.MedusaError(utils_1.MedusaError.Types.UNEXPECTED_STATE, "The regenerated invoice could not be retrieved.");
|
|
26
|
+
}
|
|
27
|
+
res.json({
|
|
28
|
+
document: (0, document_response_1.toDocumentSummary)(regeneratedInvoice),
|
|
29
|
+
});
|
|
30
|
+
};
|
|
31
|
+
exports.POST = POST;
|
|
32
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL2FkbWluL29yZGVycy9baWRdL2RvY3VtZW50cy9yZWdlbmVyYXRlL3JvdXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUlBLHFEQUF1RDtBQU12RCx3RUFBb0U7QUFDcEUseUZBQTRGO0FBQzVGLHFIQUFzSDtBQUV0SCw4RUFBOEU7QUFDdkUsTUFBTSxJQUFJLEdBQUcsS0FBSyxFQUN2QixHQUFnRSxFQUNoRSxHQUF3RCxFQUN4RCxFQUFFO0lBQ0YsTUFBTSxnQkFBZ0IsR0FBRyxJQUFBLDBDQUF1QixFQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQTtJQUMzRCxNQUFNLGNBQWMsR0FBRyxNQUFNLGdCQUFnQixDQUFDLHdCQUF3QixDQUNwRSxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FDZCxDQUFBO0lBRUQsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3BCLE1BQU0sSUFBSSxtQkFBVyxDQUNuQixtQkFBVyxDQUFDLEtBQUssQ0FBQyxZQUFZLEVBQzlCLDZEQUE2RCxDQUM5RCxDQUFBO0lBQ0gsQ0FBQztJQUVELE1BQU0sRUFBRSxNQUFNLEVBQUUsZ0JBQWdCLEVBQUUsR0FBRyxNQUFNLElBQUEsZ0VBQWlDLEVBQzFFLEdBQUcsQ0FBQyxLQUFLLENBQ1YsQ0FBQyxHQUFHLENBQUM7UUFDSixLQUFLLEVBQUU7WUFDTCxRQUFRLEVBQUUsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFO1lBQ3ZCLHNCQUFzQixFQUFFLGNBQWMsQ0FBQyxFQUFFO1NBQzFDO0tBQ0YsQ0FBQyxDQUFBO0lBRUYsTUFBTSxrQkFBa0IsR0FBRyxnQkFBZ0I7UUFDekMsQ0FBQyxDQUFDLE1BQU0sZ0JBQWdCLENBQUMsc0JBQXNCLENBQUMsZ0JBQWdCLENBQUM7UUFDakUsQ0FBQyxDQUFDLElBQUksQ0FBQTtJQUNSLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1FBQ3hCLE1BQU0sSUFBSSxtQkFBVyxDQUNuQixtQkFBVyxDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsRUFDbEMsaURBQWlELENBQ2xELENBQUE7SUFDSCxDQUFDO0lBRUQsR0FBRyxDQUFDLElBQUksQ0FBQztRQUNQLFFBQVEsRUFBRSxJQUFBLHFDQUFpQixFQUFDLGtCQUFrQixDQUFDO0tBQ2hELENBQUMsQ0FBQTtBQUNKLENBQUMsQ0FBQTtBQXRDWSxRQUFBLElBQUksUUFzQ2hCIn0=
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.POST = exports.GET = void 0;
|
|
4
|
+
const utils_1 = require("@medusajs/framework/utils");
|
|
5
|
+
const document_response_1 = require("../../../../document-response");
|
|
6
|
+
const resolve_services_1 = require("../../../../../documents/utils/resolve-services");
|
|
7
|
+
const issue_invoice_after_shipment_1 = require("../../../../../workflows/documents/issue-invoice-after-shipment");
|
|
8
|
+
/** All authenticated Admin users can inspect issued documents for an order. */
|
|
9
|
+
const GET = async (req, res) => {
|
|
10
|
+
const documents = await (0, resolve_services_1.resolveDocumentsService)(req.scope).listIssuedDocumentsForOrder(req.params.id);
|
|
11
|
+
res.json({ documents: documents.map(document_response_1.toDocumentSummary) });
|
|
12
|
+
};
|
|
13
|
+
exports.GET = GET;
|
|
14
|
+
/**
|
|
15
|
+
* Issues the total invoice for an older order on demand. The workflow still
|
|
16
|
+
* enforces the normal final-shipment and cancellation checks, so this endpoint
|
|
17
|
+
* cannot create a premature invoice.
|
|
18
|
+
*/
|
|
19
|
+
const POST = async (req, res) => {
|
|
20
|
+
const documentsService = (0, resolve_services_1.resolveDocumentsService)(req.scope);
|
|
21
|
+
const { result: issuedDocumentId } = await (0, issue_invoice_after_shipment_1.issueInvoiceAfterShipmentWorkflow)(req.scope).run({
|
|
22
|
+
input: { order_id: req.params.id },
|
|
23
|
+
});
|
|
24
|
+
const issuedDocument = issuedDocumentId
|
|
25
|
+
? await documentsService.retrieveDocumentRecord(issuedDocumentId)
|
|
26
|
+
: (await documentsService.listIssuedDocumentsForOrder(req.params.id)).find((document) => document.kind === "invoice");
|
|
27
|
+
if (!issuedDocument) {
|
|
28
|
+
throw new utils_1.MedusaError(utils_1.MedusaError.Types.CONFLICT, "Invoice issuance is already in progress or did not complete. Retry shortly.");
|
|
29
|
+
}
|
|
30
|
+
res.status(issuedDocumentId ? 201 : 200).json({
|
|
31
|
+
document: (0, document_response_1.toDocumentSummary)(issuedDocument),
|
|
32
|
+
created: Boolean(issuedDocumentId),
|
|
33
|
+
});
|
|
34
|
+
};
|
|
35
|
+
exports.POST = POST;
|
|
36
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL2FkbWluL29yZGVycy9baWRdL2RvY3VtZW50cy9yb3V0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFJQSxxREFBdUQ7QUFNdkQscUVBQWlFO0FBQ2pFLHNGQUF5RjtBQUN6RixrSEFBbUg7QUFFbkgsK0VBQStFO0FBQ3hFLE1BQU0sR0FBRyxHQUFHLEtBQUssRUFDdEIsR0FBK0IsRUFDL0IsR0FBb0QsRUFDcEQsRUFBRTtJQUNGLE1BQU0sU0FBUyxHQUFHLE1BQU0sSUFBQSwwQ0FBdUIsRUFDN0MsR0FBRyxDQUFDLEtBQUssQ0FDVixDQUFDLDJCQUEyQixDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUE7SUFFNUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLFNBQVMsRUFBRSxTQUFTLENBQUMsR0FBRyxDQUFDLHFDQUFpQixDQUFDLEVBQUUsQ0FBQyxDQUFBO0FBQzNELENBQUMsQ0FBQTtBQVRZLFFBQUEsR0FBRyxPQVNmO0FBRUQ7Ozs7R0FJRztBQUNJLE1BQU0sSUFBSSxHQUFHLEtBQUssRUFDdkIsR0FBK0IsRUFDL0IsR0FBbUQsRUFDbkQsRUFBRTtJQUNGLE1BQU0sZ0JBQWdCLEdBQUcsSUFBQSwwQ0FBdUIsRUFBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUE7SUFDM0QsTUFBTSxFQUFFLE1BQU0sRUFBRSxnQkFBZ0IsRUFBRSxHQUFHLE1BQU0sSUFBQSxnRUFBaUMsRUFDMUUsR0FBRyxDQUFDLEtBQUssQ0FDVixDQUFDLEdBQUcsQ0FBQztRQUNKLEtBQUssRUFBRSxFQUFFLFFBQVEsRUFBRSxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRTtLQUNuQyxDQUFDLENBQUE7SUFFRixNQUFNLGNBQWMsR0FBRyxnQkFBZ0I7UUFDckMsQ0FBQyxDQUFDLE1BQU0sZ0JBQWdCLENBQUMsc0JBQXNCLENBQUMsZ0JBQWdCLENBQUM7UUFDakUsQ0FBQyxDQUFDLENBQUMsTUFBTSxnQkFBZ0IsQ0FBQywyQkFBMkIsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUN0RSxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsUUFBUSxDQUFDLElBQUksS0FBSyxTQUFTLENBQzFDLENBQUE7SUFFTCxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDcEIsTUFBTSxJQUFJLG1CQUFXLENBQ25CLG1CQUFXLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFDMUIsNkVBQTZFLENBQzlFLENBQUE7SUFDSCxDQUFDO0lBRUQsR0FBRyxDQUFDLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUM7UUFDNUMsUUFBUSxFQUFFLElBQUEscUNBQWlCLEVBQUMsY0FBYyxDQUFDO1FBQzNDLE9BQU8sRUFBRSxPQUFPLENBQUMsZ0JBQWdCLENBQUM7S0FDbkMsQ0FBQyxDQUFBO0FBQ0osQ0FBQyxDQUFBO0FBNUJZLFFBQUEsSUFBSSxRQTRCaEIifQ==
|
package/.medusa/server/src/api/admin/orders/[id]/packing-lists/[fulfillment_id]/download/route.js
ADDED
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.GET = void 0;
|
|
4
|
+
const utils_1 = require("@medusajs/framework/utils");
|
|
5
|
+
const document_download_response_1 = require("../../../../../../document-download-response");
|
|
6
|
+
const resolve_services_1 = require("../../../../../../../documents/utils/resolve-services");
|
|
7
|
+
const GET = async (req, res) => {
|
|
8
|
+
const record = await (0, resolve_services_1.resolveDocumentsService)(req.scope).getPackingListForOrderAndFulfillment(req.params.id, req.params.fulfillment_id);
|
|
9
|
+
const revision = record?.revisions.find((candidate) => candidate.generation_status === "ready" &&
|
|
10
|
+
candidate.file_id &&
|
|
11
|
+
candidate.filename);
|
|
12
|
+
if (!revision?.file_id || !revision.filename) {
|
|
13
|
+
throw new utils_1.MedusaError(utils_1.MedusaError.Types.NOT_FOUND, "Packing list not found.");
|
|
14
|
+
}
|
|
15
|
+
const files = req.scope.resolve(utils_1.Modules.FILE);
|
|
16
|
+
const stream = await files.getDownloadStream(revision.file_id);
|
|
17
|
+
(0, document_download_response_1.setDocumentDownloadHeaders)(res, {
|
|
18
|
+
filename: revision.filename,
|
|
19
|
+
disposition: "inline",
|
|
20
|
+
});
|
|
21
|
+
stream.pipe(res);
|
|
22
|
+
};
|
|
23
|
+
exports.GET = GET;
|
|
24
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL2FkbWluL29yZGVycy9baWRdL3BhY2tpbmctbGlzdHMvW2Z1bGZpbGxtZW50X2lkXS9kb3dubG9hZC9yb3V0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFLQSxxREFBZ0U7QUFFaEUsNkZBQXlGO0FBQ3pGLDRGQUErRjtBQUV4RixNQUFNLEdBQUcsR0FBRyxLQUFLLEVBQ3RCLEdBQStCLEVBQy9CLEdBQW1CLEVBQ25CLEVBQUU7SUFDRixNQUFNLE1BQU0sR0FBRyxNQUFNLElBQUEsMENBQXVCLEVBQzFDLEdBQUcsQ0FBQyxLQUFLLENBQ1YsQ0FBQyxvQ0FBb0MsQ0FDcEMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQ2IsR0FBRyxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQzFCLENBQUE7SUFDRCxNQUFNLFFBQVEsR0FBRyxNQUFNLEVBQUUsU0FBUyxDQUFDLElBQUksQ0FDckMsQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUNaLFNBQVMsQ0FBQyxpQkFBaUIsS0FBSyxPQUFPO1FBQ3ZDLFNBQVMsQ0FBQyxPQUFPO1FBQ2pCLFNBQVMsQ0FBQyxRQUFRLENBQ3JCLENBQUE7SUFDRCxJQUFJLENBQUMsUUFBUSxFQUFFLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUM3QyxNQUFNLElBQUksbUJBQVcsQ0FDbkIsbUJBQVcsQ0FBQyxLQUFLLENBQUMsU0FBUyxFQUMzQix5QkFBeUIsQ0FDMUIsQ0FBQTtJQUNILENBQUM7SUFFRCxNQUFNLEtBQUssR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxlQUFPLENBQUMsSUFBSSxDQUF1QixDQUFBO0lBQ25FLE1BQU0sTUFBTSxHQUFHLE1BQU0sS0FBSyxDQUFDLGlCQUFpQixDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQTtJQUM5RCxJQUFBLHVEQUEwQixFQUFDLEdBQUcsRUFBRTtRQUM5QixRQUFRLEVBQUUsUUFBUSxDQUFDLFFBQVE7UUFDM0IsV0FBVyxFQUFFLFFBQVE7S0FDdEIsQ0FBQyxDQUFBO0lBQ0YsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQTtBQUNsQixDQUFDLENBQUE7QUE5QlksUUFBQSxHQUFHLE9BOEJmIn0=
|
package/.medusa/server/src/api/admin/orders/[id]/packing-lists/[fulfillment_id]/retry/route.js
ADDED
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.POST = void 0;
|
|
4
|
+
const utils_1 = require("@medusajs/framework/utils");
|
|
5
|
+
const resolve_services_1 = require("../../../../../../../documents/utils/resolve-services");
|
|
6
|
+
const issue_packing_list_1 = require("../../../../../../../workflows/documents/issue-packing-list");
|
|
7
|
+
const packing_list_response_1 = require("../../../../../../packing-list-response");
|
|
8
|
+
const POST = async (req, res) => {
|
|
9
|
+
await (0, issue_packing_list_1.issuePackingListWorkflow)(req.scope).run({
|
|
10
|
+
input: {
|
|
11
|
+
order_id: req.params.id,
|
|
12
|
+
fulfillment_id: req.params.fulfillment_id,
|
|
13
|
+
},
|
|
14
|
+
});
|
|
15
|
+
const record = await (0, resolve_services_1.resolveDocumentsService)(req.scope).getPackingListForOrderAndFulfillment(req.params.id, req.params.fulfillment_id);
|
|
16
|
+
let fallbackStatus = "pending";
|
|
17
|
+
if (!record) {
|
|
18
|
+
const query = req.scope.resolve(utils_1.ContainerRegistrationKeys.QUERY);
|
|
19
|
+
const { data } = await query.graph({
|
|
20
|
+
entity: "fulfillment",
|
|
21
|
+
fields: ["id", "canceled_at"],
|
|
22
|
+
filters: { id: req.params.fulfillment_id },
|
|
23
|
+
});
|
|
24
|
+
if (data[0]?.canceled_at !== null && data[0]?.canceled_at !== undefined) {
|
|
25
|
+
fallbackStatus = "canceled";
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
res.json({
|
|
29
|
+
packing_list: record
|
|
30
|
+
? (0, packing_list_response_1.toPackingListSummary)(record)
|
|
31
|
+
: {
|
|
32
|
+
id: null,
|
|
33
|
+
fulfillment_id: req.params.fulfillment_id,
|
|
34
|
+
status: fallbackStatus,
|
|
35
|
+
number: null,
|
|
36
|
+
source_revision: null,
|
|
37
|
+
generated_at: null,
|
|
38
|
+
location_name: null,
|
|
39
|
+
failure_reason: null,
|
|
40
|
+
},
|
|
41
|
+
});
|
|
42
|
+
};
|
|
43
|
+
exports.POST = POST;
|
|
44
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL2FkbWluL29yZGVycy9baWRdL3BhY2tpbmctbGlzdHMvW2Z1bGZpbGxtZW50X2lkXS9yZXRyeS9yb3V0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFLQSxxREFBcUU7QUFFckUsNEZBQStGO0FBQy9GLG9HQUFzRztBQUN0RyxtRkFBOEU7QUFVdkUsTUFBTSxJQUFJLEdBQUcsS0FBSyxFQUN2QixHQUErQixFQUMvQixHQUF1RCxFQUN2RCxFQUFFO0lBQ0YsTUFBTSxJQUFBLDZDQUF3QixFQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLENBQUM7UUFDNUMsS0FBSyxFQUFFO1lBQ0wsUUFBUSxFQUFFLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRTtZQUN2QixjQUFjLEVBQUUsR0FBRyxDQUFDLE1BQU0sQ0FBQyxjQUFjO1NBQzFDO0tBQ0YsQ0FBQyxDQUFBO0lBQ0YsTUFBTSxNQUFNLEdBQUcsTUFBTSxJQUFBLDBDQUF1QixFQUMxQyxHQUFHLENBQUMsS0FBSyxDQUNWLENBQUMsb0NBQW9DLENBQ3BDLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUNiLEdBQUcsQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUMxQixDQUFBO0lBQ0QsSUFBSSxjQUFjLEdBQTJCLFNBQVMsQ0FBQTtJQUN0RCxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDWixNQUFNLEtBQUssR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FDN0IsaUNBQXlCLENBQUMsS0FBSyxDQUNMLENBQUE7UUFDNUIsTUFBTSxFQUFFLElBQUksRUFBRSxHQUFHLE1BQU0sS0FBSyxDQUFDLEtBQUssQ0FBQztZQUNqQyxNQUFNLEVBQUUsYUFBYTtZQUNyQixNQUFNLEVBQUUsQ0FBQyxJQUFJLEVBQUUsYUFBYSxDQUFDO1lBQzdCLE9BQU8sRUFBRSxFQUFFLEVBQUUsRUFBRSxHQUFHLENBQUMsTUFBTSxDQUFDLGNBQWMsRUFBRTtTQUMzQyxDQUFDLENBQUE7UUFDRixJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxXQUFXLEtBQUssSUFBSSxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxXQUFXLEtBQUssU0FBUyxFQUFFLENBQUM7WUFDeEUsY0FBYyxHQUFHLFVBQVUsQ0FBQTtRQUM3QixDQUFDO0lBQ0gsQ0FBQztJQUVELEdBQUcsQ0FBQyxJQUFJLENBQUM7UUFDUCxZQUFZLEVBQUUsTUFBTTtZQUNsQixDQUFDLENBQUMsSUFBQSw0Q0FBb0IsRUFBQyxNQUFNLENBQUM7WUFDOUIsQ0FBQyxDQUFDO2dCQUNFLEVBQUUsRUFBRSxJQUFJO2dCQUNSLGNBQWMsRUFBRSxHQUFHLENBQUMsTUFBTSxDQUFDLGNBQWM7Z0JBQ3pDLE1BQU0sRUFBRSxjQUFjO2dCQUN0QixNQUFNLEVBQUUsSUFBSTtnQkFDWixlQUFlLEVBQUUsSUFBSTtnQkFDckIsWUFBWSxFQUFFLElBQUk7Z0JBQ2xCLGFBQWEsRUFBRSxJQUFJO2dCQUNuQixjQUFjLEVBQUUsSUFBSTthQUNyQjtLQUNOLENBQUMsQ0FBQTtBQUNKLENBQUMsQ0FBQTtBQTdDWSxRQUFBLElBQUksUUE2Q2hCIn0=
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.GET = void 0;
|
|
4
|
+
const utils_1 = require("@medusajs/framework/utils");
|
|
5
|
+
const resolve_services_1 = require("../../../../../documents/utils/resolve-services");
|
|
6
|
+
const packing_list_response_1 = require("../../../../packing-list-response");
|
|
7
|
+
const asFulfillments = (value) => {
|
|
8
|
+
if (!Array.isArray(value)) {
|
|
9
|
+
return [];
|
|
10
|
+
}
|
|
11
|
+
return value.flatMap((entry) => {
|
|
12
|
+
if (!entry || typeof entry !== "object" || Array.isArray(entry)) {
|
|
13
|
+
return [];
|
|
14
|
+
}
|
|
15
|
+
const record = entry;
|
|
16
|
+
if (typeof record.id !== "string" || !record.id) {
|
|
17
|
+
return [];
|
|
18
|
+
}
|
|
19
|
+
const createdAt = record.created_at instanceof Date
|
|
20
|
+
? record.created_at.toISOString()
|
|
21
|
+
: typeof record.created_at === "string"
|
|
22
|
+
? record.created_at
|
|
23
|
+
: new Date(0).toISOString();
|
|
24
|
+
return [
|
|
25
|
+
{
|
|
26
|
+
id: record.id,
|
|
27
|
+
created_at: createdAt,
|
|
28
|
+
requires_shipping: typeof record.requires_shipping === "boolean"
|
|
29
|
+
? record.requires_shipping
|
|
30
|
+
: undefined,
|
|
31
|
+
canceled_at: record.canceled_at instanceof Date
|
|
32
|
+
? record.canceled_at.toISOString()
|
|
33
|
+
: typeof record.canceled_at === "string"
|
|
34
|
+
? record.canceled_at
|
|
35
|
+
: null,
|
|
36
|
+
},
|
|
37
|
+
];
|
|
38
|
+
});
|
|
39
|
+
};
|
|
40
|
+
const GET = async (req, res) => {
|
|
41
|
+
const query = req.scope.resolve(utils_1.ContainerRegistrationKeys.QUERY);
|
|
42
|
+
const { data } = await query.graph({
|
|
43
|
+
entity: "order",
|
|
44
|
+
fields: [
|
|
45
|
+
"id",
|
|
46
|
+
"fulfillments.id",
|
|
47
|
+
"fulfillments.created_at",
|
|
48
|
+
"fulfillments.requires_shipping",
|
|
49
|
+
"fulfillments.canceled_at",
|
|
50
|
+
],
|
|
51
|
+
filters: { id: req.params.id },
|
|
52
|
+
});
|
|
53
|
+
if (data.length !== 1) {
|
|
54
|
+
throw new utils_1.MedusaError(utils_1.MedusaError.Types.NOT_FOUND, "Order not found.");
|
|
55
|
+
}
|
|
56
|
+
const order = data[0];
|
|
57
|
+
const fulfillments = asFulfillments(order.fulfillments)
|
|
58
|
+
.filter((fulfillment) => fulfillment.requires_shipping !== false)
|
|
59
|
+
.sort((left, right) => left.created_at.localeCompare(right.created_at) ||
|
|
60
|
+
left.id.localeCompare(right.id));
|
|
61
|
+
const records = await (0, resolve_services_1.resolveDocumentsService)(req.scope).listPackingListsForOrder(req.params.id);
|
|
62
|
+
const recordsByFulfillment = new Map(records.map((record) => [record.packing_list.fulfillment_id, record]));
|
|
63
|
+
const packingLists = fulfillments.map((fulfillment) => {
|
|
64
|
+
const record = recordsByFulfillment.get(fulfillment.id);
|
|
65
|
+
if (record) {
|
|
66
|
+
return (0, packing_list_response_1.toPackingListSummary)(record);
|
|
67
|
+
}
|
|
68
|
+
return {
|
|
69
|
+
id: null,
|
|
70
|
+
fulfillment_id: fulfillment.id,
|
|
71
|
+
status: fulfillment.canceled_at ? "canceled" : "missing",
|
|
72
|
+
number: null,
|
|
73
|
+
source_revision: null,
|
|
74
|
+
generated_at: null,
|
|
75
|
+
location_name: null,
|
|
76
|
+
failure_reason: null,
|
|
77
|
+
};
|
|
78
|
+
});
|
|
79
|
+
res.json({ packing_lists: packingLists });
|
|
80
|
+
};
|
|
81
|
+
exports.GET = GET;
|
|
82
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL2FkbWluL29yZGVycy9baWRdL3BhY2tpbmctbGlzdHMvcm91dGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBSUEscURBR2tDO0FBTWxDLHNGQUF5RjtBQUN6Riw2RUFBd0U7QUFpQnhFLE1BQU0sY0FBYyxHQUFHLENBQUMsS0FBYyxFQUEyQixFQUFFO0lBQ2pFLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDMUIsT0FBTyxFQUFFLENBQUE7SUFDWCxDQUFDO0lBRUQsT0FBTyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7UUFDN0IsSUFBSSxDQUFDLEtBQUssSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ2hFLE9BQU8sRUFBRSxDQUFBO1FBQ1gsQ0FBQztRQUNELE1BQU0sTUFBTSxHQUFHLEtBQWdDLENBQUE7UUFDL0MsSUFBSSxPQUFPLE1BQU0sQ0FBQyxFQUFFLEtBQUssUUFBUSxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQ2hELE9BQU8sRUFBRSxDQUFBO1FBQ1gsQ0FBQztRQUVELE1BQU0sU0FBUyxHQUNiLE1BQU0sQ0FBQyxVQUFVLFlBQVksSUFBSTtZQUMvQixDQUFDLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxXQUFXLEVBQUU7WUFDakMsQ0FBQyxDQUFDLE9BQU8sTUFBTSxDQUFDLFVBQVUsS0FBSyxRQUFRO2dCQUNyQyxDQUFDLENBQUMsTUFBTSxDQUFDLFVBQVU7Z0JBQ25CLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQTtRQUNqQyxPQUFPO1lBQ0w7Z0JBQ0UsRUFBRSxFQUFFLE1BQU0sQ0FBQyxFQUFFO2dCQUNiLFVBQVUsRUFBRSxTQUFTO2dCQUNyQixpQkFBaUIsRUFDZixPQUFPLE1BQU0sQ0FBQyxpQkFBaUIsS0FBSyxTQUFTO29CQUMzQyxDQUFDLENBQUMsTUFBTSxDQUFDLGlCQUFpQjtvQkFDMUIsQ0FBQyxDQUFDLFNBQVM7Z0JBQ2YsV0FBVyxFQUNULE1BQU0sQ0FBQyxXQUFXLFlBQVksSUFBSTtvQkFDaEMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsV0FBVyxFQUFFO29CQUNsQyxDQUFDLENBQUMsT0FBTyxNQUFNLENBQUMsV0FBVyxLQUFLLFFBQVE7d0JBQ3RDLENBQUMsQ0FBQyxNQUFNLENBQUMsV0FBVzt3QkFDcEIsQ0FBQyxDQUFDLElBQUk7YUFDYjtTQUNGLENBQUE7SUFDSCxDQUFDLENBQUMsQ0FBQTtBQUNKLENBQUMsQ0FBQTtBQUVNLE1BQU0sR0FBRyxHQUFHLEtBQUssRUFDdEIsR0FBK0IsRUFDL0IsR0FBdUQsRUFDdkQsRUFBRTtJQUNGLE1BQU0sS0FBSyxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUM3QixpQ0FBeUIsQ0FBQyxLQUFLLENBQ0wsQ0FBQTtJQUM1QixNQUFNLEVBQUUsSUFBSSxFQUFFLEdBQUcsTUFBTSxLQUFLLENBQUMsS0FBSyxDQUFDO1FBQ2pDLE1BQU0sRUFBRSxPQUFPO1FBQ2YsTUFBTSxFQUFFO1lBQ04sSUFBSTtZQUNKLGlCQUFpQjtZQUNqQix5QkFBeUI7WUFDekIsZ0NBQWdDO1lBQ2hDLDBCQUEwQjtTQUMzQjtRQUNELE9BQU8sRUFBRSxFQUFFLEVBQUUsRUFBRSxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRTtLQUMvQixDQUFDLENBQUE7SUFDRixJQUFJLElBQUksQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDdEIsTUFBTSxJQUFJLG1CQUFXLENBQUMsbUJBQVcsQ0FBQyxLQUFLLENBQUMsU0FBUyxFQUFFLGtCQUFrQixDQUFDLENBQUE7SUFDeEUsQ0FBQztJQUVELE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQStCLENBQUE7SUFDbkQsTUFBTSxZQUFZLEdBQUcsY0FBYyxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUM7U0FDcEQsTUFBTSxDQUFDLENBQUMsV0FBVyxFQUFFLEVBQUUsQ0FBQyxXQUFXLENBQUMsaUJBQWlCLEtBQUssS0FBSyxDQUFDO1NBQ2hFLElBQUksQ0FDSCxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUNkLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUM7UUFDL0MsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUNsQyxDQUFBO0lBQ0gsTUFBTSxPQUFPLEdBQUcsTUFBTSxJQUFBLDBDQUF1QixFQUMzQyxHQUFHLENBQUMsS0FBSyxDQUNWLENBQUMsd0JBQXdCLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQTtJQUN6QyxNQUFNLG9CQUFvQixHQUFHLElBQUksR0FBRyxDQUNsQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsY0FBYyxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQ3RFLENBQUE7SUFDRCxNQUFNLFlBQVksR0FBeUIsWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFdBQVcsRUFBRSxFQUFFO1FBQzFFLE1BQU0sTUFBTSxHQUFHLG9CQUFvQixDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUE7UUFDdkQsSUFBSSxNQUFNLEVBQUUsQ0FBQztZQUNYLE9BQU8sSUFBQSw0Q0FBb0IsRUFBQyxNQUFNLENBQUMsQ0FBQTtRQUNyQyxDQUFDO1FBRUQsT0FBTztZQUNMLEVBQUUsRUFBRSxJQUFJO1lBQ1IsY0FBYyxFQUFFLFdBQVcsQ0FBQyxFQUFFO1lBQzlCLE1BQU0sRUFBRSxXQUFXLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLFNBQVM7WUFDeEQsTUFBTSxFQUFFLElBQUk7WUFDWixlQUFlLEVBQUUsSUFBSTtZQUNyQixZQUFZLEVBQUUsSUFBSTtZQUNsQixhQUFhLEVBQUUsSUFBSTtZQUNuQixjQUFjLEVBQUUsSUFBSTtTQUNyQixDQUFBO0lBQ0gsQ0FBQyxDQUFDLENBQUE7SUFFRixHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsYUFBYSxFQUFFLFlBQVksRUFBRSxDQUFDLENBQUE7QUFDM0MsQ0FBQyxDQUFBO0FBdkRZLFFBQUEsR0FBRyxPQXVEZiJ9
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.setDocumentDownloadHeaders = void 0;
|
|
4
|
+
const contentDispositionFilename = (filename) => filename.replaceAll(/[^a-zA-Z0-9._-]/g, "_");
|
|
5
|
+
/**
|
|
6
|
+
* PDFs contain personal and financial data. Keep their response policy in one
|
|
7
|
+
* place so every protected download gets the same cache and MIME safeguards.
|
|
8
|
+
*/
|
|
9
|
+
const setDocumentDownloadHeaders = (res, input) => {
|
|
10
|
+
res.setHeader("Cache-Control", "private, no-store, max-age=0");
|
|
11
|
+
res.setHeader("Content-Type", "application/pdf");
|
|
12
|
+
res.setHeader("Content-Disposition", `${input.disposition}; filename="${contentDispositionFilename(input.filename)}"`);
|
|
13
|
+
res.setHeader("X-Content-Type-Options", "nosniff");
|
|
14
|
+
};
|
|
15
|
+
exports.setDocumentDownloadHeaders = setDocumentDownloadHeaders;
|
|
16
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9jdW1lbnQtZG93bmxvYWQtcmVzcG9uc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYXBpL2RvY3VtZW50LWRvd25sb2FkLXJlc3BvbnNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUlBLE1BQU0sMEJBQTBCLEdBQUcsQ0FBQyxRQUFnQixFQUFVLEVBQUUsQ0FDOUQsUUFBUSxDQUFDLFVBQVUsQ0FBQyxrQkFBa0IsRUFBRSxHQUFHLENBQUMsQ0FBQTtBQUU5Qzs7O0dBR0c7QUFDSSxNQUFNLDBCQUEwQixHQUFHLENBQ3hDLEdBQW1CLEVBQ25CLEtBQTZELEVBQ3ZELEVBQUU7SUFDUixHQUFHLENBQUMsU0FBUyxDQUFDLGVBQWUsRUFBRSw4QkFBOEIsQ0FBQyxDQUFBO0lBQzlELEdBQUcsQ0FBQyxTQUFTLENBQUMsY0FBYyxFQUFFLGlCQUFpQixDQUFDLENBQUE7SUFDaEQsR0FBRyxDQUFDLFNBQVMsQ0FDWCxxQkFBcUIsRUFDckIsR0FBRyxLQUFLLENBQUMsV0FBVyxlQUFlLDBCQUEwQixDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUNqRixDQUFBO0lBQ0QsR0FBRyxDQUFDLFNBQVMsQ0FBQyx3QkFBd0IsRUFBRSxTQUFTLENBQUMsQ0FBQTtBQUNwRCxDQUFDLENBQUE7QUFYWSxRQUFBLDBCQUEwQiw4QkFXdEMifQ==
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.toDocumentSummary = void 0;
|
|
4
|
+
const utils_1 = require("@medusajs/framework/utils");
|
|
5
|
+
/**
|
|
6
|
+
* Shared API summary. It deliberately excludes immutable source data,
|
|
7
|
+
* private-file/artifact identifiers, recipient details and resolution state.
|
|
8
|
+
*/
|
|
9
|
+
const toDocumentSummary = (document) => {
|
|
10
|
+
if (!document.snapshot || !document.document_number || !document.issued_at) {
|
|
11
|
+
throw new utils_1.MedusaError(utils_1.MedusaError.Types.UNEXPECTED_STATE, `Issued document ${document.id} is missing its public summary.`);
|
|
12
|
+
}
|
|
13
|
+
return {
|
|
14
|
+
id: document.id,
|
|
15
|
+
kind: document.kind,
|
|
16
|
+
number: document.document_number,
|
|
17
|
+
order_display_id: document.order_display_id,
|
|
18
|
+
issued_at: document.issued_at.toISOString(),
|
|
19
|
+
total: document.snapshot.totals.total,
|
|
20
|
+
};
|
|
21
|
+
};
|
|
22
|
+
exports.toDocumentSummary = toDocumentSummary;
|
|
23
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9jdW1lbnQtcmVzcG9uc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYXBpL2RvY3VtZW50LXJlc3BvbnNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHFEQUF1RDtBQUt2RDs7O0dBR0c7QUFDSSxNQUFNLGlCQUFpQixHQUFHLENBQy9CLFFBQXdCLEVBQ1AsRUFBRTtJQUNuQixJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsSUFBSSxDQUFDLFFBQVEsQ0FBQyxlQUFlLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxFQUFFLENBQUM7UUFDM0UsTUFBTSxJQUFJLG1CQUFXLENBQ25CLG1CQUFXLENBQUMsS0FBSyxDQUFDLGdCQUFnQixFQUNsQyxtQkFBbUIsUUFBUSxDQUFDLEVBQUUsaUNBQWlDLENBQ2hFLENBQUE7SUFDSCxDQUFDO0lBRUQsT0FBTztRQUNMLEVBQUUsRUFBRSxRQUFRLENBQUMsRUFBRTtRQUNmLElBQUksRUFBRSxRQUFRLENBQUMsSUFBSTtRQUNuQixNQUFNLEVBQUUsUUFBUSxDQUFDLGVBQWU7UUFDaEMsZ0JBQWdCLEVBQUUsUUFBUSxDQUFDLGdCQUFnQjtRQUMzQyxTQUFTLEVBQUUsUUFBUSxDQUFDLFNBQVMsQ0FBQyxXQUFXLEVBQUU7UUFDM0MsS0FBSyxFQUFFLFFBQVEsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLEtBQUs7S0FDdEMsQ0FBQTtBQUNILENBQUMsQ0FBQTtBQWxCWSxRQUFBLGlCQUFpQixxQkFrQjdCIn0=
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.GET = void 0;
|
|
4
|
+
const utils_1 = require("@medusajs/framework/utils");
|
|
5
|
+
const gateway_1 = require("../../../files/gateway");
|
|
6
|
+
const file_response_1 = require("../file-response");
|
|
7
|
+
const GET = async (req, res) => {
|
|
8
|
+
let fileKey;
|
|
9
|
+
try {
|
|
10
|
+
fileKey = (0, gateway_1.publicFileGatewayKey)(req.params.asset);
|
|
11
|
+
}
|
|
12
|
+
catch {
|
|
13
|
+
throw new utils_1.MedusaError(utils_1.MedusaError.Types.NOT_FOUND, "File not found.");
|
|
14
|
+
}
|
|
15
|
+
await (0, file_response_1.streamGatewayFile)({
|
|
16
|
+
cacheControl: "public, max-age=31536000, immutable",
|
|
17
|
+
fileKey,
|
|
18
|
+
files: req.scope.resolve(utils_1.Modules.FILE),
|
|
19
|
+
filename: req.params.asset,
|
|
20
|
+
response: res,
|
|
21
|
+
});
|
|
22
|
+
};
|
|
23
|
+
exports.GET = GET;
|
|
24
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL2ZpbGVzL1thc3NldF0vcm91dGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBRUEscURBQWlFO0FBQ2pFLG9EQUE4RDtBQUU5RCxvREFBcUQ7QUFFOUMsTUFBTSxHQUFHLEdBQUcsS0FBSyxFQUFFLEdBQWtCLEVBQUUsR0FBbUIsRUFBRSxFQUFFO0lBQ25FLElBQUksT0FBZSxDQUFDO0lBQ3BCLElBQUksQ0FBQztRQUNILE9BQU8sR0FBRyxJQUFBLDhCQUFvQixFQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDbkQsQ0FBQztJQUFDLE1BQU0sQ0FBQztRQUNQLE1BQU0sSUFBSSxtQkFBVyxDQUFDLG1CQUFXLENBQUMsS0FBSyxDQUFDLFNBQVMsRUFBRSxpQkFBaUIsQ0FBQyxDQUFDO0lBQ3hFLENBQUM7SUFFRCxNQUFNLElBQUEsaUNBQWlCLEVBQUM7UUFDdEIsWUFBWSxFQUFFLHFDQUFxQztRQUNuRCxPQUFPO1FBQ1AsS0FBSyxFQUFFLEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLGVBQU8sQ0FBQyxJQUFJLENBQXVCO1FBQzVELFFBQVEsRUFBRSxHQUFHLENBQUMsTUFBTSxDQUFDLEtBQUs7UUFDMUIsUUFBUSxFQUFFLEdBQUc7S0FDZCxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUM7QUFmVyxRQUFBLEdBQUcsT0FlZCJ9
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.streamGatewayFile = void 0;
|
|
4
|
+
const node_path_1 = require("node:path");
|
|
5
|
+
const promises_1 = require("node:stream/promises");
|
|
6
|
+
const utils_1 = require("@medusajs/framework/utils");
|
|
7
|
+
const mime_types_1 = require("mime-types");
|
|
8
|
+
const safeFilename = (value) => (0, node_path_1.basename)(value).replaceAll(/[^a-zA-Z0-9._-]/g, "_");
|
|
9
|
+
const isNotFoundError = (error) => {
|
|
10
|
+
if (typeof error !== "object" || error === null) {
|
|
11
|
+
return false;
|
|
12
|
+
}
|
|
13
|
+
const status = "$metadata" in error &&
|
|
14
|
+
typeof error.$metadata === "object" &&
|
|
15
|
+
error.$metadata !== null &&
|
|
16
|
+
"httpStatusCode" in error.$metadata
|
|
17
|
+
? error.$metadata.httpStatusCode
|
|
18
|
+
: undefined;
|
|
19
|
+
const name = "name" in error ? error.name : undefined;
|
|
20
|
+
return status === 404 || name === "NoSuchKey" || name === "NotFound";
|
|
21
|
+
};
|
|
22
|
+
const streamGatewayFile = async (input) => {
|
|
23
|
+
let stream;
|
|
24
|
+
try {
|
|
25
|
+
stream = await input.files.getDownloadStream(input.fileKey);
|
|
26
|
+
}
|
|
27
|
+
catch (error) {
|
|
28
|
+
if (isNotFoundError(error)) {
|
|
29
|
+
throw new utils_1.MedusaError(utils_1.MedusaError.Types.NOT_FOUND, "File not found.");
|
|
30
|
+
}
|
|
31
|
+
throw error;
|
|
32
|
+
}
|
|
33
|
+
input.response.setHeader("Cache-Control", input.cacheControl);
|
|
34
|
+
input.response.setHeader("Content-Security-Policy", "sandbox; default-src 'none'");
|
|
35
|
+
input.response.setHeader("Content-Type", (0, mime_types_1.lookup)(input.filename) || "application/octet-stream");
|
|
36
|
+
input.response.setHeader("X-Content-Type-Options", "nosniff");
|
|
37
|
+
if (input.disposition) {
|
|
38
|
+
input.response.setHeader("Content-Disposition", `${input.disposition}; filename="${safeFilename(input.filename)}"`);
|
|
39
|
+
}
|
|
40
|
+
await (0, promises_1.pipeline)(stream, input.response);
|
|
41
|
+
};
|
|
42
|
+
exports.streamGatewayFile = streamGatewayFile;
|
|
43
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1yZXNwb25zZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9hcGkvZmlsZXMvZmlsZS1yZXNwb25zZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSx5Q0FBcUM7QUFDckMsbURBQWdEO0FBSWhELHFEQUF3RDtBQUN4RCwyQ0FBb0M7QUFFcEMsTUFBTSxZQUFZLEdBQUcsQ0FBQyxLQUFhLEVBQVUsRUFBRSxDQUM3QyxJQUFBLG9CQUFRLEVBQUMsS0FBSyxDQUFDLENBQUMsVUFBVSxDQUFDLGtCQUFrQixFQUFFLEdBQUcsQ0FBQyxDQUFDO0FBRXRELE1BQU0sZUFBZSxHQUFHLENBQUMsS0FBYyxFQUFXLEVBQUU7SUFDbEQsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLElBQUksS0FBSyxLQUFLLElBQUksRUFBRSxDQUFDO1FBQ2hELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVELE1BQU0sTUFBTSxHQUNWLFdBQVcsSUFBSSxLQUFLO1FBQ3BCLE9BQU8sS0FBSyxDQUFDLFNBQVMsS0FBSyxRQUFRO1FBQ25DLEtBQUssQ0FBQyxTQUFTLEtBQUssSUFBSTtRQUN4QixnQkFBZ0IsSUFBSSxLQUFLLENBQUMsU0FBUztRQUNqQyxDQUFDLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxjQUFjO1FBQ2hDLENBQUMsQ0FBQyxTQUFTLENBQUM7SUFDaEIsTUFBTSxJQUFJLEdBQUcsTUFBTSxJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO0lBQ3RELE9BQU8sTUFBTSxLQUFLLEdBQUcsSUFBSSxJQUFJLEtBQUssV0FBVyxJQUFJLElBQUksS0FBSyxVQUFVLENBQUM7QUFDdkUsQ0FBQyxDQUFDO0FBRUssTUFBTSxpQkFBaUIsR0FBRyxLQUFLLEVBQUUsS0FPdkMsRUFBaUIsRUFBRTtJQUNsQixJQUFJLE1BQU0sQ0FBQztJQUNYLElBQUksQ0FBQztRQUNILE1BQU0sR0FBRyxNQUFNLEtBQUssQ0FBQyxLQUFLLENBQUMsaUJBQWlCLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzlELENBQUM7SUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1FBQ2YsSUFBSSxlQUFlLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUMzQixNQUFNLElBQUksbUJBQVcsQ0FBQyxtQkFBVyxDQUFDLEtBQUssQ0FBQyxTQUFTLEVBQUUsaUJBQWlCLENBQUMsQ0FBQztRQUN4RSxDQUFDO1FBQ0QsTUFBTSxLQUFLLENBQUM7SUFDZCxDQUFDO0lBRUQsS0FBSyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsZUFBZSxFQUFFLEtBQUssQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUM5RCxLQUFLLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FDdEIseUJBQXlCLEVBQ3pCLDZCQUE2QixDQUM5QixDQUFDO0lBQ0YsS0FBSyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQ3RCLGNBQWMsRUFDZCxJQUFBLG1CQUFNLEVBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxJQUFJLDBCQUEwQixDQUNyRCxDQUFDO0lBQ0YsS0FBSyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsd0JBQXdCLEVBQUUsU0FBUyxDQUFDLENBQUM7SUFDOUQsSUFBSSxLQUFLLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDdEIsS0FBSyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQ3RCLHFCQUFxQixFQUNyQixHQUFHLEtBQUssQ0FBQyxXQUFXLGVBQWUsWUFBWSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUNuRSxDQUFDO0lBQ0osQ0FBQztJQUVELE1BQU0sSUFBQSxtQkFBUSxFQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7QUFDekMsQ0FBQyxDQUFDO0FBcENXLFFBQUEsaUJBQWlCLHFCQW9DNUIifQ==
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.resolveFileGatewayRouteOptions = void 0;
|
|
4
|
+
const utils_1 = require("@medusajs/framework/utils");
|
|
5
|
+
const types_1 = require("../../files/types");
|
|
6
|
+
/**
|
|
7
|
+
* The routes sign and verify with the `files.gateway` option of the base
|
|
8
|
+
* plugin the shop registered via `createS3CacheStorageConfig`, which also
|
|
9
|
+
* configures the File provider, so both always share one signing secret.
|
|
10
|
+
* Upload CORS follows Medusa's own Admin CORS setting.
|
|
11
|
+
*/
|
|
12
|
+
const resolveFileGatewayRouteOptions = (container) => {
|
|
13
|
+
const configModule = container.resolve(utils_1.ContainerRegistrationKeys.CONFIG_MODULE);
|
|
14
|
+
const registration = configModule.plugins?.find((plugin) => typeof plugin === "object" && plugin.resolve === types_1.BASE_PLUGIN_RESOLVE);
|
|
15
|
+
const options = typeof registration === "object"
|
|
16
|
+
? registration.options
|
|
17
|
+
: undefined;
|
|
18
|
+
const signingSecret = options?.files?.gateway?.signingSecret?.trim();
|
|
19
|
+
if (!signingSecret) {
|
|
20
|
+
throw new utils_1.MedusaError(utils_1.MedusaError.Types.UNEXPECTED_STATE, "File gateway signing is not configured.");
|
|
21
|
+
}
|
|
22
|
+
return {
|
|
23
|
+
signingSecret,
|
|
24
|
+
uploadAllowedOrigins: (configModule.projectConfig?.http?.adminCors ?? "")
|
|
25
|
+
.split(",")
|
|
26
|
+
.map((origin) => origin.trim())
|
|
27
|
+
.filter(Boolean),
|
|
28
|
+
};
|
|
29
|
+
};
|
|
30
|
+
exports.resolveFileGatewayRouteOptions = resolveFileGatewayRouteOptions;
|
|
31
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2F0ZXdheS1vcHRpb25zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2FwaS9maWxlcy9nYXRld2F5LW9wdGlvbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQ0EscURBQW1GO0FBRW5GLDZDQUcyQjtBQVkzQjs7Ozs7R0FLRztBQUNJLE1BQU0sOEJBQThCLEdBQUcsQ0FDNUMsU0FBMEIsRUFDRCxFQUFFO0lBQzNCLE1BQU0sWUFBWSxHQUFHLFNBQVMsQ0FBQyxPQUFPLENBQ3BDLGlDQUF5QixDQUFDLGFBQWEsQ0FDeEMsQ0FBQztJQUNGLE1BQU0sWUFBWSxHQUFHLFlBQVksQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUM3QyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQ1QsT0FBTyxNQUFNLEtBQUssUUFBUSxJQUFJLE1BQU0sQ0FBQyxPQUFPLEtBQUssMkJBQW1CLENBQ3ZFLENBQUM7SUFDRixNQUFNLE9BQU8sR0FDWCxPQUFPLFlBQVksS0FBSyxRQUFRO1FBQzlCLENBQUMsQ0FBRSxZQUFZLENBQUMsT0FBc0Q7UUFDdEUsQ0FBQyxDQUFDLFNBQVMsQ0FBQztJQUNoQixNQUFNLGFBQWEsR0FBRyxPQUFPLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxhQUFhLEVBQUUsSUFBSSxFQUFFLENBQUM7SUFDckUsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ25CLE1BQU0sSUFBSSxtQkFBVyxDQUNuQixtQkFBVyxDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsRUFDbEMseUNBQXlDLENBQzFDLENBQUM7SUFDSixDQUFDO0lBRUQsT0FBTztRQUNMLGFBQWE7UUFDYixvQkFBb0IsRUFBRSxDQUFDLFlBQVksQ0FBQyxhQUFhLEVBQUUsSUFBSSxFQUFFLFNBQVMsSUFBSSxFQUFFLENBQUM7YUFDdEUsS0FBSyxDQUFDLEdBQUcsQ0FBQzthQUNWLEdBQUcsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDO2FBQzlCLE1BQU0sQ0FBQyxPQUFPLENBQUM7S0FDbkIsQ0FBQztBQUNKLENBQUMsQ0FBQztBQTdCVyxRQUFBLDhCQUE4QixrQ0E2QnpDIn0=
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.GET = void 0;
|
|
4
|
+
const utils_1 = require("@medusajs/framework/utils");
|
|
5
|
+
const gateway_1 = require("../../../../files/gateway");
|
|
6
|
+
const file_response_1 = require("../../file-response");
|
|
7
|
+
const gateway_options_1 = require("../../gateway-options");
|
|
8
|
+
const GET = async (req, res) => {
|
|
9
|
+
const { signingSecret } = (0, gateway_options_1.resolveFileGatewayRouteOptions)(req.scope);
|
|
10
|
+
const fileKey = (0, gateway_1.verifyPrivateFileGatewayToken)({
|
|
11
|
+
expires: req.validatedQuery.expires,
|
|
12
|
+
signature: req.validatedQuery.signature,
|
|
13
|
+
signingSecret,
|
|
14
|
+
token: req.params.token,
|
|
15
|
+
});
|
|
16
|
+
if (!fileKey) {
|
|
17
|
+
throw new utils_1.MedusaError(utils_1.MedusaError.Types.UNAUTHORIZED, "Invalid or expired file URL.");
|
|
18
|
+
}
|
|
19
|
+
await (0, file_response_1.streamGatewayFile)({
|
|
20
|
+
cacheControl: "private, no-store, max-age=0",
|
|
21
|
+
disposition: "attachment",
|
|
22
|
+
fileKey,
|
|
23
|
+
files: req.scope.resolve(utils_1.Modules.FILE),
|
|
24
|
+
filename: fileKey,
|
|
25
|
+
response: res,
|
|
26
|
+
});
|
|
27
|
+
};
|
|
28
|
+
exports.GET = GET;
|
|
29
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL2ZpbGVzL3ByaXZhdGUvW3Rva2VuXS9yb3V0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFFQSxxREFBaUU7QUFHakUsdURBQTBFO0FBQzFFLHVEQUF3RDtBQUN4RCwyREFBdUU7QUFFaEUsTUFBTSxHQUFHLEdBQUcsS0FBSyxFQUN0QixHQUEwRCxFQUMxRCxHQUFtQixFQUNuQixFQUFFO0lBQ0YsTUFBTSxFQUFFLGFBQWEsRUFBRSxHQUFHLElBQUEsZ0RBQThCLEVBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBRXBFLE1BQU0sT0FBTyxHQUFHLElBQUEsdUNBQTZCLEVBQUM7UUFDNUMsT0FBTyxFQUFFLEdBQUcsQ0FBQyxjQUFjLENBQUMsT0FBTztRQUNuQyxTQUFTLEVBQUUsR0FBRyxDQUFDLGNBQWMsQ0FBQyxTQUFTO1FBQ3ZDLGFBQWE7UUFDYixLQUFLLEVBQUUsR0FBRyxDQUFDLE1BQU0sQ0FBQyxLQUFLO0tBQ3hCLENBQUMsQ0FBQztJQUNILElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUNiLE1BQU0sSUFBSSxtQkFBVyxDQUNuQixtQkFBVyxDQUFDLEtBQUssQ0FBQyxZQUFZLEVBQzlCLDhCQUE4QixDQUMvQixDQUFDO0lBQ0osQ0FBQztJQUVELE1BQU0sSUFBQSxpQ0FBaUIsRUFBQztRQUN0QixZQUFZLEVBQUUsOEJBQThCO1FBQzVDLFdBQVcsRUFBRSxZQUFZO1FBQ3pCLE9BQU87UUFDUCxLQUFLLEVBQUUsR0FBRyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsZUFBTyxDQUFDLElBQUksQ0FBdUI7UUFDNUQsUUFBUSxFQUFFLE9BQU87UUFDakIsUUFBUSxFQUFFLEdBQUc7S0FDZCxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUM7QUEzQlcsUUFBQSxHQUFHLE9BMkJkIn0=
|