@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.
Files changed (128) hide show
  1. package/dist/client.d.ts +6 -0
  2. package/dist/client.js +320 -0
  3. package/dist/index.d.ts +102 -11
  4. package/dist/index.js +1294 -80
  5. package/dist/jobs.d.ts +195 -0
  6. package/dist/jobs.js +824 -0
  7. package/dist/resolvers/copy.d.ts +21 -3
  8. package/dist/resolvers/copy.js +18 -12
  9. package/dist/resolvers/google.d.ts +29 -11
  10. package/dist/resolvers/google.js +58 -44
  11. package/dist/resolvers/libreTranslate.d.ts +33 -15
  12. package/dist/resolvers/libreTranslate.js +60 -45
  13. package/dist/resolvers/openAI.d.ts +39 -21
  14. package/dist/resolvers/openAI.js +111 -99
  15. package/dist/resolvers/types.d.ts +16 -16
  16. package/dist/resolvers/types.js +0 -3
  17. package/dist/{client/components/CustomButton/styles.scss → styles-jt3fm5fh.scss} +5 -5
  18. package/dist/{client/components/TranslatorModal/styles.scss → styles-vs6m7h55.scss} +76 -76
  19. package/dist/types.d.ts +70 -22
  20. package/dist/types.js +0 -3
  21. package/package.json +87 -64
  22. package/README.md +0 -215
  23. package/dist/client/api/index.d.ts +0 -8
  24. package/dist/client/api/index.d.ts.map +0 -1
  25. package/dist/client/api/index.js +0 -28
  26. package/dist/client/api/index.js.map +0 -1
  27. package/dist/client/components/CustomButton/CustomButtonWithTranslator.d.ts +0 -5
  28. package/dist/client/components/CustomButton/CustomButtonWithTranslator.d.ts.map +0 -1
  29. package/dist/client/components/CustomButton/CustomButtonWithTranslator.js +0 -28
  30. package/dist/client/components/CustomButton/CustomButtonWithTranslator.js.map +0 -1
  31. package/dist/client/components/CustomButton/index.d.ts +0 -3
  32. package/dist/client/components/CustomButton/index.d.ts.map +0 -1
  33. package/dist/client/components/CustomButton/index.js +0 -10
  34. package/dist/client/components/CustomButton/index.js.map +0 -1
  35. package/dist/client/components/LocaleLabel/LocaleLabel.d.ts +0 -5
  36. package/dist/client/components/LocaleLabel/LocaleLabel.d.ts.map +0 -1
  37. package/dist/client/components/LocaleLabel/LocaleLabel.js +0 -28
  38. package/dist/client/components/LocaleLabel/LocaleLabel.js.map +0 -1
  39. package/dist/client/components/LocaleLabel/index.d.ts +0 -2
  40. package/dist/client/components/LocaleLabel/index.d.ts.map +0 -1
  41. package/dist/client/components/LocaleLabel/index.js +0 -3
  42. package/dist/client/components/LocaleLabel/index.js.map +0 -1
  43. package/dist/client/components/ResolverButton/ResolverButton.d.ts +0 -5
  44. package/dist/client/components/ResolverButton/ResolverButton.d.ts.map +0 -1
  45. package/dist/client/components/ResolverButton/ResolverButton.js +0 -16
  46. package/dist/client/components/ResolverButton/ResolverButton.js.map +0 -1
  47. package/dist/client/components/ResolverButton/index.d.ts +0 -2
  48. package/dist/client/components/ResolverButton/index.d.ts.map +0 -1
  49. package/dist/client/components/ResolverButton/index.js +0 -3
  50. package/dist/client/components/ResolverButton/index.js.map +0 -1
  51. package/dist/client/components/TranslatorModal/Content.d.ts +0 -2
  52. package/dist/client/components/TranslatorModal/Content.d.ts.map +0 -1
  53. package/dist/client/components/TranslatorModal/Content.js +0 -60
  54. package/dist/client/components/TranslatorModal/Content.js.map +0 -1
  55. package/dist/client/components/TranslatorModal/TranslatorModal.d.ts +0 -3
  56. package/dist/client/components/TranslatorModal/TranslatorModal.d.ts.map +0 -1
  57. package/dist/client/components/TranslatorModal/TranslatorModal.js +0 -26
  58. package/dist/client/components/TranslatorModal/TranslatorModal.js.map +0 -1
  59. package/dist/client/components/TranslatorModal/index.d.ts +0 -2
  60. package/dist/client/components/TranslatorModal/index.d.ts.map +0 -1
  61. package/dist/client/components/TranslatorModal/index.js +0 -3
  62. package/dist/client/components/TranslatorModal/index.js.map +0 -1
  63. package/dist/client/providers/Translator/TranslatorProvider.d.ts +0 -5
  64. package/dist/client/providers/Translator/TranslatorProvider.d.ts.map +0 -1
  65. package/dist/client/providers/Translator/TranslatorProvider.js +0 -109
  66. package/dist/client/providers/Translator/TranslatorProvider.js.map +0 -1
  67. package/dist/client/providers/Translator/context.d.ts +0 -21
  68. package/dist/client/providers/Translator/context.d.ts.map +0 -1
  69. package/dist/client/providers/Translator/context.js +0 -9
  70. package/dist/client/providers/Translator/context.js.map +0 -1
  71. package/dist/exports/client.d.ts +0 -2
  72. package/dist/exports/client.d.ts.map +0 -1
  73. package/dist/exports/client.js +0 -3
  74. package/dist/exports/client.js.map +0 -1
  75. package/dist/i18n-translations.d.ts +0 -87
  76. package/dist/i18n-translations.d.ts.map +0 -1
  77. package/dist/i18n-translations.js +0 -88
  78. package/dist/i18n-translations.js.map +0 -1
  79. package/dist/index.d.ts.map +0 -1
  80. package/dist/index.js.map +0 -1
  81. package/dist/resolvers/copy.d.ts.map +0 -1
  82. package/dist/resolvers/copy.js.map +0 -1
  83. package/dist/resolvers/google.d.ts.map +0 -1
  84. package/dist/resolvers/google.js.map +0 -1
  85. package/dist/resolvers/libreTranslate.d.ts.map +0 -1
  86. package/dist/resolvers/libreTranslate.js.map +0 -1
  87. package/dist/resolvers/openAI.d.ts.map +0 -1
  88. package/dist/resolvers/openAI.js.map +0 -1
  89. package/dist/resolvers/types.d.ts.map +0 -1
  90. package/dist/resolvers/types.js.map +0 -1
  91. package/dist/translate/endpoint.d.ts +0 -3
  92. package/dist/translate/endpoint.d.ts.map +0 -1
  93. package/dist/translate/endpoint.js +0 -23
  94. package/dist/translate/endpoint.js.map +0 -1
  95. package/dist/translate/findEntityWithConfig.d.ts +0 -16
  96. package/dist/translate/findEntityWithConfig.d.ts.map +0 -1
  97. package/dist/translate/findEntityWithConfig.js +0 -34
  98. package/dist/translate/findEntityWithConfig.js.map +0 -1
  99. package/dist/translate/operation.d.ts +0 -9
  100. package/dist/translate/operation.d.ts.map +0 -1
  101. package/dist/translate/operation.js +0 -78
  102. package/dist/translate/operation.js.map +0 -1
  103. package/dist/translate/traverseFields.d.ts +0 -17
  104. package/dist/translate/traverseFields.d.ts.map +0 -1
  105. package/dist/translate/traverseFields.js +0 -233
  106. package/dist/translate/traverseFields.js.map +0 -1
  107. package/dist/translate/traverseRichText.d.ts +0 -10
  108. package/dist/translate/traverseRichText.d.ts.map +0 -1
  109. package/dist/translate/traverseRichText.js +0 -24
  110. package/dist/translate/traverseRichText.js.map +0 -1
  111. package/dist/translate/types.d.ts +0 -27
  112. package/dist/translate/types.d.ts.map +0 -1
  113. package/dist/translate/types.js +0 -3
  114. package/dist/translate/types.js.map +0 -1
  115. package/dist/translate/updateEntity.d.ts +0 -14
  116. package/dist/translate/updateEntity.d.ts.map +0 -1
  117. package/dist/translate/updateEntity.js +0 -26
  118. package/dist/translate/updateEntity.js.map +0 -1
  119. package/dist/types.d.ts.map +0 -1
  120. package/dist/types.js.map +0 -1
  121. package/dist/utils/chunkArray.d.ts +0 -2
  122. package/dist/utils/chunkArray.d.ts.map +0 -1
  123. package/dist/utils/chunkArray.js +0 -7
  124. package/dist/utils/chunkArray.js.map +0 -1
  125. package/dist/utils/isEmpty.d.ts +0 -2
  126. package/dist/utils/isEmpty.d.ts.map +0 -1
  127. package/dist/utils/isEmpty.js +0 -8
  128. package/dist/utils/isEmpty.js.map +0 -1
@@ -1,3 +1,21 @@
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
+ /** Locale to translate from */
4
+ localeFrom: string;
5
+ /** Locale to translate to */
6
+ localeTo: string;
7
+ req: PayloadRequest;
8
+ texts: string[];
9
+ };
10
+ type TranslateResolverResponse = {
11
+ success: false;
12
+ } | {
13
+ success: true;
14
+ translatedTexts: string[];
15
+ };
16
+ type TranslateResolver = {
17
+ key: string;
18
+ resolve: (args: TranslateResolverArgs) => Promise<TranslateResolverResponse> | TranslateResolverResponse;
19
+ };
20
+ declare const copyResolver: () => TranslateResolver;
21
+ export { copyResolver as default, copyResolver };
@@ -1,14 +1,20 @@
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
- };
1
+ // src/resolvers/copy.ts
2
+ var copyResolver = () => {
3
+ return {
4
+ key: "copy",
5
+ resolve: (args) => {
6
+ const { texts } = args;
7
+ return {
8
+ success: true,
9
+ translatedTexts: texts
10
+ };
11
+ }
12
+ };
12
13
  };
13
14
 
14
- //# sourceMappingURL=copy.js.map
15
+ // src/exports/resolvers/copy.ts
16
+ var copy_default = copyResolver;
17
+ export {
18
+ copy_default as default,
19
+ copyResolver
20
+ };
@@ -1,11 +1,29 @@
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
+ /** Locale to translate from */
4
+ localeFrom: string;
5
+ /** Locale to translate to */
6
+ localeTo: string;
7
+ req: PayloadRequest;
8
+ texts: string[];
9
+ };
10
+ type TranslateResolverResponse = {
11
+ success: false;
12
+ } | {
13
+ success: true;
14
+ translatedTexts: string[];
15
+ };
16
+ type TranslateResolver = {
17
+ key: string;
18
+ resolve: (args: TranslateResolverArgs) => Promise<TranslateResolverResponse> | TranslateResolverResponse;
19
+ };
20
+ type GoogleResolverConfig = {
21
+ apiKey: string;
22
+ /**
23
+ * How many texts to include into 1 request
24
+ * @default 100
25
+ */
26
+ chunkLength?: number;
27
+ };
28
+ declare const googleResolver: ({ apiKey, chunkLength }: GoogleResolverConfig) => TranslateResolver;
29
+ export { googleResolver, googleResolver as default, GoogleResolverConfig };
@@ -1,47 +1,61 @@
1
- import { chunkArray } from '../utils/chunkArray';
2
- const localeToCountryCodeMapper = {
3
- ua: 'uk'
1
+ // src/utils/chunkArray.ts
2
+ var chunkArray = (array, length) => {
3
+ return Array.from({ length: Math.ceil(array.length / length) }, (_, i) => array.slice(i * length, i * length + length));
4
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
- };
5
+
6
+ // src/resolvers/google.ts
7
+ var localeToCountryCodeMapper = {
8
+ ua: "uk"
9
+ };
10
+ var mapLocale = (incoming) => (incoming in localeToCountryCodeMapper) ? localeToCountryCodeMapper[incoming] : incoming;
11
+ var googleResolver = ({
12
+ apiKey,
13
+ chunkLength = 100
14
+ }) => {
15
+ return {
16
+ key: "google",
17
+ resolve: async (args) => {
18
+ const { localeFrom, localeTo, req, texts } = args;
19
+ const apiUrl = `https://translation.googleapis.com/language/translate/v2?key=${apiKey}`;
20
+ const responses = await Promise.all(chunkArray(texts, chunkLength).map((q) => fetch(apiUrl, {
21
+ body: JSON.stringify({
22
+ q,
23
+ source: mapLocale(localeFrom),
24
+ target: mapLocale(localeTo)
25
+ }),
26
+ headers: {
27
+ "Content-Type": "application/json"
28
+ },
29
+ method: "POST"
30
+ }).then(async (res) => {
31
+ const data = await res.json();
32
+ if (!res.ok)
33
+ req.payload.logger.info({
34
+ googleResponse: data,
35
+ message: "An error occurred when trying to translate the data using Google API"
36
+ });
37
+ return {
38
+ data,
39
+ success: res.ok
40
+ };
41
+ })));
42
+ if (responses.some((res) => !res.success)) {
43
+ return {
44
+ success: false
45
+ };
46
+ }
47
+ const translatedTexts = responses.flatMap((chunk) => chunk.data.data.translations).map((translation) => translation.translatedText);
48
+ return {
49
+ success: true,
50
+ translatedTexts
51
+ };
52
+ }
53
+ };
45
54
  };
46
55
 
47
- //# sourceMappingURL=google.js.map
56
+ // src/exports/resolvers/google.ts
57
+ var google_default = googleResolver;
58
+ export {
59
+ googleResolver,
60
+ google_default as default
61
+ };
@@ -1,16 +1,34 @@
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
+ /** Locale to translate from */
4
+ localeFrom: string;
5
+ /** Locale to translate to */
6
+ localeTo: string;
7
+ req: PayloadRequest;
8
+ texts: string[];
14
9
  };
15
- export declare const libreResolver: ({ apiKey, chunkLength, url, }: LibreResolverConfig) => TranslateResolver;
16
- //# sourceMappingURL=libreTranslate.d.ts.map
10
+ type TranslateResolverResponse = {
11
+ success: false;
12
+ } | {
13
+ success: true;
14
+ translatedTexts: string[];
15
+ };
16
+ type TranslateResolver = {
17
+ key: string;
18
+ resolve: (args: TranslateResolverArgs) => Promise<TranslateResolverResponse> | TranslateResolverResponse;
19
+ };
20
+ type LibreResolverConfig = {
21
+ apiKey: string;
22
+ /**
23
+ * How many texts to include into 1 request
24
+ * @default 100
25
+ */
26
+ chunkLength?: number;
27
+ /**
28
+ * Custom url for the libre translate instance
29
+ * @default "https://libretranslate.com/translate"
30
+ */
31
+ url?: string;
32
+ };
33
+ declare const libreResolver: ({ apiKey, chunkLength, url }: LibreResolverConfig) => TranslateResolver;
34
+ export { libreResolver, libreResolver as default, LibreResolverConfig };
@@ -1,48 +1,63 @@
1
- import { chunkArray } from '../utils/chunkArray';
2
- const localeToCountryCodeMapper = {
3
- ua: 'uk'
1
+ // src/utils/chunkArray.ts
2
+ var chunkArray = (array, length) => {
3
+ return Array.from({ length: Math.ceil(array.length / length) }, (_, i) => array.slice(i * length, i * length + length));
4
4
  };
5
- const mapLocale = (incoming)=>incoming in localeToCountryCodeMapper ? localeToCountryCodeMapper[incoming] : incoming;
6
- export const libreResolver = ({ apiKey, chunkLength = 100, url = 'https://libretranslate.com/translate' })=>{
7
- return {
8
- key: 'libre',
9
- resolve: async (args)=>{
10
- const { localeFrom, localeTo, req, texts } = args;
11
- const apiUrl = url;
12
- const responses = await Promise.all(chunkArray(texts, chunkLength).map((q)=>fetch(apiUrl, {
13
- body: JSON.stringify({
14
- api_key: apiKey,
15
- q,
16
- source: mapLocale(localeFrom),
17
- target: mapLocale(localeTo)
18
- }),
19
- headers: {
20
- 'Content-Type': 'application/json'
21
- },
22
- method: 'POST'
23
- }).then(async (res)=>{
24
- const data = await res.json();
25
- if (!res.ok) req.payload.logger.info({
26
- libreResponse: data,
27
- message: 'An error occurred when trying to translate the data using LibreTranslate API'
28
- });
29
- return {
30
- data,
31
- success: res.ok
32
- };
33
- })));
34
- if (responses.some((res)=>!res.success)) {
35
- return {
36
- success: false
37
- };
38
- }
39
- const translatedTexts = responses.flatMap((chunk)=>chunk.data.translatedText);
40
- return {
41
- success: true,
42
- translatedTexts
43
- };
44
- }
45
- };
5
+
6
+ // src/resolvers/libreTranslate.ts
7
+ var localeToCountryCodeMapper = {
8
+ ua: "uk"
9
+ };
10
+ var mapLocale = (incoming) => (incoming in localeToCountryCodeMapper) ? localeToCountryCodeMapper[incoming] : incoming;
11
+ var libreResolver = ({
12
+ apiKey,
13
+ chunkLength = 100,
14
+ url = "https://libretranslate.com/translate"
15
+ }) => {
16
+ return {
17
+ key: "libre",
18
+ resolve: async (args) => {
19
+ const { localeFrom, localeTo, req, texts } = args;
20
+ const apiUrl = url;
21
+ const responses = await Promise.all(chunkArray(texts, chunkLength).map((q) => fetch(apiUrl, {
22
+ body: JSON.stringify({
23
+ api_key: apiKey,
24
+ q,
25
+ source: mapLocale(localeFrom),
26
+ target: mapLocale(localeTo)
27
+ }),
28
+ headers: {
29
+ "Content-Type": "application/json"
30
+ },
31
+ method: "POST"
32
+ }).then(async (res) => {
33
+ const data = await res.json();
34
+ if (!res.ok)
35
+ req.payload.logger.info({
36
+ libreResponse: data,
37
+ message: "An error occurred when trying to translate the data using LibreTranslate API"
38
+ });
39
+ return {
40
+ data,
41
+ success: res.ok
42
+ };
43
+ })));
44
+ if (responses.some((res) => !res.success)) {
45
+ return {
46
+ success: false
47
+ };
48
+ }
49
+ const translatedTexts = responses.flatMap((chunk) => chunk.data.translatedText);
50
+ return {
51
+ success: true,
52
+ translatedTexts
53
+ };
54
+ }
55
+ };
46
56
  };
47
57
 
48
- //# sourceMappingURL=libreTranslate.js.map
58
+ // src/exports/resolvers/libreTranslate.ts
59
+ var libreTranslate_default = libreResolver;
60
+ export {
61
+ libreResolver,
62
+ libreTranslate_default as default
63
+ };
@@ -1,23 +1,41 @@
1
- import type { TranslateResolver } from './types';
2
- export type OpenAIMessageExchange = Record<string | number, string>;
3
- export type OpenAIPrompt = (args: {
4
- localeFrom: string;
5
- localeTo: string;
6
- texts: OpenAIMessageExchange;
1
+ import { PayloadRequest } from "payload";
2
+ type TranslateResolverArgs = {
3
+ /** Locale to translate from */
4
+ localeFrom: string;
5
+ /** Locale to translate to */
6
+ localeTo: string;
7
+ req: PayloadRequest;
8
+ texts: string[];
9
+ };
10
+ type TranslateResolverResponse = {
11
+ success: false;
12
+ } | {
13
+ success: true;
14
+ translatedTexts: string[];
15
+ };
16
+ type TranslateResolver = {
17
+ key: string;
18
+ resolve: (args: TranslateResolverArgs) => Promise<TranslateResolverResponse> | TranslateResolverResponse;
19
+ };
20
+ type OpenAIMessageExchange = Record<string | number, string>;
21
+ type OpenAIPrompt = (args: {
22
+ localeFrom: string;
23
+ localeTo: string;
24
+ texts: OpenAIMessageExchange;
7
25
  }) => string;
8
- export type OpenAIResolverConfig = {
9
- apiKey: string;
10
- baseUrl?: string;
11
- /**
12
- * How many texts to include into 1 request
13
- * @default 100
14
- */
15
- chunkLength?: number;
16
- /**
17
- * @default "gpt-3.5-turbo"
18
- */
19
- model?: string;
20
- prompt?: OpenAIPrompt;
26
+ type OpenAIResolverConfig = {
27
+ apiKey: string;
28
+ baseUrl?: string;
29
+ /**
30
+ * How many texts to include into 1 request
31
+ * @default 100
32
+ */
33
+ chunkLength?: number;
34
+ /**
35
+ * @default "gpt-3.5-turbo"
36
+ */
37
+ model?: string;
38
+ prompt?: OpenAIPrompt;
21
39
  };
22
- export declare const openAIResolver: ({ apiKey, baseUrl, chunkLength, model, prompt }: OpenAIResolverConfig) => TranslateResolver;
23
- //# sourceMappingURL=openAI.d.ts.map
40
+ declare const openAIResolver: ({ apiKey, baseUrl, chunkLength, model, prompt }: OpenAIResolverConfig) => TranslateResolver;
41
+ export { openAIResolver, openAIResolver as default, OpenAIResolverConfig, OpenAIPrompt, OpenAIMessageExchange };
@@ -1,6 +1,11 @@
1
- import { chunkArray } from '../utils/chunkArray';
2
- const defaultPrompt = ({ localeFrom, localeTo, texts })=>{
3
- 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}.
1
+ // src/utils/chunkArray.ts
2
+ var chunkArray = (array, length) => {
3
+ return Array.from({ length: Math.ceil(array.length / length) }, (_, i) => array.slice(i * length, i * length + length));
4
+ };
5
+
6
+ // src/resolvers/openAI.ts
7
+ var defaultPrompt = ({ localeFrom, localeTo, texts }) => {
8
+ 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}.
4
9
 
5
10
  **INSTRUCTIONS:**
6
11
  1. **Translate each value**.
@@ -17,104 +22,111 @@ const defaultPrompt = ({ localeFrom, localeTo, texts })=>{
17
22
  **INPUT JSON TO TRANSLATE:**
18
23
  ${JSON.stringify(texts)}`;
19
24
  };
20
- export const openAIResolver = ({ apiKey, baseUrl, chunkLength = 100, model = 'gpt-3.5-turbo', prompt = defaultPrompt })=>{
21
- return {
22
- key: 'openai',
23
- resolve: async ({ localeFrom, localeTo, req, texts })=>{
24
- const apiUrl = `${baseUrl || 'https://api.openai.com'}/v1/chat/completions`;
25
- try {
26
- const response = await Promise.all(chunkArray(texts, chunkLength).map((texts)=>{
27
- const structuredTexts = texts.reduce((acc, curr, index)=>{
28
- acc[index + 1] = curr;
29
- return acc;
30
- }, {});
31
- return fetch(apiUrl, {
32
- body: JSON.stringify({
33
- messages: [
34
- {
35
- content: prompt({
36
- localeFrom,
37
- localeTo,
38
- texts: structuredTexts
39
- }),
40
- role: 'user'
41
- }
42
- ],
43
- model
44
- }),
45
- headers: {
46
- Authorization: `Bearer ${apiKey}`,
47
- 'Content-Type': 'application/json'
48
- },
49
- method: 'post'
50
- }).then(async (res)=>{
51
- const data = await res.json();
52
- if (!res.ok) req.payload.logger.info({
53
- message: 'An error occurred when trying to translate the data using OpenAI API',
54
- openAIresponse: data
55
- });
56
- return {
57
- data,
58
- success: res.ok
59
- };
60
- });
61
- }));
62
- const translated = [];
63
- for (const { data, success } of response){
64
- if (!success) return {
65
- success: false
66
- };
67
- const content = data?.choices?.[0]?.message?.content;
68
- if (!content) {
69
- req.payload.logger.error('An error occurred when trying to translate the data using OpenAI API - missing content in the response');
70
- return {
71
- success: false
72
- };
73
- }
74
- const translatedStructuredTexts = JSON.parse(content);
75
- const translatedChunk = Object.values(translatedStructuredTexts);
76
- if (!Array.isArray(translatedChunk)) {
77
- req.payload.logger.error({
78
- data: translatedChunk,
79
- fullContent: content,
80
- message: 'An error occurred when trying to translate the data using OpenAI API - parsed content is not an array'
81
- });
82
- return {
83
- success: false
84
- };
85
- }
86
- for (const text of translatedChunk){
87
- if (text && typeof text !== 'string') {
88
- req.payload.logger.error({
89
- chunkData: translatedChunk,
90
- data: text,
91
- fullContent: content,
92
- message: 'An error occurred when trying to translate the data using OpenAI API - parsed content is not a string'
93
- });
94
- return {
95
- success: false
96
- };
97
- }
98
- translated.push(text);
99
- }
100
- }
101
- return {
102
- success: true,
103
- translatedTexts: translated
104
- };
105
- } catch (e) {
106
- if (e instanceof Error) {
107
- req.payload.logger.info({
108
- message: 'An error occurred when trying to translate the data using OpenAI API',
109
- originalErr: e.message
110
- });
25
+ var openAIResolver = ({
26
+ apiKey,
27
+ baseUrl,
28
+ chunkLength = 100,
29
+ model = "gpt-3.5-turbo",
30
+ prompt = defaultPrompt
31
+ }) => {
32
+ return {
33
+ key: "openai",
34
+ resolve: async ({ localeFrom, localeTo, req, texts }) => {
35
+ const apiUrl = `${baseUrl || "https://api.openai.com"}/v1/chat/completions`;
36
+ try {
37
+ const response = await Promise.all(chunkArray(texts, chunkLength).map((texts2) => {
38
+ const structuredTexts = texts2.reduce((acc, curr, index) => {
39
+ acc[index + 1] = curr;
40
+ return acc;
41
+ }, {});
42
+ return fetch(apiUrl, {
43
+ body: JSON.stringify({
44
+ messages: [
45
+ {
46
+ content: prompt({ localeFrom, localeTo, texts: structuredTexts }),
47
+ role: "user"
111
48
  }
112
- return {
113
- success: false
114
- };
49
+ ],
50
+ model
51
+ }),
52
+ headers: {
53
+ Authorization: `Bearer ${apiKey}`,
54
+ "Content-Type": "application/json"
55
+ },
56
+ method: "post"
57
+ }).then(async (res) => {
58
+ const data = await res.json();
59
+ if (!res.ok)
60
+ req.payload.logger.info({
61
+ message: "An error occurred when trying to translate the data using OpenAI API",
62
+ openAIresponse: data
63
+ });
64
+ return {
65
+ data,
66
+ success: res.ok
67
+ };
68
+ });
69
+ }));
70
+ const translated = [];
71
+ for (const { data, success } of response) {
72
+ if (!success)
73
+ return {
74
+ success: false
75
+ };
76
+ const content = data?.choices?.[0]?.message?.content;
77
+ if (!content) {
78
+ req.payload.logger.error("An error occurred when trying to translate the data using OpenAI API - missing content in the response");
79
+ return {
80
+ success: false
81
+ };
82
+ }
83
+ const translatedStructuredTexts = JSON.parse(content);
84
+ const translatedChunk = Object.values(translatedStructuredTexts);
85
+ if (!Array.isArray(translatedChunk)) {
86
+ req.payload.logger.error({
87
+ data: translatedChunk,
88
+ fullContent: content,
89
+ message: "An error occurred when trying to translate the data using OpenAI API - parsed content is not an array"
90
+ });
91
+ return {
92
+ success: false
93
+ };
94
+ }
95
+ for (const text of translatedChunk) {
96
+ if (text && typeof text !== "string") {
97
+ req.payload.logger.error({
98
+ chunkData: translatedChunk,
99
+ data: text,
100
+ fullContent: content,
101
+ message: "An error occurred when trying to translate the data using OpenAI API - parsed content is not a string"
102
+ });
103
+ return {
104
+ success: false
105
+ };
115
106
  }
107
+ translated.push(text);
108
+ }
116
109
  }
117
- };
110
+ return {
111
+ success: true,
112
+ translatedTexts: translated
113
+ };
114
+ } catch (e) {
115
+ if (e instanceof Error) {
116
+ req.payload.logger.info({
117
+ message: "An error occurred when trying to translate the data using OpenAI API",
118
+ originalErr: e.message
119
+ });
120
+ }
121
+ return { success: false };
122
+ }
123
+ }
124
+ };
118
125
  };
119
126
 
120
- //# sourceMappingURL=openAI.js.map
127
+ // src/exports/resolvers/openAI.ts
128
+ var openAI_default = openAIResolver;
129
+ export {
130
+ openAIResolver,
131
+ openAI_default as default
132
+ };