@justanarthur/payload-plugin-translator 1.3.19 → 1.3.21
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/dist/client.d.ts +6 -0
- package/dist/client.js +320 -0
- package/dist/index.d.ts +102 -11
- package/dist/index.js +1294 -80
- package/dist/jobs.d.ts +195 -0
- package/dist/jobs.js +824 -0
- package/dist/resolvers/copy.d.ts +21 -3
- package/dist/resolvers/copy.js +18 -12
- package/dist/resolvers/google.d.ts +29 -11
- package/dist/resolvers/google.js +58 -44
- package/dist/resolvers/libreTranslate.d.ts +33 -15
- package/dist/resolvers/libreTranslate.js +60 -45
- package/dist/resolvers/openAI.d.ts +39 -21
- package/dist/resolvers/openAI.js +111 -99
- package/dist/resolvers/types.d.ts +16 -16
- package/dist/resolvers/types.js +0 -3
- package/dist/{client/components/CustomButton/styles.scss → styles-jt3fm5fh.scss} +5 -5
- package/dist/{client/components/TranslatorModal/styles.scss → styles-vs6m7h55.scss} +76 -76
- package/dist/types.d.ts +70 -22
- package/dist/types.js +0 -3
- package/package.json +87 -64
- package/README.md +0 -215
- package/dist/client/api/index.d.ts +0 -8
- package/dist/client/api/index.d.ts.map +0 -1
- package/dist/client/api/index.js +0 -28
- package/dist/client/api/index.js.map +0 -1
- package/dist/client/components/CustomButton/CustomButtonWithTranslator.d.ts +0 -5
- package/dist/client/components/CustomButton/CustomButtonWithTranslator.d.ts.map +0 -1
- package/dist/client/components/CustomButton/CustomButtonWithTranslator.js +0 -28
- package/dist/client/components/CustomButton/CustomButtonWithTranslator.js.map +0 -1
- package/dist/client/components/CustomButton/index.d.ts +0 -3
- package/dist/client/components/CustomButton/index.d.ts.map +0 -1
- package/dist/client/components/CustomButton/index.js +0 -10
- package/dist/client/components/CustomButton/index.js.map +0 -1
- package/dist/client/components/LocaleLabel/LocaleLabel.d.ts +0 -5
- package/dist/client/components/LocaleLabel/LocaleLabel.d.ts.map +0 -1
- package/dist/client/components/LocaleLabel/LocaleLabel.js +0 -28
- package/dist/client/components/LocaleLabel/LocaleLabel.js.map +0 -1
- package/dist/client/components/LocaleLabel/index.d.ts +0 -2
- package/dist/client/components/LocaleLabel/index.d.ts.map +0 -1
- package/dist/client/components/LocaleLabel/index.js +0 -3
- package/dist/client/components/LocaleLabel/index.js.map +0 -1
- package/dist/client/components/ResolverButton/ResolverButton.d.ts +0 -5
- package/dist/client/components/ResolverButton/ResolverButton.d.ts.map +0 -1
- package/dist/client/components/ResolverButton/ResolverButton.js +0 -16
- package/dist/client/components/ResolverButton/ResolverButton.js.map +0 -1
- package/dist/client/components/ResolverButton/index.d.ts +0 -2
- package/dist/client/components/ResolverButton/index.d.ts.map +0 -1
- package/dist/client/components/ResolverButton/index.js +0 -3
- package/dist/client/components/ResolverButton/index.js.map +0 -1
- package/dist/client/components/TranslatorModal/Content.d.ts +0 -2
- package/dist/client/components/TranslatorModal/Content.d.ts.map +0 -1
- package/dist/client/components/TranslatorModal/Content.js +0 -60
- package/dist/client/components/TranslatorModal/Content.js.map +0 -1
- package/dist/client/components/TranslatorModal/TranslatorModal.d.ts +0 -3
- package/dist/client/components/TranslatorModal/TranslatorModal.d.ts.map +0 -1
- package/dist/client/components/TranslatorModal/TranslatorModal.js +0 -26
- package/dist/client/components/TranslatorModal/TranslatorModal.js.map +0 -1
- package/dist/client/components/TranslatorModal/index.d.ts +0 -2
- package/dist/client/components/TranslatorModal/index.d.ts.map +0 -1
- package/dist/client/components/TranslatorModal/index.js +0 -3
- package/dist/client/components/TranslatorModal/index.js.map +0 -1
- package/dist/client/providers/Translator/TranslatorProvider.d.ts +0 -5
- package/dist/client/providers/Translator/TranslatorProvider.d.ts.map +0 -1
- package/dist/client/providers/Translator/TranslatorProvider.js +0 -109
- package/dist/client/providers/Translator/TranslatorProvider.js.map +0 -1
- package/dist/client/providers/Translator/context.d.ts +0 -21
- package/dist/client/providers/Translator/context.d.ts.map +0 -1
- package/dist/client/providers/Translator/context.js +0 -9
- package/dist/client/providers/Translator/context.js.map +0 -1
- package/dist/exports/client.d.ts +0 -2
- package/dist/exports/client.d.ts.map +0 -1
- package/dist/exports/client.js +0 -3
- package/dist/exports/client.js.map +0 -1
- package/dist/i18n-translations.d.ts +0 -87
- package/dist/i18n-translations.d.ts.map +0 -1
- package/dist/i18n-translations.js +0 -88
- package/dist/i18n-translations.js.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/resolvers/copy.d.ts.map +0 -1
- package/dist/resolvers/copy.js.map +0 -1
- package/dist/resolvers/google.d.ts.map +0 -1
- package/dist/resolvers/google.js.map +0 -1
- package/dist/resolvers/libreTranslate.d.ts.map +0 -1
- package/dist/resolvers/libreTranslate.js.map +0 -1
- package/dist/resolvers/openAI.d.ts.map +0 -1
- package/dist/resolvers/openAI.js.map +0 -1
- package/dist/resolvers/types.d.ts.map +0 -1
- package/dist/resolvers/types.js.map +0 -1
- package/dist/translate/endpoint.d.ts +0 -3
- package/dist/translate/endpoint.d.ts.map +0 -1
- package/dist/translate/endpoint.js +0 -23
- package/dist/translate/endpoint.js.map +0 -1
- package/dist/translate/findEntityWithConfig.d.ts +0 -16
- package/dist/translate/findEntityWithConfig.d.ts.map +0 -1
- package/dist/translate/findEntityWithConfig.js +0 -34
- package/dist/translate/findEntityWithConfig.js.map +0 -1
- package/dist/translate/operation.d.ts +0 -9
- package/dist/translate/operation.d.ts.map +0 -1
- package/dist/translate/operation.js +0 -78
- package/dist/translate/operation.js.map +0 -1
- package/dist/translate/traverseFields.d.ts +0 -17
- package/dist/translate/traverseFields.d.ts.map +0 -1
- package/dist/translate/traverseFields.js +0 -233
- package/dist/translate/traverseFields.js.map +0 -1
- package/dist/translate/traverseRichText.d.ts +0 -10
- package/dist/translate/traverseRichText.d.ts.map +0 -1
- package/dist/translate/traverseRichText.js +0 -24
- package/dist/translate/traverseRichText.js.map +0 -1
- package/dist/translate/types.d.ts +0 -27
- package/dist/translate/types.d.ts.map +0 -1
- package/dist/translate/types.js +0 -3
- package/dist/translate/types.js.map +0 -1
- package/dist/translate/updateEntity.d.ts +0 -14
- package/dist/translate/updateEntity.d.ts.map +0 -1
- package/dist/translate/updateEntity.js +0 -26
- package/dist/translate/updateEntity.js.map +0 -1
- package/dist/types.d.ts.map +0 -1
- package/dist/types.js.map +0 -1
- package/dist/utils/chunkArray.d.ts +0 -2
- package/dist/utils/chunkArray.d.ts.map +0 -1
- package/dist/utils/chunkArray.js +0 -7
- package/dist/utils/chunkArray.js.map +0 -1
- package/dist/utils/isEmpty.d.ts +0 -2
- package/dist/utils/isEmpty.d.ts.map +0 -1
- package/dist/utils/isEmpty.js +0 -8
- package/dist/utils/isEmpty.js.map +0 -1
|
@@ -1,109 +0,0 @@
|
|
|
1
|
-
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
-
import { toast, useAllFormFields, useConfig, useDocumentInfo, useForm, useLocale, useModal, useServerFunctions, useTranslation } from '@payloadcms/ui';
|
|
3
|
-
import { reduceFieldsToValues } from 'payload/shared';
|
|
4
|
-
import { useEffect, useMemo, useState } from 'react';
|
|
5
|
-
import { createClient } from '../../api';
|
|
6
|
-
import { TranslatorContext } from './context';
|
|
7
|
-
const modalSlug = 'translator-modal';
|
|
8
|
-
export const TranslatorProvider = ({ children })=>{
|
|
9
|
-
const [resolver, setResolver] = useState(null);
|
|
10
|
-
const [data, dispatch] = useAllFormFields();
|
|
11
|
-
const { getFormState } = useServerFunctions();
|
|
12
|
-
const { collectionSlug, getDocPreferences, globalSlug, id } = useDocumentInfo();
|
|
13
|
-
const { setModified } = useForm();
|
|
14
|
-
const modal = useModal();
|
|
15
|
-
const { t } = useTranslation();
|
|
16
|
-
const resolverT = (key)=>{
|
|
17
|
-
if (!resolver) return '';
|
|
18
|
-
return t(`plugin-translator:resolver_${resolver}_${key}`);
|
|
19
|
-
};
|
|
20
|
-
const locale = useLocale();
|
|
21
|
-
const { config: { admin: { custom }, localization, routes: { api }, serverURL } } = useConfig();
|
|
22
|
-
const apiClient = createClient({
|
|
23
|
-
api,
|
|
24
|
-
serverURL
|
|
25
|
-
});
|
|
26
|
-
const resolverConfig = useMemo(()=>{
|
|
27
|
-
if (!resolver) return null;
|
|
28
|
-
const resolvers = custom?.translator?.resolvers || undefined;
|
|
29
|
-
if (!resolvers) return null;
|
|
30
|
-
const resolverConfig = resolvers.find((each)=>each.key === resolver);
|
|
31
|
-
return resolverConfig ?? null;
|
|
32
|
-
}, [
|
|
33
|
-
custom,
|
|
34
|
-
resolver
|
|
35
|
-
]);
|
|
36
|
-
if (!localization) throw new Error('Localization config is not provided and PluginTranslator is used');
|
|
37
|
-
const localesOptions = localization.locales.filter((each)=>each.code !== locale.code);
|
|
38
|
-
const [localeToTranslateFrom, setLocaleToTranslateFrom] = useState('');
|
|
39
|
-
useEffect(()=>{
|
|
40
|
-
const defaultFromOptions = localesOptions.find((each)=>localization.defaultLocale === each.code);
|
|
41
|
-
if (defaultFromOptions) setLocaleToTranslateFrom(defaultFromOptions.code);
|
|
42
|
-
setLocaleToTranslateFrom(localesOptions[0].code);
|
|
43
|
-
}, [
|
|
44
|
-
locale,
|
|
45
|
-
localesOptions,
|
|
46
|
-
localization.defaultLocale
|
|
47
|
-
]);
|
|
48
|
-
const closeTranslator = ()=>modal.closeModal(modalSlug);
|
|
49
|
-
const submit = async ({ emptyOnly })=>{
|
|
50
|
-
if (!resolver) return;
|
|
51
|
-
const args = {
|
|
52
|
-
collectionSlug,
|
|
53
|
-
data: reduceFieldsToValues(data, true),
|
|
54
|
-
emptyOnly,
|
|
55
|
-
globalSlug,
|
|
56
|
-
id: id === null ? undefined : id,
|
|
57
|
-
locale: locale.code,
|
|
58
|
-
localeFrom: localeToTranslateFrom,
|
|
59
|
-
resolver
|
|
60
|
-
};
|
|
61
|
-
const result = await apiClient.translate(args);
|
|
62
|
-
if (!result.success) {
|
|
63
|
-
toast.error(resolverT('errorMessage'));
|
|
64
|
-
return;
|
|
65
|
-
}
|
|
66
|
-
const { state } = await getFormState({
|
|
67
|
-
collectionSlug,
|
|
68
|
-
data: result.translatedData,
|
|
69
|
-
docPermissions: {
|
|
70
|
-
fields: true,
|
|
71
|
-
update: true
|
|
72
|
-
},
|
|
73
|
-
docPreferences: await getDocPreferences(),
|
|
74
|
-
globalSlug,
|
|
75
|
-
locale: locale.code,
|
|
76
|
-
operation: 'update',
|
|
77
|
-
renderAllFields: true,
|
|
78
|
-
schemaPath: collectionSlug || globalSlug || ''
|
|
79
|
-
});
|
|
80
|
-
if (state) {
|
|
81
|
-
dispatch({
|
|
82
|
-
state,
|
|
83
|
-
type: 'REPLACE_STATE'
|
|
84
|
-
});
|
|
85
|
-
setModified(true);
|
|
86
|
-
toast.success(resolverT('successMessage'));
|
|
87
|
-
}
|
|
88
|
-
closeTranslator();
|
|
89
|
-
};
|
|
90
|
-
return /*#__PURE__*/ _jsx(TranslatorContext.Provider, {
|
|
91
|
-
value: {
|
|
92
|
-
closeTranslator,
|
|
93
|
-
localeToTranslateFrom,
|
|
94
|
-
localesOptions,
|
|
95
|
-
modalSlug,
|
|
96
|
-
openTranslator: ({ resolverKey })=>{
|
|
97
|
-
setResolver(resolverKey);
|
|
98
|
-
modal.openModal(modalSlug);
|
|
99
|
-
},
|
|
100
|
-
resolver: resolverConfig,
|
|
101
|
-
resolverT,
|
|
102
|
-
setLocaleToTranslateFrom,
|
|
103
|
-
submit
|
|
104
|
-
},
|
|
105
|
-
children: children
|
|
106
|
-
});
|
|
107
|
-
};
|
|
108
|
-
|
|
109
|
-
//# sourceMappingURL=TranslatorProvider.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/client/providers/Translator/TranslatorProvider.tsx"],"sourcesContent":["import {\r\n toast,\r\n useAllFormFields,\r\n useConfig,\r\n useDocumentInfo,\r\n useForm,\r\n useLocale,\r\n useModal,\r\n useServerFunctions,\r\n useTranslation,\r\n} from '@payloadcms/ui'\r\nimport { reduceFieldsToValues } from 'payload/shared'\r\nimport { type ReactNode, useEffect, useMemo, useState } from 'react'\r\n\r\nimport type { TranslateResolver } from '../../../resolvers/types'\r\nimport type { TranslateArgs } from '../../../translate/types'\r\nimport { createClient } from '../../api'\r\nimport { TranslatorContext } from './context'\r\n\r\nconst modalSlug = 'translator-modal'\r\n\r\nexport const TranslatorProvider = ({ children }: { children: ReactNode }) => {\r\n const [resolver, setResolver] = useState<null | string>(null)\r\n\r\n const [data, dispatch] = useAllFormFields()\r\n\r\n const { getFormState } = useServerFunctions()\r\n\r\n const { collectionSlug, getDocPreferences, globalSlug, id } = useDocumentInfo()\r\n\r\n const { setModified } = useForm()\r\n\r\n const modal = useModal()\r\n\r\n const { t } = useTranslation()\r\n\r\n const resolverT = (\r\n key:\r\n | 'buttonLabel'\r\n | 'errorMessage'\r\n | 'modalTitle'\r\n | 'submitButtonLabelEmpty'\r\n | 'submitButtonLabelFull'\r\n | 'successMessage',\r\n ) => {\r\n if (!resolver) return ''\r\n\r\n return t(`plugin-translator:resolver_${resolver}_${key}` as Parameters<typeof t>[0])\r\n }\r\n\r\n const locale = useLocale()\r\n\r\n const {\r\n config: {\r\n admin: { custom },\r\n localization,\r\n routes: { api },\r\n serverURL,\r\n },\r\n } = useConfig()\r\n\r\n const apiClient = createClient({ api, serverURL })\r\n\r\n const resolverConfig = useMemo(() => {\r\n if (!resolver) return null\r\n\r\n const resolvers = (custom?.translator?.resolvers as TranslateResolver[]) || undefined\r\n\r\n if (!resolvers) return null\r\n\r\n const resolverConfig = resolvers.find((each) => each.key === resolver)\r\n\r\n return resolverConfig ?? null\r\n }, [custom, resolver])\r\n\r\n if (!localization)\r\n throw new Error('Localization config is not provided and PluginTranslator is used')\r\n\r\n const localesOptions = localization.locales.filter((each) => each.code !== locale.code)\r\n\r\n const [localeToTranslateFrom, setLocaleToTranslateFrom] = useState<string>('')\r\n\r\n useEffect(() => {\r\n const defaultFromOptions = localesOptions.find(\r\n (each) => localization.defaultLocale === each.code,\r\n )\r\n\r\n if (defaultFromOptions) setLocaleToTranslateFrom(defaultFromOptions.code)\r\n setLocaleToTranslateFrom(localesOptions[0].code)\r\n }, [locale, localesOptions, localization.defaultLocale])\r\n\r\n const closeTranslator = () => modal.closeModal(modalSlug)\r\n\r\n const submit = async ({ emptyOnly }: { emptyOnly: boolean }) => {\r\n if (!resolver) return\r\n\r\n const args: TranslateArgs = {\r\n collectionSlug,\r\n data: reduceFieldsToValues(data, true),\r\n emptyOnly,\r\n globalSlug,\r\n id: id === null ? undefined : id,\r\n locale: locale.code,\r\n localeFrom: localeToTranslateFrom,\r\n resolver,\r\n }\r\n\r\n const result = await apiClient.translate(args)\r\n\r\n if (!result.success) {\r\n toast.error(resolverT('errorMessage'))\r\n\r\n return\r\n }\r\n\r\n const { state } = await getFormState({\r\n collectionSlug,\r\n data: result.translatedData,\r\n docPermissions: {\r\n fields: true,\r\n update: true,\r\n },\r\n docPreferences: await getDocPreferences(),\r\n globalSlug,\r\n locale: locale.code,\r\n operation: 'update',\r\n renderAllFields: true,\r\n schemaPath: collectionSlug || globalSlug || '',\r\n })\r\n\r\n if (state) {\r\n dispatch({\r\n state,\r\n type: 'REPLACE_STATE',\r\n })\r\n setModified(true)\r\n toast.success(resolverT('successMessage'))\r\n }\r\n closeTranslator()\r\n }\r\n\r\n return (\r\n <TranslatorContext.Provider\r\n value={{\r\n closeTranslator,\r\n localeToTranslateFrom,\r\n localesOptions,\r\n modalSlug,\r\n openTranslator: ({ resolverKey }) => {\r\n setResolver(resolverKey)\r\n modal.openModal(modalSlug)\r\n },\r\n resolver: resolverConfig,\r\n resolverT,\r\n setLocaleToTranslateFrom,\r\n submit,\r\n }}\r\n >\r\n {children}\r\n </TranslatorContext.Provider>\r\n )\r\n}\r\n"],"names":["toast","useAllFormFields","useConfig","useDocumentInfo","useForm","useLocale","useModal","useServerFunctions","useTranslation","reduceFieldsToValues","useEffect","useMemo","useState","createClient","TranslatorContext","modalSlug","TranslatorProvider","children","resolver","setResolver","data","dispatch","getFormState","collectionSlug","getDocPreferences","globalSlug","id","setModified","modal","t","resolverT","key","locale","config","admin","custom","localization","routes","api","serverURL","apiClient","resolverConfig","resolvers","translator","undefined","find","each","Error","localesOptions","locales","filter","code","localeToTranslateFrom","setLocaleToTranslateFrom","defaultFromOptions","defaultLocale","closeTranslator","closeModal","submit","emptyOnly","args","localeFrom","result","translate","success","error","state","translatedData","docPermissions","fields","update","docPreferences","operation","renderAllFields","schemaPath","type","Provider","value","openTranslator","resolverKey","openModal"],"mappings":"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"}
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
import type { Locale } from 'payload';
|
|
2
|
-
import type { TranslateResolver } from '../../../resolvers/types';
|
|
3
|
-
type TranslatorContextData = {
|
|
4
|
-
closeTranslator: () => void;
|
|
5
|
-
localeToTranslateFrom: string;
|
|
6
|
-
localesOptions: Locale[];
|
|
7
|
-
modalSlug: string;
|
|
8
|
-
openTranslator: (args: {
|
|
9
|
-
resolverKey: string;
|
|
10
|
-
}) => void;
|
|
11
|
-
resolver: TranslateResolver | null;
|
|
12
|
-
resolverT: (key: 'buttonLabel' | 'errorMessage' | 'modalTitle' | 'submitButtonLabelEmpty' | 'submitButtonLabelFull' | 'successMessage') => string;
|
|
13
|
-
setLocaleToTranslateFrom: (code: string) => void;
|
|
14
|
-
submit: (args: {
|
|
15
|
-
emptyOnly: boolean;
|
|
16
|
-
}) => Promise<void>;
|
|
17
|
-
};
|
|
18
|
-
export declare const TranslatorContext: import("react").Context<TranslatorContextData | null>;
|
|
19
|
-
export declare const useTranslator: () => TranslatorContextData;
|
|
20
|
-
export {};
|
|
21
|
-
//# sourceMappingURL=context.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../../../src/client/providers/Translator/context.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,SAAS,CAAA;AAGrC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAA;AAEjE,KAAK,qBAAqB,GAAG;IAC3B,eAAe,EAAE,MAAM,IAAI,CAAA;IAC3B,qBAAqB,EAAE,MAAM,CAAA;IAC7B,cAAc,EAAE,MAAM,EAAE,CAAA;IACxB,SAAS,EAAE,MAAM,CAAA;IACjB,cAAc,EAAE,CAAC,IAAI,EAAE;QAAE,WAAW,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAA;IACvD,QAAQ,EAAE,iBAAiB,GAAG,IAAI,CAAA;IAClC,SAAS,EAAE,CACT,GAAG,EACC,aAAa,GACb,cAAc,GACd,YAAY,GACZ,wBAAwB,GACxB,uBAAuB,GACvB,gBAAgB,KACjB,MAAM,CAAA;IACX,wBAAwB,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;IAChD,MAAM,EAAE,CAAC,IAAI,EAAE;QAAE,SAAS,EAAE,OAAO,CAAA;KAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;CACxD,CAAA;AAED,eAAO,MAAM,iBAAiB,uDAAoD,CAAA;AAElF,eAAO,MAAM,aAAa,6BAMzB,CAAA"}
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import { createContext, useContext } from 'react';
|
|
2
|
-
export const TranslatorContext = createContext(null);
|
|
3
|
-
export const useTranslator = ()=>{
|
|
4
|
-
const context = useContext(TranslatorContext);
|
|
5
|
-
if (context === null) throw new Error('useTranslator must be used within TranslatorProvider');
|
|
6
|
-
return context;
|
|
7
|
-
};
|
|
8
|
-
|
|
9
|
-
//# sourceMappingURL=context.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/client/providers/Translator/context.ts"],"sourcesContent":["import type { Locale } from 'payload'\r\nimport { createContext, useContext } from 'react'\r\n\r\nimport type { TranslateResolver } from '../../../resolvers/types'\r\n\r\ntype TranslatorContextData = {\r\n closeTranslator: () => void\r\n localeToTranslateFrom: string\r\n localesOptions: Locale[]\r\n modalSlug: string\r\n openTranslator: (args: { resolverKey: string }) => void\r\n resolver: TranslateResolver | null\r\n resolverT: (\r\n key:\r\n | 'buttonLabel'\r\n | 'errorMessage'\r\n | 'modalTitle'\r\n | 'submitButtonLabelEmpty'\r\n | 'submitButtonLabelFull'\r\n | 'successMessage',\r\n ) => string\r\n setLocaleToTranslateFrom: (code: string) => void\r\n submit: (args: { emptyOnly: boolean }) => Promise<void>\r\n}\r\n\r\nexport const TranslatorContext = createContext<TranslatorContextData | null>(null)\r\n\r\nexport const useTranslator = () => {\r\n const context = useContext(TranslatorContext)\r\n\r\n if (context === null) throw new Error('useTranslator must be used within TranslatorProvider')\r\n\r\n return context\r\n}\r\n"],"names":["createContext","useContext","TranslatorContext","useTranslator","context","Error"],"mappings":"AACA,SAASA,aAAa,EAAEC,UAAU,QAAQ,QAAO;AAwBjD,OAAO,MAAMC,oBAAoBF,cAA4C,MAAK;AAElF,OAAO,MAAMG,gBAAgB;IAC3B,MAAMC,UAAUH,WAAWC;IAE3B,IAAIE,YAAY,MAAM,MAAM,IAAIC,MAAM;IAEtC,OAAOD;AACT,EAAC"}
|
package/dist/exports/client.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/exports/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,0BAA0B,EAAE,MAAM,8DAA8D,CAAA"}
|
package/dist/exports/client.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/exports/client.ts"],"sourcesContent":["export { CustomButtonWithTranslator } from '../client/components/CustomButton/CustomButtonWithTranslator'\r\n"],"names":["CustomButtonWithTranslator"],"mappings":"AAAA,SAASA,0BAA0B,QAAQ,+DAA8D"}
|
|
@@ -1,87 +0,0 @@
|
|
|
1
|
-
export declare const translations: {
|
|
2
|
-
en: {
|
|
3
|
-
'plugin-translator': {
|
|
4
|
-
resolver_copy_buttonLabel: string;
|
|
5
|
-
resolver_copy_errorMessage: string;
|
|
6
|
-
resolver_copy_modalTitle: string;
|
|
7
|
-
resolver_copy_submitButtonLabelEmpty: string;
|
|
8
|
-
resolver_copy_submitButtonLabelFull: string;
|
|
9
|
-
resolver_copy_successMessage: string;
|
|
10
|
-
resolver_google_buttonLabel: string;
|
|
11
|
-
resolver_google_errorMessage: string;
|
|
12
|
-
resolver_google_modalTitle: string;
|
|
13
|
-
resolver_google_submitButtonLabelEmpty: string;
|
|
14
|
-
resolver_google_submitButtonLabelFull: string;
|
|
15
|
-
resolver_google_successMessage: string;
|
|
16
|
-
resolver_libre_buttonLabel: string;
|
|
17
|
-
resolver_libre_errorMessage: string;
|
|
18
|
-
resolver_libre_modalTitle: string;
|
|
19
|
-
resolver_libre_submitButtonLabelEmpty: string;
|
|
20
|
-
resolver_libre_submitButtonLabelFull: string;
|
|
21
|
-
resolver_libre_successMessage: string;
|
|
22
|
-
resolver_openai_buttonLabel: string;
|
|
23
|
-
resolver_openai_errorMessage: string;
|
|
24
|
-
resolver_openai_modalTitle: string;
|
|
25
|
-
resolver_openai_submitButtonLabelEmpty: string;
|
|
26
|
-
resolver_openai_submitButtonLabelFull: string;
|
|
27
|
-
resolver_openai_successMessage: string;
|
|
28
|
-
};
|
|
29
|
-
};
|
|
30
|
-
uk: {
|
|
31
|
-
'plugin-translator': {
|
|
32
|
-
resolver_copy_buttonLabel: string;
|
|
33
|
-
resolver_copy_errorMessage: string;
|
|
34
|
-
resolver_copy_modalTitle: string;
|
|
35
|
-
resolver_copy_submitButtonLabelEmpty: string;
|
|
36
|
-
resolver_copy_submitButtonLabelFull: string;
|
|
37
|
-
resolver_copy_successMessage: string;
|
|
38
|
-
resolver_google_buttonLabel: string;
|
|
39
|
-
resolver_google_errorMessage: string;
|
|
40
|
-
resolver_google_modalTitle: string;
|
|
41
|
-
resolver_google_submitButtonLabelEmpty: string;
|
|
42
|
-
resolver_google_submitButtonLabelFull: string;
|
|
43
|
-
resolver_google_successMessage: string;
|
|
44
|
-
resolver_libre_buttonLabel: string;
|
|
45
|
-
resolver_libre_errorMessage: string;
|
|
46
|
-
resolver_libre_modalTitle: string;
|
|
47
|
-
resolver_libre_submitButtonLabelEmpty: string;
|
|
48
|
-
resolver_libre_submitButtonLabelFull: string;
|
|
49
|
-
resolver_libre_successMessage: string;
|
|
50
|
-
resolver_openai_buttonLabel: string;
|
|
51
|
-
resolver_openai_errorMessage: string;
|
|
52
|
-
resolver_openai_modalTitle: string;
|
|
53
|
-
resolver_openai_submitButtonLabelEmpty: string;
|
|
54
|
-
resolver_openai_submitButtonLabelFull: string;
|
|
55
|
-
resolver_openai_successMessage: string;
|
|
56
|
-
};
|
|
57
|
-
};
|
|
58
|
-
zh: {
|
|
59
|
-
'plugin-translator': {
|
|
60
|
-
resolver_copy_buttonLabel: string;
|
|
61
|
-
resolver_copy_errorMessage: string;
|
|
62
|
-
resolver_copy_modalTitle: string;
|
|
63
|
-
resolver_copy_submitButtonLabelEmpty: string;
|
|
64
|
-
resolver_copy_submitButtonLabelFull: string;
|
|
65
|
-
resolver_copy_successMessage: string;
|
|
66
|
-
resolver_google_buttonLabel: string;
|
|
67
|
-
resolver_google_errorMessage: string;
|
|
68
|
-
resolver_google_modalTitle: string;
|
|
69
|
-
resolver_google_submitButtonLabelEmpty: string;
|
|
70
|
-
resolver_google_submitButtonLabelFull: string;
|
|
71
|
-
resolver_google_successMessage: string;
|
|
72
|
-
resolver_libre_buttonLabel: string;
|
|
73
|
-
resolver_libre_errorMessage: string;
|
|
74
|
-
resolver_libre_modalTitle: string;
|
|
75
|
-
resolver_libre_submitButtonLabelEmpty: string;
|
|
76
|
-
resolver_libre_submitButtonLabelFull: string;
|
|
77
|
-
resolver_libre_successMessage: string;
|
|
78
|
-
resolver_openai_buttonLabel: string;
|
|
79
|
-
resolver_openai_errorMessage: string;
|
|
80
|
-
resolver_openai_modalTitle: string;
|
|
81
|
-
resolver_openai_submitButtonLabelEmpty: string;
|
|
82
|
-
resolver_openai_submitButtonLabelFull: string;
|
|
83
|
-
resolver_openai_successMessage: string;
|
|
84
|
-
};
|
|
85
|
-
};
|
|
86
|
-
};
|
|
87
|
-
//# sourceMappingURL=i18n-translations.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"i18n-translations.d.ts","sourceRoot":"","sources":["../src/i18n-translations.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAkGxB,CAAA"}
|
|
@@ -1,88 +0,0 @@
|
|
|
1
|
-
export const translations = {
|
|
2
|
-
en: {
|
|
3
|
-
'plugin-translator': {
|
|
4
|
-
resolver_copy_buttonLabel: 'Copy from other locale',
|
|
5
|
-
resolver_copy_errorMessage: 'An error occurred when trying to translate the data',
|
|
6
|
-
resolver_copy_modalTitle: 'Choose the locale to copy from',
|
|
7
|
-
resolver_copy_submitButtonLabelEmpty: 'Copy only empty fields',
|
|
8
|
-
resolver_copy_submitButtonLabelFull: 'Copy all',
|
|
9
|
-
resolver_copy_successMessage: 'Successfully copied. Press "Save" to apply the changes.',
|
|
10
|
-
resolver_google_buttonLabel: 'Google Translate',
|
|
11
|
-
resolver_google_errorMessage: 'An error occurred when trying to translate the data',
|
|
12
|
-
resolver_google_modalTitle: 'Choose the locale to translate from',
|
|
13
|
-
resolver_google_submitButtonLabelEmpty: 'Translate only empty fields',
|
|
14
|
-
resolver_google_submitButtonLabelFull: 'Translate all',
|
|
15
|
-
resolver_google_successMessage: 'Successfully translated. Press "Save" to apply the changes.',
|
|
16
|
-
resolver_libre_buttonLabel: 'Libre Translate',
|
|
17
|
-
resolver_libre_errorMessage: 'An error occurred when trying to translate the data',
|
|
18
|
-
resolver_libre_modalTitle: 'Choose the locale to translate from',
|
|
19
|
-
resolver_libre_submitButtonLabelEmpty: 'Translate only empty fields',
|
|
20
|
-
resolver_libre_submitButtonLabelFull: 'Translate all',
|
|
21
|
-
resolver_libre_successMessage: 'Successfully translated. Press "Save" to apply the changes.',
|
|
22
|
-
resolver_openai_buttonLabel: 'AI Translate',
|
|
23
|
-
resolver_openai_errorMessage: 'An error occurred when trying to translate the data',
|
|
24
|
-
resolver_openai_modalTitle: 'Choose the locale to translate from',
|
|
25
|
-
resolver_openai_submitButtonLabelEmpty: 'Translate only empty fields',
|
|
26
|
-
resolver_openai_submitButtonLabelFull: 'Translate all',
|
|
27
|
-
resolver_openai_successMessage: 'Successfully translated. Press "Save" to apply the changes.'
|
|
28
|
-
}
|
|
29
|
-
},
|
|
30
|
-
uk: {
|
|
31
|
-
'plugin-translator': {
|
|
32
|
-
resolver_copy_buttonLabel: 'Копіювати з іншої локалі',
|
|
33
|
-
resolver_copy_errorMessage: 'Сталася помилка під час спроби перекладу даних',
|
|
34
|
-
resolver_copy_modalTitle: 'Виберіть локаль для копіювання',
|
|
35
|
-
resolver_copy_submitButtonLabelEmpty: 'Копіювати лише порожні поля',
|
|
36
|
-
resolver_copy_submitButtonLabelFull: 'Копіювати все',
|
|
37
|
-
resolver_copy_successMessage: 'Успішно скопійовано. Натисніть "Зберегти", щоб застосувати зміни.',
|
|
38
|
-
resolver_google_buttonLabel: 'Переклад Google',
|
|
39
|
-
resolver_google_errorMessage: 'Сталася помилка під час спроби перекладу даних',
|
|
40
|
-
resolver_google_modalTitle: 'Виберіть локаль для перекладу',
|
|
41
|
-
resolver_google_submitButtonLabelEmpty: 'Перекласти лише порожні поля',
|
|
42
|
-
resolver_google_submitButtonLabelFull: 'Перекласти все',
|
|
43
|
-
resolver_google_successMessage: 'Успішно перекладено. Натисніть "Зберегти", щоб застосувати зміни.',
|
|
44
|
-
resolver_libre_buttonLabel: 'Переклад Libre',
|
|
45
|
-
resolver_libre_errorMessage: 'Сталася помилка під час спроби перекладу даних',
|
|
46
|
-
resolver_libre_modalTitle: 'Виберіть локаль для перекладу',
|
|
47
|
-
resolver_libre_submitButtonLabelEmpty: 'Перекласти лише порожні поля',
|
|
48
|
-
resolver_libre_submitButtonLabelFull: 'Перекласти все',
|
|
49
|
-
resolver_libre_successMessage: 'Успішно перекладено. Натисніть "Зберегти", щоб застосувати зміни.',
|
|
50
|
-
resolver_openai_buttonLabel: 'Переклад AI',
|
|
51
|
-
resolver_openai_errorMessage: 'Сталася помилка під час спроби перекладу даних',
|
|
52
|
-
resolver_openai_modalTitle: 'Виберіть локаль для перекладу',
|
|
53
|
-
resolver_openai_submitButtonLabelEmpty: 'Перекласти лише порожні поля',
|
|
54
|
-
resolver_openai_submitButtonLabelFull: 'Перекласти все',
|
|
55
|
-
resolver_openai_successMessage: 'Успішно перекладено. Натисніть "Зберегти", щоб застосувати зміни.'
|
|
56
|
-
}
|
|
57
|
-
},
|
|
58
|
-
zh: {
|
|
59
|
-
'plugin-translator': {
|
|
60
|
-
resolver_copy_buttonLabel: '从其他语言复制',
|
|
61
|
-
resolver_copy_errorMessage: '尝试翻译数据时发生错误',
|
|
62
|
-
resolver_copy_modalTitle: '选择要复制的语言',
|
|
63
|
-
resolver_copy_submitButtonLabelEmpty: '仅复制空字段',
|
|
64
|
-
resolver_copy_submitButtonLabelFull: '复制全部',
|
|
65
|
-
resolver_copy_successMessage: '复制成功。按下“保存”以应用更改。',
|
|
66
|
-
resolver_google_buttonLabel: '谷歌翻译',
|
|
67
|
-
resolver_google_errorMessage: '尝试翻译数据时发生错误',
|
|
68
|
-
resolver_google_modalTitle: '选择要翻译的语言',
|
|
69
|
-
resolver_google_submitButtonLabelEmpty: '仅翻译空字段',
|
|
70
|
-
resolver_google_submitButtonLabelFull: '翻译全部',
|
|
71
|
-
resolver_google_successMessage: '翻译成功。按下“保存”以应用更改。',
|
|
72
|
-
resolver_libre_buttonLabel: '自由翻译',
|
|
73
|
-
resolver_libre_errorMessage: '尝试翻译数据时发生错误',
|
|
74
|
-
resolver_libre_modalTitle: '选择要翻译的语言',
|
|
75
|
-
resolver_libre_submitButtonLabelEmpty: '仅翻译空字段',
|
|
76
|
-
resolver_libre_submitButtonLabelFull: '翻译全部',
|
|
77
|
-
resolver_libre_successMessage: '翻译成功。按下“保存”以应用更改。',
|
|
78
|
-
resolver_openai_buttonLabel: 'AI翻译',
|
|
79
|
-
resolver_openai_errorMessage: '尝试翻译数据时发生错误',
|
|
80
|
-
resolver_openai_modalTitle: '选择要翻译的语言',
|
|
81
|
-
resolver_openai_submitButtonLabelEmpty: '仅翻译空字段',
|
|
82
|
-
resolver_openai_submitButtonLabelFull: '翻译全部',
|
|
83
|
-
resolver_openai_successMessage: '翻译成功。按下“保存”以应用更改。'
|
|
84
|
-
}
|
|
85
|
-
}
|
|
86
|
-
};
|
|
87
|
-
|
|
88
|
-
//# sourceMappingURL=i18n-translations.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/i18n-translations.ts"],"sourcesContent":["export const translations = {\r\n en: {\r\n 'plugin-translator': {\r\n resolver_copy_buttonLabel: 'Copy from other locale',\r\n resolver_copy_errorMessage: 'An error occurred when trying to translate the data',\r\n resolver_copy_modalTitle: 'Choose the locale to copy from',\r\n resolver_copy_submitButtonLabelEmpty: 'Copy only empty fields',\r\n resolver_copy_submitButtonLabelFull: 'Copy all',\r\n resolver_copy_successMessage: 'Successfully copied. Press \"Save\" to apply the changes.',\r\n\r\n resolver_google_buttonLabel: 'Google Translate',\r\n resolver_google_errorMessage: 'An error occurred when trying to translate the data',\r\n resolver_google_modalTitle: 'Choose the locale to translate from',\r\n resolver_google_submitButtonLabelEmpty: 'Translate only empty fields',\r\n resolver_google_submitButtonLabelFull: 'Translate all',\r\n resolver_google_successMessage: 'Successfully translated. Press \"Save\" to apply the changes.',\r\n\r\n resolver_libre_buttonLabel: 'Libre Translate',\r\n resolver_libre_errorMessage: 'An error occurred when trying to translate the data',\r\n resolver_libre_modalTitle: 'Choose the locale to translate from',\r\n resolver_libre_submitButtonLabelEmpty: 'Translate only empty fields',\r\n resolver_libre_submitButtonLabelFull: 'Translate all',\r\n resolver_libre_successMessage: 'Successfully translated. Press \"Save\" to apply the changes.',\r\n\r\n resolver_openai_buttonLabel: 'AI Translate',\r\n resolver_openai_errorMessage: 'An error occurred when trying to translate the data',\r\n resolver_openai_modalTitle: 'Choose the locale to translate from',\r\n resolver_openai_submitButtonLabelEmpty: 'Translate only empty fields',\r\n resolver_openai_submitButtonLabelFull: 'Translate all',\r\n resolver_openai_successMessage: 'Successfully translated. Press \"Save\" to apply the changes.',\r\n },\r\n },\r\n uk: {\r\n 'plugin-translator': {\r\n resolver_copy_buttonLabel: 'Копіювати з іншої локалі',\r\n resolver_copy_errorMessage: 'Сталася помилка під час спроби перекладу даних',\r\n resolver_copy_modalTitle: 'Виберіть локаль для копіювання',\r\n resolver_copy_submitButtonLabelEmpty: 'Копіювати лише порожні поля',\r\n resolver_copy_submitButtonLabelFull: 'Копіювати все',\r\n resolver_copy_successMessage:\r\n 'Успішно скопійовано. Натисніть \"Зберегти\", щоб застосувати зміни.',\r\n\r\n resolver_google_buttonLabel: 'Переклад Google',\r\n resolver_google_errorMessage: 'Сталася помилка під час спроби перекладу даних',\r\n resolver_google_modalTitle: 'Виберіть локаль для перекладу',\r\n resolver_google_submitButtonLabelEmpty: 'Перекласти лише порожні поля',\r\n resolver_google_submitButtonLabelFull: 'Перекласти все',\r\n resolver_google_successMessage:\r\n 'Успішно перекладено. Натисніть \"Зберегти\", щоб застосувати зміни.',\r\n\r\n resolver_libre_buttonLabel: 'Переклад Libre',\r\n resolver_libre_errorMessage: 'Сталася помилка під час спроби перекладу даних',\r\n resolver_libre_modalTitle: 'Виберіть локаль для перекладу',\r\n resolver_libre_submitButtonLabelEmpty: 'Перекласти лише порожні поля',\r\n resolver_libre_submitButtonLabelFull: 'Перекласти все',\r\n resolver_libre_successMessage:\r\n 'Успішно перекладено. Натисніть \"Зберегти\", щоб застосувати зміни.',\r\n\r\n resolver_openai_buttonLabel: 'Переклад AI',\r\n resolver_openai_errorMessage: 'Сталася помилка під час спроби перекладу даних',\r\n resolver_openai_modalTitle: 'Виберіть локаль для перекладу',\r\n resolver_openai_submitButtonLabelEmpty: 'Перекласти лише порожні поля',\r\n resolver_openai_submitButtonLabelFull: 'Перекласти все',\r\n resolver_openai_successMessage:\r\n 'Успішно перекладено. Натисніть \"Зберегти\", щоб застосувати зміни.',\r\n },\r\n },\r\n zh: {\r\n 'plugin-translator': {\r\n resolver_copy_buttonLabel: '从其他语言复制',\r\n resolver_copy_errorMessage: '尝试翻译数据时发生错误',\r\n resolver_copy_modalTitle: '选择要复制的语言',\r\n resolver_copy_submitButtonLabelEmpty: '仅复制空字段',\r\n resolver_copy_submitButtonLabelFull: '复制全部',\r\n resolver_copy_successMessage: '复制成功。按下“保存”以应用更改。',\r\n\r\n resolver_google_buttonLabel: '谷歌翻译',\r\n resolver_google_errorMessage: '尝试翻译数据时发生错误',\r\n resolver_google_modalTitle: '选择要翻译的语言',\r\n resolver_google_submitButtonLabelEmpty: '仅翻译空字段',\r\n resolver_google_submitButtonLabelFull: '翻译全部',\r\n resolver_google_successMessage: '翻译成功。按下“保存”以应用更改。',\r\n\r\n resolver_libre_buttonLabel: '自由翻译',\r\n resolver_libre_errorMessage: '尝试翻译数据时发生错误',\r\n resolver_libre_modalTitle: '选择要翻译的语言',\r\n resolver_libre_submitButtonLabelEmpty: '仅翻译空字段',\r\n resolver_libre_submitButtonLabelFull: '翻译全部',\r\n resolver_libre_successMessage: '翻译成功。按下“保存”以应用更改。',\r\n\r\n resolver_openai_buttonLabel: 'AI翻译',\r\n resolver_openai_errorMessage: '尝试翻译数据时发生错误',\r\n resolver_openai_modalTitle: '选择要翻译的语言',\r\n resolver_openai_submitButtonLabelEmpty: '仅翻译空字段',\r\n resolver_openai_submitButtonLabelFull: '翻译全部',\r\n resolver_openai_successMessage: '翻译成功。按下“保存”以应用更改。',\r\n },\r\n },\r\n}\r\n"],"names":["translations","en","resolver_copy_buttonLabel","resolver_copy_errorMessage","resolver_copy_modalTitle","resolver_copy_submitButtonLabelEmpty","resolver_copy_submitButtonLabelFull","resolver_copy_successMessage","resolver_google_buttonLabel","resolver_google_errorMessage","resolver_google_modalTitle","resolver_google_submitButtonLabelEmpty","resolver_google_submitButtonLabelFull","resolver_google_successMessage","resolver_libre_buttonLabel","resolver_libre_errorMessage","resolver_libre_modalTitle","resolver_libre_submitButtonLabelEmpty","resolver_libre_submitButtonLabelFull","resolver_libre_successMessage","resolver_openai_buttonLabel","resolver_openai_errorMessage","resolver_openai_modalTitle","resolver_openai_submitButtonLabelEmpty","resolver_openai_submitButtonLabelFull","resolver_openai_successMessage","uk","zh"],"mappings":"AAAA,OAAO,MAAMA,eAAe;IAC1BC,IAAI;QACF,qBAAqB;YACnBC,2BAA2B;YAC3BC,4BAA4B;YAC5BC,0BAA0B;YAC1BC,sCAAsC;YACtCC,qCAAqC;YACrCC,8BAA8B;YAE9BC,6BAA6B;YAC7BC,8BAA8B;YAC9BC,4BAA4B;YAC5BC,wCAAwC;YACxCC,uCAAuC;YACvCC,gCAAgC;YAEhCC,4BAA4B;YAC5BC,6BAA6B;YAC7BC,2BAA2B;YAC3BC,uCAAuC;YACvCC,sCAAsC;YACtCC,+BAA+B;YAE/BC,6BAA6B;YAC7BC,8BAA8B;YAC9BC,4BAA4B;YAC5BC,wCAAwC;YACxCC,uCAAuC;YACvCC,gCAAgC;QAClC;IACF;IACAC,IAAI;QACF,qBAAqB;YACnBxB,2BAA2B;YAC3BC,4BAA4B;YAC5BC,0BAA0B;YAC1BC,sCAAsC;YACtCC,qCAAqC;YACrCC,8BACE;YAEFC,6BAA6B;YAC7BC,8BAA8B;YAC9BC,4BAA4B;YAC5BC,wCAAwC;YACxCC,uCAAuC;YACvCC,gCACE;YAEFC,4BAA4B;YAC5BC,6BAA6B;YAC7BC,2BAA2B;YAC3BC,uCAAuC;YACvCC,sCAAsC;YACtCC,+BACE;YAEFC,6BAA6B;YAC7BC,8BAA8B;YAC9BC,4BAA4B;YAC5BC,wCAAwC;YACxCC,uCAAuC;YACvCC,gCACE;QACJ;IACF;IACAE,IAAI;QACF,qBAAqB;YACnBzB,2BAA2B;YAC3BC,4BAA4B;YAC5BC,0BAA0B;YAC1BC,sCAAsC;YACtCC,qCAAqC;YACrCC,8BAA8B;YAE9BC,6BAA6B;YAC7BC,8BAA8B;YAC9BC,4BAA4B;YAC5BC,wCAAwC;YACxCC,uCAAuC;YACvCC,gCAAgC;YAEhCC,4BAA4B;YAC5BC,6BAA6B;YAC7BC,2BAA2B;YAC3BC,uCAAuC;YACvCC,sCAAsC;YACtCC,+BAA+B;YAE/BC,6BAA6B;YAC7BC,8BAA8B;YAC9BC,4BAA4B;YAC5BC,wCAAwC;YACxCC,uCAAuC;YACvCC,gCAAgC;QAClC;IACF;AACF,EAAC"}
|
package/dist/index.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAsC,MAAM,EAAE,MAAM,SAAS,CAAA;AAMzE,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAA;AAC1D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAA;AAE/C,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAA;AAE/C,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AAEnD,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAA;AAE1D,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AACnD,cAAc,mBAAmB,CAAA;AAEjC,OAAO,EAAE,kBAAkB,EAAE,CAAA;AAE7B,eAAO,MAAM,UAAU,EAAE,CAAC,YAAY,EAAE,gBAAgB,KAAK,MA+E5D,CAAA"}
|
package/dist/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts"],"sourcesContent":["import type { CollectionSlug, Config, GlobalSlug, Plugin } from 'payload'\r\nimport { deepMerge } from 'payload/shared'\r\n\r\nimport { CustomButton } from './client/components/CustomButton'\r\nimport { translations } from './i18n-translations'\r\nimport { translateEndpoint } from './translate/endpoint'\r\nimport { translateOperation } from './translate/operation'\r\nimport type { TranslatorConfig } from './types'\r\n\r\nexport { copyResolver } from './resolvers/copy'\r\n\r\nexport { googleResolver } from './resolvers/google'\r\n\r\nexport { libreResolver } from './resolvers/libreTranslate'\r\n\r\nexport { openAIResolver } from './resolvers/openAI'\r\nexport * from './resolvers/types'\r\n\r\nexport { translateOperation }\r\n\r\nexport const translator: (pluginConfig: TranslatorConfig) => Plugin = (pluginConfig) => {\r\n return (config) => {\r\n if (pluginConfig.disabled || !config.localization || config.localization.locales.length < 2)\r\n return config\r\n\r\n const updatedConfig: Config = {\r\n ...config,\r\n admin: {\r\n ...(config.admin ?? {}),\r\n custom: {\r\n ...(config.admin?.custom ?? {}),\r\n translator: {\r\n resolvers: pluginConfig.resolvers.map(({ key }) => ({ key }))\r\n }\r\n }\r\n },\r\n collections:\r\n config.collections?.map((collection) => {\r\n if (!pluginConfig.collections.includes(collection.slug as CollectionSlug))\r\n return collection\r\n\r\n return {\r\n ...collection,\r\n admin: {\r\n ...(collection.admin ?? {}),\r\n components: {\r\n ...(collection.admin?.components ?? {}),\r\n edit: {\r\n ...(collection.admin?.components?.edit ?? {}),\r\n PublishButton: CustomButton('publish'),\r\n SaveButton: CustomButton('save')\r\n }\r\n }\r\n }\r\n }\r\n }) ?? [],\r\n custom: {\r\n ...(config.custom ?? {}),\r\n translator: {\r\n ...pluginConfig\r\n }\r\n },\r\n endpoints: [\r\n ...(config.endpoints ?? []),\r\n {\r\n handler: translateEndpoint,\r\n method: 'post',\r\n path: '/translator/translate'\r\n }\r\n ],\r\n globals:\r\n config.globals?.map((global) => {\r\n if (!pluginConfig.globals.includes(global.slug as GlobalSlug)) return global\r\n\r\n return {\r\n ...global,\r\n admin: {\r\n ...(global.admin ?? {}),\r\n components: {\r\n ...(global.admin?.components ?? {}),\r\n elements: {\r\n ...(global.admin?.components?.elements ?? {}),\r\n PublishButton: CustomButton('publish'),\r\n SaveButton: CustomButton('save')\r\n }\r\n }\r\n }\r\n }\r\n }) ?? [],\r\n i18n: {\r\n ...config.i18n,\r\n translations: {\r\n ...deepMerge(config.i18n?.translations ?? {}, translations)\r\n }\r\n }\r\n }\r\n\r\n return updatedConfig\r\n }\r\n}\r\n"],"names":["deepMerge","CustomButton","translations","translateEndpoint","translateOperation","copyResolver","googleResolver","libreResolver","openAIResolver","translator","pluginConfig","config","disabled","localization","locales","length","updatedConfig","admin","custom","resolvers","map","key","collections","collection","includes","slug","components","edit","PublishButton","SaveButton","endpoints","handler","method","path","globals","global","elements","i18n"],"mappings":"AACA,SAASA,SAAS,QAAQ,iBAAgB;AAE1C,SAASC,YAAY,QAAQ,mCAAkC;AAC/D,SAASC,YAAY,QAAQ,sBAAqB;AAClD,SAASC,iBAAiB,QAAQ,uBAAsB;AACxD,SAASC,kBAAkB,QAAQ,wBAAuB;AAG1D,SAASC,YAAY,QAAQ,mBAAkB;AAE/C,SAASC,cAAc,QAAQ,qBAAoB;AAEnD,SAASC,aAAa,QAAQ,6BAA4B;AAE1D,SAASC,cAAc,QAAQ,qBAAoB;AACnD,cAAc,oBAAmB;AAEjC,SAASJ,kBAAkB,GAAE;AAE7B,OAAO,MAAMK,aAAyD,CAACC;IACrE,OAAO,CAACC;QACN,IAAID,aAAaE,QAAQ,IAAI,CAACD,OAAOE,YAAY,IAAIF,OAAOE,YAAY,CAACC,OAAO,CAACC,MAAM,GAAG,GACxF,OAAOJ;QAET,MAAMK,gBAAwB;YAC5B,GAAGL,MAAM;YACTM,OAAO;gBACL,GAAIN,OAAOM,KAAK,IAAI,CAAC,CAAC;gBACtBC,QAAQ;oBACN,GAAIP,OAAOM,KAAK,EAAEC,UAAU,CAAC,CAAC;oBAC9BT,YAAY;wBACVU,WAAWT,aAAaS,SAAS,CAACC,GAAG,CAAC,CAAC,EAAEC,GAAG,EAAE,GAAM,CAAA;gCAAEA;4BAAI,CAAA;oBAC5D;gBACF;YACF;YACAC,aACEX,OAAOW,WAAW,EAAEF,IAAI,CAACG;gBACvB,IAAI,CAACb,aAAaY,WAAW,CAACE,QAAQ,CAACD,WAAWE,IAAI,GACpD,OAAOF;gBAET,OAAO;oBACL,GAAGA,UAAU;oBACbN,OAAO;wBACL,GAAIM,WAAWN,KAAK,IAAI,CAAC,CAAC;wBAC1BS,YAAY;4BACV,GAAIH,WAAWN,KAAK,EAAES,cAAc,CAAC,CAAC;4BACtCC,MAAM;gCACJ,GAAIJ,WAAWN,KAAK,EAAES,YAAYC,QAAQ,CAAC,CAAC;gCAC5CC,eAAe3B,aAAa;gCAC5B4B,YAAY5B,aAAa;4BAC3B;wBACF;oBACF;gBACF;YACF,MAAM,EAAE;YACViB,QAAQ;gBACN,GAAIP,OAAOO,MAAM,IAAI,CAAC,CAAC;gBACvBT,YAAY;oBACV,GAAGC,YAAY;gBACjB;YACF;YACAoB,WAAW;mBACLnB,OAAOmB,SAAS,IAAI,EAAE;gBAC1B;oBACEC,SAAS5B;oBACT6B,QAAQ;oBACRC,MAAM;gBACR;aACD;YACDC,SACEvB,OAAOuB,OAAO,EAAEd,IAAI,CAACe;gBACnB,IAAI,CAACzB,aAAawB,OAAO,CAACV,QAAQ,CAACW,OAAOV,IAAI,GAAiB,OAAOU;gBAEtE,OAAO;oBACL,GAAGA,MAAM;oBACTlB,OAAO;wBACL,GAAIkB,OAAOlB,KAAK,IAAI,CAAC,CAAC;wBACtBS,YAAY;4BACV,GAAIS,OAAOlB,KAAK,EAAES,cAAc,CAAC,CAAC;4BAClCU,UAAU;gCACR,GAAID,OAAOlB,KAAK,EAAES,YAAYU,YAAY,CAAC,CAAC;gCAC5CR,eAAe3B,aAAa;gCAC5B4B,YAAY5B,aAAa;4BAC3B;wBACF;oBACF;gBACF;YACF,MAAM,EAAE;YACVoC,MAAM;gBACJ,GAAG1B,OAAO0B,IAAI;gBACdnC,cAAc;oBACZ,GAAGF,UAAUW,OAAO0B,IAAI,EAAEnC,gBAAgB,CAAC,GAAGA,aAAa;gBAC7D;YACF;QACF;QAEA,OAAOc;IACT;AACF,EAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"copy.d.ts","sourceRoot":"","sources":["../../src/resolvers/copy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAA;AAEhD,eAAO,MAAM,YAAY,QAAO,iBAY/B,CAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/resolvers/copy.ts"],"sourcesContent":["import type { TranslateResolver } from './types'\r\n\r\nexport const copyResolver = (): TranslateResolver => {\r\n return {\r\n key: 'copy',\r\n resolve: (args) => {\r\n const { texts } = args\r\n\r\n return {\r\n success: true,\r\n translatedTexts: texts,\r\n }\r\n },\r\n }\r\n}\r\n"],"names":["copyResolver","key","resolve","args","texts","success","translatedTexts"],"mappings":"AAEA,OAAO,MAAMA,eAAe;IAC1B,OAAO;QACLC,KAAK;QACLC,SAAS,CAACC;YACR,MAAM,EAAEC,KAAK,EAAE,GAAGD;YAElB,OAAO;gBACLE,SAAS;gBACTC,iBAAiBF;YACnB;QACF;IACF;AACF,EAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"google.d.ts","sourceRoot":"","sources":["../../src/resolvers/google.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAA;AAwBhD,MAAM,MAAM,oBAAoB,GAAG;IACjC,MAAM,EAAE,MAAM,CAAA;IACd;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB,CAAA;AAED,eAAO,MAAM,cAAc,GAAI,0BAG5B,oBAAoB,KAAG,iBAqDzB,CAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/resolvers/google.ts"],"sourcesContent":["import { chunkArray } from '../utils/chunkArray'\r\nimport type { TranslateResolver } from './types'\r\n\r\ntype GoogleResponse = {\r\n data: {\r\n data: {\r\n translations: {\r\n detectedSourceLanguage: string\r\n model: string\r\n translatedText: string\r\n }[]\r\n }\r\n }\r\n success: boolean\r\n}\r\n\r\nconst localeToCountryCodeMapper = {\r\n ua: 'uk',\r\n}\r\n\r\nconst mapLocale = (incoming: string) =>\r\n incoming in localeToCountryCodeMapper\r\n ? localeToCountryCodeMapper[incoming as keyof typeof localeToCountryCodeMapper]\r\n : incoming\r\n\r\nexport type GoogleResolverConfig = {\r\n apiKey: string\r\n /**\r\n * How many texts to include into 1 request\r\n * @default 100\r\n */\r\n chunkLength?: number\r\n}\r\n\r\nexport const googleResolver = ({\r\n apiKey,\r\n chunkLength = 100,\r\n}: GoogleResolverConfig): TranslateResolver => {\r\n return {\r\n key: 'google',\r\n resolve: async (args) => {\r\n const { localeFrom, localeTo, req, texts } = args\r\n\r\n const apiUrl = `https://translation.googleapis.com/language/translate/v2?key=${apiKey}`\r\n\r\n const responses: GoogleResponse[] = await Promise.all(\r\n chunkArray(texts, chunkLength).map((q) =>\r\n fetch(apiUrl, {\r\n body: JSON.stringify({\r\n q,\r\n source: mapLocale(localeFrom),\r\n target: mapLocale(localeTo),\r\n }),\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n },\r\n method: 'POST',\r\n }).then(async (res) => {\r\n const data = await res.json()\r\n\r\n if (!res.ok)\r\n req.payload.logger.info({\r\n googleResponse: data,\r\n message: 'An error occurred when trying to translate the data using Google API',\r\n })\r\n\r\n return {\r\n data,\r\n success: res.ok,\r\n }\r\n }),\r\n ),\r\n )\r\n\r\n if (responses.some((res) => !res.success)) {\r\n return {\r\n success: false,\r\n }\r\n }\r\n\r\n const translatedTexts = responses\r\n .flatMap((chunk) => chunk.data.data.translations)\r\n .map((translation) => translation.translatedText)\r\n\r\n return {\r\n success: true,\r\n translatedTexts,\r\n }\r\n },\r\n }\r\n}\r\n"],"names":["chunkArray","localeToCountryCodeMapper","ua","mapLocale","incoming","googleResolver","apiKey","chunkLength","key","resolve","args","localeFrom","localeTo","req","texts","apiUrl","responses","Promise","all","map","q","fetch","body","JSON","stringify","source","target","headers","method","then","res","data","json","ok","payload","logger","info","googleResponse","message","success","some","translatedTexts","flatMap","chunk","translations","translation","translatedText"],"mappings":"AAAA,SAASA,UAAU,QAAQ,sBAAqB;AAgBhD,MAAMC,4BAA4B;IAChCC,IAAI;AACN;AAEA,MAAMC,YAAY,CAACC,WACjBA,YAAYH,4BACRA,yBAAyB,CAACG,SAAmD,GAC7EA;AAWN,OAAO,MAAMC,iBAAiB,CAAC,EAC7BC,MAAM,EACNC,cAAc,GAAG,EACI;IACrB,OAAO;QACLC,KAAK;QACLC,SAAS,OAAOC;YACd,MAAM,EAAEC,UAAU,EAAEC,QAAQ,EAAEC,GAAG,EAAEC,KAAK,EAAE,GAAGJ;YAE7C,MAAMK,SAAS,CAAC,6DAA6D,EAAET,QAAQ;YAEvF,MAAMU,YAA8B,MAAMC,QAAQC,GAAG,CACnDlB,WAAWc,OAAOP,aAAaY,GAAG,CAAC,CAACC,IAClCC,MAAMN,QAAQ;oBACZO,MAAMC,KAAKC,SAAS,CAAC;wBACnBJ;wBACAK,QAAQtB,UAAUQ;wBAClBe,QAAQvB,UAAUS;oBACpB;oBACAe,SAAS;wBACP,gBAAgB;oBAClB;oBACAC,QAAQ;gBACV,GAAGC,IAAI,CAAC,OAAOC;oBACb,MAAMC,OAAO,MAAMD,IAAIE,IAAI;oBAE3B,IAAI,CAACF,IAAIG,EAAE,EACTpB,IAAIqB,OAAO,CAACC,MAAM,CAACC,IAAI,CAAC;wBACtBC,gBAAgBN;wBAChBO,SAAS;oBACX;oBAEF,OAAO;wBACLP;wBACAQ,SAAST,IAAIG,EAAE;oBACjB;gBACF;YAIJ,IAAIjB,UAAUwB,IAAI,CAAC,CAACV,MAAQ,CAACA,IAAIS,OAAO,GAAG;gBACzC,OAAO;oBACLA,SAAS;gBACX;YACF;YAEA,MAAME,kBAAkBzB,UACrB0B,OAAO,CAAC,CAACC,QAAUA,MAAMZ,IAAI,CAACA,IAAI,CAACa,YAAY,EAC/CzB,GAAG,CAAC,CAAC0B,cAAgBA,YAAYC,cAAc;YAElD,OAAO;gBACLP,SAAS;gBACTE;YACF;QACF;IACF;AACF,EAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"libreTranslate.d.ts","sourceRoot":"","sources":["../../src/resolvers/libreTranslate.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAA;AAkBhD,MAAM,MAAM,mBAAmB,GAAG;IAChC,MAAM,EAAE,MAAM,CAAA;IACd;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB;;;OAGG;IACH,GAAG,CAAC,EAAE,MAAM,CAAA;CACb,CAAA;AAED,eAAO,MAAM,aAAa,GAAI,+BAI3B,mBAAmB,KAAG,iBAqDxB,CAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/resolvers/libreTranslate.ts"],"sourcesContent":["import { chunkArray } from '../utils/chunkArray'\r\nimport type { TranslateResolver } from './types'\r\n\r\ntype LibreResponse = {\r\n data: {\r\n translatedText: string[]\r\n }\r\n success: boolean\r\n}\r\n\r\nconst localeToCountryCodeMapper = {\r\n ua: 'uk',\r\n}\r\n\r\nconst mapLocale = (incoming: string) =>\r\n incoming in localeToCountryCodeMapper\r\n ? localeToCountryCodeMapper[incoming as keyof typeof localeToCountryCodeMapper]\r\n : incoming\r\n\r\nexport type LibreResolverConfig = {\r\n apiKey: string\r\n /**\r\n * How many texts to include into 1 request\r\n * @default 100\r\n */\r\n chunkLength?: number\r\n /**\r\n * Custom url for the libre translate instance\r\n * @default \"https://libretranslate.com/translate\"\r\n */\r\n url?: string\r\n}\r\n\r\nexport const libreResolver = ({\r\n apiKey,\r\n chunkLength = 100,\r\n url = 'https://libretranslate.com/translate',\r\n}: LibreResolverConfig): TranslateResolver => {\r\n return {\r\n key: 'libre',\r\n resolve: async (args) => {\r\n const { localeFrom, localeTo, req, texts } = args\r\n\r\n const apiUrl = url\r\n\r\n const responses: LibreResponse[] = await Promise.all(\r\n chunkArray(texts, chunkLength).map((q) =>\r\n fetch(apiUrl, {\r\n body: JSON.stringify({\r\n api_key: apiKey,\r\n q,\r\n source: mapLocale(localeFrom),\r\n target: mapLocale(localeTo),\r\n }),\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n },\r\n method: 'POST',\r\n }).then(async (res) => {\r\n const data = await res.json()\r\n\r\n if (!res.ok)\r\n req.payload.logger.info({\r\n libreResponse: data,\r\n message:\r\n 'An error occurred when trying to translate the data using LibreTranslate API',\r\n })\r\n\r\n return {\r\n data,\r\n success: res.ok,\r\n }\r\n }),\r\n ),\r\n )\r\n\r\n if (responses.some((res) => !res.success)) {\r\n return {\r\n success: false,\r\n }\r\n }\r\n\r\n const translatedTexts = responses.flatMap((chunk) => chunk.data.translatedText)\r\n\r\n return {\r\n success: true,\r\n translatedTexts,\r\n }\r\n },\r\n }\r\n}\r\n"],"names":["chunkArray","localeToCountryCodeMapper","ua","mapLocale","incoming","libreResolver","apiKey","chunkLength","url","key","resolve","args","localeFrom","localeTo","req","texts","apiUrl","responses","Promise","all","map","q","fetch","body","JSON","stringify","api_key","source","target","headers","method","then","res","data","json","ok","payload","logger","info","libreResponse","message","success","some","translatedTexts","flatMap","chunk","translatedText"],"mappings":"AAAA,SAASA,UAAU,QAAQ,sBAAqB;AAUhD,MAAMC,4BAA4B;IAChCC,IAAI;AACN;AAEA,MAAMC,YAAY,CAACC,WACjBA,YAAYH,4BACRA,yBAAyB,CAACG,SAAmD,GAC7EA;AAgBN,OAAO,MAAMC,gBAAgB,CAAC,EAC5BC,MAAM,EACNC,cAAc,GAAG,EACjBC,MAAM,sCAAsC,EACxB;IACpB,OAAO;QACLC,KAAK;QACLC,SAAS,OAAOC;YACd,MAAM,EAAEC,UAAU,EAAEC,QAAQ,EAAEC,GAAG,EAAEC,KAAK,EAAE,GAAGJ;YAE7C,MAAMK,SAASR;YAEf,MAAMS,YAA6B,MAAMC,QAAQC,GAAG,CAClDnB,WAAWe,OAAOR,aAAaa,GAAG,CAAC,CAACC,IAClCC,MAAMN,QAAQ;oBACZO,MAAMC,KAAKC,SAAS,CAAC;wBACnBC,SAASpB;wBACTe;wBACAM,QAAQxB,UAAUS;wBAClBgB,QAAQzB,UAAUU;oBACpB;oBACAgB,SAAS;wBACP,gBAAgB;oBAClB;oBACAC,QAAQ;gBACV,GAAGC,IAAI,CAAC,OAAOC;oBACb,MAAMC,OAAO,MAAMD,IAAIE,IAAI;oBAE3B,IAAI,CAACF,IAAIG,EAAE,EACTrB,IAAIsB,OAAO,CAACC,MAAM,CAACC,IAAI,CAAC;wBACtBC,eAAeN;wBACfO,SACE;oBACJ;oBAEF,OAAO;wBACLP;wBACAQ,SAAST,IAAIG,EAAE;oBACjB;gBACF;YAIJ,IAAIlB,UAAUyB,IAAI,CAAC,CAACV,MAAQ,CAACA,IAAIS,OAAO,GAAG;gBACzC,OAAO;oBACLA,SAAS;gBACX;YACF;YAEA,MAAME,kBAAkB1B,UAAU2B,OAAO,CAAC,CAACC,QAAUA,MAAMZ,IAAI,CAACa,cAAc;YAE9E,OAAO;gBACLL,SAAS;gBACTE;YACF;QACF;IACF;AACF,EAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"openAI.d.ts","sourceRoot":"","sources":["../../src/resolvers/openAI.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAA;AAEhD,MAAM,MAAM,qBAAqB,GAAG,MAAM,CAAC,MAAM,GAAG,MAAM,EAAE,MAAM,CAAC,CAAA;AAEnE,MAAM,MAAM,YAAY,GAAG,CAAC,IAAI,EAAE;IAChC,UAAU,EAAE,MAAM,CAAA;IAClB,QAAQ,EAAE,MAAM,CAAA;IAChB,KAAK,EAAE,qBAAqB,CAAA;CAC7B,KAAK,MAAM,CAAA;AAEZ,MAAM,MAAM,oBAAoB,GAAG;IACjC,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,MAAM,CAAC,EAAE,YAAY,CAAA;CACtB,CAAA;AA6BD,eAAO,MAAM,cAAc,GAAI,iDAMG,oBAAoB,KAAG,iBAyHxD,CAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/resolvers/openAI.ts"],"sourcesContent":["import { chunkArray } from '../utils/chunkArray'\r\nimport type { TranslateResolver } from './types'\r\n\r\nexport type OpenAIMessageExchange = Record<string | number, string>\r\n\r\nexport type OpenAIPrompt = (args: {\r\n localeFrom: string\r\n localeTo: string\r\n texts: OpenAIMessageExchange\r\n}) => string\r\n\r\nexport type OpenAIResolverConfig = {\r\n apiKey: string\r\n baseUrl?: string\r\n /**\r\n * How many texts to include into 1 request\r\n * @default 100\r\n */\r\n chunkLength?: number\r\n /**\r\n * @default \"gpt-3.5-turbo\"\r\n */\r\n model?: string\r\n prompt?: OpenAIPrompt\r\n}\r\n\r\ntype OpenAIResponse = {\r\n choices: {\r\n message: {\r\n content: string\r\n }\r\n }[]\r\n}\r\n\r\nconst defaultPrompt: OpenAIPrompt = ({ localeFrom, localeTo, texts }) => {\r\n return `You are a machine translation service. Your task is to translate values in a strict JSON of key value pairs from ${localeFrom} to ${localeTo}.\r\n\r\n**INSTRUCTIONS:**\r\n1. **Translate each value**.\r\n2. The output **must valid JSON**.\r\n3. The output array **must have the exact same number of elements** as the input.\r\n4. Preserve the structure of the JSON array.\r\n5. Preserve JSON keys without translation.\r\n6. The **order of the elements must not change**.\r\n7. **Do not include any text, explanations, or remarks outside of the JSON array.**\r\n8. **Preserve any special characters, HTML tags, or formatting** present in the original strings.\r\n9. **Preserve urls, hrefs, and email addresses** without translation.\r\n10. RETURN ONLY THE RAW JSON, DO NOT RESPOND WITH ANYTHING ELSE, AND NO FORMATTING.\r\n\r\n**INPUT JSON TO TRANSLATE:**\r\n${JSON.stringify(texts)}`\r\n}\r\n\r\nexport const openAIResolver = ({\r\n apiKey,\r\n baseUrl,\r\n chunkLength = 100,\r\n model = 'gpt-3.5-turbo',\r\n prompt = defaultPrompt\r\n }: OpenAIResolverConfig): TranslateResolver => {\r\n return {\r\n key: 'openai',\r\n resolve: async ({ localeFrom, localeTo, req, texts }) => {\r\n const apiUrl = `${baseUrl || 'https://api.openai.com'}/v1/chat/completions`\r\n\r\n try {\r\n const response: {\r\n data: OpenAIResponse\r\n success: boolean\r\n }[] = await Promise.all(\r\n chunkArray(texts, chunkLength).map((texts) => {\r\n const structuredTexts = texts.reduce((acc, curr, index) => {\r\n acc[index + 1] = curr\r\n return acc\r\n }, {} as Record<number, string>)\r\n\r\n return fetch(apiUrl, {\r\n body: JSON.stringify({\r\n messages: [\r\n {\r\n content: prompt({ localeFrom, localeTo, texts: structuredTexts }),\r\n role: 'user'\r\n }\r\n ],\r\n model\r\n }),\r\n headers: {\r\n Authorization: `Bearer ${apiKey}`,\r\n 'Content-Type': 'application/json'\r\n },\r\n method: 'post'\r\n }).then(async (res) => {\r\n const data = await res.json()\r\n\r\n if (!res.ok)\r\n req.payload.logger.info({\r\n message: 'An error occurred when trying to translate the data using OpenAI API',\r\n openAIresponse: data\r\n })\r\n\r\n return {\r\n data,\r\n success: res.ok\r\n }\r\n })\r\n })\r\n )\r\n\r\n const translated: string[] = []\r\n\r\n for (const { data, success } of response) {\r\n if (!success)\r\n return {\r\n success: false as const\r\n }\r\n\r\n const content = data?.choices?.[0]?.message?.content\r\n\r\n if (!content) {\r\n req.payload.logger.error(\r\n 'An error occurred when trying to translate the data using OpenAI API - missing content in the response'\r\n )\r\n\r\n return {\r\n success: false as const\r\n }\r\n }\r\n\r\n const translatedStructuredTexts: OpenAIMessageExchange = JSON.parse(content)\r\n\r\n const translatedChunk: string[] = Object.values(translatedStructuredTexts)\r\n\r\n if (!Array.isArray(translatedChunk)) {\r\n req.payload.logger.error({\r\n data: translatedChunk,\r\n fullContent: content,\r\n message:\r\n 'An error occurred when trying to translate the data using OpenAI API - parsed content is not an array'\r\n })\r\n\r\n return {\r\n success: false as const\r\n }\r\n }\r\n\r\n for (const text of translatedChunk) {\r\n if (text && typeof text !== 'string') {\r\n req.payload.logger.error({\r\n chunkData: translatedChunk,\r\n data: text,\r\n fullContent: content,\r\n message:\r\n 'An error occurred when trying to translate the data using OpenAI API - parsed content is not a string'\r\n })\r\n\r\n return {\r\n success: false as const\r\n }\r\n }\r\n\r\n translated.push(text)\r\n }\r\n }\r\n\r\n return {\r\n success: true as const,\r\n translatedTexts: translated\r\n }\r\n } catch (e) {\r\n if (e instanceof Error) {\r\n req.payload.logger.info({\r\n message: 'An error occurred when trying to translate the data using OpenAI API',\r\n originalErr: e.message\r\n })\r\n }\r\n\r\n return { success: false as const }\r\n }\r\n }\r\n }\r\n}\r\n"],"names":["chunkArray","defaultPrompt","localeFrom","localeTo","texts","JSON","stringify","openAIResolver","apiKey","baseUrl","chunkLength","model","prompt","key","resolve","req","apiUrl","response","Promise","all","map","structuredTexts","reduce","acc","curr","index","fetch","body","messages","content","role","headers","Authorization","method","then","res","data","json","ok","payload","logger","info","message","openAIresponse","success","translated","choices","error","translatedStructuredTexts","parse","translatedChunk","Object","values","Array","isArray","fullContent","text","chunkData","push","translatedTexts","e","Error","originalErr"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/resolvers/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAE7C,MAAM,MAAM,qBAAqB,GAAG;IAClC,+BAA+B;IAC/B,UAAU,EAAE,MAAM,CAAA;IAClB,6BAA6B;IAC7B,QAAQ,EAAE,MAAM,CAAA;IAChB,GAAG,EAAE,cAAc,CAAA;IACnB,KAAK,EAAE,MAAM,EAAE,CAAA;CAChB,CAAA;AAED,MAAM,MAAM,yBAAyB,GACjC;IACE,OAAO,EAAE,KAAK,CAAA;CACf,GACD;IACE,OAAO,EAAE,IAAI,CAAA;IACb,eAAe,EAAE,MAAM,EAAE,CAAA;CAC1B,CAAA;AAEL,MAAM,MAAM,iBAAiB,GAAG;IAC9B,GAAG,EAAE,MAAM,CAAA;IACX,OAAO,EAAE,CACP,IAAI,EAAE,qBAAqB,KACxB,OAAO,CAAC,yBAAyB,CAAC,GAAG,yBAAyB,CAAA;CACpE,CAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/resolvers/types.ts"],"sourcesContent":["import type { PayloadRequest } from 'payload'\r\n\r\nexport type TranslateResolverArgs = {\r\n /** Locale to translate from */\r\n localeFrom: string\r\n /** Locale to translate to */\r\n localeTo: string\r\n req: PayloadRequest\r\n texts: string[]\r\n}\r\n\r\nexport type TranslateResolverResponse =\r\n | {\r\n success: false\r\n }\r\n | {\r\n success: true\r\n translatedTexts: string[]\r\n }\r\n\r\nexport type TranslateResolver = {\r\n key: string\r\n resolve: (\r\n args: TranslateResolverArgs,\r\n ) => Promise<TranslateResolverResponse> | TranslateResolverResponse\r\n}\r\n"],"names":[],"mappings":"AAoBA,WAKC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"endpoint.d.ts","sourceRoot":"","sources":["../../src/translate/endpoint.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAM7C,eAAO,MAAM,iBAAiB,EAAE,cAsB/B,CAAA"}
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
import { APIError } from 'payload';
|
|
2
|
-
import { translateOperation } from './operation';
|
|
3
|
-
export const translateEndpoint = async (req)=>{
|
|
4
|
-
if (!req.json) throw new APIError('Content-Type should be json');
|
|
5
|
-
const args = await req.json();
|
|
6
|
-
const { collectionSlug, data, emptyOnly, globalSlug, id, locale, localeFrom, resolver } = args;
|
|
7
|
-
const result = await translateOperation({
|
|
8
|
-
collectionSlug,
|
|
9
|
-
data,
|
|
10
|
-
emptyOnly,
|
|
11
|
-
globalSlug,
|
|
12
|
-
id,
|
|
13
|
-
locale,
|
|
14
|
-
localeFrom,
|
|
15
|
-
overrideAccess: false,
|
|
16
|
-
req,
|
|
17
|
-
resolver,
|
|
18
|
-
update: false
|
|
19
|
-
});
|
|
20
|
-
return Response.json(result);
|
|
21
|
-
};
|
|
22
|
-
|
|
23
|
-
//# sourceMappingURL=endpoint.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/translate/endpoint.ts"],"sourcesContent":["import type { PayloadHandler } from 'payload'\r\nimport { APIError } from 'payload'\r\n\r\nimport { translateOperation } from './operation'\r\nimport type { TranslateEndpointArgs } from './types'\r\n\r\nexport const translateEndpoint: PayloadHandler = async (req) => {\r\n if (!req.json) throw new APIError('Content-Type should be json')\r\n\r\n const args: TranslateEndpointArgs = await req.json()\r\n\r\n const { collectionSlug, data, emptyOnly, globalSlug, id, locale, localeFrom, resolver } = args\r\n\r\n const result = await translateOperation({\r\n collectionSlug,\r\n data,\r\n emptyOnly,\r\n globalSlug,\r\n id,\r\n locale,\r\n localeFrom,\r\n overrideAccess: false,\r\n req,\r\n resolver,\r\n update: false,\r\n })\r\n\r\n return Response.json(result)\r\n}\r\n"],"names":["APIError","translateOperation","translateEndpoint","req","json","args","collectionSlug","data","emptyOnly","globalSlug","id","locale","localeFrom","resolver","result","overrideAccess","update","Response"],"mappings":"AACA,SAASA,QAAQ,QAAQ,UAAS;AAElC,SAASC,kBAAkB,QAAQ,cAAa;AAGhD,OAAO,MAAMC,oBAAoC,OAAOC;IACtD,IAAI,CAACA,IAAIC,IAAI,EAAE,MAAM,IAAIJ,SAAS;IAElC,MAAMK,OAA8B,MAAMF,IAAIC,IAAI;IAElD,MAAM,EAAEE,cAAc,EAAEC,IAAI,EAAEC,SAAS,EAAEC,UAAU,EAAEC,EAAE,EAAEC,MAAM,EAAEC,UAAU,EAAEC,QAAQ,EAAE,GAAGR;IAE1F,MAAMS,SAAS,MAAMb,mBAAmB;QACtCK;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAG,gBAAgB;QAChBZ;QACAU;QACAG,QAAQ;IACV;IAEA,OAAOC,SAASb,IAAI,CAACU;AACvB,EAAC"}
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import type { PayloadRequest, SanitizedCollectionConfig, SanitizedGlobalConfig, TypeWithID } from 'payload';
|
|
2
|
-
type Args = {
|
|
3
|
-
collectionSlug?: string;
|
|
4
|
-
globalSlug?: string;
|
|
5
|
-
id?: number | string;
|
|
6
|
-
locale: string;
|
|
7
|
-
overrideAccess?: boolean;
|
|
8
|
-
req: PayloadRequest;
|
|
9
|
-
};
|
|
10
|
-
export type Doc = Record<string, unknown> & TypeWithID;
|
|
11
|
-
export declare const findEntityWithConfig: (args: Args) => Promise<{
|
|
12
|
-
config: SanitizedCollectionConfig | SanitizedGlobalConfig;
|
|
13
|
-
doc: Doc;
|
|
14
|
-
}>;
|
|
15
|
-
export {};
|
|
16
|
-
//# sourceMappingURL=findEntityWithConfig.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"findEntityWithConfig.d.ts","sourceRoot":"","sources":["../../src/translate/findEntityWithConfig.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAGV,cAAc,EACd,yBAAyB,EACzB,qBAAqB,EACrB,UAAU,EACX,MAAM,SAAS,CAAA;AAGhB,KAAK,IAAI,GAAG;IACV,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IACpB,MAAM,EAAE,MAAM,CAAA;IACd,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,GAAG,EAAE,cAAc,CAAA;CACpB,CAAA;AAED,MAAM,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,UAAU,CAAA;AAOtD,eAAO,MAAM,oBAAoB,GAC/B,MAAM,IAAI,KACT,OAAO,CAAC;IACT,MAAM,EAAE,yBAAyB,GAAG,qBAAqB,CAAA;IACzD,GAAG,EAAE,GAAG,CAAA;CACT,CA0CA,CAAA"}
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
import { APIError } from 'payload';
|
|
2
|
-
const findConfigBySlug = (slug, enities)=>enities.find((entity)=>entity.slug === slug);
|
|
3
|
-
export const findEntityWithConfig = async (args)=>{
|
|
4
|
-
const { collectionSlug, globalSlug, id, locale, overrideAccess, req } = args;
|
|
5
|
-
if (!collectionSlug && !globalSlug) throw new APIError('Bad Request', 400);
|
|
6
|
-
const { payload } = req;
|
|
7
|
-
const { config } = payload;
|
|
8
|
-
const isGlobal = !!globalSlug;
|
|
9
|
-
if (!isGlobal && !id) throw new APIError('Bad Request', 400);
|
|
10
|
-
const entityConfig = isGlobal ? findConfigBySlug(globalSlug, config.globals) : findConfigBySlug(collectionSlug, config.collections);
|
|
11
|
-
if (!entityConfig) throw new APIError('Bad Request', 400);
|
|
12
|
-
const docPromise = isGlobal ? payload.findGlobal({
|
|
13
|
-
depth: 0,
|
|
14
|
-
fallbackLocale: undefined,
|
|
15
|
-
locale: locale,
|
|
16
|
-
overrideAccess,
|
|
17
|
-
req,
|
|
18
|
-
slug: args.globalSlug
|
|
19
|
-
}) : payload.findByID({
|
|
20
|
-
collection: collectionSlug,
|
|
21
|
-
depth: 0,
|
|
22
|
-
fallbackLocale: undefined,
|
|
23
|
-
id: id,
|
|
24
|
-
locale: locale,
|
|
25
|
-
overrideAccess,
|
|
26
|
-
req
|
|
27
|
-
});
|
|
28
|
-
return {
|
|
29
|
-
config: entityConfig,
|
|
30
|
-
doc: await docPromise
|
|
31
|
-
};
|
|
32
|
-
};
|
|
33
|
-
|
|
34
|
-
//# sourceMappingURL=findEntityWithConfig.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/translate/findEntityWithConfig.ts"],"sourcesContent":["import type {\r\n CollectionSlug,\r\n GlobalSlug,\r\n PayloadRequest,\r\n SanitizedCollectionConfig,\r\n SanitizedGlobalConfig,\r\n TypeWithID,\r\n} from 'payload'\r\nimport { APIError } from 'payload'\r\n\r\ntype Args = {\r\n collectionSlug?: string\r\n globalSlug?: string\r\n id?: number | string\r\n locale: string\r\n overrideAccess?: boolean\r\n req: PayloadRequest\r\n}\r\n\r\nexport type Doc = Record<string, unknown> & TypeWithID\r\n\r\nconst findConfigBySlug = (\r\n slug: string,\r\n enities: SanitizedCollectionConfig[] | SanitizedGlobalConfig[],\r\n) => enities.find((entity) => entity.slug === slug)\r\n\r\nexport const findEntityWithConfig = async (\r\n args: Args,\r\n): Promise<{\r\n config: SanitizedCollectionConfig | SanitizedGlobalConfig\r\n doc: Doc\r\n}> => {\r\n const { collectionSlug, globalSlug, id, locale, overrideAccess, req } = args\r\n\r\n if (!collectionSlug && !globalSlug) throw new APIError('Bad Request', 400)\r\n\r\n const { payload } = req\r\n\r\n const { config } = payload\r\n\r\n const isGlobal = !!globalSlug\r\n\r\n if (!isGlobal && !id) throw new APIError('Bad Request', 400)\r\n\r\n const entityConfig = isGlobal\r\n ? findConfigBySlug(globalSlug, config.globals)\r\n : findConfigBySlug(collectionSlug as string, config.collections)\r\n\r\n if (!entityConfig) throw new APIError('Bad Request', 400)\r\n\r\n const docPromise = isGlobal\r\n ? payload.findGlobal({\r\n depth: 0,\r\n fallbackLocale: undefined,\r\n locale: locale as any,\r\n overrideAccess,\r\n req,\r\n slug: args.globalSlug as GlobalSlug,\r\n })\r\n : payload.findByID({\r\n collection: collectionSlug as CollectionSlug,\r\n depth: 0,\r\n fallbackLocale: undefined,\r\n id: id as number | string,\r\n locale: locale as any,\r\n overrideAccess,\r\n req,\r\n })\r\n\r\n return {\r\n config: entityConfig,\r\n doc: (await docPromise) as any,\r\n }\r\n}\r\n"],"names":["APIError","findConfigBySlug","slug","enities","find","entity","findEntityWithConfig","args","collectionSlug","globalSlug","id","locale","overrideAccess","req","payload","config","isGlobal","entityConfig","globals","collections","docPromise","findGlobal","depth","fallbackLocale","undefined","findByID","collection","doc"],"mappings":"AAQA,SAASA,QAAQ,QAAQ,UAAS;AAalC,MAAMC,mBAAmB,CACvBC,MACAC,UACGA,QAAQC,IAAI,CAAC,CAACC,SAAWA,OAAOH,IAAI,KAAKA;AAE9C,OAAO,MAAMI,uBAAuB,OAClCC;IAKA,MAAM,EAAEC,cAAc,EAAEC,UAAU,EAAEC,EAAE,EAAEC,MAAM,EAAEC,cAAc,EAAEC,GAAG,EAAE,GAAGN;IAExE,IAAI,CAACC,kBAAkB,CAACC,YAAY,MAAM,IAAIT,SAAS,eAAe;IAEtE,MAAM,EAAEc,OAAO,EAAE,GAAGD;IAEpB,MAAM,EAAEE,MAAM,EAAE,GAAGD;IAEnB,MAAME,WAAW,CAAC,CAACP;IAEnB,IAAI,CAACO,YAAY,CAACN,IAAI,MAAM,IAAIV,SAAS,eAAe;IAExD,MAAMiB,eAAeD,WACjBf,iBAAiBQ,YAAYM,OAAOG,OAAO,IAC3CjB,iBAAiBO,gBAA0BO,OAAOI,WAAW;IAEjE,IAAI,CAACF,cAAc,MAAM,IAAIjB,SAAS,eAAe;IAErD,MAAMoB,aAAaJ,WACfF,QAAQO,UAAU,CAAC;QACjBC,OAAO;QACPC,gBAAgBC;QAChBb,QAAQA;QACRC;QACAC;QACAX,MAAMK,KAAKE,UAAU;IACvB,KACAK,QAAQW,QAAQ,CAAC;QACfC,YAAYlB;QACZc,OAAO;QACPC,gBAAgBC;QAChBd,IAAIA;QACJC,QAAQA;QACRC;QACAC;IACF;IAEJ,OAAO;QACLE,QAAQE;QACRU,KAAM,MAAMP;IACd;AACF,EAAC"}
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import { type Payload, type PayloadRequest } from 'payload';
|
|
2
|
-
import type { TranslateArgs, TranslateResult } from './types';
|
|
3
|
-
export type TranslateOperationArgs = ({
|
|
4
|
-
payload: Payload;
|
|
5
|
-
} | {
|
|
6
|
-
req: PayloadRequest;
|
|
7
|
-
}) & TranslateArgs;
|
|
8
|
-
export declare const translateOperation: (args: TranslateOperationArgs) => Promise<TranslateResult>;
|
|
9
|
-
//# sourceMappingURL=operation.d.ts.map
|