@hartl-services/medusa-base 2.5.0 → 2.6.1
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/admin-components/features/plugin-features/components/ImageSettingInput.js +48 -0
- package/{dist → .medusa/server/src/admin}/admin-components/features/plugin-features/components/PluginActionsSection.js +3 -2
- package/.medusa/server/src/admin/admin-components/features/plugin-features/components/PluginFeaturesSettingsPage.js +17 -0
- package/.medusa/server/src/admin/admin-components/features/plugin-features/components/PluginPageShell.js +20 -0
- package/{dist → .medusa/server/src/admin}/admin-components/features/plugin-features/components/PluginSettingsForm.js +16 -3
- package/{dist → .medusa/server/src/admin}/admin-components/features/plugin-features/hooks/usePluginFeatureEnabled.d.ts +5 -1
- package/{dist → .medusa/server/src/admin}/admin-components/features/plugin-features/hooks/usePluginFeatures.d.ts +20 -4
- package/{dist → .medusa/server/src/admin}/admin-components/features/plugin-features/hooks/usePluginFeatures.js +1 -1
- package/{dist → .medusa/server/src/admin}/admin-components/features/plugin-features/hooks/usePluginSettingsForm.d.ts +5 -1
- package/{dist → .medusa/server/src/admin}/admin-components/features/plugin-features/lib/action-runs.d.ts +1 -1
- package/{dist → .medusa/server/src/admin}/admin-components/features/plugin-features/lib/action-runs.js +3 -2
- package/{dist → .medusa/server/src/admin}/admin-components/features/plugin-features/lib/plugin-features-admin-client.d.ts +20 -4
- package/{dist → .medusa/server/src/admin}/admin-components/features/plugin-features/lib/plugin-features-admin-client.js +1 -1
- package/{dist → .medusa/server/src/admin}/admin-components/features/plugin-features/lib/settings-draft.d.ts +17 -2
- package/{dist → .medusa/server/src/admin}/admin-components/features/plugin-features/lib/settings-draft.js +33 -1
- package/{dist → .medusa/server/src/admin}/admin-components/i18n/texts.d.ts +3 -0
- package/{dist → .medusa/server/src/admin}/admin-components/i18n/texts.js +3 -0
- package/.medusa/server/src/admin/admin-components/index.d.ts +36 -0
- package/.medusa/server/src/admin/admin-components/index.js +37 -0
- package/.medusa/server/src/admin/admin-components/shared/lib/date-input.d.ts +8 -0
- package/.medusa/server/src/admin/admin-components/shared/lib/date-input.js +43 -0
- package/.medusa/server/src/admin/admin-components/shared/lib/errors.d.ts +9 -0
- package/{dist/admin-components → .medusa/server/src/admin/admin-components/shared}/lib/errors.js +4 -6
- package/.medusa/server/src/admin/admin-components/shared/lib/file-validation.d.ts +24 -0
- package/.medusa/server/src/admin/admin-components/shared/lib/file-validation.js +18 -0
- package/.medusa/server/src/admin/admin-components/shared/lib/format.d.ts +32 -0
- package/.medusa/server/src/admin/admin-components/shared/lib/format.js +77 -0
- package/.medusa/server/src/admin/admin-components/shared/lib/pdf-preview.d.ts +16 -0
- package/.medusa/server/src/admin/admin-components/shared/lib/pdf-preview.js +31 -0
- package/.medusa/server/src/admin/admin-components/shared/lib/pdf.d.ts +6 -0
- package/.medusa/server/src/admin/admin-components/shared/lib/pdf.js +13 -0
- package/.medusa/server/src/admin/admin-components/shared/lib/use-debounced-value.d.ts +2 -0
- package/.medusa/server/src/admin/admin-components/shared/lib/use-debounced-value.js +10 -0
- package/.medusa/server/src/admin/admin-components/shared/lib/use-pdf-preview.d.ts +24 -0
- package/.medusa/server/src/admin/admin-components/shared/lib/use-pdf-preview.js +47 -0
- package/.medusa/server/src/admin/admin-components/shared/ui/AdminDatePicker.d.ts +8 -0
- package/.medusa/server/src/admin/admin-components/shared/ui/AdminDatePicker.js +9 -0
- package/.medusa/server/src/admin/admin-components/shared/ui/BackLink.d.ts +8 -0
- package/.medusa/server/src/admin/admin-components/shared/ui/BackLink.js +5 -0
- package/.medusa/server/src/admin/admin-components/shared/ui/DateRangeFilter.d.ts +20 -0
- package/.medusa/server/src/admin/admin-components/shared/ui/DateRangeFilter.js +17 -0
- package/.medusa/server/src/admin/admin-components/shared/ui/FilePickerButton.d.ts +14 -0
- package/.medusa/server/src/admin/admin-components/shared/ui/FilePickerButton.js +14 -0
- package/.medusa/server/src/admin/admin-components/shared/ui/MappedStatusBadge.d.ts +17 -0
- package/.medusa/server/src/admin/admin-components/shared/ui/MappedStatusBadge.js +12 -0
- package/.medusa/server/src/admin/admin-components/shared/ui/OffsetTablePagination.d.ts +15 -0
- package/.medusa/server/src/admin/admin-components/shared/ui/OffsetTablePagination.js +19 -0
- package/.medusa/server/src/admin/admin-components/shared/ui/PdfPreviewModal.d.ts +20 -0
- package/.medusa/server/src/admin/admin-components/shared/ui/PdfPreviewModal.js +7 -0
- package/.medusa/server/src/admin/admin-components/shared/ui/PluginFeatureRoute.d.ts +19 -0
- package/.medusa/server/src/admin/admin-components/shared/ui/PluginFeatureRoute.js +16 -0
- package/.medusa/server/src/admin/admin-components/shared/ui/QueryState.d.ts +24 -0
- package/.medusa/server/src/admin/admin-components/shared/ui/QueryState.js +23 -0
- package/.medusa/server/src/admin/admin-components/shared/ui/SearchableReferenceField.d.ts +63 -0
- package/.medusa/server/src/admin/admin-components/shared/ui/SearchableReferenceField.js +84 -0
- package/.medusa/server/src/admin/admin-components/shared/ui/SectionHeader.d.ts +15 -0
- package/.medusa/server/src/admin/admin-components/shared/ui/SectionHeader.js +13 -0
- package/.medusa/server/src/admin/admin-components/shared/ui/mapped-status.d.ts +6 -0
- package/.medusa/server/src/admin/admin-components/shared/ui/mapped-status.js +10 -0
- package/.medusa/server/src/admin/admin-components/shared/ui/offset-pagination.d.ts +17 -0
- package/.medusa/server/src/admin/admin-components/shared/ui/offset-pagination.js +15 -0
- package/.medusa/server/src/admin/admin-components/shared/ui/reference-results-state.d.ts +16 -0
- package/.medusa/server/src/admin/admin-components/shared/ui/reference-results-state.js +13 -0
- package/.medusa/server/src/admin/admin-components/shared/ui/rich-text-editor/InsertMenu.d.ts +8 -0
- package/.medusa/server/src/admin/admin-components/shared/ui/rich-text-editor/InsertMenu.js +10 -0
- package/.medusa/server/src/admin/admin-components/shared/ui/rich-text-editor/LinkPrompt.d.ts +14 -0
- package/.medusa/server/src/admin/admin-components/shared/ui/rich-text-editor/LinkPrompt.js +26 -0
- package/.medusa/server/src/admin/admin-components/shared/ui/rich-text-editor/RichTextEditor.d.ts +15 -0
- package/.medusa/server/src/admin/admin-components/shared/ui/rich-text-editor/RichTextEditor.js +8 -0
- package/.medusa/server/src/admin/admin-components/shared/ui/rich-text-editor/RichTextToolbar.d.ts +10 -0
- package/.medusa/server/src/admin/admin-components/shared/ui/rich-text-editor/RichTextToolbar.js +49 -0
- package/.medusa/server/src/admin/admin-components/shared/ui/rich-text-editor/SlashMenu.d.ts +11 -0
- package/.medusa/server/src/admin/admin-components/shared/ui/rich-text-editor/SlashMenu.js +44 -0
- package/.medusa/server/src/admin/admin-components/shared/ui/rich-text-editor/build-extensions.d.ts +8 -0
- package/.medusa/server/src/admin/admin-components/shared/ui/rich-text-editor/build-extensions.js +43 -0
- package/.medusa/server/src/admin/admin-components/shared/ui/rich-text-editor/drag-handle.d.ts +15 -0
- package/.medusa/server/src/admin/admin-components/shared/ui/rich-text-editor/drag-handle.js +161 -0
- package/.medusa/server/src/admin/admin-components/shared/ui/rich-text-editor/drag-target.d.ts +30 -0
- package/.medusa/server/src/admin/admin-components/shared/ui/rich-text-editor/drag-target.js +47 -0
- package/.medusa/server/src/admin/admin-components/shared/ui/rich-text-editor/editor-styles.d.ts +6 -0
- package/.medusa/server/src/admin/admin-components/shared/ui/rich-text-editor/editor-styles.js +46 -0
- package/.medusa/server/src/admin/admin-components/shared/ui/rich-text-editor/index.d.ts +9 -0
- package/.medusa/server/src/admin/admin-components/shared/ui/rich-text-editor/index.js +6 -0
- package/.medusa/server/src/admin/admin-components/shared/ui/rich-text-editor/link-href.d.ts +8 -0
- package/.medusa/server/src/admin/admin-components/shared/ui/rich-text-editor/link-href.js +21 -0
- package/.medusa/server/src/admin/admin-components/shared/ui/rich-text-editor/link-policy.d.ts +13 -0
- package/.medusa/server/src/admin/admin-components/shared/ui/rich-text-editor/link-policy.js +20 -0
- package/.medusa/server/src/admin/admin-components/shared/ui/rich-text-editor/slash-command.d.ts +13 -0
- package/.medusa/server/src/admin/admin-components/shared/ui/rich-text-editor/slash-command.js +60 -0
- package/.medusa/server/src/admin/admin-components/shared/ui/rich-text-editor/slash-items.d.ts +25 -0
- package/.medusa/server/src/admin/admin-components/shared/ui/rich-text-editor/slash-items.js +10 -0
- package/.medusa/server/src/admin/admin-components/shared/ui/rich-text-editor/tiptap.d.ts +7 -0
- package/.medusa/server/src/admin/admin-components/shared/ui/rich-text-editor/tiptap.js +7 -0
- package/.medusa/server/src/admin/admin-components/shared/ui/rich-text-editor/use-rich-text-editor.d.ts +44 -0
- package/.medusa/server/src/admin/admin-components/shared/ui/rich-text-editor/use-rich-text-editor.js +37 -0
- package/.medusa/server/src/admin/index.js +4519 -1447
- package/.medusa/server/src/admin/index.mjs +4521 -1452
- package/.medusa/server/src/api/admin/email/attachments/[id]/mail-kinds/route.js +16 -0
- package/.medusa/server/src/api/admin/email/attachments/[id]/route.js +15 -0
- package/.medusa/server/src/api/admin/email/attachments/[id]/versions/[version_id]/download/route.js +16 -0
- package/.medusa/server/src/api/admin/email/attachments/[id]/versions/route.js +41 -0
- package/.medusa/server/src/api/admin/email/attachments/route.js +21 -0
- package/.medusa/server/src/api/admin/email/templates/[kind]/preview/route.js +31 -0
- package/.medusa/server/src/api/admin/email/templates/[kind]/route.js +28 -0
- package/.medusa/server/src/api/admin/email/templates/[kind]/send-test/route.js +179 -0
- package/.medusa/server/src/api/admin/email/templates/[kind]/test-sources/route.js +19 -0
- package/.medusa/server/src/api/admin/email/templates/route.js +15 -0
- package/.medusa/server/src/api/admin/plugin-features/[plugin_key]/actions/[action_key]/route.js +2 -2
- package/.medusa/server/src/api/admin/plugin-features/[plugin_key]/actions/[action_key]/runs/route.js +2 -2
- package/.medusa/server/src/api/admin/plugin-features/[plugin_key]/route.js +2 -2
- package/.medusa/server/src/api/admin/plugin-features/[plugin_key]/settings/route.js +2 -2
- package/.medusa/server/src/api/admin/plugin-features/route.js +2 -2
- package/.medusa/server/src/api/attachment-download-response.js +12 -0
- package/.medusa/server/src/api/email-template-response.js +43 -0
- package/.medusa/server/src/api/middlewares.js +75 -17
- package/.medusa/server/src/api/plugin-actions.js +6 -5
- package/.medusa/server/src/api/plugin-features-http.js +4 -9
- package/.medusa/server/src/api/store/carts/[id]/completion-check/route.js +2 -2
- package/.medusa/server/src/api/store/plugin-features/[plugin_key]/route.js +2 -2
- package/.medusa/server/src/api/store/plugin-features/route.js +2 -2
- package/.medusa/server/src/documents/plugin-features.js +1 -7
- package/.medusa/server/src/documents/templates/financial-document.js +12 -11
- package/.medusa/server/src/documents/templates/html-factory.js +1 -1
- package/.medusa/server/src/documents/templates/html-utils.js +4 -10
- package/.medusa/server/src/documents/templates/layout.js +30 -11
- package/.medusa/server/src/documents/templates/packing-list.js +8 -7
- package/.medusa/server/src/documents/utils/document-render-settings.js +9 -6
- package/.medusa/server/src/email/application/handle-customer-verification-event.js +8 -3
- package/.medusa/server/src/email/application/handle-invite-event.js +8 -3
- package/.medusa/server/src/email/application/handle-password-reset-event.js +8 -3
- package/.medusa/server/src/email/application/notification-attachments.js +86 -0
- package/.medusa/server/src/email/application/template-data-from-order.js +339 -0
- package/.medusa/server/src/email/config/index.js +5 -29
- package/.medusa/server/src/email/domain/business-keys.js +5 -5
- package/.medusa/server/src/email/domain/documents-fact-fingerprint.js +3 -3
- package/.medusa/server/src/email/domain/order-summary.js +21 -27
- package/.medusa/server/src/email/domain/refund-summary.js +7 -12
- package/.medusa/server/src/email/domain/return-summary.js +32 -38
- package/.medusa/server/src/email/domain/shipment-summary.js +22 -28
- package/.medusa/server/src/email/plugin-features.js +2 -10
- package/.medusa/server/src/email/rendering/calendar-dates.js +19 -0
- package/.medusa/server/src/email/rendering/default-templates.js +99 -682
- package/.medusa/server/src/email/rendering/email-html.js +189 -0
- package/.medusa/server/src/email/rendering/load-email-shop-details.js +14 -12
- package/.medusa/server/src/email/rendering/render-email.js +46 -13
- package/.medusa/server/src/email/rendering/resolve-shop-configuration.js +3 -14
- package/.medusa/server/src/email/templates/blocks/dynamic-blocks.js +427 -0
- package/.medusa/server/src/email/templates/blocks/placeholders.js +71 -0
- package/.medusa/server/src/email/templates/blocks/render-document.js +137 -0
- package/.medusa/server/src/email/templates/code-override.js +18 -0
- package/.medusa/server/src/email/templates/defaults/documents.js +129 -0
- package/.medusa/server/src/email/templates/defaults/subjects.js +62 -0
- package/.medusa/server/src/email/templates/defaults/texts.js +42 -0
- package/.medusa/server/src/email/templates/index.js +22 -0
- package/.medusa/server/src/email/templates/load-template.js +39 -0
- package/.medusa/server/src/email/templates/preview.js +33 -0
- package/.medusa/server/src/email/templates/render.js +70 -0
- package/.medusa/server/src/email/templates/sample-data.js +165 -0
- package/.medusa/server/src/email/templates/types.js +3 -0
- package/.medusa/server/src/email/templates/validate.js +113 -0
- package/.medusa/server/src/files/config/index.js +6 -9
- package/.medusa/server/src/migration-scripts/move-logo-to-shop-appearance.js +53 -0
- package/.medusa/server/src/modules/documents/domain/cancellation-snapshot.js +4 -3
- package/.medusa/server/src/modules/documents/domain/merchant.js +4 -3
- package/.medusa/server/src/modules/documents/domain/options.js +3 -5
- package/.medusa/server/src/modules/documents/domain/tax-breakdown.js +4 -7
- package/.medusa/server/src/modules/documents/service.js +12 -33
- package/.medusa/server/src/modules/email/domain/attachment.js +22 -8
- package/.medusa/server/src/modules/email/migrations/Migration20261009083539.js +80 -0
- package/.medusa/server/src/modules/email/migrations/Migration20261009100654.js +17 -0
- package/.medusa/server/src/modules/email/models/email-attachment-document-version.js +39 -0
- package/.medusa/server/src/modules/email/models/email-attachment-document.js +27 -0
- package/.medusa/server/src/modules/email/models/email-template.js +25 -0
- package/.medusa/server/src/modules/email/service.js +370 -93
- package/.medusa/server/src/modules/plugin-features/domain/plugin-settings.js +9 -11
- package/.medusa/server/src/modules/plugin-features/service.js +2 -1
- package/.medusa/server/src/providers/s3-cache/cache/cache-manager.js +3 -3
- package/.medusa/server/src/providers/s3-cache/s3-object-store.js +3 -9
- package/.medusa/server/src/providers/smtp/service.js +13 -13
- package/.medusa/server/src/public/descriptor.js +16 -18
- package/.medusa/server/src/public/enforcement.js +29 -1
- package/.medusa/server/src/public/index.js +8 -2
- package/.medusa/server/src/public/module-access.js +9 -2
- package/.medusa/server/src/public/shop-master-data.js +109 -18
- package/.medusa/server/src/shared/lib/coerce.js +26 -0
- package/.medusa/server/src/shared/lib/collections.js +19 -0
- package/.medusa/server/src/shared/lib/dates.js +43 -0
- package/.medusa/server/src/shared/lib/errors.js +11 -0
- package/.medusa/server/src/shared/lib/hash.js +8 -0
- package/.medusa/server/src/shared/lib/index.js +29 -0
- package/.medusa/server/src/shared/lib/logging.js +61 -0
- package/.medusa/server/src/shared/lib/money.js +47 -0
- package/.medusa/server/src/shared/lib/text.js +53 -0
- package/.medusa/server/src/shared/lib/transaction.js +58 -0
- package/.medusa/server/src/{api → shared/lib}/wire-response.js +1 -1
- package/.medusa/server/src/shop-config/options.js +3 -5
- package/.medusa/server/src/subscribers/packing-list-fulfillment-canceled.js +4 -6
- package/.medusa/server/src/workflows/documents/issue-invoice-after-shipment.js +10 -12
- package/.medusa/server/src/workflows/documents/issue-packing-list.js +5 -6
- package/.medusa/server/src/workflows/documents/reconcile-order-cancellation.js +6 -8
- package/.medusa/server/src/workflows/email/dispatch-email-message.js +11 -41
- package/.medusa/server/src/workflows/email/prepare-order-received-email.js +2 -2
- package/.medusa/server/src/workflows/hooks/complete-cart-participants.js +4 -8
- package/README.md +427 -54
- package/dist/documents/templates/financial-document.js +11 -10
- package/dist/documents/templates/html-factory.d.ts +1 -1
- package/dist/documents/templates/html-factory.js +1 -1
- package/dist/documents/templates/html-utils.d.ts +0 -1
- package/dist/documents/templates/html-utils.js +3 -9
- package/dist/documents/templates/layout.js +29 -10
- package/dist/documents/templates/packing-list.js +7 -6
- package/dist/documents/types/documents.d.ts +7 -1
- package/dist/email/config/index.js +4 -28
- package/dist/email/types/shop-configuration.d.ts +6 -5
- package/dist/files/config/index.js +5 -8
- package/dist/modules/documents/domain/options.js +2 -4
- package/dist/public/descriptor.js +15 -17
- package/dist/public/enforcement.d.ts +21 -1
- package/dist/public/enforcement.js +28 -0
- package/dist/public/index.d.ts +3 -2
- package/dist/public/index.js +7 -1
- package/dist/public/module-access.d.ts +8 -0
- package/dist/public/module-access.js +8 -1
- package/dist/public/shop-master-data.d.ts +22 -5
- package/dist/public/shop-master-data.js +108 -17
- package/dist/public/types.d.ts +10 -2
- package/dist/shared/lib/coerce.d.ts +19 -0
- package/dist/shared/lib/coerce.js +25 -0
- package/dist/shared/lib/collections.d.ts +3 -0
- package/dist/shared/lib/collections.js +18 -0
- package/dist/shared/lib/dates.d.ts +12 -0
- package/dist/shared/lib/dates.js +42 -0
- package/dist/shared/lib/errors.d.ts +2 -0
- package/dist/shared/lib/errors.js +10 -0
- package/dist/shared/lib/hash.d.ts +2 -0
- package/dist/shared/lib/hash.js +7 -0
- package/dist/shared/lib/index.d.ts +10 -0
- package/dist/shared/lib/index.js +28 -0
- package/dist/shared/lib/logging.d.ts +26 -0
- package/dist/shared/lib/logging.js +60 -0
- package/dist/shared/lib/money.d.ts +13 -0
- package/dist/shared/lib/money.js +46 -0
- package/dist/shared/lib/text.d.ts +19 -0
- package/dist/shared/lib/text.js +52 -0
- package/dist/shared/lib/transaction.d.ts +26 -0
- package/dist/shared/lib/transaction.js +57 -0
- package/dist/shared/lib/wire-response.d.ts +6 -0
- package/dist/shared/lib/wire-response.js +9 -0
- package/dist/shop-config/options.js +2 -4
- package/package.json +19 -4
- package/.medusa/server/src/api/admin/email/terms-versions/[id]/download/route.js +0 -16
- package/.medusa/server/src/api/admin/email/terms-versions/route.js +0 -47
- package/.medusa/server/src/api/terms-download-response.js +0 -12
- package/.medusa/server/src/modules/email/models/email-terms-version.js +0 -37
- package/dist/admin-components/features/plugin-features/components/ImageSettingInput.js +0 -42
- package/dist/admin-components/features/plugin-features/components/PluginFeaturesSettingsPage.js +0 -16
- package/dist/admin-components/features/plugin-features/components/PluginPageShell.js +0 -20
- package/dist/admin-components/features/plugin-features/lib/image-upload.d.ts +0 -6
- package/dist/admin-components/features/plugin-features/lib/image-upload.js +0 -17
- package/dist/admin-components/index.d.ts +0 -14
- package/dist/admin-components/index.js +0 -14
- package/dist/admin-components/lib/errors.d.ts +0 -6
- /package/{dist → .medusa/server/src/admin}/admin-components/features/plugin-features/components/ImageSettingInput.d.ts +0 -0
- /package/{dist → .medusa/server/src/admin}/admin-components/features/plugin-features/components/PluginActionsSection.d.ts +0 -0
- /package/{dist → .medusa/server/src/admin}/admin-components/features/plugin-features/components/PluginDetailPage.d.ts +0 -0
- /package/{dist → .medusa/server/src/admin}/admin-components/features/plugin-features/components/PluginDetailPage.js +0 -0
- /package/{dist → .medusa/server/src/admin}/admin-components/features/plugin-features/components/PluginFeatureGate.d.ts +0 -0
- /package/{dist → .medusa/server/src/admin}/admin-components/features/plugin-features/components/PluginFeatureGate.js +0 -0
- /package/{dist → .medusa/server/src/admin}/admin-components/features/plugin-features/components/PluginFeatureSections.d.ts +0 -0
- /package/{dist → .medusa/server/src/admin}/admin-components/features/plugin-features/components/PluginFeatureSections.js +0 -0
- /package/{dist → .medusa/server/src/admin}/admin-components/features/plugin-features/components/PluginFeaturesCard.d.ts +0 -0
- /package/{dist → .medusa/server/src/admin}/admin-components/features/plugin-features/components/PluginFeaturesCard.js +0 -0
- /package/{dist → .medusa/server/src/admin}/admin-components/features/plugin-features/components/PluginFeaturesSettingsPage.d.ts +0 -0
- /package/{dist → .medusa/server/src/admin}/admin-components/features/plugin-features/components/PluginHubCard.d.ts +0 -0
- /package/{dist → .medusa/server/src/admin}/admin-components/features/plugin-features/components/PluginHubCard.js +0 -0
- /package/{dist → .medusa/server/src/admin}/admin-components/features/plugin-features/components/PluginPageShell.d.ts +0 -0
- /package/{dist → .medusa/server/src/admin}/admin-components/features/plugin-features/components/PluginSettingsForm.d.ts +0 -0
- /package/{dist → .medusa/server/src/admin}/admin-components/features/plugin-features/components/PluginStatusChips.d.ts +0 -0
- /package/{dist → .medusa/server/src/admin}/admin-components/features/plugin-features/components/PluginStatusChips.js +0 -0
- /package/{dist → .medusa/server/src/admin}/admin-components/features/plugin-features/hooks/usePluginFeatureEnabled.js +0 -0
- /package/{dist → .medusa/server/src/admin}/admin-components/features/plugin-features/hooks/usePluginSettingsForm.js +0 -0
- /package/{dist → .medusa/server/src/admin}/admin-components/features/plugin-features/lib/plugin-paths.d.ts +0 -0
- /package/{dist → .medusa/server/src/admin}/admin-components/features/plugin-features/lib/plugin-paths.js +0 -0
- /package/{dist → .medusa/server/src/admin}/admin-components/features/plugin-features/queries/pluginFeatureKeys.d.ts +0 -0
- /package/{dist → .medusa/server/src/admin}/admin-components/features/plugin-features/queries/pluginFeatureKeys.js +0 -0
- /package/{dist/admin-components → .medusa/server/src/admin/admin-components/shared}/lib/sdk.d.ts +0 -0
- /package/{dist/admin-components → .medusa/server/src/admin/admin-components/shared}/lib/sdk.js +0 -0
|
@@ -1,3 +1,11 @@
|
|
|
1
1
|
import type { MedusaContainer } from "@medusajs/framework/types";
|
|
2
2
|
/** Resolves the base module or fails with a clear `UNEXPECTED_STATE`. */
|
|
3
3
|
export declare const resolveBaseModule: <T>(container: MedusaContainer) => T;
|
|
4
|
+
/**
|
|
5
|
+
* Whether the base module is registered, for a boot-time check that names the
|
|
6
|
+
* problem ("add @hartl-services/medusa-base to medusa-config") instead of
|
|
7
|
+
* failing at the first request.
|
|
8
|
+
*/
|
|
9
|
+
export declare const isBasePluginRegistered: (container: {
|
|
10
|
+
hasRegistration(name: string): boolean;
|
|
11
|
+
}) => boolean;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.resolveBaseModule = void 0;
|
|
3
|
+
exports.isBasePluginRegistered = exports.resolveBaseModule = void 0;
|
|
4
4
|
const utils_1 = require("@medusajs/framework/utils");
|
|
5
5
|
const constants_1 = require("./constants");
|
|
6
6
|
/** Resolves the base module or fails with a clear `UNEXPECTED_STATE`. */
|
|
@@ -11,3 +11,10 @@ const resolveBaseModule = (container) => {
|
|
|
11
11
|
return container.resolve(constants_1.PLUGIN_FEATURES_MODULE);
|
|
12
12
|
};
|
|
13
13
|
exports.resolveBaseModule = resolveBaseModule;
|
|
14
|
+
/**
|
|
15
|
+
* Whether the base module is registered, for a boot-time check that names the
|
|
16
|
+
* problem ("add @hartl-services/medusa-base to medusa-config") instead of
|
|
17
|
+
* failing at the first request.
|
|
18
|
+
*/
|
|
19
|
+
const isBasePluginRegistered = (container) => container.hasRegistration(constants_1.PLUGIN_FEATURES_MODULE);
|
|
20
|
+
exports.isBasePluginRegistered = isBasePluginRegistered;
|
|
@@ -1,12 +1,14 @@
|
|
|
1
1
|
import type { MedusaContainer } from "@medusajs/framework/types";
|
|
2
2
|
/**
|
|
3
|
-
* The base's own descriptor: the shop's master data (Firmenangaben)
|
|
4
|
-
*
|
|
3
|
+
* The base's own descriptor: the shop's master data (Firmenangaben) and its
|
|
4
|
+
* appearance (logo and colors of the default e-mail and document layouts),
|
|
5
|
+
* edited on the generic plugin page like any plugin's settings. It cannot be
|
|
5
6
|
* switched off and declares no features.
|
|
6
7
|
*/
|
|
7
|
-
export declare const shopMasterDataDescriptor: import("./types").PluginFeatureDescriptor<string, "
|
|
8
|
-
|
|
9
|
-
|
|
8
|
+
export declare const shopMasterDataDescriptor: import("./types").PluginFeatureDescriptor<string, "legal_name" | "address_line1" | "address_line2" | "postal_code" | "city" | "country_code" | "vat_number" | "email" | "phone" | "website" | "iban" | "bic" | "company_register_number" | "company_register_court" | "logo" | "color_accent" | "color_text" | "color_muted" | "color_line" | "color_surface", never>;
|
|
9
|
+
declare const SHOP_MASTER_DATA_KEYS: readonly ["legal_name", "address_line1", "address_line2", "postal_code", "city", "country_code", "vat_number", "email", "phone", "website", "iban", "bic", "company_register_number", "company_register_court"];
|
|
10
|
+
/** Keys of the shop master data (company) settings. */
|
|
11
|
+
export type ShopMasterDataKey = (typeof SHOP_MASTER_DATA_KEYS)[number];
|
|
10
12
|
/** Every key that has a value (stored > fallback). All values are strings. */
|
|
11
13
|
export type ShopMasterData = Partial<Record<ShopMasterDataKey, string>>;
|
|
12
14
|
export type ResolvedShopMasterData = {
|
|
@@ -22,3 +24,18 @@ export type ResolvedShopMasterData = {
|
|
|
22
24
|
* `UNEXPECTED_STATE`; read failures propagate.
|
|
23
25
|
*/
|
|
24
26
|
export declare function getShopMasterData(container: MedusaContainer): Promise<ResolvedShopMasterData>;
|
|
27
|
+
/** Colors of the default e-mail and document layouts; unset = their default. */
|
|
28
|
+
export type ShopAppearanceColors = Partial<Record<"accent" | "text" | "muted" | "line" | "surface", string>>;
|
|
29
|
+
export type ShopAppearance = {
|
|
30
|
+
/** Public http(s) URL of the logo, when one is set. */
|
|
31
|
+
logo?: string;
|
|
32
|
+
/** Lowercase `#rrggbb` values; only the colors that are set. */
|
|
33
|
+
colors: ShopAppearanceColors;
|
|
34
|
+
};
|
|
35
|
+
/**
|
|
36
|
+
* The shop's appearance (Erscheinungsbild) for server-side code, as stored
|
|
37
|
+
* in the Admin. A missing base plugin fails with `UNEXPECTED_STATE`; read
|
|
38
|
+
* failures propagate.
|
|
39
|
+
*/
|
|
40
|
+
export declare function getShopAppearance(container: MedusaContainer): Promise<ShopAppearance>;
|
|
41
|
+
export {};
|
|
@@ -2,27 +2,33 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.shopMasterDataDescriptor = void 0;
|
|
4
4
|
exports.getShopMasterData = getShopMasterData;
|
|
5
|
+
exports.getShopAppearance = getShopAppearance;
|
|
5
6
|
const descriptor_1 = require("./descriptor");
|
|
6
7
|
const settings_1 = require("./settings");
|
|
8
|
+
const COMPANY = "Firmendaten";
|
|
9
|
+
const APPEARANCE = "Erscheinungsbild";
|
|
10
|
+
const DEFAULT_COLOR_HINT = "Leer lassen für die Standardfarbe von E-Mails und Dokumenten.";
|
|
7
11
|
/**
|
|
8
|
-
* The base's own descriptor: the shop's master data (Firmenangaben)
|
|
9
|
-
*
|
|
12
|
+
* The base's own descriptor: the shop's master data (Firmenangaben) and its
|
|
13
|
+
* appearance (logo and colors of the default e-mail and document layouts),
|
|
14
|
+
* edited on the generic plugin page like any plugin's settings. It cannot be
|
|
10
15
|
* switched off and declares no features.
|
|
11
16
|
*/
|
|
12
17
|
exports.shopMasterDataDescriptor = (0, descriptor_1.definePluginFeatures)({
|
|
13
18
|
plugin_key: "shop",
|
|
14
19
|
label: "Shop-Stammdaten",
|
|
15
|
-
description: "Firmenangaben des Shops für E-Mails, Rechnungen, Dokumente und Steuerprüfungen.",
|
|
20
|
+
description: "Firmenangaben des Shops für E-Mails, Rechnungen, Dokumente und Steuerprüfungen sowie Logo und Farben von E-Mails und Dokumenten.",
|
|
16
21
|
switchable: false,
|
|
17
22
|
features: [],
|
|
18
23
|
settings: [
|
|
19
|
-
{ key: "legal_name", label: "Firmenname", type: "string", required: true },
|
|
20
|
-
{ key: "address_line1", label: "Adresse", type: "string", required: true },
|
|
21
|
-
{ key: "address_line2", label: "Adresszusatz", type: "string" },
|
|
22
|
-
{ key: "postal_code", label: "Postleitzahl", type: "string", required: true },
|
|
23
|
-
{ key: "city", label: "Ort", type: "string", required: true },
|
|
24
|
+
{ key: "legal_name", group: COMPANY, label: "Firmenname", type: "string", required: true },
|
|
25
|
+
{ key: "address_line1", group: COMPANY, label: "Adresse", type: "string", required: true },
|
|
26
|
+
{ key: "address_line2", group: COMPANY, label: "Adresszusatz", type: "string" },
|
|
27
|
+
{ key: "postal_code", group: COMPANY, label: "Postleitzahl", type: "string", required: true },
|
|
28
|
+
{ key: "city", group: COMPANY, label: "Ort", type: "string", required: true },
|
|
24
29
|
{
|
|
25
30
|
key: "country_code",
|
|
31
|
+
group: COMPANY,
|
|
26
32
|
label: "Land",
|
|
27
33
|
type: "select",
|
|
28
34
|
required: true,
|
|
@@ -63,16 +69,74 @@ exports.shopMasterDataDescriptor = (0, descriptor_1.definePluginFeatures)({
|
|
|
63
69
|
{ value: "cy", label: "Zypern" },
|
|
64
70
|
],
|
|
65
71
|
},
|
|
66
|
-
{ key: "vat_number", label: "UID-Nummer", type: "string", required: true },
|
|
67
|
-
{ key: "email", label: "E-Mail", type: "string" },
|
|
68
|
-
{ key: "phone", label: "Telefon", type: "string" },
|
|
69
|
-
{ key: "website", label: "Website", type: "url" },
|
|
70
|
-
{ key: "iban", label: "IBAN", type: "string" },
|
|
71
|
-
{ key: "bic", label: "BIC", type: "string" },
|
|
72
|
-
{ key: "company_register_number", label: "Firmenbuchnummer", type: "string" },
|
|
73
|
-
{ key: "company_register_court", label: "Firmenbuchgericht", type: "string" },
|
|
72
|
+
{ key: "vat_number", group: COMPANY, label: "UID-Nummer", type: "string", required: true },
|
|
73
|
+
{ key: "email", group: COMPANY, label: "E-Mail", type: "string" },
|
|
74
|
+
{ key: "phone", group: COMPANY, label: "Telefon", type: "string" },
|
|
75
|
+
{ key: "website", group: COMPANY, label: "Website", type: "url" },
|
|
76
|
+
{ key: "iban", group: COMPANY, label: "IBAN", type: "string" },
|
|
77
|
+
{ key: "bic", group: COMPANY, label: "BIC", type: "string" },
|
|
78
|
+
{ key: "company_register_number", group: COMPANY, label: "Firmenbuchnummer", type: "string" },
|
|
79
|
+
{ key: "company_register_court", group: COMPANY, label: "Firmenbuchgericht", type: "string" },
|
|
80
|
+
{
|
|
81
|
+
key: "logo",
|
|
82
|
+
group: APPEARANCE,
|
|
83
|
+
label: "Logo",
|
|
84
|
+
description: "PNG oder JPG, erscheint oben in den E-Mails und auf Rechnungen und Lieferscheinen. Ohne Logo steht dort der Firmenname bzw. Shopname.",
|
|
85
|
+
type: "image",
|
|
86
|
+
},
|
|
87
|
+
{
|
|
88
|
+
key: "color_accent",
|
|
89
|
+
group: APPEARANCE,
|
|
90
|
+
label: "Akzentfarbe",
|
|
91
|
+
description: `Buttons, Überschriften und Links. ${DEFAULT_COLOR_HINT}`,
|
|
92
|
+
type: "color",
|
|
93
|
+
},
|
|
94
|
+
{
|
|
95
|
+
key: "color_text",
|
|
96
|
+
group: APPEARANCE,
|
|
97
|
+
label: "Textfarbe",
|
|
98
|
+
description: `Fließtext und Beträge. ${DEFAULT_COLOR_HINT}`,
|
|
99
|
+
type: "color",
|
|
100
|
+
},
|
|
101
|
+
{
|
|
102
|
+
key: "color_muted",
|
|
103
|
+
group: APPEARANCE,
|
|
104
|
+
label: "Nebentextfarbe",
|
|
105
|
+
description: `Beschriftungen, Hinweise und Fußzeilen. ${DEFAULT_COLOR_HINT}`,
|
|
106
|
+
type: "color",
|
|
107
|
+
},
|
|
108
|
+
{
|
|
109
|
+
key: "color_line",
|
|
110
|
+
group: APPEARANCE,
|
|
111
|
+
label: "Linienfarbe",
|
|
112
|
+
description: `Rahmen und Trennlinien. ${DEFAULT_COLOR_HINT}`,
|
|
113
|
+
type: "color",
|
|
114
|
+
},
|
|
115
|
+
{
|
|
116
|
+
key: "color_surface",
|
|
117
|
+
group: APPEARANCE,
|
|
118
|
+
label: "Flächenfarbe",
|
|
119
|
+
description: `Hinterlegte Flächen wie Infoboxen und Tabellenköpfe. ${DEFAULT_COLOR_HINT}`,
|
|
120
|
+
type: "color",
|
|
121
|
+
},
|
|
74
122
|
],
|
|
75
123
|
});
|
|
124
|
+
const SHOP_MASTER_DATA_KEYS = [
|
|
125
|
+
"legal_name",
|
|
126
|
+
"address_line1",
|
|
127
|
+
"address_line2",
|
|
128
|
+
"postal_code",
|
|
129
|
+
"city",
|
|
130
|
+
"country_code",
|
|
131
|
+
"vat_number",
|
|
132
|
+
"email",
|
|
133
|
+
"phone",
|
|
134
|
+
"website",
|
|
135
|
+
"iban",
|
|
136
|
+
"bic",
|
|
137
|
+
"company_register_number",
|
|
138
|
+
"company_register_court",
|
|
139
|
+
];
|
|
76
140
|
/**
|
|
77
141
|
* The shop's master data for server-side code, exactly as stored in the
|
|
78
142
|
* Admin: there is no config fallback. A missing base plugin fails with
|
|
@@ -81,7 +145,8 @@ exports.shopMasterDataDescriptor = (0, descriptor_1.definePluginFeatures)({
|
|
|
81
145
|
async function getShopMasterData(container) {
|
|
82
146
|
const resolved = await (0, settings_1.getPluginSettings)(container, exports.shopMasterDataDescriptor);
|
|
83
147
|
const values = {};
|
|
84
|
-
for (const
|
|
148
|
+
for (const key of SHOP_MASTER_DATA_KEYS) {
|
|
149
|
+
const value = resolved.values[key];
|
|
85
150
|
if (typeof value === "string") {
|
|
86
151
|
values[key] = value;
|
|
87
152
|
}
|
|
@@ -92,3 +157,29 @@ async function getShopMasterData(container) {
|
|
|
92
157
|
missing: resolved.missing,
|
|
93
158
|
};
|
|
94
159
|
}
|
|
160
|
+
const APPEARANCE_COLOR_KEYS = {
|
|
161
|
+
accent: "color_accent",
|
|
162
|
+
text: "color_text",
|
|
163
|
+
muted: "color_muted",
|
|
164
|
+
line: "color_line",
|
|
165
|
+
surface: "color_surface",
|
|
166
|
+
};
|
|
167
|
+
/**
|
|
168
|
+
* The shop's appearance (Erscheinungsbild) for server-side code, as stored
|
|
169
|
+
* in the Admin. A missing base plugin fails with `UNEXPECTED_STATE`; read
|
|
170
|
+
* failures propagate.
|
|
171
|
+
*/
|
|
172
|
+
async function getShopAppearance(container) {
|
|
173
|
+
const { values } = await (0, settings_1.getPluginSettings)(container, exports.shopMasterDataDescriptor);
|
|
174
|
+
const colors = {};
|
|
175
|
+
for (const [token, key] of Object.entries(APPEARANCE_COLOR_KEYS)) {
|
|
176
|
+
const value = values[key];
|
|
177
|
+
if (typeof value === "string") {
|
|
178
|
+
colors[token] = value;
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
return {
|
|
182
|
+
...(typeof values.logo === "string" ? { logo: values.logo } : {}),
|
|
183
|
+
colors,
|
|
184
|
+
};
|
|
185
|
+
}
|
package/dist/public/types.d.ts
CHANGED
|
@@ -30,8 +30,11 @@ export type PluginFeatureDefinition<K extends string = string> = {
|
|
|
30
30
|
readonly default_enabled: boolean;
|
|
31
31
|
readonly parent_key?: K;
|
|
32
32
|
};
|
|
33
|
-
/**
|
|
34
|
-
|
|
33
|
+
/**
|
|
34
|
+
* `image`: public http(s) URL of an image the Admin uploads (PNG/JPEG).
|
|
35
|
+
* `color`: lowercase hex color `#rrggbb`.
|
|
36
|
+
*/
|
|
37
|
+
export type PluginSettingType = "string" | "url" | "number" | "boolean" | "secret" | "select" | "image" | "color";
|
|
35
38
|
/** One allowed value of a `"select"` setting. */
|
|
36
39
|
export type PluginSettingOption = {
|
|
37
40
|
readonly value: string;
|
|
@@ -42,6 +45,11 @@ export type PluginSettingDefinition<S extends string = string> = {
|
|
|
42
45
|
readonly key: S;
|
|
43
46
|
readonly label: string;
|
|
44
47
|
readonly description?: string;
|
|
48
|
+
/**
|
|
49
|
+
* Section heading the Admin shows above this setting; consecutive settings
|
|
50
|
+
* with the same group share one heading.
|
|
51
|
+
*/
|
|
52
|
+
readonly group?: string;
|
|
45
53
|
readonly type: PluginSettingType;
|
|
46
54
|
/** `false` when omitted. */
|
|
47
55
|
readonly required?: boolean;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
type RawRecord = Record<string, unknown>;
|
|
2
|
+
/** Reads untyped data (query results, event payloads) defensively. */
|
|
3
|
+
/** The object itself, else `{}`: safe to read properties from. */
|
|
4
|
+
export declare const asRecord: (value: unknown) => RawRecord;
|
|
5
|
+
/** The object itself, else `null` (arrays are not records). */
|
|
6
|
+
export declare const asRecordOrNull: (value: unknown) => RawRecord | null;
|
|
7
|
+
/** The trimmed string, `null` for a blank or non-string value. */
|
|
8
|
+
export declare const asText: (value: unknown) => string | null;
|
|
9
|
+
export declare const asArray: (value: unknown) => unknown[];
|
|
10
|
+
/**
|
|
11
|
+
* The string as it is (not trimmed), `null` for a non-string value. A blank
|
|
12
|
+
* string is `null` unless `allowBlank` is set.
|
|
13
|
+
*/
|
|
14
|
+
export declare const asOptionalString: (value: unknown, { allowBlank }?: {
|
|
15
|
+
allowBlank?: boolean;
|
|
16
|
+
}) => string | null;
|
|
17
|
+
/** The number if it is finite, else `null` (no string or BigNumber parsing). */
|
|
18
|
+
export declare const asFiniteNumber: (value: unknown) => number | null;
|
|
19
|
+
export {};
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.asFiniteNumber = exports.asOptionalString = exports.asArray = exports.asText = exports.asRecordOrNull = exports.asRecord = void 0;
|
|
4
|
+
const isRecord = (value) => typeof value === "object" && value !== null && !Array.isArray(value);
|
|
5
|
+
/** Reads untyped data (query results, event payloads) defensively. */
|
|
6
|
+
/** The object itself, else `{}`: safe to read properties from. */
|
|
7
|
+
const asRecord = (value) => isRecord(value) ? value : {};
|
|
8
|
+
exports.asRecord = asRecord;
|
|
9
|
+
/** The object itself, else `null` (arrays are not records). */
|
|
10
|
+
const asRecordOrNull = (value) => isRecord(value) ? value : null;
|
|
11
|
+
exports.asRecordOrNull = asRecordOrNull;
|
|
12
|
+
/** The trimmed string, `null` for a blank or non-string value. */
|
|
13
|
+
const asText = (value) => typeof value === "string" && value.trim() ? value.trim() : null;
|
|
14
|
+
exports.asText = asText;
|
|
15
|
+
const asArray = (value) => Array.isArray(value) ? value : [];
|
|
16
|
+
exports.asArray = asArray;
|
|
17
|
+
/**
|
|
18
|
+
* The string as it is (not trimmed), `null` for a non-string value. A blank
|
|
19
|
+
* string is `null` unless `allowBlank` is set.
|
|
20
|
+
*/
|
|
21
|
+
const asOptionalString = (value, { allowBlank = false } = {}) => typeof value === "string" && (allowBlank || value.trim()) ? value : null;
|
|
22
|
+
exports.asOptionalString = asOptionalString;
|
|
23
|
+
/** The number if it is finite, else `null` (no string or BigNumber parsing). */
|
|
24
|
+
const asFiniteNumber = (value) => typeof value === "number" && Number.isFinite(value) ? value : null;
|
|
25
|
+
exports.asFiniteNumber = asFiniteNumber;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.sleep = exports.chunk = void 0;
|
|
4
|
+
const utils_1 = require("@medusajs/framework/utils");
|
|
5
|
+
/** Splits a list into consecutive slices of at most `size` items. */
|
|
6
|
+
const chunk = (items, size) => {
|
|
7
|
+
if (!Number.isInteger(size) || size < 1) {
|
|
8
|
+
throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, "The chunk size must be a positive integer.");
|
|
9
|
+
}
|
|
10
|
+
const chunks = [];
|
|
11
|
+
for (let index = 0; index < items.length; index += size) {
|
|
12
|
+
chunks.push(items.slice(index, index + size));
|
|
13
|
+
}
|
|
14
|
+
return chunks;
|
|
15
|
+
};
|
|
16
|
+
exports.chunk = chunk;
|
|
17
|
+
const sleep = (milliseconds) => new Promise((resolve) => setTimeout(resolve, milliseconds));
|
|
18
|
+
exports.sleep = sleep;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/** A valid `Date`; throws `INVALID_DATA` for an unparsable value. */
|
|
2
|
+
export declare const toValidDate: (value: Date | string | number, message?: string) => Date;
|
|
3
|
+
/** Midnight UTC of the value's UTC calendar day. */
|
|
4
|
+
export declare const startOfUtcDate: (value: Date | string | number) => Date;
|
|
5
|
+
/** `yyyy-mm-dd` of the value's UTC calendar day; throws for an invalid date. */
|
|
6
|
+
export declare const toIsoDate: (value: Date | string | number) => string;
|
|
7
|
+
/** ISO-8601 instant for an HTTP response; throws for an invalid date. */
|
|
8
|
+
export declare const toWireDate: (value: Date | string) => string;
|
|
9
|
+
/** Like `toWireDate`, `null` for `null` / `undefined`. */
|
|
10
|
+
export declare const toOptionalWireDate: (value: Date | string | null | undefined) => string | null;
|
|
11
|
+
/** Whether the value is an IANA time zone this runtime knows ("Europe/Vienna"). */
|
|
12
|
+
export declare const isValidTimeZone: (value: unknown) => value is string;
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.isValidTimeZone = exports.toOptionalWireDate = exports.toWireDate = exports.toIsoDate = exports.startOfUtcDate = exports.toValidDate = void 0;
|
|
4
|
+
const utils_1 = require("@medusajs/framework/utils");
|
|
5
|
+
/** A valid `Date`; throws `INVALID_DATA` for an unparsable value. */
|
|
6
|
+
const toValidDate = (value, message = "Invalid date.") => {
|
|
7
|
+
const date = value instanceof Date ? value : new Date(value);
|
|
8
|
+
if (Number.isNaN(date.getTime())) {
|
|
9
|
+
throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, message);
|
|
10
|
+
}
|
|
11
|
+
return date;
|
|
12
|
+
};
|
|
13
|
+
exports.toValidDate = toValidDate;
|
|
14
|
+
/** Midnight UTC of the value's UTC calendar day. */
|
|
15
|
+
const startOfUtcDate = (value) => {
|
|
16
|
+
const date = (0, exports.toValidDate)(value);
|
|
17
|
+
return new Date(Date.UTC(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate()));
|
|
18
|
+
};
|
|
19
|
+
exports.startOfUtcDate = startOfUtcDate;
|
|
20
|
+
/** `yyyy-mm-dd` of the value's UTC calendar day; throws for an invalid date. */
|
|
21
|
+
const toIsoDate = (value) => (0, exports.toValidDate)(value).toISOString().slice(0, 10);
|
|
22
|
+
exports.toIsoDate = toIsoDate;
|
|
23
|
+
/** ISO-8601 instant for an HTTP response; throws for an invalid date. */
|
|
24
|
+
const toWireDate = (value) => (0, exports.toValidDate)(value).toISOString();
|
|
25
|
+
exports.toWireDate = toWireDate;
|
|
26
|
+
/** Like `toWireDate`, `null` for `null` / `undefined`. */
|
|
27
|
+
const toOptionalWireDate = (value) => (value == null ? null : (0, exports.toWireDate)(value));
|
|
28
|
+
exports.toOptionalWireDate = toOptionalWireDate;
|
|
29
|
+
/** Whether the value is an IANA time zone this runtime knows ("Europe/Vienna"). */
|
|
30
|
+
const isValidTimeZone = (value) => {
|
|
31
|
+
if (typeof value !== "string" || !value.trim()) {
|
|
32
|
+
return false;
|
|
33
|
+
}
|
|
34
|
+
try {
|
|
35
|
+
new Intl.DateTimeFormat("en", { timeZone: value });
|
|
36
|
+
return true;
|
|
37
|
+
}
|
|
38
|
+
catch {
|
|
39
|
+
return false;
|
|
40
|
+
}
|
|
41
|
+
};
|
|
42
|
+
exports.isValidTimeZone = isValidTimeZone;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.describeError = void 0;
|
|
4
|
+
/** The message of anything that was thrown. */
|
|
5
|
+
const describeError = (error) => error instanceof Error
|
|
6
|
+
? error.message
|
|
7
|
+
: typeof error?.message === "string"
|
|
8
|
+
? error.message
|
|
9
|
+
: String(error);
|
|
10
|
+
exports.describeError = describeError;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.sha256Hex = void 0;
|
|
4
|
+
const node_crypto_1 = require("node:crypto");
|
|
5
|
+
/** Lower-case hex SHA-256 of a string (UTF-8) or of bytes. */
|
|
6
|
+
const sha256Hex = (value) => (0, node_crypto_1.createHash)("sha256").update(value).digest("hex");
|
|
7
|
+
exports.sha256Hex = sha256Hex;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export * from "./coerce";
|
|
2
|
+
export * from "./collections";
|
|
3
|
+
export * from "./dates";
|
|
4
|
+
export * from "./errors";
|
|
5
|
+
export * from "./hash";
|
|
6
|
+
export * from "./logging";
|
|
7
|
+
export * from "./money";
|
|
8
|
+
export * from "./text";
|
|
9
|
+
export * from "./transaction";
|
|
10
|
+
export * from "./wire-response";
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
// Generic server/isomorphic helpers shared by all plugins, exported as
|
|
18
|
+
// `@hartl-services/medusa-base/lib`.
|
|
19
|
+
__exportStar(require("./coerce"), exports);
|
|
20
|
+
__exportStar(require("./collections"), exports);
|
|
21
|
+
__exportStar(require("./dates"), exports);
|
|
22
|
+
__exportStar(require("./errors"), exports);
|
|
23
|
+
__exportStar(require("./hash"), exports);
|
|
24
|
+
__exportStar(require("./logging"), exports);
|
|
25
|
+
__exportStar(require("./money"), exports);
|
|
26
|
+
__exportStar(require("./text"), exports);
|
|
27
|
+
__exportStar(require("./transaction"), exports);
|
|
28
|
+
__exportStar(require("./wire-response"), exports);
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
export type OptionalLogger = {
|
|
2
|
+
warn(message: string): void;
|
|
3
|
+
};
|
|
4
|
+
/**
|
|
5
|
+
* The registered logger, or `undefined`. Accepts a container (`resolve`) or a
|
|
6
|
+
* module cradle (`cradle.logger`), the first constructor argument of a module
|
|
7
|
+
* service. Reading an unregistered key from an awilix cradle throws, and a
|
|
8
|
+
* missing logger must never stop a module from loading, so every read is
|
|
9
|
+
* guarded.
|
|
10
|
+
*/
|
|
11
|
+
export declare const resolveOptionalLogger: (source: unknown) => OptionalLogger | undefined;
|
|
12
|
+
export type WarnOnce = {
|
|
13
|
+
/**
|
|
14
|
+
* Runs `warn` unless the last warning for `key` had the same `signature`.
|
|
15
|
+
* Returns whether it ran.
|
|
16
|
+
*/
|
|
17
|
+
(key: string, signature: string, warn: () => void): boolean;
|
|
18
|
+
/** Re-arms one key, e.g. once the problem is fixed, or all keys. */
|
|
19
|
+
reset(key?: string): void;
|
|
20
|
+
};
|
|
21
|
+
/**
|
|
22
|
+
* One warning per key and signature per process (not per request): a state
|
|
23
|
+
* that persists is logged once, a changed state is logged again, and `reset`
|
|
24
|
+
* re-arms a key once the state is healthy.
|
|
25
|
+
*/
|
|
26
|
+
export declare const createWarnOnce: () => WarnOnce;
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createWarnOnce = exports.resolveOptionalLogger = void 0;
|
|
4
|
+
const LOGGER_KEY = "logger";
|
|
5
|
+
const hasWarn = (value) => typeof value?.warn === "function";
|
|
6
|
+
const attempt = (read) => {
|
|
7
|
+
try {
|
|
8
|
+
return read();
|
|
9
|
+
}
|
|
10
|
+
catch {
|
|
11
|
+
return undefined;
|
|
12
|
+
}
|
|
13
|
+
};
|
|
14
|
+
/**
|
|
15
|
+
* The registered logger, or `undefined`. Accepts a container (`resolve`) or a
|
|
16
|
+
* module cradle (`cradle.logger`), the first constructor argument of a module
|
|
17
|
+
* service. Reading an unregistered key from an awilix cradle throws, and a
|
|
18
|
+
* missing logger must never stop a module from loading, so every read is
|
|
19
|
+
* guarded.
|
|
20
|
+
*/
|
|
21
|
+
const resolveOptionalLogger = (source) => {
|
|
22
|
+
const fromProperty = attempt(() => source?.logger);
|
|
23
|
+
if (hasWarn(fromProperty)) {
|
|
24
|
+
return fromProperty;
|
|
25
|
+
}
|
|
26
|
+
const fromContainer = attempt(() => {
|
|
27
|
+
const container = source;
|
|
28
|
+
return typeof container?.resolve === "function"
|
|
29
|
+
? container.resolve(LOGGER_KEY)
|
|
30
|
+
: undefined;
|
|
31
|
+
});
|
|
32
|
+
return hasWarn(fromContainer) ? fromContainer : undefined;
|
|
33
|
+
};
|
|
34
|
+
exports.resolveOptionalLogger = resolveOptionalLogger;
|
|
35
|
+
/**
|
|
36
|
+
* One warning per key and signature per process (not per request): a state
|
|
37
|
+
* that persists is logged once, a changed state is logged again, and `reset`
|
|
38
|
+
* re-arms a key once the state is healthy.
|
|
39
|
+
*/
|
|
40
|
+
const createWarnOnce = () => {
|
|
41
|
+
const lastSignatures = new Map();
|
|
42
|
+
const warnOnce = ((key, signature, warn) => {
|
|
43
|
+
if (lastSignatures.get(key) === signature) {
|
|
44
|
+
return false;
|
|
45
|
+
}
|
|
46
|
+
lastSignatures.set(key, signature);
|
|
47
|
+
warn();
|
|
48
|
+
return true;
|
|
49
|
+
});
|
|
50
|
+
warnOnce.reset = (key) => {
|
|
51
|
+
if (key === undefined) {
|
|
52
|
+
lastSignatures.clear();
|
|
53
|
+
}
|
|
54
|
+
else {
|
|
55
|
+
lastSignatures.delete(key);
|
|
56
|
+
}
|
|
57
|
+
};
|
|
58
|
+
return warnOnce;
|
|
59
|
+
};
|
|
60
|
+
exports.createWarnOnce = createWarnOnce;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Minor-unit digit count for a currency, e.g. EUR/USD = 2, JPY = 0, KWD = 3.
|
|
3
|
+
* Sourced from Medusa's static currency table; unknown currencies use 2.
|
|
4
|
+
*/
|
|
5
|
+
export declare const getCurrencyDecimalPlaces: (currencyCode: string) => number;
|
|
6
|
+
/**
|
|
7
|
+
* A finite number from whatever Medusa returns for an amount or quantity:
|
|
8
|
+
* a number, a numeric string, a Medusa `BigNumber` (detected by shape, never
|
|
9
|
+
* by `instanceof`: two copies of `@medusajs/utils` may be installed), a
|
|
10
|
+
* bignumber.js value or a raw `{ value }` record. Anything else, blank
|
|
11
|
+
* strings, `NaN` and `Infinity` included, is `null`.
|
|
12
|
+
*/
|
|
13
|
+
export declare const toNumericAmount: (value: unknown) => number | null;
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.toNumericAmount = exports.getCurrencyDecimalPlaces = void 0;
|
|
4
|
+
const utils_1 = require("@medusajs/framework/utils");
|
|
5
|
+
const DEFAULT_CURRENCY_DECIMAL_PLACES = 2;
|
|
6
|
+
/**
|
|
7
|
+
* Minor-unit digit count for a currency, e.g. EUR/USD = 2, JPY = 0, KWD = 3.
|
|
8
|
+
* Sourced from Medusa's static currency table; unknown currencies use 2.
|
|
9
|
+
*/
|
|
10
|
+
const getCurrencyDecimalPlaces = (currencyCode) => utils_1.defaultCurrencies[currencyCode.toUpperCase()]?.decimal_digits ??
|
|
11
|
+
DEFAULT_CURRENCY_DECIMAL_PLACES;
|
|
12
|
+
exports.getCurrencyDecimalPlaces = getCurrencyDecimalPlaces;
|
|
13
|
+
const finiteOrNull = (value) => Number.isFinite(value) ? value : null;
|
|
14
|
+
/**
|
|
15
|
+
* A finite number from whatever Medusa returns for an amount or quantity:
|
|
16
|
+
* a number, a numeric string, a Medusa `BigNumber` (detected by shape, never
|
|
17
|
+
* by `instanceof`: two copies of `@medusajs/utils` may be installed), a
|
|
18
|
+
* bignumber.js value or a raw `{ value }` record. Anything else, blank
|
|
19
|
+
* strings, `NaN` and `Infinity` included, is `null`.
|
|
20
|
+
*/
|
|
21
|
+
const toNumericAmount = (value) => {
|
|
22
|
+
if (typeof value === "number") {
|
|
23
|
+
return finiteOrNull(value);
|
|
24
|
+
}
|
|
25
|
+
if (typeof value === "string") {
|
|
26
|
+
return value.trim() ? finiteOrNull(Number(value)) : null;
|
|
27
|
+
}
|
|
28
|
+
if (typeof value !== "object" || value === null) {
|
|
29
|
+
return null;
|
|
30
|
+
}
|
|
31
|
+
const candidate = value;
|
|
32
|
+
if (typeof candidate.numeric === "number") {
|
|
33
|
+
return finiteOrNull(candidate.numeric);
|
|
34
|
+
}
|
|
35
|
+
if (typeof candidate.toNumber === "function") {
|
|
36
|
+
return finiteOrNull(Number(candidate.toNumber.call(value)));
|
|
37
|
+
}
|
|
38
|
+
if (typeof candidate.raw_ === "object" && candidate.raw_ !== null) {
|
|
39
|
+
return toRawValue(candidate.raw_.value);
|
|
40
|
+
}
|
|
41
|
+
return toRawValue(candidate.value);
|
|
42
|
+
};
|
|
43
|
+
exports.toNumericAmount = toNumericAmount;
|
|
44
|
+
const toRawValue = (value) => typeof value === "number" || typeof value === "string"
|
|
45
|
+
? (0, exports.toNumericAmount)(value)
|
|
46
|
+
: null;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/** Placeholder UID for development; never a real merchant UID. */
|
|
2
|
+
export declare const VAT_NUMBER_PLACEHOLDER = "ATU00000000";
|
|
3
|
+
/** A VAT number without whitespace, upper-case: " atu 1234 5678 " -> "ATU12345678". */
|
|
4
|
+
export declare const normalizeVatNumber: (value: string) => string;
|
|
5
|
+
/**
|
|
6
|
+
* Provider-agnostic e-mail normalization: only surrounding whitespace and
|
|
7
|
+
* casing change (plus tags and dots can name different mailboxes). `null` for
|
|
8
|
+
* a blank value or one without a local part, "@" or domain; callers decide
|
|
9
|
+
* whether that is an error.
|
|
10
|
+
*/
|
|
11
|
+
export declare const normalizeEmail: (value: string | null | undefined) => string | null;
|
|
12
|
+
/** Escapes `\`, `%` and `_` so a value matches literally in `LIKE` / `ILIKE`. */
|
|
13
|
+
export declare const escapeLikePattern: (value: string) => string;
|
|
14
|
+
/** Escapes text for HTML content and double- or single-quoted attributes. */
|
|
15
|
+
export declare const escapeHtml: (value: string | number | null | undefined) => string;
|
|
16
|
+
/** Whether the value parses as an absolute `http:` or `https:` URL. */
|
|
17
|
+
export declare const isHttpUrl: (value: string | null | undefined) => value is string;
|
|
18
|
+
/** A string with at least one non-whitespace character. */
|
|
19
|
+
export declare const isNonEmptyString: (value: unknown) => value is string;
|