@payloadcms/plugin-import-export 3.51.0 → 3.52.0-canary.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/ExportSaveButton/index.d.ts.map +1 -1
- package/dist/components/ExportSaveButton/index.js +12 -3
- package/dist/components/ExportSaveButton/index.js.map +1 -1
- package/dist/components/Page/index.d.ts +4 -0
- package/dist/components/Page/index.d.ts.map +1 -0
- package/dist/components/Page/index.js +41 -0
- package/dist/components/Page/index.js.map +1 -0
- package/dist/components/Page/index.scss +3 -0
- package/dist/components/Preview/index.d.ts.map +1 -1
- package/dist/components/Preview/index.js +5 -0
- package/dist/components/Preview/index.js.map +1 -1
- package/dist/components/SortBy/index.d.ts +1 -0
- package/dist/components/SortBy/index.d.ts.map +1 -1
- package/dist/components/SortBy/index.js +1 -3
- package/dist/components/SortBy/index.js.map +1 -1
- package/dist/components/SortBy/index.scss +1 -2
- package/dist/export/createExport.d.ts +2 -0
- package/dist/export/createExport.d.ts.map +1 -1
- package/dist/export/createExport.js +66 -15
- package/dist/export/createExport.js.map +1 -1
- package/dist/export/download.d.ts.map +1 -1
- package/dist/export/download.js +34 -16
- package/dist/export/download.js.map +1 -1
- package/dist/export/flattenObject.d.ts.map +1 -1
- package/dist/export/flattenObject.js +32 -20
- package/dist/export/flattenObject.js.map +1 -1
- package/dist/export/getCustomFieldFunctions.d.ts.map +1 -1
- package/dist/export/getCustomFieldFunctions.js +11 -1
- package/dist/export/getCustomFieldFunctions.js.map +1 -1
- package/dist/export/getFields.d.ts.map +1 -1
- package/dist/export/getFields.js +33 -10
- package/dist/export/getFields.js.map +1 -1
- package/dist/exports/rsc.d.ts +1 -0
- package/dist/exports/rsc.d.ts.map +1 -1
- package/dist/exports/rsc.js +1 -0
- package/dist/exports/rsc.js.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -2
- package/dist/index.js.map +1 -1
- package/dist/translations/languages/ar.d.ts.map +1 -1
- package/dist/translations/languages/ar.js +1 -0
- package/dist/translations/languages/ar.js.map +1 -1
- package/dist/translations/languages/az.d.ts.map +1 -1
- package/dist/translations/languages/az.js +1 -0
- package/dist/translations/languages/az.js.map +1 -1
- package/dist/translations/languages/bg.d.ts.map +1 -1
- package/dist/translations/languages/bg.js +1 -0
- package/dist/translations/languages/bg.js.map +1 -1
- package/dist/translations/languages/ca.d.ts.map +1 -1
- package/dist/translations/languages/ca.js +1 -0
- package/dist/translations/languages/ca.js.map +1 -1
- package/dist/translations/languages/cs.d.ts.map +1 -1
- package/dist/translations/languages/cs.js +1 -0
- package/dist/translations/languages/cs.js.map +1 -1
- package/dist/translations/languages/da.d.ts.map +1 -1
- package/dist/translations/languages/da.js +1 -0
- package/dist/translations/languages/da.js.map +1 -1
- package/dist/translations/languages/de.d.ts.map +1 -1
- package/dist/translations/languages/de.js +1 -0
- package/dist/translations/languages/de.js.map +1 -1
- package/dist/translations/languages/en.d.ts +1 -0
- package/dist/translations/languages/en.d.ts.map +1 -1
- package/dist/translations/languages/en.js +1 -0
- package/dist/translations/languages/en.js.map +1 -1
- package/dist/translations/languages/es.d.ts.map +1 -1
- package/dist/translations/languages/es.js +1 -0
- package/dist/translations/languages/es.js.map +1 -1
- package/dist/translations/languages/et.d.ts.map +1 -1
- package/dist/translations/languages/et.js +1 -0
- package/dist/translations/languages/et.js.map +1 -1
- package/dist/translations/languages/fa.d.ts.map +1 -1
- package/dist/translations/languages/fa.js +1 -0
- package/dist/translations/languages/fa.js.map +1 -1
- package/dist/translations/languages/fr.d.ts.map +1 -1
- package/dist/translations/languages/fr.js +1 -0
- package/dist/translations/languages/fr.js.map +1 -1
- package/dist/translations/languages/he.d.ts.map +1 -1
- package/dist/translations/languages/he.js +1 -0
- package/dist/translations/languages/he.js.map +1 -1
- package/dist/translations/languages/hr.d.ts.map +1 -1
- package/dist/translations/languages/hr.js +1 -0
- package/dist/translations/languages/hr.js.map +1 -1
- package/dist/translations/languages/hu.d.ts.map +1 -1
- package/dist/translations/languages/hu.js +1 -0
- package/dist/translations/languages/hu.js.map +1 -1
- package/dist/translations/languages/hy.d.ts.map +1 -1
- package/dist/translations/languages/hy.js +1 -0
- package/dist/translations/languages/hy.js.map +1 -1
- package/dist/translations/languages/it.d.ts.map +1 -1
- package/dist/translations/languages/it.js +1 -0
- package/dist/translations/languages/it.js.map +1 -1
- package/dist/translations/languages/ja.d.ts.map +1 -1
- package/dist/translations/languages/ja.js +1 -0
- package/dist/translations/languages/ja.js.map +1 -1
- package/dist/translations/languages/ko.d.ts.map +1 -1
- package/dist/translations/languages/ko.js +1 -0
- package/dist/translations/languages/ko.js.map +1 -1
- package/dist/translations/languages/lt.d.ts.map +1 -1
- package/dist/translations/languages/lt.js +1 -0
- package/dist/translations/languages/lt.js.map +1 -1
- package/dist/translations/languages/lv.d.ts.map +1 -1
- package/dist/translations/languages/lv.js +1 -0
- package/dist/translations/languages/lv.js.map +1 -1
- package/dist/translations/languages/my.d.ts.map +1 -1
- package/dist/translations/languages/my.js +1 -0
- package/dist/translations/languages/my.js.map +1 -1
- package/dist/translations/languages/nb.d.ts.map +1 -1
- package/dist/translations/languages/nb.js +1 -0
- package/dist/translations/languages/nb.js.map +1 -1
- package/dist/translations/languages/nl.d.ts.map +1 -1
- package/dist/translations/languages/nl.js +1 -0
- package/dist/translations/languages/nl.js.map +1 -1
- package/dist/translations/languages/pl.d.ts.map +1 -1
- package/dist/translations/languages/pl.js +1 -0
- package/dist/translations/languages/pl.js.map +1 -1
- package/dist/translations/languages/pt.d.ts.map +1 -1
- package/dist/translations/languages/pt.js +1 -0
- package/dist/translations/languages/pt.js.map +1 -1
- package/dist/translations/languages/ro.d.ts.map +1 -1
- package/dist/translations/languages/ro.js +1 -0
- package/dist/translations/languages/ro.js.map +1 -1
- package/dist/translations/languages/rs.d.ts.map +1 -1
- package/dist/translations/languages/rs.js +1 -0
- package/dist/translations/languages/rs.js.map +1 -1
- package/dist/translations/languages/rsLatin.d.ts.map +1 -1
- package/dist/translations/languages/rsLatin.js +1 -0
- package/dist/translations/languages/rsLatin.js.map +1 -1
- package/dist/translations/languages/ru.d.ts.map +1 -1
- package/dist/translations/languages/ru.js +1 -0
- package/dist/translations/languages/ru.js.map +1 -1
- package/dist/translations/languages/sk.d.ts.map +1 -1
- package/dist/translations/languages/sk.js +1 -0
- package/dist/translations/languages/sk.js.map +1 -1
- package/dist/translations/languages/sl.d.ts.map +1 -1
- package/dist/translations/languages/sl.js +1 -0
- package/dist/translations/languages/sl.js.map +1 -1
- package/dist/translations/languages/sv.d.ts.map +1 -1
- package/dist/translations/languages/sv.js +1 -0
- package/dist/translations/languages/sv.js.map +1 -1
- package/dist/translations/languages/th.d.ts.map +1 -1
- package/dist/translations/languages/th.js +1 -0
- package/dist/translations/languages/th.js.map +1 -1
- package/dist/translations/languages/tr.d.ts.map +1 -1
- package/dist/translations/languages/tr.js +1 -0
- package/dist/translations/languages/tr.js.map +1 -1
- package/dist/translations/languages/translation-schema.json +3 -0
- package/dist/translations/languages/uk.d.ts.map +1 -1
- package/dist/translations/languages/uk.js +1 -0
- package/dist/translations/languages/uk.js.map +1 -1
- package/dist/translations/languages/vi.d.ts.map +1 -1
- package/dist/translations/languages/vi.js +1 -0
- package/dist/translations/languages/vi.js.map +1 -1
- package/dist/translations/languages/zh.d.ts.map +1 -1
- package/dist/translations/languages/zh.js +1 -0
- package/dist/translations/languages/zh.js.map +1 -1
- package/dist/translations/languages/zhTw.d.ts.map +1 -1
- package/dist/translations/languages/zhTw.js +1 -0
- package/dist/translations/languages/zhTw.js.map +1 -1
- package/dist/translations/types.d.ts +1 -0
- package/dist/translations/types.d.ts.map +1 -1
- package/dist/translations/types.js.map +1 -1
- package/dist/utilities/getFlattenedFieldKeys.js +1 -1
- package/dist/utilities/getFlattenedFieldKeys.js.map +1 -1
- package/dist/utilities/validateLimitValue.d.ts +3 -0
- package/dist/utilities/validateLimitValue.d.ts.map +1 -0
- package/dist/utilities/validateLimitValue.js +15 -0
- package/dist/utilities/validateLimitValue.js.map +1 -0
- package/package.json +7 -7
package/dist/export/download.js
CHANGED
|
@@ -1,23 +1,41 @@
|
|
|
1
1
|
import { APIError } from 'payload';
|
|
2
2
|
import { createExport } from './createExport.js';
|
|
3
3
|
export const download = async (req, debug = false)=>{
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
4
|
+
try {
|
|
5
|
+
let body;
|
|
6
|
+
if (typeof req?.json === 'function') {
|
|
7
|
+
body = await req.json();
|
|
8
|
+
}
|
|
9
|
+
if (!body || !body.data) {
|
|
10
|
+
throw new APIError('Request data is required.');
|
|
11
|
+
}
|
|
12
|
+
const { collectionSlug } = body.data || {};
|
|
13
|
+
req.payload.logger.info(`Download request received ${collectionSlug}`);
|
|
14
|
+
body.data.user = req.user;
|
|
15
|
+
const res = await createExport({
|
|
16
|
+
download: true,
|
|
17
|
+
input: {
|
|
18
|
+
...body.data,
|
|
19
|
+
debug
|
|
20
|
+
},
|
|
21
|
+
req
|
|
22
|
+
});
|
|
23
|
+
return res;
|
|
24
|
+
} catch (err) {
|
|
25
|
+
// Return JSON for front-end toast
|
|
26
|
+
return new Response(JSON.stringify({
|
|
27
|
+
errors: [
|
|
28
|
+
{
|
|
29
|
+
message: err.message || 'Something went wrong'
|
|
30
|
+
}
|
|
31
|
+
]
|
|
32
|
+
}), {
|
|
33
|
+
headers: {
|
|
34
|
+
'Content-Type': 'application/json'
|
|
35
|
+
},
|
|
36
|
+
status: 400
|
|
37
|
+
});
|
|
7
38
|
}
|
|
8
|
-
if (!body || !body.data) {
|
|
9
|
-
throw new APIError('Request data is required.');
|
|
10
|
-
}
|
|
11
|
-
req.payload.logger.info(`Download request received ${body.data.collectionSlug}`);
|
|
12
|
-
body.data.user = req.user;
|
|
13
|
-
return createExport({
|
|
14
|
-
download: true,
|
|
15
|
-
input: {
|
|
16
|
-
...body.data,
|
|
17
|
-
debug
|
|
18
|
-
},
|
|
19
|
-
req
|
|
20
|
-
});
|
|
21
39
|
};
|
|
22
40
|
|
|
23
41
|
//# sourceMappingURL=download.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/export/download.ts"],"sourcesContent":["import type { PayloadRequest } from 'payload'\n\nimport { APIError } from 'payload'\n\nimport { createExport } from './createExport.js'\n\nexport const download = async (req: PayloadRequest, debug = false) => {\n let body\n
|
|
1
|
+
{"version":3,"sources":["../../src/export/download.ts"],"sourcesContent":["import type { PayloadRequest } from 'payload'\n\nimport { APIError } from 'payload'\n\nimport { createExport } from './createExport.js'\n\nexport const download = async (req: PayloadRequest, debug = false) => {\n try {\n let body\n if (typeof req?.json === 'function') {\n body = await req.json()\n }\n\n if (!body || !body.data) {\n throw new APIError('Request data is required.')\n }\n\n const { collectionSlug } = body.data || {}\n\n req.payload.logger.info(`Download request received ${collectionSlug}`)\n body.data.user = req.user\n\n const res = await createExport({\n download: true,\n input: { ...body.data, debug },\n req,\n })\n\n return res as Response\n } catch (err) {\n // Return JSON for front-end toast\n return new Response(\n JSON.stringify({ errors: [{ message: (err as Error).message || 'Something went wrong' }] }),\n { headers: { 'Content-Type': 'application/json' }, status: 400 },\n )\n }\n}\n"],"names":["APIError","createExport","download","req","debug","body","json","data","collectionSlug","payload","logger","info","user","res","input","err","Response","JSON","stringify","errors","message","headers","status"],"mappings":"AAEA,SAASA,QAAQ,QAAQ,UAAS;AAElC,SAASC,YAAY,QAAQ,oBAAmB;AAEhD,OAAO,MAAMC,WAAW,OAAOC,KAAqBC,QAAQ,KAAK;IAC/D,IAAI;QACF,IAAIC;QACJ,IAAI,OAAOF,KAAKG,SAAS,YAAY;YACnCD,OAAO,MAAMF,IAAIG,IAAI;QACvB;QAEA,IAAI,CAACD,QAAQ,CAACA,KAAKE,IAAI,EAAE;YACvB,MAAM,IAAIP,SAAS;QACrB;QAEA,MAAM,EAAEQ,cAAc,EAAE,GAAGH,KAAKE,IAAI,IAAI,CAAC;QAEzCJ,IAAIM,OAAO,CAACC,MAAM,CAACC,IAAI,CAAC,CAAC,0BAA0B,EAAEH,gBAAgB;QACrEH,KAAKE,IAAI,CAACK,IAAI,GAAGT,IAAIS,IAAI;QAEzB,MAAMC,MAAM,MAAMZ,aAAa;YAC7BC,UAAU;YACVY,OAAO;gBAAE,GAAGT,KAAKE,IAAI;gBAAEH;YAAM;YAC7BD;QACF;QAEA,OAAOU;IACT,EAAE,OAAOE,KAAK;QACZ,kCAAkC;QAClC,OAAO,IAAIC,SACTC,KAAKC,SAAS,CAAC;YAAEC,QAAQ;gBAAC;oBAAEC,SAAS,AAACL,IAAcK,OAAO,IAAI;gBAAuB;aAAE;QAAC,IACzF;YAAEC,SAAS;gBAAE,gBAAgB;YAAmB;YAAGC,QAAQ;QAAI;IAEnE;AACF,EAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"flattenObject.d.ts","sourceRoot":"","sources":["../../src/export/flattenObject.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;AAEvC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAEhD,KAAK,IAAI,GAAG;IACV,GAAG,EAAE,QAAQ,CAAA;IACb,MAAM,CAAC,EAAE,MAAM,EAAE,CAAA;IACjB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAA;CAC9C,CAAA;AAED,eAAO,MAAM,aAAa,6CAKvB,IAAI,KAAG,MAAM,CAAC,MAAM,EAAE,OAAO,
|
|
1
|
+
{"version":3,"file":"flattenObject.d.ts","sourceRoot":"","sources":["../../src/export/flattenObject.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;AAEvC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAEhD,KAAK,IAAI,GAAG;IACV,GAAG,EAAE,QAAQ,CAAA;IACb,MAAM,CAAC,EAAE,MAAM,EAAE,CAAA;IACjB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAA;CAC9C,CAAA;AAED,eAAO,MAAM,aAAa,6CAKvB,IAAI,KAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAqJ/B,CAAA"}
|
|
@@ -4,6 +4,34 @@ export const flattenObject = ({ doc, fields, prefix, toCSVFunctions })=>{
|
|
|
4
4
|
Object.entries(siblingDoc).forEach(([key, value])=>{
|
|
5
5
|
const newKey = prefix ? `${prefix}_${key}` : key;
|
|
6
6
|
if (Array.isArray(value)) {
|
|
7
|
+
// If a custom toCSV function exists for this array field, run it first.
|
|
8
|
+
// If it produces output, skip per-item handling; otherwise, fall back.
|
|
9
|
+
if (toCSVFunctions?.[newKey]) {
|
|
10
|
+
try {
|
|
11
|
+
const result = toCSVFunctions[newKey]({
|
|
12
|
+
columnName: newKey,
|
|
13
|
+
data: row,
|
|
14
|
+
doc,
|
|
15
|
+
row,
|
|
16
|
+
siblingDoc,
|
|
17
|
+
value
|
|
18
|
+
});
|
|
19
|
+
if (typeof result !== 'undefined') {
|
|
20
|
+
// Custom function returned a single value for this array field.
|
|
21
|
+
row[newKey] = result;
|
|
22
|
+
return;
|
|
23
|
+
}
|
|
24
|
+
// If the custom function wrote any keys for this field, consider it handled.
|
|
25
|
+
for(const k in row){
|
|
26
|
+
if (k === newKey || k.startsWith(`${newKey}_`)) {
|
|
27
|
+
return;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
// Otherwise, fall through to per-item handling.
|
|
31
|
+
} catch (error) {
|
|
32
|
+
throw new Error(`Error in toCSVFunction for array "${newKey}": ${JSON.stringify(value)}\n${error.message}`);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
7
35
|
value.forEach((item, index)=>{
|
|
8
36
|
if (typeof item === 'object' && item !== null) {
|
|
9
37
|
const blockType = typeof item.blockType === 'string' ? item.blockType : undefined;
|
|
@@ -14,31 +42,15 @@ export const flattenObject = ({ doc, fields, prefix, toCSVFunctions })=>{
|
|
|
14
42
|
row[`${itemPrefix}_id`] = item.value.id;
|
|
15
43
|
return;
|
|
16
44
|
}
|
|
45
|
+
// Fallback: deep-flatten nested objects
|
|
17
46
|
flatten(item, itemPrefix);
|
|
18
47
|
} else {
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
try {
|
|
22
|
-
const result = toCSVFunctions[newKey]({
|
|
23
|
-
columnName,
|
|
24
|
-
data: row,
|
|
25
|
-
doc,
|
|
26
|
-
row,
|
|
27
|
-
siblingDoc,
|
|
28
|
-
value: item
|
|
29
|
-
});
|
|
30
|
-
if (typeof result !== 'undefined') {
|
|
31
|
-
row[columnName] = result;
|
|
32
|
-
}
|
|
33
|
-
} catch (error) {
|
|
34
|
-
throw new Error(`Error in toCSVFunction for array item "${columnName}": ${JSON.stringify(item)}\n${error.message}`);
|
|
35
|
-
}
|
|
36
|
-
} else {
|
|
37
|
-
row[`${newKey}_${index}`] = item;
|
|
38
|
-
}
|
|
48
|
+
// Primitive array item.
|
|
49
|
+
row[`${newKey}_${index}`] = item;
|
|
39
50
|
}
|
|
40
51
|
});
|
|
41
52
|
} else if (typeof value === 'object' && value !== null) {
|
|
53
|
+
// Object field: use custom toCSV if present, else recurse.
|
|
42
54
|
if (!toCSVFunctions?.[newKey]) {
|
|
43
55
|
flatten(value, newKey);
|
|
44
56
|
} else {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/export/flattenObject.ts"],"sourcesContent":["import type { Document } from 'payload'\n\nimport type { ToCSVFunction } from '../types.js'\n\ntype Args = {\n doc: Document\n fields?: string[]\n prefix?: string\n toCSVFunctions: Record<string, ToCSVFunction>\n}\n\nexport const flattenObject = ({\n doc,\n fields,\n prefix,\n toCSVFunctions,\n}: Args): Record<string, unknown> => {\n const row: Record<string, unknown> = {}\n\n const flatten = (siblingDoc: Document, prefix?: string) => {\n Object.entries(siblingDoc).forEach(([key, value]) => {\n const newKey = prefix ? `${prefix}_${key}` : key\n\n if (Array.isArray(value)) {\n value.forEach((item, index) => {\n if (typeof item === 'object' && item !== null) {\n const blockType = typeof item.blockType === 'string' ? item.blockType : undefined\n
|
|
1
|
+
{"version":3,"sources":["../../src/export/flattenObject.ts"],"sourcesContent":["import type { Document } from 'payload'\n\nimport type { ToCSVFunction } from '../types.js'\n\ntype Args = {\n doc: Document\n fields?: string[]\n prefix?: string\n toCSVFunctions: Record<string, ToCSVFunction>\n}\n\nexport const flattenObject = ({\n doc,\n fields,\n prefix,\n toCSVFunctions,\n}: Args): Record<string, unknown> => {\n const row: Record<string, unknown> = {}\n\n const flatten = (siblingDoc: Document, prefix?: string) => {\n Object.entries(siblingDoc).forEach(([key, value]) => {\n const newKey = prefix ? `${prefix}_${key}` : key\n\n if (Array.isArray(value)) {\n // If a custom toCSV function exists for this array field, run it first.\n // If it produces output, skip per-item handling; otherwise, fall back.\n if (toCSVFunctions?.[newKey]) {\n try {\n const result = toCSVFunctions[newKey]({\n columnName: newKey,\n data: row,\n doc,\n row,\n siblingDoc,\n value, // whole array\n })\n\n if (typeof result !== 'undefined') {\n // Custom function returned a single value for this array field.\n row[newKey] = result\n return\n }\n\n // If the custom function wrote any keys for this field, consider it handled.\n for (const k in row) {\n if (k === newKey || k.startsWith(`${newKey}_`)) {\n return\n }\n }\n // Otherwise, fall through to per-item handling.\n } catch (error) {\n throw new Error(\n `Error in toCSVFunction for array \"${newKey}\": ${JSON.stringify(value)}\\n${\n (error as Error).message\n }`,\n )\n }\n }\n\n value.forEach((item, index) => {\n if (typeof item === 'object' && item !== null) {\n const blockType = typeof item.blockType === 'string' ? item.blockType : undefined\n const itemPrefix = blockType ? `${newKey}_${index}_${blockType}` : `${newKey}_${index}`\n\n // Case: hasMany polymorphic relationships\n if (\n 'relationTo' in item &&\n 'value' in item &&\n typeof item.value === 'object' &&\n item.value !== null\n ) {\n row[`${itemPrefix}_relationTo`] = item.relationTo\n row[`${itemPrefix}_id`] = item.value.id\n return\n }\n\n // Fallback: deep-flatten nested objects\n flatten(item, itemPrefix)\n } else {\n // Primitive array item.\n row[`${newKey}_${index}`] = item\n }\n })\n } else if (typeof value === 'object' && value !== null) {\n // Object field: use custom toCSV if present, else recurse.\n if (!toCSVFunctions?.[newKey]) {\n flatten(value, newKey)\n } else {\n try {\n const result = toCSVFunctions[newKey]({\n columnName: newKey,\n data: row,\n doc,\n row,\n siblingDoc,\n value,\n })\n if (typeof result !== 'undefined') {\n row[newKey] = result\n }\n } catch (error) {\n throw new Error(\n `Error in toCSVFunction for nested object \"${newKey}\": ${JSON.stringify(value)}\\n${\n (error as Error).message\n }`,\n )\n }\n }\n } else {\n if (toCSVFunctions?.[newKey]) {\n try {\n const result = toCSVFunctions[newKey]({\n columnName: newKey,\n data: row,\n doc,\n row,\n siblingDoc,\n value,\n })\n if (typeof result !== 'undefined') {\n row[newKey] = result\n }\n } catch (error) {\n throw new Error(\n `Error in toCSVFunction for field \"${newKey}\": ${JSON.stringify(value)}\\n${\n (error as Error).message\n }`,\n )\n }\n } else {\n row[newKey] = value\n }\n }\n })\n }\n\n flatten(doc, prefix)\n\n if (Array.isArray(fields) && fields.length > 0) {\n const orderedResult: Record<string, unknown> = {}\n\n const fieldToRegex = (field: string): RegExp => {\n const parts = field.split('.').map((part) => `${part}(?:_\\\\d+)?`)\n const pattern = `^${parts.join('_')}`\n return new RegExp(pattern)\n }\n\n fields.forEach((field) => {\n if (row[field.replace(/\\./g, '_')]) {\n const sanitizedField = field.replace(/\\./g, '_')\n orderedResult[sanitizedField] = row[sanitizedField]\n } else {\n const regex = fieldToRegex(field)\n Object.keys(row).forEach((key) => {\n if (regex.test(key)) {\n orderedResult[key] = row[key]\n }\n })\n }\n })\n\n return orderedResult\n }\n\n return row\n}\n"],"names":["flattenObject","doc","fields","prefix","toCSVFunctions","row","flatten","siblingDoc","Object","entries","forEach","key","value","newKey","Array","isArray","result","columnName","data","k","startsWith","error","Error","JSON","stringify","message","item","index","blockType","undefined","itemPrefix","relationTo","id","length","orderedResult","fieldToRegex","field","parts","split","map","part","pattern","join","RegExp","replace","sanitizedField","regex","keys","test"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getCustomFieldFunctions.d.ts","sourceRoot":"","sources":["../../src/export/getCustomFieldFunctions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,cAAc,EAA+C,MAAM,SAAS,CAAA;AAE1F,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAEhD,KAAK,IAAI,GAAG;IACV,MAAM,EAAE,cAAc,EAAE,CAAA;CACzB,CAAA;AAED,eAAO,MAAM,uBAAuB,eAAgB,IAAI,KAAG,MAAM,CAAC,MAAM,EAAE,aAAa,
|
|
1
|
+
{"version":3,"file":"getCustomFieldFunctions.d.ts","sourceRoot":"","sources":["../../src/export/getCustomFieldFunctions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,cAAc,EAA+C,MAAM,SAAS,CAAA;AAE1F,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAEhD,KAAK,IAAI,GAAG;IACV,MAAM,EAAE,cAAc,EAAE,CAAA;CACzB,CAAA;AAED,eAAO,MAAM,uBAAuB,eAAgB,IAAI,KAAG,MAAM,CAAC,MAAM,EAAE,aAAa,CAgGtF,CAAA"}
|
|
@@ -41,7 +41,17 @@ export const getCustomFieldFunctions = ({ fields })=>{
|
|
|
41
41
|
if (!Array.isArray(field.relationTo)) {
|
|
42
42
|
// monomorphic many
|
|
43
43
|
// @ts-expect-error ref is untyped
|
|
44
|
-
result[`${ref.prefix}${field.name}`] = ({ value })=>
|
|
44
|
+
result[`${ref.prefix}${field.name}`] = ({ data, value })=>{
|
|
45
|
+
if (Array.isArray(value)) {
|
|
46
|
+
value.forEach((val, i)=>{
|
|
47
|
+
const id = typeof val === 'object' && val ? val.id : val;
|
|
48
|
+
// @ts-expect-error ref is untyped
|
|
49
|
+
data[`${ref.prefix}${field.name}_${i}_id`] = id;
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
return undefined // prevents further flattening
|
|
53
|
+
;
|
|
54
|
+
};
|
|
45
55
|
} else {
|
|
46
56
|
// polymorphic many
|
|
47
57
|
// @ts-expect-error ref is untyped
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/export/getCustomFieldFunctions.ts"],"sourcesContent":["import { type FlattenedField, traverseFields, type TraverseFieldsCallback } from 'payload'\n\nimport type { ToCSVFunction } from '../types.js'\n\ntype Args = {\n fields: FlattenedField[]\n}\n\nexport const getCustomFieldFunctions = ({ fields }: Args): Record<string, ToCSVFunction> => {\n const result: Record<string, ToCSVFunction> = {}\n\n const buildCustomFunctions: TraverseFieldsCallback = ({ field, parentRef, ref }) => {\n // @ts-expect-error ref is untyped\n ref.prefix = parentRef.prefix || ''\n if (field.type === 'group' || field.type === 'tab') {\n // @ts-expect-error ref is untyped\n const parentPrefix = parentRef?.prefix ? `${parentRef.prefix}_` : ''\n // @ts-expect-error ref is untyped\n ref.prefix = `${parentPrefix}${field.name}_`\n }\n\n if (typeof field.custom?.['plugin-import-export']?.toCSV === 'function') {\n // @ts-expect-error ref is untyped\n result[`${ref.prefix}${field.name}`] = field.custom['plugin-import-export']?.toCSV\n } else if (field.type === 'relationship' || field.type === 'upload') {\n if (field.hasMany !== true) {\n if (!Array.isArray(field.relationTo)) {\n // monomorphic single\n // @ts-expect-error ref is untyped\n result[`${ref.prefix}${field.name}`] = ({ value }) =>\n typeof value === 'object' && value && 'id' in value ? value.id : value\n } else {\n // polymorphic single\n // @ts-expect-error ref is untyped\n result[`${ref.prefix}${field.name}`] = ({ data, value }) => {\n if (value && typeof value === 'object' && 'relationTo' in value && 'value' in value) {\n const relationTo = (value as { relationTo: string; value: { id: number | string } })\n .relationTo\n const relatedDoc = (value as { relationTo: string; value: { id: number | string } })\n .value\n if (relatedDoc && typeof relatedDoc === 'object') {\n // @ts-expect-error ref is untyped\n data[`${ref.prefix}${field.name}_id`] = relatedDoc.id\n // @ts-expect-error ref is untyped\n data[`${ref.prefix}${field.name}_relationTo`] = relationTo\n }\n }\n return undefined // prevents further flattening\n }\n }\n } else {\n if (!Array.isArray(field.relationTo)) {\n // monomorphic many\n // @ts-expect-error ref is untyped\n result[`${ref.prefix}${field.name}`] = ({\n value,\n }: {\n
|
|
1
|
+
{"version":3,"sources":["../../src/export/getCustomFieldFunctions.ts"],"sourcesContent":["import { type FlattenedField, traverseFields, type TraverseFieldsCallback } from 'payload'\n\nimport type { ToCSVFunction } from '../types.js'\n\ntype Args = {\n fields: FlattenedField[]\n}\n\nexport const getCustomFieldFunctions = ({ fields }: Args): Record<string, ToCSVFunction> => {\n const result: Record<string, ToCSVFunction> = {}\n\n const buildCustomFunctions: TraverseFieldsCallback = ({ field, parentRef, ref }) => {\n // @ts-expect-error ref is untyped\n ref.prefix = parentRef.prefix || ''\n if (field.type === 'group' || field.type === 'tab') {\n // @ts-expect-error ref is untyped\n const parentPrefix = parentRef?.prefix ? `${parentRef.prefix}_` : ''\n // @ts-expect-error ref is untyped\n ref.prefix = `${parentPrefix}${field.name}_`\n }\n\n if (typeof field.custom?.['plugin-import-export']?.toCSV === 'function') {\n // @ts-expect-error ref is untyped\n result[`${ref.prefix}${field.name}`] = field.custom['plugin-import-export']?.toCSV\n } else if (field.type === 'relationship' || field.type === 'upload') {\n if (field.hasMany !== true) {\n if (!Array.isArray(field.relationTo)) {\n // monomorphic single\n // @ts-expect-error ref is untyped\n result[`${ref.prefix}${field.name}`] = ({ value }) =>\n typeof value === 'object' && value && 'id' in value ? value.id : value\n } else {\n // polymorphic single\n // @ts-expect-error ref is untyped\n result[`${ref.prefix}${field.name}`] = ({ data, value }) => {\n if (value && typeof value === 'object' && 'relationTo' in value && 'value' in value) {\n const relationTo = (value as { relationTo: string; value: { id: number | string } })\n .relationTo\n const relatedDoc = (value as { relationTo: string; value: { id: number | string } })\n .value\n if (relatedDoc && typeof relatedDoc === 'object') {\n // @ts-expect-error ref is untyped\n data[`${ref.prefix}${field.name}_id`] = relatedDoc.id\n // @ts-expect-error ref is untyped\n data[`${ref.prefix}${field.name}_relationTo`] = relationTo\n }\n }\n return undefined // prevents further flattening\n }\n }\n } else {\n if (!Array.isArray(field.relationTo)) {\n // monomorphic many\n // @ts-expect-error ref is untyped\n result[`${ref.prefix}${field.name}`] = ({\n data,\n value,\n }: {\n data: Record<string, unknown>\n value: Array<number | Record<string, any> | string> | undefined\n }) => {\n if (Array.isArray(value)) {\n value.forEach((val, i) => {\n const id = typeof val === 'object' && val ? val.id : val\n // @ts-expect-error ref is untyped\n data[`${ref.prefix}${field.name}_${i}_id`] = id\n })\n }\n return undefined // prevents further flattening\n }\n } else {\n // polymorphic many\n // @ts-expect-error ref is untyped\n result[`${ref.prefix}${field.name}`] = ({\n data,\n value,\n }: {\n data: Record<string, unknown>\n value: Array<Record<string, any>> | undefined\n }) => {\n if (Array.isArray(value)) {\n value.forEach((val, i) => {\n if (val && typeof val === 'object') {\n const relationTo = val.relationTo\n const relatedDoc = val.value\n if (relationTo && relatedDoc && typeof relatedDoc === 'object') {\n // @ts-expect-error ref is untyped\n data[`${ref.prefix}${field.name}_${i}_id`] = relatedDoc.id\n // @ts-expect-error ref is untyped\n data[`${ref.prefix}${field.name}_${i}_relationTo`] = relationTo\n }\n }\n })\n }\n return undefined\n }\n }\n }\n }\n }\n\n traverseFields({ callback: buildCustomFunctions, fields })\n\n return result\n}\n"],"names":["traverseFields","getCustomFieldFunctions","fields","result","buildCustomFunctions","field","parentRef","ref","prefix","type","parentPrefix","name","custom","toCSV","hasMany","Array","isArray","relationTo","value","id","data","relatedDoc","undefined","forEach","val","i","callback"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getFields.d.ts","sourceRoot":"","sources":["../../src/export/getFields.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"getFields.d.ts","sourceRoot":"","sources":["../../src/export/getFields.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,KAAK,EAAe,MAAM,SAAS,CAAA;AAEzD,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAA;AAK3D,eAAO,MAAM,SAAS,WAAY,MAAM,iBAAiB,wBAAwB,KAAG,KAAK,EA0OxF,CAAA"}
|
package/dist/export/getFields.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { validateLimitValue } from '../utilities/validateLimitValue.js';
|
|
1
2
|
import { getFilename } from './getFilename.js';
|
|
2
3
|
export const getFields = (config, pluginConfig)=>{
|
|
3
4
|
let localeField;
|
|
@@ -6,7 +7,7 @@ export const getFields = (config, pluginConfig)=>{
|
|
|
6
7
|
name: 'locale',
|
|
7
8
|
type: 'select',
|
|
8
9
|
admin: {
|
|
9
|
-
width: '
|
|
10
|
+
width: '25%'
|
|
10
11
|
},
|
|
11
12
|
defaultValue: 'all',
|
|
12
13
|
// @ts-expect-error - this is not correctly typed in plugins right now
|
|
@@ -43,7 +44,7 @@ export const getFields = (config, pluginConfig)=>{
|
|
|
43
44
|
admin: {
|
|
44
45
|
// Hide if a forced format is set via plugin config
|
|
45
46
|
condition: ()=>!pluginConfig?.format,
|
|
46
|
-
width: '33%'
|
|
47
|
+
width: '33.3333%'
|
|
47
48
|
},
|
|
48
49
|
defaultValue: (()=>{
|
|
49
50
|
// Default to plugin-defined format, otherwise 'csv'
|
|
@@ -68,27 +69,48 @@ export const getFields = (config, pluginConfig)=>{
|
|
|
68
69
|
type: 'number',
|
|
69
70
|
admin: {
|
|
70
71
|
placeholder: 'No limit',
|
|
71
|
-
|
|
72
|
+
step: 100,
|
|
73
|
+
width: '33.3333%'
|
|
74
|
+
},
|
|
75
|
+
validate: (value, { req })=>{
|
|
76
|
+
return validateLimitValue(value, req.t) ?? true;
|
|
72
77
|
},
|
|
73
78
|
// @ts-expect-error - this is not correctly typed in plugins right now
|
|
74
79
|
label: ({ t })=>t('plugin-import-export:field-limit-label')
|
|
75
80
|
},
|
|
76
81
|
{
|
|
77
|
-
name: '
|
|
78
|
-
type: '
|
|
82
|
+
name: 'page',
|
|
83
|
+
type: 'number',
|
|
79
84
|
admin: {
|
|
80
85
|
components: {
|
|
81
|
-
Field: '@payloadcms/plugin-import-export/rsc#
|
|
82
|
-
}
|
|
86
|
+
Field: '@payloadcms/plugin-import-export/rsc#Page'
|
|
87
|
+
},
|
|
88
|
+
condition: ({ limit })=>{
|
|
89
|
+
// Show the page field only if limit is set
|
|
90
|
+
return typeof limit === 'number' && limit !== 0;
|
|
91
|
+
},
|
|
92
|
+
width: '33.3333%'
|
|
83
93
|
},
|
|
94
|
+
defaultValue: 1,
|
|
84
95
|
// @ts-expect-error - this is not correctly typed in plugins right now
|
|
85
|
-
label: ({ t })=>t('plugin-import-export:field-
|
|
96
|
+
label: ({ t })=>t('plugin-import-export:field-page-label')
|
|
86
97
|
}
|
|
87
98
|
]
|
|
88
99
|
},
|
|
89
100
|
{
|
|
90
101
|
type: 'row',
|
|
91
102
|
fields: [
|
|
103
|
+
{
|
|
104
|
+
name: 'sort',
|
|
105
|
+
type: 'text',
|
|
106
|
+
admin: {
|
|
107
|
+
components: {
|
|
108
|
+
Field: '@payloadcms/plugin-import-export/rsc#SortBy'
|
|
109
|
+
}
|
|
110
|
+
},
|
|
111
|
+
// @ts-expect-error - this is not correctly typed in plugins right now
|
|
112
|
+
label: ({ t })=>t('plugin-import-export:field-sort-label')
|
|
113
|
+
},
|
|
92
114
|
...localeField ? [
|
|
93
115
|
localeField
|
|
94
116
|
] : [],
|
|
@@ -100,7 +122,7 @@ export const getFields = (config, pluginConfig)=>{
|
|
|
100
122
|
const collectionConfig = (config.collections ?? []).find((collection)=>collection.slug === data.collectionSlug);
|
|
101
123
|
return Boolean(typeof collectionConfig?.versions === 'object' && collectionConfig?.versions?.drafts);
|
|
102
124
|
},
|
|
103
|
-
width: '
|
|
125
|
+
width: '25%'
|
|
104
126
|
},
|
|
105
127
|
defaultValue: 'yes',
|
|
106
128
|
// @ts-expect-error - this is not correctly typed in plugins right now
|
|
@@ -142,7 +164,8 @@ export const getFields = (config, pluginConfig)=>{
|
|
|
142
164
|
label: ({ t })=>t('plugin-import-export:selectionToUse-allDocuments'),
|
|
143
165
|
value: 'all'
|
|
144
166
|
}
|
|
145
|
-
]
|
|
167
|
+
],
|
|
168
|
+
virtual: true
|
|
146
169
|
},
|
|
147
170
|
{
|
|
148
171
|
name: 'fields',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/export/getFields.ts"],"sourcesContent":["import type { Config, Field, SelectField } from 'payload'\n\nimport type { ImportExportPluginConfig } from '../types.js'\n\nimport { getFilename } from './getFilename.js'\n\nexport const getFields = (config: Config, pluginConfig?: ImportExportPluginConfig): Field[] => {\n let localeField: SelectField | undefined\n if (config.localization) {\n localeField = {\n name: 'locale',\n type: 'select',\n admin: {\n width: '33%',\n },\n defaultValue: 'all',\n // @ts-expect-error - this is not correctly typed in plugins right now\n label: ({ t }) => t('plugin-import-export:field-locale-label'),\n options: [\n {\n label: ({ t }) => t('general:allLocales'),\n value: 'all',\n },\n ...config.localization.locales.map((locale) => ({\n label: typeof locale === 'string' ? locale : locale.label,\n value: typeof locale === 'string' ? locale : locale.code,\n })),\n ],\n }\n }\n\n return [\n {\n type: 'collapsible',\n fields: [\n {\n name: 'name',\n type: 'text',\n defaultValue: () => getFilename(),\n // @ts-expect-error - this is not correctly typed in plugins right now\n label: ({ t }) => t('plugin-import-export:field-name-label'),\n },\n {\n type: 'row',\n fields: [\n {\n name: 'format',\n type: 'select',\n admin: {\n // Hide if a forced format is set via plugin config\n condition: () => !pluginConfig?.format,\n width: '33%',\n },\n defaultValue: (() => {\n // Default to plugin-defined format, otherwise 'csv'\n return pluginConfig?.format ?? 'csv'\n })(),\n // @ts-expect-error - this is not correctly typed in plugins right now\n label: ({ t }) => t('plugin-import-export:field-format-label'),\n options: [\n {\n label: 'CSV',\n value: 'csv',\n },\n {\n label: 'JSON',\n value: 'json',\n },\n ],\n required: true,\n },\n {\n name: 'limit',\n type: 'number',\n admin: {\n placeholder: 'No limit',\n width: '33%',\n },\n // @ts-expect-error - this is not correctly typed in plugins right now\n label: ({ t }) => t('plugin-import-export:field-limit-label'),\n },\n {\n name: 'sort',\n type: 'text',\n admin: {\n components: {\n Field: '@payloadcms/plugin-import-export/rsc#SortBy',\n },\n },\n // @ts-expect-error - this is not correctly typed in plugins right now\n label: ({ t }) => t('plugin-import-export:field-sort-label'),\n },\n ],\n },\n {\n type: 'row',\n fields: [\n ...(localeField ? [localeField] : []),\n {\n name: 'drafts',\n type: 'select',\n admin: {\n condition: (data) => {\n const collectionConfig = (config.collections ?? []).find(\n (collection) => collection.slug === data.collectionSlug,\n )\n return Boolean(\n typeof collectionConfig?.versions === 'object' &&\n collectionConfig?.versions?.drafts,\n )\n },\n width: '33%',\n },\n defaultValue: 'yes',\n // @ts-expect-error - this is not correctly typed in plugins right now\n label: ({ t }) => t('plugin-import-export:field-drafts-label'),\n options: [\n {\n label: ({ t }) => t('general:yes'),\n value: 'yes',\n },\n {\n label: ({ t }) => t('general:no'),\n value: 'no',\n },\n ],\n },\n // {\n // name: 'depth',\n // type: 'number',\n // // @ts-expect-error - this is not correctly typed in plugins right now\n // label: ({ t }) => t('plugin-import-export:field-depth-label'),\n // admin: {\n // width: '33%',\n // },\n // defaultValue: 1,\n // required: true,\n // },\n ],\n },\n {\n name: 'selectionToUse',\n type: 'radio',\n admin: {\n components: {\n Field: '@payloadcms/plugin-import-export/rsc#SelectionToUseField',\n },\n },\n options: [\n {\n // @ts-expect-error - this is not correctly typed in plugins right now\n label: ({ t }) => t('plugin-import-export:selectionToUse-currentSelection'),\n value: 'currentSelection',\n },\n {\n // @ts-expect-error - this is not correctly typed in plugins right now\n label: ({ t }) => t('plugin-import-export:selectionToUse-currentFilters'),\n value: 'currentFilters',\n },\n {\n // @ts-expect-error - this is not correctly typed in plugins right now\n label: ({ t }) => t('plugin-import-export:selectionToUse-allDocuments'),\n value: 'all',\n },\n ],\n },\n {\n name: 'fields',\n type: 'text',\n admin: {\n components: {\n Field: '@payloadcms/plugin-import-export/rsc#FieldsToExport',\n },\n },\n hasMany: true,\n // @ts-expect-error - this is not correctly typed in plugins right now\n label: ({ t }) => t('plugin-import-export:field-fields-label'),\n },\n {\n name: 'collectionSlug',\n type: 'text',\n admin: {\n components: {\n Field: '@payloadcms/plugin-import-export/rsc#CollectionField',\n },\n hidden: true,\n },\n required: true,\n },\n {\n name: 'where',\n type: 'json',\n admin: {\n hidden: true,\n },\n defaultValue: {},\n hooks: {\n beforeValidate: [\n ({ value }) => {\n return value ?? {}\n },\n ],\n },\n },\n ],\n // @ts-expect-error - this is not correctly typed in plugins right now\n label: ({ t }) => t('plugin-import-export:exportOptions'),\n },\n {\n name: 'preview',\n type: 'ui',\n admin: {\n components: {\n Field: '@payloadcms/plugin-import-export/rsc#Preview',\n },\n },\n },\n ]\n}\n"],"names":["getFilename","getFields","config","pluginConfig","localeField","localization","name","type","admin","width","defaultValue","label","t","options","value","locales","map","locale","code","fields","condition","format","required","placeholder","components","Field","data","collectionConfig","collections","find","collection","slug","collectionSlug","Boolean","versions","drafts","hasMany","hidden","hooks","beforeValidate"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../src/export/getFields.ts"],"sourcesContent":["import type { TFunction } from '@payloadcms/translations'\nimport type { Config, Field, SelectField } from 'payload'\n\nimport type { ImportExportPluginConfig } from '../types.js'\n\nimport { validateLimitValue } from '../utilities/validateLimitValue.js'\nimport { getFilename } from './getFilename.js'\n\nexport const getFields = (config: Config, pluginConfig?: ImportExportPluginConfig): Field[] => {\n let localeField: SelectField | undefined\n if (config.localization) {\n localeField = {\n name: 'locale',\n type: 'select',\n admin: {\n width: '25%',\n },\n defaultValue: 'all',\n // @ts-expect-error - this is not correctly typed in plugins right now\n label: ({ t }) => t('plugin-import-export:field-locale-label'),\n options: [\n {\n label: ({ t }) => t('general:allLocales'),\n value: 'all',\n },\n ...config.localization.locales.map((locale) => ({\n label: typeof locale === 'string' ? locale : locale.label,\n value: typeof locale === 'string' ? locale : locale.code,\n })),\n ],\n }\n }\n\n return [\n {\n type: 'collapsible',\n fields: [\n {\n name: 'name',\n type: 'text',\n defaultValue: () => getFilename(),\n // @ts-expect-error - this is not correctly typed in plugins right now\n label: ({ t }) => t('plugin-import-export:field-name-label'),\n },\n {\n type: 'row',\n fields: [\n {\n name: 'format',\n type: 'select',\n admin: {\n // Hide if a forced format is set via plugin config\n condition: () => !pluginConfig?.format,\n width: '33.3333%',\n },\n defaultValue: (() => {\n // Default to plugin-defined format, otherwise 'csv'\n return pluginConfig?.format ?? 'csv'\n })(),\n // @ts-expect-error - this is not correctly typed in plugins right now\n label: ({ t }) => t('plugin-import-export:field-format-label'),\n options: [\n {\n label: 'CSV',\n value: 'csv',\n },\n {\n label: 'JSON',\n value: 'json',\n },\n ],\n required: true,\n },\n {\n name: 'limit',\n type: 'number',\n admin: {\n placeholder: 'No limit',\n step: 100,\n width: '33.3333%',\n },\n validate: (value: null | number | undefined, { req }: { req: { t: TFunction } }) => {\n return validateLimitValue(value, req.t) ?? true\n },\n // @ts-expect-error - this is not correctly typed in plugins right now\n label: ({ t }) => t('plugin-import-export:field-limit-label'),\n },\n {\n name: 'page',\n type: 'number',\n admin: {\n components: {\n Field: '@payloadcms/plugin-import-export/rsc#Page',\n },\n condition: ({ limit }) => {\n // Show the page field only if limit is set\n return typeof limit === 'number' && limit !== 0\n },\n width: '33.3333%',\n },\n defaultValue: 1,\n // @ts-expect-error - this is not correctly typed in plugins right now\n label: ({ t }) => t('plugin-import-export:field-page-label'),\n },\n ],\n },\n {\n type: 'row',\n fields: [\n {\n name: 'sort',\n type: 'text',\n admin: {\n components: {\n Field: '@payloadcms/plugin-import-export/rsc#SortBy',\n },\n },\n // @ts-expect-error - this is not correctly typed in plugins right now\n label: ({ t }) => t('plugin-import-export:field-sort-label'),\n },\n ...(localeField ? [localeField] : []),\n {\n name: 'drafts',\n type: 'select',\n admin: {\n condition: (data) => {\n const collectionConfig = (config.collections ?? []).find(\n (collection) => collection.slug === data.collectionSlug,\n )\n return Boolean(\n typeof collectionConfig?.versions === 'object' &&\n collectionConfig?.versions?.drafts,\n )\n },\n width: '25%',\n },\n defaultValue: 'yes',\n // @ts-expect-error - this is not correctly typed in plugins right now\n label: ({ t }) => t('plugin-import-export:field-drafts-label'),\n options: [\n {\n label: ({ t }) => t('general:yes'),\n value: 'yes',\n },\n {\n label: ({ t }) => t('general:no'),\n value: 'no',\n },\n ],\n },\n // {\n // name: 'depth',\n // type: 'number',\n // // @ts-expect-error - this is not correctly typed in plugins right now\n // label: ({ t }) => t('plugin-import-export:field-depth-label'),\n // admin: {\n // width: '33%',\n // },\n // defaultValue: 1,\n // required: true,\n // },\n ],\n },\n {\n name: 'selectionToUse',\n type: 'radio',\n admin: {\n components: {\n Field: '@payloadcms/plugin-import-export/rsc#SelectionToUseField',\n },\n },\n options: [\n {\n // @ts-expect-error - this is not correctly typed in plugins right now\n label: ({ t }) => t('plugin-import-export:selectionToUse-currentSelection'),\n value: 'currentSelection',\n },\n {\n // @ts-expect-error - this is not correctly typed in plugins right now\n label: ({ t }) => t('plugin-import-export:selectionToUse-currentFilters'),\n value: 'currentFilters',\n },\n {\n // @ts-expect-error - this is not correctly typed in plugins right now\n label: ({ t }) => t('plugin-import-export:selectionToUse-allDocuments'),\n value: 'all',\n },\n ],\n virtual: true,\n },\n {\n name: 'fields',\n type: 'text',\n admin: {\n components: {\n Field: '@payloadcms/plugin-import-export/rsc#FieldsToExport',\n },\n },\n hasMany: true,\n // @ts-expect-error - this is not correctly typed in plugins right now\n label: ({ t }) => t('plugin-import-export:field-fields-label'),\n },\n {\n name: 'collectionSlug',\n type: 'text',\n admin: {\n components: {\n Field: '@payloadcms/plugin-import-export/rsc#CollectionField',\n },\n hidden: true,\n },\n required: true,\n },\n {\n name: 'where',\n type: 'json',\n admin: {\n hidden: true,\n },\n defaultValue: {},\n hooks: {\n beforeValidate: [\n ({ value }) => {\n return value ?? {}\n },\n ],\n },\n },\n ],\n // @ts-expect-error - this is not correctly typed in plugins right now\n label: ({ t }) => t('plugin-import-export:exportOptions'),\n },\n {\n name: 'preview',\n type: 'ui',\n admin: {\n components: {\n Field: '@payloadcms/plugin-import-export/rsc#Preview',\n },\n },\n },\n ]\n}\n"],"names":["validateLimitValue","getFilename","getFields","config","pluginConfig","localeField","localization","name","type","admin","width","defaultValue","label","t","options","value","locales","map","locale","code","fields","condition","format","required","placeholder","step","validate","req","components","Field","limit","data","collectionConfig","collections","find","collection","slug","collectionSlug","Boolean","versions","drafts","virtual","hasMany","hidden","hooks","beforeValidate"],"mappings":"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"}
|
package/dist/exports/rsc.d.ts
CHANGED
|
@@ -3,6 +3,7 @@ export { ExportListMenuItem } from '../components/ExportListMenuItem/index.js';
|
|
|
3
3
|
export { ExportSaveButton } from '../components/ExportSaveButton/index.js';
|
|
4
4
|
export { FieldsToExport } from '../components/FieldsToExport/index.js';
|
|
5
5
|
export { ImportExportProvider } from '../components/ImportExportProvider/index.js';
|
|
6
|
+
export { Page } from '../components/Page/index.js';
|
|
6
7
|
export { Preview } from '../components/Preview/index.js';
|
|
7
8
|
export { SelectionToUseField } from '../components/SelectionToUseField/index.js';
|
|
8
9
|
export { SortBy } from '../components/SortBy/index.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rsc.d.ts","sourceRoot":"","sources":["../../src/exports/rsc.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,wCAAwC,CAAA;AACxE,OAAO,EAAE,kBAAkB,EAAE,MAAM,2CAA2C,CAAA;AAC9E,OAAO,EAAE,gBAAgB,EAAE,MAAM,yCAAyC,CAAA;AAC1E,OAAO,EAAE,cAAc,EAAE,MAAM,uCAAuC,CAAA;AACtE,OAAO,EAAE,oBAAoB,EAAE,MAAM,6CAA6C,CAAA;AAClF,OAAO,EAAE,OAAO,EAAE,MAAM,gCAAgC,CAAA;AACxD,OAAO,EAAE,mBAAmB,EAAE,MAAM,4CAA4C,CAAA;AAChF,OAAO,EAAE,MAAM,EAAE,MAAM,+BAA+B,CAAA"}
|
|
1
|
+
{"version":3,"file":"rsc.d.ts","sourceRoot":"","sources":["../../src/exports/rsc.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,wCAAwC,CAAA;AACxE,OAAO,EAAE,kBAAkB,EAAE,MAAM,2CAA2C,CAAA;AAC9E,OAAO,EAAE,gBAAgB,EAAE,MAAM,yCAAyC,CAAA;AAC1E,OAAO,EAAE,cAAc,EAAE,MAAM,uCAAuC,CAAA;AACtE,OAAO,EAAE,oBAAoB,EAAE,MAAM,6CAA6C,CAAA;AAClF,OAAO,EAAE,IAAI,EAAE,MAAM,6BAA6B,CAAA;AAClD,OAAO,EAAE,OAAO,EAAE,MAAM,gCAAgC,CAAA;AACxD,OAAO,EAAE,mBAAmB,EAAE,MAAM,4CAA4C,CAAA;AAChF,OAAO,EAAE,MAAM,EAAE,MAAM,+BAA+B,CAAA"}
|
package/dist/exports/rsc.js
CHANGED
|
@@ -3,6 +3,7 @@ export { ExportListMenuItem } from '../components/ExportListMenuItem/index.js';
|
|
|
3
3
|
export { ExportSaveButton } from '../components/ExportSaveButton/index.js';
|
|
4
4
|
export { FieldsToExport } from '../components/FieldsToExport/index.js';
|
|
5
5
|
export { ImportExportProvider } from '../components/ImportExportProvider/index.js';
|
|
6
|
+
export { Page } from '../components/Page/index.js';
|
|
6
7
|
export { Preview } from '../components/Preview/index.js';
|
|
7
8
|
export { SelectionToUseField } from '../components/SelectionToUseField/index.js';
|
|
8
9
|
export { SortBy } from '../components/SortBy/index.js';
|
package/dist/exports/rsc.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/exports/rsc.ts"],"sourcesContent":["export { CollectionField } from '../components/CollectionField/index.js'\nexport { ExportListMenuItem } from '../components/ExportListMenuItem/index.js'\nexport { ExportSaveButton } from '../components/ExportSaveButton/index.js'\nexport { FieldsToExport } from '../components/FieldsToExport/index.js'\nexport { ImportExportProvider } from '../components/ImportExportProvider/index.js'\nexport { Preview } from '../components/Preview/index.js'\nexport { SelectionToUseField } from '../components/SelectionToUseField/index.js'\nexport { SortBy } from '../components/SortBy/index.js'\n"],"names":["CollectionField","ExportListMenuItem","ExportSaveButton","FieldsToExport","ImportExportProvider","Preview","SelectionToUseField","SortBy"],"mappings":"AAAA,SAASA,eAAe,QAAQ,yCAAwC;AACxE,SAASC,kBAAkB,QAAQ,4CAA2C;AAC9E,SAASC,gBAAgB,QAAQ,0CAAyC;AAC1E,SAASC,cAAc,QAAQ,wCAAuC;AACtE,SAASC,oBAAoB,QAAQ,8CAA6C;AAClF,SAASC,OAAO,QAAQ,iCAAgC;AACxD,SAASC,mBAAmB,QAAQ,6CAA4C;AAChF,SAASC,MAAM,QAAQ,gCAA+B"}
|
|
1
|
+
{"version":3,"sources":["../../src/exports/rsc.ts"],"sourcesContent":["export { CollectionField } from '../components/CollectionField/index.js'\nexport { ExportListMenuItem } from '../components/ExportListMenuItem/index.js'\nexport { ExportSaveButton } from '../components/ExportSaveButton/index.js'\nexport { FieldsToExport } from '../components/FieldsToExport/index.js'\nexport { ImportExportProvider } from '../components/ImportExportProvider/index.js'\nexport { Page } from '../components/Page/index.js'\nexport { Preview } from '../components/Preview/index.js'\nexport { SelectionToUseField } from '../components/SelectionToUseField/index.js'\nexport { SortBy } from '../components/SortBy/index.js'\n"],"names":["CollectionField","ExportListMenuItem","ExportSaveButton","FieldsToExport","ImportExportProvider","Page","Preview","SelectionToUseField","SortBy"],"mappings":"AAAA,SAASA,eAAe,QAAQ,yCAAwC;AACxE,SAASC,kBAAkB,QAAQ,4CAA2C;AAC9E,SAASC,gBAAgB,QAAQ,0CAAyC;AAC1E,SAASC,cAAc,QAAQ,wCAAuC;AACtE,SAASC,oBAAoB,QAAQ,8CAA6C;AAClF,SAASC,IAAI,QAAQ,8BAA6B;AAClD,SAASC,OAAO,QAAQ,iCAAgC;AACxD,SAASC,mBAAmB,QAAQ,6CAA4C;AAChF,SAASC,MAAM,QAAQ,gCAA+B"}
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAkB,MAAM,SAAS,CAAA;AAKrD,OAAO,KAAK,EAAE,wBAAwB,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAczE,eAAO,MAAM,kBAAkB,iBACd,wBAAwB,cAC9B,MAAM,KAAG,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAkB,MAAM,SAAS,CAAA;AAKrD,OAAO,KAAK,EAAE,wBAAwB,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAczE,eAAO,MAAM,kBAAkB,iBACd,wBAAwB,cAC9B,MAAM,KAAG,MA0LjB,CAAA;AAEH,OAAO,QAAQ,SAAS,CAAC;IACvB,UAAiB,WAAW;QAC1B,sBAAsB,CAAC,EAAE;YACvB;;;;;;eAMG;YACH,QAAQ,CAAC,EAAE,OAAO,CAAA;YAClB;;eAEG;YACH,KAAK,CAAC,EAAE,aAAa,CAAA;SACtB,CAAA;KACF;CACF"}
|
package/dist/index.js
CHANGED
|
@@ -53,7 +53,7 @@ export const importExportPlugin = (pluginConfig)=>(config)=>{
|
|
|
53
53
|
},
|
|
54
54
|
path: '@payloadcms/plugin-import-export/rsc#ExportListMenuItem'
|
|
55
55
|
});
|
|
56
|
-
//
|
|
56
|
+
// Find fields explicitly marked as disabled for import/export
|
|
57
57
|
const disabledFieldAccessors = collectDisabledFieldPaths(collection.fields);
|
|
58
58
|
// Store disabled field accessors in the admin config for use in the UI
|
|
59
59
|
collection.admin.custom = {
|
|
@@ -74,7 +74,7 @@ export const importExportPlugin = (pluginConfig)=>(config)=>{
|
|
|
74
74
|
config.endpoints.push({
|
|
75
75
|
handler: async (req)=>{
|
|
76
76
|
await addDataAndFileToRequest(req);
|
|
77
|
-
const { collectionSlug, draft, fields, limit, locale, sort, where } = req.data;
|
|
77
|
+
const { collectionSlug, draft, fields, limit, locale, page, sort, where } = req.data;
|
|
78
78
|
const collection = req.payload.collections[collectionSlug];
|
|
79
79
|
if (!collection) {
|
|
80
80
|
return Response.json({
|
|
@@ -91,6 +91,7 @@ export const importExportPlugin = (pluginConfig)=>(config)=>{
|
|
|
91
91
|
limit: limit && limit > 10 ? 10 : limit,
|
|
92
92
|
locale,
|
|
93
93
|
overrideAccess: false,
|
|
94
|
+
page,
|
|
94
95
|
req,
|
|
95
96
|
select,
|
|
96
97
|
sort,
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts"],"sourcesContent":["import type { Config, FlattenedField } from 'payload'\n\nimport { addDataAndFileToRequest, deepMergeSimple } from 'payload'\n\nimport type { PluginDefaultTranslationsObject } from './translations/types.js'\nimport type { ImportExportPluginConfig, ToCSVFunction } from './types.js'\n\nimport { flattenObject } from './export/flattenObject.js'\nimport { getCreateCollectionExportTask } from './export/getCreateExportCollectionTask.js'\nimport { getCustomFieldFunctions } from './export/getCustomFieldFunctions.js'\nimport { getSelect } from './export/getSelect.js'\nimport { getExportCollection } from './getExportCollection.js'\nimport { translations } from './translations/index.js'\nimport { collectDisabledFieldPaths } from './utilities/collectDisabledFieldPaths.js'\nimport { getFlattenedFieldKeys } from './utilities/getFlattenedFieldKeys.js'\nimport { getValueAtPath } from './utilities/getvalueAtPath.js'\nimport { removeDisabledFields } from './utilities/removeDisabledFields.js'\nimport { setNestedValue } from './utilities/setNestedValue.js'\n\nexport const importExportPlugin =\n (pluginConfig: ImportExportPluginConfig) =>\n (config: Config): Config => {\n const exportCollection = getExportCollection({ config, pluginConfig })\n if (config.collections) {\n config.collections.push(exportCollection)\n } else {\n config.collections = [exportCollection]\n }\n\n // inject custom import export provider\n config.admin = config.admin || {}\n config.admin.components = config.admin.components || {}\n config.admin.components.providers = config.admin.components.providers || []\n config.admin.components.providers.push(\n '@payloadcms/plugin-import-export/rsc#ImportExportProvider',\n )\n\n // inject the createExport job into the config\n ;((config.jobs ??= {}).tasks ??= []).push(getCreateCollectionExportTask(config, pluginConfig))\n\n let collectionsToUpdate = config.collections\n\n const usePluginCollections = pluginConfig.collections && pluginConfig.collections?.length > 0\n\n if (usePluginCollections) {\n collectionsToUpdate = config.collections?.filter((collection) => {\n return pluginConfig.collections?.includes(collection.slug)\n })\n }\n\n collectionsToUpdate.forEach((collection) => {\n if (!collection.admin) {\n collection.admin = { components: { listMenuItems: [] } }\n }\n const components = collection.admin.components || {}\n if (!components.listMenuItems) {\n components.listMenuItems = []\n }\n components.listMenuItems.push({\n clientProps: {\n exportCollectionSlug: exportCollection.slug,\n },\n path: '@payloadcms/plugin-import-export/rsc#ExportListMenuItem',\n })\n\n // // Find fields explicitly marked as disabled for import/export\n const disabledFieldAccessors = collectDisabledFieldPaths(collection.fields)\n\n // Store disabled field accessors in the admin config for use in the UI\n collection.admin.custom = {\n ...(collection.admin.custom || {}),\n 'plugin-import-export': {\n ...(collection.admin.custom?.['plugin-import-export'] || {}),\n disabledFields: disabledFieldAccessors,\n },\n }\n\n collection.admin.components = components\n })\n\n if (!config.i18n) {\n config.i18n = {}\n }\n\n // config.i18n.translations = deepMergeSimple(translations, config.i18n?.translations ?? {})\n\n // Inject custom REST endpoints into the config\n config.endpoints = config.endpoints || []\n config.endpoints.push({\n handler: async (req) => {\n await addDataAndFileToRequest(req)\n\n const { collectionSlug, draft, fields, limit, locale, sort, where } = req.data as {\n collectionSlug: string\n draft?: 'no' | 'yes'\n fields?: string[]\n format?: 'csv' | 'json'\n limit?: number\n locale?: string\n sort?: any\n where?: any\n }\n\n const collection = req.payload.collections[collectionSlug]\n if (!collection) {\n return Response.json(\n { error: `Collection with slug ${collectionSlug} not found` },\n { status: 400 },\n )\n }\n\n const select = Array.isArray(fields) && fields.length > 0 ? getSelect(fields) : undefined\n\n const result = await req.payload.find({\n collection: collectionSlug,\n depth: 1,\n draft: draft === 'yes',\n limit: limit && limit > 10 ? 10 : limit,\n locale,\n overrideAccess: false,\n req,\n select,\n sort,\n where,\n })\n\n const isCSV = req?.data?.format === 'csv'\n const docs = result.docs\n\n let transformed: Record<string, unknown>[] = []\n\n if (isCSV) {\n const toCSVFunctions = getCustomFieldFunctions({\n fields: collection.config.fields as FlattenedField[],\n })\n\n const possibleKeys = getFlattenedFieldKeys(collection.config.fields as FlattenedField[])\n\n transformed = docs.map((doc) => {\n const row = flattenObject({\n doc,\n fields,\n toCSVFunctions,\n })\n\n for (const key of possibleKeys) {\n if (!(key in row)) {\n row[key] = null\n }\n }\n\n return row\n })\n } else {\n const disabledFields =\n collection.config.admin.custom?.['plugin-import-export']?.disabledFields\n\n transformed = docs.map((doc) => {\n let output: Record<string, unknown> = { ...doc }\n\n // Remove disabled fields first\n output = removeDisabledFields(output, disabledFields)\n\n // Then trim to selected fields only (if fields are provided)\n if (Array.isArray(fields) && fields.length > 0) {\n const trimmed: Record<string, unknown> = {}\n\n for (const key of fields) {\n const value = getValueAtPath(output, key)\n setNestedValue(trimmed, key, value ?? null)\n }\n\n output = trimmed\n }\n\n return output\n })\n }\n\n return Response.json({\n docs: transformed,\n totalDocs: result.totalDocs,\n })\n },\n method: 'post',\n path: '/preview-data',\n })\n\n /**\n * Merge plugin translations\n */\n const simplifiedTranslations = Object.entries(translations).reduce(\n (acc, [key, value]) => {\n acc[key] = value.translations\n return acc\n },\n {} as Record<string, PluginDefaultTranslationsObject>,\n )\n\n config.i18n = {\n ...config.i18n,\n translations: deepMergeSimple(simplifiedTranslations, config.i18n?.translations ?? {}),\n }\n\n return config\n }\n\ndeclare module 'payload' {\n export interface FieldCustom {\n 'plugin-import-export'?: {\n /**\n * When `true` the field is **completely excluded** from the import-export plugin:\n * - It will not appear in the “Fields to export” selector.\n * - It is hidden from the preview list when no specific fields are chosen.\n * - Its data is omitted from the final CSV / JSON export.\n * @default false\n */\n disabled?: boolean\n /**\n * Custom function used to modify the outgoing csv data by manipulating the data, siblingData or by returning the desired value\n */\n toCSV?: ToCSVFunction\n }\n }\n}\n"],"names":["addDataAndFileToRequest","deepMergeSimple","flattenObject","getCreateCollectionExportTask","getCustomFieldFunctions","getSelect","getExportCollection","translations","collectDisabledFieldPaths","getFlattenedFieldKeys","getValueAtPath","removeDisabledFields","setNestedValue","importExportPlugin","pluginConfig","config","exportCollection","collections","push","admin","components","providers","jobs","tasks","collectionsToUpdate","usePluginCollections","length","filter","collection","includes","slug","forEach","listMenuItems","clientProps","exportCollectionSlug","path","disabledFieldAccessors","fields","custom","disabledFields","i18n","endpoints","handler","req","collectionSlug","draft","limit","locale","sort","where","data","payload","Response","json","error","status","select","Array","isArray","undefined","result","find","depth","overrideAccess","isCSV","format","docs","transformed","toCSVFunctions","possibleKeys","map","doc","row","key","output","trimmed","value","totalDocs","method","simplifiedTranslations","Object","entries","reduce","acc"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../src/index.ts"],"sourcesContent":["import type { Config, FlattenedField } from 'payload'\n\nimport { addDataAndFileToRequest, deepMergeSimple } from 'payload'\n\nimport type { PluginDefaultTranslationsObject } from './translations/types.js'\nimport type { ImportExportPluginConfig, ToCSVFunction } from './types.js'\n\nimport { flattenObject } from './export/flattenObject.js'\nimport { getCreateCollectionExportTask } from './export/getCreateExportCollectionTask.js'\nimport { getCustomFieldFunctions } from './export/getCustomFieldFunctions.js'\nimport { getSelect } from './export/getSelect.js'\nimport { getExportCollection } from './getExportCollection.js'\nimport { translations } from './translations/index.js'\nimport { collectDisabledFieldPaths } from './utilities/collectDisabledFieldPaths.js'\nimport { getFlattenedFieldKeys } from './utilities/getFlattenedFieldKeys.js'\nimport { getValueAtPath } from './utilities/getvalueAtPath.js'\nimport { removeDisabledFields } from './utilities/removeDisabledFields.js'\nimport { setNestedValue } from './utilities/setNestedValue.js'\n\nexport const importExportPlugin =\n (pluginConfig: ImportExportPluginConfig) =>\n (config: Config): Config => {\n const exportCollection = getExportCollection({ config, pluginConfig })\n if (config.collections) {\n config.collections.push(exportCollection)\n } else {\n config.collections = [exportCollection]\n }\n\n // inject custom import export provider\n config.admin = config.admin || {}\n config.admin.components = config.admin.components || {}\n config.admin.components.providers = config.admin.components.providers || []\n config.admin.components.providers.push(\n '@payloadcms/plugin-import-export/rsc#ImportExportProvider',\n )\n\n // inject the createExport job into the config\n ;((config.jobs ??= {}).tasks ??= []).push(getCreateCollectionExportTask(config, pluginConfig))\n\n let collectionsToUpdate = config.collections\n\n const usePluginCollections = pluginConfig.collections && pluginConfig.collections?.length > 0\n\n if (usePluginCollections) {\n collectionsToUpdate = config.collections?.filter((collection) => {\n return pluginConfig.collections?.includes(collection.slug)\n })\n }\n\n collectionsToUpdate.forEach((collection) => {\n if (!collection.admin) {\n collection.admin = { components: { listMenuItems: [] } }\n }\n const components = collection.admin.components || {}\n if (!components.listMenuItems) {\n components.listMenuItems = []\n }\n components.listMenuItems.push({\n clientProps: {\n exportCollectionSlug: exportCollection.slug,\n },\n path: '@payloadcms/plugin-import-export/rsc#ExportListMenuItem',\n })\n\n // Find fields explicitly marked as disabled for import/export\n const disabledFieldAccessors = collectDisabledFieldPaths(collection.fields)\n\n // Store disabled field accessors in the admin config for use in the UI\n collection.admin.custom = {\n ...(collection.admin.custom || {}),\n 'plugin-import-export': {\n ...(collection.admin.custom?.['plugin-import-export'] || {}),\n disabledFields: disabledFieldAccessors,\n },\n }\n\n collection.admin.components = components\n })\n\n if (!config.i18n) {\n config.i18n = {}\n }\n\n // config.i18n.translations = deepMergeSimple(translations, config.i18n?.translations ?? {})\n\n // Inject custom REST endpoints into the config\n config.endpoints = config.endpoints || []\n config.endpoints.push({\n handler: async (req) => {\n await addDataAndFileToRequest(req)\n\n const { collectionSlug, draft, fields, limit, locale, page, sort, where } = req.data as {\n collectionSlug: string\n draft?: 'no' | 'yes'\n fields?: string[]\n format?: 'csv' | 'json'\n limit?: number\n locale?: string\n page?: number\n sort?: any\n where?: any\n }\n\n const collection = req.payload.collections[collectionSlug]\n if (!collection) {\n return Response.json(\n { error: `Collection with slug ${collectionSlug} not found` },\n { status: 400 },\n )\n }\n\n const select = Array.isArray(fields) && fields.length > 0 ? getSelect(fields) : undefined\n\n const result = await req.payload.find({\n collection: collectionSlug,\n depth: 1,\n draft: draft === 'yes',\n limit: limit && limit > 10 ? 10 : limit,\n locale,\n overrideAccess: false,\n page,\n req,\n select,\n sort,\n where,\n })\n\n const isCSV = req?.data?.format === 'csv'\n const docs = result.docs\n\n let transformed: Record<string, unknown>[] = []\n\n if (isCSV) {\n const toCSVFunctions = getCustomFieldFunctions({\n fields: collection.config.fields as FlattenedField[],\n })\n\n const possibleKeys = getFlattenedFieldKeys(collection.config.fields as FlattenedField[])\n\n transformed = docs.map((doc) => {\n const row = flattenObject({\n doc,\n fields,\n toCSVFunctions,\n })\n\n for (const key of possibleKeys) {\n if (!(key in row)) {\n row[key] = null\n }\n }\n\n return row\n })\n } else {\n const disabledFields =\n collection.config.admin.custom?.['plugin-import-export']?.disabledFields\n\n transformed = docs.map((doc) => {\n let output: Record<string, unknown> = { ...doc }\n\n // Remove disabled fields first\n output = removeDisabledFields(output, disabledFields)\n\n // Then trim to selected fields only (if fields are provided)\n if (Array.isArray(fields) && fields.length > 0) {\n const trimmed: Record<string, unknown> = {}\n\n for (const key of fields) {\n const value = getValueAtPath(output, key)\n setNestedValue(trimmed, key, value ?? null)\n }\n\n output = trimmed\n }\n\n return output\n })\n }\n\n return Response.json({\n docs: transformed,\n totalDocs: result.totalDocs,\n })\n },\n method: 'post',\n path: '/preview-data',\n })\n\n /**\n * Merge plugin translations\n */\n const simplifiedTranslations = Object.entries(translations).reduce(\n (acc, [key, value]) => {\n acc[key] = value.translations\n return acc\n },\n {} as Record<string, PluginDefaultTranslationsObject>,\n )\n\n config.i18n = {\n ...config.i18n,\n translations: deepMergeSimple(simplifiedTranslations, config.i18n?.translations ?? {}),\n }\n\n return config\n }\n\ndeclare module 'payload' {\n export interface FieldCustom {\n 'plugin-import-export'?: {\n /**\n * When `true` the field is **completely excluded** from the import-export plugin:\n * - It will not appear in the “Fields to export” selector.\n * - It is hidden from the preview list when no specific fields are chosen.\n * - Its data is omitted from the final CSV / JSON export.\n * @default false\n */\n disabled?: boolean\n /**\n * Custom function used to modify the outgoing csv data by manipulating the data, siblingData or by returning the desired value\n */\n toCSV?: ToCSVFunction\n }\n }\n}\n"],"names":["addDataAndFileToRequest","deepMergeSimple","flattenObject","getCreateCollectionExportTask","getCustomFieldFunctions","getSelect","getExportCollection","translations","collectDisabledFieldPaths","getFlattenedFieldKeys","getValueAtPath","removeDisabledFields","setNestedValue","importExportPlugin","pluginConfig","config","exportCollection","collections","push","admin","components","providers","jobs","tasks","collectionsToUpdate","usePluginCollections","length","filter","collection","includes","slug","forEach","listMenuItems","clientProps","exportCollectionSlug","path","disabledFieldAccessors","fields","custom","disabledFields","i18n","endpoints","handler","req","collectionSlug","draft","limit","locale","page","sort","where","data","payload","Response","json","error","status","select","Array","isArray","undefined","result","find","depth","overrideAccess","isCSV","format","docs","transformed","toCSVFunctions","possibleKeys","map","doc","row","key","output","trimmed","value","totalDocs","method","simplifiedTranslations","Object","entries","reduce","acc"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ar.d.ts","sourceRoot":"","sources":["../../../src/translations/languages/ar.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,+BAA+B,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AAElF,eAAO,MAAM,cAAc,EAAE,+
|
|
1
|
+
{"version":3,"file":"ar.d.ts","sourceRoot":"","sources":["../../../src/translations/languages/ar.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,+BAA+B,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AAElF,eAAO,MAAM,cAAc,EAAE,+BAoB5B,CAAA;AAED,eAAO,MAAM,EAAE,EAAE,cAGhB,CAAA"}
|
|
@@ -10,6 +10,7 @@ export const arTranslations = {
|
|
|
10
10
|
'field-limit-label': 'حد',
|
|
11
11
|
'field-locale-label': 'موقع',
|
|
12
12
|
'field-name-label': 'اسم الملف',
|
|
13
|
+
'field-page-label': 'صفحة',
|
|
13
14
|
'field-selectionToUse-label': 'اختيار للاستخدام',
|
|
14
15
|
'field-sort-label': 'ترتيب حسب',
|
|
15
16
|
'selectionToUse-allDocuments': 'استخدم جميع الوثائق',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/translations/languages/ar.ts"],"sourcesContent":["import type { PluginDefaultTranslationsObject, PluginLanguage } from '../types.js'\n\nexport const arTranslations: PluginDefaultTranslationsObject = {\n 'plugin-import-export': {\n allLocales: 'جميع المواقع',\n exportDocumentLabel: 'تصدير {{label}}',\n exportOptions: 'خيارات التصدير',\n 'field-depth-label': 'عمق',\n 'field-drafts-label': 'تضمن المسودات',\n 'field-fields-label': 'حقول',\n 'field-format-label': 'تنسيق التصدير',\n 'field-limit-label': 'حد',\n 'field-locale-label': 'موقع',\n 'field-name-label': 'اسم الملف',\n 'field-selectionToUse-label': 'اختيار للاستخدام',\n 'field-sort-label': 'ترتيب حسب',\n 'selectionToUse-allDocuments': 'استخدم جميع الوثائق',\n 'selectionToUse-currentFilters': 'استخدم الفلاتر الحالية',\n 'selectionToUse-currentSelection': 'استخدم الاختيار الحالي',\n totalDocumentsCount: '{{count}} مستنداً إجمالياً',\n },\n}\n\nexport const ar: PluginLanguage = {\n dateFNSKey: 'ar',\n translations: arTranslations,\n}\n"],"names":["arTranslations","allLocales","exportDocumentLabel","exportOptions","totalDocumentsCount","ar","dateFNSKey","translations"],"mappings":"AAEA,OAAO,MAAMA,iBAAkD;IAC7D,wBAAwB;QACtBC,YAAY;QACZC,qBAAqB;QACrBC,eAAe;QACf,qBAAqB;QACrB,sBAAsB;QACtB,sBAAsB;QACtB,sBAAsB;QACtB,qBAAqB;QACrB,sBAAsB;QACtB,oBAAoB;QACpB,8BAA8B;QAC9B,oBAAoB;QACpB,+BAA+B;QAC/B,iCAAiC;QACjC,mCAAmC;QACnCC,qBAAqB;IACvB;AACF,EAAC;AAED,OAAO,MAAMC,KAAqB;IAChCC,YAAY;IACZC,cAAcP;AAChB,EAAC"}
|
|
1
|
+
{"version":3,"sources":["../../../src/translations/languages/ar.ts"],"sourcesContent":["import type { PluginDefaultTranslationsObject, PluginLanguage } from '../types.js'\n\nexport const arTranslations: PluginDefaultTranslationsObject = {\n 'plugin-import-export': {\n allLocales: 'جميع المواقع',\n exportDocumentLabel: 'تصدير {{label}}',\n exportOptions: 'خيارات التصدير',\n 'field-depth-label': 'عمق',\n 'field-drafts-label': 'تضمن المسودات',\n 'field-fields-label': 'حقول',\n 'field-format-label': 'تنسيق التصدير',\n 'field-limit-label': 'حد',\n 'field-locale-label': 'موقع',\n 'field-name-label': 'اسم الملف',\n 'field-page-label': 'صفحة',\n 'field-selectionToUse-label': 'اختيار للاستخدام',\n 'field-sort-label': 'ترتيب حسب',\n 'selectionToUse-allDocuments': 'استخدم جميع الوثائق',\n 'selectionToUse-currentFilters': 'استخدم الفلاتر الحالية',\n 'selectionToUse-currentSelection': 'استخدم الاختيار الحالي',\n totalDocumentsCount: '{{count}} مستنداً إجمالياً',\n },\n}\n\nexport const ar: PluginLanguage = {\n dateFNSKey: 'ar',\n translations: arTranslations,\n}\n"],"names":["arTranslations","allLocales","exportDocumentLabel","exportOptions","totalDocumentsCount","ar","dateFNSKey","translations"],"mappings":"AAEA,OAAO,MAAMA,iBAAkD;IAC7D,wBAAwB;QACtBC,YAAY;QACZC,qBAAqB;QACrBC,eAAe;QACf,qBAAqB;QACrB,sBAAsB;QACtB,sBAAsB;QACtB,sBAAsB;QACtB,qBAAqB;QACrB,sBAAsB;QACtB,oBAAoB;QACpB,oBAAoB;QACpB,8BAA8B;QAC9B,oBAAoB;QACpB,+BAA+B;QAC/B,iCAAiC;QACjC,mCAAmC;QACnCC,qBAAqB;IACvB;AACF,EAAC;AAED,OAAO,MAAMC,KAAqB;IAChCC,YAAY;IACZC,cAAcP;AAChB,EAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"az.d.ts","sourceRoot":"","sources":["../../../src/translations/languages/az.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,+BAA+B,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AAElF,eAAO,MAAM,cAAc,EAAE,+
|
|
1
|
+
{"version":3,"file":"az.d.ts","sourceRoot":"","sources":["../../../src/translations/languages/az.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,+BAA+B,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AAElF,eAAO,MAAM,cAAc,EAAE,+BAoB5B,CAAA;AAED,eAAO,MAAM,EAAE,EAAE,cAGhB,CAAA"}
|
|
@@ -10,6 +10,7 @@ export const azTranslations = {
|
|
|
10
10
|
'field-limit-label': 'Hədd',
|
|
11
11
|
'field-locale-label': 'Yerli',
|
|
12
12
|
'field-name-label': 'Fayl adı',
|
|
13
|
+
'field-page-label': 'Səhifə',
|
|
13
14
|
'field-selectionToUse-label': 'İstifadə etmək üçün seçim',
|
|
14
15
|
'field-sort-label': 'Sırala',
|
|
15
16
|
'selectionToUse-allDocuments': 'Bütün sənədlərdən istifadə edin',
|