@payloadcms/plugin-import-export 3.44.0-canary.9 → 3.44.0-internal.6b79dc2
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.
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createExport.d.ts","sourceRoot":"","sources":["../../src/export/createExport.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"createExport.d.ts","sourceRoot":"","sources":["../../src/export/createExport.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AAWhE,MAAM,MAAM,MAAM,GAAG;IACnB,cAAc,EAAE,MAAM,CAAA;IACtB;;OAEG;IACH,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,MAAM,CAAC,EAAE,IAAI,GAAG,KAAK,CAAA;IACrB,iBAAiB,EAAE,MAAM,CAAA;IACzB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAA;IACjB,MAAM,EAAE,KAAK,GAAG,MAAM,CAAA;IACtB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAA;IAClB,EAAE,EAAE,MAAM,GAAG,MAAM,CAAA;IACnB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,IAAI,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,cAAc,EAAE,MAAM,CAAA;IACtB,KAAK,CAAC,EAAE,KAAK,CAAA;CACd,CAAA;AAED,MAAM,MAAM,gBAAgB,GAAG;IAC7B;;OAEG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,KAAK,EAAE,MAAM,CAAA;IACb,GAAG,EAAE,cAAc,CAAA;IACnB,IAAI,CAAC,EAAE,IAAI,CAAA;CACZ,CAAA;AAED,eAAO,MAAM,YAAY,SAAgB,gBAAgB,kCAmMxD,CAAA"}
|
|
@@ -51,9 +51,6 @@ export const createExport = async (args)=>{
|
|
|
51
51
|
findArgs
|
|
52
52
|
});
|
|
53
53
|
}
|
|
54
|
-
let result = {
|
|
55
|
-
hasNextPage: true
|
|
56
|
-
};
|
|
57
54
|
const toCSVFunctions = getCustomFieldFunctions({
|
|
58
55
|
fields: collectionConfig.flattenedFields,
|
|
59
56
|
select
|
|
@@ -63,35 +60,44 @@ export const createExport = async (args)=>{
|
|
|
63
60
|
req.payload.logger.info('Starting download stream');
|
|
64
61
|
}
|
|
65
62
|
const encoder = new TextEncoder();
|
|
63
|
+
let isFirstBatch = true;
|
|
64
|
+
let columns;
|
|
65
|
+
let page = 1;
|
|
66
66
|
const stream = new Readable({
|
|
67
67
|
async read () {
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
68
|
+
const result = await payload.find({
|
|
69
|
+
...findArgs,
|
|
70
|
+
page
|
|
71
|
+
});
|
|
72
|
+
if (debug) {
|
|
73
|
+
req.payload.logger.info(`Processing batch ${page} with ${result.docs.length} documents`);
|
|
74
|
+
}
|
|
75
|
+
if (result.docs.length === 0) {
|
|
76
|
+
this.push(null);
|
|
77
|
+
return;
|
|
78
|
+
}
|
|
79
|
+
const csvInput = result.docs.map((doc)=>flattenObject({
|
|
80
|
+
doc,
|
|
81
|
+
fields,
|
|
82
|
+
toCSVFunctions
|
|
83
|
+
}));
|
|
84
|
+
if (isFirstBatch) {
|
|
85
|
+
columns = Object.keys(csvInput[0] ?? {});
|
|
86
|
+
}
|
|
87
|
+
const csvString = stringify(csvInput, {
|
|
88
|
+
header: isFirstBatch,
|
|
89
|
+
columns
|
|
90
|
+
});
|
|
91
|
+
this.push(encoder.encode(csvString));
|
|
92
|
+
isFirstBatch = false;
|
|
93
|
+
if (!result.hasNextPage) {
|
|
71
94
|
if (debug) {
|
|
72
|
-
req.payload.logger.info(
|
|
73
|
-
}
|
|
74
|
-
const csvInput = result.docs.map((doc)=>flattenObject({
|
|
75
|
-
doc,
|
|
76
|
-
fields,
|
|
77
|
-
toCSVFunctions
|
|
78
|
-
}));
|
|
79
|
-
const csvString = stringify(csvInput, {
|
|
80
|
-
header: isFirstBatch
|
|
81
|
-
});
|
|
82
|
-
this.push(encoder.encode(csvString));
|
|
83
|
-
isFirstBatch = false;
|
|
84
|
-
if (!result.hasNextPage) {
|
|
85
|
-
if (debug) {
|
|
86
|
-
req.payload.logger.info('Stream complete - no more pages');
|
|
87
|
-
}
|
|
88
|
-
this.push(null) // End the stream
|
|
89
|
-
;
|
|
90
|
-
break;
|
|
95
|
+
req.payload.logger.info('Stream complete - no more pages');
|
|
91
96
|
}
|
|
92
|
-
|
|
93
|
-
|
|
97
|
+
this.push(null) // End the stream
|
|
98
|
+
;
|
|
94
99
|
}
|
|
100
|
+
page += 1;
|
|
95
101
|
}
|
|
96
102
|
});
|
|
97
103
|
return new Response(stream, {
|
|
@@ -106,9 +112,13 @@ export const createExport = async (args)=>{
|
|
|
106
112
|
}
|
|
107
113
|
const outputData = [];
|
|
108
114
|
let isFirstBatch = true;
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
115
|
+
let page = 1;
|
|
116
|
+
let hasNextPage = true;
|
|
117
|
+
while(hasNextPage){
|
|
118
|
+
const result = await payload.find({
|
|
119
|
+
...findArgs,
|
|
120
|
+
page
|
|
121
|
+
});
|
|
112
122
|
if (debug) {
|
|
113
123
|
req.payload.logger.info(`Processing batch ${findArgs.page} with ${result.docs.length} documents`);
|
|
114
124
|
}
|
|
@@ -126,6 +136,8 @@ export const createExport = async (args)=>{
|
|
|
126
136
|
const jsonInput = result.docs.map((doc)=>JSON.stringify(doc));
|
|
127
137
|
outputData.push(jsonInput.join(',\n'));
|
|
128
138
|
}
|
|
139
|
+
hasNextPage = result.hasNextPage;
|
|
140
|
+
page += 1;
|
|
129
141
|
}
|
|
130
142
|
const buffer = Buffer.from(format === 'json' ? `[${outputData.join(',')}]` : outputData.join(''));
|
|
131
143
|
if (debug) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/export/createExport.ts"],"sourcesContent":["/* eslint-disable perfectionist/sort-objects */\nimport type { PaginatedDocs, PayloadRequest, Sort, User, Where } from 'payload'\n\nimport { stringify } from 'csv-stringify/sync'\nimport { APIError } from 'payload'\nimport { Readable } from 'stream'\n\nimport { flattenObject } from './flattenObject.js'\nimport { getCustomFieldFunctions } from './getCustomFieldFunctions.js'\nimport { getFilename } from './getFilename.js'\nimport { getSelect } from './getSelect.js'\n\nexport type Export = {\n collectionSlug: string\n /**\n * If true, enables debug logging\n */\n debug?: boolean\n drafts?: 'no' | 'yes'\n exportsCollection: string\n fields?: string[]\n format: 'csv' | 'json'\n globals?: string[]\n id: number | string\n locale?: string\n name: string\n slug: string\n sort: Sort\n user: string\n userCollection: string\n where?: Where\n}\n\nexport type CreateExportArgs = {\n /**\n * If true, stream the file instead of saving it\n */\n download?: boolean\n input: Export\n req: PayloadRequest\n user?: User\n}\n\nexport const createExport = async (args: CreateExportArgs) => {\n const {\n download,\n input: {\n id,\n name: nameArg,\n collectionSlug,\n debug = false,\n drafts,\n exportsCollection,\n fields,\n format,\n locale: localeInput,\n sort,\n user,\n where,\n },\n req: { locale: localeArg, payload },\n req,\n } = args\n\n if (debug) {\n req.payload.logger.info({\n message: 'Starting export process with args:',\n collectionSlug,\n drafts,\n fields,\n format,\n })\n }\n\n const locale = localeInput ?? localeArg\n const collectionConfig = payload.config.collections.find(({ slug }) => slug === collectionSlug)\n if (!collectionConfig) {\n throw new APIError(`Collection with slug ${collectionSlug} not found`)\n }\n\n const name = `${nameArg ?? `${getFilename()}-${collectionSlug}`}.${format}`\n const isCSV = format === 'csv'\n const select = Array.isArray(fields) && fields.length > 0 ? getSelect(fields) : undefined\n\n if (debug) {\n req.payload.logger.info({ message: 'Export configuration:', name, isCSV, locale })\n }\n\n const findArgs = {\n collection: collectionSlug,\n depth: 1,\n draft: drafts === 'yes',\n limit: 100,\n locale,\n overrideAccess: false,\n page: 0,\n select,\n sort,\n user,\n where,\n }\n\n if (debug) {\n req.payload.logger.info({ message: 'Find arguments:', findArgs })\n }\n\n let result: PaginatedDocs = { hasNextPage: true } as PaginatedDocs\n\n const toCSVFunctions = getCustomFieldFunctions({\n fields: collectionConfig.flattenedFields,\n select,\n })\n\n if (download) {\n if (debug) {\n req.payload.logger.info('Starting download stream')\n }\n const encoder = new TextEncoder()\n const stream = new Readable({\n async read() {\n let result = await payload.find(findArgs)\n let isFirstBatch = true\n\n while (result.docs.length > 0) {\n if (debug) {\n req.payload.logger.info(\n `Processing batch ${findArgs.page + 1} with ${result.docs.length} documents`,\n )\n }\n const csvInput = result.docs.map((doc) => flattenObject({ doc, fields, toCSVFunctions }))\n const csvString = stringify(csvInput, { header: isFirstBatch })\n this.push(encoder.encode(csvString))\n isFirstBatch = false\n\n if (!result.hasNextPage) {\n if (debug) {\n req.payload.logger.info('Stream complete - no more pages')\n }\n this.push(null) // End the stream\n break\n }\n\n findArgs.page += 1\n result = await payload.find(findArgs)\n }\n },\n })\n\n return new Response(stream as any, {\n headers: {\n 'Content-Disposition': `attachment; filename=\"${name}\"`,\n 'Content-Type': isCSV ? 'text/csv' : 'application/json',\n },\n })\n }\n\n if (debug) {\n req.payload.logger.info('Starting file generation')\n }\n const outputData: string[] = []\n let isFirstBatch = true\n\n while (result.hasNextPage) {\n findArgs.page += 1\n result = await payload.find(findArgs)\n\n if (debug) {\n req.payload.logger.info(\n `Processing batch ${findArgs.page} with ${result.docs.length} documents`,\n )\n }\n\n if (isCSV) {\n const csvInput = result.docs.map((doc) => flattenObject({ doc, fields, toCSVFunctions }))\n outputData.push(stringify(csvInput, { header: isFirstBatch }))\n isFirstBatch = false\n } else {\n const jsonInput = result.docs.map((doc) => JSON.stringify(doc))\n outputData.push(jsonInput.join(',\\n'))\n }\n }\n\n const buffer = Buffer.from(format === 'json' ? `[${outputData.join(',')}]` : outputData.join(''))\n if (debug) {\n req.payload.logger.info(`${format} file generation complete`)\n }\n\n if (!id) {\n if (debug) {\n req.payload.logger.info('Creating new export file')\n }\n req.file = {\n name,\n data: buffer,\n mimetype: isCSV ? 'text/csv' : 'application/json',\n size: buffer.length,\n }\n } else {\n if (debug) {\n req.payload.logger.info(`Updating existing export with id: ${id}`)\n }\n await req.payload.update({\n id,\n collection: exportsCollection,\n data: {},\n file: {\n name,\n data: buffer,\n mimetype: isCSV ? 'text/csv' : 'application/json',\n size: buffer.length,\n },\n user,\n })\n }\n if (debug) {\n req.payload.logger.info('Export process completed successfully')\n }\n}\n"],"names":["stringify","APIError","Readable","flattenObject","getCustomFieldFunctions","getFilename","getSelect","createExport","args","download","input","id","name","nameArg","collectionSlug","debug","drafts","exportsCollection","fields","format","locale","localeInput","sort","user","where","req","localeArg","payload","logger","info","message","collectionConfig","config","collections","find","slug","isCSV","select","Array","isArray","length","undefined","findArgs","collection","depth","draft","limit","overrideAccess","page","result","hasNextPage","toCSVFunctions","flattenedFields","encoder","TextEncoder","stream","read","isFirstBatch","docs","csvInput","map","doc","csvString","header","push","encode","Response","headers","outputData","jsonInput","JSON","join","buffer","Buffer","from","file","data","mimetype","size","update"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../src/export/createExport.ts"],"sourcesContent":["/* eslint-disable perfectionist/sort-objects */\nimport type { PayloadRequest, Sort, User, Where } from 'payload'\n\nimport { stringify } from 'csv-stringify/sync'\nimport { APIError } from 'payload'\nimport { Readable } from 'stream'\n\nimport { flattenObject } from './flattenObject.js'\nimport { getCustomFieldFunctions } from './getCustomFieldFunctions.js'\nimport { getFilename } from './getFilename.js'\nimport { getSelect } from './getSelect.js'\n\nexport type Export = {\n collectionSlug: string\n /**\n * If true, enables debug logging\n */\n debug?: boolean\n drafts?: 'no' | 'yes'\n exportsCollection: string\n fields?: string[]\n format: 'csv' | 'json'\n globals?: string[]\n id: number | string\n locale?: string\n name: string\n slug: string\n sort: Sort\n user: string\n userCollection: string\n where?: Where\n}\n\nexport type CreateExportArgs = {\n /**\n * If true, stream the file instead of saving it\n */\n download?: boolean\n input: Export\n req: PayloadRequest\n user?: User\n}\n\nexport const createExport = async (args: CreateExportArgs) => {\n const {\n download,\n input: {\n id,\n name: nameArg,\n collectionSlug,\n debug = false,\n drafts,\n exportsCollection,\n fields,\n format,\n locale: localeInput,\n sort,\n user,\n where,\n },\n req: { locale: localeArg, payload },\n req,\n } = args\n\n if (debug) {\n req.payload.logger.info({\n message: 'Starting export process with args:',\n collectionSlug,\n drafts,\n fields,\n format,\n })\n }\n\n const locale = localeInput ?? localeArg\n const collectionConfig = payload.config.collections.find(({ slug }) => slug === collectionSlug)\n if (!collectionConfig) {\n throw new APIError(`Collection with slug ${collectionSlug} not found`)\n }\n\n const name = `${nameArg ?? `${getFilename()}-${collectionSlug}`}.${format}`\n const isCSV = format === 'csv'\n const select = Array.isArray(fields) && fields.length > 0 ? getSelect(fields) : undefined\n\n if (debug) {\n req.payload.logger.info({ message: 'Export configuration:', name, isCSV, locale })\n }\n\n const findArgs = {\n collection: collectionSlug,\n depth: 1,\n draft: drafts === 'yes',\n limit: 100,\n locale,\n overrideAccess: false,\n page: 0,\n select,\n sort,\n user,\n where,\n }\n\n if (debug) {\n req.payload.logger.info({ message: 'Find arguments:', findArgs })\n }\n\n const toCSVFunctions = getCustomFieldFunctions({\n fields: collectionConfig.flattenedFields,\n select,\n })\n\n if (download) {\n if (debug) {\n req.payload.logger.info('Starting download stream')\n }\n\n const encoder = new TextEncoder()\n let isFirstBatch = true\n let columns: string[] | undefined\n let page = 1\n\n const stream = new Readable({\n async read() {\n const result = await payload.find({\n ...findArgs,\n page,\n })\n\n if (debug) {\n req.payload.logger.info(`Processing batch ${page} with ${result.docs.length} documents`)\n }\n\n if (result.docs.length === 0) {\n this.push(null)\n return\n }\n\n const csvInput = result.docs.map((doc) => flattenObject({ doc, fields, toCSVFunctions }))\n\n if (isFirstBatch) {\n columns = Object.keys(csvInput[0] ?? {})\n }\n\n const csvString = stringify(csvInput, {\n header: isFirstBatch,\n columns,\n })\n\n this.push(encoder.encode(csvString))\n isFirstBatch = false\n\n if (!result.hasNextPage) {\n if (debug) {\n req.payload.logger.info('Stream complete - no more pages')\n }\n this.push(null) // End the stream\n }\n\n page += 1\n },\n })\n\n return new Response(stream as any, {\n headers: {\n 'Content-Disposition': `attachment; filename=\"${name}\"`,\n 'Content-Type': isCSV ? 'text/csv' : 'application/json',\n },\n })\n }\n\n if (debug) {\n req.payload.logger.info('Starting file generation')\n }\n const outputData: string[] = []\n let isFirstBatch = true\n let page = 1\n let hasNextPage = true\n\n while (hasNextPage) {\n const result = await payload.find({\n ...findArgs,\n page,\n })\n\n if (debug) {\n req.payload.logger.info(\n `Processing batch ${findArgs.page} with ${result.docs.length} documents`,\n )\n }\n\n if (isCSV) {\n const csvInput = result.docs.map((doc) => flattenObject({ doc, fields, toCSVFunctions }))\n outputData.push(stringify(csvInput, { header: isFirstBatch }))\n isFirstBatch = false\n } else {\n const jsonInput = result.docs.map((doc) => JSON.stringify(doc))\n outputData.push(jsonInput.join(',\\n'))\n }\n\n hasNextPage = result.hasNextPage\n page += 1\n }\n\n const buffer = Buffer.from(format === 'json' ? `[${outputData.join(',')}]` : outputData.join(''))\n if (debug) {\n req.payload.logger.info(`${format} file generation complete`)\n }\n\n if (!id) {\n if (debug) {\n req.payload.logger.info('Creating new export file')\n }\n req.file = {\n name,\n data: buffer,\n mimetype: isCSV ? 'text/csv' : 'application/json',\n size: buffer.length,\n }\n } else {\n if (debug) {\n req.payload.logger.info(`Updating existing export with id: ${id}`)\n }\n await req.payload.update({\n id,\n collection: exportsCollection,\n data: {},\n file: {\n name,\n data: buffer,\n mimetype: isCSV ? 'text/csv' : 'application/json',\n size: buffer.length,\n },\n user,\n })\n }\n if (debug) {\n req.payload.logger.info('Export process completed successfully')\n }\n}\n"],"names":["stringify","APIError","Readable","flattenObject","getCustomFieldFunctions","getFilename","getSelect","createExport","args","download","input","id","name","nameArg","collectionSlug","debug","drafts","exportsCollection","fields","format","locale","localeInput","sort","user","where","req","localeArg","payload","logger","info","message","collectionConfig","config","collections","find","slug","isCSV","select","Array","isArray","length","undefined","findArgs","collection","depth","draft","limit","overrideAccess","page","toCSVFunctions","flattenedFields","encoder","TextEncoder","isFirstBatch","columns","stream","read","result","docs","push","csvInput","map","doc","Object","keys","csvString","header","encode","hasNextPage","Response","headers","outputData","jsonInput","JSON","join","buffer","Buffer","from","file","data","mimetype","size","update"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@payloadcms/plugin-import-export",
|
|
3
|
-
"version": "3.44.0-
|
|
3
|
+
"version": "3.44.0-internal.6b79dc2",
|
|
4
4
|
"description": "Import-Export plugin for Payload",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"payload",
|
|
@@ -64,17 +64,17 @@
|
|
|
64
64
|
"csv-parse": "^5.6.0",
|
|
65
65
|
"csv-stringify": "^6.5.2",
|
|
66
66
|
"qs-esm": "7.0.2",
|
|
67
|
-
"@payloadcms/translations": "3.44.0-
|
|
68
|
-
"@payloadcms/ui": "3.44.0-
|
|
67
|
+
"@payloadcms/translations": "3.44.0-internal.6b79dc2",
|
|
68
|
+
"@payloadcms/ui": "3.44.0-internal.6b79dc2"
|
|
69
69
|
},
|
|
70
70
|
"devDependencies": {
|
|
71
|
+
"@payloadcms/ui": "3.44.0-internal.6b79dc2",
|
|
71
72
|
"@payloadcms/eslint-config": "3.28.0",
|
|
72
|
-
"
|
|
73
|
-
"payload": "3.44.0-canary.9"
|
|
73
|
+
"payload": "3.44.0-internal.6b79dc2"
|
|
74
74
|
},
|
|
75
75
|
"peerDependencies": {
|
|
76
|
-
"@payloadcms/ui": "3.44.0-
|
|
77
|
-
"payload": "3.44.0-
|
|
76
|
+
"@payloadcms/ui": "3.44.0-internal.6b79dc2",
|
|
77
|
+
"payload": "3.44.0-internal.6b79dc2"
|
|
78
78
|
},
|
|
79
79
|
"homepage:": "https://payloadcms.com",
|
|
80
80
|
"scripts": {
|