@justanarthur/payload-plugin-translator 1.3.20 → 3.0.3

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.
Files changed (135) hide show
  1. package/README.md +132 -215
  2. package/dist/client.css +41 -0
  3. package/dist/client.d.ts +6 -0
  4. package/dist/client.js +320 -0
  5. package/dist/index.d.ts +63 -11
  6. package/dist/index.js +275 -82
  7. package/dist/jobs.d.ts +50 -0
  8. package/dist/jobs.js +28 -0
  9. package/dist/resolvers/copy.d.ts +19 -3
  10. package/dist/resolvers/copy.js +9 -13
  11. package/dist/resolvers/google.d.ts +23 -11
  12. package/dist/resolvers/google.js +10 -46
  13. package/dist/resolvers/libreTranslate.d.ts +23 -15
  14. package/dist/resolvers/libreTranslate.js +10 -47
  15. package/dist/resolvers/openAI.d.ts +29 -21
  16. package/dist/resolvers/openAI.js +9 -134
  17. package/dist/resolvers/types.d.ts +14 -16
  18. package/dist/resolvers/types.js +0 -3
  19. package/dist/shared/chunk-97ktc51q.js +15 -0
  20. package/dist/shared/chunk-ecnph6hw.js +205 -0
  21. package/dist/shared/chunk-frnemj69.js +6 -0
  22. package/dist/shared/chunk-fsveh29m.js +55 -0
  23. package/dist/shared/chunk-q51q8rd2.js +855 -0
  24. package/dist/shared/chunk-zhrw0jnz.js +57 -0
  25. package/dist/types.d.ts +32 -22
  26. package/dist/types.js +0 -3
  27. package/package.json +89 -63
  28. package/dist/client/api/index.d.ts +0 -8
  29. package/dist/client/api/index.d.ts.map +0 -1
  30. package/dist/client/api/index.js +0 -28
  31. package/dist/client/api/index.js.map +0 -1
  32. package/dist/client/components/CustomButton/CustomButtonWithTranslator.d.ts +0 -5
  33. package/dist/client/components/CustomButton/CustomButtonWithTranslator.d.ts.map +0 -1
  34. package/dist/client/components/CustomButton/CustomButtonWithTranslator.js +0 -28
  35. package/dist/client/components/CustomButton/CustomButtonWithTranslator.js.map +0 -1
  36. package/dist/client/components/CustomButton/index.d.ts +0 -3
  37. package/dist/client/components/CustomButton/index.d.ts.map +0 -1
  38. package/dist/client/components/CustomButton/index.js +0 -10
  39. package/dist/client/components/CustomButton/index.js.map +0 -1
  40. package/dist/client/components/CustomButton/styles.scss +0 -5
  41. package/dist/client/components/LocaleLabel/LocaleLabel.d.ts +0 -5
  42. package/dist/client/components/LocaleLabel/LocaleLabel.d.ts.map +0 -1
  43. package/dist/client/components/LocaleLabel/LocaleLabel.js +0 -28
  44. package/dist/client/components/LocaleLabel/LocaleLabel.js.map +0 -1
  45. package/dist/client/components/LocaleLabel/index.d.ts +0 -2
  46. package/dist/client/components/LocaleLabel/index.d.ts.map +0 -1
  47. package/dist/client/components/LocaleLabel/index.js +0 -3
  48. package/dist/client/components/LocaleLabel/index.js.map +0 -1
  49. package/dist/client/components/ResolverButton/ResolverButton.d.ts +0 -5
  50. package/dist/client/components/ResolverButton/ResolverButton.d.ts.map +0 -1
  51. package/dist/client/components/ResolverButton/ResolverButton.js +0 -16
  52. package/dist/client/components/ResolverButton/ResolverButton.js.map +0 -1
  53. package/dist/client/components/ResolverButton/index.d.ts +0 -2
  54. package/dist/client/components/ResolverButton/index.d.ts.map +0 -1
  55. package/dist/client/components/ResolverButton/index.js +0 -3
  56. package/dist/client/components/ResolverButton/index.js.map +0 -1
  57. package/dist/client/components/TranslatorModal/Content.d.ts +0 -2
  58. package/dist/client/components/TranslatorModal/Content.d.ts.map +0 -1
  59. package/dist/client/components/TranslatorModal/Content.js +0 -60
  60. package/dist/client/components/TranslatorModal/Content.js.map +0 -1
  61. package/dist/client/components/TranslatorModal/TranslatorModal.d.ts +0 -3
  62. package/dist/client/components/TranslatorModal/TranslatorModal.d.ts.map +0 -1
  63. package/dist/client/components/TranslatorModal/TranslatorModal.js +0 -26
  64. package/dist/client/components/TranslatorModal/TranslatorModal.js.map +0 -1
  65. package/dist/client/components/TranslatorModal/index.d.ts +0 -2
  66. package/dist/client/components/TranslatorModal/index.d.ts.map +0 -1
  67. package/dist/client/components/TranslatorModal/index.js +0 -3
  68. package/dist/client/components/TranslatorModal/index.js.map +0 -1
  69. package/dist/client/components/TranslatorModal/styles.scss +0 -76
  70. package/dist/client/providers/Translator/TranslatorProvider.d.ts +0 -5
  71. package/dist/client/providers/Translator/TranslatorProvider.d.ts.map +0 -1
  72. package/dist/client/providers/Translator/TranslatorProvider.js +0 -109
  73. package/dist/client/providers/Translator/TranslatorProvider.js.map +0 -1
  74. package/dist/client/providers/Translator/context.d.ts +0 -21
  75. package/dist/client/providers/Translator/context.d.ts.map +0 -1
  76. package/dist/client/providers/Translator/context.js +0 -9
  77. package/dist/client/providers/Translator/context.js.map +0 -1
  78. package/dist/exports/client.d.ts +0 -2
  79. package/dist/exports/client.d.ts.map +0 -1
  80. package/dist/exports/client.js +0 -3
  81. package/dist/exports/client.js.map +0 -1
  82. package/dist/i18n-translations.d.ts +0 -87
  83. package/dist/i18n-translations.d.ts.map +0 -1
  84. package/dist/i18n-translations.js +0 -88
  85. package/dist/i18n-translations.js.map +0 -1
  86. package/dist/index.d.ts.map +0 -1
  87. package/dist/index.js.map +0 -1
  88. package/dist/resolvers/copy.d.ts.map +0 -1
  89. package/dist/resolvers/copy.js.map +0 -1
  90. package/dist/resolvers/google.d.ts.map +0 -1
  91. package/dist/resolvers/google.js.map +0 -1
  92. package/dist/resolvers/libreTranslate.d.ts.map +0 -1
  93. package/dist/resolvers/libreTranslate.js.map +0 -1
  94. package/dist/resolvers/openAI.d.ts.map +0 -1
  95. package/dist/resolvers/openAI.js.map +0 -1
  96. package/dist/resolvers/types.d.ts.map +0 -1
  97. package/dist/resolvers/types.js.map +0 -1
  98. package/dist/translate/endpoint.d.ts +0 -3
  99. package/dist/translate/endpoint.d.ts.map +0 -1
  100. package/dist/translate/endpoint.js +0 -23
  101. package/dist/translate/endpoint.js.map +0 -1
  102. package/dist/translate/findEntityWithConfig.d.ts +0 -16
  103. package/dist/translate/findEntityWithConfig.d.ts.map +0 -1
  104. package/dist/translate/findEntityWithConfig.js +0 -34
  105. package/dist/translate/findEntityWithConfig.js.map +0 -1
  106. package/dist/translate/operation.d.ts +0 -9
  107. package/dist/translate/operation.d.ts.map +0 -1
  108. package/dist/translate/operation.js +0 -78
  109. package/dist/translate/operation.js.map +0 -1
  110. package/dist/translate/traverseFields.d.ts +0 -17
  111. package/dist/translate/traverseFields.d.ts.map +0 -1
  112. package/dist/translate/traverseFields.js +0 -233
  113. package/dist/translate/traverseFields.js.map +0 -1
  114. package/dist/translate/traverseRichText.d.ts +0 -10
  115. package/dist/translate/traverseRichText.d.ts.map +0 -1
  116. package/dist/translate/traverseRichText.js +0 -24
  117. package/dist/translate/traverseRichText.js.map +0 -1
  118. package/dist/translate/types.d.ts +0 -27
  119. package/dist/translate/types.d.ts.map +0 -1
  120. package/dist/translate/types.js +0 -3
  121. package/dist/translate/types.js.map +0 -1
  122. package/dist/translate/updateEntity.d.ts +0 -14
  123. package/dist/translate/updateEntity.d.ts.map +0 -1
  124. package/dist/translate/updateEntity.js +0 -26
  125. package/dist/translate/updateEntity.js.map +0 -1
  126. package/dist/types.d.ts.map +0 -1
  127. package/dist/types.js.map +0 -1
  128. package/dist/utils/chunkArray.d.ts +0 -2
  129. package/dist/utils/chunkArray.d.ts.map +0 -1
  130. package/dist/utils/chunkArray.js +0 -7
  131. package/dist/utils/chunkArray.js.map +0 -1
  132. package/dist/utils/isEmpty.d.ts +0 -2
  133. package/dist/utils/isEmpty.d.ts.map +0 -1
  134. package/dist/utils/isEmpty.js +0 -8
  135. package/dist/utils/isEmpty.js.map +0 -1
package/dist/index.js CHANGED
@@ -1,87 +1,280 @@
1
- import { deepMerge } from 'payload/shared';
2
- import { CustomButton } from './client/components/CustomButton';
3
- import { translations } from './i18n-translations';
4
- import { translateEndpoint } from './translate/endpoint';
5
- import { translateOperation } from './translate/operation';
6
- export { copyResolver } from './resolvers/copy';
7
- export { googleResolver } from './resolvers/google';
8
- export { libreResolver } from './resolvers/libreTranslate';
9
- export { openAIResolver } from './resolvers/openAI';
10
- export * from './resolvers/types';
11
- export { translateOperation };
12
- export const translator = (pluginConfig)=>{
13
- return (config)=>{
14
- if (pluginConfig.disabled || !config.localization || config.localization.locales.length < 2) return config;
15
- const updatedConfig = {
16
- ...config,
17
- admin: {
18
- ...config.admin ?? {},
19
- custom: {
20
- ...config.admin?.custom ?? {},
21
- translator: {
22
- resolvers: pluginConfig.resolvers.map(({ key })=>({
23
- key
24
- }))
25
- }
26
- }
27
- },
28
- collections: config.collections?.map((collection)=>{
29
- if (!pluginConfig.collections.includes(collection.slug)) return collection;
30
- return {
31
- ...collection,
32
- admin: {
33
- ...collection.admin ?? {},
34
- components: {
35
- ...collection.admin?.components ?? {},
36
- edit: {
37
- ...collection.admin?.components?.edit ?? {},
38
- PublishButton: CustomButton('publish'),
39
- SaveButton: CustomButton('save')
40
- }
41
- }
42
- }
43
- };
44
- }) ?? [],
45
- custom: {
46
- ...config.custom ?? {},
47
- translator: {
48
- ...pluginConfig
49
- }
50
- },
51
- endpoints: [
52
- ...config.endpoints ?? [],
53
- {
54
- handler: translateEndpoint,
55
- method: 'post',
56
- path: '/translator/translate'
57
- }
58
- ],
59
- globals: config.globals?.map((global)=>{
60
- if (!pluginConfig.globals.includes(global.slug)) return global;
61
- return {
62
- ...global,
63
- admin: {
64
- ...global.admin ?? {},
65
- components: {
66
- ...global.admin?.components ?? {},
67
- elements: {
68
- ...global.admin?.components?.elements ?? {},
69
- PublishButton: CustomButton('publish'),
70
- SaveButton: CustomButton('save')
71
- }
72
- }
73
- }
74
- };
75
- }) ?? [],
76
- i18n: {
77
- ...config.i18n,
78
- translations: {
79
- ...deepMerge(config.i18n?.translations ?? {}, translations)
80
- }
1
+ import"./shared/chunk-fsveh29m.js";
2
+ import {
3
+ createAutoTranslateCollectionHook,
4
+ createAutoTranslateGlobalHook,
5
+ createTranslateTask,
6
+ createTranslateWorkflow,
7
+ translateOperation
8
+ } from "./shared/chunk-q51q8rd2.js";
9
+ import"./shared/chunk-zhrw0jnz.js";
10
+ import"./shared/chunk-97ktc51q.js";
11
+ import"./shared/chunk-ecnph6hw.js";
12
+ import"./shared/chunk-frnemj69.js";
13
+
14
+ // src/index.ts
15
+ import { deepMerge } from "payload/shared";
16
+
17
+ // src/client/components/CustomButton/index.tsx
18
+ var CustomButton = (type) => {
19
+ return {
20
+ clientProps: {
21
+ type
22
+ },
23
+ path: "@justanarthur/payload-plugin-translator/client#CustomButtonWithTranslator"
24
+ };
25
+ };
26
+
27
+ // src/i18n-translations.ts
28
+ var translations = {
29
+ en: {
30
+ "plugin-translator": {
31
+ resolver_copy_buttonLabel: "Copy from other locale",
32
+ resolver_copy_errorMessage: "An error occurred when trying to translate the data",
33
+ resolver_copy_modalTitle: "Choose the locale to copy from",
34
+ resolver_copy_submitButtonLabelEmpty: "Copy only empty fields",
35
+ resolver_copy_submitButtonLabelFull: "Copy all",
36
+ resolver_copy_successMessage: 'Successfully copied. Press "Save" to apply the changes.',
37
+ resolver_google_buttonLabel: "Google Translate",
38
+ resolver_google_errorMessage: "An error occurred when trying to translate the data",
39
+ resolver_google_modalTitle: "Choose the locale to translate from",
40
+ resolver_google_submitButtonLabelEmpty: "Translate only empty fields",
41
+ resolver_google_submitButtonLabelFull: "Translate all",
42
+ resolver_google_successMessage: 'Successfully translated. Press "Save" to apply the changes.',
43
+ resolver_libre_buttonLabel: "Libre Translate",
44
+ resolver_libre_errorMessage: "An error occurred when trying to translate the data",
45
+ resolver_libre_modalTitle: "Choose the locale to translate from",
46
+ resolver_libre_submitButtonLabelEmpty: "Translate only empty fields",
47
+ resolver_libre_submitButtonLabelFull: "Translate all",
48
+ resolver_libre_successMessage: 'Successfully translated. Press "Save" to apply the changes.',
49
+ resolver_openai_buttonLabel: "AI Translate",
50
+ resolver_openai_errorMessage: "An error occurred when trying to translate the data",
51
+ resolver_openai_modalTitle: "Choose the locale to translate from",
52
+ resolver_openai_submitButtonLabelEmpty: "Translate only empty fields",
53
+ resolver_openai_submitButtonLabelFull: "Translate all",
54
+ resolver_openai_successMessage: 'Successfully translated. Press "Save" to apply the changes.'
55
+ }
56
+ },
57
+ uk: {
58
+ "plugin-translator": {
59
+ resolver_copy_buttonLabel: "Копіювати з іншої локалі",
60
+ resolver_copy_errorMessage: "Сталася помилка під час спроби перекладу даних",
61
+ resolver_copy_modalTitle: "Виберіть локаль для копіювання",
62
+ resolver_copy_submitButtonLabelEmpty: "Копіювати лише порожні поля",
63
+ resolver_copy_submitButtonLabelFull: "Копіювати все",
64
+ resolver_copy_successMessage: 'Успішно скопійовано. Натисніть "Зберегти", щоб застосувати зміни.',
65
+ resolver_google_buttonLabel: "Переклад Google",
66
+ resolver_google_errorMessage: "Сталася помилка під час спроби перекладу даних",
67
+ resolver_google_modalTitle: "Виберіть локаль для перекладу",
68
+ resolver_google_submitButtonLabelEmpty: "Перекласти лише порожні поля",
69
+ resolver_google_submitButtonLabelFull: "Перекласти все",
70
+ resolver_google_successMessage: 'Успішно перекладено. Натисніть "Зберегти", щоб застосувати зміни.',
71
+ resolver_libre_buttonLabel: "Переклад Libre",
72
+ resolver_libre_errorMessage: "Сталася помилка під час спроби перекладу даних",
73
+ resolver_libre_modalTitle: "Виберіть локаль для перекладу",
74
+ resolver_libre_submitButtonLabelEmpty: "Перекласти лише порожні поля",
75
+ resolver_libre_submitButtonLabelFull: "Перекласти все",
76
+ resolver_libre_successMessage: 'Успішно перекладено. Натисніть "Зберегти", щоб застосувати зміни.',
77
+ resolver_openai_buttonLabel: "Переклад AI",
78
+ resolver_openai_errorMessage: "Сталася помилка під час спроби перекладу даних",
79
+ resolver_openai_modalTitle: "Виберіть локаль для перекладу",
80
+ resolver_openai_submitButtonLabelEmpty: "Перекласти лише порожні поля",
81
+ resolver_openai_submitButtonLabelFull: "Перекласти все",
82
+ resolver_openai_successMessage: 'Успішно перекладено. Натисніть "Зберегти", щоб застосувати зміни.'
83
+ }
84
+ },
85
+ zh: {
86
+ "plugin-translator": {
87
+ resolver_copy_buttonLabel: "从其他语言复制",
88
+ resolver_copy_errorMessage: "尝试翻译数据时发生错误",
89
+ resolver_copy_modalTitle: "选择要复制的语言",
90
+ resolver_copy_submitButtonLabelEmpty: "仅复制空字段",
91
+ resolver_copy_submitButtonLabelFull: "复制全部",
92
+ resolver_copy_successMessage: "复制成功。按下“保存”以应用更改。",
93
+ resolver_google_buttonLabel: "谷歌翻译",
94
+ resolver_google_errorMessage: "尝试翻译数据时发生错误",
95
+ resolver_google_modalTitle: "选择要翻译的语言",
96
+ resolver_google_submitButtonLabelEmpty: "仅翻译空字段",
97
+ resolver_google_submitButtonLabelFull: "翻译全部",
98
+ resolver_google_successMessage: "翻译成功。按下“保存”以应用更改。",
99
+ resolver_libre_buttonLabel: "自由翻译",
100
+ resolver_libre_errorMessage: "尝试翻译数据时发生错误",
101
+ resolver_libre_modalTitle: "选择要翻译的语言",
102
+ resolver_libre_submitButtonLabelEmpty: "仅翻译空字段",
103
+ resolver_libre_submitButtonLabelFull: "翻译全部",
104
+ resolver_libre_successMessage: "翻译成功。按下“保存”以应用更改。",
105
+ resolver_openai_buttonLabel: "AI翻译",
106
+ resolver_openai_errorMessage: "尝试翻译数据时发生错误",
107
+ resolver_openai_modalTitle: "选择要翻译的语言",
108
+ resolver_openai_submitButtonLabelEmpty: "仅翻译空字段",
109
+ resolver_openai_submitButtonLabelFull: "翻译全部",
110
+ resolver_openai_successMessage: "翻译成功。按下“保存”以应用更改。"
111
+ }
112
+ }
113
+ };
114
+
115
+ // src/translate/endpoint.ts
116
+ import { APIError } from "payload";
117
+ var translateEndpoint = async (req) => {
118
+ if (!req.json)
119
+ throw new APIError("Content-Type should be json");
120
+ const args = await req.json();
121
+ const { collectionSlug, data, emptyOnly, globalSlug, id, locale, localeFrom, resolver } = args;
122
+ const result = await translateOperation({
123
+ collectionSlug,
124
+ data,
125
+ emptyOnly,
126
+ globalSlug,
127
+ id,
128
+ locale,
129
+ localeFrom,
130
+ overrideAccess: false,
131
+ req,
132
+ resolver,
133
+ update: false
134
+ });
135
+ return Response.json(result);
136
+ };
137
+ // src/index.ts
138
+ var AUTO_TRANSLATE_MARKER = Symbol.for("@justanarthur/payload-plugin-translator/auto-translate");
139
+ var translator = (pluginConfig) => {
140
+ return (config) => {
141
+ if (pluginConfig.disabled || !config.localization || config.localization.locales.length < 2)
142
+ return config;
143
+ const autoTranslate = pluginConfig.autoTranslate ?? true;
144
+ const updatedConfig = {
145
+ ...config,
146
+ admin: {
147
+ ...config.admin ?? {},
148
+ custom: {
149
+ ...config.admin?.custom ?? {},
150
+ translator: {
151
+ resolvers: pluginConfig.resolvers.map(({ key }) => ({ key }))
152
+ }
153
+ }
154
+ },
155
+ collections: config.collections?.map((collection) => {
156
+ if (!pluginConfig.collections.includes(collection.slug))
157
+ return collection;
158
+ return {
159
+ ...collection,
160
+ admin: {
161
+ ...collection.admin ?? {},
162
+ components: {
163
+ ...collection.admin?.components ?? {},
164
+ edit: {
165
+ ...collection.admin?.components?.edit ?? {},
166
+ PublishButton: CustomButton("publish"),
167
+ SaveButton: CustomButton("save")
168
+ }
81
169
  }
170
+ },
171
+ ...autoTranslate ? {
172
+ hooks: attachCollectionHook(collection.hooks, createAutoTranslateCollectionHook({ collectionSlug: String(collection.slug) }).afterChange)
173
+ } : {}
82
174
  };
83
- return updatedConfig;
175
+ }) ?? [],
176
+ custom: {
177
+ ...config.custom ?? {},
178
+ translator: {
179
+ ...pluginConfig
180
+ }
181
+ },
182
+ endpoints: [
183
+ ...config.endpoints ?? [],
184
+ {
185
+ handler: translateEndpoint,
186
+ method: "post",
187
+ path: "/translator/translate"
188
+ }
189
+ ],
190
+ globals: config.globals?.map((global) => {
191
+ if (!pluginConfig.globals.includes(global.slug))
192
+ return global;
193
+ return {
194
+ ...global,
195
+ admin: {
196
+ ...global.admin ?? {},
197
+ components: {
198
+ ...global.admin?.components ?? {},
199
+ elements: {
200
+ ...global.admin?.components?.elements ?? {},
201
+ PublishButton: CustomButton("publish"),
202
+ SaveButton: CustomButton("save")
203
+ }
204
+ }
205
+ },
206
+ ...autoTranslate ? {
207
+ hooks: attachGlobalHook(global.hooks, createAutoTranslateGlobalHook({ globalSlug: String(global.slug) }))
208
+ } : {}
209
+ };
210
+ }) ?? [],
211
+ i18n: {
212
+ ...config.i18n,
213
+ translations: {
214
+ ...deepMerge(config.i18n?.translations ?? {}, translations)
215
+ }
216
+ },
217
+ ...autoTranslate ? {
218
+ jobs: {
219
+ ...config.jobs ?? {},
220
+ tasks: ensureJobBySlug(config.jobs?.tasks, createTranslateTask()),
221
+ workflows: ensureJobBySlug(config.jobs?.workflows, createTranslateWorkflow()),
222
+ deleteJobOnComplete: false,
223
+ jobsCollectionOverrides: ({ defaultJobsCollection }) => {
224
+ defaultJobsCollection.admin = {
225
+ ...defaultJobsCollection.admin,
226
+ hidden: false,
227
+ group: "System"
228
+ };
229
+ return defaultJobsCollection;
230
+ }
231
+ }
232
+ } : {}
84
233
  };
234
+ return updatedConfig;
235
+ };
85
236
  };
237
+ function ensureJobBySlug(existing, job) {
238
+ const list = existing ?? [];
239
+ if (list.some((entry) => entry.slug === job.slug))
240
+ return list;
241
+ return [...list, job];
242
+ }
243
+ function attachCollectionHook(existing, hookToAttach) {
244
+ const list = toHookArray(existing?.afterChange);
245
+ if (list.some(isMarkedAutoTranslate))
246
+ return existing ?? {};
247
+ return {
248
+ ...existing ?? {},
249
+ afterChange: [markAutoTranslate(hookToAttach), ...list]
250
+ };
251
+ }
252
+ function attachGlobalHook(existing, hookToAttach) {
253
+ const list = toHookArray(existing?.afterChange);
254
+ if (list.some(isMarkedAutoTranslate))
255
+ return existing ?? {};
256
+ return {
257
+ ...existing ?? {},
258
+ afterChange: [markAutoTranslate(hookToAttach), ...list]
259
+ };
260
+ }
261
+ function toHookArray(input) {
262
+ if (input === undefined)
263
+ return [];
264
+ return Array.isArray(input) ? input : [input];
265
+ }
266
+ function markAutoTranslate(hook) {
267
+ hook[AUTO_TRANSLATE_MARKER] = true;
268
+ return hook;
269
+ }
270
+ function isMarkedAutoTranslate(hook) {
271
+ return Boolean(hook?.[AUTO_TRANSLATE_MARKER]);
272
+ }
86
273
 
87
- //# sourceMappingURL=index.js.map
274
+ // src/exports/index.ts
275
+ var exports_default = translator;
276
+ export {
277
+ translator,
278
+ translateOperation,
279
+ exports_default as default
280
+ };
package/dist/jobs.d.ts ADDED
@@ -0,0 +1,50 @@
1
+ import { CollectionAfterChangeHook } from "payload";
2
+ type CreateAutoTranslateCollectionHookOptions = {
3
+ collectionSlug: string;
4
+ defaultLocale?: string;
5
+ targetLocales?: string[];
6
+ onlyOnPublished?: boolean;
7
+ workflowSlug?: string;
8
+ resolverKey?: string;
9
+ };
10
+ declare function createAutoTranslateCollectionHook(options: CreateAutoTranslateCollectionHookOptions): {
11
+ afterChange: CollectionAfterChangeHook;
12
+ };
13
+ import { GlobalAfterChangeHook } from "payload";
14
+ type CreateAutoTranslateGlobalHookOptions = {
15
+ globalSlug: string;
16
+ defaultLocale?: string;
17
+ targetLocales?: string[];
18
+ workflowSlug?: string;
19
+ resolverKey?: string;
20
+ };
21
+ declare function createAutoTranslateGlobalHook(options: CreateAutoTranslateGlobalHookOptions): GlobalAfterChangeHook;
22
+ import { TaskConfig, TaskHandler } from "payload";
23
+ type TranslateTaskConfig = Omit<TaskConfig, "handler"> & {
24
+ handler: TaskHandler<string, string>;
25
+ };
26
+ type CreateTranslateTaskOptions = {
27
+ resolverKey?: string;
28
+ slug?: string;
29
+ };
30
+ declare function createTranslateTask(options?: CreateTranslateTaskOptions): TranslateTaskConfig;
31
+ import { WorkflowConfig, WorkflowHandler } from "payload";
32
+ type TranslateWorkflowConfig = Omit<WorkflowConfig, "handler"> & {
33
+ handler: WorkflowHandler;
34
+ };
35
+ type CreateTranslateWorkflowOptions = {
36
+ slug?: string;
37
+ taskSlug?: string;
38
+ };
39
+ declare function createTranslateWorkflow(options?: CreateTranslateWorkflowOptions): TranslateWorkflowConfig;
40
+ declare const TRANSLATE_TASK_SLUG = "translateEntityToLocale";
41
+ declare const TRANSLATE_WORKFLOW_SLUG = "translateEntityToLocales";
42
+ declare const jobs: {
43
+ TRANSLATE_TASK_SLUG: string;
44
+ TRANSLATE_WORKFLOW_SLUG: string;
45
+ createTranslateTask: typeof createTranslateTask;
46
+ createTranslateWorkflow: typeof createTranslateWorkflow;
47
+ createAutoTranslateCollectionHook: typeof createAutoTranslateCollectionHook;
48
+ createAutoTranslateGlobalHook: typeof createAutoTranslateGlobalHook;
49
+ };
50
+ export { jobs as default, createTranslateWorkflow, createTranslateTask, createAutoTranslateGlobalHook, createAutoTranslateCollectionHook, TranslateWorkflowConfig, TranslateTaskConfig, TRANSLATE_WORKFLOW_SLUG, TRANSLATE_TASK_SLUG, CreateTranslateWorkflowOptions, CreateTranslateTaskOptions, CreateAutoTranslateGlobalHookOptions, CreateAutoTranslateCollectionHookOptions };
package/dist/jobs.js ADDED
@@ -0,0 +1,28 @@
1
+ import {
2
+ TRANSLATE_TASK_SLUG,
3
+ TRANSLATE_WORKFLOW_SLUG,
4
+ createAutoTranslateCollectionHook,
5
+ createAutoTranslateGlobalHook,
6
+ createTranslateTask,
7
+ createTranslateWorkflow
8
+ } from "./shared/chunk-q51q8rd2.js";
9
+
10
+ // src/exports/jobs.ts
11
+ var jobs = {
12
+ TRANSLATE_TASK_SLUG,
13
+ TRANSLATE_WORKFLOW_SLUG,
14
+ createTranslateTask,
15
+ createTranslateWorkflow,
16
+ createAutoTranslateCollectionHook,
17
+ createAutoTranslateGlobalHook
18
+ };
19
+ var jobs_default = jobs;
20
+ export {
21
+ jobs_default as default,
22
+ createTranslateWorkflow,
23
+ createTranslateTask,
24
+ createAutoTranslateGlobalHook,
25
+ createAutoTranslateCollectionHook,
26
+ TRANSLATE_WORKFLOW_SLUG,
27
+ TRANSLATE_TASK_SLUG
28
+ };
@@ -1,3 +1,19 @@
1
- import type { TranslateResolver } from './types';
2
- export declare const copyResolver: () => TranslateResolver;
3
- //# sourceMappingURL=copy.d.ts.map
1
+ import { PayloadRequest } from "payload";
2
+ type TranslateResolverArgs = {
3
+ localeFrom: string;
4
+ localeTo: string;
5
+ req: PayloadRequest;
6
+ texts: string[];
7
+ };
8
+ type TranslateResolverResponse = {
9
+ success: false;
10
+ } | {
11
+ success: true;
12
+ translatedTexts: string[];
13
+ };
14
+ type TranslateResolver = {
15
+ key: string;
16
+ resolve: (args: TranslateResolverArgs) => Promise<TranslateResolverResponse> | TranslateResolverResponse;
17
+ };
18
+ declare const copyResolver: () => TranslateResolver;
19
+ export { copyResolver as default, copyResolver };
@@ -1,14 +1,10 @@
1
- export const copyResolver = ()=>{
2
- return {
3
- key: 'copy',
4
- resolve: (args)=>{
5
- const { texts } = args;
6
- return {
7
- success: true,
8
- translatedTexts: texts
9
- };
10
- }
11
- };
12
- };
1
+ import {
2
+ copyResolver
3
+ } from "../shared/chunk-97ktc51q.js";
13
4
 
14
- //# sourceMappingURL=copy.js.map
5
+ // src/exports/resolvers/copy.ts
6
+ var copy_default = copyResolver;
7
+ export {
8
+ copy_default as default,
9
+ copyResolver
10
+ };
@@ -1,11 +1,23 @@
1
- import type { TranslateResolver } from './types';
2
- export type GoogleResolverConfig = {
3
- apiKey: string;
4
- /**
5
- * How many texts to include into 1 request
6
- * @default 100
7
- */
8
- chunkLength?: number;
9
- };
10
- export declare const googleResolver: ({ apiKey, chunkLength, }: GoogleResolverConfig) => TranslateResolver;
11
- //# sourceMappingURL=google.d.ts.map
1
+ import { PayloadRequest } from "payload";
2
+ type TranslateResolverArgs = {
3
+ localeFrom: string;
4
+ localeTo: string;
5
+ req: PayloadRequest;
6
+ texts: string[];
7
+ };
8
+ type TranslateResolverResponse = {
9
+ success: false;
10
+ } | {
11
+ success: true;
12
+ translatedTexts: string[];
13
+ };
14
+ type TranslateResolver = {
15
+ key: string;
16
+ resolve: (args: TranslateResolverArgs) => Promise<TranslateResolverResponse> | TranslateResolverResponse;
17
+ };
18
+ type GoogleResolverConfig = {
19
+ apiKey: string;
20
+ chunkLength?: number;
21
+ };
22
+ declare const googleResolver: ({ apiKey, chunkLength }: GoogleResolverConfig) => TranslateResolver;
23
+ export { googleResolver, googleResolver as default, GoogleResolverConfig };
@@ -1,47 +1,11 @@
1
- import { chunkArray } from '../utils/chunkArray';
2
- const localeToCountryCodeMapper = {
3
- ua: 'uk'
4
- };
5
- const mapLocale = (incoming)=>incoming in localeToCountryCodeMapper ? localeToCountryCodeMapper[incoming] : incoming;
6
- export const googleResolver = ({ apiKey, chunkLength = 100 })=>{
7
- return {
8
- key: 'google',
9
- resolve: async (args)=>{
10
- const { localeFrom, localeTo, req, texts } = args;
11
- const apiUrl = `https://translation.googleapis.com/language/translate/v2?key=${apiKey}`;
12
- const responses = await Promise.all(chunkArray(texts, chunkLength).map((q)=>fetch(apiUrl, {
13
- body: JSON.stringify({
14
- q,
15
- source: mapLocale(localeFrom),
16
- target: mapLocale(localeTo)
17
- }),
18
- headers: {
19
- 'Content-Type': 'application/json'
20
- },
21
- method: 'POST'
22
- }).then(async (res)=>{
23
- const data = await res.json();
24
- if (!res.ok) req.payload.logger.info({
25
- googleResponse: data,
26
- message: 'An error occurred when trying to translate the data using Google API'
27
- });
28
- return {
29
- data,
30
- success: res.ok
31
- };
32
- })));
33
- if (responses.some((res)=>!res.success)) {
34
- return {
35
- success: false
36
- };
37
- }
38
- const translatedTexts = responses.flatMap((chunk)=>chunk.data.data.translations).map((translation)=>translation.translatedText);
39
- return {
40
- success: true,
41
- translatedTexts
42
- };
43
- }
44
- };
45
- };
1
+ import {
2
+ googleResolver
3
+ } from "../shared/chunk-fsveh29m.js";
4
+ import"../shared/chunk-frnemj69.js";
46
5
 
47
- //# sourceMappingURL=google.js.map
6
+ // src/exports/resolvers/google.ts
7
+ var google_default = googleResolver;
8
+ export {
9
+ googleResolver,
10
+ google_default as default
11
+ };
@@ -1,16 +1,24 @@
1
- import type { TranslateResolver } from './types';
2
- export type LibreResolverConfig = {
3
- apiKey: string;
4
- /**
5
- * How many texts to include into 1 request
6
- * @default 100
7
- */
8
- chunkLength?: number;
9
- /**
10
- * Custom url for the libre translate instance
11
- * @default "https://libretranslate.com/translate"
12
- */
13
- url?: string;
1
+ import { PayloadRequest } from "payload";
2
+ type TranslateResolverArgs = {
3
+ localeFrom: string;
4
+ localeTo: string;
5
+ req: PayloadRequest;
6
+ texts: string[];
14
7
  };
15
- export declare const libreResolver: ({ apiKey, chunkLength, url, }: LibreResolverConfig) => TranslateResolver;
16
- //# sourceMappingURL=libreTranslate.d.ts.map
8
+ type TranslateResolverResponse = {
9
+ success: false;
10
+ } | {
11
+ success: true;
12
+ translatedTexts: string[];
13
+ };
14
+ type TranslateResolver = {
15
+ key: string;
16
+ resolve: (args: TranslateResolverArgs) => Promise<TranslateResolverResponse> | TranslateResolverResponse;
17
+ };
18
+ type LibreResolverConfig = {
19
+ apiKey: string;
20
+ chunkLength?: number;
21
+ url?: string;
22
+ };
23
+ declare const libreResolver: ({ apiKey, chunkLength, url }: LibreResolverConfig) => TranslateResolver;
24
+ export { libreResolver, libreResolver as default, LibreResolverConfig };