@open-mercato/core 0.6.8-develop.7100.1.fbf66fca35 → 0.7.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/.turbo/turbo-build.log +1 -1
- package/dist/helpers/integration/api.js +1 -13
- package/dist/helpers/integration/api.js.map +2 -2
- package/dist/helpers/integration/communicationChannelsFixtures.js +0 -19
- package/dist/helpers/integration/communicationChannelsFixtures.js.map +2 -2
- package/dist/modules/api_keys/api/keys/route.js +1 -1
- package/dist/modules/api_keys/api/keys/route.js.map +2 -2
- package/dist/modules/api_keys/backend/api-keys/page.js +1 -3
- package/dist/modules/api_keys/backend/api-keys/page.js.map +2 -2
- package/dist/modules/attachments/api/route.js +2 -2
- package/dist/modules/attachments/api/route.js.map +2 -2
- package/dist/modules/attachments/components/AttachmentLibrary.js +0 -2
- package/dist/modules/attachments/components/AttachmentLibrary.js.map +2 -2
- package/dist/modules/attachments/di.js +1 -11
- package/dist/modules/attachments/di.js.map +2 -2
- package/dist/modules/attachments/index.js.map +1 -1
- package/dist/modules/attachments/lib/scoped-upload-service.js +2 -15
- package/dist/modules/attachments/lib/scoped-upload-service.js.map +2 -2
- package/dist/modules/attachments/lib/upload-limits.js +2 -6
- package/dist/modules/attachments/lib/upload-limits.js.map +2 -2
- package/dist/modules/audit_logs/backend/audit-logs/page.js +0 -6
- package/dist/modules/audit_logs/backend/audit-logs/page.js.map +2 -2
- package/dist/modules/audit_logs/lib/display-helpers.js +11 -19
- package/dist/modules/audit_logs/lib/display-helpers.js.map +2 -2
- package/dist/modules/audit_logs/services/actionLogService.js +12 -57
- package/dist/modules/audit_logs/services/actionLogService.js.map +3 -3
- package/dist/modules/auth/acl.js +5 -30
- package/dist/modules/auth/acl.js.map +2 -2
- package/dist/modules/auth/api/feature-check.js +2 -8
- package/dist/modules/auth/api/feature-check.js.map +2 -2
- package/dist/modules/auth/api/login.js +20 -4
- package/dist/modules/auth/api/login.js.map +2 -2
- package/dist/modules/auth/api/roles/acl/route.js +33 -28
- package/dist/modules/auth/api/roles/acl/route.js.map +2 -2
- package/dist/modules/auth/api/routeError.js +11 -0
- package/dist/modules/auth/api/routeError.js.map +7 -0
- package/dist/modules/auth/api/session/refresh.js +1 -25
- package/dist/modules/auth/api/session/refresh.js.map +2 -2
- package/dist/modules/auth/api/users/acl/route.js +73 -102
- package/dist/modules/auth/api/users/acl/route.js.map +2 -2
- package/dist/modules/auth/api/users/route.js +5 -13
- package/dist/modules/auth/api/users/route.js.map +2 -2
- package/dist/modules/auth/backend/roles/[id]/edit/page.meta.js +1 -5
- package/dist/modules/auth/backend/roles/[id]/edit/page.meta.js.map +2 -2
- package/dist/modules/auth/backend/roles/page.js +1 -3
- package/dist/modules/auth/backend/roles/page.js.map +2 -2
- package/dist/modules/auth/backend/users/[id]/edit/page.meta.js +1 -5
- package/dist/modules/auth/backend/users/[id]/edit/page.meta.js.map +2 -2
- package/dist/modules/auth/backend/users/page.js +1 -2
- package/dist/modules/auth/backend/users/page.js.map +2 -2
- package/dist/modules/auth/components/AclEditor.js +30 -39
- package/dist/modules/auth/components/AclEditor.js.map +2 -2
- package/dist/modules/auth/data/entities.js.map +2 -2
- package/dist/modules/auth/data/validators.js +1 -5
- package/dist/modules/auth/data/validators.js.map +2 -2
- package/dist/modules/auth/di.js +9 -35
- package/dist/modules/auth/di.js.map +2 -2
- package/dist/modules/auth/frontend/reset/[token]/page.js +0 -46
- package/dist/modules/auth/frontend/reset/[token]/page.js.map +2 -2
- package/dist/modules/auth/lib/grantChecks.js.map +2 -2
- package/dist/modules/auth/services/authService.js +2 -16
- package/dist/modules/auth/services/authService.js.map +2 -2
- package/dist/modules/auth/services/rbacService.js +24 -67
- package/dist/modules/auth/services/rbacService.js.map +3 -3
- package/dist/modules/business_rules/backend/logs/page.js +1 -3
- package/dist/modules/business_rules/backend/logs/page.js.map +2 -2
- package/dist/modules/business_rules/backend/rules/[id]/page.meta.js +6 -1
- package/dist/modules/business_rules/backend/rules/[id]/page.meta.js.map +2 -2
- package/dist/modules/business_rules/backend/rules/create/page.meta.js +5 -1
- package/dist/modules/business_rules/backend/rules/create/page.meta.js.map +2 -2
- package/dist/modules/business_rules/backend/rules/page.js +1 -3
- package/dist/modules/business_rules/backend/rules/page.js.map +2 -2
- package/dist/modules/business_rules/backend/sets/[id]/page.meta.js +6 -1
- package/dist/modules/business_rules/backend/sets/[id]/page.meta.js.map +2 -2
- package/dist/modules/business_rules/backend/sets/create/page.meta.js +5 -1
- package/dist/modules/business_rules/backend/sets/create/page.meta.js.map +2 -2
- package/dist/modules/business_rules/backend/sets/page.js +1 -3
- package/dist/modules/business_rules/backend/sets/page.js.map +2 -2
- package/dist/modules/business_rules/lib/expression-evaluator.js +9 -9
- package/dist/modules/business_rules/lib/expression-evaluator.js.map +2 -2
- package/dist/modules/business_rules/lib/rule-evaluator.js +9 -10
- package/dist/modules/business_rules/lib/rule-evaluator.js.map +2 -2
- package/dist/modules/catalog/ai-agents.js +1 -1
- package/dist/modules/catalog/ai-agents.js.map +1 -1
- package/dist/modules/catalog/ai-tools/merchandising-pack.js +2 -2
- package/dist/modules/catalog/ai-tools/merchandising-pack.js.map +2 -2
- package/dist/modules/catalog/backend/catalog/products/MerchandisingAssistantSheet.js +2 -5
- package/dist/modules/catalog/backend/catalog/products/MerchandisingAssistantSheet.js.map +2 -2
- package/dist/modules/catalog/components/categories/CategoriesDataTable.js +0 -2
- package/dist/modules/catalog/components/categories/CategoriesDataTable.js.map +2 -2
- package/dist/modules/catalog/components/products/ProductsDataTable.js +1 -7
- package/dist/modules/catalog/components/products/ProductsDataTable.js.map +2 -2
- package/dist/modules/catalog/widgets/injection/merchandising-assistant-trigger/widget.client.js +0 -2
- package/dist/modules/catalog/widgets/injection/merchandising-assistant-trigger/widget.client.js.map +2 -2
- package/dist/modules/communication_channels/api/post/channels/[id]/test-send/route.js +1 -9
- package/dist/modules/communication_channels/api/post/channels/[id]/test-send/route.js.map +2 -2
- package/dist/modules/communication_channels/api/post/test-seed/route.js +10 -95
- package/dist/modules/communication_channels/api/post/test-seed/route.js.map +2 -2
- package/dist/modules/communication_channels/backend/communication_channels/channels/page.js +0 -3
- package/dist/modules/communication_channels/backend/communication_channels/channels/page.js.map +2 -2
- package/dist/modules/communication_channels/commands/ingest-inbound-message.js +1 -14
- package/dist/modules/communication_channels/commands/ingest-inbound-message.js.map +2 -2
- package/dist/modules/communication_channels/di.js +1 -7
- package/dist/modules/communication_channels/di.js.map +2 -2
- package/dist/modules/communication_channels/lib/email-capabilities.js +1 -4
- package/dist/modules/communication_channels/lib/email-capabilities.js.map +2 -2
- package/dist/modules/communication_channels/lib/test-seed.js +2 -41
- package/dist/modules/communication_channels/lib/test-seed.js.map +2 -2
- package/dist/modules/configs/lib/system-status.js +0 -9
- package/dist/modules/configs/lib/system-status.js.map +2 -2
- package/dist/modules/currencies/backend/currencies/page.js +1 -3
- package/dist/modules/currencies/backend/currencies/page.js.map +2 -2
- package/dist/modules/currencies/backend/exchange-rates/page.js +1 -3
- package/dist/modules/currencies/backend/exchange-rates/page.js.map +2 -2
- package/dist/modules/customer_accounts/api/admin/domain-mappings.js +0 -9
- package/dist/modules/customer_accounts/api/admin/domain-mappings.js.map +2 -2
- package/dist/modules/customer_accounts/backend/customer_accounts/roles/page.js +1 -3
- package/dist/modules/customer_accounts/backend/customer_accounts/roles/page.js.map +2 -2
- package/dist/modules/customer_accounts/backend/customer_accounts/settings/CustomerAccountsSettingsPageClient.js +84 -0
- package/dist/modules/customer_accounts/backend/customer_accounts/settings/CustomerAccountsSettingsPageClient.js.map +7 -0
- package/dist/modules/customer_accounts/backend/customer_accounts/settings/page.js +7 -81
- package/dist/modules/customer_accounts/backend/customer_accounts/settings/page.js.map +2 -2
- package/dist/modules/customer_accounts/backend/customer_accounts/users/PortalUsersPageClient.js +523 -0
- package/dist/modules/customer_accounts/backend/customer_accounts/users/PortalUsersPageClient.js.map +7 -0
- package/dist/modules/customer_accounts/backend/customer_accounts/users/[id]/PortalUserDetailPageClient.js +731 -0
- package/dist/modules/customer_accounts/backend/customer_accounts/users/[id]/PortalUserDetailPageClient.js.map +7 -0
- package/dist/modules/customer_accounts/backend/customer_accounts/users/[id]/page.js +7 -727
- package/dist/modules/customer_accounts/backend/customer_accounts/users/[id]/page.js.map +2 -2
- package/dist/modules/customer_accounts/backend/customer_accounts/users/page.js +7 -521
- package/dist/modules/customer_accounts/backend/customer_accounts/users/page.js.map +2 -2
- package/dist/modules/customer_accounts/extension-points.js +1 -1
- package/dist/modules/customer_accounts/extension-points.js.map +2 -2
- package/dist/modules/customer_accounts/lib/portalUrl.js +69 -0
- package/dist/modules/customer_accounts/lib/portalUrl.js.map +7 -0
- package/dist/modules/customer_accounts/services/domainMappingService.js +0 -10
- package/dist/modules/customer_accounts/services/domainMappingService.js.map +2 -2
- package/dist/modules/customers/ai-tools/companies-pack.js +1 -4
- package/dist/modules/customers/ai-tools/companies-pack.js.map +2 -2
- package/dist/modules/customers/ai-tools/deal-analyzer-pack.js +2 -13
- package/dist/modules/customers/ai-tools/deal-analyzer-pack.js.map +2 -2
- package/dist/modules/customers/ai-tools/deals-pack.js +6 -52
- package/dist/modules/customers/ai-tools/deals-pack.js.map +2 -2
- package/dist/modules/customers/ai-tools/people-pack.js +1 -4
- package/dist/modules/customers/ai-tools/people-pack.js.map +2 -2
- package/dist/modules/customers/api/activities/route.js +6 -48
- package/dist/modules/customers/api/activities/route.js.map +2 -2
- package/dist/modules/customers/api/companies/[id]/people/route.js +64 -20
- package/dist/modules/customers/api/companies/[id]/people/route.js.map +2 -2
- package/dist/modules/customers/api/companies/[id]/route.js +94 -17
- package/dist/modules/customers/api/companies/[id]/route.js.map +2 -2
- package/dist/modules/customers/api/dashboard/widgets/customer-todos/route.js +5 -8
- package/dist/modules/customers/api/dashboard/widgets/customer-todos/route.js.map +2 -2
- package/dist/modules/customers/api/deals/[id]/companies/route.js +1 -1
- package/dist/modules/customers/api/deals/[id]/companies/route.js.map +2 -2
- package/dist/modules/customers/api/deals/[id]/people/route.js +1 -1
- package/dist/modules/customers/api/deals/[id]/people/route.js.map +2 -2
- package/dist/modules/customers/api/deals/[id]/route.js +25 -8
- package/dist/modules/customers/api/deals/[id]/route.js.map +2 -2
- package/dist/modules/customers/api/deals/[id]/stats/route.js +22 -3
- package/dist/modules/customers/api/deals/[id]/stats/route.js.map +2 -2
- package/dist/modules/customers/api/deals/aggregate/route.js +4 -11
- package/dist/modules/customers/api/deals/aggregate/route.js.map +2 -2
- package/dist/modules/customers/api/deals/map/route.js +1 -2
- package/dist/modules/customers/api/deals/map/route.js.map +2 -2
- package/dist/modules/customers/api/deals/route.js +1 -38
- package/dist/modules/customers/api/deals/route.js.map +2 -2
- package/dist/modules/customers/api/entity-roles-factory.js +4 -4
- package/dist/modules/customers/api/entity-roles-factory.js.map +2 -2
- package/dist/modules/customers/api/interactions/route.js +1 -3
- package/dist/modules/customers/api/interactions/route.js.map +2 -2
- package/dist/modules/customers/api/interactions/tasks/route.js +4 -27
- package/dist/modules/customers/api/interactions/tasks/route.js.map +2 -2
- package/dist/modules/customers/api/people/[id]/companies/[linkId]/route.js +3 -4
- package/dist/modules/customers/api/people/[id]/companies/[linkId]/route.js.map +2 -2
- package/dist/modules/customers/api/people/[id]/companies/context.js +1 -1
- package/dist/modules/customers/api/people/[id]/companies/context.js.map +2 -2
- package/dist/modules/customers/api/people/[id]/companies/enriched/route.js +1 -1
- package/dist/modules/customers/api/people/[id]/companies/enriched/route.js.map +2 -2
- package/dist/modules/customers/api/people/[id]/route.js +10 -11
- package/dist/modules/customers/api/people/[id]/route.js.map +2 -2
- package/dist/modules/customers/api/people/check-phone/route.js +9 -51
- package/dist/modules/customers/api/people/check-phone/route.js.map +2 -2
- package/dist/modules/customers/api/todos/route.js +5 -30
- package/dist/modules/customers/api/todos/route.js.map +2 -2
- package/dist/modules/customers/backend/customers/companies/page.js +4 -6
- package/dist/modules/customers/backend/customers/companies/page.js.map +2 -2
- package/dist/modules/customers/backend/customers/deals/[id]/page.js +1 -6
- package/dist/modules/customers/backend/customers/deals/[id]/page.js.map +2 -2
- package/dist/modules/customers/backend/customers/deals/page.js +4 -7
- package/dist/modules/customers/backend/customers/deals/page.js.map +2 -2
- package/dist/modules/customers/backend/customers/deals/pipeline/components/Lane.js +13 -4
- package/dist/modules/customers/backend/customers/deals/pipeline/components/Lane.js.map +2 -2
- package/dist/modules/customers/backend/customers/deals/pipeline/components/StatusFilterPopover.js +14 -85
- package/dist/modules/customers/backend/customers/deals/pipeline/components/StatusFilterPopover.js.map +2 -2
- package/dist/modules/customers/backend/customers/people/page.js +4 -6
- package/dist/modules/customers/backend/customers/people/page.js.map +2 -2
- package/dist/modules/customers/backend/hooks/useEmailDuplicateCheck.js +3 -9
- package/dist/modules/customers/backend/hooks/useEmailDuplicateCheck.js.map +2 -2
- package/dist/modules/customers/commands/deals.js +34 -21
- package/dist/modules/customers/commands/deals.js.map +2 -2
- package/dist/modules/customers/commands/interactions.js.map +1 -1
- package/dist/modules/customers/commands/personCompanyLinks.js +2 -131
- package/dist/modules/customers/commands/personCompanyLinks.js.map +2 -2
- package/dist/modules/customers/components/CustomerTodosTable.js +0 -1
- package/dist/modules/customers/components/CustomerTodosTable.js.map +2 -2
- package/dist/modules/customers/components/DealsKpiStrip.js +6 -7
- package/dist/modules/customers/components/DealsKpiStrip.js.map +2 -2
- package/dist/modules/customers/components/calendar/AgendaList.js +2 -2
- package/dist/modules/customers/components/calendar/AgendaList.js.map +2 -2
- package/dist/modules/customers/components/calendar/CalendarEventEditor.js +1 -1
- package/dist/modules/customers/components/calendar/CalendarEventEditor.js.map +2 -2
- package/dist/modules/customers/components/calendar/CalendarScreen.js +1 -1
- package/dist/modules/customers/components/calendar/CalendarScreen.js.map +2 -2
- package/dist/modules/customers/components/calendar/CalendarSettingsModal.js +1 -1
- package/dist/modules/customers/components/calendar/CalendarSettingsModal.js.map +2 -2
- package/dist/modules/customers/components/calendar/EventBlock.js +1 -1
- package/dist/modules/customers/components/calendar/EventBlock.js.map +2 -2
- package/dist/modules/customers/components/calendar/EventPeekPopover.js +2 -3
- package/dist/modules/customers/components/calendar/EventPeekPopover.js.map +2 -2
- package/dist/modules/customers/components/calendar/editor/PeopleField.js +5 -40
- package/dist/modules/customers/components/calendar/editor/PeopleField.js.map +2 -2
- package/dist/modules/customers/components/calendar/editor/hooks.js +1 -2
- package/dist/modules/customers/components/calendar/editor/hooks.js.map +2 -2
- package/dist/modules/customers/components/calendar/types.js +1 -1
- package/dist/modules/customers/components/calendar/types.js.map +2 -2
- package/dist/modules/customers/components/detail/AssignRoleDialog.js +33 -28
- package/dist/modules/customers/components/detail/AssignRoleDialog.js.map +2 -2
- package/dist/modules/customers/components/detail/CompanyKpiBar.js +4 -5
- package/dist/modules/customers/components/detail/CompanyKpiBar.js.map +2 -2
- package/dist/modules/customers/components/detail/CompanyPeopleSection.js +1 -3
- package/dist/modules/customers/components/detail/CompanyPeopleSection.js.map +2 -2
- package/dist/modules/customers/components/detail/DealForm.js +7 -19
- package/dist/modules/customers/components/detail/DealForm.js.map +2 -2
- package/dist/modules/customers/components/detail/DealsSection.js +5 -6
- package/dist/modules/customers/components/detail/DealsSection.js.map +2 -2
- package/dist/modules/customers/components/detail/EntityTagsDialog.js +11 -35
- package/dist/modules/customers/components/detail/EntityTagsDialog.js.map +2 -2
- package/dist/modules/customers/components/detail/PersonCompaniesSection.js +1 -3
- package/dist/modules/customers/components/detail/PersonCompaniesSection.js.map +2 -2
- package/dist/modules/customers/components/detail/hooks/usePersonTasks.js +13 -19
- package/dist/modules/customers/components/detail/hooks/usePersonTasks.js.map +2 -2
- package/dist/modules/customers/components/detail/schedule/ParticipantsField.js +4 -4
- package/dist/modules/customers/components/detail/schedule/ParticipantsField.js.map +2 -2
- package/dist/modules/customers/components/detail/schedule/useScheduleFormState.js +3 -3
- package/dist/modules/customers/components/detail/schedule/useScheduleFormState.js.map +2 -2
- package/dist/modules/customers/components/detail/utils.js +5 -5
- package/dist/modules/customers/components/detail/utils.js.map +2 -2
- package/dist/modules/customers/data/entities.js.map +1 -1
- package/dist/modules/customers/data/validators.js +3 -32
- package/dist/modules/customers/data/validators.js.map +2 -2
- package/dist/modules/customers/events.js +0 -5
- package/dist/modules/customers/events.js.map +2 -2
- package/dist/modules/customers/lib/calendar/conflicts.js +2 -8
- package/dist/modules/customers/lib/calendar/conflicts.js.map +2 -2
- package/dist/modules/customers/lib/calendar/editorPayload.js +2 -3
- package/dist/modules/customers/lib/calendar/editorPayload.js.map +2 -2
- package/dist/modules/customers/lib/calendar/mapItem.js +3 -8
- package/dist/modules/customers/lib/calendar/mapItem.js.map +2 -2
- package/dist/modules/customers/lib/dealStatus.js +0 -30
- package/dist/modules/customers/lib/dealStatus.js.map +2 -2
- package/dist/modules/customers/lib/findPeopleByAddresses.js +0 -1
- package/dist/modules/customers/lib/findPeopleByAddresses.js.map +2 -2
- package/dist/modules/customers/lib/personCompanies.js +2 -100
- package/dist/modules/customers/lib/personCompanies.js.map +2 -2
- package/dist/modules/customers/lib/todoCompatibility.js +0 -12
- package/dist/modules/customers/lib/todoCompatibility.js.map +2 -2
- package/dist/modules/dashboards/lib/widgetScope.js +1 -6
- package/dist/modules/dashboards/lib/widgetScope.js.map +2 -2
- package/dist/modules/data_sync/backend/data-sync/page.js +1 -3
- package/dist/modules/data_sync/backend/data-sync/page.js.map +2 -2
- package/dist/modules/data_sync/lib/sync-engine.js +6 -72
- package/dist/modules/data_sync/lib/sync-engine.js.map +2 -2
- package/dist/modules/data_sync/workers/sync-export.js +1 -5
- package/dist/modules/data_sync/workers/sync-export.js.map +2 -2
- package/dist/modules/data_sync/workers/sync-import.js +1 -5
- package/dist/modules/data_sync/workers/sync-import.js.map +2 -2
- package/dist/modules/devices/acl.js +1 -9
- package/dist/modules/devices/acl.js.map +2 -2
- package/dist/modules/devices/api/admin/devices/[id]/route.js +32 -5
- package/dist/modules/devices/api/admin/devices/[id]/route.js.map +2 -2
- package/dist/modules/devices/api/admin/devices/route.js +1 -14
- package/dist/modules/devices/api/admin/devices/route.js.map +2 -2
- package/dist/modules/devices/api/deviceList.js +12 -99
- package/dist/modules/devices/api/deviceList.js.map +2 -2
- package/dist/modules/devices/api/openapi.js +1 -3
- package/dist/modules/devices/api/openapi.js.map +2 -2
- package/dist/modules/devices/api/route.js +1 -9
- package/dist/modules/devices/api/route.js.map +2 -2
- package/dist/modules/devices/backend/devices/[id]/page.js +26 -10
- package/dist/modules/devices/backend/devices/[id]/page.js.map +2 -2
- package/dist/modules/devices/backend/devices/create/page.js +1 -17
- package/dist/modules/devices/backend/devices/create/page.js.map +2 -2
- package/dist/modules/devices/backend/devices/page.js +34 -28
- package/dist/modules/devices/backend/devices/page.js.map +2 -2
- package/dist/modules/devices/setup.js +2 -6
- package/dist/modules/devices/setup.js.map +2 -2
- package/dist/modules/directory/backend/directory/organizations/page.js +1 -2
- package/dist/modules/directory/backend/directory/organizations/page.js.map +2 -2
- package/dist/modules/directory/backend/directory/tenants/page.js +1 -2
- package/dist/modules/directory/backend/directory/tenants/page.js.map +2 -2
- package/dist/modules/directory/di.js +0 -9
- package/dist/modules/directory/di.js.map +2 -2
- package/dist/modules/directory/utils/organizationScope.js.map +2 -2
- package/dist/modules/entities/api/records.js +2 -4
- package/dist/modules/entities/api/records.js.map +2 -2
- package/dist/modules/entities/backend/entities/user/[entityId]/records/page.js +1 -3
- package/dist/modules/entities/backend/entities/user/[entityId]/records/page.js.map +2 -2
- package/dist/modules/eudr/api/plots/route.js +1 -5
- package/dist/modules/eudr/api/plots/route.js.map +2 -2
- package/dist/modules/eudr/backend/eudr/evidence-submissions/[id]/page.meta.js +3 -1
- package/dist/modules/eudr/backend/eudr/evidence-submissions/[id]/page.meta.js.map +2 -2
- package/dist/modules/eudr/backend/eudr/evidence-submissions/create/page.meta.js +1 -0
- package/dist/modules/eudr/backend/eudr/evidence-submissions/create/page.meta.js.map +2 -2
- package/dist/modules/eudr/backend/eudr/evidence-submissions/page.js +0 -3
- package/dist/modules/eudr/backend/eudr/evidence-submissions/page.js.map +2 -2
- package/dist/modules/eudr/backend/eudr/evidence-submissions/page.meta.js +4 -1
- package/dist/modules/eudr/backend/eudr/evidence-submissions/page.meta.js.map +2 -2
- package/dist/modules/eudr/backend/eudr/page.meta.js +2 -2
- package/dist/modules/eudr/backend/eudr/page.meta.js.map +2 -2
- package/dist/modules/eudr/backend/eudr/plots/[id]/page.js +8 -2
- package/dist/modules/eudr/backend/eudr/plots/[id]/page.js.map +2 -2
- package/dist/modules/eudr/backend/eudr/plots/[id]/page.meta.js +3 -1
- package/dist/modules/eudr/backend/eudr/plots/[id]/page.meta.js.map +2 -2
- package/dist/modules/eudr/backend/eudr/plots/create/page.js +8 -2
- package/dist/modules/eudr/backend/eudr/plots/create/page.js.map +2 -2
- package/dist/modules/eudr/backend/eudr/plots/create/page.meta.js +1 -0
- package/dist/modules/eudr/backend/eudr/plots/create/page.meta.js.map +2 -2
- package/dist/modules/eudr/backend/eudr/plots/page.js +0 -3
- package/dist/modules/eudr/backend/eudr/plots/page.js.map +2 -2
- package/dist/modules/eudr/backend/eudr/plots/page.meta.js +4 -1
- package/dist/modules/eudr/backend/eudr/plots/page.meta.js.map +2 -2
- package/dist/modules/eudr/backend/eudr/product-mappings/[id]/page.meta.js +3 -1
- package/dist/modules/eudr/backend/eudr/product-mappings/[id]/page.meta.js.map +2 -2
- package/dist/modules/eudr/backend/eudr/product-mappings/create/page.meta.js +1 -0
- package/dist/modules/eudr/backend/eudr/product-mappings/create/page.meta.js.map +2 -2
- package/dist/modules/eudr/backend/eudr/product-mappings/page.js +0 -3
- package/dist/modules/eudr/backend/eudr/product-mappings/page.js.map +2 -2
- package/dist/modules/eudr/backend/eudr/product-mappings/page.meta.js +4 -1
- package/dist/modules/eudr/backend/eudr/product-mappings/page.meta.js.map +2 -2
- package/dist/modules/eudr/backend/eudr/risk-assessments/[id]/page.meta.js +3 -1
- package/dist/modules/eudr/backend/eudr/risk-assessments/[id]/page.meta.js.map +2 -2
- package/dist/modules/eudr/backend/eudr/risk-assessments/create/page.meta.js +1 -0
- package/dist/modules/eudr/backend/eudr/risk-assessments/create/page.meta.js.map +2 -2
- package/dist/modules/eudr/backend/eudr/risk-assessments/page.js +0 -3
- package/dist/modules/eudr/backend/eudr/risk-assessments/page.js.map +2 -2
- package/dist/modules/eudr/backend/eudr/risk-assessments/page.meta.js +4 -1
- package/dist/modules/eudr/backend/eudr/risk-assessments/page.meta.js.map +2 -2
- package/dist/modules/eudr/backend/eudr/statements/[id]/page.js +2 -0
- package/dist/modules/eudr/backend/eudr/statements/[id]/page.js.map +2 -2
- package/dist/modules/eudr/backend/eudr/statements/[id]/page.meta.js +3 -1
- package/dist/modules/eudr/backend/eudr/statements/[id]/page.meta.js.map +2 -2
- package/dist/modules/eudr/backend/eudr/statements/create/page.meta.js +1 -0
- package/dist/modules/eudr/backend/eudr/statements/create/page.meta.js.map +2 -2
- package/dist/modules/eudr/backend/eudr/statements/page.js +30 -28
- package/dist/modules/eudr/backend/eudr/statements/page.js.map +2 -2
- package/dist/modules/eudr/backend/eudr/statements/page.meta.js +4 -1
- package/dist/modules/eudr/backend/eudr/statements/page.meta.js.map +2 -2
- package/dist/modules/eudr/commands/statements.js +8 -3
- package/dist/modules/eudr/commands/statements.js.map +2 -2
- package/dist/modules/eudr/components/crudErrorI18n.js +21 -1
- package/dist/modules/eudr/components/crudErrorI18n.js.map +2 -2
- package/dist/modules/eudr/components/formConfig.js +6 -2
- package/dist/modules/eudr/components/formConfig.js.map +2 -2
- package/dist/modules/eudr/data/validators.js +1 -4
- package/dist/modules/eudr/data/validators.js.map +2 -2
- package/dist/modules/eudr/lib/statement-lifecycle.js +9 -1
- package/dist/modules/eudr/lib/statement-lifecycle.js.map +2 -2
- package/dist/modules/feature_toggles/components/FeatureTogglesTable.js +0 -1
- package/dist/modules/feature_toggles/components/FeatureTogglesTable.js.map +2 -2
- package/dist/modules/feature_toggles/components/OverridesTable.js +0 -1
- package/dist/modules/feature_toggles/components/OverridesTable.js.map +2 -2
- package/dist/modules/feature_toggles/defaults.json +8 -0
- package/dist/modules/inbox_ops/backend/inbox-ops/log/page.js +0 -3
- package/dist/modules/inbox_ops/backend/inbox-ops/log/page.js.map +2 -2
- package/dist/modules/inbox_ops/backend/inbox-ops/page.js +0 -3
- package/dist/modules/inbox_ops/backend/inbox-ops/page.js.map +2 -2
- package/dist/modules/inbox_ops/lib/htmlToPlainText.js +12 -1
- package/dist/modules/inbox_ops/lib/htmlToPlainText.js.map +2 -2
- package/dist/modules/integrations/api/[id]/credentials/route.js +1 -6
- package/dist/modules/integrations/api/[id]/credentials/route.js.map +2 -2
- package/dist/modules/integrations/backend/integrations/[id]/page.js +29 -38
- package/dist/modules/integrations/backend/integrations/[id]/page.js.map +2 -2
- package/dist/modules/integrations/backend/integrations/bundle/[id]/page.js +9 -36
- package/dist/modules/integrations/backend/integrations/bundle/[id]/page.js.map +2 -2
- package/dist/modules/integrations/data/validators.js +3 -11
- package/dist/modules/integrations/data/validators.js.map +2 -2
- package/dist/modules/integrations/lib/credentials-masking.js +2 -6
- package/dist/modules/integrations/lib/credentials-masking.js.map +2 -2
- package/dist/modules/messages/api/[id]/route.js +1 -29
- package/dist/modules/messages/api/[id]/route.js.map +2 -2
- package/dist/modules/messages/api/openapi.js +2 -17
- package/dist/modules/messages/api/openapi.js.map +2 -2
- package/dist/modules/messages/api/route.js +2 -17
- package/dist/modules/messages/api/route.js.map +2 -2
- package/dist/modules/messages/components/MessagesInboxPageClient.js +14 -7
- package/dist/modules/messages/components/MessagesInboxPageClient.js.map +2 -2
- package/dist/modules/messages/components/inboxFilters.js +0 -15
- package/dist/modules/messages/components/inboxFilters.js.map +2 -2
- package/dist/modules/messages/components/message-detail/hooks/useMessageDetailsConversation.js +1 -11
- package/dist/modules/messages/components/message-detail/hooks/useMessageDetailsConversation.js.map +2 -2
- package/dist/modules/messages/components/message-detail/panels/MessageHeader.js +1 -3
- package/dist/modules/messages/components/message-detail/panels/MessageHeader.js.map +2 -2
- package/dist/modules/messages/components/message-detail/panels/thread-panel.js +1 -2
- package/dist/modules/messages/components/message-detail/panels/thread-panel.js.map +2 -2
- package/dist/modules/messages/components/messageListLabels.js +2 -14
- package/dist/modules/messages/components/messageListLabels.js.map +2 -2
- package/dist/modules/messages/data/validators.js +4 -18
- package/dist/modules/messages/data/validators.js.map +2 -2
- package/dist/modules/payment_gateways/api/webhook/[provider]/route.js +6 -4
- package/dist/modules/payment_gateways/api/webhook/[provider]/route.js.map +2 -2
- package/dist/modules/payment_gateways/backend/payment-gateways/page.js +1 -3
- package/dist/modules/payment_gateways/backend/payment-gateways/page.js.map +2 -2
- package/dist/modules/payment_gateways/lib/webhook-processor.js +0 -7
- package/dist/modules/payment_gateways/lib/webhook-processor.js.map +2 -2
- package/dist/modules/planner/backend/planner/availability-rulesets/page.js +0 -3
- package/dist/modules/planner/backend/planner/availability-rulesets/page.js.map +2 -2
- package/dist/modules/push_notifications/backend/push_notifications/page.js +1 -3
- package/dist/modules/push_notifications/backend/push_notifications/page.js.map +2 -2
- package/dist/modules/push_notifications/backend/push_notifications/send/page.js +1 -1
- package/dist/modules/push_notifications/backend/push_notifications/send/page.js.map +2 -2
- package/dist/modules/query_index/lib/engine.js +51 -150
- package/dist/modules/query_index/lib/engine.js.map +2 -2
- package/dist/modules/query_index/lib/search-tokens.js +3 -79
- package/dist/modules/query_index/lib/search-tokens.js.map +2 -2
- package/dist/modules/resources/backend/resources/resource-types/page.js +1 -3
- package/dist/modules/resources/backend/resources/resource-types/page.js.map +2 -2
- package/dist/modules/resources/backend/resources/resources/page.js +1 -3
- package/dist/modules/resources/backend/resources/resources/page.js.map +2 -2
- package/dist/modules/sales/backend/sales/channels/offers/page.js +0 -3
- package/dist/modules/sales/backend/sales/channels/offers/page.js.map +2 -2
- package/dist/modules/sales/backend/sales/channels/page.js +0 -3
- package/dist/modules/sales/backend/sales/channels/page.js.map +2 -2
- package/dist/modules/sales/backend/sales/documents/[id]/page.js +8 -10
- package/dist/modules/sales/backend/sales/documents/[id]/page.js.map +2 -2
- package/dist/modules/sales/commands/documents.js +1 -79
- package/dist/modules/sales/commands/documents.js.map +2 -2
- package/dist/modules/sales/components/PriceWithCurrency.js +5 -7
- package/dist/modules/sales/components/PriceWithCurrency.js.map +2 -2
- package/dist/modules/sales/components/channels/SalesChannelOffersPanel.js +0 -3
- package/dist/modules/sales/components/channels/SalesChannelOffersPanel.js.map +2 -2
- package/dist/modules/sales/components/documents/AdjustmentsSection.js +6 -8
- package/dist/modules/sales/components/documents/AdjustmentsSection.js.map +2 -2
- package/dist/modules/sales/components/documents/ItemsSection.js +22 -51
- package/dist/modules/sales/components/documents/ItemsSection.js.map +2 -2
- package/dist/modules/sales/components/documents/LineItemDialog.js +19 -84
- package/dist/modules/sales/components/documents/LineItemDialog.js.map +2 -2
- package/dist/modules/sales/components/documents/PaymentsSection.js +9 -23
- package/dist/modules/sales/components/documents/PaymentsSection.js.map +2 -2
- package/dist/modules/sales/components/documents/ReturnsSection.js +6 -8
- package/dist/modules/sales/components/documents/ReturnsSection.js.map +2 -2
- package/dist/modules/sales/components/documents/SalesDocumentsTable.js +14 -68
- package/dist/modules/sales/components/documents/SalesDocumentsTable.js.map +2 -2
- package/dist/modules/sales/components/documents/SalesOrderDraftLines.js +5 -6
- package/dist/modules/sales/components/documents/SalesOrderDraftLines.js.map +2 -2
- package/dist/modules/sales/components/documents/ShipmentDialog.js +4 -5
- package/dist/modules/sales/components/documents/ShipmentDialog.js.map +2 -2
- package/dist/modules/sales/components/documents/ShipmentsSection.js +6 -8
- package/dist/modules/sales/components/documents/ShipmentsSection.js.map +2 -2
- package/dist/modules/sales/components/documents/lineItemUtils.js +2 -2
- package/dist/modules/sales/components/documents/lineItemUtils.js.map +2 -2
- package/dist/modules/sales/data/entities.js +2 -8
- package/dist/modules/sales/data/entities.js.map +2 -2
- package/dist/modules/sales/extension-points.js +0 -1
- package/dist/modules/sales/extension-points.js.map +2 -2
- package/dist/modules/sales/setup.js +0 -2
- package/dist/modules/sales/setup.js.map +2 -2
- package/dist/modules/sales/widgets/injection/document-history/widget.client.js +44 -2
- package/dist/modules/sales/widgets/injection/document-history/widget.client.js.map +2 -2
- package/dist/modules/sales/widgets/injection/payment-gateway-status-column/widget.js +2 -10
- package/dist/modules/sales/widgets/injection/payment-gateway-status-column/widget.js.map +2 -2
- package/dist/modules/sales/widgets/injection-table.js +7 -4
- package/dist/modules/sales/widgets/injection-table.js.map +2 -2
- package/dist/modules/staff/backend/staff/leave-requests/page.js +0 -3
- package/dist/modules/staff/backend/staff/leave-requests/page.js.map +2 -2
- package/dist/modules/staff/backend/staff/my-leave-requests/page.js +0 -3
- package/dist/modules/staff/backend/staff/my-leave-requests/page.js.map +2 -2
- package/dist/modules/staff/backend/staff/team-members/page.js +0 -3
- package/dist/modules/staff/backend/staff/team-members/page.js.map +2 -2
- package/dist/modules/staff/backend/staff/team-roles/page.js +0 -3
- package/dist/modules/staff/backend/staff/team-roles/page.js.map +2 -2
- package/dist/modules/staff/backend/staff/teams/[id]/edit/page.js +0 -3
- package/dist/modules/staff/backend/staff/teams/[id]/edit/page.js.map +2 -2
- package/dist/modules/staff/backend/staff/teams/page.js +0 -3
- package/dist/modules/staff/backend/staff/teams/page.js.map +2 -2
- package/dist/modules/staff/backend/staff/timesheets/page.js +18 -29
- package/dist/modules/staff/backend/staff/timesheets/page.js.map +2 -2
- package/dist/modules/staff/backend/staff/timesheets/projects/page.js +0 -3
- package/dist/modules/staff/backend/staff/timesheets/projects/page.js.map +2 -2
- package/dist/modules/sync_excel/lib/adapters/customers.js +0 -1
- package/dist/modules/sync_excel/lib/adapters/customers.js.map +2 -2
- package/dist/modules/warranty_claims/api/assignees/route.js +3 -3
- package/dist/modules/warranty_claims/api/assignees/route.js.map +2 -2
- package/dist/modules/warranty_claims/api/portal/attachments/route.js +2 -2
- package/dist/modules/warranty_claims/api/portal/attachments/route.js.map +2 -2
- package/dist/modules/warranty_claims/api/portal/claims/route.js +9 -12
- package/dist/modules/warranty_claims/api/portal/claims/route.js.map +2 -2
- package/dist/modules/warranty_claims/backend/page.js +0 -3
- package/dist/modules/warranty_claims/backend/page.js.map +2 -2
- package/dist/modules/warranty_claims/backend/warranty_claims/registrations/page.js +0 -3
- package/dist/modules/warranty_claims/backend/warranty_claims/registrations/page.js.map +2 -2
- package/dist/modules/warranty_claims/backend/warranty_claims/troubleshooting-guides/page.js +0 -3
- package/dist/modules/warranty_claims/backend/warranty_claims/troubleshooting-guides/page.js.map +2 -2
- package/dist/modules/warranty_claims/backend/warranty_claims/vendor-policies/page.js +0 -3
- package/dist/modules/warranty_claims/backend/warranty_claims/vendor-policies/page.js.map +2 -2
- package/dist/modules/warranty_claims/frontend/[orgSlug]/portal/claims/page.js +0 -3
- package/dist/modules/warranty_claims/frontend/[orgSlug]/portal/claims/page.js.map +2 -2
- package/dist/modules/wms/api/warehouses/route.js +9 -13
- package/dist/modules/wms/api/warehouses/route.js.map +2 -2
- package/dist/modules/wms/api/zones/route.js +2 -15
- package/dist/modules/wms/api/zones/route.js.map +2 -2
- package/dist/modules/wms/commands/configuration.js +9 -121
- package/dist/modules/wms/commands/configuration.js.map +2 -2
- package/dist/modules/wms/commands/inventory-actions.js +0 -3
- package/dist/modules/wms/commands/inventory-actions.js.map +2 -2
- package/dist/modules/wms/commands/shared.js +1 -9
- package/dist/modules/wms/commands/shared.js.map +2 -2
- package/dist/modules/wms/components/backend/WmsConfigurationPage.js +111 -76
- package/dist/modules/wms/components/backend/WmsConfigurationPage.js.map +3 -3
- package/dist/modules/wms/components/backend/WmsInventoryConsolePage.js +0 -1
- package/dist/modules/wms/components/backend/WmsInventoryConsolePage.js.map +2 -2
- package/dist/modules/wms/components/backend/WmsLocationDetailPage.js +20 -16
- package/dist/modules/wms/components/backend/WmsLocationDetailPage.js.map +2 -2
- package/dist/modules/wms/components/backend/WmsLotDetailPage.js +10 -6
- package/dist/modules/wms/components/backend/WmsLotDetailPage.js.map +2 -2
- package/dist/modules/wms/components/backend/WmsLotsListPage.js +0 -1
- package/dist/modules/wms/components/backend/WmsLotsListPage.js.map +2 -2
- package/dist/modules/wms/components/backend/WmsOperationalDashboardPage.js +11 -7
- package/dist/modules/wms/components/backend/WmsOperationalDashboardPage.js.map +2 -2
- package/dist/modules/wms/components/backend/WmsSkuDetailPage.js +10 -6
- package/dist/modules/wms/components/backend/WmsSkuDetailPage.js.map +2 -2
- package/dist/modules/wms/components/backend/inventoryMutationLoaders.js +20 -27
- package/dist/modules/wms/components/backend/inventoryMutationLoaders.js.map +2 -2
- package/dist/modules/workflows/backend/definitions/page.js +1 -3
- package/dist/modules/workflows/backend/definitions/page.js.map +2 -2
- package/dist/modules/workflows/backend/events/page.js +1 -3
- package/dist/modules/workflows/backend/events/page.js.map +2 -2
- package/dist/modules/workflows/backend/instances/page.js +1 -3
- package/dist/modules/workflows/backend/instances/page.js.map +2 -2
- package/dist/modules/workflows/backend/tasks/page.js +1 -3
- package/dist/modules/workflows/backend/tasks/page.js.map +2 -2
- package/dist/modules/workflows/lib/activity-executor.js +0 -4
- package/dist/modules/workflows/lib/activity-executor.js.map +2 -2
- package/package.json +10 -9
- package/src/helpers/integration/api.ts +1 -33
- package/src/helpers/integration/communicationChannelsFixtures.ts +1 -69
- package/src/modules/api_keys/api/keys/route.ts +1 -3
- package/src/modules/api_keys/backend/api-keys/page.tsx +1 -4
- package/src/modules/attachments/AGENTS.md +0 -15
- package/src/modules/attachments/api/route.ts +2 -2
- package/src/modules/attachments/components/AttachmentLibrary.tsx +0 -3
- package/src/modules/attachments/di.ts +0 -16
- package/src/modules/attachments/i18n/de.json +0 -5
- package/src/modules/attachments/i18n/en.json +0 -5
- package/src/modules/attachments/i18n/es.json +0 -5
- package/src/modules/attachments/i18n/ko.json +0 -5
- package/src/modules/attachments/i18n/pl.json +0 -5
- package/src/modules/attachments/index.ts +0 -10
- package/src/modules/attachments/lib/scoped-upload-service.ts +0 -46
- package/src/modules/attachments/lib/upload-limits.ts +2 -6
- package/src/modules/audit_logs/backend/audit-logs/page.tsx +0 -8
- package/src/modules/audit_logs/lib/display-helpers.tsx +32 -42
- package/src/modules/audit_logs/services/actionLogService.ts +11 -74
- package/src/modules/auth/acl.ts +6 -30
- package/src/modules/auth/api/feature-check.ts +3 -10
- package/src/modules/auth/api/login.ts +24 -9
- package/src/modules/auth/api/roles/acl/route.ts +39 -42
- package/src/modules/auth/api/routeError.ts +30 -0
- package/src/modules/auth/api/session/refresh.ts +1 -32
- package/src/modules/auth/api/users/acl/route.ts +101 -185
- package/src/modules/auth/api/users/route.ts +5 -18
- package/src/modules/auth/backend/roles/[id]/edit/page.meta.ts +2 -5
- package/src/modules/auth/backend/roles/page.tsx +2 -4
- package/src/modules/auth/backend/users/[id]/edit/page.meta.ts +2 -5
- package/src/modules/auth/backend/users/page.tsx +2 -3
- package/src/modules/auth/components/AclEditor.tsx +33 -63
- package/src/modules/auth/data/entities.ts +1 -4
- package/src/modules/auth/data/validators.ts +0 -5
- package/src/modules/auth/di.ts +16 -46
- package/src/modules/auth/frontend/reset/[token]/page.tsx +0 -74
- package/src/modules/auth/i18n/de.json +0 -389
- package/src/modules/auth/i18n/en.json +0 -389
- package/src/modules/auth/i18n/es.json +0 -389
- package/src/modules/auth/i18n/ko.json +0 -389
- package/src/modules/auth/i18n/pl.json +2 -391
- package/src/modules/auth/lib/grantChecks.ts +0 -6
- package/src/modules/auth/services/authService.ts +2 -18
- package/src/modules/auth/services/rbacService.ts +24 -110
- package/src/modules/business_rules/backend/logs/page.tsx +1 -4
- package/src/modules/business_rules/backend/rules/[id]/page.meta.ts +5 -0
- package/src/modules/business_rules/backend/rules/create/page.meta.ts +5 -1
- package/src/modules/business_rules/backend/rules/page.tsx +1 -4
- package/src/modules/business_rules/backend/sets/[id]/page.meta.ts +5 -0
- package/src/modules/business_rules/backend/sets/create/page.meta.ts +5 -1
- package/src/modules/business_rules/backend/sets/page.tsx +1 -4
- package/src/modules/business_rules/lib/expression-evaluator.ts +9 -9
- package/src/modules/business_rules/lib/rule-evaluator.ts +9 -10
- package/src/modules/catalog/ai-agents.ts +1 -1
- package/src/modules/catalog/ai-tools/merchandising-pack.ts +2 -2
- package/src/modules/catalog/backend/catalog/products/MerchandisingAssistantSheet.tsx +5 -12
- package/src/modules/catalog/components/categories/CategoriesDataTable.tsx +0 -3
- package/src/modules/catalog/components/products/ProductsDataTable.tsx +0 -7
- package/src/modules/catalog/i18n/de.json +0 -1
- package/src/modules/catalog/i18n/en.json +0 -1
- package/src/modules/catalog/i18n/es.json +0 -1
- package/src/modules/catalog/i18n/ko.json +0 -1
- package/src/modules/catalog/i18n/pl.json +0 -1
- package/src/modules/catalog/widgets/injection/merchandising-assistant-trigger/widget.client.tsx +0 -4
- package/src/modules/communication_channels/api/post/channels/[id]/test-send/route.ts +1 -17
- package/src/modules/communication_channels/api/post/test-seed/route.ts +16 -155
- package/src/modules/communication_channels/backend/communication_channels/channels/page.tsx +0 -4
- package/src/modules/communication_channels/commands/ingest-inbound-message.ts +1 -38
- package/src/modules/communication_channels/di.ts +0 -7
- package/src/modules/communication_channels/lib/adapter.ts +0 -14
- package/src/modules/communication_channels/lib/email-capabilities.ts +0 -4
- package/src/modules/communication_channels/lib/test-seed.ts +4 -64
- package/src/modules/configs/i18n/de.json +0 -2
- package/src/modules/configs/i18n/en.json +0 -2
- package/src/modules/configs/i18n/es.json +0 -2
- package/src/modules/configs/i18n/ko.json +0 -2
- package/src/modules/configs/i18n/pl.json +0 -2
- package/src/modules/configs/lib/system-status.ts +0 -9
- package/src/modules/currencies/backend/currencies/page.tsx +1 -4
- package/src/modules/currencies/backend/exchange-rates/page.tsx +1 -4
- package/src/modules/customer_accounts/api/admin/domain-mappings.ts +0 -7
- package/src/modules/customer_accounts/backend/customer_accounts/roles/page.tsx +1 -4
- package/src/modules/customer_accounts/backend/customer_accounts/settings/CustomerAccountsSettingsPageClient.tsx +138 -0
- package/src/modules/customer_accounts/backend/customer_accounts/settings/page.tsx +8 -132
- package/src/modules/customer_accounts/backend/customer_accounts/users/PortalUsersPageClient.tsx +598 -0
- package/src/modules/customer_accounts/backend/customer_accounts/users/[id]/PortalUserDetailPageClient.tsx +838 -0
- package/src/modules/customer_accounts/backend/customer_accounts/users/[id]/page.tsx +6 -838
- package/src/modules/customer_accounts/backend/customer_accounts/users/page.tsx +6 -590
- package/src/modules/customer_accounts/extension-points.ts +1 -1
- package/src/modules/customer_accounts/lib/portalUrl.ts +112 -0
- package/src/modules/customer_accounts/services/domainMappingService.ts +0 -10
- package/src/modules/customers/ai-tools/companies-pack.ts +1 -4
- package/src/modules/customers/ai-tools/deal-analyzer-pack.ts +2 -17
- package/src/modules/customers/ai-tools/deals-pack.ts +1 -66
- package/src/modules/customers/ai-tools/people-pack.ts +1 -4
- package/src/modules/customers/api/activities/route.ts +0 -45
- package/src/modules/customers/api/companies/[id]/people/route.ts +73 -24
- package/src/modules/customers/api/companies/[id]/route.ts +107 -24
- package/src/modules/customers/api/dashboard/widgets/customer-todos/route.ts +8 -16
- package/src/modules/customers/api/deals/[id]/companies/route.ts +1 -4
- package/src/modules/customers/api/deals/[id]/people/route.ts +1 -4
- package/src/modules/customers/api/deals/[id]/route.ts +28 -17
- package/src/modules/customers/api/deals/[id]/stats/route.ts +25 -10
- package/src/modules/customers/api/deals/aggregate/route.ts +4 -14
- package/src/modules/customers/api/deals/map/route.ts +0 -1
- package/src/modules/customers/api/deals/route.ts +1 -50
- package/src/modules/customers/api/entity-roles-factory.ts +4 -8
- package/src/modules/customers/api/interactions/route.ts +2 -8
- package/src/modules/customers/api/interactions/tasks/route.ts +1 -24
- package/src/modules/customers/api/people/[id]/companies/[linkId]/route.ts +4 -12
- package/src/modules/customers/api/people/[id]/companies/context.ts +1 -4
- package/src/modules/customers/api/people/[id]/companies/enriched/route.ts +1 -4
- package/src/modules/customers/api/people/[id]/route.ts +11 -16
- package/src/modules/customers/api/people/check-phone/route.ts +10 -75
- package/src/modules/customers/api/todos/route.ts +2 -27
- package/src/modules/customers/backend/customers/companies/page.tsx +4 -7
- package/src/modules/customers/backend/customers/deals/[id]/page.tsx +2 -7
- package/src/modules/customers/backend/customers/deals/page.tsx +4 -10
- package/src/modules/customers/backend/customers/deals/pipeline/components/Lane.tsx +14 -5
- package/src/modules/customers/backend/customers/deals/pipeline/components/StatusFilterPopover.tsx +27 -109
- package/src/modules/customers/backend/customers/people/page.tsx +4 -7
- package/src/modules/customers/backend/hooks/useEmailDuplicateCheck.ts +4 -12
- package/src/modules/customers/commands/deals.ts +59 -34
- package/src/modules/customers/commands/interactions.ts +1 -1
- package/src/modules/customers/commands/personCompanyLinks.ts +8 -224
- package/src/modules/customers/components/CustomerTodosTable.tsx +0 -2
- package/src/modules/customers/components/DealsKpiStrip.tsx +7 -7
- package/src/modules/customers/components/calendar/AgendaList.tsx +3 -3
- package/src/modules/customers/components/calendar/CalendarEventEditor.tsx +1 -1
- package/src/modules/customers/components/calendar/CalendarScreen.tsx +1 -1
- package/src/modules/customers/components/calendar/CalendarSettingsModal.tsx +1 -1
- package/src/modules/customers/components/calendar/EventBlock.tsx +2 -2
- package/src/modules/customers/components/calendar/EventPeekPopover.tsx +2 -4
- package/src/modules/customers/components/calendar/editor/PeopleField.tsx +5 -61
- package/src/modules/customers/components/calendar/editor/hooks.ts +1 -7
- package/src/modules/customers/components/calendar/types.ts +2 -2
- package/src/modules/customers/components/detail/AssignRoleDialog.tsx +12 -7
- package/src/modules/customers/components/detail/CompanyKpiBar.tsx +4 -5
- package/src/modules/customers/components/detail/CompanyPeopleSection.tsx +1 -8
- package/src/modules/customers/components/detail/DealForm.tsx +2 -22
- package/src/modules/customers/components/detail/DealsSection.tsx +5 -11
- package/src/modules/customers/components/detail/EntityTagsDialog.tsx +12 -58
- package/src/modules/customers/components/detail/PersonCompaniesSection.tsx +1 -8
- package/src/modules/customers/components/detail/hooks/usePersonTasks.ts +14 -23
- package/src/modules/customers/components/detail/schedule/ParticipantsField.tsx +5 -5
- package/src/modules/customers/components/detail/schedule/useScheduleFormState.ts +5 -5
- package/src/modules/customers/components/detail/types.ts +1 -1
- package/src/modules/customers/components/detail/utils.ts +5 -15
- package/src/modules/customers/data/entities.ts +1 -1
- package/src/modules/customers/data/validators.ts +9 -50
- package/src/modules/customers/events.ts +0 -5
- package/src/modules/customers/i18n/de.json +1 -9
- package/src/modules/customers/i18n/en.json +1 -9
- package/src/modules/customers/i18n/es.json +1 -9
- package/src/modules/customers/i18n/ko.json +1 -9
- package/src/modules/customers/i18n/pl.json +1 -9
- package/src/modules/customers/lib/calendar/conflicts.ts +2 -10
- package/src/modules/customers/lib/calendar/editorPayload.ts +3 -4
- package/src/modules/customers/lib/calendar/mapItem.ts +3 -8
- package/src/modules/customers/lib/dealStatus.ts +0 -42
- package/src/modules/customers/lib/findPeopleByAddresses.ts +6 -8
- package/src/modules/customers/lib/personCompanies.ts +1 -136
- package/src/modules/customers/lib/todoCompatibility.ts +1 -19
- package/src/modules/dashboards/i18n/es.json +4 -4
- package/src/modules/dashboards/i18n/pl.json +7 -7
- package/src/modules/dashboards/lib/widgetScope.ts +0 -6
- package/src/modules/data_sync/AGENTS.md +1 -1
- package/src/modules/data_sync/backend/data-sync/page.tsx +1 -4
- package/src/modules/data_sync/lib/adapter.ts +0 -36
- package/src/modules/data_sync/lib/sync-engine.ts +5 -113
- package/src/modules/data_sync/workers/sync-export.ts +0 -4
- package/src/modules/data_sync/workers/sync-import.ts +0 -4
- package/src/modules/devices/AGENTS.md +1 -20
- package/src/modules/devices/acl.ts +1 -9
- package/src/modules/devices/api/admin/devices/[id]/route.ts +34 -5
- package/src/modules/devices/api/admin/devices/route.ts +1 -14
- package/src/modules/devices/api/deviceList.ts +11 -135
- package/src/modules/devices/api/openapi.ts +1 -9
- package/src/modules/devices/api/route.ts +1 -9
- package/src/modules/devices/backend/devices/[id]/page.tsx +32 -18
- package/src/modules/devices/backend/devices/create/page.tsx +1 -17
- package/src/modules/devices/backend/devices/page.tsx +45 -44
- package/src/modules/devices/i18n/de.json +2 -3
- package/src/modules/devices/i18n/en.json +2 -3
- package/src/modules/devices/i18n/es.json +2 -3
- package/src/modules/devices/i18n/ko.json +2 -3
- package/src/modules/devices/i18n/pl.json +2 -3
- package/src/modules/devices/setup.ts +2 -6
- package/src/modules/directory/backend/directory/organizations/page.tsx +1 -3
- package/src/modules/directory/backend/directory/tenants/page.tsx +1 -3
- package/src/modules/directory/di.ts +2 -14
- package/src/modules/directory/utils/organizationScope.ts +15 -4
- package/src/modules/entities/api/records.ts +0 -2
- package/src/modules/entities/backend/entities/user/[entityId]/records/page.tsx +1 -4
- package/src/modules/eudr/api/plots/route.ts +0 -4
- package/src/modules/eudr/backend/eudr/evidence-submissions/[id]/page.meta.ts +2 -0
- package/src/modules/eudr/backend/eudr/evidence-submissions/create/page.meta.ts +1 -0
- package/src/modules/eudr/backend/eudr/evidence-submissions/page.meta.ts +4 -1
- package/src/modules/eudr/backend/eudr/evidence-submissions/page.tsx +0 -4
- package/src/modules/eudr/backend/eudr/page.meta.ts +2 -2
- package/src/modules/eudr/backend/eudr/plots/[id]/page.meta.ts +2 -0
- package/src/modules/eudr/backend/eudr/plots/[id]/page.tsx +8 -2
- package/src/modules/eudr/backend/eudr/plots/create/page.meta.ts +1 -0
- package/src/modules/eudr/backend/eudr/plots/create/page.tsx +8 -2
- package/src/modules/eudr/backend/eudr/plots/page.meta.ts +4 -1
- package/src/modules/eudr/backend/eudr/plots/page.tsx +0 -4
- package/src/modules/eudr/backend/eudr/product-mappings/[id]/page.meta.ts +2 -0
- package/src/modules/eudr/backend/eudr/product-mappings/create/page.meta.ts +1 -0
- package/src/modules/eudr/backend/eudr/product-mappings/page.meta.ts +4 -1
- package/src/modules/eudr/backend/eudr/product-mappings/page.tsx +0 -4
- package/src/modules/eudr/backend/eudr/risk-assessments/[id]/page.meta.ts +2 -0
- package/src/modules/eudr/backend/eudr/risk-assessments/create/page.meta.ts +1 -0
- package/src/modules/eudr/backend/eudr/risk-assessments/page.meta.ts +4 -1
- package/src/modules/eudr/backend/eudr/risk-assessments/page.tsx +0 -4
- package/src/modules/eudr/backend/eudr/statements/[id]/page.meta.ts +2 -0
- package/src/modules/eudr/backend/eudr/statements/[id]/page.tsx +2 -0
- package/src/modules/eudr/backend/eudr/statements/create/page.meta.ts +1 -0
- package/src/modules/eudr/backend/eudr/statements/page.meta.ts +4 -1
- package/src/modules/eudr/backend/eudr/statements/page.tsx +32 -30
- package/src/modules/eudr/commands/statements.ts +7 -2
- package/src/modules/eudr/components/crudErrorI18n.ts +31 -0
- package/src/modules/eudr/components/formConfig.tsx +9 -1
- package/src/modules/eudr/data/validators.ts +1 -16
- package/src/modules/eudr/i18n/de.json +3 -2
- package/src/modules/eudr/i18n/en.json +3 -2
- package/src/modules/eudr/i18n/es.json +3 -2
- package/src/modules/eudr/i18n/ko.json +3 -2
- package/src/modules/eudr/i18n/pl.json +3 -2
- package/src/modules/eudr/lib/statement-lifecycle.ts +8 -0
- package/src/modules/feature_toggles/components/FeatureTogglesTable.tsx +1 -2
- package/src/modules/feature_toggles/components/OverridesTable.tsx +1 -2
- package/src/modules/feature_toggles/defaults.json +8 -0
- package/src/modules/inbox_ops/backend/inbox-ops/log/page.tsx +0 -4
- package/src/modules/inbox_ops/backend/inbox-ops/page.tsx +0 -4
- package/src/modules/inbox_ops/lib/htmlToPlainText.ts +17 -1
- package/src/modules/integrations/api/[id]/credentials/route.ts +4 -6
- package/src/modules/integrations/backend/integrations/[id]/page.tsx +31 -61
- package/src/modules/integrations/backend/integrations/bundle/[id]/page.tsx +9 -44
- package/src/modules/integrations/data/validators.ts +2 -12
- package/src/modules/integrations/i18n/de.json +0 -1
- package/src/modules/integrations/i18n/en.json +0 -1
- package/src/modules/integrations/i18n/es.json +0 -1
- package/src/modules/integrations/i18n/ko.json +0 -1
- package/src/modules/integrations/i18n/pl.json +0 -1
- package/src/modules/integrations/lib/credentials-masking.ts +6 -10
- package/src/modules/messages/api/[id]/route.ts +1 -55
- package/src/modules/messages/api/openapi.ts +0 -20
- package/src/modules/messages/api/route.ts +2 -31
- package/src/modules/messages/components/MessagesInboxPageClient.tsx +16 -9
- package/src/modules/messages/components/inboxFilters.ts +0 -36
- package/src/modules/messages/components/message-detail/hooks/useMessageDetailsConversation.ts +1 -14
- package/src/modules/messages/components/message-detail/panels/MessageHeader.tsx +1 -3
- package/src/modules/messages/components/message-detail/panels/thread-panel.tsx +1 -2
- package/src/modules/messages/components/message-detail/types.ts +0 -3
- package/src/modules/messages/components/messageListLabels.ts +3 -52
- package/src/modules/messages/data/validators.ts +4 -43
- package/src/modules/payment_gateways/api/webhook/[provider]/route.ts +6 -4
- package/src/modules/payment_gateways/backend/payment-gateways/page.tsx +1 -4
- package/src/modules/payment_gateways/lib/webhook-processor.ts +0 -11
- package/src/modules/planner/backend/planner/availability-rulesets/page.tsx +0 -4
- package/src/modules/push_notifications/backend/push_notifications/page.tsx +1 -4
- package/src/modules/push_notifications/backend/push_notifications/send/page.tsx +4 -4
- package/src/modules/query_index/lib/engine.ts +61 -249
- package/src/modules/query_index/lib/search-tokens.ts +3 -135
- package/src/modules/resources/backend/resources/resource-types/page.tsx +1 -4
- package/src/modules/resources/backend/resources/resources/page.tsx +1 -4
- package/src/modules/sales/backend/sales/channels/offers/page.tsx +0 -4
- package/src/modules/sales/backend/sales/channels/page.tsx +0 -4
- package/src/modules/sales/backend/sales/documents/[id]/page.tsx +8 -14
- package/src/modules/sales/commands/documents.ts +0 -93
- package/src/modules/sales/components/PriceWithCurrency.tsx +5 -17
- package/src/modules/sales/components/channels/SalesChannelOffersPanel.tsx +0 -4
- package/src/modules/sales/components/documents/AdjustmentsSection.tsx +5 -6
- package/src/modules/sales/components/documents/ItemsSection.tsx +18 -56
- package/src/modules/sales/components/documents/LineItemDialog.tsx +21 -138
- package/src/modules/sales/components/documents/PaymentsSection.tsx +9 -20
- package/src/modules/sales/components/documents/ReturnsSection.tsx +5 -6
- package/src/modules/sales/components/documents/SalesDocumentsTable.tsx +14 -106
- package/src/modules/sales/components/documents/SalesOrderDraftLines.tsx +5 -6
- package/src/modules/sales/components/documents/ShipmentDialog.tsx +4 -5
- package/src/modules/sales/components/documents/ShipmentsSection.tsx +5 -6
- package/src/modules/sales/components/documents/lineItemUtils.ts +2 -7
- package/src/modules/sales/data/entities.ts +0 -6
- package/src/modules/sales/extension-points.ts +0 -1
- package/src/modules/sales/i18n/de.json +37 -8
- package/src/modules/sales/i18n/en.json +37 -8
- package/src/modules/sales/i18n/es.json +37 -8
- package/src/modules/sales/i18n/ko.json +37 -8
- package/src/modules/sales/i18n/pl.json +37 -8
- package/src/modules/sales/migrations/.snapshot-open-mercato.json +0 -60
- package/src/modules/sales/setup.ts +0 -2
- package/src/modules/sales/widgets/injection/document-history/widget.client.tsx +42 -2
- package/src/modules/sales/widgets/injection/payment-gateway-status-column/widget.ts +1 -9
- package/src/modules/sales/widgets/injection-table.ts +7 -4
- package/src/modules/staff/backend/staff/leave-requests/page.tsx +0 -4
- package/src/modules/staff/backend/staff/my-leave-requests/page.tsx +0 -4
- package/src/modules/staff/backend/staff/team-members/page.tsx +0 -6
- package/src/modules/staff/backend/staff/team-roles/page.tsx +0 -4
- package/src/modules/staff/backend/staff/teams/[id]/edit/page.tsx +0 -4
- package/src/modules/staff/backend/staff/teams/page.tsx +0 -4
- package/src/modules/staff/backend/staff/timesheets/page.tsx +1 -12
- package/src/modules/staff/backend/staff/timesheets/projects/page.tsx +0 -4
- package/src/modules/sync_excel/lib/adapters/customers.ts +0 -5
- package/src/modules/warranty_claims/api/assignees/route.ts +3 -3
- package/src/modules/warranty_claims/api/portal/attachments/route.ts +2 -2
- package/src/modules/warranty_claims/api/portal/claims/route.ts +9 -12
- package/src/modules/warranty_claims/backend/page.tsx +0 -4
- package/src/modules/warranty_claims/backend/warranty_claims/registrations/page.tsx +0 -4
- package/src/modules/warranty_claims/backend/warranty_claims/troubleshooting-guides/page.tsx +0 -4
- package/src/modules/warranty_claims/backend/warranty_claims/vendor-policies/page.tsx +0 -4
- package/src/modules/warranty_claims/frontend/[orgSlug]/portal/claims/page.tsx +0 -4
- package/src/modules/wms/api/warehouses/route.ts +9 -13
- package/src/modules/wms/api/zones/route.ts +0 -16
- package/src/modules/wms/commands/configuration.ts +10 -159
- package/src/modules/wms/commands/inventory-actions.ts +0 -3
- package/src/modules/wms/commands/shared.ts +0 -17
- package/src/modules/wms/components/backend/WmsConfigurationPage.tsx +141 -95
- package/src/modules/wms/components/backend/WmsInventoryConsolePage.tsx +0 -2
- package/src/modules/wms/components/backend/WmsLocationDetailPage.tsx +30 -26
- package/src/modules/wms/components/backend/WmsLotDetailPage.tsx +21 -17
- package/src/modules/wms/components/backend/WmsLotsListPage.tsx +0 -2
- package/src/modules/wms/components/backend/WmsOperationalDashboardPage.tsx +17 -13
- package/src/modules/wms/components/backend/WmsSkuDetailPage.tsx +16 -12
- package/src/modules/wms/components/backend/inventoryMutationLoaders.ts +20 -36
- package/src/modules/wms/i18n/de.json +0 -2
- package/src/modules/wms/i18n/en.json +0 -2
- package/src/modules/wms/i18n/es.json +0 -2
- package/src/modules/wms/i18n/ko.json +0 -2
- package/src/modules/wms/i18n/pl.json +0 -2
- package/src/modules/workflows/backend/definitions/page.tsx +1 -4
- package/src/modules/workflows/backend/events/page.tsx +1 -4
- package/src/modules/workflows/backend/instances/page.tsx +1 -4
- package/src/modules/workflows/backend/tasks/page.tsx +1 -4
- package/src/modules/workflows/lib/activity-executor.ts +0 -9
- package/dist/modules/api_keys/di.js +0 -9
- package/dist/modules/api_keys/di.js.map +0 -7
- package/dist/modules/api_keys/services/principalService.js +0 -31
- package/dist/modules/api_keys/services/principalService.js.map +0 -7
- package/dist/modules/attachments/lib/attachment-service.js +0 -313
- package/dist/modules/attachments/lib/attachment-service.js.map +0 -7
- package/dist/modules/auth/api/reset/validate.js +0 -55
- package/dist/modules/auth/api/reset/validate.js.map +0 -7
- package/dist/modules/auth/commands/acl.js +0 -254
- package/dist/modules/auth/commands/acl.js.map +0 -7
- package/dist/modules/auth/lib/userIdFilter.js +0 -16
- package/dist/modules/auth/lib/userIdFilter.js.map +0 -7
- package/dist/modules/auth/services/principalService.js +0 -200
- package/dist/modules/auth/services/principalService.js.map +0 -7
- package/dist/modules/auth/services/roleOrganizationScope.js +0 -41
- package/dist/modules/auth/services/roleOrganizationScope.js.map +0 -7
- package/dist/modules/communication_channels/lib/outbound-recipient.js +0 -33
- package/dist/modules/communication_channels/lib/outbound-recipient.js.map +0 -7
- package/dist/modules/communication_channels/lib/resolve-channel-type.js +0 -51
- package/dist/modules/communication_channels/lib/resolve-channel-type.js.map +0 -7
- package/dist/modules/customers/backend/customers/deals/pipeline/components/toneClasses.js +0 -18
- package/dist/modules/customers/backend/customers/deals/pipeline/components/toneClasses.js.map +0 -7
- package/dist/modules/customers/lib/calendar/participantIdentity.js +0 -9
- package/dist/modules/customers/lib/calendar/participantIdentity.js.map +0 -7
- package/dist/modules/customers/lib/closureStage.js +0 -45
- package/dist/modules/customers/lib/closureStage.js.map +0 -7
- package/dist/modules/customers/lib/detailReadAccess.js +0 -12
- package/dist/modules/customers/lib/detailReadAccess.js.map +0 -7
- package/dist/modules/data_sync/lib/abandoned-run.js +0 -19
- package/dist/modules/data_sync/lib/abandoned-run.js.map +0 -7
- package/dist/modules/devices/api/deviceSerialization.js +0 -46
- package/dist/modules/devices/api/deviceSerialization.js.map +0 -7
- package/dist/modules/devices/backend/devices/useDeviceUserLabels.js +0 -34
- package/dist/modules/devices/backend/devices/useDeviceUserLabels.js.map +0 -7
- package/dist/modules/devices/backend/devices/userOptions.js +0 -52
- package/dist/modules/devices/backend/devices/userOptions.js.map +0 -7
- package/dist/modules/directory/services/organizationHierarchyService.js +0 -29
- package/dist/modules/directory/services/organizationHierarchyService.js.map +0 -7
- package/dist/modules/directory/services/organizationScopeService.js +0 -56
- package/dist/modules/directory/services/organizationScopeService.js.map +0 -7
- package/dist/modules/integrations/backend/integrations/credential-secret-fields.js +0 -55
- package/dist/modules/integrations/backend/integrations/credential-secret-fields.js.map +0 -7
- package/dist/modules/messages/lib/channel-sender-identity.js +0 -26
- package/dist/modules/messages/lib/channel-sender-identity.js.map +0 -7
- package/dist/modules/messages/lib/composeSourceChannelType.js +0 -41
- package/dist/modules/messages/lib/composeSourceChannelType.js.map +0 -7
- package/dist/modules/query_index/lib/search-entity-policy.js +0 -14
- package/dist/modules/query_index/lib/search-entity-policy.js.map +0 -7
- package/dist/modules/sales/components/documents/lineItemShipmentLock.js +0 -54
- package/dist/modules/sales/components/documents/lineItemShipmentLock.js.map +0 -7
- package/dist/modules/sales/lib/salesChannelsToggleSeed.js +0 -33
- package/dist/modules/sales/lib/salesChannelsToggleSeed.js.map +0 -7
- package/dist/modules/sales/migrations/Migration20260821120000_sales_notes_addresses_context_idx.js +0 -32
- package/dist/modules/sales/migrations/Migration20260821120000_sales_notes_addresses_context_idx.js.map +0 -7
- package/dist/modules/wms/api/warehouseSearch.js +0 -21
- package/dist/modules/wms/api/warehouseSearch.js.map +0 -7
- package/dist/modules/wms/components/backend/WarehouseEditDialog.js +0 -158
- package/dist/modules/wms/components/backend/WarehouseEditDialog.js.map +0 -7
- package/dist/modules/wms/components/backend/warehouseFormOptions.js +0 -66
- package/dist/modules/wms/components/backend/warehouseFormOptions.js.map +0 -7
- package/src/modules/api_keys/di.ts +0 -7
- package/src/modules/api_keys/services/principalService.ts +0 -33
- package/src/modules/attachments/lib/attachment-service.ts +0 -468
- package/src/modules/auth/api/reset/validate.ts +0 -57
- package/src/modules/auth/commands/acl.ts +0 -495
- package/src/modules/auth/lib/userIdFilter.ts +0 -31
- package/src/modules/auth/services/principalService.ts +0 -266
- package/src/modules/auth/services/roleOrganizationScope.ts +0 -70
- package/src/modules/communication_channels/lib/outbound-recipient.ts +0 -71
- package/src/modules/communication_channels/lib/resolve-channel-type.ts +0 -99
- package/src/modules/customers/backend/customers/deals/pipeline/components/toneClasses.ts +0 -21
- package/src/modules/customers/lib/calendar/participantIdentity.ts +0 -17
- package/src/modules/customers/lib/closureStage.ts +0 -76
- package/src/modules/customers/lib/detailReadAccess.ts +0 -35
- package/src/modules/data_sync/lib/abandoned-run.ts +0 -56
- package/src/modules/devices/api/deviceSerialization.ts +0 -50
- package/src/modules/devices/backend/devices/useDeviceUserLabels.ts +0 -45
- package/src/modules/devices/backend/devices/userOptions.ts +0 -99
- package/src/modules/directory/services/organizationHierarchyService.ts +0 -34
- package/src/modules/directory/services/organizationScopeService.ts +0 -85
- package/src/modules/integrations/backend/integrations/credential-secret-fields.ts +0 -84
- package/src/modules/messages/lib/channel-sender-identity.ts +0 -55
- package/src/modules/messages/lib/composeSourceChannelType.ts +0 -95
- package/src/modules/query_index/lib/search-entity-policy.ts +0 -46
- package/src/modules/sales/components/documents/lineItemShipmentLock.ts +0 -74
- package/src/modules/sales/lib/salesChannelsToggleSeed.ts +0 -42
- package/src/modules/sales/migrations/Migration20260821120000_sales_notes_addresses_context_idx.ts +0 -87
- package/src/modules/wms/api/warehouseSearch.ts +0 -23
- package/src/modules/wms/components/backend/WarehouseEditDialog.tsx +0 -216
- package/src/modules/wms/components/backend/warehouseFormOptions.ts +0 -72
|
@@ -1,55 +0,0 @@
|
|
|
1
|
-
import { SECRET_CREDENTIAL_FIELD_TYPES } from "../../lib/credentials-masking.js";
|
|
2
|
-
function buildCredentialEditValues(credentials, secretFieldsConfigured) {
|
|
3
|
-
const editValues = { ...credentials };
|
|
4
|
-
for (const [fieldKey, configured] of Object.entries(secretFieldsConfigured)) {
|
|
5
|
-
if (configured) delete editValues[fieldKey];
|
|
6
|
-
}
|
|
7
|
-
return editValues;
|
|
8
|
-
}
|
|
9
|
-
function buildCredentialSavePayload(values, fields, secretFieldsConfigured, deliberatelyClearedSecretFields = /* @__PURE__ */ new Set()) {
|
|
10
|
-
const credentials = { ...values };
|
|
11
|
-
const unchangedSecretFields = /* @__PURE__ */ new Set();
|
|
12
|
-
for (const field of fields) {
|
|
13
|
-
if (!SECRET_CREDENTIAL_FIELD_TYPES.has(field.type)) continue;
|
|
14
|
-
if (deliberatelyClearedSecretFields.has(field.key)) {
|
|
15
|
-
delete credentials[field.key];
|
|
16
|
-
continue;
|
|
17
|
-
}
|
|
18
|
-
if (!secretFieldsConfigured[field.key]) continue;
|
|
19
|
-
const value = credentials[field.key];
|
|
20
|
-
if (value !== void 0 && value !== "") continue;
|
|
21
|
-
delete credentials[field.key];
|
|
22
|
-
unchangedSecretFields.add(field.key);
|
|
23
|
-
}
|
|
24
|
-
return unchangedSecretFields.size > 0 ? { credentials, unchangedSecretFields: [...unchangedSecretFields] } : { credentials };
|
|
25
|
-
}
|
|
26
|
-
function buildIntegrationCredentialSavePayload(integrationId, values, fields, secretFieldsConfigured) {
|
|
27
|
-
const normalizedValues = { ...values };
|
|
28
|
-
const deliberatelyClearedSecretFields = /* @__PURE__ */ new Set();
|
|
29
|
-
if (integrationId === "storage_s3") {
|
|
30
|
-
const authMode = normalizedValues.authMode;
|
|
31
|
-
if (authMode !== "access_keys" && authMode !== "ambient") {
|
|
32
|
-
const hasKeys = Boolean(normalizedValues.accessKeyId || normalizedValues.secretAccessKey);
|
|
33
|
-
normalizedValues.authMode = hasKeys ? "access_keys" : "ambient";
|
|
34
|
-
}
|
|
35
|
-
if (normalizedValues.authMode === "ambient") {
|
|
36
|
-
delete normalizedValues.accessKeyId;
|
|
37
|
-
delete normalizedValues.secretAccessKey;
|
|
38
|
-
delete normalizedValues.sessionToken;
|
|
39
|
-
deliberatelyClearedSecretFields.add("secretAccessKey");
|
|
40
|
-
deliberatelyClearedSecretFields.add("sessionToken");
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
return buildCredentialSavePayload(
|
|
44
|
-
normalizedValues,
|
|
45
|
-
fields,
|
|
46
|
-
secretFieldsConfigured,
|
|
47
|
-
deliberatelyClearedSecretFields
|
|
48
|
-
);
|
|
49
|
-
}
|
|
50
|
-
export {
|
|
51
|
-
buildCredentialEditValues,
|
|
52
|
-
buildCredentialSavePayload,
|
|
53
|
-
buildIntegrationCredentialSavePayload
|
|
54
|
-
};
|
|
55
|
-
//# sourceMappingURL=credential-secret-fields.js.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../../../src/modules/integrations/backend/integrations/credential-secret-fields.ts"],
|
|
4
|
-
"sourcesContent": ["import type { IntegrationCredentialField } from '@open-mercato/shared/modules/integrations/types'\nimport { SECRET_CREDENTIAL_FIELD_TYPES } from '../../lib/credentials-masking'\n\nexport type SecretFieldsConfigured = Record<string, boolean>\n\nexport type CredentialSavePayload = {\n credentials: Record<string, unknown>\n unchangedSecretFields?: string[]\n}\n\nexport function buildCredentialEditValues(\n credentials: Record<string, unknown>,\n secretFieldsConfigured: SecretFieldsConfigured,\n): Record<string, unknown> {\n const editValues = { ...credentials }\n\n for (const [fieldKey, configured] of Object.entries(secretFieldsConfigured)) {\n if (configured) delete editValues[fieldKey]\n }\n\n return editValues\n}\n\nexport function buildCredentialSavePayload(\n values: Record<string, unknown>,\n fields: readonly IntegrationCredentialField[],\n secretFieldsConfigured: SecretFieldsConfigured,\n deliberatelyClearedSecretFields: ReadonlySet<string> = new Set(),\n): CredentialSavePayload {\n const credentials = { ...values }\n const unchangedSecretFields = new Set<string>()\n\n for (const field of fields) {\n if (!SECRET_CREDENTIAL_FIELD_TYPES.has(field.type)) continue\n\n if (deliberatelyClearedSecretFields.has(field.key)) {\n delete credentials[field.key]\n continue\n }\n\n if (!secretFieldsConfigured[field.key]) continue\n const value = credentials[field.key]\n if (value !== undefined && value !== '') continue\n\n delete credentials[field.key]\n unchangedSecretFields.add(field.key)\n }\n\n return unchangedSecretFields.size > 0\n ? { credentials, unchangedSecretFields: [...unchangedSecretFields] }\n : { credentials }\n}\n\nexport function buildIntegrationCredentialSavePayload(\n integrationId: string,\n values: Record<string, unknown>,\n fields: readonly IntegrationCredentialField[],\n secretFieldsConfigured: SecretFieldsConfigured,\n): CredentialSavePayload {\n const normalizedValues = { ...values }\n const deliberatelyClearedSecretFields = new Set<string>()\n\n if (integrationId === 'storage_s3') {\n const authMode = normalizedValues.authMode\n if (authMode !== 'access_keys' && authMode !== 'ambient') {\n const hasKeys = Boolean(normalizedValues.accessKeyId || normalizedValues.secretAccessKey)\n normalizedValues.authMode = hasKeys ? 'access_keys' : 'ambient'\n }\n if (normalizedValues.authMode === 'ambient') {\n delete normalizedValues.accessKeyId\n delete normalizedValues.secretAccessKey\n delete normalizedValues.sessionToken\n deliberatelyClearedSecretFields.add('secretAccessKey')\n deliberatelyClearedSecretFields.add('sessionToken')\n }\n }\n\n return buildCredentialSavePayload(\n normalizedValues,\n fields,\n secretFieldsConfigured,\n deliberatelyClearedSecretFields,\n )\n}\n"],
|
|
5
|
-
"mappings": "AACA,SAAS,qCAAqC;AASvC,SAAS,0BACd,aACA,wBACyB;AACzB,QAAM,aAAa,EAAE,GAAG,YAAY;AAEpC,aAAW,CAAC,UAAU,UAAU,KAAK,OAAO,QAAQ,sBAAsB,GAAG;AAC3E,QAAI,WAAY,QAAO,WAAW,QAAQ;AAAA,EAC5C;AAEA,SAAO;AACT;AAEO,SAAS,2BACd,QACA,QACA,wBACA,kCAAuD,oBAAI,IAAI,GACxC;AACvB,QAAM,cAAc,EAAE,GAAG,OAAO;AAChC,QAAM,wBAAwB,oBAAI,IAAY;AAE9C,aAAW,SAAS,QAAQ;AAC1B,QAAI,CAAC,8BAA8B,IAAI,MAAM,IAAI,EAAG;AAEpD,QAAI,gCAAgC,IAAI,MAAM,GAAG,GAAG;AAClD,aAAO,YAAY,MAAM,GAAG;AAC5B;AAAA,IACF;AAEA,QAAI,CAAC,uBAAuB,MAAM,GAAG,EAAG;AACxC,UAAM,QAAQ,YAAY,MAAM,GAAG;AACnC,QAAI,UAAU,UAAa,UAAU,GAAI;AAEzC,WAAO,YAAY,MAAM,GAAG;AAC5B,0BAAsB,IAAI,MAAM,GAAG;AAAA,EACrC;AAEA,SAAO,sBAAsB,OAAO,IAChC,EAAE,aAAa,uBAAuB,CAAC,GAAG,qBAAqB,EAAE,IACjE,EAAE,YAAY;AACpB;AAEO,SAAS,sCACd,eACA,QACA,QACA,wBACuB;AACvB,QAAM,mBAAmB,EAAE,GAAG,OAAO;AACrC,QAAM,kCAAkC,oBAAI,IAAY;AAExD,MAAI,kBAAkB,cAAc;AAClC,UAAM,WAAW,iBAAiB;AAClC,QAAI,aAAa,iBAAiB,aAAa,WAAW;AACxD,YAAM,UAAU,QAAQ,iBAAiB,eAAe,iBAAiB,eAAe;AACxF,uBAAiB,WAAW,UAAU,gBAAgB;AAAA,IACxD;AACA,QAAI,iBAAiB,aAAa,WAAW;AAC3C,aAAO,iBAAiB;AACxB,aAAO,iBAAiB;AACxB,aAAO,iBAAiB;AACxB,sCAAgC,IAAI,iBAAiB;AACrD,sCAAgC,IAAI,cAAc;AAAA,IACpD;AAAA,EACF;AAEA,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;",
|
|
6
|
-
"names": []
|
|
7
|
-
}
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
const NON_EMAIL_SENDER_CHANNEL_TYPES = /* @__PURE__ */ new Set([
|
|
2
|
-
"discord",
|
|
3
|
-
"slack",
|
|
4
|
-
"teams",
|
|
5
|
-
"telegram",
|
|
6
|
-
"signal",
|
|
7
|
-
"whatsapp",
|
|
8
|
-
"messenger",
|
|
9
|
-
"instagram",
|
|
10
|
-
"sms",
|
|
11
|
-
"push"
|
|
12
|
-
]);
|
|
13
|
-
function channelTypeRequiresExternalEmail(channelType) {
|
|
14
|
-
if (typeof channelType !== "string") return true;
|
|
15
|
-
const normalized = channelType.trim().toLowerCase();
|
|
16
|
-
if (!normalized) return true;
|
|
17
|
-
return !NON_EMAIL_SENDER_CHANNEL_TYPES.has(normalized);
|
|
18
|
-
}
|
|
19
|
-
function listNonEmailSenderChannelTypes() {
|
|
20
|
-
return Array.from(NON_EMAIL_SENDER_CHANNEL_TYPES).sort((left, right) => left.localeCompare(right));
|
|
21
|
-
}
|
|
22
|
-
export {
|
|
23
|
-
channelTypeRequiresExternalEmail,
|
|
24
|
-
listNonEmailSenderChannelTypes
|
|
25
|
-
};
|
|
26
|
-
//# sourceMappingURL=channel-sender-identity.js.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../../src/modules/messages/lib/channel-sender-identity.ts"],
|
|
4
|
-
"sourcesContent": ["/**\n * How the hub decides whether an external correspondent must be identified by an\n * email address.\n *\n * Background (#4975): `composeMessageSchema` used to require `externalEmail` for\n * every non-draft message with `visibility: 'public'` \u2014 which is every message\n * from an external sender. That assumption holds only for email-typed channels.\n * A Discord sender is a snowflake and has no address at all, so inbound Discord\n * failed validation deterministically and the ingest job died in the queue while\n * the channel still reported `Connected`.\n *\n * Variant A of the spec's \u00A7 Open decision \u2014 hub sender-identity contract makes\n * the requirement conditional on the originating channel type, and **fails\n * closed**: only a channel type this list positively recognizes as non-email\n * waives the requirement. An unrecognized, empty or absent channel type keeps\n * the pre-existing behaviour, so no current caller changes and a typo'd or\n * caller-asserted type cannot quietly switch a validation rule off.\n *\n * For these channels the sender identity is not lost \u2014 it is carried by\n * `ExternalMessage.sender_identifier` and joined 1:1 to the platform message\n * through `MessageChannelLink`.\n *\n * Adding a channel type here is additive and non-breaking: it only widens the\n * set of inputs the hub accepts.\n */\nconst NON_EMAIL_SENDER_CHANNEL_TYPES = new Set([\n 'discord',\n 'slack',\n 'teams',\n 'telegram',\n 'signal',\n 'whatsapp',\n 'messenger',\n 'instagram',\n 'sms',\n 'push',\n])\n\n/**\n * True when a message originating from `channelType` must carry an\n * `externalEmail` to be composed with `visibility: 'public'`.\n *\n * Fail-closed by design \u2014 see the note above.\n */\nexport function channelTypeRequiresExternalEmail(channelType?: string | null): boolean {\n if (typeof channelType !== 'string') return true\n const normalized = channelType.trim().toLowerCase()\n if (!normalized) return true\n return !NON_EMAIL_SENDER_CHANNEL_TYPES.has(normalized)\n}\n\n/** The recognized non-email channel types, for tests and diagnostics. */\nexport function listNonEmailSenderChannelTypes(): string[] {\n return Array.from(NON_EMAIL_SENDER_CHANNEL_TYPES).sort((left, right) => left.localeCompare(right))\n}\n"],
|
|
5
|
-
"mappings": "AAyBA,MAAM,iCAAiC,oBAAI,IAAI;AAAA,EAC7C;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,CAAC;AAQM,SAAS,iCAAiC,aAAsC;AACrF,MAAI,OAAO,gBAAgB,SAAU,QAAO;AAC5C,QAAM,aAAa,YAAY,KAAK,EAAE,YAAY;AAClD,MAAI,CAAC,WAAY,QAAO;AACxB,SAAO,CAAC,+BAA+B,IAAI,UAAU;AACvD;AAGO,SAAS,iCAA2C;AACzD,SAAO,MAAM,KAAK,8BAA8B,EAAE,KAAK,CAAC,MAAM,UAAU,KAAK,cAAc,KAAK,CAAC;AACnG;",
|
|
6
|
-
"names": []
|
|
7
|
-
}
|
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
import { z } from "zod";
|
|
2
|
-
const EXTERNAL_CONVERSATION_SOURCE_ENTITY_TYPE = "communication_channels.external_conversation";
|
|
3
|
-
const composeSourceHintSchema = z.object({
|
|
4
|
-
sourceEntityType: z.string().optional(),
|
|
5
|
-
sourceEntityId: z.string().uuid().optional(),
|
|
6
|
-
parentMessageId: z.string().uuid().optional()
|
|
7
|
-
});
|
|
8
|
-
function composeRequiresChannelTypeResolution(body) {
|
|
9
|
-
if (!body || typeof body !== "object") return false;
|
|
10
|
-
const raw = body;
|
|
11
|
-
if (raw.visibility !== "public") return false;
|
|
12
|
-
if (raw.isDraft === true) return false;
|
|
13
|
-
const externalEmail = raw.externalEmail;
|
|
14
|
-
return !(typeof externalEmail === "string" && externalEmail.trim().length > 0);
|
|
15
|
-
}
|
|
16
|
-
function tryResolveChannelTypeService(container) {
|
|
17
|
-
try {
|
|
18
|
-
return container.resolve("communicationChannelsResolveChannelType");
|
|
19
|
-
} catch {
|
|
20
|
-
return void 0;
|
|
21
|
-
}
|
|
22
|
-
}
|
|
23
|
-
async function resolveComposeSourceChannelType(container, scope, hint) {
|
|
24
|
-
const externalConversationId = hint.sourceEntityType === EXTERNAL_CONVERSATION_SOURCE_ENTITY_TYPE ? hint.sourceEntityId ?? null : null;
|
|
25
|
-
const messageId = hint.parentMessageId ?? null;
|
|
26
|
-
if (!externalConversationId && !messageId) return void 0;
|
|
27
|
-
const resolveChannelType = tryResolveChannelTypeService(container);
|
|
28
|
-
if (!resolveChannelType) return void 0;
|
|
29
|
-
const channelType = await resolveChannelType(container, scope, {
|
|
30
|
-
externalConversationId,
|
|
31
|
-
messageId
|
|
32
|
-
});
|
|
33
|
-
return channelType ?? void 0;
|
|
34
|
-
}
|
|
35
|
-
export {
|
|
36
|
-
EXTERNAL_CONVERSATION_SOURCE_ENTITY_TYPE,
|
|
37
|
-
composeRequiresChannelTypeResolution,
|
|
38
|
-
composeSourceHintSchema,
|
|
39
|
-
resolveComposeSourceChannelType
|
|
40
|
-
};
|
|
41
|
-
//# sourceMappingURL=composeSourceChannelType.js.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../../src/modules/messages/lib/composeSourceChannelType.ts"],
|
|
4
|
-
"sourcesContent": ["import { z } from 'zod'\n\n/**\n * Entity type a channel-backed conversation is exposed under on a message's\n * `sourceEntityType`. Written by `communication_channels`' inbound ingest.\n */\nconst EXTERNAL_CONVERSATION_SOURCE_ENTITY_TYPE = 'communication_channels.external_conversation'\n\n/**\n * The only parts of a compose body this resolution needs. Read defensively from\n * the raw request body, before the body is validated, because the validation\n * outcome itself depends on the answer (#4975).\n */\nexport const composeSourceHintSchema = z.object({\n sourceEntityType: z.string().optional(),\n sourceEntityId: z.string().uuid().optional(),\n parentMessageId: z.string().uuid().optional(),\n})\n\nexport type ComposeSourceHint = z.infer<typeof composeSourceHintSchema>\n\n/**\n * Whether the compose validator can consult a resolved channel type at all.\n *\n * `sourceChannelType` is read in exactly one branch \u2014 a non-draft, public\n * message that carries no address. Every internal reply, every draft and every\n * public message that already supplies an address ignores it, so resolving it\n * for them is a DI resolve plus a database round-trip whose answer is\n * discarded. Mirrors `refineComposeMessage` and reads the raw body defensively,\n * because this runs before validation. Skipping resolution yields `undefined`,\n * which is already the fail-closed value.\n */\nexport function composeRequiresChannelTypeResolution(body: unknown): boolean {\n if (!body || typeof body !== 'object') return false\n const raw = body as Record<string, unknown>\n if (raw.visibility !== 'public') return false\n if (raw.isDraft === true) return false\n const externalEmail = raw.externalEmail\n return !(typeof externalEmail === 'string' && externalEmail.trim().length > 0)\n}\n\ntype ResolveChannelTypeService = (\n container: ContainerLike,\n scope: { tenantId: string; organizationId: string | null },\n reference: { externalConversationId?: string | null; messageId?: string | null },\n) => Promise<string | null>\n\ntype ContainerLike = { resolve: <T = unknown>(name: string) => T }\n\nfunction tryResolveChannelTypeService(\n container: ContainerLike,\n): ResolveChannelTypeService | undefined {\n try {\n return container.resolve<ResolveChannelTypeService>('communicationChannelsResolveChannelType')\n } catch {\n // `communication_channels` is optional: without it no message can originate\n // from a channel, so \"unknown\" is both correct and fail-closed.\n return undefined\n }\n}\n\n/**\n * Resolve the channel type a compose request originates from, server-side.\n *\n * Never derived from the request body's own `sourceChannelType` \u2014 that would let\n * any caller waive the `externalEmail` requirement by asserting a channel type.\n * It is looked up from the conversation the message is being composed on, or\n * from the parent message it replies to.\n *\n * Returns `undefined` when nothing can be established, which the compose\n * validator treats as \"unknown\" and therefore keeps the pre-#4975 rule.\n */\nexport async function resolveComposeSourceChannelType(\n container: ContainerLike,\n scope: { tenantId: string; organizationId: string | null },\n hint: ComposeSourceHint,\n): Promise<string | undefined> {\n const externalConversationId =\n hint.sourceEntityType === EXTERNAL_CONVERSATION_SOURCE_ENTITY_TYPE\n ? hint.sourceEntityId ?? null\n : null\n const messageId = hint.parentMessageId ?? null\n if (!externalConversationId && !messageId) return undefined\n\n const resolveChannelType = tryResolveChannelTypeService(container)\n if (!resolveChannelType) return undefined\n\n const channelType = await resolveChannelType(container, scope, {\n externalConversationId,\n messageId,\n })\n return channelType ?? undefined\n}\n\nexport { EXTERNAL_CONVERSATION_SOURCE_ENTITY_TYPE }\n"],
|
|
5
|
-
"mappings": "AAAA,SAAS,SAAS;AAMlB,MAAM,2CAA2C;AAO1C,MAAM,0BAA0B,EAAE,OAAO;AAAA,EAC9C,kBAAkB,EAAE,OAAO,EAAE,SAAS;AAAA,EACtC,gBAAgB,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS;AAAA,EAC3C,iBAAiB,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS;AAC9C,CAAC;AAeM,SAAS,qCAAqC,MAAwB;AAC3E,MAAI,CAAC,QAAQ,OAAO,SAAS,SAAU,QAAO;AAC9C,QAAM,MAAM;AACZ,MAAI,IAAI,eAAe,SAAU,QAAO;AACxC,MAAI,IAAI,YAAY,KAAM,QAAO;AACjC,QAAM,gBAAgB,IAAI;AAC1B,SAAO,EAAE,OAAO,kBAAkB,YAAY,cAAc,KAAK,EAAE,SAAS;AAC9E;AAUA,SAAS,6BACP,WACuC;AACvC,MAAI;AACF,WAAO,UAAU,QAAmC,yCAAyC;AAAA,EAC/F,QAAQ;AAGN,WAAO;AAAA,EACT;AACF;AAaA,eAAsB,gCACpB,WACA,OACA,MAC6B;AAC7B,QAAM,yBACJ,KAAK,qBAAqB,2CACtB,KAAK,kBAAkB,OACvB;AACN,QAAM,YAAY,KAAK,mBAAmB;AAC1C,MAAI,CAAC,0BAA0B,CAAC,UAAW,QAAO;AAElD,QAAM,qBAAqB,6BAA6B,SAAS;AACjE,MAAI,CAAC,mBAAoB,QAAO;AAEhC,QAAM,cAAc,MAAM,mBAAmB,WAAW,OAAO;AAAA,IAC7D;AAAA,IACA;AAAA,EACF,CAAC;AACD,SAAO,eAAe;AACxB;",
|
|
6
|
-
"names": []
|
|
7
|
-
}
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import { parseBooleanWithDefault } from "@open-mercato/shared/lib/boolean";
|
|
2
|
-
const CUSTOMERS_BASE_ENTITY_TYPE = "customers:customer_entity";
|
|
3
|
-
function indexesCustomerBaseEntity() {
|
|
4
|
-
return parseBooleanWithDefault(process.env.OM_SEARCH_CUSTOMERS_INDEX_BASE_ENTITY, false);
|
|
5
|
-
}
|
|
6
|
-
function listSearchTokenExcludedEntityTypes() {
|
|
7
|
-
return indexesCustomerBaseEntity() ? [] : [CUSTOMERS_BASE_ENTITY_TYPE];
|
|
8
|
-
}
|
|
9
|
-
export {
|
|
10
|
-
CUSTOMERS_BASE_ENTITY_TYPE,
|
|
11
|
-
indexesCustomerBaseEntity,
|
|
12
|
-
listSearchTokenExcludedEntityTypes
|
|
13
|
-
};
|
|
14
|
-
//# sourceMappingURL=search-entity-policy.js.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../../src/modules/query_index/lib/search-entity-policy.ts"],
|
|
4
|
-
"sourcesContent": ["import { parseBooleanWithDefault } from '@open-mercato/shared/lib/boolean'\n\n/**\n * The canonical customer record. Every customer also has a person or company profile indexed under\n * its own entity type, and it is the profile \u2014 not the base row \u2014 that carries the detail-page\n * navigation.\n */\nexport const CUSTOMERS_BASE_ENTITY_TYPE = 'customers:customer_entity'\n\n/**\n * Whether base customer rows are offered as search results.\n *\n * Why the knob exists: `search_tokens` is written by the query index for **every** entity a CRUD\n * route indexes, independently of any module's `search.ts` config. `customers:customer_entity` is\n * indexed but no module registers it for search, so its rows only ever surface a second,\n * navigation-less copy of a customer who is already represented by their person or company\n * profile \u2014 the duplicate reported in #5046. Worse, the duplicate was visible to superadmins only:\n * `resolveReadableEntityTypes` narrows every other caller to entity types a module registered for\n * search, so the same query returned different shapes for different users.\n *\n * Default `false`: the token strategy never returns base customer rows, so a customer appears\n * exactly once, as their profile. `OM_SEARCH_CUSTOMERS_INDEX_BASE_ENTITY=true` restores the\n * previous behavior, where both rows are returned and the presenter enricher's linked-result merge\n * collapses the pair into the canonical entity result.\n *\n * Deliberately a **read-side** filter. `search_tokens` is not only the token-search index: the\n * People and Companies list routes resolve their search box through\n * `findEntityIdsBySearchTokens` on this exact entity type, and both query engines rewrite\n * `like`/`ilike` on encrypted customer columns into the same table. Dropping the rows would\n * silently break list search on `display_name`, `primary_email`, `description` and friends, so the\n * rows stay and only the search strategy stops offering them.\n */\nexport function indexesCustomerBaseEntity(): boolean {\n return parseBooleanWithDefault(process.env.OM_SEARCH_CUSTOMERS_INDEX_BASE_ENTITY, false)\n}\n\n/**\n * Entity types the token search strategy must not return.\n *\n * Exposed as a list so the strategy can express the exclusion as a single `NOT IN` predicate\n * instead of post-filtering rows it already paid to fetch \u2014 a post-filter would silently shrink\n * the caller's `limit`.\n */\nexport function listSearchTokenExcludedEntityTypes(): string[] {\n return indexesCustomerBaseEntity() ? [] : [CUSTOMERS_BASE_ENTITY_TYPE]\n}\n"],
|
|
5
|
-
"mappings": "AAAA,SAAS,+BAA+B;AAOjC,MAAM,6BAA6B;AAyBnC,SAAS,4BAAqC;AACnD,SAAO,wBAAwB,QAAQ,IAAI,uCAAuC,KAAK;AACzF;AASO,SAAS,qCAA+C;AAC7D,SAAO,0BAA0B,IAAI,CAAC,IAAI,CAAC,0BAA0B;AACvE;",
|
|
6
|
-
"names": []
|
|
7
|
-
}
|
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
const SHIPPED_LINE_IMMUTABLE_PAYLOAD_FIELDS = [
|
|
2
|
-
"kind",
|
|
3
|
-
"productId",
|
|
4
|
-
"productVariantId",
|
|
5
|
-
"quantityUnit",
|
|
6
|
-
"unitPriceNet",
|
|
7
|
-
"unitPriceGross",
|
|
8
|
-
"priceId",
|
|
9
|
-
"priceMode",
|
|
10
|
-
"taxRateId",
|
|
11
|
-
"taxRate",
|
|
12
|
-
"taxAmount",
|
|
13
|
-
"discountAmount",
|
|
14
|
-
"discountPercent",
|
|
15
|
-
"catalogSnapshot",
|
|
16
|
-
"metadata"
|
|
17
|
-
];
|
|
18
|
-
function scaleTotal(total, previousQuantity, nextQuantity) {
|
|
19
|
-
if (!Number.isFinite(total) || !Number.isFinite(previousQuantity) || previousQuantity <= 0) {
|
|
20
|
-
return void 0;
|
|
21
|
-
}
|
|
22
|
-
return total * (nextQuantity / previousQuantity);
|
|
23
|
-
}
|
|
24
|
-
function prepareShippedLineUpdatePayload(payload, currentLine) {
|
|
25
|
-
if (!currentLine) return payload;
|
|
26
|
-
const nextPayload = { ...payload };
|
|
27
|
-
for (const field of SHIPPED_LINE_IMMUTABLE_PAYLOAD_FIELDS) {
|
|
28
|
-
delete nextPayload[field];
|
|
29
|
-
}
|
|
30
|
-
delete nextPayload.totalNetAmount;
|
|
31
|
-
delete nextPayload.totalGrossAmount;
|
|
32
|
-
const nextQuantity = Number(nextPayload.quantity);
|
|
33
|
-
if (!Number.isFinite(nextQuantity) || nextQuantity === currentLine.quantity) {
|
|
34
|
-
return nextPayload;
|
|
35
|
-
}
|
|
36
|
-
const scaledNetTotal = scaleTotal(
|
|
37
|
-
currentLine.totalNetAmount,
|
|
38
|
-
currentLine.quantity,
|
|
39
|
-
nextQuantity
|
|
40
|
-
);
|
|
41
|
-
const scaledGrossTotal = scaleTotal(
|
|
42
|
-
currentLine.totalGrossAmount,
|
|
43
|
-
currentLine.quantity,
|
|
44
|
-
nextQuantity
|
|
45
|
-
);
|
|
46
|
-
if (scaledNetTotal !== void 0) nextPayload.totalNetAmount = scaledNetTotal;
|
|
47
|
-
if (scaledGrossTotal !== void 0)
|
|
48
|
-
nextPayload.totalGrossAmount = scaledGrossTotal;
|
|
49
|
-
return nextPayload;
|
|
50
|
-
}
|
|
51
|
-
export {
|
|
52
|
-
prepareShippedLineUpdatePayload
|
|
53
|
-
};
|
|
54
|
-
//# sourceMappingURL=lineItemShipmentLock.js.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../../../src/modules/sales/components/documents/lineItemShipmentLock.ts"],
|
|
4
|
-
"sourcesContent": ["type ShippedLineSnapshot = {\n quantity: number;\n totalNetAmount?: number | null;\n totalGrossAmount?: number | null;\n};\n\nconst SHIPPED_LINE_IMMUTABLE_PAYLOAD_FIELDS = [\n \"kind\",\n \"productId\",\n \"productVariantId\",\n \"quantityUnit\",\n \"unitPriceNet\",\n \"unitPriceGross\",\n \"priceId\",\n \"priceMode\",\n \"taxRateId\",\n \"taxRate\",\n \"taxAmount\",\n \"discountAmount\",\n \"discountPercent\",\n \"catalogSnapshot\",\n \"metadata\",\n] as const;\n\nfunction scaleTotal(\n total: number | null | undefined,\n previousQuantity: number,\n nextQuantity: number,\n): number | undefined {\n if (\n !Number.isFinite(total) ||\n !Number.isFinite(previousQuantity) ||\n previousQuantity <= 0\n ) {\n return undefined;\n }\n return (total as number) * (nextQuantity / previousQuantity);\n}\n\nexport function prepareShippedLineUpdatePayload(\n payload: Record<string, unknown>,\n currentLine: ShippedLineSnapshot | null,\n): Record<string, unknown> {\n if (!currentLine) return payload;\n\n const nextPayload = { ...payload };\n for (const field of SHIPPED_LINE_IMMUTABLE_PAYLOAD_FIELDS) {\n delete nextPayload[field];\n }\n\n delete nextPayload.totalNetAmount;\n delete nextPayload.totalGrossAmount;\n\n const nextQuantity = Number(nextPayload.quantity);\n if (!Number.isFinite(nextQuantity) || nextQuantity === currentLine.quantity) {\n return nextPayload;\n }\n\n const scaledNetTotal = scaleTotal(\n currentLine.totalNetAmount,\n currentLine.quantity,\n nextQuantity,\n );\n const scaledGrossTotal = scaleTotal(\n currentLine.totalGrossAmount,\n currentLine.quantity,\n nextQuantity,\n );\n if (scaledNetTotal !== undefined) nextPayload.totalNetAmount = scaledNetTotal;\n if (scaledGrossTotal !== undefined)\n nextPayload.totalGrossAmount = scaledGrossTotal;\n\n return nextPayload;\n}\n"],
|
|
5
|
-
"mappings": "AAMA,MAAM,wCAAwC;AAAA,EAC5C;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAEA,SAAS,WACP,OACA,kBACA,cACoB;AACpB,MACE,CAAC,OAAO,SAAS,KAAK,KACtB,CAAC,OAAO,SAAS,gBAAgB,KACjC,oBAAoB,GACpB;AACA,WAAO;AAAA,EACT;AACA,SAAQ,SAAoB,eAAe;AAC7C;AAEO,SAAS,gCACd,SACA,aACyB;AACzB,MAAI,CAAC,YAAa,QAAO;AAEzB,QAAM,cAAc,EAAE,GAAG,QAAQ;AACjC,aAAW,SAAS,uCAAuC;AACzD,WAAO,YAAY,KAAK;AAAA,EAC1B;AAEA,SAAO,YAAY;AACnB,SAAO,YAAY;AAEnB,QAAM,eAAe,OAAO,YAAY,QAAQ;AAChD,MAAI,CAAC,OAAO,SAAS,YAAY,KAAK,iBAAiB,YAAY,UAAU;AAC3E,WAAO;AAAA,EACT;AAEA,QAAM,iBAAiB;AAAA,IACrB,YAAY;AAAA,IACZ,YAAY;AAAA,IACZ;AAAA,EACF;AACA,QAAM,mBAAmB;AAAA,IACvB,YAAY;AAAA,IACZ,YAAY;AAAA,IACZ;AAAA,EACF;AACA,MAAI,mBAAmB,OAAW,aAAY,iBAAiB;AAC/D,MAAI,qBAAqB;AACvB,gBAAY,mBAAmB;AAEjC,SAAO;AACT;",
|
|
6
|
-
"names": []
|
|
7
|
-
}
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
import { FeatureToggle } from "@open-mercato/core/modules/feature_toggles/data/entities";
|
|
2
|
-
import { findOneWithDecryption } from "@open-mercato/shared/lib/encryption/find";
|
|
3
|
-
import { SALES_CHANNELS_TOGGLE_ID } from "./salesChannelsToggleId.js";
|
|
4
|
-
const SALES_CHANNELS_TOGGLE_DEFINITION = {
|
|
5
|
-
identifier: SALES_CHANNELS_TOGGLE_ID,
|
|
6
|
-
name: "Sales Channels",
|
|
7
|
-
description: "Show sales channel pickers, filters, and management UI. Disable for tenants that do not use sales channels.",
|
|
8
|
-
category: "sales",
|
|
9
|
-
type: "boolean",
|
|
10
|
-
defaultValue: true
|
|
11
|
-
};
|
|
12
|
-
async function seedSalesChannelsToggle(em) {
|
|
13
|
-
const existing = await findOneWithDecryption(em, FeatureToggle, {
|
|
14
|
-
identifier: SALES_CHANNELS_TOGGLE_DEFINITION.identifier
|
|
15
|
-
});
|
|
16
|
-
if (existing) return;
|
|
17
|
-
em.persist(
|
|
18
|
-
em.create(FeatureToggle, {
|
|
19
|
-
identifier: SALES_CHANNELS_TOGGLE_DEFINITION.identifier,
|
|
20
|
-
name: SALES_CHANNELS_TOGGLE_DEFINITION.name,
|
|
21
|
-
description: SALES_CHANNELS_TOGGLE_DEFINITION.description,
|
|
22
|
-
category: SALES_CHANNELS_TOGGLE_DEFINITION.category,
|
|
23
|
-
type: SALES_CHANNELS_TOGGLE_DEFINITION.type,
|
|
24
|
-
defaultValue: SALES_CHANNELS_TOGGLE_DEFINITION.defaultValue
|
|
25
|
-
})
|
|
26
|
-
);
|
|
27
|
-
await em.flush();
|
|
28
|
-
}
|
|
29
|
-
export {
|
|
30
|
-
SALES_CHANNELS_TOGGLE_DEFINITION,
|
|
31
|
-
seedSalesChannelsToggle
|
|
32
|
-
};
|
|
33
|
-
//# sourceMappingURL=salesChannelsToggleSeed.js.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../../src/modules/sales/lib/salesChannelsToggleSeed.ts"],
|
|
4
|
-
"sourcesContent": ["import type { EntityManager } from '@mikro-orm/postgresql'\nimport { FeatureToggle } from '@open-mercato/core/modules/feature_toggles/data/entities'\nimport { findOneWithDecryption } from '@open-mercato/shared/lib/encryption/find'\nimport { SALES_CHANNELS_TOGGLE_ID } from './salesChannelsToggleId'\n\nexport const SALES_CHANNELS_TOGGLE_DEFINITION = {\n identifier: SALES_CHANNELS_TOGGLE_ID,\n name: 'Sales Channels',\n description: 'Show sales channel pickers, filters, and management UI. Disable for tenants that do not use sales channels.',\n category: 'sales',\n type: 'boolean' as const,\n defaultValue: true,\n} as const\n\n// The sales module owns this toggle definition, so tenant setup registers it the\n// same way portal, customers and wms register theirs. Shipping it only in the\n// core defaults file left it unregistered on every database initialized before\n// the toggle existed, and `useSalesChannelsEnabled` then 404s on every mount.\n//\n// The lookup deliberately does not filter on `deletedAt`. Deletion is soft\n// (`feature_toggles.global.delete`) while `feature_toggles_identifier_unique`\n// covers every row, so filtering would make this insert a duplicate and fail the\n// whole seed run on any installation where the toggle was deleted. Matching the\n// create command's own uniqueness check also leaves an operator's deletion alone\n// instead of resurrecting the definition on every tenant seed.\nexport async function seedSalesChannelsToggle(em: EntityManager): Promise<void> {\n const existing = await findOneWithDecryption(em, FeatureToggle, {\n identifier: SALES_CHANNELS_TOGGLE_DEFINITION.identifier,\n })\n if (existing) return\n em.persist(\n em.create(FeatureToggle, {\n identifier: SALES_CHANNELS_TOGGLE_DEFINITION.identifier,\n name: SALES_CHANNELS_TOGGLE_DEFINITION.name,\n description: SALES_CHANNELS_TOGGLE_DEFINITION.description,\n category: SALES_CHANNELS_TOGGLE_DEFINITION.category,\n type: SALES_CHANNELS_TOGGLE_DEFINITION.type,\n defaultValue: SALES_CHANNELS_TOGGLE_DEFINITION.defaultValue,\n }),\n )\n await em.flush()\n}\n"],
|
|
5
|
-
"mappings": "AACA,SAAS,qBAAqB;AAC9B,SAAS,6BAA6B;AACtC,SAAS,gCAAgC;AAElC,MAAM,mCAAmC;AAAA,EAC9C,YAAY;AAAA,EACZ,MAAM;AAAA,EACN,aAAa;AAAA,EACb,UAAU;AAAA,EACV,MAAM;AAAA,EACN,cAAc;AAChB;AAaA,eAAsB,wBAAwB,IAAkC;AAC9E,QAAM,WAAW,MAAM,sBAAsB,IAAI,eAAe;AAAA,IAC9D,YAAY,iCAAiC;AAAA,EAC/C,CAAC;AACD,MAAI,SAAU;AACd,KAAG;AAAA,IACD,GAAG,OAAO,eAAe;AAAA,MACvB,YAAY,iCAAiC;AAAA,MAC7C,MAAM,iCAAiC;AAAA,MACvC,aAAa,iCAAiC;AAAA,MAC9C,UAAU,iCAAiC;AAAA,MAC3C,MAAM,iCAAiC;AAAA,MACvC,cAAc,iCAAiC;AAAA,IACjD,CAAC;AAAA,EACH;AACA,QAAM,GAAG,MAAM;AACjB;",
|
|
6
|
-
"names": []
|
|
7
|
-
}
|
package/dist/modules/sales/migrations/Migration20260821120000_sales_notes_addresses_context_idx.js
DELETED
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
import { Migration } from "@mikro-orm/migrations";
|
|
2
|
-
class Migration20260821120000_sales_notes_addresses_context_idx extends Migration {
|
|
3
|
-
isTransactional() {
|
|
4
|
-
return false;
|
|
5
|
-
}
|
|
6
|
-
up() {
|
|
7
|
-
this.addSql(`drop index concurrently if exists "sales_notes_context_idx";`);
|
|
8
|
-
this.addSql(`create index concurrently "sales_notes_context_idx" on "sales_notes" ("context_id");`);
|
|
9
|
-
this.addSql(`drop index concurrently if exists "sales_notes_order_idx";`);
|
|
10
|
-
this.addSql(`create index concurrently "sales_notes_order_idx" on "sales_notes" ("order_id");`);
|
|
11
|
-
this.addSql(`drop index concurrently if exists "sales_notes_quote_idx";`);
|
|
12
|
-
this.addSql(`create index concurrently "sales_notes_quote_idx" on "sales_notes" ("quote_id");`);
|
|
13
|
-
this.addSql(`drop index concurrently if exists "sales_document_addresses_document_idx";`);
|
|
14
|
-
this.addSql(`create index concurrently "sales_document_addresses_document_idx" on "sales_document_addresses" ("document_id");`);
|
|
15
|
-
this.addSql(`drop index concurrently if exists "sales_document_addresses_order_idx";`);
|
|
16
|
-
this.addSql(`create index concurrently "sales_document_addresses_order_idx" on "sales_document_addresses" ("order_id");`);
|
|
17
|
-
this.addSql(`drop index concurrently if exists "sales_document_addresses_quote_idx";`);
|
|
18
|
-
this.addSql(`create index concurrently "sales_document_addresses_quote_idx" on "sales_document_addresses" ("quote_id");`);
|
|
19
|
-
}
|
|
20
|
-
down() {
|
|
21
|
-
this.addSql(`drop index concurrently if exists "sales_document_addresses_quote_idx";`);
|
|
22
|
-
this.addSql(`drop index concurrently if exists "sales_document_addresses_order_idx";`);
|
|
23
|
-
this.addSql(`drop index concurrently if exists "sales_document_addresses_document_idx";`);
|
|
24
|
-
this.addSql(`drop index concurrently if exists "sales_notes_quote_idx";`);
|
|
25
|
-
this.addSql(`drop index concurrently if exists "sales_notes_order_idx";`);
|
|
26
|
-
this.addSql(`drop index concurrently if exists "sales_notes_context_idx";`);
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
export {
|
|
30
|
-
Migration20260821120000_sales_notes_addresses_context_idx
|
|
31
|
-
};
|
|
32
|
-
//# sourceMappingURL=Migration20260821120000_sales_notes_addresses_context_idx.js.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../../src/modules/sales/migrations/Migration20260821120000_sales_notes_addresses_context_idx.ts"],
|
|
4
|
-
"sourcesContent": ["import { Migration } from '@mikro-orm/migrations';\n\n// sales_notes and sales_document_addresses each carried a single index \u2014\n// (organization_id, tenant_id) \u2014 and are never read by that predicate alone.\n// loadOrderSnapshot / loadQuoteSnapshot (commands/documents.ts) read them by\n// context in the same Promise.all:\n//\n// findWithDecryption(em, SalesNote, { contextType, contextId, ...scope })\n// findWithDecryption(em, SalesDocumentAddress, { documentId, documentKind, ...scope })\n//\n// On a single-organization deployment the scope index matches every row, so the\n// planner discards it and scans. The cost is CPU filtering, so a warm cache does\n// not reduce it. Measured on a table of ~331k rows / 110 MB: a parallel\n// sequential scan removing 110,457 rows per worker, 82 ms per read to return 0\n// rows. The command bus runs prepare() and captureAfter() around every command\n// and both load a document snapshot, so one written document \u2014 itself several\n// commands (the document, one per changed line, the payment reconcile) \u2014\n// performs roughly 20 of these reads. Counters over one bulk-import batch of 100\n// records showed 1,971 sequential scans reading 217,670,528 rows, 2.18M rows per\n// imported record; repeatable across consecutive batches (1,971 / 1,974 / 1,911).\n//\n// context_type and document_kind are deliberately omitted, as they were for\n// sales_document_tag_assignments_document_idx (Migration20260806120000), and the\n// scope columns with them. sales_orders.id and sales_quotes.id are both\n// gen_random_uuid() from their own tables, so a context_id already determines its\n// context_type and its tenant; the seek returns the handful of rows belonging to\n// one document and the remaining terms are rechecked over those. Folding three\n// more columns in \u2014 one text and two uuids \u2014 roughly triples the index entry for\n// no selectivity, on tables that take a write per document save and a note per\n// order status change. The sibling scope indexes that do fold scope in\n// (sales_order_lines_scope_idx, sales_payments_scope_idx) predate that reasoning.\n//\n// order_id and quote_id are separate indexes rather than a widening of the above:\n// both tables are the child side of `on delete set null` constraints, which\n// PostgreSQL does not index automatically, and the constraint check probes\n// order_id / quote_id \u2014 columns the context index cannot serve even though they\n// hold the same uuid. Without them every delete of a parent order or quote scans\n// the child table in full.\n//\n// Both tables are high-churn, so the indexes are built CONCURRENTLY to avoid\n// blocking writes during the build. CREATE INDEX CONCURRENTLY cannot run inside a\n// transaction, hence isTransactional() => false; the migration runner applies\n// migrations one-by-one, so this opt-out is safe. Drop first so retrying a failed\n// concurrent build removes PostgreSQL's invalid index stub instead of letting IF\n// NOT EXISTS silently accept it: a half-built concurrent index is left INVALID,\n// the planner ignores it, and IF NOT EXISTS would report success while the table\n// stays unindexed. Same shape as Migration20260806120000 and\n// Migration20260731105052_query_index.\n//\n// On a database that does not have these indexes yet \u2014 every fresh install \u2014 the\n// drops are no-ops and there is no window without them. An operator who already\n// created one out of band should expect it to be rebuilt here, and the reads that\n// depend on it to fall back to their pre-index cost until the concurrent build\n// finishes; on a large table, run this while the writers that depend on it are\n// paused.\nexport class Migration20260821120000_sales_notes_addresses_context_idx extends Migration {\n\n override isTransactional(): boolean {\n return false;\n }\n\n override up(): void | Promise<void> {\n this.addSql(`drop index concurrently if exists \"sales_notes_context_idx\";`);\n this.addSql(`create index concurrently \"sales_notes_context_idx\" on \"sales_notes\" (\"context_id\");`);\n this.addSql(`drop index concurrently if exists \"sales_notes_order_idx\";`);\n this.addSql(`create index concurrently \"sales_notes_order_idx\" on \"sales_notes\" (\"order_id\");`);\n this.addSql(`drop index concurrently if exists \"sales_notes_quote_idx\";`);\n this.addSql(`create index concurrently \"sales_notes_quote_idx\" on \"sales_notes\" (\"quote_id\");`);\n\n this.addSql(`drop index concurrently if exists \"sales_document_addresses_document_idx\";`);\n this.addSql(`create index concurrently \"sales_document_addresses_document_idx\" on \"sales_document_addresses\" (\"document_id\");`);\n this.addSql(`drop index concurrently if exists \"sales_document_addresses_order_idx\";`);\n this.addSql(`create index concurrently \"sales_document_addresses_order_idx\" on \"sales_document_addresses\" (\"order_id\");`);\n this.addSql(`drop index concurrently if exists \"sales_document_addresses_quote_idx\";`);\n this.addSql(`create index concurrently \"sales_document_addresses_quote_idx\" on \"sales_document_addresses\" (\"quote_id\");`);\n }\n\n override down(): void | Promise<void> {\n this.addSql(`drop index concurrently if exists \"sales_document_addresses_quote_idx\";`);\n this.addSql(`drop index concurrently if exists \"sales_document_addresses_order_idx\";`);\n this.addSql(`drop index concurrently if exists \"sales_document_addresses_document_idx\";`);\n this.addSql(`drop index concurrently if exists \"sales_notes_quote_idx\";`);\n this.addSql(`drop index concurrently if exists \"sales_notes_order_idx\";`);\n this.addSql(`drop index concurrently if exists \"sales_notes_context_idx\";`);\n }\n\n}\n"],
|
|
5
|
-
"mappings": "AAAA,SAAS,iBAAiB;AAuDnB,MAAM,kEAAkE,UAAU;AAAA,EAE9E,kBAA2B;AAClC,WAAO;AAAA,EACT;AAAA,EAES,KAA2B;AAClC,SAAK,OAAO,8DAA8D;AAC1E,SAAK,OAAO,sFAAsF;AAClG,SAAK,OAAO,4DAA4D;AACxE,SAAK,OAAO,kFAAkF;AAC9F,SAAK,OAAO,4DAA4D;AACxE,SAAK,OAAO,kFAAkF;AAE9F,SAAK,OAAO,4EAA4E;AACxF,SAAK,OAAO,kHAAkH;AAC9H,SAAK,OAAO,yEAAyE;AACrF,SAAK,OAAO,4GAA4G;AACxH,SAAK,OAAO,yEAAyE;AACrF,SAAK,OAAO,4GAA4G;AAAA,EAC1H;AAAA,EAES,OAA6B;AACpC,SAAK,OAAO,yEAAyE;AACrF,SAAK,OAAO,yEAAyE;AACrF,SAAK,OAAO,4EAA4E;AACxF,SAAK,OAAO,4DAA4D;AACxE,SAAK,OAAO,4DAA4D;AACxE,SAAK,OAAO,8DAA8D;AAAA,EAC5E;AAEF;",
|
|
6
|
-
"names": []
|
|
7
|
-
}
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
import { escapeLikePattern } from "@open-mercato/shared/lib/db/escapeLikePattern";
|
|
2
|
-
import { locales } from "@open-mercato/shared/lib/i18n/config";
|
|
3
|
-
import { matchCountryCodes } from "@open-mercato/shared/lib/location/countries";
|
|
4
|
-
function buildWarehouseListSearchOr(term) {
|
|
5
|
-
const like = `%${escapeLikePattern(term)}%`;
|
|
6
|
-
const orFilters = [
|
|
7
|
-
{ name: { $ilike: like } },
|
|
8
|
-
{ code: { $ilike: like } },
|
|
9
|
-
{ city: { $ilike: like } },
|
|
10
|
-
{ country: { $ilike: like } }
|
|
11
|
-
];
|
|
12
|
-
const matchedCountryCodes = matchCountryCodes(term, { locales });
|
|
13
|
-
if (matchedCountryCodes.length > 0) {
|
|
14
|
-
orFilters.push({ country: { $in: matchedCountryCodes } });
|
|
15
|
-
}
|
|
16
|
-
return orFilters;
|
|
17
|
-
}
|
|
18
|
-
export {
|
|
19
|
-
buildWarehouseListSearchOr
|
|
20
|
-
};
|
|
21
|
-
//# sourceMappingURL=warehouseSearch.js.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../../src/modules/wms/api/warehouseSearch.ts"],
|
|
4
|
-
"sourcesContent": ["import { escapeLikePattern } from '@open-mercato/shared/lib/db/escapeLikePattern'\nimport { locales } from '@open-mercato/shared/lib/i18n/config'\nimport { matchCountryCodes } from '@open-mercato/shared/lib/location/countries'\n\n/**\n * Warehouse list search matches name/code/city plus both stored country values:\n * ISO codes (`PL`) and legacy free-text (`Poland`). Localized labels shown in\n * the table (`Poland` / `Polska`) must resolve back to the stored ISO code.\n */\nexport function buildWarehouseListSearchOr(term: string): Array<Record<string, unknown>> {\n const like = `%${escapeLikePattern(term)}%`\n const orFilters: Array<Record<string, unknown>> = [\n { name: { $ilike: like } },\n { code: { $ilike: like } },\n { city: { $ilike: like } },\n { country: { $ilike: like } },\n ]\n const matchedCountryCodes = matchCountryCodes(term, { locales })\n if (matchedCountryCodes.length > 0) {\n orFilters.push({ country: { $in: matchedCountryCodes } })\n }\n return orFilters\n}\n"],
|
|
5
|
-
"mappings": "AAAA,SAAS,yBAAyB;AAClC,SAAS,eAAe;AACxB,SAAS,yBAAyB;AAO3B,SAAS,2BAA2B,MAA8C;AACvF,QAAM,OAAO,IAAI,kBAAkB,IAAI,CAAC;AACxC,QAAM,YAA4C;AAAA,IAChD,EAAE,MAAM,EAAE,QAAQ,KAAK,EAAE;AAAA,IACzB,EAAE,MAAM,EAAE,QAAQ,KAAK,EAAE;AAAA,IACzB,EAAE,MAAM,EAAE,QAAQ,KAAK,EAAE;AAAA,IACzB,EAAE,SAAS,EAAE,QAAQ,KAAK,EAAE;AAAA,EAC9B;AACA,QAAM,sBAAsB,kBAAkB,MAAM,EAAE,QAAQ,CAAC;AAC/D,MAAI,oBAAoB,SAAS,GAAG;AAClC,cAAU,KAAK,EAAE,SAAS,EAAE,KAAK,oBAAoB,EAAE,CAAC;AAAA,EAC1D;AACA,SAAO;AACT;",
|
|
6
|
-
"names": []
|
|
7
|
-
}
|
|
@@ -1,158 +0,0 @@
|
|
|
1
|
-
"use client";
|
|
2
|
-
import { jsx, jsxs } from "react/jsx-runtime";
|
|
3
|
-
import * as React from "react";
|
|
4
|
-
import { z } from "zod";
|
|
5
|
-
import { CrudForm } from "@open-mercato/ui/backend/CrudForm";
|
|
6
|
-
import { flash } from "@open-mercato/ui/backend/FlashMessages";
|
|
7
|
-
import { useGuardedMutation } from "@open-mercato/ui/backend/injection/useGuardedMutation";
|
|
8
|
-
import { apiCall } from "@open-mercato/ui/backend/utils/apiCall";
|
|
9
|
-
import { raiseCrudError } from "@open-mercato/ui/backend/utils/serverErrors";
|
|
10
|
-
import { Dialog, DialogContent, DialogHeader, DialogTitle } from "@open-mercato/ui/primitives/dialog";
|
|
11
|
-
import { extractCustomFieldEntries } from "@open-mercato/shared/lib/crud/custom-fields-client";
|
|
12
|
-
import { useLocale, useT } from "@open-mercato/shared/lib/i18n/context";
|
|
13
|
-
import { E } from "../../../../generated/entities.ids.generated.js";
|
|
14
|
-
import { flashMutationError } from "../../lib/flashMutationError.js";
|
|
15
|
-
import {
|
|
16
|
-
countryOptionFromStored,
|
|
17
|
-
loadCountryOptions,
|
|
18
|
-
loadTimezoneOptions,
|
|
19
|
-
timezoneOptionFromStored
|
|
20
|
-
} from "./warehouseFormOptions.js";
|
|
21
|
-
const warehouseFormSchema = z.object({
|
|
22
|
-
name: z.string().trim().min(1),
|
|
23
|
-
code: z.string().trim().min(1),
|
|
24
|
-
city: z.string().trim().optional(),
|
|
25
|
-
country: z.string().trim().optional(),
|
|
26
|
-
timezone: z.string().trim().optional(),
|
|
27
|
-
isActive: z.boolean().default(true),
|
|
28
|
-
isPrimary: z.boolean().default(false)
|
|
29
|
-
}).passthrough();
|
|
30
|
-
function WarehouseEditDialog({ open, onOpenChange, mode, row, onSaved }) {
|
|
31
|
-
const t = useT();
|
|
32
|
-
const locale = useLocale();
|
|
33
|
-
const { runMutation } = useGuardedMutation({ contextId: "wms-config-warehouses" });
|
|
34
|
-
const [submitting, setSubmitting] = React.useState(false);
|
|
35
|
-
const countrySeedOptions = React.useMemo(() => {
|
|
36
|
-
if (mode !== "edit" || !row?.country?.trim()) return void 0;
|
|
37
|
-
return [countryOptionFromStored(row.country, locale)];
|
|
38
|
-
}, [locale, mode, row]);
|
|
39
|
-
const timezoneSeedOptions = React.useMemo(() => {
|
|
40
|
-
if (mode !== "edit" || !row?.timezone?.trim()) return void 0;
|
|
41
|
-
return [timezoneOptionFromStored(row.timezone)];
|
|
42
|
-
}, [mode, row]);
|
|
43
|
-
const fields = React.useMemo(() => [
|
|
44
|
-
{ id: "name", type: "text", label: t("wms.backend.config.warehouses.form.name", "Name"), required: true },
|
|
45
|
-
{ id: "code", type: "text", label: t("wms.backend.config.warehouses.form.code", "Code"), required: true },
|
|
46
|
-
{ id: "city", type: "text", label: t("wms.backend.config.warehouses.form.city", "City") },
|
|
47
|
-
{
|
|
48
|
-
id: "country",
|
|
49
|
-
type: "combobox",
|
|
50
|
-
label: t("wms.backend.config.warehouses.form.country", "Country"),
|
|
51
|
-
placeholder: t("wms.backend.config.warehouses.form.countryPlaceholder", "Search country"),
|
|
52
|
-
loadOptions: (query) => loadCountryOptions(query, locale),
|
|
53
|
-
allowCustomValues: false,
|
|
54
|
-
seedOptions: countrySeedOptions,
|
|
55
|
-
resolveLabel: (value) => countryOptionFromStored(value, locale).label
|
|
56
|
-
},
|
|
57
|
-
{
|
|
58
|
-
id: "timezone",
|
|
59
|
-
type: "combobox",
|
|
60
|
-
label: t("wms.backend.config.warehouses.form.timezone", "Timezone"),
|
|
61
|
-
placeholder: t("wms.backend.config.warehouses.form.timezonePlaceholder", "Search timezone"),
|
|
62
|
-
loadOptions: loadTimezoneOptions,
|
|
63
|
-
allowCustomValues: false,
|
|
64
|
-
seedOptions: timezoneSeedOptions
|
|
65
|
-
},
|
|
66
|
-
{ id: "isPrimary", type: "checkbox", label: t("wms.backend.config.warehouses.form.primary", "Primary warehouse") },
|
|
67
|
-
{ id: "isActive", type: "checkbox", label: t("wms.backend.config.warehouses.form.active", "Active") }
|
|
68
|
-
], [countrySeedOptions, locale, t, timezoneSeedOptions]);
|
|
69
|
-
const initialValues = React.useMemo(() => {
|
|
70
|
-
if (mode === "edit" && row) {
|
|
71
|
-
return {
|
|
72
|
-
name: row.name || "",
|
|
73
|
-
code: row.code || "",
|
|
74
|
-
city: row.city || "",
|
|
75
|
-
country: row.country || "",
|
|
76
|
-
timezone: row.timezone || "",
|
|
77
|
-
isActive: row.is_active !== false,
|
|
78
|
-
isPrimary: row.is_primary === true,
|
|
79
|
-
...extractCustomFieldEntries(row)
|
|
80
|
-
};
|
|
81
|
-
}
|
|
82
|
-
return {
|
|
83
|
-
name: "",
|
|
84
|
-
code: "",
|
|
85
|
-
city: "",
|
|
86
|
-
country: "",
|
|
87
|
-
timezone: "",
|
|
88
|
-
isActive: true,
|
|
89
|
-
isPrimary: false
|
|
90
|
-
};
|
|
91
|
-
}, [mode, row]);
|
|
92
|
-
const handleSubmit = React.useCallback(async (values) => {
|
|
93
|
-
setSubmitting(true);
|
|
94
|
-
try {
|
|
95
|
-
const payload = mode === "edit" && row ? { id: row.id, ...values } : values;
|
|
96
|
-
const call = await runMutation({
|
|
97
|
-
operation: async () => {
|
|
98
|
-
const result = await apiCall(
|
|
99
|
-
"/api/wms/warehouses",
|
|
100
|
-
{
|
|
101
|
-
method: mode === "edit" ? "PUT" : "POST",
|
|
102
|
-
headers: { "x-om-forbidden-redirect": "0" },
|
|
103
|
-
body: JSON.stringify(payload)
|
|
104
|
-
}
|
|
105
|
-
);
|
|
106
|
-
if (!result.ok) {
|
|
107
|
-
await raiseCrudError(result.response, t("wms.backend.config.warehouses.errors.save", "Failed to save warehouse."));
|
|
108
|
-
}
|
|
109
|
-
return result;
|
|
110
|
-
},
|
|
111
|
-
context: {},
|
|
112
|
-
mutationPayload: payload
|
|
113
|
-
});
|
|
114
|
-
flash(
|
|
115
|
-
mode === "edit" ? t("wms.backend.config.warehouses.flash.updated", "Warehouse updated") : t("wms.backend.config.warehouses.flash.created", "Warehouse created"),
|
|
116
|
-
"success"
|
|
117
|
-
);
|
|
118
|
-
const resultBody = call?.result && typeof call.result === "object" ? call.result : null;
|
|
119
|
-
const createdId = mode === "create" && typeof resultBody?.id === "string" ? resultBody.id.trim() : void 0;
|
|
120
|
-
const updatedAt = typeof resultBody?.updatedAt === "string" && resultBody.updatedAt.trim() || typeof resultBody?.updated_at === "string" && resultBody.updated_at.trim() || void 0;
|
|
121
|
-
onOpenChange(false);
|
|
122
|
-
await onSaved?.({
|
|
123
|
-
mode,
|
|
124
|
-
id: createdId || row?.id,
|
|
125
|
-
values,
|
|
126
|
-
updatedAt: updatedAt || null
|
|
127
|
-
});
|
|
128
|
-
} catch (error) {
|
|
129
|
-
flashMutationError(error, t("wms.backend.config.warehouses.errors.save", "Failed to save warehouse."), t);
|
|
130
|
-
} finally {
|
|
131
|
-
setSubmitting(false);
|
|
132
|
-
}
|
|
133
|
-
}, [mode, onOpenChange, onSaved, row, runMutation, t]);
|
|
134
|
-
return /* @__PURE__ */ jsx(Dialog, { open, onOpenChange, children: /* @__PURE__ */ jsxs(DialogContent, { className: "max-w-3xl", children: [
|
|
135
|
-
/* @__PURE__ */ jsx(DialogHeader, { children: /* @__PURE__ */ jsx(DialogTitle, { children: mode === "edit" ? t("wms.backend.config.warehouses.dialog.edit", "Edit warehouse") : t("wms.backend.config.warehouses.dialog.create", "Create warehouse") }) }),
|
|
136
|
-
/* @__PURE__ */ jsx(
|
|
137
|
-
CrudForm,
|
|
138
|
-
{
|
|
139
|
-
schema: warehouseFormSchema,
|
|
140
|
-
fields,
|
|
141
|
-
entityId: E.wms.warehouse,
|
|
142
|
-
initialValues,
|
|
143
|
-
submitLabel: t("common.save", "Save"),
|
|
144
|
-
onSubmit: handleSubmit,
|
|
145
|
-
embedded: true,
|
|
146
|
-
disableInitialFocus: true,
|
|
147
|
-
isLoading: submitting,
|
|
148
|
-
twoColumn: true,
|
|
149
|
-
optimisticLockUpdatedAt: mode === "edit" ? row?.updatedAt ?? row?.updated_at ?? null : void 0
|
|
150
|
-
}
|
|
151
|
-
)
|
|
152
|
-
] }) });
|
|
153
|
-
}
|
|
154
|
-
export {
|
|
155
|
-
WarehouseEditDialog,
|
|
156
|
-
warehouseFormSchema
|
|
157
|
-
};
|
|
158
|
-
//# sourceMappingURL=WarehouseEditDialog.js.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../../../src/modules/wms/components/backend/WarehouseEditDialog.tsx"],
|
|
4
|
-
"sourcesContent": ["\"use client\"\n\nimport * as React from 'react'\nimport { z } from 'zod'\nimport { CrudForm, type CrudField } from '@open-mercato/ui/backend/CrudForm'\nimport { flash } from '@open-mercato/ui/backend/FlashMessages'\nimport { useGuardedMutation } from '@open-mercato/ui/backend/injection/useGuardedMutation'\nimport { apiCall } from '@open-mercato/ui/backend/utils/apiCall'\nimport { raiseCrudError } from '@open-mercato/ui/backend/utils/serverErrors'\nimport { Dialog, DialogContent, DialogHeader, DialogTitle } from '@open-mercato/ui/primitives/dialog'\nimport { extractCustomFieldEntries } from '@open-mercato/shared/lib/crud/custom-fields-client'\nimport { useLocale, useT } from '@open-mercato/shared/lib/i18n/context'\nimport { E } from '#generated/entities.ids.generated'\nimport { flashMutationError } from '../../lib/flashMutationError'\nimport {\n countryOptionFromStored,\n loadCountryOptions,\n loadTimezoneOptions,\n timezoneOptionFromStored,\n} from './warehouseFormOptions'\n\nexport type WarehouseDialogRow = {\n id: string\n name?: string | null\n code?: string | null\n city?: string | null\n country?: string | null\n timezone?: string | null\n is_active?: boolean | null\n is_primary?: boolean | null\n updated_at?: string | null\n updatedAt?: string | null\n customValues?: Record<string, unknown> | null\n}\n\nexport type WarehouseFormValues = {\n name: string\n code: string\n city?: string\n country?: string\n timezone?: string\n isActive: boolean\n isPrimary: boolean\n}\n\nexport const warehouseFormSchema = z.object({\n name: z.string().trim().min(1),\n code: z.string().trim().min(1),\n city: z.string().trim().optional(),\n country: z.string().trim().optional(),\n timezone: z.string().trim().optional(),\n isActive: z.boolean().default(true),\n isPrimary: z.boolean().default(false),\n}).passthrough()\n\ntype WarehouseEditDialogProps = {\n open: boolean\n onOpenChange: (open: boolean) => void\n mode: 'create' | 'edit'\n row?: WarehouseDialogRow | null\n onSaved?: (info: {\n mode: 'create' | 'edit'\n id?: string\n values: WarehouseFormValues\n updatedAt?: string | null\n }) => void | Promise<void>\n}\n\nexport function WarehouseEditDialog({ open, onOpenChange, mode, row, onSaved }: WarehouseEditDialogProps) {\n const t = useT()\n const locale = useLocale()\n const { runMutation } = useGuardedMutation<Record<string, unknown>>({ contextId: 'wms-config-warehouses' })\n const [submitting, setSubmitting] = React.useState(false)\n\n const countrySeedOptions = React.useMemo(() => {\n if (mode !== 'edit' || !row?.country?.trim()) return undefined\n return [countryOptionFromStored(row.country, locale)]\n }, [locale, mode, row])\n\n const timezoneSeedOptions = React.useMemo(() => {\n if (mode !== 'edit' || !row?.timezone?.trim()) return undefined\n return [timezoneOptionFromStored(row.timezone)]\n }, [mode, row])\n\n const fields = React.useMemo<CrudField[]>(() => [\n { id: 'name', type: 'text', label: t('wms.backend.config.warehouses.form.name', 'Name'), required: true },\n { id: 'code', type: 'text', label: t('wms.backend.config.warehouses.form.code', 'Code'), required: true },\n { id: 'city', type: 'text', label: t('wms.backend.config.warehouses.form.city', 'City') },\n {\n id: 'country',\n type: 'combobox',\n label: t('wms.backend.config.warehouses.form.country', 'Country'),\n placeholder: t('wms.backend.config.warehouses.form.countryPlaceholder', 'Search country'),\n loadOptions: (query) => loadCountryOptions(query, locale),\n allowCustomValues: false,\n seedOptions: countrySeedOptions,\n resolveLabel: (value) => countryOptionFromStored(value, locale).label,\n },\n {\n id: 'timezone',\n type: 'combobox',\n label: t('wms.backend.config.warehouses.form.timezone', 'Timezone'),\n placeholder: t('wms.backend.config.warehouses.form.timezonePlaceholder', 'Search timezone'),\n loadOptions: loadTimezoneOptions,\n allowCustomValues: false,\n seedOptions: timezoneSeedOptions,\n },\n { id: 'isPrimary', type: 'checkbox', label: t('wms.backend.config.warehouses.form.primary', 'Primary warehouse') },\n { id: 'isActive', type: 'checkbox', label: t('wms.backend.config.warehouses.form.active', 'Active') },\n ], [countrySeedOptions, locale, t, timezoneSeedOptions])\n\n const initialValues = React.useMemo<WarehouseFormValues>(() => {\n if (mode === 'edit' && row) {\n return {\n name: row.name || '',\n code: row.code || '',\n city: row.city || '',\n country: row.country || '',\n timezone: row.timezone || '',\n isActive: row.is_active !== false,\n isPrimary: row.is_primary === true,\n ...extractCustomFieldEntries(row as Record<string, unknown>),\n } as WarehouseFormValues\n }\n return {\n name: '',\n code: '',\n city: '',\n country: '',\n timezone: '',\n isActive: true,\n isPrimary: false,\n }\n }, [mode, row])\n\n const handleSubmit = React.useCallback(async (values: WarehouseFormValues) => {\n setSubmitting(true)\n try {\n const payload = mode === 'edit' && row ? { id: row.id, ...values } : values\n const call = await runMutation({\n operation: async () => {\n const result = await apiCall<{ id?: string | null; updatedAt?: string | null; updated_at?: string | null }>(\n '/api/wms/warehouses',\n {\n method: mode === 'edit' ? 'PUT' : 'POST',\n headers: { 'x-om-forbidden-redirect': '0' },\n body: JSON.stringify(payload),\n },\n )\n if (!result.ok) {\n await raiseCrudError(result.response, t('wms.backend.config.warehouses.errors.save', 'Failed to save warehouse.'))\n }\n return result\n },\n context: {},\n mutationPayload: payload,\n })\n flash(\n mode === 'edit'\n ? t('wms.backend.config.warehouses.flash.updated', 'Warehouse updated')\n : t('wms.backend.config.warehouses.flash.created', 'Warehouse created'),\n 'success',\n )\n const resultBody =\n call?.result && typeof call.result === 'object'\n ? (call.result as { id?: unknown; updatedAt?: unknown; updated_at?: unknown })\n : null\n const createdId =\n mode === 'create' && typeof resultBody?.id === 'string'\n ? resultBody.id.trim()\n : undefined\n const updatedAt =\n (typeof resultBody?.updatedAt === 'string' && resultBody.updatedAt.trim()) ||\n (typeof resultBody?.updated_at === 'string' && resultBody.updated_at.trim()) ||\n undefined\n onOpenChange(false)\n await onSaved?.({\n mode,\n id: createdId || row?.id,\n values,\n updatedAt: updatedAt || null,\n })\n } catch (error) {\n flashMutationError(error, t('wms.backend.config.warehouses.errors.save', 'Failed to save warehouse.'), t)\n } finally {\n setSubmitting(false)\n }\n }, [mode, onOpenChange, onSaved, row, runMutation, t])\n\n return (\n <Dialog open={open} onOpenChange={onOpenChange}>\n <DialogContent className=\"max-w-3xl\">\n <DialogHeader>\n <DialogTitle>\n {mode === 'edit'\n ? t('wms.backend.config.warehouses.dialog.edit', 'Edit warehouse')\n : t('wms.backend.config.warehouses.dialog.create', 'Create warehouse')}\n </DialogTitle>\n </DialogHeader>\n <CrudForm<WarehouseFormValues>\n schema={warehouseFormSchema}\n fields={fields}\n entityId={E.wms.warehouse}\n initialValues={initialValues}\n submitLabel={t('common.save', 'Save')}\n onSubmit={handleSubmit}\n embedded\n disableInitialFocus\n isLoading={submitting}\n twoColumn\n optimisticLockUpdatedAt={mode === 'edit' ? (row?.updatedAt ?? row?.updated_at ?? null) : undefined}\n />\n </DialogContent>\n </Dialog>\n )\n}\n"],
|
|
5
|
-
"mappings": ";AA+LM,SAEI,KAFJ;AA7LN,YAAY,WAAW;AACvB,SAAS,SAAS;AAClB,SAAS,gBAAgC;AACzC,SAAS,aAAa;AACtB,SAAS,0BAA0B;AACnC,SAAS,eAAe;AACxB,SAAS,sBAAsB;AAC/B,SAAS,QAAQ,eAAe,cAAc,mBAAmB;AACjE,SAAS,iCAAiC;AAC1C,SAAS,WAAW,YAAY;AAChC,SAAS,SAAS;AAClB,SAAS,0BAA0B;AACnC;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AA0BA,MAAM,sBAAsB,EAAE,OAAO;AAAA,EAC1C,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC;AAAA,EAC7B,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC;AAAA,EAC7B,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS;AAAA,EACjC,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS;AAAA,EACpC,UAAU,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS;AAAA,EACrC,UAAU,EAAE,QAAQ,EAAE,QAAQ,IAAI;AAAA,EAClC,WAAW,EAAE,QAAQ,EAAE,QAAQ,KAAK;AACtC,CAAC,EAAE,YAAY;AAeR,SAAS,oBAAoB,EAAE,MAAM,cAAc,MAAM,KAAK,QAAQ,GAA6B;AACxG,QAAM,IAAI,KAAK;AACf,QAAM,SAAS,UAAU;AACzB,QAAM,EAAE,YAAY,IAAI,mBAA4C,EAAE,WAAW,wBAAwB,CAAC;AAC1G,QAAM,CAAC,YAAY,aAAa,IAAI,MAAM,SAAS,KAAK;AAExD,QAAM,qBAAqB,MAAM,QAAQ,MAAM;AAC7C,QAAI,SAAS,UAAU,CAAC,KAAK,SAAS,KAAK,EAAG,QAAO;AACrD,WAAO,CAAC,wBAAwB,IAAI,SAAS,MAAM,CAAC;AAAA,EACtD,GAAG,CAAC,QAAQ,MAAM,GAAG,CAAC;AAEtB,QAAM,sBAAsB,MAAM,QAAQ,MAAM;AAC9C,QAAI,SAAS,UAAU,CAAC,KAAK,UAAU,KAAK,EAAG,QAAO;AACtD,WAAO,CAAC,yBAAyB,IAAI,QAAQ,CAAC;AAAA,EAChD,GAAG,CAAC,MAAM,GAAG,CAAC;AAEd,QAAM,SAAS,MAAM,QAAqB,MAAM;AAAA,IAC9C,EAAE,IAAI,QAAQ,MAAM,QAAQ,OAAO,EAAE,2CAA2C,MAAM,GAAG,UAAU,KAAK;AAAA,IACxG,EAAE,IAAI,QAAQ,MAAM,QAAQ,OAAO,EAAE,2CAA2C,MAAM,GAAG,UAAU,KAAK;AAAA,IACxG,EAAE,IAAI,QAAQ,MAAM,QAAQ,OAAO,EAAE,2CAA2C,MAAM,EAAE;AAAA,IACxF;AAAA,MACE,IAAI;AAAA,MACJ,MAAM;AAAA,MACN,OAAO,EAAE,8CAA8C,SAAS;AAAA,MAChE,aAAa,EAAE,yDAAyD,gBAAgB;AAAA,MACxF,aAAa,CAAC,UAAU,mBAAmB,OAAO,MAAM;AAAA,MACxD,mBAAmB;AAAA,MACnB,aAAa;AAAA,MACb,cAAc,CAAC,UAAU,wBAAwB,OAAO,MAAM,EAAE;AAAA,IAClE;AAAA,IACA;AAAA,MACE,IAAI;AAAA,MACJ,MAAM;AAAA,MACN,OAAO,EAAE,+CAA+C,UAAU;AAAA,MAClE,aAAa,EAAE,0DAA0D,iBAAiB;AAAA,MAC1F,aAAa;AAAA,MACb,mBAAmB;AAAA,MACnB,aAAa;AAAA,IACf;AAAA,IACA,EAAE,IAAI,aAAa,MAAM,YAAY,OAAO,EAAE,8CAA8C,mBAAmB,EAAE;AAAA,IACjH,EAAE,IAAI,YAAY,MAAM,YAAY,OAAO,EAAE,6CAA6C,QAAQ,EAAE;AAAA,EACtG,GAAG,CAAC,oBAAoB,QAAQ,GAAG,mBAAmB,CAAC;AAEvD,QAAM,gBAAgB,MAAM,QAA6B,MAAM;AAC7D,QAAI,SAAS,UAAU,KAAK;AAC1B,aAAO;AAAA,QACL,MAAM,IAAI,QAAQ;AAAA,QAClB,MAAM,IAAI,QAAQ;AAAA,QAClB,MAAM,IAAI,QAAQ;AAAA,QAClB,SAAS,IAAI,WAAW;AAAA,QACxB,UAAU,IAAI,YAAY;AAAA,QAC1B,UAAU,IAAI,cAAc;AAAA,QAC5B,WAAW,IAAI,eAAe;AAAA,QAC9B,GAAG,0BAA0B,GAA8B;AAAA,MAC7D;AAAA,IACF;AACA,WAAO;AAAA,MACL,MAAM;AAAA,MACN,MAAM;AAAA,MACN,MAAM;AAAA,MACN,SAAS;AAAA,MACT,UAAU;AAAA,MACV,UAAU;AAAA,MACV,WAAW;AAAA,IACb;AAAA,EACF,GAAG,CAAC,MAAM,GAAG,CAAC;AAEd,QAAM,eAAe,MAAM,YAAY,OAAO,WAAgC;AAC5E,kBAAc,IAAI;AAClB,QAAI;AACF,YAAM,UAAU,SAAS,UAAU,MAAM,EAAE,IAAI,IAAI,IAAI,GAAG,OAAO,IAAI;AACrE,YAAM,OAAO,MAAM,YAAY;AAAA,QAC7B,WAAW,YAAY;AACrB,gBAAM,SAAS,MAAM;AAAA,YACnB;AAAA,YACA;AAAA,cACE,QAAQ,SAAS,SAAS,QAAQ;AAAA,cAClC,SAAS,EAAE,2BAA2B,IAAI;AAAA,cAC1C,MAAM,KAAK,UAAU,OAAO;AAAA,YAC9B;AAAA,UACF;AACA,cAAI,CAAC,OAAO,IAAI;AACd,kBAAM,eAAe,OAAO,UAAU,EAAE,6CAA6C,2BAA2B,CAAC;AAAA,UACnH;AACA,iBAAO;AAAA,QACT;AAAA,QACA,SAAS,CAAC;AAAA,QACV,iBAAiB;AAAA,MACnB,CAAC;AACD;AAAA,QACE,SAAS,SACL,EAAE,+CAA+C,mBAAmB,IACpE,EAAE,+CAA+C,mBAAmB;AAAA,QACxE;AAAA,MACF;AACA,YAAM,aACJ,MAAM,UAAU,OAAO,KAAK,WAAW,WAClC,KAAK,SACN;AACN,YAAM,YACJ,SAAS,YAAY,OAAO,YAAY,OAAO,WAC3C,WAAW,GAAG,KAAK,IACnB;AACN,YAAM,YACH,OAAO,YAAY,cAAc,YAAY,WAAW,UAAU,KAAK,KACvE,OAAO,YAAY,eAAe,YAAY,WAAW,WAAW,KAAK,KAC1E;AACF,mBAAa,KAAK;AAClB,YAAM,UAAU;AAAA,QACd;AAAA,QACA,IAAI,aAAa,KAAK;AAAA,QACtB;AAAA,QACA,WAAW,aAAa;AAAA,MAC1B,CAAC;AAAA,IACH,SAAS,OAAO;AACd,yBAAmB,OAAO,EAAE,6CAA6C,2BAA2B,GAAG,CAAC;AAAA,IAC1G,UAAE;AACA,oBAAc,KAAK;AAAA,IACrB;AAAA,EACF,GAAG,CAAC,MAAM,cAAc,SAAS,KAAK,aAAa,CAAC,CAAC;AAErD,SACE,oBAAC,UAAO,MAAY,cAClB,+BAAC,iBAAc,WAAU,aACvB;AAAA,wBAAC,gBACC,8BAAC,eACE,mBAAS,SACN,EAAE,6CAA6C,gBAAgB,IAC/D,EAAE,+CAA+C,kBAAkB,GACzE,GACF;AAAA,IACA;AAAA,MAAC;AAAA;AAAA,QACC,QAAQ;AAAA,QACR;AAAA,QACA,UAAU,EAAE,IAAI;AAAA,QAChB;AAAA,QACA,aAAa,EAAE,eAAe,MAAM;AAAA,QACpC,UAAU;AAAA,QACV,UAAQ;AAAA,QACR,qBAAmB;AAAA,QACnB,WAAW;AAAA,QACX,WAAS;AAAA,QACT,yBAAyB,SAAS,SAAU,KAAK,aAAa,KAAK,cAAc,OAAQ;AAAA;AAAA,IAC3F;AAAA,KACF,GACF;AAEJ;",
|
|
6
|
-
"names": []
|
|
7
|
-
}
|