@payloadcms/plugin-import-export 3.75.0 → 3.76.0-canary.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.
- package/dist/components/CollectionField/index.d.ts.map +1 -1
- package/dist/components/CollectionField/index.js +6 -2
- package/dist/components/CollectionField/index.js.map +1 -1
- package/dist/components/ExportPreview/index.d.ts.map +1 -1
- package/dist/components/ExportPreview/index.js +30 -12
- package/dist/components/ExportPreview/index.js.map +1 -1
- package/dist/components/ExportPreview/index.scss +12 -0
- package/dist/components/ImportPreview/index.js +3 -15
- package/dist/components/ImportPreview/index.js.map +1 -1
- package/dist/export/createExport.d.ts +6 -1
- package/dist/export/createExport.d.ts.map +1 -1
- package/dist/export/createExport.js +37 -13
- package/dist/export/createExport.js.map +1 -1
- package/dist/export/getCreateExportCollectionTask.d.ts.map +1 -1
- package/dist/export/getCreateExportCollectionTask.js +4 -1
- package/dist/export/getCreateExportCollectionTask.js.map +1 -1
- package/dist/export/getExportCollection.d.ts.map +1 -1
- package/dist/export/getExportCollection.js +23 -3
- package/dist/export/getExportCollection.js.map +1 -1
- package/dist/export/getFields.d.ts.map +1 -1
- package/dist/export/getFields.js +7 -3
- package/dist/export/getFields.js.map +1 -1
- package/dist/export/handleDownload.d.ts.map +1 -1
- package/dist/export/handleDownload.js +18 -1
- package/dist/export/handleDownload.js.map +1 -1
- package/dist/export/handlePreview.d.ts.map +1 -1
- package/dist/export/handlePreview.js +32 -10
- package/dist/export/handlePreview.js.map +1 -1
- package/dist/exports/types.d.ts +1 -1
- package/dist/exports/types.d.ts.map +1 -1
- package/dist/exports/types.js.map +1 -1
- package/dist/import/batchProcessor.d.ts.map +1 -1
- package/dist/import/batchProcessor.js +54 -55
- package/dist/import/batchProcessor.js.map +1 -1
- package/dist/import/createImport.d.ts +6 -1
- package/dist/import/createImport.d.ts.map +1 -1
- package/dist/import/createImport.js +5 -1
- package/dist/import/createImport.js.map +1 -1
- package/dist/import/getCreateImportCollectionTask.d.ts +9 -6
- package/dist/import/getCreateImportCollectionTask.d.ts.map +1 -1
- package/dist/import/getCreateImportCollectionTask.js +105 -65
- package/dist/import/getCreateImportCollectionTask.js.map +1 -1
- package/dist/import/getImportCollection.d.ts.map +1 -1
- package/dist/import/getImportCollection.js +39 -45
- package/dist/import/getImportCollection.js.map +1 -1
- package/dist/import/handlePreview.d.ts.map +1 -1
- package/dist/import/handlePreview.js +11 -0
- package/dist/import/handlePreview.js.map +1 -1
- package/dist/index.d.ts +22 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +26 -2
- package/dist/index.js.map +1 -1
- package/dist/translations/languages/ar.d.ts.map +1 -1
- package/dist/translations/languages/ar.js +3 -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 +3 -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 +3 -0
- package/dist/translations/languages/bg.js.map +1 -1
- package/dist/translations/languages/bnBd.d.ts.map +1 -1
- package/dist/translations/languages/bnBd.js +22 -19
- package/dist/translations/languages/bnBd.js.map +1 -1
- package/dist/translations/languages/bnIn.d.ts.map +1 -1
- package/dist/translations/languages/bnIn.js +22 -19
- package/dist/translations/languages/bnIn.js.map +1 -1
- package/dist/translations/languages/ca.d.ts.map +1 -1
- package/dist/translations/languages/ca.js +3 -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 +3 -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 +3 -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 +3 -0
- package/dist/translations/languages/de.js.map +1 -1
- package/dist/translations/languages/en.d.ts +3 -0
- package/dist/translations/languages/en.d.ts.map +1 -1
- package/dist/translations/languages/en.js +3 -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 +3 -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 +3 -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 +3 -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 +3 -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 +3 -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 +3 -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 +3 -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 +3 -0
- package/dist/translations/languages/hy.js.map +1 -1
- package/dist/translations/languages/id.d.ts.map +1 -1
- package/dist/translations/languages/id.js +13 -10
- package/dist/translations/languages/id.js.map +1 -1
- package/dist/translations/languages/is.d.ts.map +1 -1
- package/dist/translations/languages/is.js +3 -0
- package/dist/translations/languages/is.js.map +1 -1
- package/dist/translations/languages/it.d.ts.map +1 -1
- package/dist/translations/languages/it.js +3 -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 +3 -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 +3 -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 +3 -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 +16 -13
- 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 +3 -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 +3 -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 +3 -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 +3 -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 +3 -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 +3 -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 +3 -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 +3 -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 +3 -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 +3 -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 +3 -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 +3 -0
- package/dist/translations/languages/sv.js.map +1 -1
- package/dist/translations/languages/ta.d.ts.map +1 -1
- package/dist/translations/languages/ta.js +3 -0
- package/dist/translations/languages/ta.js.map +1 -1
- package/dist/translations/languages/th.d.ts.map +1 -1
- package/dist/translations/languages/th.js +3 -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 +3 -0
- package/dist/translations/languages/tr.js.map +1 -1
- package/dist/translations/languages/uk.d.ts.map +1 -1
- package/dist/translations/languages/uk.js +3 -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 +3 -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 +3 -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 +3 -0
- package/dist/translations/languages/zhTw.js.map +1 -1
- package/dist/types.d.ts +44 -1
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/dist/utilities/buildDisabledFieldRegex.d.ts +11 -2
- package/dist/utilities/buildDisabledFieldRegex.d.ts.map +1 -1
- package/dist/utilities/buildDisabledFieldRegex.js +33 -7
- package/dist/utilities/buildDisabledFieldRegex.js.map +1 -1
- package/dist/utilities/buildDisabledFieldRegex.spec.js +64 -0
- package/dist/utilities/buildDisabledFieldRegex.spec.js.map +1 -0
- package/dist/utilities/collectTimezoneCompanionFields.d.ts +24 -0
- package/dist/utilities/collectTimezoneCompanionFields.d.ts.map +1 -0
- package/dist/utilities/collectTimezoneCompanionFields.js +89 -0
- package/dist/utilities/collectTimezoneCompanionFields.js.map +1 -0
- package/dist/utilities/collectTimezoneCompanionFields.spec.js +319 -0
- package/dist/utilities/collectTimezoneCompanionFields.spec.js.map +1 -0
- package/dist/utilities/fieldToRegex.d.ts +14 -0
- package/dist/utilities/fieldToRegex.d.ts.map +1 -0
- package/dist/utilities/fieldToRegex.js +34 -0
- package/dist/utilities/fieldToRegex.js.map +1 -0
- package/dist/utilities/fieldToRegex.spec.js +151 -0
- package/dist/utilities/fieldToRegex.spec.js.map +1 -0
- package/dist/utilities/flattenObject.d.ts +7 -1
- package/dist/utilities/flattenObject.d.ts.map +1 -1
- package/dist/utilities/flattenObject.js +30 -18
- package/dist/utilities/flattenObject.js.map +1 -1
- package/dist/utilities/getExportFieldFunctions.d.ts.map +1 -1
- package/dist/utilities/getExportFieldFunctions.js +7 -0
- package/dist/utilities/getExportFieldFunctions.js.map +1 -1
- package/dist/utilities/getFileFromDoc.d.ts +26 -0
- package/dist/utilities/getFileFromDoc.d.ts.map +1 -0
- package/dist/utilities/getFileFromDoc.js +67 -0
- package/dist/utilities/getFileFromDoc.js.map +1 -0
- package/dist/utilities/getImportFieldFunctions.d.ts.map +1 -1
- package/dist/utilities/getImportFieldFunctions.js +2 -16
- package/dist/utilities/getImportFieldFunctions.js.map +1 -1
- package/dist/utilities/getPluginCollections.d.ts +1 -0
- package/dist/utilities/getPluginCollections.d.ts.map +1 -1
- package/dist/utilities/getPluginCollections.js +59 -10
- package/dist/utilities/getPluginCollections.js.map +1 -1
- package/dist/utilities/getSchemaColumns.d.ts +8 -2
- package/dist/utilities/getSchemaColumns.d.ts.map +1 -1
- package/dist/utilities/getSchemaColumns.js +61 -27
- package/dist/utilities/getSchemaColumns.js.map +1 -1
- package/dist/utilities/parseCSV.d.ts.map +1 -1
- package/dist/utilities/parseCSV.js +4 -10
- package/dist/utilities/parseCSV.js.map +1 -1
- package/dist/utilities/resolveLimit.d.ts +15 -0
- package/dist/utilities/resolveLimit.d.ts.map +1 -0
- package/dist/utilities/resolveLimit.js +21 -0
- package/dist/utilities/resolveLimit.js.map +1 -0
- package/dist/utilities/unflattenObject.d.ts +13 -0
- package/dist/utilities/unflattenObject.d.ts.map +1 -1
- package/dist/utilities/unflattenObject.js +64 -65
- package/dist/utilities/unflattenObject.js.map +1 -1
- package/package.json +8 -8
- package/dist/utilities/getvalueAtPath.d.ts +0 -15
- package/dist/utilities/getvalueAtPath.d.ts.map +0 -1
- package/dist/utilities/getvalueAtPath.js +0 -49
- package/dist/utilities/getvalueAtPath.js.map +0 -1
|
@@ -20,6 +20,12 @@ export type GetSchemaColumnsArgs = {
|
|
|
20
20
|
* Available locale codes from config. Required when locale='all'.
|
|
21
21
|
*/
|
|
22
22
|
localeCodes?: string[];
|
|
23
|
+
/**
|
|
24
|
+
* Set of auto-generated timezone companion field names (from collectTimezoneCompanionFields).
|
|
25
|
+
* These fields are excluded unless explicitly selected.
|
|
26
|
+
* If not provided, no timezone filtering is applied.
|
|
27
|
+
*/
|
|
28
|
+
timezoneCompanionFields?: Set<string>;
|
|
23
29
|
};
|
|
24
30
|
/**
|
|
25
31
|
* Derives CSV column names from the collection schema.
|
|
@@ -33,11 +39,11 @@ export type GetSchemaColumnsArgs = {
|
|
|
33
39
|
* - Works for empty exports
|
|
34
40
|
* - Ensures proper column ordering
|
|
35
41
|
*/
|
|
36
|
-
export declare const getSchemaColumns: ({ collectionConfig, disabledFields, fields: selectedFields, locale, localeCodes, }: GetSchemaColumnsArgs) => string[];
|
|
42
|
+
export declare const getSchemaColumns: ({ collectionConfig, disabledFields, fields: selectedFields, locale, localeCodes, timezoneCompanionFields, }: GetSchemaColumnsArgs) => string[];
|
|
37
43
|
/**
|
|
38
44
|
* Merges schema-derived columns with data-discovered columns.
|
|
39
45
|
* Schema columns provide the base ordering, data columns add any additional
|
|
40
|
-
* columns (e.g., array indices beyond 0, dynamic fields).
|
|
46
|
+
* columns (e.g., array indices beyond 0, dynamic fields, derived columns from toCSV).
|
|
41
47
|
*/
|
|
42
48
|
export declare const mergeColumns: (schemaColumns: string[], dataColumns: string[]) => string[];
|
|
43
49
|
//# sourceMappingURL=getSchemaColumns.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getSchemaColumns.d.ts","sourceRoot":"","sources":["../../src/utilities/getSchemaColumns.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,SAAS,CAAA;AAIxD,MAAM,MAAM,oBAAoB,GAAG;IACjC;;OAEG;IACH,gBAAgB,EAAE,yBAAyB,CAAA;IAC3C;;OAEG;IACH,cAAc,CAAC,EAAE,MAAM,EAAE,CAAA;IACzB;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,EAAE,CAAA;IACjB;;OAEG;IACH,MAAM,CAAC,EAAE,IAAI,GAAG,MAAM,CAAA;IACtB;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,EAAE,CAAA;
|
|
1
|
+
{"version":3,"file":"getSchemaColumns.d.ts","sourceRoot":"","sources":["../../src/utilities/getSchemaColumns.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,SAAS,CAAA;AAIxD,MAAM,MAAM,oBAAoB,GAAG;IACjC;;OAEG;IACH,gBAAgB,EAAE,yBAAyB,CAAA;IAC3C;;OAEG;IACH,cAAc,CAAC,EAAE,MAAM,EAAE,CAAA;IACzB;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,EAAE,CAAA;IACjB;;OAEG;IACH,MAAM,CAAC,EAAE,IAAI,GAAG,MAAM,CAAA;IACtB;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,EAAE,CAAA;IACtB;;;;OAIG;IACH,uBAAuB,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;CACtC,CAAA;AAED;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,gBAAgB,gHAO1B,oBAAoB,KAAG,MAAM,EA4E/B,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,YAAY,kBAAmB,MAAM,EAAE,eAAe,MAAM,EAAE,KAAG,MAAM,EA+DnF,CAAA"}
|
|
@@ -10,7 +10,7 @@ import { getFlattenedFieldKeys } from './getFlattenedFieldKeys.js';
|
|
|
10
10
|
* - Provides consistent base columns
|
|
11
11
|
* - Works for empty exports
|
|
12
12
|
* - Ensures proper column ordering
|
|
13
|
-
*/ export const getSchemaColumns = ({ collectionConfig, disabledFields = [], fields: selectedFields, locale, localeCodes })=>{
|
|
13
|
+
*/ export const getSchemaColumns = ({ collectionConfig, disabledFields = [], fields: selectedFields, locale, localeCodes, timezoneCompanionFields })=>{
|
|
14
14
|
const hasVersions = Boolean(collectionConfig.versions);
|
|
15
15
|
// Determine if we need locale expansion
|
|
16
16
|
const expandLocales = locale === 'all' && localeCodes && localeCodes.length > 0;
|
|
@@ -30,7 +30,7 @@ import { getFlattenedFieldKeys } from './getFlattenedFieldKeys.js';
|
|
|
30
30
|
];
|
|
31
31
|
// Filter to user-selected fields if specified
|
|
32
32
|
if (selectedFields && selectedFields.length > 0) {
|
|
33
|
-
schemaColumns = filterToSelectedFields(schemaColumns, selectedFields);
|
|
33
|
+
schemaColumns = filterToSelectedFields(schemaColumns, selectedFields, timezoneCompanionFields);
|
|
34
34
|
}
|
|
35
35
|
// Remove disabled fields
|
|
36
36
|
if (disabledFields.length > 0) {
|
|
@@ -88,40 +88,64 @@ import { getFlattenedFieldKeys } from './getFlattenedFieldKeys.js';
|
|
|
88
88
|
/**
|
|
89
89
|
* Merges schema-derived columns with data-discovered columns.
|
|
90
90
|
* Schema columns provide the base ordering, data columns add any additional
|
|
91
|
-
* columns (e.g., array indices beyond 0, dynamic fields).
|
|
91
|
+
* columns (e.g., array indices beyond 0, dynamic fields, derived columns from toCSV).
|
|
92
92
|
*/ export const mergeColumns = (schemaColumns, dataColumns)=>{
|
|
93
93
|
const result = [
|
|
94
94
|
...schemaColumns
|
|
95
95
|
];
|
|
96
96
|
const schemaSet = new Set(schemaColumns);
|
|
97
|
+
const insertedDerived = new Map();
|
|
97
98
|
// Add any data columns not in schema (preserves schema ordering, appends new ones)
|
|
98
99
|
for (const col of dataColumns){
|
|
99
100
|
if (!schemaSet.has(col)) {
|
|
100
|
-
|
|
101
|
-
//
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
101
|
+
let inserted = false;
|
|
102
|
+
// Check if this is a derived column from a schema column (e.g., field_id, field_email)
|
|
103
|
+
// Pattern: schemaCol_suffix where suffix is NOT a number (array indices are handled separately)
|
|
104
|
+
for (const schemaCol of schemaColumns){
|
|
105
|
+
if (col.startsWith(`${schemaCol}_`)) {
|
|
106
|
+
const suffix = col.slice(schemaCol.length + 1);
|
|
107
|
+
// Skip if suffix starts with a digit (array index pattern like field_0_*)
|
|
108
|
+
if (!/^\d/.test(suffix)) {
|
|
109
|
+
const baseIdx = result.indexOf(schemaCol);
|
|
110
|
+
if (baseIdx !== -1) {
|
|
111
|
+
const derivedList = insertedDerived.get(schemaCol) || [];
|
|
112
|
+
const insertIdx = baseIdx + 1 + derivedList.length;
|
|
113
|
+
result.splice(insertIdx, 0, col);
|
|
114
|
+
derivedList.push(col);
|
|
115
|
+
insertedDerived.set(schemaCol, derivedList);
|
|
116
|
+
schemaSet.add(col);
|
|
117
|
+
inserted = true;
|
|
118
|
+
break;
|
|
119
|
+
}
|
|
114
120
|
}
|
|
115
121
|
}
|
|
116
122
|
}
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
+
if (!inserted) {
|
|
124
|
+
// Check for array indices (e.g., field_1_*), insert after field_0_*
|
|
125
|
+
const match = col.match(/^(.+?)_(\d+)(_.*)?$/);
|
|
126
|
+
if (match) {
|
|
127
|
+
const [, basePath, index, suffix] = match;
|
|
128
|
+
if (basePath && index) {
|
|
129
|
+
const prevIndex = parseInt(index, 10) - 1;
|
|
130
|
+
const prevCol = `${basePath}_${prevIndex}${suffix ?? ''}`;
|
|
131
|
+
const prevIdx = result.indexOf(prevCol);
|
|
132
|
+
if (prevIdx !== -1) {
|
|
133
|
+
// Insert after the previous index column
|
|
134
|
+
result.splice(prevIdx + 1, 0, col);
|
|
135
|
+
schemaSet.add(col);
|
|
136
|
+
continue;
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
// Otherwise append at the end (before timestamps)
|
|
141
|
+
const createdAtIdx = result.indexOf('createdAt');
|
|
142
|
+
if (createdAtIdx !== -1) {
|
|
143
|
+
result.splice(createdAtIdx, 0, col);
|
|
144
|
+
} else {
|
|
145
|
+
result.push(col);
|
|
146
|
+
}
|
|
147
|
+
schemaSet.add(col);
|
|
123
148
|
}
|
|
124
|
-
schemaSet.add(col);
|
|
125
149
|
}
|
|
126
150
|
}
|
|
127
151
|
return result;
|
|
@@ -130,7 +154,7 @@ import { getFlattenedFieldKeys } from './getFlattenedFieldKeys.js';
|
|
|
130
154
|
* Filters schema columns to only include those matching user-selected fields.
|
|
131
155
|
* Preserves the order specified by the user in selectedFields.
|
|
132
156
|
* Handles nested field selection (e.g., 'group.value' includes 'group_value' and 'group_value_*')
|
|
133
|
-
*/ function filterToSelectedFields(columns, selectedFields) {
|
|
157
|
+
*/ function filterToSelectedFields(columns, selectedFields, timezoneCompanionFields) {
|
|
134
158
|
const result = [];
|
|
135
159
|
const columnsSet = new Set(columns);
|
|
136
160
|
// Convert selected fields to underscore notation patterns
|
|
@@ -142,15 +166,25 @@ import { getFlattenedFieldKeys } from './getFlattenedFieldKeys.js';
|
|
|
142
166
|
prefix: `${underscored}_`
|
|
143
167
|
};
|
|
144
168
|
});
|
|
169
|
+
// Track which timezone companion fields were explicitly selected
|
|
170
|
+
const explicitlySelectedTzFields = new Set(selectedFields.filter((f)=>{
|
|
171
|
+
const underscored = f.replace(/\./g, '_');
|
|
172
|
+
return timezoneCompanionFields?.has(underscored);
|
|
173
|
+
}).map((f)=>f.replace(/\./g, '_')));
|
|
145
174
|
// Iterate through user-specified fields in order to preserve their ordering
|
|
146
175
|
for (const pattern of patterns){
|
|
147
|
-
// First add the exact match if it exists
|
|
148
|
-
|
|
176
|
+
// First add the exact match if it exists and not already added
|
|
177
|
+
// (it may have been added as a nested field of a previous pattern)
|
|
178
|
+
if (columnsSet.has(pattern.exact) && !result.includes(pattern.exact)) {
|
|
149
179
|
result.push(pattern.exact);
|
|
150
180
|
}
|
|
151
181
|
// Then add any columns with the prefix (nested fields)
|
|
152
182
|
for (const column of columns){
|
|
153
183
|
if (column !== pattern.exact && column.startsWith(pattern.prefix)) {
|
|
184
|
+
// Skip auto-generated timezone companion fields unless explicitly selected
|
|
185
|
+
if (timezoneCompanionFields?.has(column) && !explicitlySelectedTzFields.has(column)) {
|
|
186
|
+
continue;
|
|
187
|
+
}
|
|
154
188
|
if (!result.includes(column)) {
|
|
155
189
|
result.push(column);
|
|
156
190
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/utilities/getSchemaColumns.ts"],"sourcesContent":["import type { SanitizedCollectionConfig } from 'payload'\n\nimport { getFlattenedFieldKeys } from './getFlattenedFieldKeys.js'\n\nexport type GetSchemaColumnsArgs = {\n /**\n * The collection configuration to derive columns from\n */\n collectionConfig: SanitizedCollectionConfig\n /**\n * Array of disabled field paths from plugin config\n */\n disabledFields?: string[]\n /**\n * User-selected fields to export. If provided, only these fields (and their nested fields) will be included.\n */\n fields?: string[]\n /**\n * The locale to export. When 'all', localized fields are expanded to include all locale suffixes.\n */\n locale?: null | string\n /**\n * Available locale codes from config. Required when locale='all'.\n */\n localeCodes?: string[]\n}\n\n/**\n * Derives CSV column names from the collection schema.\n * This provides a base set of columns from field definitions.\n *\n * Note: For arrays/blocks with multiple items, the schema only generates index 0.\n * Additional indices from actual data should be merged with these columns.\n *\n * Benefits:\n * - Provides consistent base columns\n * - Works for empty exports\n * - Ensures proper column ordering\n */\nexport const getSchemaColumns = ({\n collectionConfig,\n disabledFields = [],\n fields: selectedFields,\n locale,\n localeCodes,\n}: GetSchemaColumnsArgs): string[] => {\n const hasVersions = Boolean(collectionConfig.versions)\n\n // Determine if we need locale expansion\n const expandLocales = locale === 'all' && localeCodes && localeCodes.length > 0\n\n // Get all possible columns from schema (excludes system fields like id, createdAt, updatedAt)\n let schemaColumns = getFlattenedFieldKeys(\n collectionConfig.flattenedFields,\n '',\n expandLocales ? { localeCodes } : {},\n )\n\n // Add system fields that aren't in flattenedFields\n const systemFields = ['id', 'createdAt', 'updatedAt']\n schemaColumns = [...systemFields, ...schemaColumns]\n\n // Filter to user-selected fields if specified\n if (selectedFields && selectedFields.length > 0) {\n schemaColumns = filterToSelectedFields(schemaColumns, selectedFields)\n }\n\n // Remove disabled fields\n if (disabledFields.length > 0) {\n const disabledSet = new Set<string>()\n for (const path of disabledFields) {\n // Convert dot notation to underscore and add to set\n disabledSet.add(path.replace(/\\./g, '_'))\n }\n schemaColumns = schemaColumns.filter((col) => {\n // Check if column matches any disabled path\n for (const disabled of disabledSet) {\n if (col === disabled || col.startsWith(`${disabled}_`)) {\n return false\n }\n }\n return true\n })\n }\n\n // When user has selected specific fields, preserve their ordering\n // filterToSelectedFields() already returns columns in user's specified order\n if (selectedFields && selectedFields.length > 0) {\n return schemaColumns\n }\n\n // No fields selected - apply default ordering (id first, timestamps last)\n const orderedColumns: string[] = []\n\n // 1. ID always first\n if (schemaColumns.includes('id')) {\n orderedColumns.push('id')\n }\n\n // 2. Status field for versioned collections\n if (hasVersions) {\n orderedColumns.push('_status')\n }\n\n // 3. All other fields (excluding id, timestamps, status)\n const excludeFromMiddle = new Set(['_status', 'createdAt', 'id', 'updatedAt'])\n for (const col of schemaColumns) {\n if (!excludeFromMiddle.has(col)) {\n orderedColumns.push(col)\n }\n }\n\n // 4. Timestamps at the end\n if (schemaColumns.includes('createdAt')) {\n orderedColumns.push('createdAt')\n }\n if (schemaColumns.includes('updatedAt')) {\n orderedColumns.push('updatedAt')\n }\n\n return orderedColumns\n}\n\n/**\n * Merges schema-derived columns with data-discovered columns.\n * Schema columns provide the base ordering, data columns add any additional\n * columns (e.g., array indices beyond 0, dynamic fields).\n */\nexport const mergeColumns = (schemaColumns: string[], dataColumns: string[]): string[] => {\n const result = [...schemaColumns]\n const schemaSet = new Set(schemaColumns)\n\n // Add any data columns not in schema (preserves schema ordering, appends new ones)\n for (const col of dataColumns) {\n if (!schemaSet.has(col)) {\n // Find the best position to insert this column\n // For array indices (e.g., field_1_*), insert after field_0_*\n const match = col.match(/^(.+?)_(\\d+)(_.*)?$/)\n if (match) {\n const [, basePath, index, suffix] = match\n if (basePath && index) {\n const prevIndex = parseInt(index, 10) - 1\n const prevCol = `${basePath}_${prevIndex}${suffix ?? ''}`\n const prevIdx = result.indexOf(prevCol)\n if (prevIdx !== -1) {\n // Insert after the previous index column\n result.splice(prevIdx + 1, 0, col)\n schemaSet.add(col)\n continue\n }\n }\n }\n // Otherwise append at the end (before timestamps)\n const createdAtIdx = result.indexOf('createdAt')\n if (createdAtIdx !== -1) {\n result.splice(createdAtIdx, 0, col)\n } else {\n result.push(col)\n }\n schemaSet.add(col)\n }\n }\n\n return result\n}\n\n/**\n * Filters schema columns to only include those matching user-selected fields.\n * Preserves the order specified by the user in selectedFields.\n * Handles nested field selection (e.g., 'group.value' includes 'group_value' and 'group_value_*')\n */\nfunction filterToSelectedFields(columns: string[], selectedFields: string[]): string[] {\n const result: string[] = []\n const columnsSet = new Set(columns)\n\n // Convert selected fields to underscore notation patterns\n const patterns = selectedFields.map((field) => {\n const underscored = field.replace(/\\./g, '_')\n return {\n exact: underscored,\n original: field,\n prefix: `${underscored}_`,\n }\n })\n\n // Iterate through user-specified fields in order to preserve their ordering\n for (const pattern of patterns) {\n // First add the exact match if it exists\n if (columnsSet.has(pattern.exact)) {\n result.push(pattern.exact)\n }\n\n // Then add any columns with the prefix (nested fields)\n for (const column of columns) {\n if (column !== pattern.exact && column.startsWith(pattern.prefix)) {\n if (!result.includes(column)) {\n result.push(column)\n }\n }\n }\n }\n\n return result\n}\n"],"names":["getFlattenedFieldKeys","getSchemaColumns","collectionConfig","disabledFields","fields","selectedFields","locale","localeCodes","hasVersions","Boolean","versions","expandLocales","length","schemaColumns","flattenedFields","systemFields","filterToSelectedFields","disabledSet","Set","path","add","replace","filter","col","disabled","startsWith","orderedColumns","includes","push","excludeFromMiddle","has","mergeColumns","dataColumns","result","schemaSet","match","basePath","index","suffix","prevIndex","parseInt","prevCol","prevIdx","indexOf","splice","createdAtIdx","columns","columnsSet","patterns","map","field","underscored","exact","original","prefix","pattern","column"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../src/utilities/getSchemaColumns.ts"],"sourcesContent":["import type { SanitizedCollectionConfig } from 'payload'\n\nimport { getFlattenedFieldKeys } from './getFlattenedFieldKeys.js'\n\nexport type GetSchemaColumnsArgs = {\n /**\n * The collection configuration to derive columns from\n */\n collectionConfig: SanitizedCollectionConfig\n /**\n * Array of disabled field paths from plugin config\n */\n disabledFields?: string[]\n /**\n * User-selected fields to export. If provided, only these fields (and their nested fields) will be included.\n */\n fields?: string[]\n /**\n * The locale to export. When 'all', localized fields are expanded to include all locale suffixes.\n */\n locale?: null | string\n /**\n * Available locale codes from config. Required when locale='all'.\n */\n localeCodes?: string[]\n /**\n * Set of auto-generated timezone companion field names (from collectTimezoneCompanionFields).\n * These fields are excluded unless explicitly selected.\n * If not provided, no timezone filtering is applied.\n */\n timezoneCompanionFields?: Set<string>\n}\n\n/**\n * Derives CSV column names from the collection schema.\n * This provides a base set of columns from field definitions.\n *\n * Note: For arrays/blocks with multiple items, the schema only generates index 0.\n * Additional indices from actual data should be merged with these columns.\n *\n * Benefits:\n * - Provides consistent base columns\n * - Works for empty exports\n * - Ensures proper column ordering\n */\nexport const getSchemaColumns = ({\n collectionConfig,\n disabledFields = [],\n fields: selectedFields,\n locale,\n localeCodes,\n timezoneCompanionFields,\n}: GetSchemaColumnsArgs): string[] => {\n const hasVersions = Boolean(collectionConfig.versions)\n\n // Determine if we need locale expansion\n const expandLocales = locale === 'all' && localeCodes && localeCodes.length > 0\n\n // Get all possible columns from schema (excludes system fields like id, createdAt, updatedAt)\n let schemaColumns = getFlattenedFieldKeys(\n collectionConfig.flattenedFields,\n '',\n expandLocales ? { localeCodes } : {},\n )\n\n // Add system fields that aren't in flattenedFields\n const systemFields = ['id', 'createdAt', 'updatedAt']\n schemaColumns = [...systemFields, ...schemaColumns]\n\n // Filter to user-selected fields if specified\n if (selectedFields && selectedFields.length > 0) {\n schemaColumns = filterToSelectedFields(schemaColumns, selectedFields, timezoneCompanionFields)\n }\n\n // Remove disabled fields\n if (disabledFields.length > 0) {\n const disabledSet = new Set<string>()\n for (const path of disabledFields) {\n // Convert dot notation to underscore and add to set\n disabledSet.add(path.replace(/\\./g, '_'))\n }\n schemaColumns = schemaColumns.filter((col) => {\n // Check if column matches any disabled path\n for (const disabled of disabledSet) {\n if (col === disabled || col.startsWith(`${disabled}_`)) {\n return false\n }\n }\n return true\n })\n }\n\n // When user has selected specific fields, preserve their ordering\n // filterToSelectedFields() already returns columns in user's specified order\n if (selectedFields && selectedFields.length > 0) {\n return schemaColumns\n }\n\n // No fields selected - apply default ordering (id first, timestamps last)\n const orderedColumns: string[] = []\n\n // 1. ID always first\n if (schemaColumns.includes('id')) {\n orderedColumns.push('id')\n }\n\n // 2. Status field for versioned collections\n if (hasVersions) {\n orderedColumns.push('_status')\n }\n\n // 3. All other fields (excluding id, timestamps, status)\n const excludeFromMiddle = new Set(['_status', 'createdAt', 'id', 'updatedAt'])\n for (const col of schemaColumns) {\n if (!excludeFromMiddle.has(col)) {\n orderedColumns.push(col)\n }\n }\n\n // 4. Timestamps at the end\n if (schemaColumns.includes('createdAt')) {\n orderedColumns.push('createdAt')\n }\n if (schemaColumns.includes('updatedAt')) {\n orderedColumns.push('updatedAt')\n }\n\n return orderedColumns\n}\n\n/**\n * Merges schema-derived columns with data-discovered columns.\n * Schema columns provide the base ordering, data columns add any additional\n * columns (e.g., array indices beyond 0, dynamic fields, derived columns from toCSV).\n */\nexport const mergeColumns = (schemaColumns: string[], dataColumns: string[]): string[] => {\n const result = [...schemaColumns]\n const schemaSet = new Set(schemaColumns)\n const insertedDerived = new Map<string, string[]>()\n\n // Add any data columns not in schema (preserves schema ordering, appends new ones)\n for (const col of dataColumns) {\n if (!schemaSet.has(col)) {\n let inserted = false\n\n // Check if this is a derived column from a schema column (e.g., field_id, field_email)\n // Pattern: schemaCol_suffix where suffix is NOT a number (array indices are handled separately)\n for (const schemaCol of schemaColumns) {\n if (col.startsWith(`${schemaCol}_`)) {\n const suffix = col.slice(schemaCol.length + 1)\n // Skip if suffix starts with a digit (array index pattern like field_0_*)\n if (!/^\\d/.test(suffix)) {\n const baseIdx = result.indexOf(schemaCol)\n if (baseIdx !== -1) {\n const derivedList = insertedDerived.get(schemaCol) || []\n const insertIdx = baseIdx + 1 + derivedList.length\n result.splice(insertIdx, 0, col)\n derivedList.push(col)\n insertedDerived.set(schemaCol, derivedList)\n schemaSet.add(col)\n inserted = true\n break\n }\n }\n }\n }\n\n if (!inserted) {\n // Check for array indices (e.g., field_1_*), insert after field_0_*\n const match = col.match(/^(.+?)_(\\d+)(_.*)?$/)\n if (match) {\n const [, basePath, index, suffix] = match\n if (basePath && index) {\n const prevIndex = parseInt(index, 10) - 1\n const prevCol = `${basePath}_${prevIndex}${suffix ?? ''}`\n const prevIdx = result.indexOf(prevCol)\n if (prevIdx !== -1) {\n // Insert after the previous index column\n result.splice(prevIdx + 1, 0, col)\n schemaSet.add(col)\n continue\n }\n }\n }\n\n // Otherwise append at the end (before timestamps)\n const createdAtIdx = result.indexOf('createdAt')\n if (createdAtIdx !== -1) {\n result.splice(createdAtIdx, 0, col)\n } else {\n result.push(col)\n }\n schemaSet.add(col)\n }\n }\n }\n\n return result\n}\n\n/**\n * Filters schema columns to only include those matching user-selected fields.\n * Preserves the order specified by the user in selectedFields.\n * Handles nested field selection (e.g., 'group.value' includes 'group_value' and 'group_value_*')\n */\nfunction filterToSelectedFields(\n columns: string[],\n selectedFields: string[],\n timezoneCompanionFields?: Set<string>,\n): string[] {\n const result: string[] = []\n const columnsSet = new Set(columns)\n\n // Convert selected fields to underscore notation patterns\n const patterns = selectedFields.map((field) => {\n const underscored = field.replace(/\\./g, '_')\n return {\n exact: underscored,\n original: field,\n prefix: `${underscored}_`,\n }\n })\n\n // Track which timezone companion fields were explicitly selected\n const explicitlySelectedTzFields = new Set(\n selectedFields\n .filter((f) => {\n const underscored = f.replace(/\\./g, '_')\n return timezoneCompanionFields?.has(underscored)\n })\n .map((f) => f.replace(/\\./g, '_')),\n )\n\n // Iterate through user-specified fields in order to preserve their ordering\n for (const pattern of patterns) {\n // First add the exact match if it exists and not already added\n // (it may have been added as a nested field of a previous pattern)\n if (columnsSet.has(pattern.exact) && !result.includes(pattern.exact)) {\n result.push(pattern.exact)\n }\n\n // Then add any columns with the prefix (nested fields)\n for (const column of columns) {\n if (column !== pattern.exact && column.startsWith(pattern.prefix)) {\n // Skip auto-generated timezone companion fields unless explicitly selected\n if (timezoneCompanionFields?.has(column) && !explicitlySelectedTzFields.has(column)) {\n continue\n }\n if (!result.includes(column)) {\n result.push(column)\n }\n }\n }\n }\n\n return result\n}\n"],"names":["getFlattenedFieldKeys","getSchemaColumns","collectionConfig","disabledFields","fields","selectedFields","locale","localeCodes","timezoneCompanionFields","hasVersions","Boolean","versions","expandLocales","length","schemaColumns","flattenedFields","systemFields","filterToSelectedFields","disabledSet","Set","path","add","replace","filter","col","disabled","startsWith","orderedColumns","includes","push","excludeFromMiddle","has","mergeColumns","dataColumns","result","schemaSet","insertedDerived","Map","inserted","schemaCol","suffix","slice","test","baseIdx","indexOf","derivedList","get","insertIdx","splice","set","match","basePath","index","prevIndex","parseInt","prevCol","prevIdx","createdAtIdx","columns","columnsSet","patterns","map","field","underscored","exact","original","prefix","explicitlySelectedTzFields","f","pattern","column"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parseCSV.d.ts","sourceRoot":"","sources":["../../src/utilities/parseCSV.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAI7C,MAAM,MAAM,YAAY,GAAG;IACzB,IAAI,EAAE,MAAM,GAAG,MAAM,CAAA;IACrB,GAAG,EAAE,cAAc,CAAA;CACpB,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,QAAQ,kBAAyB,YAAY,KAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,
|
|
1
|
+
{"version":3,"file":"parseCSV.d.ts","sourceRoot":"","sources":["../../src/utilities/parseCSV.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAI7C,MAAM,MAAM,YAAY,GAAG;IACzB,IAAI,EAAE,MAAM,GAAG,MAAM,CAAA;IACrB,GAAG,EAAE,cAAc,CAAA;CACpB,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,QAAQ,kBAAyB,YAAY,KAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CA6D7F,CAAA"}
|
|
@@ -7,36 +7,30 @@ import { parse } from 'csv-parse';
|
|
|
7
7
|
const records = [];
|
|
8
8
|
const parser = parse({
|
|
9
9
|
cast: (value, _context)=>{
|
|
10
|
-
// Empty strings
|
|
11
|
-
// This preserves existing data instead of overwriting with null
|
|
10
|
+
// Empty strings become undefined to preserve existing data during updates
|
|
12
11
|
if (value === '') {
|
|
13
12
|
return undefined;
|
|
14
13
|
}
|
|
15
|
-
// Handle booleans
|
|
16
14
|
if (value === 'true') {
|
|
17
15
|
return true;
|
|
18
16
|
}
|
|
19
17
|
if (value === 'false') {
|
|
20
18
|
return false;
|
|
21
19
|
}
|
|
22
|
-
//
|
|
20
|
+
// Explicit null requires typing "null" or "NULL"
|
|
23
21
|
if (value === 'null' || value === 'NULL') {
|
|
24
22
|
return null;
|
|
25
23
|
}
|
|
26
|
-
//
|
|
27
|
-
// This allows hasMany fields to use comma-separated values
|
|
24
|
+
// Keep comma-separated values as strings for hasMany fields
|
|
28
25
|
if (value.includes(',')) {
|
|
29
|
-
return value
|
|
30
|
-
;
|
|
26
|
+
return value;
|
|
31
27
|
}
|
|
32
|
-
// Handle numbers (only after checking for commas)
|
|
33
28
|
if (!isNaN(Number(value)) && value !== '') {
|
|
34
29
|
const num = Number(value);
|
|
35
30
|
if (String(num) === value || value.includes('.')) {
|
|
36
31
|
return num;
|
|
37
32
|
}
|
|
38
33
|
}
|
|
39
|
-
// Return as string
|
|
40
34
|
return value;
|
|
41
35
|
},
|
|
42
36
|
columns: true,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/utilities/parseCSV.ts"],"sourcesContent":["import type { PayloadRequest } from 'payload'\n\nimport { parse } from 'csv-parse'\n\nexport type ParseCSVArgs = {\n data: Buffer | string\n req: PayloadRequest\n}\n\n/**\n * Parses CSV data into an array of record objects.\n * Handles type coercion for booleans, numbers, and null values.\n */\nexport const parseCSV = async ({ data, req }: ParseCSVArgs): Promise<Record<string, unknown>[]> => {\n return new Promise((resolve, reject) => {\n const records: Record<string, unknown>[] = []\n\n const parser = parse({\n cast: (value, _context) => {\n // Empty strings
|
|
1
|
+
{"version":3,"sources":["../../src/utilities/parseCSV.ts"],"sourcesContent":["import type { PayloadRequest } from 'payload'\n\nimport { parse } from 'csv-parse'\n\nexport type ParseCSVArgs = {\n data: Buffer | string\n req: PayloadRequest\n}\n\n/**\n * Parses CSV data into an array of record objects.\n * Handles type coercion for booleans, numbers, and null values.\n */\nexport const parseCSV = async ({ data, req }: ParseCSVArgs): Promise<Record<string, unknown>[]> => {\n return new Promise((resolve, reject) => {\n const records: Record<string, unknown>[] = []\n\n const parser = parse({\n cast: (value, _context) => {\n // Empty strings become undefined to preserve existing data during updates\n if (value === '') {\n return undefined\n }\n\n if (value === 'true') {\n return true\n }\n if (value === 'false') {\n return false\n }\n\n // Explicit null requires typing \"null\" or \"NULL\"\n if (value === 'null' || value === 'NULL') {\n return null\n }\n\n // Keep comma-separated values as strings for hasMany fields\n if (value.includes(',')) {\n return value\n }\n\n if (!isNaN(Number(value)) && value !== '') {\n const num = Number(value)\n if (String(num) === value || value.includes('.')) {\n return num\n }\n }\n\n return value\n },\n columns: true,\n skip_empty_lines: true,\n trim: true,\n })\n\n parser.on('readable', () => {\n let record\n while ((record = parser.read()) !== null) {\n records.push(record)\n }\n })\n\n parser.on('error', (err) => {\n req.payload.logger.error({ err, msg: 'Error parsing CSV' })\n reject(err)\n })\n\n parser.on('end', () => {\n resolve(records)\n })\n\n parser.write(data)\n parser.end()\n })\n}\n"],"names":["parse","parseCSV","data","req","Promise","resolve","reject","records","parser","cast","value","_context","undefined","includes","isNaN","Number","num","String","columns","skip_empty_lines","trim","on","record","read","push","err","payload","logger","error","msg","write","end"],"mappings":"AAEA,SAASA,KAAK,QAAQ,YAAW;AAOjC;;;CAGC,GACD,OAAO,MAAMC,WAAW,OAAO,EAAEC,IAAI,EAAEC,GAAG,EAAgB;IACxD,OAAO,IAAIC,QAAQ,CAACC,SAASC;QAC3B,MAAMC,UAAqC,EAAE;QAE7C,MAAMC,SAASR,MAAM;YACnBS,MAAM,CAACC,OAAOC;gBACZ,0EAA0E;gBAC1E,IAAID,UAAU,IAAI;oBAChB,OAAOE;gBACT;gBAEA,IAAIF,UAAU,QAAQ;oBACpB,OAAO;gBACT;gBACA,IAAIA,UAAU,SAAS;oBACrB,OAAO;gBACT;gBAEA,iDAAiD;gBACjD,IAAIA,UAAU,UAAUA,UAAU,QAAQ;oBACxC,OAAO;gBACT;gBAEA,4DAA4D;gBAC5D,IAAIA,MAAMG,QAAQ,CAAC,MAAM;oBACvB,OAAOH;gBACT;gBAEA,IAAI,CAACI,MAAMC,OAAOL,WAAWA,UAAU,IAAI;oBACzC,MAAMM,MAAMD,OAAOL;oBACnB,IAAIO,OAAOD,SAASN,SAASA,MAAMG,QAAQ,CAAC,MAAM;wBAChD,OAAOG;oBACT;gBACF;gBAEA,OAAON;YACT;YACAQ,SAAS;YACTC,kBAAkB;YAClBC,MAAM;QACR;QAEAZ,OAAOa,EAAE,CAAC,YAAY;YACpB,IAAIC;YACJ,MAAO,AAACA,CAAAA,SAASd,OAAOe,IAAI,EAAC,MAAO,KAAM;gBACxChB,QAAQiB,IAAI,CAACF;YACf;QACF;QAEAd,OAAOa,EAAE,CAAC,SAAS,CAACI;YAClBtB,IAAIuB,OAAO,CAACC,MAAM,CAACC,KAAK,CAAC;gBAAEH;gBAAKI,KAAK;YAAoB;YACzDvB,OAAOmB;QACT;QAEAjB,OAAOa,EAAE,CAAC,OAAO;YACfhB,QAAQE;QACV;QAEAC,OAAOsB,KAAK,CAAC5B;QACbM,OAAOuB,GAAG;IACZ;AACF,EAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { PayloadRequest } from 'payload';
|
|
2
|
+
import type { Limit } from '../types.js';
|
|
3
|
+
/**
|
|
4
|
+
* Resolves a Limit value to a number.
|
|
5
|
+
* If the value is a function, it will be called with the request context.
|
|
6
|
+
* If the value is a number, it will be returned as-is.
|
|
7
|
+
* If the value is undefined, undefined will be returned.
|
|
8
|
+
*
|
|
9
|
+
* Note: A resolved value of 0 means unlimited (no restriction).
|
|
10
|
+
*/
|
|
11
|
+
export declare function resolveLimit(args: {
|
|
12
|
+
limit?: Limit;
|
|
13
|
+
req: PayloadRequest;
|
|
14
|
+
}): Promise<number | undefined>;
|
|
15
|
+
//# sourceMappingURL=resolveLimit.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolveLimit.d.ts","sourceRoot":"","sources":["../../src/utilities/resolveLimit.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAE7C,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAA;AAExC;;;;;;;GAOG;AACH,wBAAsB,YAAY,CAAC,IAAI,EAAE;IACvC,KAAK,CAAC,EAAE,KAAK,CAAA;IACb,GAAG,EAAE,cAAc,CAAA;CACpB,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAY9B"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Resolves a Limit value to a number.
|
|
3
|
+
* If the value is a function, it will be called with the request context.
|
|
4
|
+
* If the value is a number, it will be returned as-is.
|
|
5
|
+
* If the value is undefined, undefined will be returned.
|
|
6
|
+
*
|
|
7
|
+
* Note: A resolved value of 0 means unlimited (no restriction).
|
|
8
|
+
*/ export async function resolveLimit(args) {
|
|
9
|
+
const { limit, req } = args;
|
|
10
|
+
if (limit === undefined) {
|
|
11
|
+
return undefined;
|
|
12
|
+
}
|
|
13
|
+
if (typeof limit === 'number') {
|
|
14
|
+
return limit;
|
|
15
|
+
}
|
|
16
|
+
return limit({
|
|
17
|
+
req
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
//# sourceMappingURL=resolveLimit.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/utilities/resolveLimit.ts"],"sourcesContent":["import type { PayloadRequest } from 'payload'\n\nimport type { Limit } from '../types.js'\n\n/**\n * Resolves a Limit value to a number.\n * If the value is a function, it will be called with the request context.\n * If the value is a number, it will be returned as-is.\n * If the value is undefined, undefined will be returned.\n *\n * Note: A resolved value of 0 means unlimited (no restriction).\n */\nexport async function resolveLimit(args: {\n limit?: Limit\n req: PayloadRequest\n}): Promise<number | undefined> {\n const { limit, req } = args\n\n if (limit === undefined) {\n return undefined\n }\n\n if (typeof limit === 'number') {\n return limit\n }\n\n return limit({ req })\n}\n"],"names":["resolveLimit","args","limit","req","undefined"],"mappings":"AAIA;;;;;;;CAOC,GACD,OAAO,eAAeA,aAAaC,IAGlC;IACC,MAAM,EAAEC,KAAK,EAAEC,GAAG,EAAE,GAAGF;IAEvB,IAAIC,UAAUE,WAAW;QACvB,OAAOA;IACT;IAEA,IAAI,OAAOF,UAAU,UAAU;QAC7B,OAAOA;IACT;IAEA,OAAOA,MAAM;QAAEC;IAAI;AACrB"}
|
|
@@ -6,6 +6,19 @@ type UnflattenArgs = {
|
|
|
6
6
|
fromCSVFunctions?: Record<string, FromCSVFunction>;
|
|
7
7
|
req: PayloadRequest;
|
|
8
8
|
};
|
|
9
|
+
/**
|
|
10
|
+
* Converts flattened CSV data back into a nested document structure.
|
|
11
|
+
*
|
|
12
|
+
* The algorithm:
|
|
13
|
+
* 1. Sorts keys to ensure array indices are processed in order
|
|
14
|
+
* 2. For each flattened key (e.g., "blocks_0_hero_title"), splits by underscore into path segments
|
|
15
|
+
* 3. Traverses/builds the nested structure, handling:
|
|
16
|
+
* - Arrays (numeric segments like "0", "1")
|
|
17
|
+
* - Blocks (blockType detection from slug patterns)
|
|
18
|
+
* - Polymorphic relationships (_relationTo and _id suffix pairs)
|
|
19
|
+
* - Regular nested objects
|
|
20
|
+
* 4. Post-processes to handle localized fields, hasMany conversions, and relationship transforms
|
|
21
|
+
*/
|
|
9
22
|
export declare const unflattenObject: ({ data, fields, fromCSVFunctions, req, }: UnflattenArgs) => Record<string, unknown>;
|
|
10
23
|
export {};
|
|
11
24
|
//# sourceMappingURL=unflattenObject.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"unflattenObject.d.ts","sourceRoot":"","sources":["../../src/utilities/unflattenObject.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAE7D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAIlD,KAAK,aAAa,GAAG;IACnB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC7B,MAAM,EAAE,cAAc,EAAE,CAAA;IACxB,gBAAgB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAA;IAClD,GAAG,EAAE,cAAc,CAAA;CACpB,CAAA;AAED,eAAO,MAAM,eAAe,6CAKzB,aAAa,KAAG,MAAM,CAAC,MAAM,EAAE,OAAO,
|
|
1
|
+
{"version":3,"file":"unflattenObject.d.ts","sourceRoot":"","sources":["../../src/utilities/unflattenObject.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAE7D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAIlD,KAAK,aAAa,GAAG;IACnB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC7B,MAAM,EAAE,cAAc,EAAE,CAAA;IACxB,gBAAgB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAA;IAClD,GAAG,EAAE,cAAc,CAAA;CACpB,CAAA;AAED;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,eAAe,6CAKzB,aAAa,KAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAoSxC,CAAA"}
|