@payloadcms/plugin-import-export 3.71.0-internal.ef75fa0 → 3.71.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 +8 -3
- package/dist/components/CollectionField/index.js.map +1 -1
- package/dist/components/ExportListMenuItem/index.d.ts +0 -1
- package/dist/components/ExportListMenuItem/index.d.ts.map +1 -1
- package/dist/components/ExportListMenuItem/index.js +0 -1
- package/dist/components/ExportListMenuItem/index.js.map +1 -1
- package/dist/components/ExportPreview/index.d.ts +4 -0
- package/dist/components/ExportPreview/index.d.ts.map +1 -0
- package/dist/components/ExportPreview/index.js +252 -0
- package/dist/components/ExportPreview/index.js.map +1 -0
- package/dist/components/ExportPreview/index.scss +36 -0
- package/dist/components/ImportCollectionField/index.d.ts +3 -0
- package/dist/components/ImportCollectionField/index.d.ts.map +1 -0
- package/dist/components/ImportCollectionField/index.js +17 -0
- package/dist/components/ImportCollectionField/index.js.map +1 -0
- package/dist/components/ImportListMenuItem/index.d.ts +6 -0
- package/dist/components/ImportListMenuItem/index.d.ts.map +1 -0
- package/dist/components/ImportListMenuItem/index.js +48 -0
- package/dist/components/ImportListMenuItem/index.js.map +1 -0
- package/dist/components/ImportPreview/index.d.ts +4 -0
- package/dist/components/ImportPreview/index.d.ts.map +1 -0
- package/dist/components/ImportPreview/index.js +624 -0
- package/dist/components/ImportPreview/index.js.map +1 -0
- package/dist/components/ImportPreview/index.scss +41 -0
- package/dist/components/ImportSaveButton/index.d.ts +2 -0
- package/dist/components/ImportSaveButton/index.d.ts.map +1 -0
- package/dist/components/ImportSaveButton/index.js +18 -0
- package/dist/components/ImportSaveButton/index.js.map +1 -0
- package/dist/components/Page/index.scss +4 -2
- package/dist/constants.d.ts +21 -0
- package/dist/constants.d.ts.map +1 -0
- package/dist/constants.js +21 -0
- package/dist/constants.js.map +1 -0
- package/dist/export/batchProcessor.d.ts +107 -0
- package/dist/export/batchProcessor.d.ts.map +1 -0
- package/dist/export/batchProcessor.js +187 -0
- package/dist/export/batchProcessor.js.map +1 -0
- package/dist/export/createExport.d.ts +9 -4
- package/dist/export/createExport.d.ts.map +1 -1
- package/dist/export/createExport.js +163 -111
- package/dist/export/createExport.js.map +1 -1
- package/dist/export/getCreateExportCollectionTask.d.ts +1 -2
- package/dist/export/getCreateExportCollectionTask.d.ts.map +1 -1
- package/dist/export/getCreateExportCollectionTask.js +10 -18
- package/dist/export/getCreateExportCollectionTask.js.map +1 -1
- package/dist/export/getExportCollection.d.ts +8 -0
- package/dist/export/getExportCollection.d.ts.map +1 -0
- package/dist/export/getExportCollection.js +100 -0
- package/dist/export/getExportCollection.js.map +1 -0
- package/dist/export/getFields.d.ts +8 -2
- package/dist/export/getFields.d.ts.map +1 -1
- package/dist/export/getFields.js +7 -9
- package/dist/export/getFields.js.map +1 -1
- package/dist/export/handleDownload.d.ts +3 -0
- package/dist/export/handleDownload.d.ts.map +1 -0
- package/dist/export/{download.js → handleDownload.js} +7 -6
- package/dist/export/handleDownload.js.map +1 -0
- package/dist/export/handlePreview.d.ts +3 -0
- package/dist/export/handlePreview.d.ts.map +1 -0
- package/dist/export/handlePreview.js +163 -0
- package/dist/export/handlePreview.js.map +1 -0
- package/dist/exports/rsc.d.ts +5 -1
- package/dist/exports/rsc.d.ts.map +1 -1
- package/dist/exports/rsc.js +5 -1
- package/dist/exports/rsc.js.map +1 -1
- package/dist/import/batchProcessor.d.ts +46 -0
- package/dist/import/batchProcessor.d.ts.map +1 -0
- package/dist/import/batchProcessor.js +529 -0
- package/dist/import/batchProcessor.js.map +1 -0
- package/dist/import/createImport.d.ts +45 -0
- package/dist/import/createImport.d.ts.map +1 -0
- package/dist/import/createImport.js +175 -0
- package/dist/import/createImport.js.map +1 -0
- package/dist/import/getCreateImportCollectionTask.d.ts +13 -0
- package/dist/import/getCreateImportCollectionTask.d.ts.map +1 -0
- package/dist/import/getCreateImportCollectionTask.js +81 -0
- package/dist/import/getCreateImportCollectionTask.js.map +1 -0
- package/dist/import/getFields.d.ts +7 -0
- package/dist/import/getFields.d.ts.map +1 -0
- package/dist/import/getFields.js +150 -0
- package/dist/import/getFields.js.map +1 -0
- package/dist/import/getImportCollection.d.ts +8 -0
- package/dist/import/getImportCollection.d.ts.map +1 -0
- package/dist/import/getImportCollection.js +258 -0
- package/dist/import/getImportCollection.js.map +1 -0
- package/dist/import/handlePreview.d.ts +3 -0
- package/dist/import/handlePreview.d.ts.map +1 -0
- package/dist/import/handlePreview.js +94 -0
- package/dist/import/handlePreview.js.map +1 -0
- package/dist/index.d.ts +3 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +68 -110
- package/dist/index.js.map +1 -1
- package/dist/translations/languages/ar.d.ts.map +1 -1
- package/dist/translations/languages/ar.js +21 -1
- 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 +21 -1
- 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 +21 -1
- package/dist/translations/languages/bg.js.map +1 -1
- package/dist/translations/languages/bnBd.d.ts +4 -0
- package/dist/translations/languages/bnBd.d.ts.map +1 -0
- package/dist/translations/languages/bnBd.js +48 -0
- package/dist/translations/languages/bnBd.js.map +1 -0
- package/dist/translations/languages/bnIn.d.ts +4 -0
- package/dist/translations/languages/bnIn.d.ts.map +1 -0
- package/dist/translations/languages/bnIn.js +48 -0
- package/dist/translations/languages/bnIn.js.map +1 -0
- package/dist/translations/languages/ca.d.ts.map +1 -1
- package/dist/translations/languages/ca.js +21 -1
- 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 +21 -1
- 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 +21 -1
- 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 +21 -1
- package/dist/translations/languages/de.js.map +1 -1
- package/dist/translations/languages/en.d.ts +20 -0
- package/dist/translations/languages/en.d.ts.map +1 -1
- package/dist/translations/languages/en.js +21 -1
- 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 +21 -1
- 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 +21 -1
- 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 +21 -1
- 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 +21 -1
- 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 +21 -1
- 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 +21 -1
- 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 +21 -1
- 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 +21 -1
- package/dist/translations/languages/hy.js.map +1 -1
- package/dist/translations/languages/id.d.ts +4 -0
- package/dist/translations/languages/id.d.ts.map +1 -0
- package/dist/translations/languages/id.js +48 -0
- package/dist/translations/languages/id.js.map +1 -0
- package/dist/translations/languages/is.d.ts.map +1 -1
- package/dist/translations/languages/is.js +21 -1
- 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 +21 -1
- 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 +21 -1
- 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 +21 -1
- 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 +21 -1
- 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 +26 -6
- 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 +21 -1
- 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 +21 -1
- 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 +21 -1
- 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 +21 -1
- 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 +21 -1
- 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 +21 -1
- 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 +21 -1
- 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 +21 -1
- 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 +21 -1
- 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 +21 -1
- 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 +21 -1
- 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 +21 -1
- 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 +21 -1
- 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 +21 -1
- 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 +21 -1
- 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 +21 -1
- 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 +21 -1
- 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 +21 -1
- 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 +21 -1
- package/dist/translations/languages/zhTw.js.map +1 -1
- package/dist/translations/types.d.ts +13 -0
- package/dist/translations/types.d.ts.map +1 -1
- package/dist/translations/types.js.map +1 -1
- package/dist/types.d.ts +166 -22
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +1 -1
- package/dist/types.js.map +1 -1
- package/dist/utilities/flattenObject.d.ts.map +1 -0
- package/dist/{export → utilities}/flattenObject.js +13 -6
- package/dist/utilities/flattenObject.js.map +1 -0
- package/dist/utilities/getExportFieldFunctions.d.ts +12 -0
- package/dist/utilities/getExportFieldFunctions.d.ts.map +1 -0
- package/dist/{export/getCustomFieldFunctions.js → utilities/getExportFieldFunctions.js} +18 -2
- package/dist/utilities/getExportFieldFunctions.js.map +1 -0
- package/dist/utilities/getFilename.d.ts +6 -0
- package/dist/utilities/getFilename.d.ts.map +1 -0
- package/dist/{export → utilities}/getFilename.js +4 -1
- package/dist/utilities/getFilename.js.map +1 -0
- package/dist/utilities/getFlattenedFieldKeys.d.ts +12 -1
- package/dist/utilities/getFlattenedFieldKeys.d.ts.map +1 -1
- package/dist/utilities/getFlattenedFieldKeys.js +35 -10
- package/dist/utilities/getFlattenedFieldKeys.js.map +1 -1
- package/dist/utilities/getImportFieldFunctions.d.ts +12 -0
- package/dist/utilities/getImportFieldFunctions.d.ts.map +1 -0
- package/dist/utilities/getImportFieldFunctions.js +130 -0
- package/dist/utilities/getImportFieldFunctions.js.map +1 -0
- package/dist/utilities/getPluginCollections.d.ts +39 -0
- package/dist/utilities/getPluginCollections.d.ts.map +1 -0
- package/dist/utilities/getPluginCollections.js +102 -0
- package/dist/utilities/getPluginCollections.js.map +1 -0
- package/dist/utilities/getSchemaColumns.d.ts +43 -0
- package/dist/utilities/getSchemaColumns.d.ts.map +1 -0
- package/dist/utilities/getSchemaColumns.js +163 -0
- package/dist/utilities/getSchemaColumns.js.map +1 -0
- package/dist/utilities/getSelect.d.ts +11 -0
- package/dist/utilities/getSelect.d.ts.map +1 -0
- package/dist/{export → utilities}/getSelect.js +6 -2
- package/dist/utilities/getSelect.js.map +1 -0
- package/dist/utilities/parseCSV.d.ts +11 -0
- package/dist/utilities/parseCSV.d.ts.map +1 -0
- package/dist/utilities/parseCSV.js +67 -0
- package/dist/utilities/parseCSV.js.map +1 -0
- package/dist/utilities/parseCSV.spec.js +169 -0
- package/dist/utilities/parseCSV.spec.js.map +1 -0
- package/dist/utilities/parseJSON.d.ts +11 -0
- package/dist/utilities/parseJSON.d.ts.map +1 -0
- package/dist/utilities/parseJSON.js +25 -0
- package/dist/utilities/parseJSON.js.map +1 -0
- package/dist/utilities/processRichTextField.d.ts +6 -0
- package/dist/utilities/processRichTextField.d.ts.map +1 -0
- package/dist/utilities/processRichTextField.js +45 -0
- package/dist/utilities/processRichTextField.js.map +1 -0
- package/dist/utilities/unflattenObject.d.ts +11 -0
- package/dist/utilities/unflattenObject.d.ts.map +1 -0
- package/dist/utilities/unflattenObject.js +431 -0
- package/dist/utilities/unflattenObject.js.map +1 -0
- package/dist/utilities/unflattenObject.spec.js +680 -0
- package/dist/utilities/unflattenObject.spec.js.map +1 -0
- package/dist/utilities/useBatchProcessor.d.ts +103 -0
- package/dist/utilities/useBatchProcessor.d.ts.map +1 -0
- package/dist/utilities/useBatchProcessor.js +88 -0
- package/dist/utilities/useBatchProcessor.js.map +1 -0
- package/dist/utilities/validateLimitValue.d.ts +1 -1
- package/dist/utilities/validateLimitValue.d.ts.map +1 -1
- package/dist/utilities/validateLimitValue.js +1 -4
- package/dist/utilities/validateLimitValue.js.map +1 -1
- package/package.json +9 -9
- package/dist/components/ExportListMenuItem/index.scss +0 -52
- package/dist/components/Preview/index.d.ts +0 -4
- package/dist/components/Preview/index.d.ts.map +0 -1
- package/dist/components/Preview/index.js +0 -180
- package/dist/components/Preview/index.js.map +0 -1
- package/dist/components/Preview/index.scss +0 -8
- package/dist/export/download.d.ts +0 -3
- package/dist/export/download.d.ts.map +0 -1
- package/dist/export/download.js.map +0 -1
- package/dist/export/flattenObject.d.ts.map +0 -1
- package/dist/export/flattenObject.js.map +0 -1
- package/dist/export/getCustomFieldFunctions.d.ts +0 -8
- package/dist/export/getCustomFieldFunctions.d.ts.map +0 -1
- package/dist/export/getCustomFieldFunctions.js.map +0 -1
- package/dist/export/getFilename.d.ts +0 -2
- package/dist/export/getFilename.d.ts.map +0 -1
- package/dist/export/getFilename.js.map +0 -1
- package/dist/export/getSelect.d.ts +0 -7
- package/dist/export/getSelect.d.ts.map +0 -1
- package/dist/export/getSelect.js.map +0 -1
- package/dist/getExportCollection.d.ts +0 -7
- package/dist/getExportCollection.d.ts.map +0 -1
- package/dist/getExportCollection.js +0 -86
- package/dist/getExportCollection.js.map +0 -1
- /package/dist/{export → utilities}/flattenObject.d.ts +0 -0
|
@@ -0,0 +1,169 @@
|
|
|
1
|
+
import { parseCSV } from './parseCSV.js';
|
|
2
|
+
import { describe, it, expect, vi } from 'vitest';
|
|
3
|
+
describe('parseCSV', ()=>{
|
|
4
|
+
const mockReq = {
|
|
5
|
+
payload: {
|
|
6
|
+
logger: {
|
|
7
|
+
error: vi.fn()
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
};
|
|
11
|
+
describe('cast function behavior', ()=>{
|
|
12
|
+
it('should preserve comma-separated values as strings', async ()=>{
|
|
13
|
+
const csvData = Buffer.from('numbers,ids\n"1,2,3,5,8","id1,id2,id3"');
|
|
14
|
+
const result = await parseCSV({
|
|
15
|
+
data: csvData,
|
|
16
|
+
req: mockReq
|
|
17
|
+
});
|
|
18
|
+
expect(result).toEqual([
|
|
19
|
+
{
|
|
20
|
+
numbers: '1,2,3,5,8',
|
|
21
|
+
ids: 'id1,id2,id3'
|
|
22
|
+
}
|
|
23
|
+
]);
|
|
24
|
+
});
|
|
25
|
+
it('should convert single numbers to numbers', async ()=>{
|
|
26
|
+
const csvData = Buffer.from('single,decimal\n"42","3.14"');
|
|
27
|
+
const result = await parseCSV({
|
|
28
|
+
data: csvData,
|
|
29
|
+
req: mockReq
|
|
30
|
+
});
|
|
31
|
+
expect(result).toEqual([
|
|
32
|
+
{
|
|
33
|
+
single: 42,
|
|
34
|
+
decimal: 3.14
|
|
35
|
+
}
|
|
36
|
+
]);
|
|
37
|
+
});
|
|
38
|
+
it('should handle booleans correctly', async ()=>{
|
|
39
|
+
const csvData = Buffer.from('bool1,bool2,notBool\n"true","false","True"');
|
|
40
|
+
const result = await parseCSV({
|
|
41
|
+
data: csvData,
|
|
42
|
+
req: mockReq
|
|
43
|
+
});
|
|
44
|
+
expect(result).toEqual([
|
|
45
|
+
{
|
|
46
|
+
bool1: true,
|
|
47
|
+
bool2: false,
|
|
48
|
+
notBool: 'True'
|
|
49
|
+
}
|
|
50
|
+
]);
|
|
51
|
+
});
|
|
52
|
+
it('should convert empty strings to undefined', async ()=>{
|
|
53
|
+
const csvData = Buffer.from('field1,field2\n"","value"');
|
|
54
|
+
const result = await parseCSV({
|
|
55
|
+
data: csvData,
|
|
56
|
+
req: mockReq
|
|
57
|
+
});
|
|
58
|
+
expect(result).toEqual([
|
|
59
|
+
{
|
|
60
|
+
// field1 is undefined (not present) - empty cells don't update fields
|
|
61
|
+
field2: 'value'
|
|
62
|
+
}
|
|
63
|
+
]);
|
|
64
|
+
});
|
|
65
|
+
it('should handle null strings', async ()=>{
|
|
66
|
+
const csvData = Buffer.from('field1,field2,field3\n"null","NULL","Null"');
|
|
67
|
+
const result = await parseCSV({
|
|
68
|
+
data: csvData,
|
|
69
|
+
req: mockReq
|
|
70
|
+
});
|
|
71
|
+
expect(result).toEqual([
|
|
72
|
+
{
|
|
73
|
+
field1: null,
|
|
74
|
+
field2: null,
|
|
75
|
+
field3: 'Null'
|
|
76
|
+
}
|
|
77
|
+
]);
|
|
78
|
+
});
|
|
79
|
+
it('should preserve spaces in comma-separated values', async ()=>{
|
|
80
|
+
const csvData = Buffer.from('numbers\n" 10 , 20 , 30 "');
|
|
81
|
+
const result = await parseCSV({
|
|
82
|
+
data: csvData,
|
|
83
|
+
req: mockReq
|
|
84
|
+
});
|
|
85
|
+
expect(result).toEqual([
|
|
86
|
+
{
|
|
87
|
+
numbers: ' 10 , 20 , 30 '
|
|
88
|
+
}
|
|
89
|
+
]);
|
|
90
|
+
});
|
|
91
|
+
it('should handle mixed comma-separated values with empty entries', async ()=>{
|
|
92
|
+
const csvData = Buffer.from('mixed\n"1,,3,,5"');
|
|
93
|
+
const result = await parseCSV({
|
|
94
|
+
data: csvData,
|
|
95
|
+
req: mockReq
|
|
96
|
+
});
|
|
97
|
+
expect(result).toEqual([
|
|
98
|
+
{
|
|
99
|
+
mixed: '1,,3,,5'
|
|
100
|
+
}
|
|
101
|
+
]);
|
|
102
|
+
});
|
|
103
|
+
it('should handle MongoDB ObjectIds as strings', async ()=>{
|
|
104
|
+
const csvData = Buffer.from('id\n"507f1f77bcf86cd799439011"');
|
|
105
|
+
const result = await parseCSV({
|
|
106
|
+
data: csvData,
|
|
107
|
+
req: mockReq
|
|
108
|
+
});
|
|
109
|
+
expect(result).toEqual([
|
|
110
|
+
{
|
|
111
|
+
id: '507f1f77bcf86cd799439011'
|
|
112
|
+
}
|
|
113
|
+
]);
|
|
114
|
+
});
|
|
115
|
+
it('should handle multiple rows with various data types', async ()=>{
|
|
116
|
+
const csvData = Buffer.from('title,count,tags,active\n' + '"Item 1","5","tag1,tag2,tag3","true"\n' + '"Item 2","","","false"\n' + '"Item 3","10","single",""\n');
|
|
117
|
+
const result = await parseCSV({
|
|
118
|
+
data: csvData,
|
|
119
|
+
req: mockReq
|
|
120
|
+
});
|
|
121
|
+
expect(result).toEqual([
|
|
122
|
+
{
|
|
123
|
+
title: 'Item 1',
|
|
124
|
+
count: 5,
|
|
125
|
+
tags: 'tag1,tag2,tag3',
|
|
126
|
+
active: true
|
|
127
|
+
},
|
|
128
|
+
{
|
|
129
|
+
title: 'Item 2',
|
|
130
|
+
// count is undefined (empty cell - field not updated)
|
|
131
|
+
// tags is undefined (empty cell - field not updated)
|
|
132
|
+
active: false
|
|
133
|
+
},
|
|
134
|
+
{
|
|
135
|
+
title: 'Item 3',
|
|
136
|
+
count: 10,
|
|
137
|
+
tags: 'single'
|
|
138
|
+
}
|
|
139
|
+
]);
|
|
140
|
+
});
|
|
141
|
+
it('should skip empty lines', async ()=>{
|
|
142
|
+
const csvData = Buffer.from('field\n"value1"\n\n"value2"\n\n');
|
|
143
|
+
const result = await parseCSV({
|
|
144
|
+
data: csvData,
|
|
145
|
+
req: mockReq
|
|
146
|
+
});
|
|
147
|
+
expect(result).toEqual([
|
|
148
|
+
{
|
|
149
|
+
field: 'value1'
|
|
150
|
+
},
|
|
151
|
+
{
|
|
152
|
+
field: 'value2'
|
|
153
|
+
}
|
|
154
|
+
]);
|
|
155
|
+
});
|
|
156
|
+
});
|
|
157
|
+
describe('error handling', ()=>{
|
|
158
|
+
it('should handle parsing errors', async ()=>{
|
|
159
|
+
const invalidCsv = Buffer.from('field1,field2\n"value1');
|
|
160
|
+
await expect(parseCSV({
|
|
161
|
+
data: invalidCsv,
|
|
162
|
+
req: mockReq
|
|
163
|
+
})).rejects.toThrow();
|
|
164
|
+
expect(mockReq.payload.logger.error).toHaveBeenCalled();
|
|
165
|
+
});
|
|
166
|
+
});
|
|
167
|
+
});
|
|
168
|
+
|
|
169
|
+
//# sourceMappingURL=parseCSV.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/utilities/parseCSV.spec.ts"],"sourcesContent":["import { PayloadRequest } from 'payload'\n\nimport { parseCSV } from './parseCSV.js'\nimport { describe, it, expect, vi } from 'vitest'\n\ndescribe('parseCSV', () => {\n const mockReq = {\n payload: {\n logger: {\n error: vi.fn(),\n },\n },\n } as unknown as PayloadRequest\n\n describe('cast function behavior', () => {\n it('should preserve comma-separated values as strings', async () => {\n const csvData = Buffer.from('numbers,ids\\n\"1,2,3,5,8\",\"id1,id2,id3\"')\n const result = await parseCSV({ data: csvData, req: mockReq })\n\n expect(result).toEqual([\n {\n numbers: '1,2,3,5,8',\n ids: 'id1,id2,id3',\n },\n ])\n })\n\n it('should convert single numbers to numbers', async () => {\n const csvData = Buffer.from('single,decimal\\n\"42\",\"3.14\"')\n const result = await parseCSV({ data: csvData, req: mockReq })\n\n expect(result).toEqual([\n {\n single: 42,\n decimal: 3.14,\n },\n ])\n })\n\n it('should handle booleans correctly', async () => {\n const csvData = Buffer.from('bool1,bool2,notBool\\n\"true\",\"false\",\"True\"')\n const result = await parseCSV({ data: csvData, req: mockReq })\n\n expect(result).toEqual([\n {\n bool1: true,\n bool2: false,\n notBool: 'True', // Case-sensitive\n },\n ])\n })\n\n it('should convert empty strings to undefined', async () => {\n const csvData = Buffer.from('field1,field2\\n\"\",\"value\"')\n const result = await parseCSV({ data: csvData, req: mockReq })\n\n expect(result).toEqual([\n {\n // field1 is undefined (not present) - empty cells don't update fields\n field2: 'value',\n },\n ])\n })\n\n it('should handle null strings', async () => {\n const csvData = Buffer.from('field1,field2,field3\\n\"null\",\"NULL\",\"Null\"')\n const result = await parseCSV({ data: csvData, req: mockReq })\n\n expect(result).toEqual([\n {\n field1: null,\n field2: null,\n field3: 'Null', // Case-sensitive for mixed case\n },\n ])\n })\n\n it('should preserve spaces in comma-separated values', async () => {\n const csvData = Buffer.from('numbers\\n\" 10 , 20 , 30 \"')\n const result = await parseCSV({ data: csvData, req: mockReq })\n\n expect(result).toEqual([\n {\n numbers: ' 10 , 20 , 30 ', // CSV parser trims outer quotes but preserves the content\n },\n ])\n })\n\n it('should handle mixed comma-separated values with empty entries', async () => {\n const csvData = Buffer.from('mixed\\n\"1,,3,,5\"')\n const result = await parseCSV({ data: csvData, req: mockReq })\n\n expect(result).toEqual([\n {\n mixed: '1,,3,,5',\n },\n ])\n })\n\n it('should handle MongoDB ObjectIds as strings', async () => {\n const csvData = Buffer.from('id\\n\"507f1f77bcf86cd799439011\"')\n const result = await parseCSV({ data: csvData, req: mockReq })\n\n expect(result).toEqual([\n {\n id: '507f1f77bcf86cd799439011',\n },\n ])\n })\n\n it('should handle multiple rows with various data types', async () => {\n const csvData = Buffer.from(\n 'title,count,tags,active\\n' +\n '\"Item 1\",\"5\",\"tag1,tag2,tag3\",\"true\"\\n' +\n '\"Item 2\",\"\",\"\",\"false\"\\n' +\n '\"Item 3\",\"10\",\"single\",\"\"\\n',\n )\n const result = await parseCSV({ data: csvData, req: mockReq })\n\n expect(result).toEqual([\n {\n title: 'Item 1',\n count: 5,\n tags: 'tag1,tag2,tag3',\n active: true,\n },\n {\n title: 'Item 2',\n // count is undefined (empty cell - field not updated)\n // tags is undefined (empty cell - field not updated)\n active: false,\n },\n {\n title: 'Item 3',\n count: 10,\n tags: 'single',\n // active is undefined (empty cell - field not updated)\n },\n ])\n })\n\n it('should skip empty lines', async () => {\n const csvData = Buffer.from('field\\n\"value1\"\\n\\n\"value2\"\\n\\n')\n const result = await parseCSV({ data: csvData, req: mockReq })\n\n expect(result).toEqual([{ field: 'value1' }, { field: 'value2' }])\n })\n })\n\n describe('error handling', () => {\n it('should handle parsing errors', async () => {\n const invalidCsv = Buffer.from('field1,field2\\n\"value1')\n\n await expect(parseCSV({ data: invalidCsv, req: mockReq })).rejects.toThrow()\n expect(mockReq.payload.logger.error).toHaveBeenCalled()\n })\n })\n})\n"],"names":["parseCSV","describe","it","expect","vi","mockReq","payload","logger","error","fn","csvData","Buffer","from","result","data","req","toEqual","numbers","ids","single","decimal","bool1","bool2","notBool","field2","field1","field3","mixed","id","title","count","tags","active","field","invalidCsv","rejects","toThrow","toHaveBeenCalled"],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { PayloadRequest } from 'payload';
|
|
2
|
+
export type ParseJSONArgs = {
|
|
3
|
+
data: Buffer | string;
|
|
4
|
+
req: PayloadRequest;
|
|
5
|
+
};
|
|
6
|
+
/**
|
|
7
|
+
* Parses JSON data into an array of record objects.
|
|
8
|
+
* Validates that the input is an array of documents.
|
|
9
|
+
*/
|
|
10
|
+
export declare const parseJSON: ({ data, req }: ParseJSONArgs) => Record<string, unknown>[];
|
|
11
|
+
//# sourceMappingURL=parseJSON.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parseJSON.d.ts","sourceRoot":"","sources":["../../src/utilities/parseJSON.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAI7C,MAAM,MAAM,aAAa,GAAG;IAC1B,IAAI,EAAE,MAAM,GAAG,MAAM,CAAA;IACrB,GAAG,EAAE,cAAc,CAAA;CACpB,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,SAAS,kBAAmB,aAAa,KAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAiB/E,CAAA"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { APIError } from 'payload';
|
|
2
|
+
/**
|
|
3
|
+
* Parses JSON data into an array of record objects.
|
|
4
|
+
* Validates that the input is an array of documents.
|
|
5
|
+
*/ export const parseJSON = ({ data, req })=>{
|
|
6
|
+
try {
|
|
7
|
+
const content = typeof data === 'string' ? data : data.toString('utf-8');
|
|
8
|
+
const parsed = JSON.parse(content);
|
|
9
|
+
if (!Array.isArray(parsed)) {
|
|
10
|
+
throw new APIError('JSON import data must be an array of documents');
|
|
11
|
+
}
|
|
12
|
+
return parsed;
|
|
13
|
+
} catch (err) {
|
|
14
|
+
req.payload.logger.error({
|
|
15
|
+
err,
|
|
16
|
+
msg: 'Error parsing JSON'
|
|
17
|
+
});
|
|
18
|
+
if (err instanceof APIError) {
|
|
19
|
+
throw err;
|
|
20
|
+
}
|
|
21
|
+
throw new APIError('Invalid JSON format');
|
|
22
|
+
}
|
|
23
|
+
};
|
|
24
|
+
|
|
25
|
+
//# sourceMappingURL=parseJSON.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/utilities/parseJSON.ts"],"sourcesContent":["import type { PayloadRequest } from 'payload'\n\nimport { APIError } from 'payload'\n\nexport type ParseJSONArgs = {\n data: Buffer | string\n req: PayloadRequest\n}\n\n/**\n * Parses JSON data into an array of record objects.\n * Validates that the input is an array of documents.\n */\nexport const parseJSON = ({ data, req }: ParseJSONArgs): Record<string, unknown>[] => {\n try {\n const content = typeof data === 'string' ? data : data.toString('utf-8')\n const parsed = JSON.parse(content)\n\n if (!Array.isArray(parsed)) {\n throw new APIError('JSON import data must be an array of documents')\n }\n\n return parsed\n } catch (err) {\n req.payload.logger.error({ err, msg: 'Error parsing JSON' })\n if (err instanceof APIError) {\n throw err\n }\n throw new APIError('Invalid JSON format')\n }\n}\n"],"names":["APIError","parseJSON","data","req","content","toString","parsed","JSON","parse","Array","isArray","err","payload","logger","error","msg"],"mappings":"AAEA,SAASA,QAAQ,QAAQ,UAAS;AAOlC;;;CAGC,GACD,OAAO,MAAMC,YAAY,CAAC,EAAEC,IAAI,EAAEC,GAAG,EAAiB;IACpD,IAAI;QACF,MAAMC,UAAU,OAAOF,SAAS,WAAWA,OAAOA,KAAKG,QAAQ,CAAC;QAChE,MAAMC,SAASC,KAAKC,KAAK,CAACJ;QAE1B,IAAI,CAACK,MAAMC,OAAO,CAACJ,SAAS;YAC1B,MAAM,IAAIN,SAAS;QACrB;QAEA,OAAOM;IACT,EAAE,OAAOK,KAAK;QACZR,IAAIS,OAAO,CAACC,MAAM,CAACC,KAAK,CAAC;YAAEH;YAAKI,KAAK;QAAqB;QAC1D,IAAIJ,eAAeX,UAAU;YAC3B,MAAMW;QACR;QACA,MAAM,IAAIX,SAAS;IACrB;AACF,EAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Process rich text fields to ensure proper data types for Lexical editor.
|
|
3
|
+
* Lexical expects certain properties to be numbers, not strings.
|
|
4
|
+
*/
|
|
5
|
+
export declare const processRichTextField: (value: unknown) => unknown;
|
|
6
|
+
//# sourceMappingURL=processRichTextField.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"processRichTextField.d.ts","sourceRoot":"","sources":["../../src/utilities/processRichTextField.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,eAAO,MAAM,oBAAoB,UAAW,OAAO,KAAG,OA4CrD,CAAA"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Process rich text fields to ensure proper data types for Lexical editor.
|
|
3
|
+
* Lexical expects certain properties to be numbers, not strings.
|
|
4
|
+
*/ export const processRichTextField = (value)=>{
|
|
5
|
+
if (!value || typeof value !== 'object') {
|
|
6
|
+
return value;
|
|
7
|
+
}
|
|
8
|
+
// Properties that should be numbers in Lexical
|
|
9
|
+
const numericProperties = [
|
|
10
|
+
'detail',
|
|
11
|
+
'format',
|
|
12
|
+
'indent',
|
|
13
|
+
'version',
|
|
14
|
+
'value',
|
|
15
|
+
'start',
|
|
16
|
+
'textFormat',
|
|
17
|
+
'textStyle'
|
|
18
|
+
];
|
|
19
|
+
const processNode = (node)=>{
|
|
20
|
+
if (!node || typeof node !== 'object') {
|
|
21
|
+
return node;
|
|
22
|
+
}
|
|
23
|
+
// Process current node's properties
|
|
24
|
+
const processed = {};
|
|
25
|
+
for (const [key, val] of Object.entries(node)){
|
|
26
|
+
if (numericProperties.includes(key) && typeof val === 'string') {
|
|
27
|
+
// Convert string numbers to actual numbers
|
|
28
|
+
const num = parseFloat(val);
|
|
29
|
+
processed[key] = isNaN(num) ? val : num;
|
|
30
|
+
} else if (key === 'children' && Array.isArray(val)) {
|
|
31
|
+
// Recursively process children
|
|
32
|
+
processed[key] = val.map((child)=>processNode(child));
|
|
33
|
+
} else if (typeof val === 'object' && val !== null) {
|
|
34
|
+
// Recursively process nested objects
|
|
35
|
+
processed[key] = processNode(val);
|
|
36
|
+
} else {
|
|
37
|
+
processed[key] = val;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
return processed;
|
|
41
|
+
};
|
|
42
|
+
return processNode(value);
|
|
43
|
+
};
|
|
44
|
+
|
|
45
|
+
//# sourceMappingURL=processRichTextField.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/utilities/processRichTextField.ts"],"sourcesContent":["/**\n * Process rich text fields to ensure proper data types for Lexical editor.\n * Lexical expects certain properties to be numbers, not strings.\n */\nexport const processRichTextField = (value: unknown): unknown => {\n if (!value || typeof value !== 'object') {\n return value\n }\n\n // Properties that should be numbers in Lexical\n const numericProperties = [\n 'detail',\n 'format',\n 'indent',\n 'version',\n 'value',\n 'start',\n 'textFormat',\n 'textStyle',\n ]\n\n const processNode = (node: any): any => {\n if (!node || typeof node !== 'object') {\n return node\n }\n\n // Process current node's properties\n const processed: any = {}\n for (const [key, val] of Object.entries(node)) {\n if (numericProperties.includes(key) && typeof val === 'string') {\n // Convert string numbers to actual numbers\n const num = parseFloat(val)\n processed[key] = isNaN(num) ? val : num\n } else if (key === 'children' && Array.isArray(val)) {\n // Recursively process children\n processed[key] = val.map((child) => processNode(child))\n } else if (typeof val === 'object' && val !== null) {\n // Recursively process nested objects\n processed[key] = processNode(val)\n } else {\n processed[key] = val\n }\n }\n\n return processed\n }\n\n return processNode(value)\n}\n"],"names":["processRichTextField","value","numericProperties","processNode","node","processed","key","val","Object","entries","includes","num","parseFloat","isNaN","Array","isArray","map","child"],"mappings":"AAAA;;;CAGC,GACD,OAAO,MAAMA,uBAAuB,CAACC;IACnC,IAAI,CAACA,SAAS,OAAOA,UAAU,UAAU;QACvC,OAAOA;IACT;IAEA,+CAA+C;IAC/C,MAAMC,oBAAoB;QACxB;QACA;QACA;QACA;QACA;QACA;QACA;QACA;KACD;IAED,MAAMC,cAAc,CAACC;QACnB,IAAI,CAACA,QAAQ,OAAOA,SAAS,UAAU;YACrC,OAAOA;QACT;QAEA,oCAAoC;QACpC,MAAMC,YAAiB,CAAC;QACxB,KAAK,MAAM,CAACC,KAAKC,IAAI,IAAIC,OAAOC,OAAO,CAACL,MAAO;YAC7C,IAAIF,kBAAkBQ,QAAQ,CAACJ,QAAQ,OAAOC,QAAQ,UAAU;gBAC9D,2CAA2C;gBAC3C,MAAMI,MAAMC,WAAWL;gBACvBF,SAAS,CAACC,IAAI,GAAGO,MAAMF,OAAOJ,MAAMI;YACtC,OAAO,IAAIL,QAAQ,cAAcQ,MAAMC,OAAO,CAACR,MAAM;gBACnD,+BAA+B;gBAC/BF,SAAS,CAACC,IAAI,GAAGC,IAAIS,GAAG,CAAC,CAACC,QAAUd,YAAYc;YAClD,OAAO,IAAI,OAAOV,QAAQ,YAAYA,QAAQ,MAAM;gBAClD,qCAAqC;gBACrCF,SAAS,CAACC,IAAI,GAAGH,YAAYI;YAC/B,OAAO;gBACLF,SAAS,CAACC,IAAI,GAAGC;YACnB;QACF;QAEA,OAAOF;IACT;IAEA,OAAOF,YAAYF;AACrB,EAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { FlattenedField, PayloadRequest } from 'payload';
|
|
2
|
+
import type { FromCSVFunction } from '../types.js';
|
|
3
|
+
type UnflattenArgs = {
|
|
4
|
+
data: Record<string, unknown>;
|
|
5
|
+
fields: FlattenedField[];
|
|
6
|
+
fromCSVFunctions?: Record<string, FromCSVFunction>;
|
|
7
|
+
req: PayloadRequest;
|
|
8
|
+
};
|
|
9
|
+
export declare const unflattenObject: ({ data, fields, fromCSVFunctions, req, }: UnflattenArgs) => Record<string, unknown>;
|
|
10
|
+
export {};
|
|
11
|
+
//# sourceMappingURL=unflattenObject.d.ts.map
|
|
@@ -0,0 +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,CA0TxC,CAAA"}
|