@justanarthur/payload-plugin-translator 1.3.20 → 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 +110 -114
  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 +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 const localizationConfig = req.payload.config.localization\r\n const resolveLocaleName = (code: string): string => {\r\n if (localizationConfig && localizationConfig.locales) {\r\n const found = localizationConfig.locales.find(\r\n (l) => (typeof l === 'string' ? l : l.code) === code,\r\n )\r\n if (found && typeof found !== 'string' && found.label) {\r\n return typeof found.label === 'string' ? found.label : (found.label['en'] ?? code)\r\n }\r\n }\r\n return new Intl.DisplayNames(['en'], { type: 'language' }).of(code) ?? code\r\n }\r\n\r\n const localeFromName = resolveLocaleName(localeFrom)\r\n const localeToName = resolveLocaleName(localeTo)\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: localeFromName, localeTo: localeToName, 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","localizationConfig","payload","config","localization","resolveLocaleName","code","locales","found","find","l","label","Intl","DisplayNames","type","of","localeFromName","localeToName","response","Promise","all","map","structuredTexts","reduce","acc","curr","index","fetch","body","messages","content","role","headers","Authorization","method","then","res","data","json","ok","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,3 +0,0 @@
1
- import type { PayloadHandler } from 'payload';
2
- export declare const translateEndpoint: PayloadHandler;
3
- //# sourceMappingURL=endpoint.d.ts.map
@@ -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
@@ -1 +0,0 @@
1
- {"version":3,"file":"operation.d.ts","sourceRoot":"","sources":["../../src/translate/operation.ts"],"names":[],"mappings":"AACA,OAAO,EAAY,KAAK,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,SAAS,CAAA;AAKrE,OAAO,KAAK,EAAE,aAAa,EAAE,eAAe,EAAoB,MAAM,SAAS,CAAA;AAG/E,MAAM,MAAM,sBAAsB,GAAG,CACjC;IACE,OAAO,EAAE,OAAO,CAAA;CACjB,GACD;IACE,GAAG,EAAE,cAAc,CAAA;CACpB,CACJ,GACC,aAAa,CAAA;AAEf,eAAO,MAAM,kBAAkB,GAAU,MAAM,sBAAsB,6BA4FpE,CAAA"}
@@ -1,78 +0,0 @@
1
- import he from 'he';
2
- import { APIError } from 'payload';
3
- import { findEntityWithConfig } from './findEntityWithConfig';
4
- import { traverseFields } from './traverseFields';
5
- import { updateEntity } from './updateEntity';
6
- export const translateOperation = async (args)=>{
7
- const req = 'req' in args ? args.req : {
8
- payload: args.payload
9
- };
10
- const { collectionSlug, globalSlug, id, locale, localeFrom, overrideAccess } = args;
11
- const { config, doc: dataFrom } = await findEntityWithConfig({
12
- collectionSlug,
13
- globalSlug,
14
- id,
15
- locale: localeFrom,
16
- req
17
- });
18
- const resolver = (req.payload.config.custom?.translator?.resolvers ?? []).find((each)=>each.key === args.resolver);
19
- if (!resolver) throw new APIError(`Resolver with the key ${args.resolver} was not found`);
20
- const valuesToTranslate = [];
21
- let translatedData = args.data;
22
- if (!translatedData) {
23
- const { doc } = await findEntityWithConfig({
24
- collectionSlug,
25
- globalSlug,
26
- id,
27
- locale,
28
- overrideAccess,
29
- req
30
- });
31
- translatedData = doc;
32
- }
33
- traverseFields({
34
- dataFrom,
35
- emptyOnly: args.emptyOnly,
36
- fields: config.fields,
37
- translatedData,
38
- valuesToTranslate,
39
- _options: req.payload.config.custom?.translator?._options
40
- });
41
- const resolveResult = await resolver.resolve({
42
- localeFrom: args.localeFrom,
43
- localeTo: args.locale,
44
- req,
45
- texts: valuesToTranslate.map((each)=>each.value)
46
- });
47
- let result;
48
- if (!resolveResult.success) {
49
- result = {
50
- success: false
51
- };
52
- } else {
53
- resolveResult.translatedTexts.forEach((translated, index)=>{
54
- const formattedValue = he.decode(translated);
55
- valuesToTranslate[index].onTranslate(formattedValue);
56
- });
57
- if (args.update) {
58
- await updateEntity({
59
- collectionSlug,
60
- data: translatedData,
61
- depth: 0,
62
- globalSlug,
63
- id,
64
- locale,
65
- overrideAccess,
66
- req
67
- });
68
- }
69
- result = {
70
- success: true,
71
- translatedData,
72
- dataFrom
73
- };
74
- }
75
- return result;
76
- };
77
-
78
- //# sourceMappingURL=operation.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/translate/operation.ts"],"sourcesContent":["import he from 'he'\r\nimport { APIError, type Payload, type PayloadRequest } from 'payload'\r\n\r\nimport type { TranslateResolver } from '../resolvers/types'\r\nimport { findEntityWithConfig } from './findEntityWithConfig'\r\nimport { traverseFields } from './traverseFields'\r\nimport type { TranslateArgs, TranslateResult, ValueToTranslate } from './types'\r\nimport { updateEntity } from './updateEntity'\r\n\r\nexport type TranslateOperationArgs = (\r\n | {\r\n payload: Payload\r\n }\r\n | {\r\n req: PayloadRequest\r\n }\r\n) &\r\n TranslateArgs\r\n\r\nexport const translateOperation = async (args: TranslateOperationArgs) => {\r\n const req: PayloadRequest =\r\n 'req' in args\r\n ? args.req\r\n : ({\r\n payload: args.payload,\r\n } as PayloadRequest)\r\n\r\n const { collectionSlug, globalSlug, id, locale, localeFrom, overrideAccess } = args\r\n\r\n const { config, doc: dataFrom } = await findEntityWithConfig({\r\n collectionSlug,\r\n globalSlug,\r\n id,\r\n locale: localeFrom,\r\n req,\r\n })\r\n\r\n const resolver = (\r\n (req.payload.config.custom?.translator?.resolvers as TranslateResolver[]) ?? []\r\n ).find((each) => each.key === args.resolver)\r\n\r\n if (!resolver) throw new APIError(`Resolver with the key ${args.resolver} was not found`)\r\n\r\n const valuesToTranslate: ValueToTranslate[] = []\r\n\r\n let translatedData = args.data\r\n\r\n if (!translatedData) {\r\n const { doc } = await findEntityWithConfig({\r\n collectionSlug,\r\n globalSlug,\r\n id,\r\n locale,\r\n overrideAccess,\r\n req,\r\n })\r\n\r\n translatedData = doc\r\n }\r\n\r\n traverseFields({\r\n dataFrom,\r\n emptyOnly: args.emptyOnly,\r\n fields: config.fields,\r\n translatedData,\r\n valuesToTranslate,\r\n\r\n _options: req.payload.config.custom?.translator?._options\r\n })\r\n\r\n const resolveResult = await resolver.resolve({\r\n localeFrom: args.localeFrom,\r\n localeTo: args.locale,\r\n req,\r\n texts: valuesToTranslate.map((each) => each.value),\r\n })\r\n\r\n let result: TranslateResult\r\n\r\n if (!resolveResult.success) {\r\n result = {\r\n success: false,\r\n }\r\n } else {\r\n resolveResult.translatedTexts.forEach((translated, index) => {\r\n const formattedValue = he.decode(translated)\r\n\r\n valuesToTranslate[index].onTranslate(formattedValue)\r\n })\r\n\r\n if (args.update) {\r\n await updateEntity({\r\n collectionSlug,\r\n data: translatedData,\r\n depth: 0,\r\n globalSlug,\r\n id,\r\n locale,\r\n overrideAccess,\r\n req,\r\n })\r\n }\r\n\r\n result = {\r\n success: true,\r\n translatedData,\r\n dataFrom\r\n }\r\n }\r\n\r\n return result\r\n}\r\n"],"names":["he","APIError","findEntityWithConfig","traverseFields","updateEntity","translateOperation","args","req","payload","collectionSlug","globalSlug","id","locale","localeFrom","overrideAccess","config","doc","dataFrom","resolver","custom","translator","resolvers","find","each","key","valuesToTranslate","translatedData","data","emptyOnly","fields","_options","resolveResult","resolve","localeTo","texts","map","value","result","success","translatedTexts","forEach","translated","index","formattedValue","decode","onTranslate","update","depth"],"mappings":"AAAA,OAAOA,QAAQ,KAAI;AACnB,SAASC,QAAQ,QAA2C,UAAS;AAGrE,SAASC,oBAAoB,QAAQ,yBAAwB;AAC7D,SAASC,cAAc,QAAQ,mBAAkB;AAEjD,SAASC,YAAY,QAAQ,iBAAgB;AAY7C,OAAO,MAAMC,qBAAqB,OAAOC;IACvC,MAAMC,MACJ,SAASD,OACLA,KAAKC,GAAG,GACP;QACCC,SAASF,KAAKE,OAAO;IACvB;IAEN,MAAM,EAAEC,cAAc,EAAEC,UAAU,EAAEC,EAAE,EAAEC,MAAM,EAAEC,UAAU,EAAEC,cAAc,EAAE,GAAGR;IAE/E,MAAM,EAAES,MAAM,EAAEC,KAAKC,QAAQ,EAAE,GAAG,MAAMf,qBAAqB;QAC3DO;QACAC;QACAC;QACAC,QAAQC;QACRN;IACF;IAEA,MAAMW,WAAW,AACf,CAAA,AAACX,IAAIC,OAAO,CAACO,MAAM,CAACI,MAAM,EAAEC,YAAYC,aAAqC,EAAE,AAAD,EAC9EC,IAAI,CAAC,CAACC,OAASA,KAAKC,GAAG,KAAKlB,KAAKY,QAAQ;IAE3C,IAAI,CAACA,UAAU,MAAM,IAAIjB,SAAS,CAAC,sBAAsB,EAAEK,KAAKY,QAAQ,CAAC,cAAc,CAAC;IAExF,MAAMO,oBAAwC,EAAE;IAEhD,IAAIC,iBAAiBpB,KAAKqB,IAAI;IAE9B,IAAI,CAACD,gBAAgB;QACnB,MAAM,EAAEV,GAAG,EAAE,GAAG,MAAMd,qBAAqB;YACzCO;YACAC;YACAC;YACAC;YACAE;YACAP;QACF;QAEAmB,iBAAiBV;IACnB;IAEAb,eAAe;QACbc;QACAW,WAAWtB,KAAKsB,SAAS;QACzBC,QAAQd,OAAOc,MAAM;QACrBH;QACAD;QAEAK,UAAUvB,IAAIC,OAAO,CAACO,MAAM,CAACI,MAAM,EAAEC,YAAYU;IACnD;IAEA,MAAMC,gBAAgB,MAAMb,SAASc,OAAO,CAAC;QAC3CnB,YAAYP,KAAKO,UAAU;QAC3BoB,UAAU3B,KAAKM,MAAM;QACrBL;QACA2B,OAAOT,kBAAkBU,GAAG,CAAC,CAACZ,OAASA,KAAKa,KAAK;IACnD;IAEA,IAAIC;IAEJ,IAAI,CAACN,cAAcO,OAAO,EAAE;QAC1BD,SAAS;YACPC,SAAS;QACX;IACF,OAAO;QACLP,cAAcQ,eAAe,CAACC,OAAO,CAAC,CAACC,YAAYC;YACjD,MAAMC,iBAAiB3C,GAAG4C,MAAM,CAACH;YAEjChB,iBAAiB,CAACiB,MAAM,CAACG,WAAW,CAACF;QACvC;QAEA,IAAIrC,KAAKwC,MAAM,EAAE;YACf,MAAM1C,aAAa;gBACjBK;gBACAkB,MAAMD;gBACNqB,OAAO;gBACPrC;gBACAC;gBACAC;gBACAE;gBACAP;YACF;QACF;QAEA8B,SAAS;YACPC,SAAS;YACTZ;YACAT;QACF;IACF;IAEA,OAAOoB;AACT,EAAC"}
@@ -1,17 +0,0 @@
1
- import type { Field } from 'payload';
2
- import { traverseRichText } from './traverseRichText';
3
- import type { ValueToTranslate } from './types';
4
- export declare const traverseFields: ({ dataFrom, emptyOnly, fields, localizedParent, siblingDataFrom, siblingDataTranslated, translatedData, valuesToTranslate, _options }: {
5
- dataFrom: Record<string, unknown>;
6
- emptyOnly?: boolean;
7
- fields: Field[];
8
- localizedParent?: boolean;
9
- siblingDataFrom?: Record<string, unknown>;
10
- siblingDataTranslated?: Record<string, unknown>;
11
- translatedData: Record<string, unknown>;
12
- valuesToTranslate: ValueToTranslate[];
13
- _options?: {
14
- additionalTraverseRichText?: Parameters<typeof traverseRichText>[0]["additionalTraverseRichText"];
15
- };
16
- }) => void;
17
- //# sourceMappingURL=traverseFields.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"traverseFields.d.ts","sourceRoot":"","sources":["../../src/translate/traverseFields.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AAIpC,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AACrD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAA;AAE/C,eAAO,MAAM,cAAc,GAAI,uIAWG;IAChC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IACjC,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,MAAM,EAAE,KAAK,EAAE,CAAA;IACf,eAAe,CAAC,EAAE,OAAO,CAAA;IACzB,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IACzC,qBAAqB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC/C,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IACvC,iBAAiB,EAAE,gBAAgB,EAAE,CAAC;IAEtC,QAAQ,CAAC,EAAE;QACT,0BAA0B,CAAC,EAAE,UAAU,CAAC,OAAO,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,4BAA4B,CAAC,CAAA;KAClG,CAAA;CACF,SAuSA,CAAA"}
@@ -1,233 +0,0 @@
1
- import ObjectID from 'bson-objectid';
2
- import { tabHasName } from 'payload/shared';
3
- import { isEmpty } from '../utils/isEmpty';
4
- import { traverseRichText } from './traverseRichText';
5
- export const traverseFields = ({ dataFrom, emptyOnly, fields, localizedParent, siblingDataFrom, siblingDataTranslated, translatedData, valuesToTranslate, _options })=>{
6
- const { additionalTraverseRichText } = _options ?? {};
7
- siblingDataFrom = siblingDataFrom ?? dataFrom;
8
- siblingDataTranslated = siblingDataTranslated ?? translatedData;
9
- for (const field of fields){
10
- switch(field.type){
11
- case 'tabs':
12
- for (const tab of field.tabs){
13
- const hasName = tabHasName(tab);
14
- const tabDataFrom = hasName ? siblingDataFrom[tab.name] : siblingDataFrom;
15
- if (!tabDataFrom) return;
16
- let tabDataTranslated;
17
- if (hasName) {
18
- if (!siblingDataTranslated[tab.name]) siblingDataTranslated[tab.name] = {};
19
- tabDataTranslated = siblingDataTranslated[tab.name];
20
- } else {
21
- tabDataTranslated = siblingDataTranslated;
22
- }
23
- traverseFields({
24
- dataFrom,
25
- emptyOnly,
26
- fields: tab.fields,
27
- localizedParent: localizedParent ?? tab.localized,
28
- siblingDataFrom: tabDataFrom,
29
- siblingDataTranslated: tabDataTranslated,
30
- translatedData,
31
- valuesToTranslate,
32
- _options
33
- });
34
- }
35
- break;
36
- case 'group':
37
- {
38
- if (!('name' in field)) break;
39
- const groupDataFrom = siblingDataFrom[field.name];
40
- if (!groupDataFrom) break;
41
- if (!siblingDataTranslated[field.name]) siblingDataTranslated[field.name] = {};
42
- const groupDataTranslated = siblingDataTranslated[field.name];
43
- traverseFields({
44
- dataFrom,
45
- emptyOnly,
46
- fields: field.fields,
47
- localizedParent: localizedParent ?? field.localized,
48
- siblingDataFrom: groupDataFrom,
49
- siblingDataTranslated: groupDataTranslated,
50
- translatedData,
51
- valuesToTranslate,
52
- _options
53
- });
54
- break;
55
- }
56
- case 'array':
57
- {
58
- const arrayDataFrom = siblingDataFrom[field.name];
59
- if (isEmpty(arrayDataFrom)) break;
60
- if (!siblingDataTranslated[field.name]) siblingDataTranslated[field.name] = [];
61
- let arrayDataTranslated = siblingDataTranslated[field.name];
62
- if (field.localized || localizedParent) {
63
- if (arrayDataTranslated.length > 0 && emptyOnly) break;
64
- arrayDataTranslated = arrayDataFrom.map(()=>({
65
- id: ObjectID().toHexString()
66
- }));
67
- }
68
- arrayDataTranslated.forEach((item, index)=>{
69
- traverseFields({
70
- dataFrom,
71
- emptyOnly,
72
- fields: field.fields,
73
- localizedParent: localizedParent ?? field.localized,
74
- siblingDataFrom: arrayDataFrom[index],
75
- siblingDataTranslated: item,
76
- translatedData,
77
- valuesToTranslate,
78
- _options
79
- });
80
- });
81
- siblingDataTranslated[field.name] = arrayDataTranslated;
82
- break;
83
- }
84
- case 'blocks':
85
- {
86
- const blocksDataFrom = siblingDataFrom[field.name];
87
- if (isEmpty(blocksDataFrom)) break;
88
- if (!siblingDataTranslated[field.name]) siblingDataTranslated[field.name] = [];
89
- let blocksDataTranslated = siblingDataTranslated[field.name];
90
- if (field.localized || localizedParent) {
91
- if (blocksDataTranslated.length > 0 && emptyOnly) break;
92
- blocksDataTranslated = blocksDataFrom.map(({ blockType })=>({
93
- blockType,
94
- id: ObjectID().toHexString()
95
- }));
96
- }
97
- blocksDataTranslated.forEach((item, index)=>{
98
- const block = field.blocks.find((each)=>each.slug === item.blockType);
99
- if (!block) return;
100
- traverseFields({
101
- dataFrom,
102
- emptyOnly,
103
- fields: block.fields,
104
- localizedParent: localizedParent ?? field.localized,
105
- siblingDataFrom: blocksDataFrom[index],
106
- siblingDataTranslated: item,
107
- translatedData,
108
- valuesToTranslate,
109
- _options
110
- });
111
- });
112
- siblingDataTranslated[field.name] = blocksDataTranslated;
113
- break;
114
- }
115
- case 'collapsible':
116
- case 'row':
117
- traverseFields({
118
- dataFrom,
119
- emptyOnly,
120
- fields: field.fields,
121
- localizedParent,
122
- siblingDataFrom,
123
- siblingDataTranslated,
124
- translatedData,
125
- valuesToTranslate,
126
- _options
127
- });
128
- break;
129
- // long ass cases here we have
130
- case 'date':
131
- case 'checkbox':
132
- case 'code':
133
- case 'email':
134
- case 'number':
135
- case 'point':
136
- case 'radio':
137
- case 'relationship':
138
- case 'select':
139
- case 'upload':
140
- siblingDataTranslated[field.name] = siblingDataFrom[field.name];
141
- break;
142
- case 'json':
143
- if (!(field.localized || localizedParent)) break;
144
- if (isEmpty(siblingDataFrom[field.name])) break;
145
- if (emptyOnly && siblingDataTranslated[field.name]) break;
146
- const jsonDataFrom = siblingDataFrom[field.name];
147
- const jsonDataTranslated = JSON.parse(JSON.stringify(jsonDataFrom));
148
- siblingDataTranslated[field.name] = jsonDataTranslated;
149
- function traverseObject(obj) {
150
- if (!obj || typeof obj !== 'object') return;
151
- for(const key in obj){
152
- const value = obj[key];
153
- if (typeof value === 'string' && value.trim()) {
154
- ((parentObj, parentKey, parentValue)=>{
155
- valuesToTranslate.push({
156
- onTranslate: (translated)=>{
157
- parentObj[parentKey] = translated;
158
- },
159
- value: parentValue
160
- });
161
- })(obj, key, value);
162
- } else if (typeof value === 'object' && value !== null) {
163
- traverseObject(value);
164
- }
165
- }
166
- }
167
- traverseObject(jsonDataTranslated);
168
- break;
169
- case 'text':
170
- case 'textarea':
171
- if (field.custom && typeof field.custom === 'object' && field.custom.translatorSkip) break;
172
- if (!(field.localized || localizedParent) || isEmpty(siblingDataFrom[field.name])) break;
173
- if (emptyOnly && siblingDataTranslated[field.name]) break;
174
- // do not translate the block ID or admin-facing label
175
- if (field.name === 'blockName' || field.name === 'id') {
176
- break;
177
- }
178
- valuesToTranslate.push({
179
- onTranslate: (translated)=>{
180
- siblingDataTranslated[field.name] = translated;
181
- },
182
- value: siblingDataFrom[field.name]
183
- });
184
- break;
185
- case 'richText':
186
- {
187
- if (!(field.localized || localizedParent) || isEmpty(siblingDataFrom[field.name])) break;
188
- if (emptyOnly && siblingDataTranslated[field.name]) break;
189
- const richTextDataFrom = siblingDataFrom[field.name];
190
- siblingDataTranslated[field.name] = richTextDataFrom;
191
- if (!richTextDataFrom) break;
192
- const isSlate = Array.isArray(richTextDataFrom);
193
- const isLexical = 'root' in richTextDataFrom;
194
- if (!isSlate && !isLexical) break;
195
- if (isLexical) {
196
- const root = siblingDataTranslated[field.name]?.root;
197
- if (root) traverseRichText({
198
- onText: (siblingData, attribute = 'text')=>{
199
- valuesToTranslate.push({
200
- onTranslate: (translated)=>{
201
- siblingData[attribute] = translated;
202
- },
203
- value: siblingData[attribute]
204
- });
205
- },
206
- root,
207
- additionalTraverseRichText
208
- });
209
- } else {
210
- for (const root of siblingDataTranslated[field.name]){
211
- traverseRichText({
212
- onText: (siblingData, attribute = 'text')=>{
213
- valuesToTranslate.push({
214
- onTranslate: (translated)=>{
215
- siblingData[attribute] = translated;
216
- },
217
- value: siblingData[attribute]
218
- });
219
- },
220
- root: root,
221
- additionalTraverseRichText
222
- });
223
- }
224
- }
225
- break;
226
- }
227
- default:
228
- break;
229
- }
230
- }
231
- };
232
-
233
- //# sourceMappingURL=traverseFields.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/translate/traverseFields.ts"],"sourcesContent":["import ObjectID from 'bson-objectid'\r\nimport type { Field } from 'payload'\r\nimport { tabHasName } from 'payload/shared'\r\n\r\nimport { isEmpty } from '../utils/isEmpty'\r\nimport { traverseRichText } from './traverseRichText'\r\nimport type { ValueToTranslate } from './types'\r\n\r\nexport const traverseFields = ({\r\n dataFrom,\r\n emptyOnly,\r\n fields,\r\n localizedParent,\r\n siblingDataFrom,\r\n siblingDataTranslated,\r\n translatedData,\r\n valuesToTranslate,\r\n\r\n _options\r\n }: {\r\n dataFrom: Record<string, unknown>\r\n emptyOnly?: boolean\r\n fields: Field[]\r\n localizedParent?: boolean\r\n siblingDataFrom?: Record<string, unknown>\r\n siblingDataTranslated?: Record<string, unknown>\r\n translatedData: Record<string, unknown>\r\n valuesToTranslate: ValueToTranslate[],\r\n\r\n _options?: {\r\n additionalTraverseRichText?: Parameters<typeof traverseRichText>[0]['additionalTraverseRichText']\r\n }\r\n}) => {\r\n const { additionalTraverseRichText } = _options ?? {}\r\n siblingDataFrom = siblingDataFrom ?? dataFrom\r\n siblingDataTranslated = siblingDataTranslated ?? translatedData\r\n\r\n for (const field of fields) {\r\n switch (field.type) {\r\n case 'tabs':\r\n for (const tab of field.tabs) {\r\n const hasName = tabHasName(tab)\r\n\r\n const tabDataFrom = hasName\r\n ? (siblingDataFrom[tab.name] as Record<string, unknown>)\r\n : siblingDataFrom\r\n\r\n if (!tabDataFrom) return\r\n\r\n let tabDataTranslated: Record<string, unknown>\r\n\r\n if (hasName) {\r\n if (!siblingDataTranslated[tab.name])\r\n siblingDataTranslated[tab.name] = {}\r\n\r\n tabDataTranslated = siblingDataTranslated[tab.name] as Record<string, unknown>\r\n } else {\r\n tabDataTranslated = siblingDataTranslated\r\n }\r\n\r\n traverseFields({\r\n dataFrom,\r\n emptyOnly,\r\n fields: tab.fields,\r\n localizedParent: localizedParent ?? tab.localized,\r\n siblingDataFrom: tabDataFrom,\r\n siblingDataTranslated: tabDataTranslated,\r\n translatedData,\r\n valuesToTranslate,\r\n _options\r\n })\r\n }\r\n\r\n break\r\n\r\n case 'group': {\r\n if (!('name' in field)) break\r\n\r\n const groupDataFrom = siblingDataFrom[field.name] as Record<string, unknown>\r\n\r\n if (!groupDataFrom) break\r\n\r\n if (!siblingDataTranslated[field.name])\r\n siblingDataTranslated[field.name] = {}\r\n\r\n const groupDataTranslated = siblingDataTranslated[field.name] as Record<string, unknown>\r\n\r\n traverseFields({\r\n dataFrom,\r\n emptyOnly,\r\n fields: field.fields,\r\n localizedParent: localizedParent ?? field.localized,\r\n siblingDataFrom: groupDataFrom,\r\n siblingDataTranslated: groupDataTranslated,\r\n translatedData,\r\n valuesToTranslate,\r\n _options\r\n })\r\n\r\n break\r\n }\r\n\r\n case 'array': {\r\n const arrayDataFrom = siblingDataFrom[field.name] as {\r\n id: string\r\n }[]\r\n\r\n if (isEmpty(arrayDataFrom)) break\r\n\r\n if (!siblingDataTranslated[field.name])\r\n siblingDataTranslated[field.name] = []\r\n\r\n let arrayDataTranslated = siblingDataTranslated[field.name] as { id: string }[]\r\n\r\n if (field.localized || localizedParent) {\r\n if (arrayDataTranslated.length > 0 && emptyOnly) break\r\n\r\n arrayDataTranslated = arrayDataFrom.map(() => ({\r\n id: ObjectID().toHexString()\r\n }))\r\n }\r\n\r\n arrayDataTranslated.forEach((item, index) => {\r\n traverseFields({\r\n dataFrom,\r\n emptyOnly,\r\n fields: field.fields,\r\n localizedParent: localizedParent ?? field.localized,\r\n siblingDataFrom: arrayDataFrom[index],\r\n siblingDataTranslated: item,\r\n translatedData,\r\n valuesToTranslate,\r\n _options\r\n })\r\n })\r\n\r\n siblingDataTranslated[field.name] = arrayDataTranslated\r\n\r\n break\r\n }\r\n\r\n case 'blocks': {\r\n const blocksDataFrom = siblingDataFrom[field.name] as {\r\n blockType: string\r\n id: string\r\n }[]\r\n\r\n if (isEmpty(blocksDataFrom)) break\r\n\r\n if (!siblingDataTranslated[field.name])\r\n siblingDataTranslated[field.name] = []\r\n\r\n let blocksDataTranslated = siblingDataTranslated[field.name] as { blockType: string; id: string }[]\r\n\r\n if (field.localized || localizedParent) {\r\n if (blocksDataTranslated.length > 0 && emptyOnly) break\r\n\r\n blocksDataTranslated = blocksDataFrom.map(({ blockType }) => ({\r\n blockType,\r\n id: ObjectID().toHexString()\r\n }))\r\n }\r\n\r\n blocksDataTranslated.forEach((item, index) => {\r\n const block = field.blocks.find((each) => each.slug === item.blockType)\r\n\r\n if (!block) return\r\n\r\n traverseFields({\r\n dataFrom,\r\n emptyOnly,\r\n fields: block.fields,\r\n localizedParent: localizedParent ?? field.localized,\r\n siblingDataFrom: blocksDataFrom[index],\r\n siblingDataTranslated: item,\r\n translatedData,\r\n valuesToTranslate,\r\n _options\r\n })\r\n })\r\n\r\n siblingDataTranslated[field.name] = blocksDataTranslated\r\n\r\n break\r\n }\r\n\r\n case 'collapsible':\r\n case 'row':\r\n traverseFields({\r\n dataFrom,\r\n emptyOnly,\r\n fields: field.fields,\r\n localizedParent,\r\n siblingDataFrom,\r\n siblingDataTranslated,\r\n translatedData,\r\n valuesToTranslate,\r\n _options\r\n })\r\n break\r\n\r\n // long ass cases here we have\r\n case 'date':\r\n case 'checkbox':\r\n case 'code':\r\n case 'email':\r\n case 'number':\r\n case 'point':\r\n case 'radio':\r\n case 'relationship':\r\n case 'select':\r\n case 'upload':\r\n siblingDataTranslated[field.name] = siblingDataFrom[field.name]\r\n break\r\n\r\n case 'json':\r\n if (!(field.localized || localizedParent)) break\r\n if (isEmpty(siblingDataFrom[field.name])) break\r\n if (emptyOnly && siblingDataTranslated[field.name]) break\r\n\r\n const jsonDataFrom = siblingDataFrom[field.name]\r\n const jsonDataTranslated = JSON.parse(JSON.stringify(jsonDataFrom))\r\n siblingDataTranslated[field.name] = jsonDataTranslated\r\n\r\n function traverseObject(obj: Record<string, any>) {\r\n if (!obj || typeof obj !== 'object') return\r\n\r\n for (const key in obj) {\r\n const value = obj[key]\r\n\r\n if (typeof value === 'string' && value.trim()) {\r\n ((parentObj, parentKey, parentValue) => {\r\n valuesToTranslate.push({\r\n onTranslate: (translated) => {\r\n parentObj[parentKey] = translated\r\n },\r\n value: parentValue\r\n })\r\n })(obj, key, value)\r\n } else if (typeof value === 'object' && value !== null) {\r\n traverseObject(value)\r\n }\r\n }\r\n }\r\n\r\n traverseObject(jsonDataTranslated)\r\n break\r\n\r\n case 'text':\r\n case 'textarea':\r\n if (field.custom && typeof field.custom === 'object' && field.custom.translatorSkip) break\r\n\r\n if (!(field.localized || localizedParent) || isEmpty(siblingDataFrom[field.name])) break\r\n if (emptyOnly && siblingDataTranslated[field.name]) break\r\n\r\n // do not translate the block ID or admin-facing label\r\n if (field.name === 'blockName' || field.name === 'id') {\r\n break\r\n }\r\n\r\n valuesToTranslate.push({\r\n onTranslate: (translated: string) => {\r\n siblingDataTranslated[field.name] = translated\r\n },\r\n value: siblingDataFrom[field.name]\r\n })\r\n break\r\n\r\n case 'richText': {\r\n if (!(field.localized || localizedParent) || isEmpty(siblingDataFrom[field.name])) break\r\n if (emptyOnly && siblingDataTranslated[field.name]) break\r\n\r\n const richTextDataFrom = siblingDataFrom[field.name] as object\r\n\r\n siblingDataTranslated[field.name] = richTextDataFrom\r\n\r\n if (!richTextDataFrom) break\r\n\r\n const isSlate = Array.isArray(richTextDataFrom)\r\n\r\n const isLexical = 'root' in richTextDataFrom\r\n\r\n if (!isSlate && !isLexical) break\r\n\r\n if (isLexical) {\r\n const root = (siblingDataTranslated[field.name] as Record<string, unknown>)\r\n ?.root as Record<string, unknown>\r\n\r\n if (root)\r\n traverseRichText({\r\n onText: (siblingData, attribute = 'text') => {\r\n valuesToTranslate.push({\r\n onTranslate: (translated: string) => {\r\n siblingData[attribute] = translated\r\n },\r\n value: siblingData[attribute]\r\n })\r\n },\r\n root,\r\n\r\n additionalTraverseRichText\r\n })\r\n } else {\r\n for (const root of siblingDataTranslated[field.name] as unknown[]) {\r\n traverseRichText({\r\n onText: (siblingData, attribute = 'text') => {\r\n valuesToTranslate.push({\r\n onTranslate: (translated: string) => {\r\n siblingData[attribute] = translated\r\n },\r\n value: siblingData[attribute]\r\n })\r\n },\r\n root: root as Record<string, unknown>,\r\n\r\n additionalTraverseRichText\r\n })\r\n }\r\n }\r\n\r\n break\r\n }\r\n\r\n default:\r\n break\r\n }\r\n }\r\n}\r\n"],"names":["ObjectID","tabHasName","isEmpty","traverseRichText","traverseFields","dataFrom","emptyOnly","fields","localizedParent","siblingDataFrom","siblingDataTranslated","translatedData","valuesToTranslate","_options","additionalTraverseRichText","field","type","tab","tabs","hasName","tabDataFrom","name","tabDataTranslated","localized","groupDataFrom","groupDataTranslated","arrayDataFrom","arrayDataTranslated","length","map","id","toHexString","forEach","item","index","blocksDataFrom","blocksDataTranslated","blockType","block","blocks","find","each","slug","jsonDataFrom","jsonDataTranslated","JSON","parse","stringify","traverseObject","obj","key","value","trim","parentObj","parentKey","parentValue","push","onTranslate","translated","custom","translatorSkip","richTextDataFrom","isSlate","Array","isArray","isLexical","root","onText","siblingData","attribute"],"mappings":"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"}
@@ -1,10 +0,0 @@
1
- type TraverseRichTextParams = {
2
- onText: (siblingData: Record<string, unknown>, attribute?: string) => void;
3
- root: Record<string, unknown>;
4
- siblingData?: Record<string, unknown>;
5
- };
6
- export declare const traverseRichText: ({ onText, root, siblingData, additionalTraverseRichText }: TraverseRichTextParams & {
7
- additionalTraverseRichText: ((args: TraverseRichTextParams) => void) | undefined;
8
- }) => void;
9
- export {};
10
- //# sourceMappingURL=traverseRichText.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"traverseRichText.d.ts","sourceRoot":"","sources":["../../src/translate/traverseRichText.ts"],"names":[],"mappings":"AAAA,KAAK,sBAAsB,GAAG;IAC5B,MAAM,EAAE,CAAC,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,SAAS,CAAC,EAAE,MAAM,KAAK,IAAI,CAAA;IAC1E,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC7B,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CACtC,CAAA;AAED,eAAO,MAAM,gBAAgB,GAAI,2DAMG,sBAAsB,GAAG;IAC3D,0BAA0B,EAAE,CAAC,CAAC,IAAI,EAAE,sBAAsB,KAAK,IAAI,CAAC,GAAG,SAAS,CAAA;CACjF,SAmBA,CAAA"}
@@ -1,24 +0,0 @@
1
- export const traverseRichText = ({ onText, root, siblingData, additionalTraverseRichText })=>{
2
- siblingData = siblingData ?? root;
3
- if (siblingData.text) {
4
- onText(siblingData);
5
- }
6
- if (Array.isArray(siblingData?.children)) {
7
- for (const child of siblingData.children){
8
- traverseRichText({
9
- onText,
10
- root,
11
- siblingData: child,
12
- additionalTraverseRichText
13
- });
14
- }
15
- } else {
16
- additionalTraverseRichText?.({
17
- onText,
18
- root,
19
- siblingData
20
- });
21
- }
22
- };
23
-
24
- //# sourceMappingURL=traverseRichText.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/translate/traverseRichText.ts"],"sourcesContent":["type TraverseRichTextParams = {\r\n onText: (siblingData: Record<string, unknown>, attribute?: string) => void\r\n root: Record<string, unknown>\r\n siblingData?: Record<string, unknown>\r\n}\r\n\r\nexport const traverseRichText = ({\r\n onText,\r\n root,\r\n siblingData,\r\n\r\n additionalTraverseRichText\r\n }: TraverseRichTextParams & {\r\n additionalTraverseRichText: ((args: TraverseRichTextParams) => void) | undefined\r\n}) => {\r\n siblingData = siblingData ?? root\r\n\r\n if (siblingData.text) {\r\n onText(siblingData)\r\n }\r\n\r\n if (Array.isArray(siblingData?.children)) {\r\n for (const child of siblingData.children) {\r\n traverseRichText({\r\n onText,\r\n root,\r\n siblingData: child,\r\n additionalTraverseRichText\r\n })\r\n }\r\n } else {\r\n additionalTraverseRichText?.({ onText, root, siblingData })\r\n }\r\n}\r\n"],"names":["traverseRichText","onText","root","siblingData","additionalTraverseRichText","text","Array","isArray","children","child"],"mappings":"AAMA,OAAO,MAAMA,mBAAmB,CAAC,EACEC,MAAM,EACNC,IAAI,EACJC,WAAW,EAEXC,0BAA0B,EAG5D;IACCD,cAAcA,eAAeD;IAE7B,IAAIC,YAAYE,IAAI,EAAE;QACpBJ,OAAOE;IACT;IAEA,IAAIG,MAAMC,OAAO,CAACJ,aAAaK,WAAW;QACxC,KAAK,MAAMC,SAASN,YAAYK,QAAQ,CAAE;YACxCR,iBAAiB;gBACfC;gBACAC;gBACAC,aAAaM;gBACbL;YACF;QACF;IACF,OAAO;QACLA,6BAA6B;YAAEH;YAAQC;YAAMC;QAAY;IAC3D;AACF,EAAC"}
@@ -1,27 +0,0 @@
1
- import { Doc } from "./findEntityWithConfig";
2
- export type ValueToTranslate = {
3
- onTranslate: (translatedValue: any) => void;
4
- value: any;
5
- };
6
- export type TranslateArgs = {
7
- collectionSlug?: string;
8
- data?: Record<string, any>;
9
- emptyOnly?: boolean;
10
- globalSlug?: string;
11
- id?: number | string;
12
- /** active locale */
13
- locale: string;
14
- localeFrom: string;
15
- overrideAccess?: boolean;
16
- resolver: string;
17
- update?: boolean;
18
- };
19
- export type TranslateResult = {
20
- success: false;
21
- } | {
22
- success: true;
23
- translatedData: Record<string, any>;
24
- dataFrom: Doc;
25
- };
26
- export type TranslateEndpointArgs = Omit<TranslateArgs, 'update'>;
27
- //# sourceMappingURL=types.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/translate/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,wBAAwB,CAAA;AAE5C,MAAM,MAAM,gBAAgB,GAAG;IAC7B,WAAW,EAAE,CAAC,eAAe,EAAE,GAAG,KAAK,IAAI,CAAA;IAC3C,KAAK,EAAE,GAAG,CAAA;CACX,CAAA;AAED,MAAM,MAAM,aAAa,GAAG;IAC1B,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IAC1B,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IACpB,oBAAoB;IACpB,MAAM,EAAE,MAAM,CAAA;IACd,UAAU,EAAE,MAAM,CAAA;IAClB,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,QAAQ,EAAE,MAAM,CAAA;IAChB,MAAM,CAAC,EAAE,OAAO,CAAA;CACjB,CAAA;AAED,MAAM,MAAM,eAAe,GACvB;IACF,OAAO,EAAE,KAAK,CAAA;CACf,GACG;IACF,OAAO,EAAE,IAAI,CAAA;IACb,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACpC,QAAQ,EAAE,GAAG,CAAA;CACd,CAAA;AAED,MAAM,MAAM,qBAAqB,GAAG,IAAI,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAA"}
@@ -1,3 +0,0 @@
1
- export { };
2
-
3
- //# sourceMappingURL=types.js.map