@hartl-services/medusa-base 0.3.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 +2164 -29
- package/.medusa/server/src/admin/index.mjs +2166 -31
- 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/admin/plugin-features/[plugin_key]/actions/[action_key]/route.js +31 -0
- package/.medusa/server/src/api/admin/plugin-features/[plugin_key]/actions/[action_key]/runs/route.js +16 -0
- package/.medusa/server/src/api/admin/plugin-features/[plugin_key]/route.js +14 -0
- package/.medusa/server/src/api/admin/plugin-features/[plugin_key]/settings/route.js +22 -0
- package/.medusa/server/src/api/admin/plugin-features/route.js +6 -4
- 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 +186 -5
- package/.medusa/server/src/api/packing-list-response.js +22 -0
- package/.medusa/server/src/api/plugin-actions.js +221 -0
- package/.medusa/server/src/api/plugin-features-http.js +67 -8
- 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/modules/plugin-features/domain/plugin-action-runs.js +92 -0
- package/.medusa/server/src/modules/plugin-features/domain/plugin-settings.js +213 -0
- package/.medusa/server/src/modules/plugin-features/domain/secret-box.js +56 -0
- package/.medusa/server/src/modules/plugin-features/migrations/Migration20260928205031.js +16 -0
- package/.medusa/server/src/modules/plugin-features/migrations/Migration20260928215428.js +17 -0
- package/.medusa/server/src/modules/plugin-features/models/plugin-action-run.js +43 -0
- package/.medusa/server/src/modules/plugin-features/models/plugin-setting-state.js +32 -0
- package/.medusa/server/src/modules/plugin-features/service.js +419 -17
- 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/action-progress.js +67 -0
- package/.medusa/server/src/public/config.js +186 -0
- package/.medusa/server/src/public/descriptor.js +199 -2
- package/.medusa/server/src/public/effective-features.js +9 -5
- package/.medusa/server/src/public/enforcement.js +18 -8
- package/.medusa/server/src/public/gateway.js +19 -0
- package/.medusa/server/src/public/index.js +10 -2
- package/.medusa/server/src/public/instrumentation.js +56 -0
- package/.medusa/server/src/public/module-access.js +14 -0
- package/.medusa/server/src/public/settings.js +17 -0
- package/.medusa/server/src/public/shop-config.js +12 -0
- package/.medusa/server/src/public/shop-master-data.js +95 -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/utils/discover-complete-cart-participants.js +9 -2
- package/.medusa/server/src/utils/discover-plugin-features.js +47 -9
- 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/complete-cart-participants.js +28 -16
- package/.medusa/server/src/workflows/hooks/dismiss-deleted-promotion-cart-links.js +23 -0
- package/README.md +2004 -11
- package/dist/admin-components/features/plugin-features/components/PluginActionsSection.d.ts +6 -0
- package/dist/admin-components/features/plugin-features/components/PluginActionsSection.js +66 -0
- package/dist/admin-components/features/plugin-features/components/PluginDetailPage.d.ts +2 -0
- package/dist/admin-components/features/plugin-features/components/PluginDetailPage.js +9 -0
- package/dist/admin-components/features/plugin-features/components/PluginFeatureGate.d.ts +22 -0
- package/dist/admin-components/features/plugin-features/components/PluginFeatureGate.js +18 -0
- package/dist/admin-components/features/plugin-features/components/PluginFeatureSections.d.ts +11 -0
- package/dist/admin-components/features/plugin-features/components/PluginFeatureSections.js +19 -0
- package/dist/admin-components/features/plugin-features/components/PluginFeaturesCard.d.ts +12 -0
- package/dist/admin-components/features/plugin-features/components/PluginFeaturesCard.js +34 -0
- package/dist/admin-components/features/plugin-features/components/PluginFeaturesSettingsPage.d.ts +5 -0
- package/dist/admin-components/features/plugin-features/components/PluginFeaturesSettingsPage.js +16 -0
- package/dist/admin-components/features/plugin-features/components/PluginHubCard.d.ts +7 -0
- package/dist/admin-components/features/plugin-features/components/PluginHubCard.js +21 -0
- package/dist/admin-components/features/plugin-features/components/PluginPageShell.d.ts +13 -0
- package/dist/admin-components/features/plugin-features/components/PluginPageShell.js +20 -0
- package/dist/admin-components/features/plugin-features/components/PluginSettingsForm.d.ts +7 -0
- package/dist/admin-components/features/plugin-features/components/PluginSettingsForm.js +39 -0
- package/dist/admin-components/features/plugin-features/components/PluginStatusChips.d.ts +5 -0
- package/dist/admin-components/features/plugin-features/components/PluginStatusChips.js +8 -0
- package/dist/admin-components/features/plugin-features/hooks/usePluginFeatureEnabled.d.ts +114 -0
- package/dist/admin-components/features/plugin-features/hooks/usePluginFeatureEnabled.js +40 -0
- package/dist/admin-components/features/plugin-features/hooks/usePluginFeatures.d.ts +392 -0
- package/dist/admin-components/features/plugin-features/hooks/usePluginFeatures.js +128 -0
- package/dist/admin-components/features/plugin-features/hooks/usePluginSettingsForm.d.ts +93 -0
- package/dist/admin-components/features/plugin-features/hooks/usePluginSettingsForm.js +44 -0
- package/dist/admin-components/features/plugin-features/lib/action-runs.d.ts +19 -0
- package/dist/admin-components/features/plugin-features/lib/action-runs.js +74 -0
- package/dist/admin-components/features/plugin-features/lib/plugin-features-admin-client.d.ts +363 -0
- package/dist/admin-components/features/plugin-features/lib/plugin-features-admin-client.js +9 -0
- package/dist/admin-components/features/plugin-features/lib/plugin-paths.d.ts +4 -0
- package/dist/admin-components/features/plugin-features/lib/plugin-paths.js +4 -0
- package/dist/admin-components/features/plugin-features/lib/settings-draft.d.ts +28 -0
- package/dist/admin-components/features/plugin-features/lib/settings-draft.js +86 -0
- package/dist/admin-components/features/plugin-features/queries/pluginFeatureKeys.d.ts +7 -0
- package/dist/admin-components/features/plugin-features/queries/pluginFeatureKeys.js +7 -0
- package/dist/admin-components/i18n/texts.d.ts +90 -0
- package/dist/admin-components/i18n/texts.js +90 -0
- package/dist/admin-components/index.d.ts +14 -0
- package/dist/admin-components/index.js +14 -0
- package/dist/admin-components/lib/errors.d.ts +6 -0
- package/dist/admin-components/lib/errors.js +27 -0
- package/dist/admin-components/lib/sdk.d.ts +2 -0
- package/dist/admin-components/lib/sdk.js +13 -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 +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/action-progress.d.ts +25 -0
- package/dist/public/action-progress.js +66 -0
- package/dist/public/config.d.ts +59 -0
- package/dist/public/config.js +185 -0
- package/dist/public/descriptor.d.ts +3 -2
- package/dist/public/descriptor.js +198 -1
- package/dist/public/effective-features.d.ts +2 -1
- package/dist/public/effective-features.js +8 -4
- package/dist/public/enforcement.d.ts +7 -0
- package/dist/public/enforcement.js +17 -7
- package/dist/public/gateway.d.ts +2 -0
- package/dist/public/gateway.js +18 -0
- package/dist/public/index.d.ts +5 -2
- package/dist/public/index.js +9 -1
- package/dist/public/instrumentation.d.ts +12 -0
- package/dist/public/instrumentation.js +55 -0
- package/dist/public/module-access.d.ts +3 -0
- package/dist/public/module-access.js +13 -0
- package/dist/public/settings.d.ts +11 -0
- package/dist/public/settings.js +16 -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 +25 -0
- package/dist/public/shop-master-data.js +94 -0
- package/dist/public/shop-types.d.ts +7 -0
- package/dist/public/shop-types.js +23 -0
- package/dist/public/types.d.ts +113 -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/dist/utils/discover-plugin-features.d.ts +28 -0
- package/dist/utils/discover-plugin-features.js +96 -0
- package/package.json +53 -6
|
@@ -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=
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.PUT = exports.OPTIONS = void 0;
|
|
4
|
+
const utils_1 = require("@medusajs/framework/utils");
|
|
5
|
+
const gateway_1 = require("../../../../files/gateway");
|
|
6
|
+
const gateway_options_1 = require("../../gateway-options");
|
|
7
|
+
const MAX_UPLOAD_BYTES = 100 * 1024 * 1024;
|
|
8
|
+
const setCorsHeaders = (req, res, allowedOrigins) => {
|
|
9
|
+
const origin = req.get("origin");
|
|
10
|
+
if (origin && allowedOrigins.includes(origin)) {
|
|
11
|
+
res.setHeader("Access-Control-Allow-Origin", origin);
|
|
12
|
+
res.setHeader("Vary", "Origin");
|
|
13
|
+
}
|
|
14
|
+
res.setHeader("Access-Control-Allow-Methods", "PUT, OPTIONS");
|
|
15
|
+
res.setHeader("Access-Control-Allow-Headers", "Content-Type");
|
|
16
|
+
};
|
|
17
|
+
const OPTIONS = async (req, res) => {
|
|
18
|
+
setCorsHeaders(req, res, (0, gateway_options_1.resolveFileGatewayRouteOptions)(req.scope).uploadAllowedOrigins);
|
|
19
|
+
res.status(204).end();
|
|
20
|
+
};
|
|
21
|
+
exports.OPTIONS = OPTIONS;
|
|
22
|
+
const PUT = async (req, res) => {
|
|
23
|
+
const { signingSecret, uploadAllowedOrigins } = (0, gateway_options_1.resolveFileGatewayRouteOptions)(req.scope);
|
|
24
|
+
setCorsHeaders(req, res, uploadAllowedOrigins);
|
|
25
|
+
const fileKey = (0, gateway_1.verifyFileGatewayUploadToken)({
|
|
26
|
+
expires: req.validatedQuery.expires,
|
|
27
|
+
signature: req.validatedQuery.signature,
|
|
28
|
+
signingSecret,
|
|
29
|
+
token: req.params.token,
|
|
30
|
+
});
|
|
31
|
+
if (!fileKey ||
|
|
32
|
+
(!fileKey.startsWith("private/") && !fileKey.startsWith("public/"))) {
|
|
33
|
+
throw new utils_1.MedusaError(utils_1.MedusaError.Types.UNAUTHORIZED, "Invalid or expired file upload URL.");
|
|
34
|
+
}
|
|
35
|
+
const declaredSize = Number(req.get("content-length"));
|
|
36
|
+
if (Number.isFinite(declaredSize) && declaredSize > MAX_UPLOAD_BYTES) {
|
|
37
|
+
throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, `Gateway uploads must not exceed ${MAX_UPLOAD_BYTES} bytes.`);
|
|
38
|
+
}
|
|
39
|
+
const chunks = [];
|
|
40
|
+
let size = 0;
|
|
41
|
+
for await (const chunk of req) {
|
|
42
|
+
const buffer = Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk);
|
|
43
|
+
size += buffer.length;
|
|
44
|
+
if (size > MAX_UPLOAD_BYTES) {
|
|
45
|
+
throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, `Gateway uploads must not exceed ${MAX_UPLOAD_BYTES} bytes.`);
|
|
46
|
+
}
|
|
47
|
+
chunks.push(buffer);
|
|
48
|
+
}
|
|
49
|
+
const files = req.scope.resolve(utils_1.Modules.FILE);
|
|
50
|
+
const access = fileKey.startsWith("private/") ? "private" : "public";
|
|
51
|
+
const mimeType = req.get("content-type")?.split(";", 1)[0]?.trim() ||
|
|
52
|
+
"application/octet-stream";
|
|
53
|
+
const uploaded = await files.createFiles({
|
|
54
|
+
access,
|
|
55
|
+
content: Buffer.concat(chunks).toString("base64"),
|
|
56
|
+
filename: fileKey.slice(fileKey.indexOf("/") + 1),
|
|
57
|
+
mimeType,
|
|
58
|
+
});
|
|
59
|
+
if (uploaded.id !== fileKey) {
|
|
60
|
+
await files.deleteFiles(uploaded.id);
|
|
61
|
+
throw new utils_1.MedusaError(utils_1.MedusaError.Types.UNEXPECTED_STATE, "Gateway upload did not preserve its reserved file key.");
|
|
62
|
+
}
|
|
63
|
+
res.status(204).end();
|
|
64
|
+
};
|
|
65
|
+
exports.PUT = PUT;
|
|
66
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL2ZpbGVzL3VwbG9hZC9bdG9rZW5dL3JvdXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUVBLHFEQUFpRTtBQUdqRSx1REFBeUU7QUFDekUsMkRBQXVFO0FBRXZFLE1BQU0sZ0JBQWdCLEdBQUcsR0FBRyxHQUFHLElBQUksR0FBRyxJQUFJLENBQUM7QUFFM0MsTUFBTSxjQUFjLEdBQUcsQ0FDckIsR0FBa0IsRUFDbEIsR0FBbUIsRUFDbkIsY0FBaUMsRUFDM0IsRUFBRTtJQUNSLE1BQU0sTUFBTSxHQUFHLEdBQUcsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDakMsSUFBSSxNQUFNLElBQUksY0FBYyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO1FBQzlDLEdBQUcsQ0FBQyxTQUFTLENBQUMsNkJBQTZCLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDckQsR0FBRyxDQUFDLFNBQVMsQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDbEMsQ0FBQztJQUNELEdBQUcsQ0FBQyxTQUFTLENBQUMsOEJBQThCLEVBQUUsY0FBYyxDQUFDLENBQUM7SUFDOUQsR0FBRyxDQUFDLFNBQVMsQ0FBQyw4QkFBOEIsRUFBRSxjQUFjLENBQUMsQ0FBQztBQUNoRSxDQUFDLENBQUM7QUFFSyxNQUFNLE9BQU8sR0FBRyxLQUFLLEVBQUUsR0FBa0IsRUFBRSxHQUFtQixFQUFFLEVBQUU7SUFDdkUsY0FBYyxDQUNaLEdBQUcsRUFDSCxHQUFHLEVBQ0gsSUFBQSxnREFBOEIsRUFBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsb0JBQW9CLENBQy9ELENBQUM7SUFDRixHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDO0FBQ3hCLENBQUMsQ0FBQztBQVBXLFFBQUEsT0FBTyxXQU9s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
|
|
@@ -2,24 +2,205 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
const http_1 = require("@medusajs/framework/http");
|
|
4
4
|
const plugin_features_1 = require("@hartl-services/medusa-food-supplements-contracts/schemas/plugin-features");
|
|
5
|
+
const documents_1 = require("@hartl-services/medusa-food-supplements-contracts/schemas/documents");
|
|
6
|
+
const email_1 = require("@hartl-services/medusa-food-supplements-contracts/schemas/email");
|
|
7
|
+
const files_1 = require("@hartl-services/medusa-food-supplements-contracts/schemas/files");
|
|
8
|
+
const plugin_features_2 = require("../documents/plugin-features");
|
|
9
|
+
const plugin_features_3 = require("../email/plugin-features");
|
|
10
|
+
const public_1 = require("../public");
|
|
11
|
+
/**
|
|
12
|
+
* Feature-toggle gate for the Documents routes. Without `methods` Medusa
|
|
13
|
+
* registers the entry with `app.use`, i.e. as a prefix match that runs before
|
|
14
|
+
* every method-specific middleware (authentication included), so a disabled
|
|
15
|
+
* feature answers 404 for the route and everything below it. Without keys only
|
|
16
|
+
* the plugin switch is checked; several keys must all be enabled.
|
|
17
|
+
*/
|
|
18
|
+
const documentsGate = (matcher, ...keys) => ({
|
|
19
|
+
matcher,
|
|
20
|
+
middlewares: [(0, public_1.requirePluginFeature)(plugin_features_2.documentsPluginFeatures, ...keys)],
|
|
21
|
+
});
|
|
22
|
+
// Authentication: Medusa authenticates every /admin route (actor "user";
|
|
23
|
+
// bearer, session or secret API key) before plugin middlewares run
|
|
24
|
+
// (framework 2.19.0 http/router.js), so no second `authenticate` here.
|
|
5
25
|
// Store GETs need nothing beyond Medusa's publishable-key check on /store.
|
|
6
|
-
// Every authenticated Admin user may read and change
|
|
7
|
-
// design).
|
|
26
|
+
// Every authenticated Admin user may read and change toggles and settings
|
|
27
|
+
// and run actions (no RBAC by design).
|
|
8
28
|
exports.default = (0, http_1.defineMiddlewares)({
|
|
9
29
|
routes: [
|
|
10
30
|
{
|
|
11
31
|
matcher: "/admin/plugin-features",
|
|
32
|
+
methods: ["POST"],
|
|
33
|
+
middlewares: [(0, http_1.validateAndTransformBody)(plugin_features_1.UpdatePluginFeaturesSchema)],
|
|
34
|
+
},
|
|
35
|
+
{
|
|
36
|
+
matcher: "/admin/plugin-features/:plugin_key/settings",
|
|
37
|
+
methods: ["POST"],
|
|
38
|
+
middlewares: [(0, http_1.validateAndTransformBody)(plugin_features_1.UpdatePluginSettingsSchema)],
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
matcher: "/admin/plugin-features/:plugin_key/actions/:action_key",
|
|
42
|
+
methods: ["POST"],
|
|
43
|
+
middlewares: [(0, http_1.validateAndTransformBody)(plugin_features_1.RunPluginActionSchema)],
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
matcher: "/admin/plugin-features/:plugin_key/actions/:action_key/runs",
|
|
47
|
+
methods: ["GET"],
|
|
48
|
+
middlewares: [
|
|
49
|
+
(0, http_1.validateAndTransformQuery)(plugin_features_1.ListPluginActionRunsQuerySchema, {
|
|
50
|
+
isList: false,
|
|
51
|
+
}),
|
|
52
|
+
],
|
|
53
|
+
},
|
|
54
|
+
// --- E-Mail ---------------------------------------------------------
|
|
55
|
+
// Feature-toggle gate (see plugin-features.ts). Without `methods` Medusa
|
|
56
|
+
// registers it with `app.use`, a prefix match that runs before every
|
|
57
|
+
// method-specific entry below, so a switched-off plugin answers 404 for
|
|
58
|
+
// the whole Admin mail log and the terms versions.
|
|
59
|
+
// The mail features gate subscribers only; no route belongs to them.
|
|
60
|
+
{
|
|
61
|
+
matcher: "/admin/email",
|
|
62
|
+
middlewares: [(0, public_1.requirePluginFeature)(plugin_features_3.emailPluginFeatures)],
|
|
63
|
+
},
|
|
64
|
+
{
|
|
65
|
+
matcher: "/admin/email/messages",
|
|
66
|
+
methods: ["GET"],
|
|
67
|
+
middlewares: [
|
|
68
|
+
(0, http_1.authenticate)("user", ["session", "bearer"]),
|
|
69
|
+
(0, http_1.validateAndTransformQuery)(email_1.ListAdminEmailMessagesQuerySchema, {
|
|
70
|
+
isList: true,
|
|
71
|
+
}),
|
|
72
|
+
],
|
|
73
|
+
},
|
|
74
|
+
{
|
|
75
|
+
matcher: "/admin/email/messages/:id",
|
|
12
76
|
methods: ["GET"],
|
|
13
77
|
middlewares: [(0, http_1.authenticate)("user", ["session", "bearer"])],
|
|
14
78
|
},
|
|
15
79
|
{
|
|
16
|
-
matcher: "/admin/
|
|
80
|
+
matcher: "/admin/email/messages/:id/resends",
|
|
17
81
|
methods: ["POST"],
|
|
18
82
|
middlewares: [
|
|
19
83
|
(0, http_1.authenticate)("user", ["session", "bearer"]),
|
|
20
|
-
(0, http_1.validateAndTransformBody)(
|
|
84
|
+
(0, http_1.validateAndTransformBody)(email_1.ResendAdminEmailMessageSchema),
|
|
85
|
+
],
|
|
86
|
+
},
|
|
87
|
+
{
|
|
88
|
+
matcher: "/admin/email/terms-versions",
|
|
89
|
+
methods: ["GET"],
|
|
90
|
+
middlewares: [
|
|
91
|
+
(0, http_1.authenticate)("user", ["session", "bearer"]),
|
|
92
|
+
(0, http_1.validateAndTransformQuery)(email_1.ListAdminEmailTermsVersionsQuerySchema, {
|
|
93
|
+
isList: true,
|
|
94
|
+
}),
|
|
95
|
+
],
|
|
96
|
+
},
|
|
97
|
+
{
|
|
98
|
+
bodyParser: { sizeLimit: "7mb" },
|
|
99
|
+
matcher: "/admin/email/terms-versions",
|
|
100
|
+
methods: ["POST"],
|
|
101
|
+
middlewares: [
|
|
102
|
+
(0, http_1.authenticate)("user", ["session", "bearer"]),
|
|
103
|
+
(0, http_1.validateAndTransformBody)(email_1.CreateAdminEmailTermsVersionSchema),
|
|
104
|
+
],
|
|
105
|
+
},
|
|
106
|
+
{
|
|
107
|
+
matcher: "/admin/email/terms-versions/:id/download",
|
|
108
|
+
methods: ["GET"],
|
|
109
|
+
middlewares: [(0, http_1.authenticate)("user", ["session", "bearer"])],
|
|
110
|
+
},
|
|
111
|
+
// --- Dokumente ------------------------------------------------------
|
|
112
|
+
// Feature-toggle gates (see plugin-features.ts). They cover every
|
|
113
|
+
// Documents route and nothing else; subscribers and jobs check the
|
|
114
|
+
// toggles themselves, workflow hooks and the checkout path never do.
|
|
115
|
+
//
|
|
116
|
+
// Plugin switch
|
|
117
|
+
documentsGate("/store/documents"),
|
|
118
|
+
documentsGate("/admin/orders/:id/documents"),
|
|
119
|
+
documentsGate("/admin/orders/:id/packing-lists"),
|
|
120
|
+
// Rechnungen & Stornos
|
|
121
|
+
documentsGate("/store/documents", "invoices"),
|
|
122
|
+
documentsGate("/admin/orders/:id/documents", "invoices"),
|
|
123
|
+
// Packlisten
|
|
124
|
+
documentsGate("/admin/orders/:id/packing-lists", "packing_lists"),
|
|
125
|
+
{
|
|
126
|
+
matcher: "/store/documents",
|
|
127
|
+
methods: ["GET"],
|
|
128
|
+
middlewares: [(0, http_1.authenticate)("customer", ["session", "bearer"])],
|
|
129
|
+
},
|
|
130
|
+
{
|
|
131
|
+
matcher: "/store/documents/:id",
|
|
132
|
+
methods: ["GET"],
|
|
133
|
+
middlewares: [(0, http_1.authenticate)("customer", ["session", "bearer"])],
|
|
134
|
+
},
|
|
135
|
+
{
|
|
136
|
+
matcher: "/store/documents/:id/download",
|
|
137
|
+
methods: ["GET"],
|
|
138
|
+
middlewares: [(0, http_1.authenticate)("customer", ["session", "bearer"])],
|
|
139
|
+
},
|
|
140
|
+
{
|
|
141
|
+
matcher: "/admin/orders/:id/documents",
|
|
142
|
+
methods: ["GET", "POST"],
|
|
143
|
+
middlewares: [(0, http_1.authenticate)("user", ["session", "bearer"])],
|
|
144
|
+
},
|
|
145
|
+
{
|
|
146
|
+
matcher: "/admin/orders/:id/documents/:document_id/download",
|
|
147
|
+
methods: ["GET"],
|
|
148
|
+
middlewares: [(0, http_1.authenticate)("user", ["session", "bearer"])],
|
|
149
|
+
},
|
|
150
|
+
{
|
|
151
|
+
matcher: "/admin/orders/:id/documents/regenerate",
|
|
152
|
+
methods: ["POST"],
|
|
153
|
+
middlewares: [
|
|
154
|
+
(0, http_1.authenticate)("user", ["session", "bearer"]),
|
|
155
|
+
(0, http_1.validateAndTransformBody)(documents_1.RegenerateAdminOrderDocumentBodySchema),
|
|
156
|
+
],
|
|
157
|
+
},
|
|
158
|
+
{
|
|
159
|
+
matcher: "/admin/orders/:id/documents/:document_id/regenerate",
|
|
160
|
+
methods: ["POST"],
|
|
161
|
+
middlewares: [
|
|
162
|
+
(0, http_1.authenticate)("user", ["session", "bearer"]),
|
|
163
|
+
(0, http_1.validateAndTransformBody)(documents_1.RegenerateAdminOrderDocumentBodySchema),
|
|
164
|
+
],
|
|
165
|
+
},
|
|
166
|
+
{
|
|
167
|
+
matcher: "/admin/orders/:id/packing-lists",
|
|
168
|
+
methods: ["GET"],
|
|
169
|
+
middlewares: [(0, http_1.authenticate)("user", ["session", "bearer"])],
|
|
170
|
+
},
|
|
171
|
+
{
|
|
172
|
+
matcher: "/admin/orders/:id/packing-lists/:fulfillment_id/download",
|
|
173
|
+
methods: ["GET"],
|
|
174
|
+
middlewares: [(0, http_1.authenticate)("user", ["session", "bearer"])],
|
|
175
|
+
},
|
|
176
|
+
{
|
|
177
|
+
matcher: "/admin/orders/:id/packing-lists/:fulfillment_id/retry",
|
|
178
|
+
methods: ["POST"],
|
|
179
|
+
middlewares: [
|
|
180
|
+
(0, http_1.authenticate)("user", ["session", "bearer"]),
|
|
181
|
+
(0, http_1.validateAndTransformBody)(documents_1.RetryAdminOrderPackingListBodySchema),
|
|
182
|
+
],
|
|
183
|
+
},
|
|
184
|
+
// --- Dateispeicher (/files gateway) ---------------------------------
|
|
185
|
+
{
|
|
186
|
+
matcher: "/files/private/:token",
|
|
187
|
+
methods: ["GET"],
|
|
188
|
+
middlewares: [
|
|
189
|
+
(0, http_1.validateAndTransformQuery)(files_1.PrivateFileGatewayDownloadQuerySchema, {
|
|
190
|
+
isList: false,
|
|
191
|
+
}),
|
|
192
|
+
],
|
|
193
|
+
},
|
|
194
|
+
{
|
|
195
|
+
bodyParser: false,
|
|
196
|
+
matcher: "/files/upload/:token",
|
|
197
|
+
methods: ["PUT"],
|
|
198
|
+
middlewares: [
|
|
199
|
+
(0, http_1.validateAndTransformQuery)(files_1.PrivateFileGatewayDownloadQuerySchema, {
|
|
200
|
+
isList: false,
|
|
201
|
+
}),
|
|
21
202
|
],
|
|
22
203
|
},
|
|
23
204
|
],
|
|
24
205
|
});
|
|
25
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
206
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWlkZGxld2FyZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYXBpL21pZGRsZXdhcmVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsbURBS2lDO0FBQ2pDLCtHQUtrRjtBQUNsRixtR0FHNEU7QUFDNUUsMkZBS3dFO0FBQ3hFLDJGQUF1SDtBQUV2SCxrRUFHcUM7QUFDckMsOERBQThEO0FBQzlELHNDQUFnRDtBQUVoRDs7Ozs7O0dBTUc7QUFDSCxNQUFNLGFBQWEsR0FBRyxDQUFDLE9BQWUsRUFBRSxHQUFHLElBQTJCLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDMUUsT0FBTztJQUNQLFdBQVcsRUFBRSxDQUFDLElBQUEsNkJBQW9CLEVBQUMseUNBQXVCLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQztDQUN0RSxDQUFDLENBQUE7QUFFRix5RUFBeUU7QUFDekUsbUVBQW1FO0FBQ25FLHVFQUF1RTtBQUN2RSwyRUFBMkU7QUFDM0UsMEVBQTBFO0FBQzFFLHVDQUF1QztBQUN2QyxrQkFBZSxJQUFBLHdCQUFpQixFQUFDO0lBQy9CLE1BQU0sRUFBRTtRQUNOO1lBQ0UsT0FBTyxFQUFFLHdCQUF3QjtZQUNqQyxPQUFPLEVBQUUsQ0FBQyxNQUFNLENBQUM7WUFDakIsV0FBVyxFQUFFLENBQUMsSUFBQSwrQkFBd0IsRUFBQyw0Q0FBMEIsQ0FBQyxDQUFDO1NBQ3BFO1FBQ0Q7WUFDRSxPQUFPLEVBQUUsNkNBQTZDO1lBQ3RELE9BQU8sRUFBRSxDQUFDLE1BQU0sQ0FBQztZQUNqQixXQUFXLEVBQUUsQ0FBQyxJQUFBLCtCQUF3QixFQUFDLDRDQUEwQixDQUFDLENBQUM7U0FDcEU7UUFDRDtZQUNFLE9BQU8sRUFBRSx3REFBd0Q7WUFDakUsT0FBTyxFQUFFLENBQUMsTUFBTSxDQUFDO1lBQ2pCLFdBQVcsRUFBRSxDQUFDLElBQUEsK0JBQXdCLEVBQUMsdUNBQXFCLENBQUMsQ0FBQztTQUMvRDtRQUNEO1lBQ0UsT0FB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
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.toPackingListSummary = void 0;
|
|
4
|
+
const toPackingListSummary = (value) => {
|
|
5
|
+
const latestRevision = value.revisions[0] ?? null;
|
|
6
|
+
const latestReady = value.revisions.find((revision) => revision.generation_status === "ready");
|
|
7
|
+
const snapshot = latestRevision?.snapshot ?? latestReady?.snapshot ?? null;
|
|
8
|
+
return {
|
|
9
|
+
id: value.packing_list.id,
|
|
10
|
+
fulfillment_id: value.packing_list.fulfillment_id,
|
|
11
|
+
status: value.packing_list.lifecycle_status === "canceled"
|
|
12
|
+
? "canceled"
|
|
13
|
+
: (latestRevision?.generation_status ?? "pending"),
|
|
14
|
+
number: snapshot?.document.number ?? null,
|
|
15
|
+
source_revision: latestRevision?.source_revision ?? null,
|
|
16
|
+
generated_at: latestReady?.generated_at?.toISOString() ?? null,
|
|
17
|
+
location_name: snapshot?.fulfillment.location_name ?? null,
|
|
18
|
+
failure_reason: latestRevision?.failure_reason ?? null,
|
|
19
|
+
};
|
|
20
|
+
};
|
|
21
|
+
exports.toPackingListSummary = toPackingListSummary;
|
|
22
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFja2luZy1saXN0LXJlc3BvbnNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2FwaS9wYWNraW5nLWxpc3QtcmVzcG9uc2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBSU8sTUFBTSxvQkFBb0IsR0FBRyxDQUNsQyxLQUErQixFQUNYLEVBQUU7SUFDdEIsTUFBTSxjQUFjLEdBQUcsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUE7SUFDakQsTUFBTSxXQUFXLEdBQUcsS0FBSyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQ3RDLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxRQUFRLENBQUMsaUJBQWlCLEtBQUssT0FBTyxDQUNyRCxDQUFBO0lBQ0QsTUFBTSxRQUFRLEdBQUcsY0FBYyxFQUFFLFFBQVEsSUFBSSxXQUFXLEVBQUUsUUFBUSxJQUFJLElBQUksQ0FBQTtJQUUxRSxPQUFPO1FBQ0wsRUFBRSxFQUFFLEtBQUssQ0FBQyxZQUFZLENBQUMsRUFBRTtRQUN6QixjQUFjLEVBQUUsS0FBSyxDQUFDLFlBQVksQ0FBQyxjQUFjO1FBQ2pELE1BQU0sRUFDSixLQUFLLENBQUMsWUFBWSxDQUFDLGdCQUFnQixLQUFLLFVBQVU7WUFDaEQsQ0FBQyxDQUFDLFVBQVU7WUFDWixDQUFDLENBQUMsQ0FBQyxjQUFjLEVBQUUsaUJBQWlCLElBQUksU0FBUyxDQUFDO1FBQ3RELE1BQU0sRUFBRSxRQUFRLEVBQUUsUUFBUSxDQUFDLE1BQU0sSUFBSSxJQUFJO1FBQ3pDLGVBQWUsRUFBRSxjQUFjLEVBQUUsZUFBZSxJQUFJLElBQUk7UUFDeEQsWUFBWSxFQUFFLFdBQVcsRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFFLElBQUksSUFBSTtRQUM5RCxhQUFhLEVBQUUsUUFBUSxFQUFFLFdBQVcsQ0FBQyxhQUFhLElBQUksSUFBSTtRQUMxRCxjQUFjLEVBQUUsY0FBYyxFQUFFLGNBQWMsSUFBSSxJQUFJO0tBQ3ZELENBQUE7QUFDSCxDQUFDLENBQUE7QUF0QlksUUFBQSxvQkFBb0Isd0JBc0JoQyJ9
|