@roxxel/payload-multilang 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (62) hide show
  1. package/README.md +165 -0
  2. package/dist/components/LanguageListToolbar.d.ts +6 -0
  3. package/dist/components/LanguageListToolbar.js +69 -0
  4. package/dist/components/LanguageListToolbar.js.map +1 -0
  5. package/dist/components/LanguageMetabox.d.ts +2 -0
  6. package/dist/components/LanguageMetabox.js +275 -0
  7. package/dist/components/LanguageMetabox.js.map +1 -0
  8. package/dist/components/TranslationActionsClient.d.ts +10 -0
  9. package/dist/components/TranslationActionsClient.js +166 -0
  10. package/dist/components/TranslationActionsClient.js.map +1 -0
  11. package/dist/components/TranslationColumnCell.d.ts +2 -0
  12. package/dist/components/TranslationColumnCell.js +69 -0
  13. package/dist/components/TranslationColumnCell.js.map +1 -0
  14. package/dist/components/TranslationColumnCellClient.d.ts +12 -0
  15. package/dist/components/TranslationColumnCellClient.js +107 -0
  16. package/dist/components/TranslationColumnCellClient.js.map +1 -0
  17. package/dist/components/TranslationsTab.d.ts +2 -0
  18. package/dist/components/TranslationsTab.js +118 -0
  19. package/dist/components/TranslationsTab.js.map +1 -0
  20. package/dist/components/config.d.ts +40 -0
  21. package/dist/components/config.js +31 -0
  22. package/dist/components/config.js.map +1 -0
  23. package/dist/constants.d.ts +5 -0
  24. package/dist/constants.js +24 -0
  25. package/dist/constants.js.map +1 -0
  26. package/dist/endpoints/translations.d.ts +19 -0
  27. package/dist/endpoints/translations.js +301 -0
  28. package/dist/endpoints/translations.js.map +1 -0
  29. package/dist/exports/client.d.ts +4 -0
  30. package/dist/exports/client.js +6 -0
  31. package/dist/exports/client.js.map +1 -0
  32. package/dist/exports/rsc.d.ts +2 -0
  33. package/dist/exports/rsc.js +4 -0
  34. package/dist/exports/rsc.js.map +1 -0
  35. package/dist/hooks/translatedCollection.d.ts +26 -0
  36. package/dist/hooks/translatedCollection.js +290 -0
  37. package/dist/hooks/translatedCollection.js.map +1 -0
  38. package/dist/hooks/translatedGlobal.d.ts +16 -0
  39. package/dist/hooks/translatedGlobal.js +71 -0
  40. package/dist/hooks/translatedGlobal.js.map +1 -0
  41. package/dist/index.d.ts +5 -0
  42. package/dist/index.js +63 -0
  43. package/dist/index.js.map +1 -0
  44. package/dist/lib/config.d.ts +14 -0
  45. package/dist/lib/config.js +96 -0
  46. package/dist/lib/config.js.map +1 -0
  47. package/dist/lib/data.d.ts +107 -0
  48. package/dist/lib/data.js +307 -0
  49. package/dist/lib/data.js.map +1 -0
  50. package/dist/payload-config.d.js +2 -0
  51. package/dist/payload-config.d.js.map +1 -0
  52. package/dist/styles/admin.css +316 -0
  53. package/dist/types.d.ts +96 -0
  54. package/dist/types.js +3 -0
  55. package/dist/types.js.map +1 -0
  56. package/docs/assets/admin-ui/collection-list-language-shortcuts.png +0 -0
  57. package/docs/assets/admin-ui/english-post-translations.png +0 -0
  58. package/docs/assets/admin-ui/ukrainian-post-translations.png +0 -0
  59. package/docs/configuration.md +192 -0
  60. package/docs/helpers.md +231 -0
  61. package/docs/usage.md +269 -0
  62. package/package.json +95 -0
@@ -0,0 +1,107 @@
1
+ import type { CollectionConfig, CollectionSlug, Config, GlobalSlug, Payload, PayloadRequest, Where } from 'payload';
2
+ import type { MultilangFieldNames, MultilangLanguage, TranslationState, WithLanguageArgs } from '../types.js';
3
+ export type DocumentData = {
4
+ id?: number | string;
5
+ } & Record<string, unknown>;
6
+ export declare const asDocument: (value: unknown) => DocumentData;
7
+ export declare const getStringValue: (value: unknown) => string | undefined;
8
+ export declare const getID: (value: unknown) => number | string | undefined;
9
+ export declare const normalizeLanguage: (doc: unknown) => MultilangLanguage;
10
+ type ConfigWithMultilang = Pick<Config, 'admin'> | Pick<Payload['config'], 'admin'>;
11
+ export declare const getLanguagesFromCustom: (custom: unknown) => MultilangLanguage[];
12
+ /**
13
+ * Returns the languages configured for payload-multilang.
14
+ *
15
+ * Pass `languages` or a Payload `config` object when you already have them. Otherwise the helper
16
+ * resolves the cached Payload config from `@payload-config`.
17
+ */
18
+ export declare const getLanguages: ({ config, languages, }?: {
19
+ config?: ConfigWithMultilang;
20
+ languages?: MultilangLanguage[];
21
+ }) => Promise<MultilangLanguage[]>;
22
+ export declare const getDefaultLanguage: ({ config, languages, }: {
23
+ config?: ConfigWithMultilang;
24
+ languages?: MultilangLanguage[];
25
+ }) => Promise<MultilangLanguage | undefined>;
26
+ /**
27
+ * Adds a language constraint to a Payload `where` query.
28
+ *
29
+ * Use this when querying an enabled collection directly and you only want documents for one
30
+ * payload-multilang language.
31
+ */
32
+ export declare const withLanguage: ({ fieldName, language, where, }: WithLanguageArgs) => Where;
33
+ export declare const getDocumentTranslationsWithPayload: <TDoc extends DocumentData = DocumentData>({ id, collection, fieldNames, overrideAccess, payload, req, }: {
34
+ collection: CollectionSlug;
35
+ fieldNames?: MultilangFieldNames;
36
+ id: number | string;
37
+ overrideAccess?: boolean;
38
+ payload: Payload;
39
+ req?: PayloadRequest;
40
+ }) => Promise<TranslationState<TDoc>>;
41
+ export declare const getGroupTranslationsWithPayload: <TDoc extends DocumentData = DocumentData>({ collection, fieldNames, group, overrideAccess, payload, req, }: {
42
+ collection: CollectionSlug;
43
+ fieldNames?: MultilangFieldNames;
44
+ group: string;
45
+ overrideAccess?: boolean;
46
+ payload: Payload;
47
+ req?: PayloadRequest;
48
+ }) => Promise<TranslationState<TDoc>>;
49
+ /**
50
+ * Returns the source document and every document in the same translation group, keyed by language.
51
+ *
52
+ * The helper resolves Payload with the cached project config, so callers only need to pass the
53
+ * collection slug and document id.
54
+ */
55
+ export declare const getDocumentTranslations: <TDoc extends DocumentData = DocumentData>({ id, collection, fieldNames, }: {
56
+ collection: CollectionSlug;
57
+ fieldNames?: MultilangFieldNames;
58
+ id: number | string;
59
+ }) => Promise<TranslationState<TDoc>>;
60
+ /**
61
+ * Returns one target-language document from the source document's translation group.
62
+ *
63
+ * The helper resolves Payload with the cached project config, so callers only need to pass the
64
+ * collection slug, source document id, and target language code.
65
+ */
66
+ export declare const getDocumentTranslation: <TDoc extends DocumentData = DocumentData>({ id, collection, fieldNames, language, }: {
67
+ collection: CollectionSlug;
68
+ fieldNames?: MultilangFieldNames;
69
+ id: number | string;
70
+ language: string;
71
+ }) => Promise<TDoc | undefined>;
72
+ export declare const findGlobalByLanguageWithPayload: <TDoc extends DocumentData = DocumentData>({ slug, depth, language, overrideAccess, payload, req, }: {
73
+ depth?: number;
74
+ language: string;
75
+ overrideAccess?: boolean;
76
+ payload: Payload;
77
+ req?: PayloadRequest;
78
+ slug: GlobalSlug;
79
+ }) => Promise<TDoc>;
80
+ export declare const updateGlobalByLanguageWithPayload: <TDoc extends DocumentData = DocumentData>({ slug, data, depth, language, overrideAccess, payload, req, }: {
81
+ data: Record<string, unknown>;
82
+ depth?: number;
83
+ language: string;
84
+ overrideAccess?: boolean;
85
+ payload: Payload;
86
+ req?: PayloadRequest;
87
+ slug: GlobalSlug;
88
+ }) => Promise<TDoc>;
89
+ export declare const findGlobalByLanguage: <TDoc extends DocumentData = DocumentData>({ slug, depth, language, }: {
90
+ depth?: number;
91
+ language: string;
92
+ slug: GlobalSlug;
93
+ }) => Promise<TDoc>;
94
+ export declare const updateGlobalByLanguage: <TDoc extends DocumentData = DocumentData>({ slug, data, depth, language, }: {
95
+ data: Record<string, unknown>;
96
+ depth?: number;
97
+ language: string;
98
+ slug: GlobalSlug;
99
+ }) => Promise<TDoc>;
100
+ export declare const duplicateDocumentData: ({ collection, doc, duplicateExcludeFields, fieldNames, targetLanguage, }: {
101
+ collection: CollectionConfig;
102
+ doc: DocumentData;
103
+ duplicateExcludeFields: string[];
104
+ fieldNames: MultilangFieldNames;
105
+ targetLanguage: string;
106
+ }) => DocumentData;
107
+ export {};
@@ -0,0 +1,307 @@
1
+ import payloadConfig from '@payload-config';
2
+ import { getPayload } from 'payload';
3
+ import { DEFAULT_FIELD_NAMES } from '../constants.js';
4
+ export const asDocument = (value)=>value && typeof value === 'object' ? value : {};
5
+ export const getStringValue = (value)=>typeof value === 'string' && value.length > 0 ? value : undefined;
6
+ export const getID = (value)=>typeof value === 'number' || typeof value === 'string' ? value : undefined;
7
+ export const normalizeLanguage = (doc)=>{
8
+ const data = asDocument(doc);
9
+ const code = getStringValue(data.code)?.trim().toLowerCase() || '';
10
+ return {
11
+ id: getID(data.id),
12
+ name: getStringValue(data.name)?.trim() || code,
13
+ active: data.active !== false,
14
+ code,
15
+ direction: data.direction === 'rtl' ? 'rtl' : 'ltr',
16
+ flagLabel: getStringValue(data.flagLabel),
17
+ isDefault: data.isDefault === true,
18
+ locale: getStringValue(data.locale),
19
+ order: typeof data.order === 'number' ? data.order : 0
20
+ };
21
+ };
22
+ export const getLanguagesFromCustom = (custom)=>{
23
+ const payloadMultilang = asDocument(asDocument(custom).payloadMultilang);
24
+ const languages = payloadMultilang.languages;
25
+ if (!Array.isArray(languages)) {
26
+ return [];
27
+ }
28
+ return languages.map(normalizeLanguage).filter((language)=>language.code);
29
+ };
30
+ /**
31
+ * Returns the languages configured for payload-multilang.
32
+ *
33
+ * Pass `languages` or a Payload `config` object when you already have them. Otherwise the helper
34
+ * resolves the cached Payload config from `@payload-config`.
35
+ */ export const getLanguages = async ({ config, languages } = {})=>{
36
+ if (languages) {
37
+ return languages.map(normalizeLanguage).filter((language)=>language.code);
38
+ }
39
+ if (config) {
40
+ return getLanguagesFromCustom(config.admin?.custom);
41
+ }
42
+ const payload = await getPayload({
43
+ config: payloadConfig
44
+ });
45
+ return getLanguagesFromCustom(payload.config.admin?.custom);
46
+ };
47
+ export const getDefaultLanguage = async ({ config, languages })=>{
48
+ const configuredLanguages = await getLanguages({
49
+ config,
50
+ languages
51
+ });
52
+ return configuredLanguages.find((language)=>language.isDefault) || configuredLanguages[0];
53
+ };
54
+ /**
55
+ * Adds a language constraint to a Payload `where` query.
56
+ *
57
+ * Use this when querying an enabled collection directly and you only want documents for one
58
+ * payload-multilang language.
59
+ */ export const withLanguage = ({ fieldName = DEFAULT_FIELD_NAMES.language, language, where })=>{
60
+ const languageWhere = {
61
+ [fieldName]: {
62
+ equals: language
63
+ }
64
+ };
65
+ if (!where) {
66
+ return languageWhere;
67
+ }
68
+ return {
69
+ and: [
70
+ where,
71
+ languageWhere
72
+ ]
73
+ };
74
+ };
75
+ export const getDocumentTranslationsWithPayload = async ({ id, collection, fieldNames = DEFAULT_FIELD_NAMES, overrideAccess = true, payload, req })=>{
76
+ const source = asDocument(await payload.findByID({
77
+ id,
78
+ collection,
79
+ depth: 0,
80
+ overrideAccess,
81
+ req
82
+ }));
83
+ const group = getStringValue(source[fieldNames.group]);
84
+ const language = getStringValue(source[fieldNames.language]);
85
+ if (!group) {
86
+ return {
87
+ language,
88
+ source,
89
+ translations: language ? {
90
+ [language]: source
91
+ } : {}
92
+ };
93
+ }
94
+ const result = await payload.find({
95
+ collection,
96
+ depth: 0,
97
+ limit: 200,
98
+ overrideAccess,
99
+ req,
100
+ where: {
101
+ [fieldNames.group]: {
102
+ equals: group
103
+ }
104
+ }
105
+ });
106
+ const translations = result.docs.reduce((acc, doc)=>{
107
+ const translation = asDocument(doc);
108
+ const code = getStringValue(translation[fieldNames.language]);
109
+ if (code) {
110
+ acc[code] = translation;
111
+ }
112
+ return acc;
113
+ }, {});
114
+ return {
115
+ group,
116
+ language,
117
+ source,
118
+ translations
119
+ };
120
+ };
121
+ export const getGroupTranslationsWithPayload = async ({ collection, fieldNames = DEFAULT_FIELD_NAMES, group, overrideAccess = true, payload, req })=>{
122
+ const result = await payload.find({
123
+ collection,
124
+ depth: 0,
125
+ limit: 200,
126
+ overrideAccess,
127
+ req,
128
+ where: {
129
+ [fieldNames.group]: {
130
+ equals: group
131
+ }
132
+ }
133
+ });
134
+ const translations = result.docs.reduce((acc, doc)=>{
135
+ const translation = asDocument(doc);
136
+ const code = getStringValue(translation[fieldNames.language]);
137
+ if (code) {
138
+ acc[code] = translation;
139
+ }
140
+ return acc;
141
+ }, {});
142
+ return {
143
+ group,
144
+ translations
145
+ };
146
+ };
147
+ /**
148
+ * Returns the source document and every document in the same translation group, keyed by language.
149
+ *
150
+ * The helper resolves Payload with the cached project config, so callers only need to pass the
151
+ * collection slug and document id.
152
+ */ export const getDocumentTranslations = async ({ id, collection, fieldNames })=>{
153
+ const payload = await getPayload({
154
+ config: payloadConfig
155
+ });
156
+ return getDocumentTranslationsWithPayload({
157
+ id,
158
+ collection,
159
+ fieldNames,
160
+ payload
161
+ });
162
+ };
163
+ /**
164
+ * Returns one target-language document from the source document's translation group.
165
+ *
166
+ * The helper resolves Payload with the cached project config, so callers only need to pass the
167
+ * collection slug, source document id, and target language code.
168
+ */ export const getDocumentTranslation = async ({ id, collection, fieldNames, language })=>{
169
+ const state = await getDocumentTranslations({
170
+ id,
171
+ collection,
172
+ fieldNames
173
+ });
174
+ return state.translations[language];
175
+ };
176
+ const GLOBAL_SYSTEM_FIELDS = new Set([
177
+ '_status',
178
+ 'createdAt',
179
+ 'globalType',
180
+ 'id',
181
+ 'updatedAt'
182
+ ]);
183
+ const getGlobalPayloadMultilangCustom = ({ slug, payload })=>{
184
+ const global = payload.config.globals.find((item)=>item.slug === slug);
185
+ const payloadMultilang = asDocument(asDocument(global?.admin?.custom).payloadMultilang);
186
+ return payloadMultilang;
187
+ };
188
+ const validateGlobalLanguage = ({ slug, language, payload })=>{
189
+ const languages = getGlobalPayloadMultilangCustom({
190
+ slug,
191
+ payload
192
+ }).languages;
193
+ if (!Array.isArray(languages) || languages.length === 0) {
194
+ return;
195
+ }
196
+ if (!languages.some((candidate)=>candidate.code === language)) {
197
+ throw new Error(`Language "${language}" is not configured for ${slug}.`);
198
+ }
199
+ };
200
+ const getGlobalLanguageTab = ({ doc, language })=>{
201
+ const languageData = asDocument(doc[language]);
202
+ const systemData = Object.entries(doc).reduce((acc, [key, value])=>{
203
+ if (GLOBAL_SYSTEM_FIELDS.has(key)) {
204
+ acc[key] = value;
205
+ }
206
+ return acc;
207
+ }, {});
208
+ return {
209
+ ...systemData,
210
+ ...languageData
211
+ };
212
+ };
213
+ export const findGlobalByLanguageWithPayload = async ({ slug, depth, language, overrideAccess = true, payload, req })=>{
214
+ validateGlobalLanguage({
215
+ slug,
216
+ language,
217
+ payload
218
+ });
219
+ const doc = asDocument(await payload.findGlobal({
220
+ slug,
221
+ depth,
222
+ overrideAccess,
223
+ req
224
+ }));
225
+ return getGlobalLanguageTab({
226
+ doc,
227
+ language
228
+ });
229
+ };
230
+ export const updateGlobalByLanguageWithPayload = async ({ slug, data, depth, language, overrideAccess = true, payload, req })=>{
231
+ validateGlobalLanguage({
232
+ slug,
233
+ language,
234
+ payload
235
+ });
236
+ const currentDoc = asDocument(await payload.findGlobal({
237
+ slug,
238
+ depth: 0,
239
+ overrideAccess,
240
+ req
241
+ }));
242
+ const currentLanguageData = asDocument(currentDoc[language]);
243
+ const doc = asDocument(await payload.updateGlobal({
244
+ slug,
245
+ data: {
246
+ [language]: {
247
+ ...currentLanguageData,
248
+ ...data
249
+ }
250
+ },
251
+ depth,
252
+ overrideAccess,
253
+ req
254
+ }));
255
+ return getGlobalLanguageTab({
256
+ doc,
257
+ language
258
+ });
259
+ };
260
+ export const findGlobalByLanguage = async ({ slug, depth, language })=>{
261
+ const payload = await getPayload({
262
+ config: payloadConfig
263
+ });
264
+ return findGlobalByLanguageWithPayload({
265
+ slug,
266
+ depth,
267
+ language,
268
+ payload
269
+ });
270
+ };
271
+ export const updateGlobalByLanguage = async ({ slug, data, depth, language })=>{
272
+ const payload = await getPayload({
273
+ config: payloadConfig
274
+ });
275
+ return updateGlobalByLanguageWithPayload({
276
+ slug,
277
+ data,
278
+ depth,
279
+ language,
280
+ payload
281
+ });
282
+ };
283
+ const fieldAffectsData = (field)=>'name' in field && typeof field.name === 'string' && field.type !== 'ui';
284
+ export const duplicateDocumentData = ({ collection, doc, duplicateExcludeFields, fieldNames, targetLanguage })=>{
285
+ const excluded = new Set([
286
+ fieldNames.group,
287
+ fieldNames.language,
288
+ fieldNames.meta,
289
+ ...duplicateExcludeFields
290
+ ]);
291
+ const data = {};
292
+ for (const field of collection.fields || []){
293
+ if (!fieldAffectsData(field) || excluded.has(field.name)) {
294
+ continue;
295
+ }
296
+ if (!(field.name in doc)) {
297
+ continue;
298
+ }
299
+ data[field.name] = doc[field.name];
300
+ }
301
+ if (typeof data.slug === 'string' && data.slug.length > 0) {
302
+ data.slug = `${data.slug}-${targetLanguage}`;
303
+ }
304
+ return data;
305
+ };
306
+
307
+ //# sourceMappingURL=data.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/lib/data.ts"],"sourcesContent":["import type {\n CollectionConfig,\n CollectionSlug,\n Config,\n Field,\n GlobalSlug,\n Payload,\n PayloadRequest,\n Where,\n} from 'payload'\n\nimport payloadConfig from '@payload-config'\nimport { getPayload } from 'payload'\n\nimport type {\n MultilangFieldNames,\n MultilangLanguage,\n TranslationState,\n WithLanguageArgs,\n} from '../types.js'\n\nimport { DEFAULT_FIELD_NAMES } from '../constants.js'\n\nexport type DocumentData = {\n id?: number | string\n} & Record<string, unknown>\n\nexport const asDocument = (value: unknown): DocumentData =>\n value && typeof value === 'object' ? (value as DocumentData) : {}\n\nexport const getStringValue = (value: unknown): string | undefined =>\n typeof value === 'string' && value.length > 0 ? value : undefined\n\nexport const getID = (value: unknown): number | string | undefined =>\n typeof value === 'number' || typeof value === 'string' ? value : undefined\n\nexport const normalizeLanguage = (doc: unknown): MultilangLanguage => {\n const data = asDocument(doc)\n const code = getStringValue(data.code)?.trim().toLowerCase() || ''\n\n return {\n id: getID(data.id),\n name: getStringValue(data.name)?.trim() || code,\n active: data.active !== false,\n code,\n direction: data.direction === 'rtl' ? 'rtl' : 'ltr',\n flagLabel: getStringValue(data.flagLabel),\n isDefault: data.isDefault === true,\n locale: getStringValue(data.locale),\n order: typeof data.order === 'number' ? data.order : 0,\n }\n}\n\ntype ConfigWithMultilang = Pick<Config, 'admin'> | Pick<Payload['config'], 'admin'>\n\nexport const getLanguagesFromCustom = (custom: unknown): MultilangLanguage[] => {\n const payloadMultilang = asDocument(asDocument(custom).payloadMultilang)\n const languages = payloadMultilang.languages\n\n if (!Array.isArray(languages)) {\n return []\n }\n\n return languages.map(normalizeLanguage).filter((language) => language.code)\n}\n\n/**\n * Returns the languages configured for payload-multilang.\n *\n * Pass `languages` or a Payload `config` object when you already have them. Otherwise the helper\n * resolves the cached Payload config from `@payload-config`.\n */\nexport const getLanguages = async ({\n config,\n languages,\n}: {\n config?: ConfigWithMultilang\n languages?: MultilangLanguage[]\n} = {}): Promise<MultilangLanguage[]> => {\n if (languages) {\n return languages.map(normalizeLanguage).filter((language) => language.code)\n }\n\n if (config) {\n return getLanguagesFromCustom(config.admin?.custom)\n }\n\n const payload = await getPayload({ config: payloadConfig })\n\n return getLanguagesFromCustom(payload.config.admin?.custom)\n}\n\nexport const getDefaultLanguage = async ({\n config,\n languages,\n}: {\n config?: ConfigWithMultilang\n languages?: MultilangLanguage[]\n}): Promise<MultilangLanguage | undefined> => {\n const configuredLanguages = await getLanguages({ config, languages })\n\n return configuredLanguages.find((language) => language.isDefault) || configuredLanguages[0]\n}\n\n/**\n * Adds a language constraint to a Payload `where` query.\n *\n * Use this when querying an enabled collection directly and you only want documents for one\n * payload-multilang language.\n */\nexport const withLanguage = ({\n fieldName = DEFAULT_FIELD_NAMES.language,\n language,\n where,\n}: WithLanguageArgs): Where => {\n const languageWhere: Where = {\n [fieldName]: {\n equals: language,\n },\n }\n\n if (!where) {\n return languageWhere\n }\n\n return {\n and: [where, languageWhere],\n }\n}\n\nexport const getDocumentTranslationsWithPayload = async <TDoc extends DocumentData = DocumentData>({\n id,\n collection,\n fieldNames = DEFAULT_FIELD_NAMES,\n overrideAccess = true,\n payload,\n req,\n}: {\n collection: CollectionSlug\n fieldNames?: MultilangFieldNames\n id: number | string\n overrideAccess?: boolean\n payload: Payload\n req?: PayloadRequest\n}): Promise<TranslationState<TDoc>> => {\n const source = asDocument(\n await payload.findByID({\n id,\n collection,\n depth: 0,\n overrideAccess,\n req,\n }),\n ) as TDoc\n\n const group = getStringValue(source[fieldNames.group])\n const language = getStringValue(source[fieldNames.language])\n\n if (!group) {\n return {\n language,\n source,\n translations: language ? { [language]: source } : {},\n }\n }\n\n const result = await payload.find({\n collection,\n depth: 0,\n limit: 200,\n overrideAccess,\n req,\n where: {\n [fieldNames.group]: {\n equals: group,\n },\n },\n })\n\n const translations = result.docs.reduce<TranslationState<TDoc>['translations']>((acc, doc) => {\n const translation = asDocument(doc) as TDoc\n const code = getStringValue(translation[fieldNames.language])\n\n if (code) {\n acc[code] = translation\n }\n\n return acc\n }, {})\n\n return {\n group,\n language,\n source,\n translations,\n }\n}\n\nexport const getGroupTranslationsWithPayload = async <TDoc extends DocumentData = DocumentData>({\n collection,\n fieldNames = DEFAULT_FIELD_NAMES,\n group,\n overrideAccess = true,\n payload,\n req,\n}: {\n collection: CollectionSlug\n fieldNames?: MultilangFieldNames\n group: string\n overrideAccess?: boolean\n payload: Payload\n req?: PayloadRequest\n}): Promise<TranslationState<TDoc>> => {\n const result = await payload.find({\n collection,\n depth: 0,\n limit: 200,\n overrideAccess,\n req,\n where: {\n [fieldNames.group]: {\n equals: group,\n },\n },\n })\n\n const translations = result.docs.reduce<TranslationState<TDoc>['translations']>((acc, doc) => {\n const translation = asDocument(doc) as TDoc\n const code = getStringValue(translation[fieldNames.language])\n\n if (code) {\n acc[code] = translation\n }\n\n return acc\n }, {})\n\n return {\n group,\n translations,\n }\n}\n\n/**\n * Returns the source document and every document in the same translation group, keyed by language.\n *\n * The helper resolves Payload with the cached project config, so callers only need to pass the\n * collection slug and document id.\n */\nexport const getDocumentTranslations = async <TDoc extends DocumentData = DocumentData>({\n id,\n collection,\n fieldNames,\n}: {\n collection: CollectionSlug\n fieldNames?: MultilangFieldNames\n id: number | string\n}): Promise<TranslationState<TDoc>> => {\n const payload = await getPayload({ config: payloadConfig })\n\n return getDocumentTranslationsWithPayload<TDoc>({\n id,\n collection,\n fieldNames,\n payload,\n })\n}\n\n/**\n * Returns one target-language document from the source document's translation group.\n *\n * The helper resolves Payload with the cached project config, so callers only need to pass the\n * collection slug, source document id, and target language code.\n */\nexport const getDocumentTranslation = async <TDoc extends DocumentData = DocumentData>({\n id,\n collection,\n fieldNames,\n language,\n}: {\n collection: CollectionSlug\n fieldNames?: MultilangFieldNames\n id: number | string\n language: string\n}): Promise<TDoc | undefined> => {\n const state = await getDocumentTranslations<TDoc>({\n id,\n collection,\n fieldNames,\n })\n\n return state.translations[language]\n}\n\nconst GLOBAL_SYSTEM_FIELDS = new Set(['_status', 'createdAt', 'globalType', 'id', 'updatedAt'])\n\nconst getGlobalPayloadMultilangCustom = ({\n slug,\n payload,\n}: {\n payload: Payload\n slug: GlobalSlug\n}): {\n defaultLanguage?: MultilangLanguage\n languages?: MultilangLanguage[]\n} => {\n const global = payload.config.globals.find((item) => item.slug === slug)\n const payloadMultilang = asDocument(asDocument(global?.admin?.custom).payloadMultilang)\n\n return payloadMultilang as {\n defaultLanguage?: MultilangLanguage\n languages?: MultilangLanguage[]\n }\n}\n\nconst validateGlobalLanguage = ({\n slug,\n language,\n payload,\n}: {\n language: string\n payload: Payload\n slug: GlobalSlug\n}): void => {\n const languages = getGlobalPayloadMultilangCustom({ slug, payload }).languages\n\n if (!Array.isArray(languages) || languages.length === 0) {\n return\n }\n\n if (!languages.some((candidate) => candidate.code === language)) {\n throw new Error(`Language \"${language}\" is not configured for ${slug}.`)\n }\n}\n\nconst getGlobalLanguageTab = <TDoc extends DocumentData = DocumentData>({\n doc,\n language,\n}: {\n doc: DocumentData\n language: string\n}): TDoc => {\n const languageData = asDocument(doc[language])\n const systemData = Object.entries(doc).reduce<DocumentData>((acc, [key, value]) => {\n if (GLOBAL_SYSTEM_FIELDS.has(key)) {\n acc[key] = value\n }\n\n return acc\n }, {})\n\n return {\n ...systemData,\n ...languageData,\n } as TDoc\n}\n\nexport const findGlobalByLanguageWithPayload = async <TDoc extends DocumentData = DocumentData>({\n slug,\n depth,\n language,\n overrideAccess = true,\n payload,\n req,\n}: {\n depth?: number\n language: string\n overrideAccess?: boolean\n payload: Payload\n req?: PayloadRequest\n slug: GlobalSlug\n}): Promise<TDoc> => {\n validateGlobalLanguage({ slug, language, payload })\n\n const doc = asDocument(\n await payload.findGlobal({\n slug,\n depth,\n overrideAccess,\n req,\n } as never),\n )\n\n return getGlobalLanguageTab<TDoc>({\n doc,\n language,\n })\n}\n\nexport const updateGlobalByLanguageWithPayload = async <TDoc extends DocumentData = DocumentData>({\n slug,\n data,\n depth,\n language,\n overrideAccess = true,\n payload,\n req,\n}: {\n data: Record<string, unknown>\n depth?: number\n language: string\n overrideAccess?: boolean\n payload: Payload\n req?: PayloadRequest\n slug: GlobalSlug\n}): Promise<TDoc> => {\n validateGlobalLanguage({ slug, language, payload })\n\n const currentDoc = asDocument(\n await payload.findGlobal({\n slug,\n depth: 0,\n overrideAccess,\n req,\n } as never),\n )\n const currentLanguageData = asDocument(currentDoc[language])\n\n const doc = asDocument(\n await payload.updateGlobal({\n slug,\n data: {\n [language]: {\n ...currentLanguageData,\n ...data,\n },\n },\n depth,\n overrideAccess,\n req,\n } as never),\n )\n\n return getGlobalLanguageTab<TDoc>({\n doc,\n language,\n })\n}\n\nexport const findGlobalByLanguage = async <TDoc extends DocumentData = DocumentData>({\n slug,\n depth,\n language,\n}: {\n depth?: number\n language: string\n slug: GlobalSlug\n}): Promise<TDoc> => {\n const payload = await getPayload({ config: payloadConfig })\n\n return findGlobalByLanguageWithPayload<TDoc>({\n slug,\n depth,\n language,\n payload,\n })\n}\n\nexport const updateGlobalByLanguage = async <TDoc extends DocumentData = DocumentData>({\n slug,\n data,\n depth,\n language,\n}: {\n data: Record<string, unknown>\n depth?: number\n language: string\n slug: GlobalSlug\n}): Promise<TDoc> => {\n const payload = await getPayload({ config: payloadConfig })\n\n return updateGlobalByLanguageWithPayload<TDoc>({\n slug,\n data,\n depth,\n language,\n payload,\n })\n}\n\nconst fieldAffectsData = (field: Field): field is { name: string } & Field =>\n 'name' in field && typeof field.name === 'string' && field.type !== 'ui'\n\nexport const duplicateDocumentData = ({\n collection,\n doc,\n duplicateExcludeFields,\n fieldNames,\n targetLanguage,\n}: {\n collection: CollectionConfig\n doc: DocumentData\n duplicateExcludeFields: string[]\n fieldNames: MultilangFieldNames\n targetLanguage: string\n}): DocumentData => {\n const excluded = new Set([\n fieldNames.group,\n fieldNames.language,\n fieldNames.meta,\n ...duplicateExcludeFields,\n ])\n\n const data: DocumentData = {}\n\n for (const field of collection.fields || []) {\n if (!fieldAffectsData(field) || excluded.has(field.name)) {\n continue\n }\n\n if (!(field.name in doc)) {\n continue\n }\n\n data[field.name] = doc[field.name]\n }\n\n if (typeof data.slug === 'string' && data.slug.length > 0) {\n data.slug = `${data.slug}-${targetLanguage}`\n }\n\n return data\n}\n"],"names":["payloadConfig","getPayload","DEFAULT_FIELD_NAMES","asDocument","value","getStringValue","length","undefined","getID","normalizeLanguage","doc","data","code","trim","toLowerCase","id","name","active","direction","flagLabel","isDefault","locale","order","getLanguagesFromCustom","custom","payloadMultilang","languages","Array","isArray","map","filter","language","getLanguages","config","admin","payload","getDefaultLanguage","configuredLanguages","find","withLanguage","fieldName","where","languageWhere","equals","and","getDocumentTranslationsWithPayload","collection","fieldNames","overrideAccess","req","source","findByID","depth","group","translations","result","limit","docs","reduce","acc","translation","getGroupTranslationsWithPayload","getDocumentTranslations","getDocumentTranslation","state","GLOBAL_SYSTEM_FIELDS","Set","getGlobalPayloadMultilangCustom","slug","global","globals","item","validateGlobalLanguage","some","candidate","Error","getGlobalLanguageTab","languageData","systemData","Object","entries","key","has","findGlobalByLanguageWithPayload","findGlobal","updateGlobalByLanguageWithPayload","currentDoc","currentLanguageData","updateGlobal","findGlobalByLanguage","updateGlobalByLanguage","fieldAffectsData","field","type","duplicateDocumentData","duplicateExcludeFields","targetLanguage","excluded","meta","fields"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+
2
+ //# sourceMappingURL=payload-config.d.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/payload-config.d.ts"],"names":[],"mappings":""}