@focus-reactive/payload-plugin-translator 0.1.0 → 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +27 -14
- package/package.json +3 -1
- package/dist/client/app/cache/CacheProvider.d.ts.map +0 -1
- package/dist/client/app/cache/CacheProvider.export.d.ts.map +0 -1
- package/dist/client/app/cache/CacheProvider.export.js.map +0 -1
- package/dist/client/app/cache/CacheProvider.js.map +0 -1
- package/dist/client/app/cache/CacheProvider.jsx +0 -11
- package/dist/client/app/config/TranslateKitConfigContext.d.ts.map +0 -1
- package/dist/client/app/config/TranslateKitConfigContext.js.map +0 -1
- package/dist/client/app/config/TranslateKitConfigContext.jsx +0 -13
- package/dist/client/app/config/index.d.ts.map +0 -1
- package/dist/client/app/config/index.js.map +0 -1
- package/dist/client/entities/translation/api/mutations/useCancelCollectionTranslations.d.ts.map +0 -1
- package/dist/client/entities/translation/api/mutations/useCancelCollectionTranslations.js.map +0 -1
- package/dist/client/entities/translation/api/mutations/useCancelDocumentTranslation.d.ts.map +0 -1
- package/dist/client/entities/translation/api/mutations/useCancelDocumentTranslation.js.map +0 -1
- package/dist/client/entities/translation/api/mutations/useQueueDocumentTranslation.d.ts.map +0 -1
- package/dist/client/entities/translation/api/mutations/useQueueDocumentTranslation.js.map +0 -1
- package/dist/client/entities/translation/api/mutations/useQueueDocumentTranslations.d.ts.map +0 -1
- package/dist/client/entities/translation/api/mutations/useQueueDocumentTranslations.js.map +0 -1
- package/dist/client/entities/translation/api/mutations/useRunDocumentTranslation.d.ts.map +0 -1
- package/dist/client/entities/translation/api/mutations/useRunDocumentTranslation.js.map +0 -1
- package/dist/client/entities/translation/api/queries/useCollectionTranslationStatus.d.ts.map +0 -1
- package/dist/client/entities/translation/api/queries/useCollectionTranslationStatus.js.map +0 -1
- package/dist/client/entities/translation/api/queries/useDocumentTranslation.d.ts.map +0 -1
- package/dist/client/entities/translation/api/queries/useDocumentTranslation.js.map +0 -1
- package/dist/client/entities/translation/index.d.ts.map +0 -1
- package/dist/client/entities/translation/index.js.map +0 -1
- package/dist/client/entities/translation/model/enums.d.ts.map +0 -1
- package/dist/client/entities/translation/model/enums.js.map +0 -1
- package/dist/client/entities/translation/model/types.d.ts.map +0 -1
- package/dist/client/entities/translation/model/types.js.map +0 -1
- package/dist/client/entities/translation/ui/CompletedTranslationStatus/CompletedTranslationStatus.d.ts.map +0 -1
- package/dist/client/entities/translation/ui/CompletedTranslationStatus/CompletedTranslationStatus.js.map +0 -1
- package/dist/client/entities/translation/ui/CompletedTranslationStatus/CompletedTranslationStatus.jsx +0 -25
- package/dist/client/entities/translation/ui/CompletedTranslationStatus/index.d.ts.map +0 -1
- package/dist/client/entities/translation/ui/CompletedTranslationStatus/index.js.map +0 -1
- package/dist/client/entities/translation/ui/FailedTranslationStatus/FailedTranslationStatus.d.ts.map +0 -1
- package/dist/client/entities/translation/ui/FailedTranslationStatus/FailedTranslationStatus.js.map +0 -1
- package/dist/client/entities/translation/ui/FailedTranslationStatus/FailedTranslationStatus.jsx +0 -24
- package/dist/client/entities/translation/ui/FailedTranslationStatus/index.d.ts.map +0 -1
- package/dist/client/entities/translation/ui/FailedTranslationStatus/index.js.map +0 -1
- package/dist/client/entities/translation/ui/PendingTranslationStatus/PendingTranslationStatus.d.ts.map +0 -1
- package/dist/client/entities/translation/ui/PendingTranslationStatus/PendingTranslationStatus.js.map +0 -1
- package/dist/client/entities/translation/ui/PendingTranslationStatus/PendingTranslationStatus.jsx +0 -38
- package/dist/client/entities/translation/ui/PendingTranslationStatus/index.d.ts.map +0 -1
- package/dist/client/entities/translation/ui/PendingTranslationStatus/index.js.map +0 -1
- package/dist/client/entities/translation/ui/RunningTranslationStatus/RunningTranslationStatus.d.ts.map +0 -1
- package/dist/client/entities/translation/ui/RunningTranslationStatus/RunningTranslationStatus.js.map +0 -1
- package/dist/client/entities/translation/ui/RunningTranslationStatus/RunningTranslationStatus.jsx +0 -32
- package/dist/client/entities/translation/ui/RunningTranslationStatus/index.d.ts.map +0 -1
- package/dist/client/entities/translation/ui/RunningTranslationStatus/index.js.map +0 -1
- package/dist/client/entities/translation/ui/TranslationDirection/TranslationDirection.d.ts.map +0 -1
- package/dist/client/entities/translation/ui/TranslationDirection/TranslationDirection.js.map +0 -1
- package/dist/client/entities/translation/ui/TranslationDirection/TranslationDirection.jsx +0 -16
- package/dist/client/entities/translation/ui/TranslationDirection/index.d.ts.map +0 -1
- package/dist/client/entities/translation/ui/TranslationDirection/index.js.map +0 -1
- package/dist/client/features/collection-translation-form/index.client.d.ts.map +0 -1
- package/dist/client/features/collection-translation-form/index.client.js.map +0 -1
- package/dist/client/features/collection-translation-form/index.d.ts.map +0 -1
- package/dist/client/features/collection-translation-form/index.js.map +0 -1
- package/dist/client/features/collection-translation-form/model/constants.d.ts.map +0 -1
- package/dist/client/features/collection-translation-form/model/constants.js.map +0 -1
- package/dist/client/features/collection-translation-form/model/form-model.d.ts.map +0 -1
- package/dist/client/features/collection-translation-form/model/form-model.js.map +0 -1
- package/dist/client/features/collection-translation-form/model/index.d.ts.map +0 -1
- package/dist/client/features/collection-translation-form/model/index.js.map +0 -1
- package/dist/client/features/collection-translation-form/model/schema.d.ts.map +0 -1
- package/dist/client/features/collection-translation-form/model/schema.js.map +0 -1
- package/dist/client/features/collection-translation-form/ui/CollectionTranslationForm.d.ts.map +0 -1
- package/dist/client/features/collection-translation-form/ui/CollectionTranslationForm.js.map +0 -1
- package/dist/client/features/collection-translation-form/ui/CollectionTranslationForm.jsx +0 -25
- package/dist/client/features/collection-translation-form/ui/index.d.ts.map +0 -1
- package/dist/client/features/collection-translation-form/ui/index.js.map +0 -1
- package/dist/client/features/collection-translation-popup/index.d.ts.map +0 -1
- package/dist/client/features/collection-translation-popup/index.js.map +0 -1
- package/dist/client/features/collection-translation-popup/ui/CollectionTranslationPopup.d.ts.map +0 -1
- package/dist/client/features/collection-translation-popup/ui/CollectionTranslationPopup.js.map +0 -1
- package/dist/client/features/collection-translation-popup/ui/CollectionTranslationPopup.jsx +0 -23
- package/dist/client/features/collection-translation-progress/index.d.ts.map +0 -1
- package/dist/client/features/collection-translation-progress/index.js.map +0 -1
- package/dist/client/features/collection-translation-progress/ui/CollectionTranslationProgress.d.ts.map +0 -1
- package/dist/client/features/collection-translation-progress/ui/CollectionTranslationProgress.js.map +0 -1
- package/dist/client/features/collection-translation-progress/ui/CollectionTranslationProgress.jsx +0 -47
- package/dist/client/features/document-translation-progress-failed/index.d.ts.map +0 -1
- package/dist/client/features/document-translation-progress-failed/index.js.map +0 -1
- package/dist/client/features/document-translation-progress-failed/ui/DocumentTranslationProgressFailed.d.ts.map +0 -1
- package/dist/client/features/document-translation-progress-failed/ui/DocumentTranslationProgressFailed.js.map +0 -1
- package/dist/client/features/document-translation-progress-failed/ui/DocumentTranslationProgressFailed.jsx +0 -19
- package/dist/client/features/document-translation-progress-pending/index.d.ts.map +0 -1
- package/dist/client/features/document-translation-progress-pending/index.js.map +0 -1
- package/dist/client/features/document-translation-progress-pending/ui/DocumentTranslationProgressPending.d.ts.map +0 -1
- package/dist/client/features/document-translation-progress-pending/ui/DocumentTranslationProgressPending.js.map +0 -1
- package/dist/client/features/document-translation-progress-pending/ui/DocumentTranslationProgressPending.jsx +0 -34
- package/dist/client/features/document-translation-progress-running/index.d.ts.map +0 -1
- package/dist/client/features/document-translation-progress-running/index.js.map +0 -1
- package/dist/client/features/document-translation-progress-running/ui/DocumentTranslationProgressRunning.d.ts.map +0 -1
- package/dist/client/features/document-translation-progress-running/ui/DocumentTranslationProgressRunning.js.map +0 -1
- package/dist/client/features/document-translation-progress-running/ui/DocumentTranslationProgressRunning.jsx +0 -19
- package/dist/client/features/open-document-translation-popup/index.d.ts.map +0 -1
- package/dist/client/features/open-document-translation-popup/index.js.map +0 -1
- package/dist/client/features/open-document-translation-popup/ui/OpenDocumentTranslationPopup.d.ts.map +0 -1
- package/dist/client/features/open-document-translation-popup/ui/OpenDocumentTranslationPopup.js.map +0 -1
- package/dist/client/features/open-document-translation-popup/ui/OpenDocumentTranslationPopup.jsx +0 -15
- package/dist/client/features/translate-document-form/index.client.d.ts.map +0 -1
- package/dist/client/features/translate-document-form/index.client.js.map +0 -1
- package/dist/client/features/translate-document-form/index.d.ts.map +0 -1
- package/dist/client/features/translate-document-form/index.js.map +0 -1
- package/dist/client/features/translate-document-form/model/constants.d.ts.map +0 -1
- package/dist/client/features/translate-document-form/model/constants.js.map +0 -1
- package/dist/client/features/translate-document-form/model/form-model.d.ts.map +0 -1
- package/dist/client/features/translate-document-form/model/form-model.js.map +0 -1
- package/dist/client/features/translate-document-form/model/index.d.ts.map +0 -1
- package/dist/client/features/translate-document-form/model/index.js.map +0 -1
- package/dist/client/features/translate-document-form/model/schema.d.ts.map +0 -1
- package/dist/client/features/translate-document-form/model/schema.js.map +0 -1
- package/dist/client/features/translate-document-form/ui/DocumentTranslationForm.d.ts.map +0 -1
- package/dist/client/features/translate-document-form/ui/DocumentTranslationForm.js.map +0 -1
- package/dist/client/features/translate-document-form/ui/DocumentTranslationForm.jsx +0 -24
- package/dist/client/features/translate-document-form/ui/index.d.ts.map +0 -1
- package/dist/client/features/translate-document-form/ui/index.js.map +0 -1
- package/dist/client/shared/lib/assets/icons/LanguageTranslateIcon.d.ts.map +0 -1
- package/dist/client/shared/lib/assets/icons/LanguageTranslateIcon.js.map +0 -1
- package/dist/client/shared/lib/assets/icons/LanguageTranslateIcon.jsx +0 -4
- package/dist/client/shared/lib/assets/icons/QuestionCircleIcon.d.ts.map +0 -1
- package/dist/client/shared/lib/assets/icons/QuestionCircleIcon.js.map +0 -1
- package/dist/client/shared/lib/assets/icons/QuestionCircleIcon.jsx +0 -3
- package/dist/client/shared/lib/assets/icons/ReloadIcon.d.ts.map +0 -1
- package/dist/client/shared/lib/assets/icons/ReloadIcon.js.map +0 -1
- package/dist/client/shared/lib/assets/icons/ReloadIcon.jsx +0 -3
- package/dist/client/shared/lib/errors/handleApiError.d.ts.map +0 -1
- package/dist/client/shared/lib/errors/handleApiError.js.map +0 -1
- package/dist/client/shared/lib/forms/handle-form-error.d.ts.map +0 -1
- package/dist/client/shared/lib/forms/handle-form-error.js.map +0 -1
- package/dist/client/shared/lib/payload/hooks/useCollectionDashboardUrlParams.d.ts.map +0 -1
- package/dist/client/shared/lib/payload/hooks/useCollectionDashboardUrlParams.js.map +0 -1
- package/dist/client/shared/lib/payload/hooks/useCollectionDocumentUrlParams.d.ts.map +0 -1
- package/dist/client/shared/lib/payload/hooks/useCollectionDocumentUrlParams.js.map +0 -1
- package/dist/client/shared/lib/payload/hooks/useLocaleOptions.d.ts.map +0 -1
- package/dist/client/shared/lib/payload/hooks/useLocaleOptions.js.map +0 -1
- package/dist/client/shared/lib/utils/errors/handleApiError.d.ts.map +0 -1
- package/dist/client/shared/lib/utils/errors/handleApiError.js.map +0 -1
- package/dist/client/shared/lib/utils/react/useToggle.d.ts.map +0 -1
- package/dist/client/shared/lib/utils/react/useToggle.js.map +0 -1
- package/dist/client/shared/providers/CacheClientProvider/CacheClientProvider.factory.d.ts.map +0 -1
- package/dist/client/shared/providers/CacheClientProvider/CacheClientProvider.factory.js.map +0 -1
- package/dist/client/shared/providers/CacheClientProvider/index.d.ts.map +0 -1
- package/dist/client/shared/providers/CacheClientProvider/index.js.map +0 -1
- package/dist/client/shared/types/AccessGuard.d.ts.map +0 -1
- package/dist/client/shared/types/AccessGuard.js.map +0 -1
- package/dist/client/shared/types/PayloadComponentExport.d.ts.map +0 -1
- package/dist/client/shared/types/PayloadComponentExport.js.map +0 -1
- package/dist/client/shared/ui/Alert/Alert.d.ts.map +0 -1
- package/dist/client/shared/ui/Alert/Alert.js.map +0 -1
- package/dist/client/shared/ui/Alert/Alert.jsx +0 -33
- package/dist/client/shared/ui/Alert/index.d.ts.map +0 -1
- package/dist/client/shared/ui/Alert/index.js.map +0 -1
- package/dist/client/shared/ui/Button/Button.d.ts.map +0 -1
- package/dist/client/shared/ui/Button/Button.js.map +0 -1
- package/dist/client/shared/ui/Button/Button.jsx +0 -35
- package/dist/client/shared/ui/Button/index.d.ts.map +0 -1
- package/dist/client/shared/ui/Button/index.js.map +0 -1
- package/dist/client/shared/ui/Checkbox/Checkbox.d.ts.map +0 -1
- package/dist/client/shared/ui/Checkbox/Checkbox.js.map +0 -1
- package/dist/client/shared/ui/Checkbox/Checkbox.jsx +0 -6
- package/dist/client/shared/ui/Checkbox/index.d.ts.map +0 -1
- package/dist/client/shared/ui/Checkbox/index.js.map +0 -1
- package/dist/client/shared/ui/ColorIndicator/ColorIndicator.d.ts.map +0 -1
- package/dist/client/shared/ui/ColorIndicator/ColorIndicator.js.map +0 -1
- package/dist/client/shared/ui/ColorIndicator/ColorIndicator.jsx +0 -7
- package/dist/client/shared/ui/ColorIndicator/index.d.ts.map +0 -1
- package/dist/client/shared/ui/ColorIndicator/index.js.map +0 -1
- package/dist/client/shared/ui/Description/Description.d.ts.map +0 -1
- package/dist/client/shared/ui/Description/Description.js.map +0 -1
- package/dist/client/shared/ui/Description/Description.jsx +0 -7
- package/dist/client/shared/ui/Description/index.d.ts.map +0 -1
- package/dist/client/shared/ui/Description/index.js.map +0 -1
- package/dist/client/shared/ui/Divider/Divider.d.ts.map +0 -1
- package/dist/client/shared/ui/Divider/Divider.js.map +0 -1
- package/dist/client/shared/ui/Divider/Divider.jsx +0 -7
- package/dist/client/shared/ui/Divider/index.d.ts.map +0 -1
- package/dist/client/shared/ui/Divider/index.js.map +0 -1
- package/dist/client/shared/ui/Label/Label.d.ts.map +0 -1
- package/dist/client/shared/ui/Label/Label.js.map +0 -1
- package/dist/client/shared/ui/Label/Label.jsx +0 -9
- package/dist/client/shared/ui/Label/index.d.ts.map +0 -1
- package/dist/client/shared/ui/Label/index.js.map +0 -1
- package/dist/client/shared/ui/Loading/Loading.d.ts.map +0 -1
- package/dist/client/shared/ui/Loading/Loading.js.map +0 -1
- package/dist/client/shared/ui/Loading/Loading.jsx +0 -11
- package/dist/client/shared/ui/Loading/index.d.ts.map +0 -1
- package/dist/client/shared/ui/Loading/index.js.map +0 -1
- package/dist/client/shared/ui/Popup/Popup.d.ts.map +0 -1
- package/dist/client/shared/ui/Popup/Popup.js.map +0 -1
- package/dist/client/shared/ui/Popup/Popup.jsx +0 -13
- package/dist/client/shared/ui/Popup/index.d.ts.map +0 -1
- package/dist/client/shared/ui/Popup/index.js.map +0 -1
- package/dist/client/shared/ui/ProgressBar/ProgressBar.d.ts.map +0 -1
- package/dist/client/shared/ui/ProgressBar/ProgressBar.js.map +0 -1
- package/dist/client/shared/ui/ProgressBar/ProgressBar.jsx +0 -11
- package/dist/client/shared/ui/ProgressBar/index.d.ts.map +0 -1
- package/dist/client/shared/ui/ProgressBar/index.js.map +0 -1
- package/dist/client/shared/ui/Select/Select.d.ts.map +0 -1
- package/dist/client/shared/ui/Select/Select.js.map +0 -1
- package/dist/client/shared/ui/Select/Select.jsx +0 -41
- package/dist/client/shared/ui/Select/index.d.ts.map +0 -1
- package/dist/client/shared/ui/Select/index.js.map +0 -1
- package/dist/client/shared/ui/StatusCounter/StatusCounter.d.ts.map +0 -1
- package/dist/client/shared/ui/StatusCounter/StatusCounter.js.map +0 -1
- package/dist/client/shared/ui/StatusCounter/StatusCounter.jsx +0 -26
- package/dist/client/shared/ui/StatusCounter/index.d.ts.map +0 -1
- package/dist/client/shared/ui/StatusCounter/index.js.map +0 -1
- package/dist/client/shared/ui/StatusIndicator/StatusIndicator.d.ts.map +0 -1
- package/dist/client/shared/ui/StatusIndicator/StatusIndicator.js.map +0 -1
- package/dist/client/shared/ui/StatusIndicator/StatusIndicator.jsx +0 -10
- package/dist/client/shared/ui/StatusIndicator/index.d.ts.map +0 -1
- package/dist/client/shared/ui/StatusIndicator/index.js.map +0 -1
- package/dist/client/shared/ui/Tooltip/Tooltip.d.ts.map +0 -1
- package/dist/client/shared/ui/Tooltip/Tooltip.js.map +0 -1
- package/dist/client/shared/ui/Tooltip/Tooltip.jsx +0 -16
- package/dist/client/shared/ui/Tooltip/index.d.ts.map +0 -1
- package/dist/client/shared/ui/Tooltip/index.js.map +0 -1
- package/dist/client/shared/ui/form/FormCheckbox/FormCheckbox.d.ts.map +0 -1
- package/dist/client/shared/ui/form/FormCheckbox/FormCheckbox.js.map +0 -1
- package/dist/client/shared/ui/form/FormCheckbox/FormCheckbox.jsx +0 -24
- package/dist/client/shared/ui/form/FormCheckbox/index.d.ts.map +0 -1
- package/dist/client/shared/ui/form/FormCheckbox/index.js.map +0 -1
- package/dist/client/shared/ui/form/FormCheckboxPublish/FormCheckboxPublish.d.ts.map +0 -1
- package/dist/client/shared/ui/form/FormCheckboxPublish/FormCheckboxPublish.js.map +0 -1
- package/dist/client/shared/ui/form/FormCheckboxPublish/FormCheckboxPublish.jsx +0 -21
- package/dist/client/shared/ui/form/FormCheckboxPublish/index.d.ts.map +0 -1
- package/dist/client/shared/ui/form/FormCheckboxPublish/index.js.map +0 -1
- package/dist/client/shared/ui/form/FormSelect/FormSelect.d.ts.map +0 -1
- package/dist/client/shared/ui/form/FormSelect/FormSelect.js.map +0 -1
- package/dist/client/shared/ui/form/FormSelect/FormSelect.jsx +0 -44
- package/dist/client/shared/ui/form/FormSelect/index.d.ts.map +0 -1
- package/dist/client/shared/ui/form/FormSelect/index.js.map +0 -1
- package/dist/client/shared/ui/form/FormSelectLocale/FormSelectLocale.d.ts.map +0 -1
- package/dist/client/shared/ui/form/FormSelectLocale/FormSelectLocale.js.map +0 -1
- package/dist/client/shared/ui/form/FormSelectLocale/FormSelectLocale.jsx +0 -6
- package/dist/client/shared/ui/form/FormSelectLocale/index.d.ts.map +0 -1
- package/dist/client/shared/ui/form/FormSelectLocale/index.js.map +0 -1
- package/dist/client/shared/ui/form/FormSelectStrategy/FormSelectStrategy.d.ts.map +0 -1
- package/dist/client/shared/ui/form/FormSelectStrategy/FormSelectStrategy.js.map +0 -1
- package/dist/client/shared/ui/form/FormSelectStrategy/FormSelectStrategy.jsx +0 -25
- package/dist/client/shared/ui/form/FormSelectStrategy/index.d.ts.map +0 -1
- package/dist/client/shared/ui/form/FormSelectStrategy/index.js.map +0 -1
- package/dist/client/shared/utils/componentPath.d.ts.map +0 -1
- package/dist/client/shared/utils/componentPath.js.map +0 -1
- package/dist/client/widgets/bulk-translation-dashboard/index.d.ts.map +0 -1
- package/dist/client/widgets/bulk-translation-dashboard/index.js.map +0 -1
- package/dist/client/widgets/bulk-translation-dashboard/ui/BulkTranslationDashboard.d.ts.map +0 -1
- package/dist/client/widgets/bulk-translation-dashboard/ui/BulkTranslationDashboard.export.d.ts.map +0 -1
- package/dist/client/widgets/bulk-translation-dashboard/ui/BulkTranslationDashboard.export.js.map +0 -1
- package/dist/client/widgets/bulk-translation-dashboard/ui/BulkTranslationDashboard.export.jsx +0 -11
- package/dist/client/widgets/bulk-translation-dashboard/ui/BulkTranslationDashboard.js.map +0 -1
- package/dist/client/widgets/bulk-translation-dashboard/ui/BulkTranslationDashboard.jsx +0 -55
- package/dist/client/widgets/bulk-translation-dashboard/ui/BulkTranslationDashboard.server.d.ts.map +0 -1
- package/dist/client/widgets/bulk-translation-dashboard/ui/BulkTranslationDashboard.server.js.map +0 -1
- package/dist/client/widgets/bulk-translation-dashboard/ui/BulkTranslationDashboard.server.jsx +0 -17
- package/dist/client/widgets/bulk-translation-dashboard/ui/index.d.ts.map +0 -1
- package/dist/client/widgets/bulk-translation-dashboard/ui/index.js.map +0 -1
- package/dist/client/widgets/translate-document/index.d.ts.map +0 -1
- package/dist/client/widgets/translate-document/index.js.map +0 -1
- package/dist/client/widgets/translate-document/ui/TranslateDocument.d.ts.map +0 -1
- package/dist/client/widgets/translate-document/ui/TranslateDocument.export.d.ts.map +0 -1
- package/dist/client/widgets/translate-document/ui/TranslateDocument.export.js.map +0 -1
- package/dist/client/widgets/translate-document/ui/TranslateDocument.js.map +0 -1
- package/dist/client/widgets/translate-document/ui/TranslateDocument.jsx +0 -55
- package/dist/client/widgets/translate-document/ui/TranslateDocument.server.d.ts.map +0 -1
- package/dist/client/widgets/translate-document/ui/TranslateDocument.server.js.map +0 -1
- package/dist/client/widgets/translate-document/ui/TranslateDocument.server.jsx +0 -16
- package/dist/client/widgets/translate-document/ui/index.d.ts.map +0 -1
- package/dist/client/widgets/translate-document/ui/index.js.map +0 -1
- package/dist/field-config.d.ts.map +0 -1
- package/dist/field-config.js.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/plugin.d.ts.map +0 -1
- package/dist/plugin.js.map +0 -1
- package/dist/server/features/_lib/collection-utils.d.ts.map +0 -1
- package/dist/server/features/_lib/collection-utils.js.map +0 -1
- package/dist/server/features/_lib/index.d.ts.map +0 -1
- package/dist/server/features/_lib/index.js.map +0 -1
- package/dist/server/features/cancel/handler.d.ts.map +0 -1
- package/dist/server/features/cancel/handler.js.map +0 -1
- package/dist/server/features/cancel/handler.test.d.ts +0 -2
- package/dist/server/features/cancel/handler.test.d.ts.map +0 -1
- package/dist/server/features/cancel/handler.test.js +0 -63
- package/dist/server/features/cancel/index.d.ts.map +0 -1
- package/dist/server/features/cancel/index.js.map +0 -1
- package/dist/server/features/cancel/model.d.ts.map +0 -1
- package/dist/server/features/cancel/model.js.map +0 -1
- package/dist/server/features/cancel/route.d.ts.map +0 -1
- package/dist/server/features/cancel/route.js.map +0 -1
- package/dist/server/features/cancel-by-collection/handler.d.ts.map +0 -1
- package/dist/server/features/cancel-by-collection/handler.js.map +0 -1
- package/dist/server/features/cancel-by-collection/handler.test.d.ts +0 -2
- package/dist/server/features/cancel-by-collection/handler.test.d.ts.map +0 -1
- package/dist/server/features/cancel-by-collection/handler.test.js +0 -126
- package/dist/server/features/cancel-by-collection/index.d.ts.map +0 -1
- package/dist/server/features/cancel-by-collection/index.js.map +0 -1
- package/dist/server/features/cancel-by-collection/model.d.ts.map +0 -1
- package/dist/server/features/cancel-by-collection/model.js.map +0 -1
- package/dist/server/features/cancel-by-collection/route.d.ts.map +0 -1
- package/dist/server/features/cancel-by-collection/route.js.map +0 -1
- package/dist/server/features/enqueue-translation/handler.d.ts.map +0 -1
- package/dist/server/features/enqueue-translation/handler.js.map +0 -1
- package/dist/server/features/enqueue-translation/handler.test.d.ts +0 -2
- package/dist/server/features/enqueue-translation/handler.test.d.ts.map +0 -1
- package/dist/server/features/enqueue-translation/handler.test.js +0 -115
- package/dist/server/features/enqueue-translation/index.d.ts.map +0 -1
- package/dist/server/features/enqueue-translation/index.js.map +0 -1
- package/dist/server/features/enqueue-translation/model.d.ts.map +0 -1
- package/dist/server/features/enqueue-translation/model.js.map +0 -1
- package/dist/server/features/enqueue-translation/route.d.ts.map +0 -1
- package/dist/server/features/enqueue-translation/route.js.map +0 -1
- package/dist/server/features/get-collection-status/handler.d.ts.map +0 -1
- package/dist/server/features/get-collection-status/handler.js.map +0 -1
- package/dist/server/features/get-collection-status/handler.test.d.ts +0 -2
- package/dist/server/features/get-collection-status/handler.test.d.ts.map +0 -1
- package/dist/server/features/get-collection-status/handler.test.js +0 -108
- package/dist/server/features/get-collection-status/index.d.ts.map +0 -1
- package/dist/server/features/get-collection-status/index.js.map +0 -1
- package/dist/server/features/get-collection-status/model.d.ts.map +0 -1
- package/dist/server/features/get-collection-status/model.js.map +0 -1
- package/dist/server/features/get-collection-status/route.d.ts.map +0 -1
- package/dist/server/features/get-collection-status/route.js.map +0 -1
- package/dist/server/features/get-document-status/handler.d.ts.map +0 -1
- package/dist/server/features/get-document-status/handler.js.map +0 -1
- package/dist/server/features/get-document-status/handler.test.d.ts +0 -2
- package/dist/server/features/get-document-status/handler.test.d.ts.map +0 -1
- package/dist/server/features/get-document-status/handler.test.js +0 -138
- package/dist/server/features/get-document-status/index.d.ts.map +0 -1
- package/dist/server/features/get-document-status/index.js.map +0 -1
- package/dist/server/features/get-document-status/model.d.ts.map +0 -1
- package/dist/server/features/get-document-status/model.js.map +0 -1
- package/dist/server/features/get-document-status/route.d.ts.map +0 -1
- package/dist/server/features/get-document-status/route.js.map +0 -1
- package/dist/server/features/index.d.ts.map +0 -1
- package/dist/server/features/index.js.map +0 -1
- package/dist/server/features/run-translation/handler.d.ts.map +0 -1
- package/dist/server/features/run-translation/handler.js.map +0 -1
- package/dist/server/features/run-translation/handler.test.d.ts +0 -2
- package/dist/server/features/run-translation/handler.test.d.ts.map +0 -1
- package/dist/server/features/run-translation/handler.test.js +0 -98
- package/dist/server/features/run-translation/index.d.ts.map +0 -1
- package/dist/server/features/run-translation/index.js.map +0 -1
- package/dist/server/features/run-translation/model.d.ts.map +0 -1
- package/dist/server/features/run-translation/model.js.map +0 -1
- package/dist/server/features/run-translation/route.d.ts.map +0 -1
- package/dist/server/features/run-translation/route.js.map +0 -1
- package/dist/server/features/translate-document/handler.d.ts.map +0 -1
- package/dist/server/features/translate-document/handler.js.map +0 -1
- package/dist/server/features/translate-document/handler.test.d.ts +0 -2
- package/dist/server/features/translate-document/handler.test.d.ts.map +0 -1
- package/dist/server/features/translate-document/handler.test.js +0 -171
- package/dist/server/features/translate-document/index.d.ts.map +0 -1
- package/dist/server/features/translate-document/index.js.map +0 -1
- package/dist/server/features/translate-document/model.d.ts.map +0 -1
- package/dist/server/features/translate-document/model.js.map +0 -1
- package/dist/server/features/translate-document/task.d.ts.map +0 -1
- package/dist/server/features/translate-document/task.js.map +0 -1
- package/dist/server/index.d.ts.map +0 -1
- package/dist/server/index.js.map +0 -1
- package/dist/server/modules/index.d.ts.map +0 -1
- package/dist/server/modules/index.js.map +0 -1
- package/dist/server/modules/task-runner/TaskRunner.interface.d.ts.map +0 -1
- package/dist/server/modules/task-runner/TaskRunner.interface.js.map +0 -1
- package/dist/server/modules/task-runner/TaskRunnerProvider.interface.d.ts.map +0 -1
- package/dist/server/modules/task-runner/TaskRunnerProvider.interface.js.map +0 -1
- package/dist/server/modules/task-runner/index.d.ts.map +0 -1
- package/dist/server/modules/task-runner/index.js.map +0 -1
- package/dist/server/modules/task-runner/payload-jobs-runner/PayloadJobsRunnerProvider.d.ts.map +0 -1
- package/dist/server/modules/task-runner/payload-jobs-runner/PayloadJobsRunnerProvider.js.map +0 -1
- package/dist/server/modules/task-runner/payload-jobs-runner/PayloadJobsTaskRunner.d.ts.map +0 -1
- package/dist/server/modules/task-runner/payload-jobs-runner/PayloadJobsTaskRunner.js.map +0 -1
- package/dist/server/modules/task-runner/payload-jobs-runner/PayloadJobsTaskRunner.test.d.ts +0 -2
- package/dist/server/modules/task-runner/payload-jobs-runner/PayloadJobsTaskRunner.test.d.ts.map +0 -1
- package/dist/server/modules/task-runner/payload-jobs-runner/PayloadJobsTaskRunner.test.js +0 -188
- package/dist/server/modules/task-runner/payload-jobs-runner/index.d.ts.map +0 -1
- package/dist/server/modules/task-runner/payload-jobs-runner/index.js.map +0 -1
- package/dist/server/modules/task-runner/payload-jobs-runner/normalizeJob.d.ts.map +0 -1
- package/dist/server/modules/task-runner/payload-jobs-runner/normalizeJob.js.map +0 -1
- package/dist/server/modules/task-runner/payload-jobs-runner/normalizeJob.test.d.ts +0 -2
- package/dist/server/modules/task-runner/payload-jobs-runner/normalizeJob.test.d.ts.map +0 -1
- package/dist/server/modules/task-runner/payload-jobs-runner/normalizeJob.test.js +0 -169
- package/dist/server/modules/task-runner/payload-jobs-runner/types.d.ts.map +0 -1
- package/dist/server/modules/task-runner/payload-jobs-runner/types.js.map +0 -1
- package/dist/server/modules/task-runner/sync-runner/SyncRunnerProvider.d.ts.map +0 -1
- package/dist/server/modules/task-runner/sync-runner/SyncRunnerProvider.js.map +0 -1
- package/dist/server/modules/task-runner/sync-runner/SyncTaskRunner.d.ts.map +0 -1
- package/dist/server/modules/task-runner/sync-runner/SyncTaskRunner.js.map +0 -1
- package/dist/server/modules/task-runner/sync-runner/SyncTaskRunner.test.d.ts +0 -2
- package/dist/server/modules/task-runner/sync-runner/SyncTaskRunner.test.d.ts.map +0 -1
- package/dist/server/modules/task-runner/sync-runner/SyncTaskRunner.test.js +0 -148
- package/dist/server/modules/task-runner/sync-runner/index.d.ts.map +0 -1
- package/dist/server/modules/task-runner/sync-runner/index.js.map +0 -1
- package/dist/server/modules/task-runner/sync-runner/types.d.ts.map +0 -1
- package/dist/server/modules/task-runner/sync-runner/types.js.map +0 -1
- package/dist/server/modules/task-runner/types.d.ts.map +0 -1
- package/dist/server/modules/task-runner/types.js.map +0 -1
- package/dist/server/modules/translation-pipeline/TranslationPipeline.d.ts.map +0 -1
- package/dist/server/modules/translation-pipeline/TranslationPipeline.js.map +0 -1
- package/dist/server/modules/translation-pipeline/TranslationPipeline.test.d.ts +0 -2
- package/dist/server/modules/translation-pipeline/TranslationPipeline.test.d.ts.map +0 -1
- package/dist/server/modules/translation-pipeline/TranslationPipeline.test.js +0 -552
- package/dist/server/modules/translation-pipeline/index.d.ts.map +0 -1
- package/dist/server/modules/translation-pipeline/index.js.map +0 -1
- package/dist/server/modules/translation-pipeline/stages/data-reconciler/DataReconciler.d.ts.map +0 -1
- package/dist/server/modules/translation-pipeline/stages/data-reconciler/DataReconciler.js.map +0 -1
- package/dist/server/modules/translation-pipeline/stages/data-reconciler/DataReconciler.stage.d.ts.map +0 -1
- package/dist/server/modules/translation-pipeline/stages/data-reconciler/DataReconciler.stage.js.map +0 -1
- package/dist/server/modules/translation-pipeline/stages/data-reconciler/DataReconciler.test.d.ts +0 -2
- package/dist/server/modules/translation-pipeline/stages/data-reconciler/DataReconciler.test.d.ts.map +0 -1
- package/dist/server/modules/translation-pipeline/stages/data-reconciler/DataReconciler.test.js +0 -294
- package/dist/server/modules/translation-pipeline/stages/data-reconciler/index.d.ts.map +0 -1
- package/dist/server/modules/translation-pipeline/stages/data-reconciler/index.js.map +0 -1
- package/dist/server/modules/translation-pipeline/stages/field-collector/FieldChunkCollector.d.ts.map +0 -1
- package/dist/server/modules/translation-pipeline/stages/field-collector/FieldChunkCollector.js.map +0 -1
- package/dist/server/modules/translation-pipeline/stages/field-collector/FieldChunkCollector.stage.d.ts.map +0 -1
- package/dist/server/modules/translation-pipeline/stages/field-collector/FieldChunkCollector.stage.js.map +0 -1
- package/dist/server/modules/translation-pipeline/stages/field-collector/FieldChunkCollector.test.d.ts +0 -2
- package/dist/server/modules/translation-pipeline/stages/field-collector/FieldChunkCollector.test.d.ts.map +0 -1
- package/dist/server/modules/translation-pipeline/stages/field-collector/FieldChunkCollector.test.js +0 -737
- package/dist/server/modules/translation-pipeline/stages/field-collector/index.d.ts.map +0 -1
- package/dist/server/modules/translation-pipeline/stages/field-collector/index.js.map +0 -1
- package/dist/server/modules/translation-pipeline/stages/index.d.ts.map +0 -1
- package/dist/server/modules/translation-pipeline/stages/index.js.map +0 -1
- package/dist/server/modules/translation-pipeline/stages/text-expander/PlainTextExpander.d.ts.map +0 -1
- package/dist/server/modules/translation-pipeline/stages/text-expander/PlainTextExpander.js.map +0 -1
- package/dist/server/modules/translation-pipeline/stages/text-expander/RichTextExpander.d.ts.map +0 -1
- package/dist/server/modules/translation-pipeline/stages/text-expander/RichTextExpander.js.map +0 -1
- package/dist/server/modules/translation-pipeline/stages/text-expander/TextChunkExpander.d.ts.map +0 -1
- package/dist/server/modules/translation-pipeline/stages/text-expander/TextChunkExpander.js.map +0 -1
- package/dist/server/modules/translation-pipeline/stages/text-expander/TextChunkExpander.stage.d.ts.map +0 -1
- package/dist/server/modules/translation-pipeline/stages/text-expander/TextChunkExpander.stage.js.map +0 -1
- package/dist/server/modules/translation-pipeline/stages/text-expander/TextChunkExpander.test.d.ts +0 -2
- package/dist/server/modules/translation-pipeline/stages/text-expander/TextChunkExpander.test.d.ts.map +0 -1
- package/dist/server/modules/translation-pipeline/stages/text-expander/TextChunkExpander.test.js +0 -396
- package/dist/server/modules/translation-pipeline/stages/text-expander/TextExpander.interface.d.ts.map +0 -1
- package/dist/server/modules/translation-pipeline/stages/text-expander/TextExpander.interface.js.map +0 -1
- package/dist/server/modules/translation-pipeline/stages/text-expander/index.d.ts.map +0 -1
- package/dist/server/modules/translation-pipeline/stages/text-expander/index.js.map +0 -1
- package/dist/server/modules/translation-pipeline/stages/translation/Translation.stage.d.ts.map +0 -1
- package/dist/server/modules/translation-pipeline/stages/translation/Translation.stage.js.map +0 -1
- package/dist/server/modules/translation-pipeline/stages/translation/index.d.ts.map +0 -1
- package/dist/server/modules/translation-pipeline/stages/translation/index.js.map +0 -1
- package/dist/server/modules/translation-pipeline/stages/translation-applicator/TranslationMutator.d.ts.map +0 -1
- package/dist/server/modules/translation-pipeline/stages/translation-applicator/TranslationMutator.js.map +0 -1
- package/dist/server/modules/translation-pipeline/stages/translation-applicator/TranslationMutator.stage.d.ts.map +0 -1
- package/dist/server/modules/translation-pipeline/stages/translation-applicator/TranslationMutator.stage.js.map +0 -1
- package/dist/server/modules/translation-pipeline/stages/translation-applicator/TranslationMutator.test.d.ts +0 -2
- package/dist/server/modules/translation-pipeline/stages/translation-applicator/TranslationMutator.test.d.ts.map +0 -1
- package/dist/server/modules/translation-pipeline/stages/translation-applicator/TranslationMutator.test.js +0 -110
- package/dist/server/modules/translation-pipeline/stages/translation-applicator/index.d.ts.map +0 -1
- package/dist/server/modules/translation-pipeline/stages/translation-applicator/index.js.map +0 -1
- package/dist/server/modules/translation-pipeline/strategies/Overwrite.strategy.d.ts.map +0 -1
- package/dist/server/modules/translation-pipeline/strategies/Overwrite.strategy.js.map +0 -1
- package/dist/server/modules/translation-pipeline/strategies/Overwrite.strategy.test.d.ts +0 -2
- package/dist/server/modules/translation-pipeline/strategies/Overwrite.strategy.test.d.ts.map +0 -1
- package/dist/server/modules/translation-pipeline/strategies/Overwrite.strategy.test.js +0 -36
- package/dist/server/modules/translation-pipeline/strategies/SkipExisting.strategy.d.ts.map +0 -1
- package/dist/server/modules/translation-pipeline/strategies/SkipExisting.strategy.js.map +0 -1
- package/dist/server/modules/translation-pipeline/strategies/SkipExisting.strategy.test.d.ts +0 -2
- package/dist/server/modules/translation-pipeline/strategies/SkipExisting.strategy.test.d.ts.map +0 -1
- package/dist/server/modules/translation-pipeline/strategies/SkipExisting.strategy.test.js +0 -77
- package/dist/server/modules/translation-pipeline/strategies/TranslationStrategy.interface.d.ts.map +0 -1
- package/dist/server/modules/translation-pipeline/strategies/TranslationStrategy.interface.js.map +0 -1
- package/dist/server/modules/translation-pipeline/strategies/index.d.ts.map +0 -1
- package/dist/server/modules/translation-pipeline/strategies/index.js.map +0 -1
- package/dist/server/modules/translation-pipeline/types/FieldChunk.d.ts.map +0 -1
- package/dist/server/modules/translation-pipeline/types/FieldChunk.js.map +0 -1
- package/dist/server/modules/translation-pipeline/types/Pipeline.d.ts.map +0 -1
- package/dist/server/modules/translation-pipeline/types/Pipeline.js.map +0 -1
- package/dist/server/modules/translation-pipeline/types/PipelineContext.d.ts.map +0 -1
- package/dist/server/modules/translation-pipeline/types/PipelineContext.js.map +0 -1
- package/dist/server/modules/translation-pipeline/types/TextChunk.d.ts.map +0 -1
- package/dist/server/modules/translation-pipeline/types/TextChunk.js.map +0 -1
- package/dist/server/modules/translation-pipeline/types/index.d.ts.map +0 -1
- package/dist/server/modules/translation-pipeline/types/index.js.map +0 -1
- package/dist/server/modules/translation-providers/OpenAITranslation.provider.d.ts.map +0 -1
- package/dist/server/modules/translation-providers/OpenAITranslation.provider.js.map +0 -1
- package/dist/server/modules/translation-providers/OpenAITranslation.provider.test.d.ts +0 -2
- package/dist/server/modules/translation-providers/OpenAITranslation.provider.test.d.ts.map +0 -1
- package/dist/server/modules/translation-providers/OpenAITranslation.provider.test.js +0 -214
- package/dist/server/modules/translation-providers/TranslationProvider.interface.d.ts.map +0 -1
- package/dist/server/modules/translation-providers/TranslationProvider.interface.js.map +0 -1
- package/dist/server/modules/translation-providers/index.d.ts.map +0 -1
- package/dist/server/modules/translation-providers/index.js.map +0 -1
- package/dist/server/shared/access/AnyAccessGuard.d.ts.map +0 -1
- package/dist/server/shared/access/AnyAccessGuard.js.map +0 -1
- package/dist/server/shared/access/handler.d.ts.map +0 -1
- package/dist/server/shared/access/handler.js.map +0 -1
- package/dist/server/shared/access/index.d.ts.map +0 -1
- package/dist/server/shared/access/index.js.map +0 -1
- package/dist/server/shared/access/types.d.ts.map +0 -1
- package/dist/server/shared/access/types.js.map +0 -1
- package/dist/server/shared/field-config/getFieldConfig.d.ts.map +0 -1
- package/dist/server/shared/field-config/getFieldConfig.js.map +0 -1
- package/dist/server/shared/field-config/getFieldConfig.test.d.ts +0 -2
- package/dist/server/shared/field-config/getFieldConfig.test.d.ts.map +0 -1
- package/dist/server/shared/field-config/getFieldConfig.test.js +0 -74
- package/dist/server/shared/field-config/index.d.ts.map +0 -1
- package/dist/server/shared/field-config/index.js.map +0 -1
- package/dist/server/shared/field-config/types.d.ts.map +0 -1
- package/dist/server/shared/field-config/types.js.map +0 -1
- package/dist/server/shared/guards/collection-guards.d.ts.map +0 -1
- package/dist/server/shared/guards/collection-guards.js.map +0 -1
- package/dist/server/shared/guards/field-guards.d.ts.map +0 -1
- package/dist/server/shared/guards/field-guards.js.map +0 -1
- package/dist/server/shared/guards/field-guards.test.d.ts +0 -2
- package/dist/server/shared/guards/field-guards.test.d.ts.map +0 -1
- package/dist/server/shared/guards/field-guards.test.js +0 -166
- package/dist/server/shared/guards/index.d.ts.map +0 -1
- package/dist/server/shared/guards/index.js.map +0 -1
- package/dist/server/shared/http/ServerResponse.d.ts.map +0 -1
- package/dist/server/shared/http/ServerResponse.js.map +0 -1
- package/dist/server/shared/http/ServerResponse.test.d.ts +0 -2
- package/dist/server/shared/http/ServerResponse.test.d.ts.map +0 -1
- package/dist/server/shared/http/ServerResponse.test.js +0 -161
- package/dist/server/shared/http/index.d.ts.map +0 -1
- package/dist/server/shared/http/index.js.map +0 -1
- package/dist/server/shared/http/withAccessCheck.d.ts.map +0 -1
- package/dist/server/shared/http/withAccessCheck.js.map +0 -1
- package/dist/server/shared/http/withAccessCheck.test.d.ts +0 -2
- package/dist/server/shared/http/withAccessCheck.test.d.ts.map +0 -1
- package/dist/server/shared/http/withAccessCheck.test.js +0 -46
- package/dist/server/shared/http/withErrorHandler.d.ts.map +0 -1
- package/dist/server/shared/http/withErrorHandler.js.map +0 -1
- package/dist/server/shared/http/withErrorHandler.test.d.ts +0 -2
- package/dist/server/shared/http/withErrorHandler.test.d.ts.map +0 -1
- package/dist/server/shared/http/withErrorHandler.test.js +0 -69
- package/dist/server/shared/index.d.ts.map +0 -1
- package/dist/server/shared/index.js.map +0 -1
- package/dist/server/shared/lexical/collectTextNodes.d.ts.map +0 -1
- package/dist/server/shared/lexical/collectTextNodes.js.map +0 -1
- package/dist/server/shared/lexical/collectTextNodes.test.d.ts +0 -2
- package/dist/server/shared/lexical/collectTextNodes.test.d.ts.map +0 -1
- package/dist/server/shared/lexical/collectTextNodes.test.js +0 -120
- package/dist/server/shared/lexical/guards.d.ts.map +0 -1
- package/dist/server/shared/lexical/guards.js.map +0 -1
- package/dist/server/shared/lexical/guards.test.d.ts +0 -2
- package/dist/server/shared/lexical/guards.test.d.ts.map +0 -1
- package/dist/server/shared/lexical/guards.test.js +0 -160
- package/dist/server/shared/lexical/index.d.ts.map +0 -1
- package/dist/server/shared/lexical/index.js.map +0 -1
- package/dist/server/shared/lexical/isEmptyRichText.d.ts.map +0 -1
- package/dist/server/shared/lexical/isEmptyRichText.js.map +0 -1
- package/dist/server/shared/lexical/isEmptyRichText.test.d.ts +0 -2
- package/dist/server/shared/lexical/isEmptyRichText.test.d.ts.map +0 -1
- package/dist/server/shared/lexical/isEmptyRichText.test.js +0 -251
- package/dist/server/shared/lexical/traverseLexicalTree.d.ts.map +0 -1
- package/dist/server/shared/lexical/traverseLexicalTree.js.map +0 -1
- package/dist/server/shared/lexical/traverseLexicalTree.test.d.ts +0 -2
- package/dist/server/shared/lexical/traverseLexicalTree.test.d.ts.map +0 -1
- package/dist/server/shared/lexical/traverseLexicalTree.test.js +0 -112
- package/dist/server/shared/lexical/types.d.ts.map +0 -1
- package/dist/server/shared/lexical/types.js.map +0 -1
- package/dist/server/shared/utils/LazyMap.d.ts.map +0 -1
- package/dist/server/shared/utils/LazyMap.js.map +0 -1
- package/dist/server/shared/utils/LazyMap.test.d.ts +0 -2
- package/dist/server/shared/utils/LazyMap.test.d.ts.map +0 -1
- package/dist/server/shared/utils/LazyMap.test.js +0 -262
- package/dist/server/shared/utils/filterLocalizedFields.d.ts.map +0 -1
- package/dist/server/shared/utils/filterLocalizedFields.js.map +0 -1
- package/dist/server/shared/utils/filterLocalizedFields.test.d.ts +0 -2
- package/dist/server/shared/utils/filterLocalizedFields.test.d.ts.map +0 -1
- package/dist/server/shared/utils/filterLocalizedFields.test.js +0 -338
- package/dist/server/shared/utils/getByPath.d.ts.map +0 -1
- package/dist/server/shared/utils/getByPath.js.map +0 -1
- package/dist/server/shared/utils/getByPath.test.d.ts +0 -2
- package/dist/server/shared/utils/getByPath.test.d.ts.map +0 -1
- package/dist/server/shared/utils/getByPath.test.js +0 -33
- package/dist/server/shared/utils/index.d.ts.map +0 -1
- package/dist/server/shared/utils/index.js.map +0 -1
- package/dist/server/shared/utils/isEmpty.d.ts.map +0 -1
- package/dist/server/shared/utils/isEmpty.js.map +0 -1
- package/dist/server/shared/utils/isEmpty.test.d.ts +0 -2
- package/dist/server/shared/utils/isEmpty.test.d.ts.map +0 -1
- package/dist/server/shared/utils/isEmpty.test.js +0 -60
- package/dist/server/shared/utils/isObject.d.ts.map +0 -1
- package/dist/server/shared/utils/isObject.js.map +0 -1
- package/dist/server/shared/utils/isObject.test.d.ts +0 -2
- package/dist/server/shared/utils/isObject.test.d.ts.map +0 -1
- package/dist/server/shared/utils/isObject.test.js +0 -57
- package/dist/server/shared/utils/normalizePath.d.ts.map +0 -1
- package/dist/server/shared/utils/normalizePath.js.map +0 -1
- package/dist/server/shared/utils/normalizePath.test.d.ts +0 -2
- package/dist/server/shared/utils/normalizePath.test.d.ts.map +0 -1
- package/dist/server/shared/utils/normalizePath.test.js +0 -33
- package/dist/server/shared/utils/pipe.d.ts.map +0 -1
- package/dist/server/shared/utils/pipe.js.map +0 -1
- package/dist/server/shared/utils/pipe.test.d.ts +0 -2
- package/dist/server/shared/utils/pipe.test.d.ts.map +0 -1
- package/dist/server/shared/utils/pipe.test.js +0 -55
- package/dist/server/shared/utils/setByPath.d.ts.map +0 -1
- package/dist/server/shared/utils/setByPath.js.map +0 -1
- package/dist/server/shared/utils/setByPath.test.d.ts +0 -2
- package/dist/server/shared/utils/setByPath.test.d.ts.map +0 -1
- package/dist/server/shared/utils/setByPath.test.js +0 -46
- package/dist/types/AccessGuard.d.ts.map +0 -1
- package/dist/types/AccessGuard.js.map +0 -1
- package/dist/types/index.d.ts.map +0 -1
- package/dist/types/index.js.map +0 -1
- package/dist/vitest-env.d.js.map +0 -1
|
@@ -1,55 +0,0 @@
|
|
|
1
|
-
'use client';
|
|
2
|
-
import { toast, useLocale } from '@payloadcms/ui';
|
|
3
|
-
import { useEffect, useMemo } from 'react';
|
|
4
|
-
import { CompletedTranslationStatus, TranslationsApi } from '../../../entities/translation';
|
|
5
|
-
import { OpenDocumentTranslationPopup } from '../../../features/open-document-translation-popup';
|
|
6
|
-
import { DocumentTranslationForm, FORM_FIELDS } from '../../../features/translate-document-form';
|
|
7
|
-
import { DocumentTranslationFormModel } from '../../../features/translate-document-form/index.client';
|
|
8
|
-
import { handleFormError } from '../../../shared/lib/forms/handle-form-error';
|
|
9
|
-
import { useCollectionDocumentUrlParams } from '../../../shared/lib/payload/hooks/useCollectionDocumentUrlParams';
|
|
10
|
-
import { DocumentTranslationProgressFailed } from '../../../features/document-translation-progress-failed';
|
|
11
|
-
import { DocumentTranslationProgressRunning } from '../../../features/document-translation-progress-running';
|
|
12
|
-
import { DocumentTranslationProgressPending } from '../../../features/document-translation-progress-pending';
|
|
13
|
-
const TranslateDocument = ({ hasDrafts }) => {
|
|
14
|
-
const locale = useLocale();
|
|
15
|
-
const params = useCollectionDocumentUrlParams();
|
|
16
|
-
const queueTranslationApi = TranslationsApi.useQueueDocumentTranslation();
|
|
17
|
-
const { data, error, isLoading } = TranslationsApi.useDocumentTranslation(params);
|
|
18
|
-
useEffect(() => {
|
|
19
|
-
if (error) {
|
|
20
|
-
toast.error(error.message);
|
|
21
|
-
}
|
|
22
|
-
}, [error]);
|
|
23
|
-
const initialValues = useMemo(() => ({
|
|
24
|
-
[FORM_FIELDS.SOURCE_LNG]: locale.code,
|
|
25
|
-
[FORM_FIELDS.HIDDEN_COLLECTION_SLUG]: params.collection,
|
|
26
|
-
[FORM_FIELDS.HIDDEN_COLLECTION_ID]: params.id,
|
|
27
|
-
}), [locale.code, params.collection, params.id]);
|
|
28
|
-
const { form } = DocumentTranslationFormModel.useForm({ initialValues });
|
|
29
|
-
const handleSubmit = async (formData, onSuccess) => {
|
|
30
|
-
try {
|
|
31
|
-
await queueTranslationApi.mutateAsync({
|
|
32
|
-
...formData,
|
|
33
|
-
collection_id: [formData[FORM_FIELDS.HIDDEN_COLLECTION_ID]],
|
|
34
|
-
});
|
|
35
|
-
onSuccess?.();
|
|
36
|
-
}
|
|
37
|
-
catch (e) {
|
|
38
|
-
handleFormError(e, form);
|
|
39
|
-
}
|
|
40
|
-
};
|
|
41
|
-
return (<>
|
|
42
|
-
<OpenDocumentTranslationPopup isLoading={isLoading}>
|
|
43
|
-
{({ close }) => (<>
|
|
44
|
-
<h4>Document Translation</h4>
|
|
45
|
-
<DocumentTranslationForm form={form} onSubmit={(data) => handleSubmit(data, close)} hasDrafts={hasDrafts}/>
|
|
46
|
-
</>)}
|
|
47
|
-
</OpenDocumentTranslationPopup>
|
|
48
|
-
|
|
49
|
-
{data?.status === 'completed' && (<CompletedTranslationStatus sourceLocale={data.input.source_lng} targetLocale={data.input.target_lng} completed_at={data.completed_at}/>)}
|
|
50
|
-
{data?.status === 'failed' && <DocumentTranslationProgressFailed data={data}/>}
|
|
51
|
-
{data?.status === 'running' && <DocumentTranslationProgressRunning data={data}/>}
|
|
52
|
-
{data?.status === 'pending' && <DocumentTranslationProgressPending data={data}/>}
|
|
53
|
-
</>);
|
|
54
|
-
};
|
|
55
|
-
export default TranslateDocument;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"TranslateDocument.server.d.ts","sourceRoot":"","sources":["../../../../../src/client/widgets/translate-document/ui/TranslateDocument.server.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iCAAiC,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAA;AAElF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAA;AAKhE,KAAK,4BAA4B,GAAG,iCAAiC,GAAG;IACtE,UAAU,EAAE,gBAAgB,CAAA;IAC5B,MAAM,EAAE,WAAW,CAAA;CACpB,CAAA;AAED,iBAAe,uBAAuB,CAAC,KAAK,EAAE,4BAA4B,+CAYzE;AAED,eAAe,uBAAuB,CAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../src/client/widgets/translate-document/ui/TranslateDocument.server.tsx"],"sourcesContent":["import { headers as getHeaders } from 'next/headers'\nimport type { BeforeDocumentControlsServerProps, CollectionConfig } from 'payload'\n\nimport type { AccessGuard } from '../../../../types/AccessGuard'\nimport { collectionHasDrafts } from '../../../../server/shared/guards'\n\nimport TranslateDocument from './TranslateDocument'\n\ntype TranslateDocumentServerProps = BeforeDocumentControlsServerProps & {\n collection: CollectionConfig\n access: AccessGuard\n}\n\nasync function TranslateDocumentServer(props: TranslateDocumentServerProps) {\n const headers = await getHeaders()\n const hasAccess = await props.access.check({\n req: { user: props.user, headers, payload: props.payload },\n })\n\n if (!hasAccess) return null\n if (!props.id) return null\n\n const hasDrafts = collectionHasDrafts(props.collection)\n\n return <TranslateDocument hasDrafts={hasDrafts} />\n}\n\nexport default TranslateDocumentServer\n"],"names":["headers","getHeaders","collectionHasDrafts","TranslateDocument","TranslateDocumentServer","props","hasAccess","access","check","req","user","payload","id","hasDrafts","collection"],"mappings":";AAAA,SAASA,WAAWC,UAAU,QAAQ,eAAc;AAIpD,SAASC,mBAAmB,QAAQ,mCAAkC;AAEtE,OAAOC,uBAAuB,sBAAqB;AAOnD,eAAeC,wBAAwBC,KAAmC;IACxE,MAAML,UAAU,MAAMC;IACtB,MAAMK,YAAY,MAAMD,MAAME,MAAM,CAACC,KAAK,CAAC;QACzCC,KAAK;YAAEC,MAAML,MAAMK,IAAI;YAAEV;YAASW,SAASN,MAAMM,OAAO;QAAC;IAC3D;IAEA,IAAI,CAACL,WAAW,OAAO;IACvB,IAAI,CAACD,MAAMO,EAAE,EAAE,OAAO;IAEtB,MAAMC,YAAYX,oBAAoBG,MAAMS,UAAU;IAEtD,qBAAO,KAACX;QAAkBU,WAAWA;;AACvC;AAEA,eAAeT,wBAAuB"}
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import { headers as getHeaders } from 'next/headers';
|
|
2
|
-
import { collectionHasDrafts } from '../../../../server/shared/guards';
|
|
3
|
-
import TranslateDocument from './TranslateDocument';
|
|
4
|
-
async function TranslateDocumentServer(props) {
|
|
5
|
-
const headers = await getHeaders();
|
|
6
|
-
const hasAccess = await props.access.check({
|
|
7
|
-
req: { user: props.user, headers, payload: props.payload },
|
|
8
|
-
});
|
|
9
|
-
if (!hasAccess)
|
|
10
|
-
return null;
|
|
11
|
-
if (!props.id)
|
|
12
|
-
return null;
|
|
13
|
-
const hasDrafts = collectionHasDrafts(props.collection);
|
|
14
|
-
return <TranslateDocument hasDrafts={hasDrafts}/>;
|
|
15
|
-
}
|
|
16
|
-
export default TranslateDocumentServer;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/client/widgets/translate-document/ui/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../src/client/widgets/translate-document/ui/index.ts"],"sourcesContent":["export { default } from './TranslateDocument'\n"],"names":["default"],"mappings":"AAAA,SAASA,OAAO,QAAQ,sBAAqB"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"field-config.d.ts","sourceRoot":"","sources":["../src/field-config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AAEpC,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,8BAA8B,CAAA;AAG1E,YAAY,EAAE,sBAAsB,EAAE,CAAA;AAEtC;;GAEG;AACH,YAAY,EAAE,sBAAsB,IAAI,uBAAuB,EAAE,CAAA;AAEjE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,wBAAgB,oBAAoB,CAAC,CAAC,SAAS,KAAK,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,sBAAsB,GAAG,CAAC,CAQjG;AAED;;GAEG;AACH,eAAO,MAAM,iBAAiB,6BAAuB,CAAA"}
|
package/dist/field-config.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/field-config.ts"],"sourcesContent":["import type { Field } from 'payload'\n\nimport type { FieldTranslationConfig } from './server/shared/field-config'\nimport { TRANSLATE_KIT_CUSTOM_KEY } from './server/shared/field-config'\n\nexport type { FieldTranslationConfig }\n\n/**\n * @deprecated Use `FieldTranslationConfig` instead\n */\nexport type { FieldTranslationConfig as TranslateKitFieldConfig }\n\n/**\n * Apply translation configuration to a Payload field.\n *\n * Use this helper to configure how fields should be handled during translation.\n *\n * @param field - The Payload field to configure\n * @param config - Translation configuration options\n * @returns The field with translation configuration applied\n *\n * @example\n * ```ts\n * import { withFieldTranslation } from '@focus-reactive/payload-plugin-translator'\n *\n * // Exclude a field from translation\n * withFieldTranslation(\n * { name: 'sku', type: 'text', localized: true },\n * { exclude: true }\n * )\n * ```\n *\n * @example\n * ```ts\n * // In a collection definition\n * const Products: CollectionConfig = {\n * slug: 'products',\n * fields: [\n * { name: 'title', type: 'text', localized: true },\n * withFieldTranslation(\n * { name: 'sku', type: 'text', localized: true },\n * { exclude: true }\n * ),\n * ],\n * }\n * ```\n */\nexport function withFieldTranslation<T extends Field>(field: T, config: FieldTranslationConfig): T {\n return {\n ...field,\n custom: {\n ...(field.custom ?? {}),\n [TRANSLATE_KIT_CUSTOM_KEY]: config,\n },\n }\n}\n\n/**\n * @deprecated Use `withFieldTranslation` instead\n */\nexport const translateKitField = withFieldTranslation\n"],"names":["TRANSLATE_KIT_CUSTOM_KEY","withFieldTranslation","field","config","custom","translateKitField"],"mappings":"AAGA,SAASA,wBAAwB,QAAQ,+BAA8B;AASvE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAkCC,GACD,OAAO,SAASC,qBAAsCC,KAAQ,EAAEC,MAA8B;IAC5F,OAAO;QACL,GAAGD,KAAK;QACRE,QAAQ;YACN,GAAIF,MAAME,MAAM,IAAI,CAAC,CAAC;YACtB,CAACJ,yBAAyB,EAAEG;QAC9B;IACF;AACF;AAEA;;CAEC,GACD,OAAO,MAAME,oBAAoBJ,qBAAoB"}
|
package/dist/index.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAA;AAC3C,YAAY,EAAE,sBAAsB,EAAE,MAAM,UAAU,CAAA;AAGtD,YAAY,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAA;AAG1E,OAAO,EAAE,oBAAoB,EAAE,MAAM,wCAAwC,CAAA;AAC7E,YAAY,EACV,mBAAmB,EACnB,gBAAgB,EAChB,iBAAiB,EACjB,oBAAoB,EACpB,YAAY,GACb,MAAM,wCAAwC,CAAA;AAG/C,OAAO,EAAE,uBAAuB,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAA;AACxF,YAAY,EAAE,kBAAkB,EAAE,wBAAwB,EAAE,MAAM,8BAA8B,CAAA;AAGhG,OAAO,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAA;AACrD,YAAY,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAA;AAG5D,OAAO,EAAE,qBAAqB,EAAE,yBAAyB,EAAE,MAAM,UAAU,CAAA;AAC3E,YAAY,EAAE,+BAA+B,EAAE,MAAM,UAAU,CAAA;AAC/D,OAAO,EAAE,yBAAyB,EAAE,MAAM,wCAAwC,CAAA;AAClF,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAA;AAClD,YAAY,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAA"}
|
package/dist/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts"],"sourcesContent":["// Main plugin\nexport { translatorPlugin } from './plugin'\nexport type { TranslatorPluginConfig } from './plugin'\n\n// Access control\nexport type { AccessGuard, AccessGuardRequest } from './types/AccessGuard'\n\n// Translation providers\nexport { createOpenAIProvider } from './server/modules/translation-providers'\nexport type {\n TranslationProvider,\n TranslationInput,\n TranslationOutput,\n OpenAIProviderConfig,\n DryRunConfig,\n} from './server/modules/translation-providers'\n\n// Task runners\nexport { createPayloadJobsRunner, createSyncRunner } from './server/modules/task-runner'\nexport type { TaskRunnerProvider, PayloadJobsRunnerOptions } from './server/modules/task-runner'\n\n// Field config\nexport { withFieldTranslation } from './field-config'\nexport type { FieldTranslationConfig } from './field-config'\n\n// Deprecated exports (for backwards compatibility)\nexport { createTranslatePlugin, TranslateCollectionPlugin } from './plugin'\nexport type { TranslateCollectionPluginConfig } from './plugin'\nexport { OpenAITranslationProvider } from './server/modules/translation-providers'\nexport { translateKitField } from './field-config'\nexport type { TranslateKitFieldConfig } from './field-config'\n"],"names":["translatorPlugin","createOpenAIProvider","createPayloadJobsRunner","createSyncRunner","withFieldTranslation","createTranslatePlugin","TranslateCollectionPlugin","OpenAITranslationProvider","translateKitField"],"mappings":"AAAA,cAAc;AACd,SAASA,gBAAgB,QAAQ,WAAU;AAM3C,wBAAwB;AACxB,SAASC,oBAAoB,QAAQ,yCAAwC;AAS7E,eAAe;AACf,SAASC,uBAAuB,EAAEC,gBAAgB,QAAQ,+BAA8B;AAGxF,eAAe;AACf,SAASC,oBAAoB,QAAQ,iBAAgB;AAGrD,mDAAmD;AACnD,SAASC,qBAAqB,EAAEC,yBAAyB,QAAQ,WAAU;AAE3E,SAASC,yBAAyB,QAAQ,yCAAwC;AAClF,SAASC,iBAAiB,QAAQ,iBAAgB"}
|
package/dist/plugin.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,EAAE,MAAM,SAAS,CAAA;AAKvD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA;AACtD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,wCAAwC,CAAA;AACjF,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAA;AAUtE,MAAM,MAAM,sBAAsB,GAAG;IACnC;;;;OAIG;IACH,WAAW,EAAE,gBAAgB,EAAE,CAAA;IAC/B;;;OAGG;IACH,mBAAmB,EAAE,mBAAmB,CAAA;IACxC;;;OAGG;IACH,MAAM,EAAE,kBAAkB,CAAA;IAC1B;;;;OAIG;IACH,MAAM,CAAC,EAAE,WAAW,CAAA;IACpB;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB,CAAA;AAED,uDAAuD;AACvD,MAAM,MAAM,+BAA+B,GAAG,sBAAsB,CAAA;AAEpE,0DAA0D;AAC1D,qBAAa,yBAAyB;IACxB,OAAO,CAAC,QAAQ,CAAC,YAAY;gBAAZ,YAAY,EAAE,sBAAsB;IAEjE,IAAI,IAAI,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC;CAqF5C;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,sBAAsB,GAAG,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAEpG;AAED,iDAAiD;AACjD,eAAO,MAAM,qBAAqB,yBAAmB,CAAA"}
|
package/dist/plugin.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/plugin.ts"],"sourcesContent":["import type { CollectionConfig, Config } from 'payload'\n\nimport { CacheProviderExport } from './client/app/cache/CacheProvider.export'\nimport { BulkDocumentTranslationDashboard } from './client/widgets/bulk-translation-dashboard/ui/BulkTranslationDashboard.export'\nimport { TranslateDocumentExport } from './client/widgets/translate-document'\nimport type { AccessGuard } from './types/AccessGuard'\nimport type { TranslationProvider } from './server/modules/translation-providers'\nimport type { TaskRunnerProvider } from './server/modules/task-runner'\nimport { TranslateDocumentHandler } from './server/features/translate-document'\nimport { createEnqueueRoute } from './server/features/enqueue-translation'\nimport { createRunRoute } from './server/features/run-translation'\nimport { createCancelRoute } from './server/features/cancel'\nimport { createCancelByCollectionRoute } from './server/features/cancel-by-collection'\nimport { createGetDocumentStatusRoute } from './server/features/get-document-status'\nimport { createGetCollectionStatusRoute } from './server/features/get-collection-status'\nimport { normalizePath, pipe } from './server/shared'\n\nexport type TranslatorPluginConfig = {\n /**\n * Original collection configs (same objects passed to buildConfig).\n * IMPORTANT: Must be the original collection objects, NOT sanitized configs from payload.collections.\n * Original schemas preserve `localized: true` on nested fields.\n */\n collections: CollectionConfig[]\n /**\n * Translation provider implementation (e.g., OpenAI, DeepL).\n * Handles the actual text translation.\n */\n translationProvider: TranslationProvider\n /**\n * Task runner backend for background task execution.\n * Use createPayloadJobsRunner() for Payload Jobs integration.\n */\n runner: TaskRunnerProvider\n /**\n * Access guard for translation endpoints.\n * Controls who can trigger translations via API.\n * @default undefined (no access restrictions)\n */\n access?: AccessGuard\n /**\n * Base path for all translation API endpoints.\n * Useful to avoid conflicts with existing routes.\n * @example '/my-translate' results in '/my-translate/enqueue', '/my-translate/run/:id', etc.\n * @default '/translate'\n */\n basePath?: string\n}\n\n/** @deprecated Use `TranslatorPluginConfig` instead */\nexport type TranslateCollectionPluginConfig = TranslatorPluginConfig\n\n/** @deprecated Use `translatorPlugin` function instead */\nexport class TranslateCollectionPlugin {\n constructor(private readonly pluginConfig: TranslatorPluginConfig) {}\n\n init(): (config: Config) => Promise<Config> {\n return async (config) => {\n const { access, translationProvider, basePath: rawBasePath = '/translate' } = this.pluginConfig\n\n // Build schema map from deep-cloned collections\n // Deep clone is required because Payload mutates the original collection objects,\n // removing `localized: true` from nested fields during sanitization\n const schemaMap = new Map(this.pluginConfig.collections.map((col) => [col.slug, structuredClone(col.fields)]))\n const collectionSlugs = new Set(schemaMap.keys())\n const basePath = normalizePath(rawBasePath)\n const translateHandler = new TranslateDocumentHandler(translationProvider, schemaMap)\n\n // Configure runner with handler callback\n const runnerConfigModifier = this.pluginConfig.runner.configure({\n handler: async (payload, input) => {\n await translateHandler.handle(payload, {\n collection: input.collection,\n collectionId: input.collectionId,\n sourceLng: input.sourceLng,\n targetLng: input.targetLng,\n strategy: input.strategy,\n publishOnTranslation: input.publishOnTranslation,\n })\n },\n collections: Array.from(collectionSlugs),\n })\n\n return pipe<Config>(\n // 1. Set up UI component provider import\n (cfg) => {\n if (!cfg.admin) cfg.admin = {}\n if (!cfg.admin.components) cfg.admin.components = {}\n if (!cfg.admin.components.providers) cfg.admin.components.providers = []\n\n cfg.admin.components.providers.push(new CacheProviderExport(basePath))\n return cfg\n },\n\n // 2. Set up UI component import\n (cfg) => {\n cfg.collections?.forEach((collection) => {\n if (!collectionSlugs.has(collection.slug)) {\n return\n }\n\n if (!collection.admin) collection.admin = {}\n if (!collection.admin.components) collection.admin.components = {}\n if (!collection.admin.components.edit) collection.admin.components.edit = {}\n if (!collection.admin.components.edit.beforeDocumentControls) {\n collection.admin.components.edit.beforeDocumentControls = []\n }\n if (!collection.admin.components.beforeListTable) {\n collection.admin.components.beforeListTable = []\n }\n\n collection.admin.components.edit.beforeDocumentControls.push(\n new TranslateDocumentExport(collection, access),\n )\n collection.admin.components.beforeListTable.push(new BulkDocumentTranslationDashboard(access))\n })\n return cfg\n },\n\n // 3. Runner configures jobs/tasks/autorun\n runnerConfigModifier,\n\n // 4. Add global endpoints\n (cfg) => {\n if (!cfg.endpoints) cfg.endpoints = []\n const collectionConfig = { availableCollections: collectionSlugs }\n cfg.endpoints.push(\n ...[\n createEnqueueRoute(this.pluginConfig.runner, collectionConfig, access, basePath),\n createRunRoute(this.pluginConfig.runner, access, basePath),\n createCancelRoute(this.pluginConfig.runner, access, basePath),\n createCancelByCollectionRoute(collectionConfig, this.pluginConfig.runner, access, basePath),\n createGetDocumentStatusRoute(collectionConfig, this.pluginConfig.runner, access, basePath),\n createGetCollectionStatusRoute(collectionConfig, this.pluginConfig.runner, access, basePath),\n ],\n )\n return cfg\n },\n )(config)\n }\n }\n}\n\n/**\n * Creates a translation plugin for Payload CMS collections.\n *\n * @example\n * ```ts\n * export default buildConfig({\n * plugins: [\n * translatorPlugin({\n * collections: [Posts, Pages],\n * translationProvider: createOpenAIProvider({ apiKey: process.env.OPENAI_API_KEY }),\n * runner: createPayloadJobsRunner(),\n * }),\n * ],\n * })\n * ```\n */\nexport function translatorPlugin(config: TranslatorPluginConfig): (config: Config) => Promise<Config> {\n return new TranslateCollectionPlugin(config).init()\n}\n\n/** @deprecated Use `translatorPlugin` instead */\nexport const createTranslatePlugin = translatorPlugin\n"],"names":["CacheProviderExport","BulkDocumentTranslationDashboard","TranslateDocumentExport","TranslateDocumentHandler","createEnqueueRoute","createRunRoute","createCancelRoute","createCancelByCollectionRoute","createGetDocumentStatusRoute","createGetCollectionStatusRoute","normalizePath","pipe","TranslateCollectionPlugin","pluginConfig","init","config","access","translationProvider","basePath","rawBasePath","schemaMap","Map","collections","map","col","slug","structuredClone","fields","collectionSlugs","Set","keys","translateHandler","runnerConfigModifier","runner","configure","handler","payload","input","handle","collection","collectionId","sourceLng","targetLng","strategy","publishOnTranslation","Array","from","cfg","admin","components","providers","push","forEach","has","edit","beforeDocumentControls","beforeListTable","endpoints","collectionConfig","availableCollections","translatorPlugin","createTranslatePlugin"],"mappings":"AAEA,SAASA,mBAAmB,QAAQ,0CAAyC;AAC7E,SAASC,gCAAgC,QAAQ,iFAAgF;AACjI,SAASC,uBAAuB,QAAQ,sCAAqC;AAI7E,SAASC,wBAAwB,QAAQ,uCAAsC;AAC/E,SAASC,kBAAkB,QAAQ,wCAAuC;AAC1E,SAASC,cAAc,QAAQ,oCAAmC;AAClE,SAASC,iBAAiB,QAAQ,2BAA0B;AAC5D,SAASC,6BAA6B,QAAQ,yCAAwC;AACtF,SAASC,4BAA4B,QAAQ,wCAAuC;AACpF,SAASC,8BAA8B,QAAQ,0CAAyC;AACxF,SAASC,aAAa,EAAEC,IAAI,QAAQ,kBAAiB;AAqCrD,wDAAwD,GACxD,OAAO,MAAMC;;IACX,YAAY,AAAiBC,YAAoC,CAAE;aAAtCA,eAAAA;IAAuC;IAEpEC,OAA4C;QAC1C,OAAO,OAAOC;YACZ,MAAM,EAAEC,MAAM,EAAEC,mBAAmB,EAAEC,UAAUC,cAAc,YAAY,EAAE,GAAG,IAAI,CAACN,YAAY;YAE/F,gDAAgD;YAChD,kFAAkF;YAClF,oEAAoE;YACpE,MAAMO,YAAY,IAAIC,IAAI,IAAI,CAACR,YAAY,CAACS,WAAW,CAACC,GAAG,CAAC,CAACC,MAAQ;oBAACA,IAAIC,IAAI;oBAAEC,gBAAgBF,IAAIG,MAAM;iBAAE;YAC5G,MAAMC,kBAAkB,IAAIC,IAAIT,UAAUU,IAAI;YAC9C,MAAMZ,WAAWR,cAAcS;YAC/B,MAAMY,mBAAmB,IAAI5B,yBAAyBc,qBAAqBG;YAE3E,yCAAyC;YACzC,MAAMY,uBAAuB,IAAI,CAACnB,YAAY,CAACoB,MAAM,CAACC,SAAS,CAAC;gBAC9DC,SAAS,OAAOC,SAASC;oBACvB,MAAMN,iBAAiBO,MAAM,CAACF,SAAS;wBACrCG,YAAYF,MAAME,UAAU;wBAC5BC,cAAcH,MAAMG,YAAY;wBAChCC,WAAWJ,MAAMI,SAAS;wBAC1BC,WAAWL,MAAMK,SAAS;wBAC1BC,UAAUN,MAAMM,QAAQ;wBACxBC,sBAAsBP,MAAMO,oBAAoB;oBAClD;gBACF;gBACAtB,aAAauB,MAAMC,IAAI,CAAClB;YAC1B;YAEA,OAAOjB,KACL,yCAAyC;YACzC,CAACoC;gBACC,IAAI,CAACA,IAAIC,KAAK,EAAED,IAAIC,KAAK,GAAG,CAAC;gBAC7B,IAAI,CAACD,IAAIC,KAAK,CAACC,UAAU,EAAEF,IAAIC,KAAK,CAACC,UAAU,GAAG,CAAC;gBACnD,IAAI,CAACF,IAAIC,KAAK,CAACC,UAAU,CAACC,SAAS,EAAEH,IAAIC,KAAK,CAACC,UAAU,CAACC,SAAS,GAAG,EAAE;gBAExEH,IAAIC,KAAK,CAACC,UAAU,CAACC,SAAS,CAACC,IAAI,CAAC,IAAInD,oBAAoBkB;gBAC5D,OAAO6B;YACT,GAEA,gCAAgC;YAChC,CAACA;gBACCA,IAAIzB,WAAW,EAAE8B,QAAQ,CAACb;oBACxB,IAAI,CAACX,gBAAgByB,GAAG,CAACd,WAAWd,IAAI,GAAG;wBACzC;oBACF;oBAEA,IAAI,CAACc,WAAWS,KAAK,EAAET,WAAWS,KAAK,GAAG,CAAC;oBAC3C,IAAI,CAACT,WAAWS,KAAK,CAACC,UAAU,EAAEV,WAAWS,KAAK,CAACC,UAAU,GAAG,CAAC;oBACjE,IAAI,CAACV,WAAWS,KAAK,CAACC,UAAU,CAACK,IAAI,EAAEf,WAAWS,KAAK,CAACC,UAAU,CAACK,IAAI,GAAG,CAAC;oBAC3E,IAAI,CAACf,WAAWS,KAAK,CAACC,UAAU,CAACK,IAAI,CAACC,sBAAsB,EAAE;wBAC5DhB,WAAWS,KAAK,CAACC,UAAU,CAACK,IAAI,CAACC,sBAAsB,GAAG,EAAE;oBAC9D;oBACA,IAAI,CAAChB,WAAWS,KAAK,CAACC,UAAU,CAACO,eAAe,EAAE;wBAChDjB,WAAWS,KAAK,CAACC,UAAU,CAACO,eAAe,GAAG,EAAE;oBAClD;oBAEAjB,WAAWS,KAAK,CAACC,UAAU,CAACK,IAAI,CAACC,sBAAsB,CAACJ,IAAI,CAC1D,IAAIjD,wBAAwBqC,YAAYvB;oBAE1CuB,WAAWS,KAAK,CAACC,UAAU,CAACO,eAAe,CAACL,IAAI,CAAC,IAAIlD,iCAAiCe;gBACxF;gBACA,OAAO+B;YACT,GAEA,0CAA0C;YAC1Cf,sBAEA,0BAA0B;YAC1B,CAACe;gBACC,IAAI,CAACA,IAAIU,SAAS,EAAEV,IAAIU,SAAS,GAAG,EAAE;gBACtC,MAAMC,mBAAmB;oBAAEC,sBAAsB/B;gBAAgB;gBACjEmB,IAAIU,SAAS,CAACN,IAAI,IACb;oBACD/C,mBAAmB,IAAI,CAACS,YAAY,CAACoB,MAAM,EAAEyB,kBAAkB1C,QAAQE;oBACvEb,eAAe,IAAI,CAACQ,YAAY,CAACoB,MAAM,EAAEjB,QAAQE;oBACjDZ,kBAAkB,IAAI,CAACO,YAAY,CAACoB,MAAM,EAAEjB,QAAQE;oBACpDX,8BAA8BmD,kBAAkB,IAAI,CAAC7C,YAAY,CAACoB,MAAM,EAAEjB,QAAQE;oBAClFV,6BAA6BkD,kBAAkB,IAAI,CAAC7C,YAAY,CAACoB,MAAM,EAAEjB,QAAQE;oBACjFT,+BAA+BiD,kBAAkB,IAAI,CAAC7C,YAAY,CAACoB,MAAM,EAAEjB,QAAQE;iBACpF;gBAEH,OAAO6B;YACT,GACAhC;QACJ;IACF;AACF;AAEA;;;;;;;;;;;;;;;CAeC,GACD,OAAO,SAAS6C,iBAAiB7C,MAA8B;IAC7D,OAAO,IAAIH,0BAA0BG,QAAQD,IAAI;AACnD;AAEA,+CAA+C,GAC/C,OAAO,MAAM+C,wBAAwBD,iBAAgB"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"collection-utils.d.ts","sourceRoot":"","sources":["../../../../src/server/features/_lib/collection-utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AAEtD;;GAEG;AACH,wBAAgB,qBAAqB,CACnC,cAAc,EAAE,MAAM,EACtB,oBAAoB,EAAE,GAAG,CAAC,cAAc,CAAC,GACxC,cAAc,GAAG,IAAI,CAEvB;AAED;;GAEG;AACH,wBAAsB,mBAAmB,CAAC,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAQ7G"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/server/features/_lib/collection-utils.ts"],"sourcesContent":["import type { CollectionSlug, Payload } from 'payload'\n\n/**\n * Checks if collection is available for translation\n */\nexport function isCollectionAvailable(\n collectionSlug: string,\n availableCollections: Set<CollectionSlug>,\n): CollectionSlug | null {\n return availableCollections.has(collectionSlug) ? collectionSlug : null\n}\n\n/**\n * Gets all document IDs from a collection (for select_all option)\n */\nexport async function getAllCollectionIds(payload: Payload, collectionSlug: CollectionSlug): Promise<string[]> {\n const result = await payload.find({\n collection: collectionSlug,\n pagination: false,\n depth: 0,\n select: { id: true },\n })\n return result.docs.map((doc) => String(doc.id))\n}\n"],"names":["isCollectionAvailable","collectionSlug","availableCollections","has","getAllCollectionIds","payload","result","find","collection","pagination","depth","select","id","docs","map","doc","String"],"mappings":"AAEA;;CAEC,GACD,OAAO,SAASA,sBACdC,cAAsB,EACtBC,oBAAyC;IAEzC,OAAOA,qBAAqBC,GAAG,CAACF,kBAAkBA,iBAAiB;AACrE;AAEA;;CAEC,GACD,OAAO,eAAeG,oBAAoBC,OAAgB,EAAEJ,cAA8B;IACxF,MAAMK,SAAS,MAAMD,QAAQE,IAAI,CAAC;QAChCC,YAAYP;QACZQ,YAAY;QACZC,OAAO;QACPC,QAAQ;YAAEC,IAAI;QAAK;IACrB;IACA,OAAON,OAAOO,IAAI,CAACC,GAAG,CAAC,CAACC,MAAQC,OAAOD,IAAIH,EAAE;AAC/C"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/server/features/_lib/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/server/features/_lib/index.ts"],"sourcesContent":["export * from './collection-utils'\n"],"names":[],"mappings":"AAAA,cAAc,qBAAoB"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"handler.d.ts","sourceRoot":"","sources":["../../../../src/server/features/cancel/handler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAG7C,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAA;AAInE;;GAEG;AACH,qBAAa,aAAa;IACZ,OAAO,CAAC,QAAQ,CAAC,iBAAiB;gBAAjB,iBAAiB,EAAE,kBAAkB;IAE5D,MAAM,CAAC,GAAG,EAAE,cAAc,GAAG,OAAO,CAAC,QAAQ,CAAC;CAUrD"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/server/features/cancel/handler.ts"],"sourcesContent":["import type { PayloadRequest } from 'payload'\n\nimport { ServerResponse } from '../../shared'\nimport type { TaskRunnerProvider } from '../../modules/task-runner'\n\nimport { CancelInputSchema } from './model'\n\n/**\n * Cancels and deletes translation tasks by IDs\n */\nexport class CancelHandler {\n constructor(private readonly taskRunnerFactory: TaskRunnerProvider) {}\n\n async handle(req: PayloadRequest): Promise<Response> {\n const validationResult = CancelInputSchema.safeParse(await req.json?.())\n if (validationResult.error) return ServerResponse.validationError(validationResult.error.errors)\n\n const { ids } = validationResult.data\n const runner = this.taskRunnerFactory.create(req.payload)\n await runner.cancel(ids)\n\n return ServerResponse.noContent()\n }\n}\n"],"names":["ServerResponse","CancelInputSchema","CancelHandler","taskRunnerFactory","handle","req","validationResult","safeParse","json","error","validationError","errors","ids","data","runner","create","payload","cancel","noContent"],"mappings":"AAEA,SAASA,cAAc,QAAQ,eAAc;AAG7C,SAASC,iBAAiB,QAAQ,UAAS;AAE3C;;CAEC,GACD,OAAO,MAAMC;;IACX,YAAY,AAAiBC,iBAAqC,CAAE;aAAvCA,oBAAAA;IAAwC;IAErE,MAAMC,OAAOC,GAAmB,EAAqB;QACnD,MAAMC,mBAAmBL,kBAAkBM,SAAS,CAAC,MAAMF,IAAIG,IAAI;QACnE,IAAIF,iBAAiBG,KAAK,EAAE,OAAOT,eAAeU,eAAe,CAACJ,iBAAiBG,KAAK,CAACE,MAAM;QAE/F,MAAM,EAAEC,GAAG,EAAE,GAAGN,iBAAiBO,IAAI;QACrC,MAAMC,SAAS,IAAI,CAACX,iBAAiB,CAACY,MAAM,CAACV,IAAIW,OAAO;QACxD,MAAMF,OAAOG,MAAM,CAACL;QAEpB,OAAOZ,eAAekB,SAAS;IACjC;AACF"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"handler.test.d.ts","sourceRoot":"","sources":["../../../../src/server/features/cancel/handler.test.ts"],"names":[],"mappings":""}
|
|
@@ -1,63 +0,0 @@
|
|
|
1
|
-
import { describe, it, expect, vi, beforeEach } from 'vitest';
|
|
2
|
-
import { CancelHandler } from './handler';
|
|
3
|
-
describe('CancelHandler', () => {
|
|
4
|
-
let handler;
|
|
5
|
-
let mockTaskRunner;
|
|
6
|
-
let mockTaskRunnerFactory;
|
|
7
|
-
const createMockRequest = (body) => ({
|
|
8
|
-
payload: {},
|
|
9
|
-
json: vi.fn().mockResolvedValue(body),
|
|
10
|
-
});
|
|
11
|
-
beforeEach(() => {
|
|
12
|
-
mockTaskRunner = {
|
|
13
|
-
enqueue: vi.fn(),
|
|
14
|
-
cancel: vi.fn().mockResolvedValue(undefined),
|
|
15
|
-
run: vi.fn(),
|
|
16
|
-
findByCollection: vi.fn(),
|
|
17
|
-
};
|
|
18
|
-
mockTaskRunnerFactory = {
|
|
19
|
-
create: vi.fn().mockReturnValue(mockTaskRunner),
|
|
20
|
-
configure: vi.fn(),
|
|
21
|
-
};
|
|
22
|
-
handler = new CancelHandler(mockTaskRunnerFactory);
|
|
23
|
-
});
|
|
24
|
-
describe('validation', () => {
|
|
25
|
-
it('returns validation error for missing ids', async () => {
|
|
26
|
-
const req = createMockRequest({});
|
|
27
|
-
const response = await handler.handle(req);
|
|
28
|
-
expect(response.status).toBe(400);
|
|
29
|
-
const body = await response.json();
|
|
30
|
-
expect(body.message).toBe('Validation error');
|
|
31
|
-
});
|
|
32
|
-
it('returns validation error for non-array ids', async () => {
|
|
33
|
-
const req = createMockRequest({ ids: 'not-an-array' });
|
|
34
|
-
const response = await handler.handle(req);
|
|
35
|
-
expect(response.status).toBe(400);
|
|
36
|
-
});
|
|
37
|
-
it('returns validation error for empty ids array', async () => {
|
|
38
|
-
const req = createMockRequest({ ids: [] });
|
|
39
|
-
const response = await handler.handle(req);
|
|
40
|
-
expect(response.status).toBe(400);
|
|
41
|
-
});
|
|
42
|
-
});
|
|
43
|
-
describe('success responses', () => {
|
|
44
|
-
it('cancels tasks and returns 204', async () => {
|
|
45
|
-
const req = createMockRequest({ ids: ['task-1', 'task-2'] });
|
|
46
|
-
const response = await handler.handle(req);
|
|
47
|
-
expect(response.status).toBe(204);
|
|
48
|
-
expect(response.body).toBeNull();
|
|
49
|
-
});
|
|
50
|
-
it('calls runner.cancel with provided ids', async () => {
|
|
51
|
-
const req = createMockRequest({ ids: ['task-1', 'task-2', 'task-3'] });
|
|
52
|
-
await handler.handle(req);
|
|
53
|
-
expect(mockTaskRunner.cancel).toHaveBeenCalledWith(['task-1', 'task-2', 'task-3']);
|
|
54
|
-
});
|
|
55
|
-
it('creates task runner with request payload', async () => {
|
|
56
|
-
const mockPayload = { collections: {} };
|
|
57
|
-
const req = createMockRequest({ ids: ['task-1'] });
|
|
58
|
-
req.payload = mockPayload;
|
|
59
|
-
await handler.handle(req);
|
|
60
|
-
expect(mockTaskRunnerFactory.create).toHaveBeenCalledWith(mockPayload);
|
|
61
|
-
});
|
|
62
|
-
});
|
|
63
|
-
});
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/server/features/cancel/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/server/features/cancel/index.ts"],"sourcesContent":["export { createCancelRoute } from './route'\n"],"names":["createCancelRoute"],"mappings":"AAAA,SAASA,iBAAiB,QAAQ,UAAS"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"model.d.ts","sourceRoot":"","sources":["../../../../src/server/features/cancel/model.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB;;GAEG;AACH,eAAO,MAAM,iBAAiB;;;;;;EAE5B,CAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/server/features/cancel/model.ts"],"sourcesContent":["import { z } from 'zod'\n\n/**\n * Input validation schema for batch cancel\n */\nexport const CancelInputSchema = z.object({\n ids: z.array(z.string().nonempty()).min(1),\n})\n"],"names":["z","CancelInputSchema","object","ids","array","string","nonempty","min"],"mappings":"AAAA,SAASA,CAAC,QAAQ,MAAK;AAEvB;;CAEC,GACD,OAAO,MAAMC,oBAAoBD,EAAEE,MAAM,CAAC;IACxCC,KAAKH,EAAEI,KAAK,CAACJ,EAAEK,MAAM,GAAGC,QAAQ,IAAIC,GAAG,CAAC;AAC1C,GAAE"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"route.d.ts","sourceRoot":"","sources":["../../../../src/server/features/cancel/route.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;AAGvC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAC/C,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAA;AAInE;;GAEG;AACH,wBAAgB,iBAAiB,CAC/B,iBAAiB,EAAE,kBAAkB,EACrC,MAAM,CAAC,EAAE,WAAW,EACpB,QAAQ,SAAe,GACtB,QAAQ,CAQV"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/server/features/cancel/route.ts"],"sourcesContent":["import type { Endpoint } from 'payload'\n\nimport { withErrorHandler, withAccessCheck } from '../../shared'\nimport type { AccessGuard } from '../../shared'\nimport type { TaskRunnerProvider } from '../../modules/task-runner'\n\nimport { CancelHandler } from './handler'\n\n/**\n * Creates the batch cancel endpoint\n */\nexport function createCancelRoute(\n taskRunnerFactory: TaskRunnerProvider,\n access?: AccessGuard,\n basePath = '/translate',\n): Endpoint {\n const handler = new CancelHandler(taskRunnerFactory)\n\n return {\n path: `${basePath}/cancel`,\n method: 'delete',\n handler: withAccessCheck(withErrorHandler(handler.handle.bind(handler)), access),\n }\n}\n"],"names":["withErrorHandler","withAccessCheck","CancelHandler","createCancelRoute","taskRunnerFactory","access","basePath","handler","path","method","handle","bind"],"mappings":"AAEA,SAASA,gBAAgB,EAAEC,eAAe,QAAQ,eAAc;AAIhE,SAASC,aAAa,QAAQ,YAAW;AAEzC;;CAEC,GACD,OAAO,SAASC,kBACdC,iBAAqC,EACrCC,MAAoB,EACpBC,WAAW,YAAY;IAEvB,MAAMC,UAAU,IAAIL,cAAcE;IAElC,OAAO;QACLI,MAAM,GAAGF,SAAS,OAAO,CAAC;QAC1BG,QAAQ;QACRF,SAASN,gBAAgBD,iBAAiBO,QAAQG,MAAM,CAACC,IAAI,CAACJ,WAAWF;IAC3E;AACF"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"handler.d.ts","sourceRoot":"","sources":["../../../../src/server/features/cancel-by-collection/handler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAG7C,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAA;AAGnE,OAAO,EAAiC,KAAK,YAAY,EAAE,MAAM,SAAS,CAAA;AAE1E;;GAEG;AACH,qBAAa,yBAAyB;IAElC,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,iBAAiB;gBADjB,MAAM,EAAE,YAAY,EACpB,iBAAiB,EAAE,kBAAkB;IAGlD,MAAM,CAAC,GAAG,EAAE,cAAc,GAAG,OAAO,CAAC,QAAQ,CAAC;CAqBrD"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/server/features/cancel-by-collection/handler.ts"],"sourcesContent":["import type { PayloadRequest } from 'payload'\n\nimport { ServerResponse } from '../../shared'\nimport type { TaskRunnerProvider } from '../../modules/task-runner'\nimport { isCollectionAvailable } from '../_lib/collection-utils'\n\nimport { CancelByCollectionInputSchema, type CancelConfig } from './model'\n\n/**\n * Cancels all pending translation tasks for a collection\n */\nexport class CancelByCollectionHandler {\n constructor(\n private readonly config: CancelConfig,\n private readonly taskRunnerFactory: TaskRunnerProvider,\n ) {}\n\n async handle(req: PayloadRequest): Promise<Response> {\n const validationResult = CancelByCollectionInputSchema.safeParse(req.routeParams)\n if (validationResult.error) return ServerResponse.validationError(validationResult.error.errors)\n\n const collectionSlug = isCollectionAvailable(\n validationResult.data.collection_slug,\n this.config.availableCollections,\n )\n if (!collectionSlug) return ServerResponse.badRequest('Collection not available for translation')\n\n const runner = this.taskRunnerFactory.create(req.payload)\n const tasks = await runner.findByCollection(collectionSlug)\n if (tasks.length === 0) return ServerResponse.noContent()\n\n const pendingTaskIds = tasks.filter((task) => task.status === 'pending').map((task) => task.id)\n if (pendingTaskIds.length === 0) return ServerResponse.noContent()\n\n await runner.cancel(pendingTaskIds)\n\n return ServerResponse.noContent()\n }\n}\n"],"names":["ServerResponse","isCollectionAvailable","CancelByCollectionInputSchema","CancelByCollectionHandler","config","taskRunnerFactory","handle","req","validationResult","safeParse","routeParams","error","validationError","errors","collectionSlug","data","collection_slug","availableCollections","badRequest","runner","create","payload","tasks","findByCollection","length","noContent","pendingTaskIds","filter","task","status","map","id","cancel"],"mappings":"AAEA,SAASA,cAAc,QAAQ,eAAc;AAE7C,SAASC,qBAAqB,QAAQ,2BAA0B;AAEhE,SAASC,6BAA6B,QAA2B,UAAS;AAE1E;;CAEC,GACD,OAAO,MAAMC;;;IACX,YACE,AAAiBC,MAAoB,EACrC,AAAiBC,iBAAqC,CACtD;aAFiBD,SAAAA;aACAC,oBAAAA;IAChB;IAEH,MAAMC,OAAOC,GAAmB,EAAqB;QACnD,MAAMC,mBAAmBN,8BAA8BO,SAAS,CAACF,IAAIG,WAAW;QAChF,IAAIF,iBAAiBG,KAAK,EAAE,OAAOX,eAAeY,eAAe,CAACJ,iBAAiBG,KAAK,CAACE,MAAM;QAE/F,MAAMC,iBAAiBb,sBACrBO,iBAAiBO,IAAI,CAACC,eAAe,EACrC,IAAI,CAACZ,MAAM,CAACa,oBAAoB;QAElC,IAAI,CAACH,gBAAgB,OAAOd,eAAekB,UAAU,CAAC;QAEtD,MAAMC,SAAS,IAAI,CAACd,iBAAiB,CAACe,MAAM,CAACb,IAAIc,OAAO;QACxD,MAAMC,QAAQ,MAAMH,OAAOI,gBAAgB,CAACT;QAC5C,IAAIQ,MAAME,MAAM,KAAK,GAAG,OAAOxB,eAAeyB,SAAS;QAEvD,MAAMC,iBAAiBJ,MAAMK,MAAM,CAAC,CAACC,OAASA,KAAKC,MAAM,KAAK,WAAWC,GAAG,CAAC,CAACF,OAASA,KAAKG,EAAE;QAC9F,IAAIL,eAAeF,MAAM,KAAK,GAAG,OAAOxB,eAAeyB,SAAS;QAEhE,MAAMN,OAAOa,MAAM,CAACN;QAEpB,OAAO1B,eAAeyB,SAAS;IACjC;AACF"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"handler.test.d.ts","sourceRoot":"","sources":["../../../../src/server/features/cancel-by-collection/handler.test.ts"],"names":[],"mappings":""}
|
|
@@ -1,126 +0,0 @@
|
|
|
1
|
-
import { describe, it, expect, vi, beforeEach } from 'vitest';
|
|
2
|
-
import { CancelByCollectionHandler } from './handler';
|
|
3
|
-
describe('CancelByCollectionHandler', () => {
|
|
4
|
-
let handler;
|
|
5
|
-
let mockTaskRunner;
|
|
6
|
-
let mockTaskRunnerFactory;
|
|
7
|
-
let config;
|
|
8
|
-
const createMockTask = (overrides = {}) => ({
|
|
9
|
-
id: 'task-123',
|
|
10
|
-
status: 'pending',
|
|
11
|
-
input: {
|
|
12
|
-
collectionSlug: 'posts',
|
|
13
|
-
collectionId: 'doc-123',
|
|
14
|
-
sourceLng: 'en',
|
|
15
|
-
targetLng: 'de',
|
|
16
|
-
strategy: 'overwrite',
|
|
17
|
-
publishOnTranslation: false,
|
|
18
|
-
},
|
|
19
|
-
createdAt: '2024-01-01T00:00:00Z',
|
|
20
|
-
updatedAt: '2024-01-01T01:00:00Z',
|
|
21
|
-
cancelled: false,
|
|
22
|
-
...overrides,
|
|
23
|
-
});
|
|
24
|
-
const createMockRequest = (params = {}) => ({
|
|
25
|
-
payload: {},
|
|
26
|
-
routeParams: params,
|
|
27
|
-
});
|
|
28
|
-
beforeEach(() => {
|
|
29
|
-
mockTaskRunner = {
|
|
30
|
-
enqueue: vi.fn(),
|
|
31
|
-
cancel: vi.fn().mockResolvedValue(undefined),
|
|
32
|
-
run: vi.fn(),
|
|
33
|
-
findByCollection: vi.fn().mockResolvedValue([]),
|
|
34
|
-
};
|
|
35
|
-
mockTaskRunnerFactory = {
|
|
36
|
-
create: vi.fn().mockReturnValue(mockTaskRunner),
|
|
37
|
-
configure: vi.fn(),
|
|
38
|
-
};
|
|
39
|
-
config = {
|
|
40
|
-
availableCollections: new Set(['posts', 'pages']),
|
|
41
|
-
};
|
|
42
|
-
handler = new CancelByCollectionHandler(config, mockTaskRunnerFactory);
|
|
43
|
-
});
|
|
44
|
-
describe('validation', () => {
|
|
45
|
-
it('returns validation error for missing collection_slug', async () => {
|
|
46
|
-
const req = createMockRequest({});
|
|
47
|
-
const response = await handler.handle(req);
|
|
48
|
-
expect(response.status).toBe(400);
|
|
49
|
-
const body = await response.json();
|
|
50
|
-
expect(body.message).toBe('Validation error');
|
|
51
|
-
});
|
|
52
|
-
it('returns validation error for empty collection_slug', async () => {
|
|
53
|
-
const req = createMockRequest({ collection_slug: '' });
|
|
54
|
-
const response = await handler.handle(req);
|
|
55
|
-
expect(response.status).toBe(400);
|
|
56
|
-
});
|
|
57
|
-
});
|
|
58
|
-
describe('collection availability', () => {
|
|
59
|
-
it('returns bad request for unavailable collection', async () => {
|
|
60
|
-
const req = createMockRequest({ collection_slug: 'users' });
|
|
61
|
-
const response = await handler.handle(req);
|
|
62
|
-
expect(response.status).toBe(400);
|
|
63
|
-
const body = await response.json();
|
|
64
|
-
expect(body.message).toBe('Collection not available for translation');
|
|
65
|
-
});
|
|
66
|
-
});
|
|
67
|
-
describe('no tasks to cancel', () => {
|
|
68
|
-
it('returns 204 when no tasks exist for collection', async () => {
|
|
69
|
-
;
|
|
70
|
-
mockTaskRunner.findByCollection.mockResolvedValue([]);
|
|
71
|
-
const req = createMockRequest({ collection_slug: 'posts' });
|
|
72
|
-
const response = await handler.handle(req);
|
|
73
|
-
expect(response.status).toBe(204);
|
|
74
|
-
expect(response.body).toBeNull();
|
|
75
|
-
});
|
|
76
|
-
it('returns 204 when all tasks are already completed', async () => {
|
|
77
|
-
const tasks = [
|
|
78
|
-
createMockTask({ id: 'task-1', status: 'completed' }),
|
|
79
|
-
createMockTask({ id: 'task-2', status: 'failed' }),
|
|
80
|
-
];
|
|
81
|
-
mockTaskRunner.findByCollection.mockResolvedValue(tasks);
|
|
82
|
-
const req = createMockRequest({ collection_slug: 'posts' });
|
|
83
|
-
const response = await handler.handle(req);
|
|
84
|
-
expect(response.status).toBe(204);
|
|
85
|
-
expect(mockTaskRunner.cancel).not.toHaveBeenCalled();
|
|
86
|
-
});
|
|
87
|
-
it('returns 204 when all tasks are running (not pending)', async () => {
|
|
88
|
-
const tasks = [
|
|
89
|
-
createMockTask({ id: 'task-1', status: 'running' }),
|
|
90
|
-
createMockTask({ id: 'task-2', status: 'running' }),
|
|
91
|
-
];
|
|
92
|
-
mockTaskRunner.findByCollection.mockResolvedValue(tasks);
|
|
93
|
-
const req = createMockRequest({ collection_slug: 'posts' });
|
|
94
|
-
const response = await handler.handle(req);
|
|
95
|
-
expect(response.status).toBe(204);
|
|
96
|
-
expect(mockTaskRunner.cancel).not.toHaveBeenCalled();
|
|
97
|
-
});
|
|
98
|
-
});
|
|
99
|
-
describe('cancelling pending tasks', () => {
|
|
100
|
-
it('cancels only pending tasks', async () => {
|
|
101
|
-
const tasks = [
|
|
102
|
-
createMockTask({ id: 'task-1', status: 'pending' }),
|
|
103
|
-
createMockTask({ id: 'task-2', status: 'running' }),
|
|
104
|
-
createMockTask({ id: 'task-3', status: 'pending' }),
|
|
105
|
-
createMockTask({ id: 'task-4', status: 'completed' }),
|
|
106
|
-
];
|
|
107
|
-
mockTaskRunner.findByCollection.mockResolvedValue(tasks);
|
|
108
|
-
const req = createMockRequest({ collection_slug: 'posts' });
|
|
109
|
-
const response = await handler.handle(req);
|
|
110
|
-
expect(response.status).toBe(204);
|
|
111
|
-
expect(mockTaskRunner.cancel).toHaveBeenCalledWith(['task-1', 'task-3']);
|
|
112
|
-
});
|
|
113
|
-
it('calls findByCollection with correct collection slug', async () => {
|
|
114
|
-
const req = createMockRequest({ collection_slug: 'pages' });
|
|
115
|
-
await handler.handle(req);
|
|
116
|
-
expect(mockTaskRunner.findByCollection).toHaveBeenCalledWith('pages');
|
|
117
|
-
});
|
|
118
|
-
it('creates task runner with request payload', async () => {
|
|
119
|
-
const mockPayload = { collections: {} };
|
|
120
|
-
const req = createMockRequest({ collection_slug: 'posts' });
|
|
121
|
-
req.payload = mockPayload;
|
|
122
|
-
await handler.handle(req);
|
|
123
|
-
expect(mockTaskRunnerFactory.create).toHaveBeenCalledWith(mockPayload);
|
|
124
|
-
});
|
|
125
|
-
});
|
|
126
|
-
});
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/server/features/cancel-by-collection/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,6BAA6B,EAAE,MAAM,SAAS,CAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/server/features/cancel-by-collection/index.ts"],"sourcesContent":["export { createCancelByCollectionRoute } from './route'\n"],"names":["createCancelByCollectionRoute"],"mappings":"AAAA,SAASA,6BAA6B,QAAQ,UAAS"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"model.d.ts","sourceRoot":"","sources":["../../../../src/server/features/cancel-by-collection/model.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AACvB,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAE7C;;GAEG;AACH,eAAO,MAAM,6BAA6B;;;;;;EAExC,CAAA;AAEF;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG;IACzB,oBAAoB,EAAE,GAAG,CAAC,cAAc,CAAC,CAAA;CAC1C,CAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/server/features/cancel-by-collection/model.ts"],"sourcesContent":["import { z } from 'zod'\nimport type { CollectionSlug } from 'payload'\n\n/**\n * Input validation schema\n */\nexport const CancelByCollectionInputSchema = z.object({\n collection_slug: z.string().nonempty(),\n})\n\n/**\n * Handler configuration\n */\nexport type CancelConfig = {\n availableCollections: Set<CollectionSlug>\n}\n"],"names":["z","CancelByCollectionInputSchema","object","collection_slug","string","nonempty"],"mappings":"AAAA,SAASA,CAAC,QAAQ,MAAK;AAGvB;;CAEC,GACD,OAAO,MAAMC,gCAAgCD,EAAEE,MAAM,CAAC;IACpDC,iBAAiBH,EAAEI,MAAM,GAAGC,QAAQ;AACtC,GAAE"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"route.d.ts","sourceRoot":"","sources":["../../../../src/server/features/cancel-by-collection/route.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;AAGvC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAC/C,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAA;AAEnE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AAG3C;;GAEG;AACH,wBAAgB,6BAA6B,CAC3C,MAAM,EAAE,YAAY,EACpB,iBAAiB,EAAE,kBAAkB,EACrC,MAAM,CAAC,EAAE,WAAW,EACpB,QAAQ,SAAe,GACtB,QAAQ,CAQV"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/server/features/cancel-by-collection/route.ts"],"sourcesContent":["import type { Endpoint } from 'payload'\n\nimport { withErrorHandler, withAccessCheck } from '../../shared'\nimport type { AccessGuard } from '../../shared'\nimport type { TaskRunnerProvider } from '../../modules/task-runner'\n\nimport type { CancelConfig } from './model'\nimport { CancelByCollectionHandler } from './handler'\n\n/**\n * Creates the cancel by collection endpoint\n */\nexport function createCancelByCollectionRoute(\n config: CancelConfig,\n taskRunnerFactory: TaskRunnerProvider,\n access?: AccessGuard,\n basePath = '/translate',\n): Endpoint {\n const handler = new CancelByCollectionHandler(config, taskRunnerFactory)\n\n return {\n path: `${basePath}/cancel-by-collection/:collection_slug`,\n method: 'delete',\n handler: withAccessCheck(withErrorHandler(handler.handle.bind(handler)), access),\n }\n}\n"],"names":["withErrorHandler","withAccessCheck","CancelByCollectionHandler","createCancelByCollectionRoute","config","taskRunnerFactory","access","basePath","handler","path","method","handle","bind"],"mappings":"AAEA,SAASA,gBAAgB,EAAEC,eAAe,QAAQ,eAAc;AAKhE,SAASC,yBAAyB,QAAQ,YAAW;AAErD;;CAEC,GACD,OAAO,SAASC,8BACdC,MAAoB,EACpBC,iBAAqC,EACrCC,MAAoB,EACpBC,WAAW,YAAY;IAEvB,MAAMC,UAAU,IAAIN,0BAA0BE,QAAQC;IAEtD,OAAO;QACLI,MAAM,GAAGF,SAAS,sCAAsC,CAAC;QACzDG,QAAQ;QACRF,SAASP,gBAAgBD,iBAAiBQ,QAAQG,MAAM,CAACC,IAAI,CAACJ,WAAWF;IAC3E;AACF"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"handler.d.ts","sourceRoot":"","sources":["../../../../src/server/features/enqueue-translation/handler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAG7C,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAA;AAGnE,OAAO,EAAsB,KAAK,aAAa,EAAE,MAAM,SAAS,CAAA;AAEhE;;GAEG;AACH,qBAAa,yBAAyB;IAElC,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,iBAAiB;gBADjB,MAAM,EAAE,aAAa,EACrB,iBAAiB,EAAE,kBAAkB;IAGlD,MAAM,CAAC,GAAG,EAAE,cAAc,GAAG,OAAO,CAAC,QAAQ,CAAC;CA0BrD"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/server/features/enqueue-translation/handler.ts"],"sourcesContent":["import type { PayloadRequest } from 'payload'\n\nimport { ServerResponse } from '../../shared'\nimport type { TaskRunnerProvider } from '../../modules/task-runner'\nimport { isCollectionAvailable, getAllCollectionIds } from '../_lib/collection-utils'\n\nimport { EnqueueInputSchema, type EnqueueConfig } from './model'\n\n/**\n * Enqueues translation tasks for documents\n */\nexport class EnqueueTranslationHandler {\n constructor(\n private readonly config: EnqueueConfig,\n private readonly taskRunnerFactory: TaskRunnerProvider,\n ) {}\n\n async handle(req: PayloadRequest): Promise<Response> {\n const validationResult = EnqueueInputSchema.safeParse(await req.json?.())\n if (validationResult.error) return ServerResponse.validationError(validationResult.error.errors)\n\n const { source_lng, target_lng, collection_slug, collection_id, select_all, strategy, publish_on_translation } =\n validationResult.data\n\n const collectionSlug = isCollectionAvailable(collection_slug, this.config.availableCollections)\n if (!collectionSlug) return ServerResponse.badRequest('Content of this collection is not available for translation')\n\n const collectionIds = select_all ? await getAllCollectionIds(req.payload, collectionSlug) : collection_id\n\n const runner = this.taskRunnerFactory.create(req.payload)\n const tasks = collectionIds.map((id) => ({\n collectionSlug,\n collectionId: id,\n sourceLng: source_lng,\n targetLng: target_lng,\n strategy: strategy,\n publishOnTranslation: publish_on_translation,\n }))\n\n await runner.enqueue(tasks)\n\n return ServerResponse.success({ success: true, queued: tasks.length })\n }\n}\n"],"names":["ServerResponse","isCollectionAvailable","getAllCollectionIds","EnqueueInputSchema","EnqueueTranslationHandler","config","taskRunnerFactory","handle","req","validationResult","safeParse","json","error","validationError","errors","source_lng","target_lng","collection_slug","collection_id","select_all","strategy","publish_on_translation","data","collectionSlug","availableCollections","badRequest","collectionIds","payload","runner","create","tasks","map","id","collectionId","sourceLng","targetLng","publishOnTranslation","enqueue","success","queued","length"],"mappings":"AAEA,SAASA,cAAc,QAAQ,eAAc;AAE7C,SAASC,qBAAqB,EAAEC,mBAAmB,QAAQ,2BAA0B;AAErF,SAASC,kBAAkB,QAA4B,UAAS;AAEhE;;CAEC,GACD,OAAO,MAAMC;;;IACX,YACE,AAAiBC,MAAqB,EACtC,AAAiBC,iBAAqC,CACtD;aAFiBD,SAAAA;aACAC,oBAAAA;IAChB;IAEH,MAAMC,OAAOC,GAAmB,EAAqB;QACnD,MAAMC,mBAAmBN,mBAAmBO,SAAS,CAAC,MAAMF,IAAIG,IAAI;QACpE,IAAIF,iBAAiBG,KAAK,EAAE,OAAOZ,eAAea,eAAe,CAACJ,iBAAiBG,KAAK,CAACE,MAAM;QAE/F,MAAM,EAAEC,UAAU,EAAEC,UAAU,EAAEC,eAAe,EAAEC,aAAa,EAAEC,UAAU,EAAEC,QAAQ,EAAEC,sBAAsB,EAAE,GAC5GZ,iBAAiBa,IAAI;QAEvB,MAAMC,iBAAiBtB,sBAAsBgB,iBAAiB,IAAI,CAACZ,MAAM,CAACmB,oBAAoB;QAC9F,IAAI,CAACD,gBAAgB,OAAOvB,eAAeyB,UAAU,CAAC;QAEtD,MAAMC,gBAAgBP,aAAa,MAAMjB,oBAAoBM,IAAImB,OAAO,EAAEJ,kBAAkBL;QAE5F,MAAMU,SAAS,IAAI,CAACtB,iBAAiB,CAACuB,MAAM,CAACrB,IAAImB,OAAO;QACxD,MAAMG,QAAQJ,cAAcK,GAAG,CAAC,CAACC,KAAQ,CAAA;gBACvCT;gBACAU,cAAcD;gBACdE,WAAWnB;gBACXoB,WAAWnB;gBACXI,UAAUA;gBACVgB,sBAAsBf;YACxB,CAAA;QAEA,MAAMO,OAAOS,OAAO,CAACP;QAErB,OAAO9B,eAAesC,OAAO,CAAC;YAAEA,SAAS;YAAMC,QAAQT,MAAMU,MAAM;QAAC;IACtE;AACF"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"handler.test.d.ts","sourceRoot":"","sources":["../../../../src/server/features/enqueue-translation/handler.test.ts"],"names":[],"mappings":""}
|
|
@@ -1,115 +0,0 @@
|
|
|
1
|
-
import { describe, it, expect, vi, beforeEach } from 'vitest';
|
|
2
|
-
import { EnqueueTranslationHandler } from './handler';
|
|
3
|
-
// Mock collection-utils
|
|
4
|
-
vi.mock('../_lib/collection-utils', () => ({
|
|
5
|
-
isCollectionAvailable: vi.fn((slug, available) => (available.has(slug) ? slug : null)),
|
|
6
|
-
getAllCollectionIds: vi.fn().mockResolvedValue(['doc-1', 'doc-2', 'doc-3']),
|
|
7
|
-
}));
|
|
8
|
-
describe('EnqueueTranslationHandler', () => {
|
|
9
|
-
let handler;
|
|
10
|
-
let mockTaskRunner;
|
|
11
|
-
let mockTaskRunnerFactory;
|
|
12
|
-
let config;
|
|
13
|
-
const createMockRequest = (body) => ({
|
|
14
|
-
payload: {},
|
|
15
|
-
json: vi.fn().mockResolvedValue(body),
|
|
16
|
-
});
|
|
17
|
-
beforeEach(() => {
|
|
18
|
-
vi.clearAllMocks();
|
|
19
|
-
mockTaskRunner = {
|
|
20
|
-
enqueue: vi.fn().mockResolvedValue(undefined),
|
|
21
|
-
cancel: vi.fn(),
|
|
22
|
-
run: vi.fn(),
|
|
23
|
-
findByCollection: vi.fn(),
|
|
24
|
-
};
|
|
25
|
-
mockTaskRunnerFactory = {
|
|
26
|
-
create: vi.fn().mockReturnValue(mockTaskRunner),
|
|
27
|
-
configure: vi.fn(),
|
|
28
|
-
};
|
|
29
|
-
config = {
|
|
30
|
-
availableCollections: new Set(['posts', 'pages']),
|
|
31
|
-
};
|
|
32
|
-
handler = new EnqueueTranslationHandler(config, mockTaskRunnerFactory);
|
|
33
|
-
});
|
|
34
|
-
describe('validation', () => {
|
|
35
|
-
it('returns validation error for missing required fields', async () => {
|
|
36
|
-
const req = createMockRequest({});
|
|
37
|
-
const response = await handler.handle(req);
|
|
38
|
-
expect(response.status).toBe(400);
|
|
39
|
-
});
|
|
40
|
-
it('returns validation error for missing source_lng', async () => {
|
|
41
|
-
const req = createMockRequest({
|
|
42
|
-
target_lng: 'de',
|
|
43
|
-
collection_slug: 'posts',
|
|
44
|
-
collection_id: ['doc-1'],
|
|
45
|
-
});
|
|
46
|
-
const response = await handler.handle(req);
|
|
47
|
-
expect(response.status).toBe(400);
|
|
48
|
-
});
|
|
49
|
-
});
|
|
50
|
-
describe('collection availability', () => {
|
|
51
|
-
it('returns bad request for unavailable collection', async () => {
|
|
52
|
-
const req = createMockRequest({
|
|
53
|
-
source_lng: 'en',
|
|
54
|
-
target_lng: 'de',
|
|
55
|
-
collection_slug: 'users',
|
|
56
|
-
collection_id: ['doc-1'],
|
|
57
|
-
strategy: 'overwrite',
|
|
58
|
-
});
|
|
59
|
-
const response = await handler.handle(req);
|
|
60
|
-
expect(response.status).toBe(400);
|
|
61
|
-
const body = await response.json();
|
|
62
|
-
expect(body.message).toContain('not available for translation');
|
|
63
|
-
});
|
|
64
|
-
});
|
|
65
|
-
describe('success responses', () => {
|
|
66
|
-
it('enqueues tasks for specific documents', async () => {
|
|
67
|
-
const req = createMockRequest({
|
|
68
|
-
source_lng: 'en',
|
|
69
|
-
target_lng: 'de',
|
|
70
|
-
collection_slug: 'posts',
|
|
71
|
-
collection_id: ['doc-1', 'doc-2'],
|
|
72
|
-
strategy: 'overwrite',
|
|
73
|
-
});
|
|
74
|
-
const response = await handler.handle(req);
|
|
75
|
-
expect(response.status).toBe(200);
|
|
76
|
-
const body = await response.json();
|
|
77
|
-
expect(body.data).toEqual({ success: true, queued: 2 });
|
|
78
|
-
});
|
|
79
|
-
it('calls runner.enqueue with correct tasks', async () => {
|
|
80
|
-
const req = createMockRequest({
|
|
81
|
-
source_lng: 'en',
|
|
82
|
-
target_lng: 'fr',
|
|
83
|
-
collection_slug: 'posts',
|
|
84
|
-
collection_id: ['doc-123'],
|
|
85
|
-
strategy: 'skip_existing',
|
|
86
|
-
});
|
|
87
|
-
await handler.handle(req);
|
|
88
|
-
expect(mockTaskRunner.enqueue).toHaveBeenCalledWith([
|
|
89
|
-
{
|
|
90
|
-
collectionSlug: 'posts',
|
|
91
|
-
collectionId: 'doc-123',
|
|
92
|
-
sourceLng: 'en',
|
|
93
|
-
targetLng: 'fr',
|
|
94
|
-
strategy: 'skip_existing',
|
|
95
|
-
publishOnTranslation: false,
|
|
96
|
-
},
|
|
97
|
-
]);
|
|
98
|
-
});
|
|
99
|
-
// Note: select_all test skipped - requires non-empty collection_id in schema validation
|
|
100
|
-
// This is a schema design decision that should be tested at integration level
|
|
101
|
-
it('creates task runner with request payload', async () => {
|
|
102
|
-
const mockPayload = { collections: {} };
|
|
103
|
-
const req = createMockRequest({
|
|
104
|
-
source_lng: 'en',
|
|
105
|
-
target_lng: 'de',
|
|
106
|
-
collection_slug: 'posts',
|
|
107
|
-
collection_id: ['doc-1'],
|
|
108
|
-
strategy: 'overwrite',
|
|
109
|
-
});
|
|
110
|
-
req.payload = mockPayload;
|
|
111
|
-
await handler.handle(req);
|
|
112
|
-
expect(mockTaskRunnerFactory.create).toHaveBeenCalledWith(mockPayload);
|
|
113
|
-
});
|
|
114
|
-
});
|
|
115
|
-
});
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/server/features/enqueue-translation/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/server/features/enqueue-translation/index.ts"],"sourcesContent":["export { createEnqueueRoute } from './route'\n"],"names":["createEnqueueRoute"],"mappings":"AAAA,SAASA,kBAAkB,QAAQ,UAAS"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"model.d.ts","sourceRoot":"","sources":["../../../../src/server/features/enqueue-translation/model.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AACvB,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAE7C;;GAEG;AACH,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;EAQ7B,CAAA;AAEF;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG;IAC1B,oBAAoB,EAAE,GAAG,CAAC,cAAc,CAAC,CAAA;CAC1C,CAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/server/features/enqueue-translation/model.ts"],"sourcesContent":["import { z } from 'zod'\nimport type { CollectionSlug } from 'payload'\n\n/**\n * Input validation schema\n */\nexport const EnqueueInputSchema = z.object({\n source_lng: z.string().nonempty(),\n target_lng: z.string().nonempty(),\n collection_slug: z.string().nonempty(),\n collection_id: z.array(z.coerce.string()).nonempty(),\n select_all: z.boolean().optional(),\n strategy: z.enum(['overwrite', 'skip_existing']).optional().default('overwrite'),\n publish_on_translation: z.boolean().optional().default(false),\n})\n\n/**\n * Handler configuration\n */\nexport type EnqueueConfig = {\n availableCollections: Set<CollectionSlug>\n}\n"],"names":["z","EnqueueInputSchema","object","source_lng","string","nonempty","target_lng","collection_slug","collection_id","array","coerce","select_all","boolean","optional","strategy","enum","default","publish_on_translation"],"mappings":"AAAA,SAASA,CAAC,QAAQ,MAAK;AAGvB;;CAEC,GACD,OAAO,MAAMC,qBAAqBD,EAAEE,MAAM,CAAC;IACzCC,YAAYH,EAAEI,MAAM,GAAGC,QAAQ;IAC/BC,YAAYN,EAAEI,MAAM,GAAGC,QAAQ;IAC/BE,iBAAiBP,EAAEI,MAAM,GAAGC,QAAQ;IACpCG,eAAeR,EAAES,KAAK,CAACT,EAAEU,MAAM,CAACN,MAAM,IAAIC,QAAQ;IAClDM,YAAYX,EAAEY,OAAO,GAAGC,QAAQ;IAChCC,UAAUd,EAAEe,IAAI,CAAC;QAAC;QAAa;KAAgB,EAAEF,QAAQ,GAAGG,OAAO,CAAC;IACpEC,wBAAwBjB,EAAEY,OAAO,GAAGC,QAAQ,GAAGG,OAAO,CAAC;AACzD,GAAE"}
|