@payloadcms/plugin-import-export 4.0.0-canary.36 → 4.0.0-canary.37

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":"getExportCollection.d.ts","sourceRoot":"","sources":["../../src/export/getExportCollection.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAGV,gBAAgB,EAChB,MAAM,EACP,MAAM,SAAS,CAAA;AAEhB,OAAO,KAAK,EAAE,YAAY,EAAE,wBAAwB,EAAS,MAAM,aAAa,CAAA;AAWhF,eAAO,MAAM,mBAAmB,6DAK7B;IACD;;OAEG;IACH,eAAe,EAAE,MAAM,EAAE,CAAA;IACzB,MAAM,EAAE,MAAM,CAAA;IACd,YAAY,CAAC,EAAE,YAAY,CAAA;IAC3B,YAAY,EAAE,wBAAwB,CAAA;CACvC,KAAG,gBA8JH,CAAA"}
1
+ {"version":3,"file":"getExportCollection.d.ts","sourceRoot":"","sources":["../../src/export/getExportCollection.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAGV,gBAAgB,EAChB,MAAM,EACP,MAAM,SAAS,CAAA;AAEhB,OAAO,KAAK,EAAE,YAAY,EAAE,wBAAwB,EAAS,MAAM,aAAa,CAAA;AAWhF,eAAO,MAAM,mBAAmB,6DAK7B;IACD;;OAEG;IACH,eAAe,EAAE,MAAM,EAAE,CAAA;IACzB,MAAM,EAAE,MAAM,CAAA;IACd,YAAY,CAAC,EAAE,YAAY,CAAA;IAC3B,YAAY,EAAE,wBAAwB,CAAA;CACvC,KAAG,gBA+JH,CAAA"}
@@ -135,6 +135,7 @@ export const getExportCollection = ({ collectionSlugs, config, exportConfig, plu
135
135
  };
136
136
  await req.payload.jobs.queue({
137
137
  input,
138
+ overrideAccess: true,
138
139
  task: 'createCollectionExport'
139
140
  });
140
141
  });
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/export/getExportCollection.ts"],"sourcesContent":["import type {\n CollectionAfterChangeHook,\n CollectionBeforeOperationHook,\n CollectionConfig,\n Config,\n} from 'payload'\n\nimport type { ExportConfig, ImportExportPluginConfig, Limit } from '../types.js'\nimport type { Export } from './createExport.js'\n\nimport { resolveLimit } from '../utilities/resolveLimit.js'\nimport { createExport } from './createExport.js'\nimport { getFields } from './getFields.js'\nimport { handleDownload } from './handleDownload.js'\nimport { handlePreview } from './handlePreview.js'\n\nconst FALLBACK_BATCH_SIZE = 100\n\nexport const getExportCollection = ({\n collectionSlugs,\n config,\n exportConfig,\n pluginConfig,\n}: {\n /**\n * Collection slugs that this export collection supports.\n */\n collectionSlugs: string[]\n config: Config\n exportConfig?: ExportConfig\n pluginConfig: ImportExportPluginConfig\n}): CollectionConfig => {\n const beforeOperation: CollectionBeforeOperationHook[] = []\n const afterChange: CollectionAfterChangeHook[] = []\n\n const disableDownload = exportConfig?.disableDownload ?? false\n const disableSave = exportConfig?.disableSave ?? false\n const format = exportConfig?.format\n\n const collection: CollectionConfig = {\n slug: 'exports',\n access: {\n update: () => false,\n },\n admin: {\n components: {\n edit: {\n SaveButton: '@payloadcms/plugin-import-export/rsc#ExportSaveButton',\n },\n },\n custom: {\n disableDownload,\n disableSave,\n format,\n 'plugin-import-export': {\n collectionSlugs,\n },\n },\n disableCopyToLocale: true,\n group: false,\n useAsTitle: 'name',\n },\n disableDuplicate: true,\n endpoints: [\n {\n handler: (req) => handleDownload(req, pluginConfig.debug),\n method: 'post',\n path: '/download',\n },\n {\n handler: handlePreview,\n method: 'post',\n path: '/export-preview',\n },\n ],\n fields: getFields({ collectionSlugs, config, format }),\n hooks: {\n afterChange,\n beforeOperation,\n },\n lockDocuments: false,\n upload: {\n filesRequiredOnCreate: false,\n hideFileInputOnCreate: true,\n hideRemoveFile: true,\n },\n }\n\n // Synchronous export hook - runs when target collection has disableJobsQueue enabled\n beforeOperation.push(async ({ args, collection: collectionConfig, operation, req }) => {\n if (operation !== 'create') {\n return\n }\n\n const exportData = args.data as Export\n const targetCollection = req.payload.collections[exportData.collectionSlug]\n const targetPluginConfig = targetCollection?.config.custom?.['plugin-import-export']\n\n // Check if this target collection should use sync mode\n // Fall back to exportConfig (for custom collections with overrideCollection)\n const disableJobsQueue =\n targetPluginConfig?.exportDisableJobsQueue ?? exportConfig?.disableJobsQueue ?? false\n if (!disableJobsQueue) {\n return\n }\n\n const { user } = req\n const debug = pluginConfig.debug\n\n const exportLimitConfig: Limit | undefined = targetPluginConfig?.exportLimit\n const maxLimit = await resolveLimit({\n limit: exportLimitConfig,\n req,\n })\n\n const batchSize =\n targetPluginConfig?.exportBatchSize ??\n exportConfig?.batchSize ??\n pluginConfig.batchSize ??\n FALLBACK_BATCH_SIZE\n\n await createExport({\n ...exportData,\n batchSize,\n debug,\n exportCollection: collectionConfig.slug,\n maxLimit,\n req,\n userCollection: user?.collection,\n userID: user?.id,\n })\n })\n\n afterChange.push(async ({ collection: collectionConfig, doc, operation, req }) => {\n if (operation !== 'create') {\n return\n }\n\n const targetCollection = req.payload.collections[doc.collectionSlug]\n const targetPluginConfig = targetCollection?.config.custom?.['plugin-import-export']\n const disableJobsQueue =\n targetPluginConfig?.exportDisableJobsQueue ?? exportConfig?.disableJobsQueue ?? false\n if (disableJobsQueue) {\n return\n }\n\n const { user } = req\n\n // Get max limit from the target collection's config\n // For job-based exports, we resolve the limit now since function limits\n // cannot be serialized. This means dynamic limits are resolved at queue time.\n const exportLimitConfig: Limit | undefined = targetPluginConfig?.exportLimit\n const maxLimit = await resolveLimit({\n limit: exportLimitConfig,\n req,\n })\n\n const batchSize =\n targetPluginConfig?.exportBatchSize ??\n exportConfig?.batchSize ??\n pluginConfig.batchSize ??\n FALLBACK_BATCH_SIZE\n\n const input: Export = {\n id: doc.id,\n name: doc.name,\n batchSize,\n collectionSlug: doc.collectionSlug,\n drafts: doc.drafts,\n exportCollection: collectionConfig.slug,\n fields: doc.fields,\n format: doc.format,\n limit: doc.limit,\n locale: doc.locale,\n maxLimit,\n page: doc.page,\n sort: doc.sort,\n userCollection: user?.collection,\n userID: user?.id,\n where: doc.where,\n }\n\n await req.payload.jobs.queue({\n input,\n task: 'createCollectionExport',\n })\n })\n\n return collection\n}\n"],"names":["resolveLimit","createExport","getFields","handleDownload","handlePreview","FALLBACK_BATCH_SIZE","getExportCollection","collectionSlugs","config","exportConfig","pluginConfig","beforeOperation","afterChange","disableDownload","disableSave","format","collection","slug","access","update","admin","components","edit","SaveButton","custom","disableCopyToLocale","group","useAsTitle","disableDuplicate","endpoints","handler","req","debug","method","path","fields","hooks","lockDocuments","upload","filesRequiredOnCreate","hideFileInputOnCreate","hideRemoveFile","push","args","collectionConfig","operation","exportData","data","targetCollection","payload","collections","collectionSlug","targetPluginConfig","disableJobsQueue","exportDisableJobsQueue","user","exportLimitConfig","exportLimit","maxLimit","limit","batchSize","exportBatchSize","exportCollection","userCollection","userID","id","doc","input","name","drafts","locale","page","sort","where","jobs","queue","task"],"mappings":"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"}
1
+ {"version":3,"sources":["../../src/export/getExportCollection.ts"],"sourcesContent":["import type {\n CollectionAfterChangeHook,\n CollectionBeforeOperationHook,\n CollectionConfig,\n Config,\n} from 'payload'\n\nimport type { ExportConfig, ImportExportPluginConfig, Limit } from '../types.js'\nimport type { Export } from './createExport.js'\n\nimport { resolveLimit } from '../utilities/resolveLimit.js'\nimport { createExport } from './createExport.js'\nimport { getFields } from './getFields.js'\nimport { handleDownload } from './handleDownload.js'\nimport { handlePreview } from './handlePreview.js'\n\nconst FALLBACK_BATCH_SIZE = 100\n\nexport const getExportCollection = ({\n collectionSlugs,\n config,\n exportConfig,\n pluginConfig,\n}: {\n /**\n * Collection slugs that this export collection supports.\n */\n collectionSlugs: string[]\n config: Config\n exportConfig?: ExportConfig\n pluginConfig: ImportExportPluginConfig\n}): CollectionConfig => {\n const beforeOperation: CollectionBeforeOperationHook[] = []\n const afterChange: CollectionAfterChangeHook[] = []\n\n const disableDownload = exportConfig?.disableDownload ?? false\n const disableSave = exportConfig?.disableSave ?? false\n const format = exportConfig?.format\n\n const collection: CollectionConfig = {\n slug: 'exports',\n access: {\n update: () => false,\n },\n admin: {\n components: {\n edit: {\n SaveButton: '@payloadcms/plugin-import-export/rsc#ExportSaveButton',\n },\n },\n custom: {\n disableDownload,\n disableSave,\n format,\n 'plugin-import-export': {\n collectionSlugs,\n },\n },\n disableCopyToLocale: true,\n group: false,\n useAsTitle: 'name',\n },\n disableDuplicate: true,\n endpoints: [\n {\n handler: (req) => handleDownload(req, pluginConfig.debug),\n method: 'post',\n path: '/download',\n },\n {\n handler: handlePreview,\n method: 'post',\n path: '/export-preview',\n },\n ],\n fields: getFields({ collectionSlugs, config, format }),\n hooks: {\n afterChange,\n beforeOperation,\n },\n lockDocuments: false,\n upload: {\n filesRequiredOnCreate: false,\n hideFileInputOnCreate: true,\n hideRemoveFile: true,\n },\n }\n\n // Synchronous export hook - runs when target collection has disableJobsQueue enabled\n beforeOperation.push(async ({ args, collection: collectionConfig, operation, req }) => {\n if (operation !== 'create') {\n return\n }\n\n const exportData = args.data as Export\n const targetCollection = req.payload.collections[exportData.collectionSlug]\n const targetPluginConfig = targetCollection?.config.custom?.['plugin-import-export']\n\n // Check if this target collection should use sync mode\n // Fall back to exportConfig (for custom collections with overrideCollection)\n const disableJobsQueue =\n targetPluginConfig?.exportDisableJobsQueue ?? exportConfig?.disableJobsQueue ?? false\n if (!disableJobsQueue) {\n return\n }\n\n const { user } = req\n const debug = pluginConfig.debug\n\n const exportLimitConfig: Limit | undefined = targetPluginConfig?.exportLimit\n const maxLimit = await resolveLimit({\n limit: exportLimitConfig,\n req,\n })\n\n const batchSize =\n targetPluginConfig?.exportBatchSize ??\n exportConfig?.batchSize ??\n pluginConfig.batchSize ??\n FALLBACK_BATCH_SIZE\n\n await createExport({\n ...exportData,\n batchSize,\n debug,\n exportCollection: collectionConfig.slug,\n maxLimit,\n req,\n userCollection: user?.collection,\n userID: user?.id,\n })\n })\n\n afterChange.push(async ({ collection: collectionConfig, doc, operation, req }) => {\n if (operation !== 'create') {\n return\n }\n\n const targetCollection = req.payload.collections[doc.collectionSlug]\n const targetPluginConfig = targetCollection?.config.custom?.['plugin-import-export']\n const disableJobsQueue =\n targetPluginConfig?.exportDisableJobsQueue ?? exportConfig?.disableJobsQueue ?? false\n if (disableJobsQueue) {\n return\n }\n\n const { user } = req\n\n // Get max limit from the target collection's config\n // For job-based exports, we resolve the limit now since function limits\n // cannot be serialized. This means dynamic limits are resolved at queue time.\n const exportLimitConfig: Limit | undefined = targetPluginConfig?.exportLimit\n const maxLimit = await resolveLimit({\n limit: exportLimitConfig,\n req,\n })\n\n const batchSize =\n targetPluginConfig?.exportBatchSize ??\n exportConfig?.batchSize ??\n pluginConfig.batchSize ??\n FALLBACK_BATCH_SIZE\n\n const input: Export = {\n id: doc.id,\n name: doc.name,\n batchSize,\n collectionSlug: doc.collectionSlug,\n drafts: doc.drafts,\n exportCollection: collectionConfig.slug,\n fields: doc.fields,\n format: doc.format,\n limit: doc.limit,\n locale: doc.locale,\n maxLimit,\n page: doc.page,\n sort: doc.sort,\n userCollection: user?.collection,\n userID: user?.id,\n where: doc.where,\n }\n\n await req.payload.jobs.queue({\n input,\n overrideAccess: true,\n task: 'createCollectionExport',\n })\n })\n\n return collection\n}\n"],"names":["resolveLimit","createExport","getFields","handleDownload","handlePreview","FALLBACK_BATCH_SIZE","getExportCollection","collectionSlugs","config","exportConfig","pluginConfig","beforeOperation","afterChange","disableDownload","disableSave","format","collection","slug","access","update","admin","components","edit","SaveButton","custom","disableCopyToLocale","group","useAsTitle","disableDuplicate","endpoints","handler","req","debug","method","path","fields","hooks","lockDocuments","upload","filesRequiredOnCreate","hideFileInputOnCreate","hideRemoveFile","push","args","collectionConfig","operation","exportData","data","targetCollection","payload","collections","collectionSlug","targetPluginConfig","disableJobsQueue","exportDisableJobsQueue","user","exportLimitConfig","exportLimit","maxLimit","limit","batchSize","exportBatchSize","exportCollection","userCollection","userID","id","doc","input","name","drafts","locale","page","sort","where","jobs","queue","overrideAccess","task"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"createImport.d.ts","sourceRoot":"","sources":["../../src/import/createImport.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAQ,MAAM,SAAS,CAAA;AAInD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAU/C,MAAM,MAAM,UAAU,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAA;AAEvD,MAAM,MAAM,MAAM,GAAG;IACnB;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,cAAc,EAAE,MAAM,CAAA;IACtB;;OAEG;IACH,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,IAAI,CAAC,EAAE;QACL,IAAI,EAAE,MAAM,CAAA;QACZ,QAAQ,EAAE,MAAM,CAAA;QAChB,IAAI,EAAE,MAAM,CAAA;KACb,CAAA;IACD,MAAM,EAAE,KAAK,GAAG,MAAM,CAAA;IACtB,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IACpB;;OAEG;IACH,UAAU,EAAE,UAAU,CAAA;IACtB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,IAAI,EAAE,MAAM,CAAA;IACZ,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;CACzB,CAAA;AAED,MAAM,MAAM,gBAAgB,GAAG;IAC7B,oBAAoB,CAAC,EAAE,OAAO,GAAG,WAAW,CAAA;IAC5C,GAAG,EAAE,cAAc,CAAA;CACpB,GAAG,MAAM,CAAA;AAEV,eAAO,MAAM,YAAY,6IAatB,gBAAgB,KAAG,OAAO,CAAC,YAAY,CAuLzC,CAAA"}
1
+ {"version":3,"file":"createImport.d.ts","sourceRoot":"","sources":["../../src/import/createImport.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAQ,MAAM,SAAS,CAAA;AAInD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAU/C,MAAM,MAAM,UAAU,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAA;AAEvD,MAAM,MAAM,MAAM,GAAG;IACnB;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,cAAc,EAAE,MAAM,CAAA;IACtB;;OAEG;IACH,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,IAAI,CAAC,EAAE;QACL,IAAI,EAAE,MAAM,CAAA;QACZ,QAAQ,EAAE,MAAM,CAAA;QAChB,IAAI,EAAE,MAAM,CAAA;KACb,CAAA;IACD,MAAM,EAAE,KAAK,GAAG,MAAM,CAAA;IACtB,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IACpB;;OAEG;IACH,UAAU,EAAE,UAAU,CAAA;IACtB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,IAAI,EAAE,MAAM,CAAA;IACZ,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;CACzB,CAAA;AAED,MAAM,MAAM,gBAAgB,GAAG;IAC7B,oBAAoB,CAAC,EAAE,OAAO,GAAG,WAAW,CAAA;IAC5C,GAAG,EAAE,cAAc,CAAA;CACpB,GAAG,MAAM,CAAA;AAEV,eAAO,MAAM,YAAY,6IAatB,gBAAgB,KAAG,OAAO,CAAC,YAAY,CAwLzC,CAAA"}
@@ -12,6 +12,7 @@ export const createImport = async ({ batchSize = 100, collectionSlug, debug = fa
12
12
  user = await req.payload.findByID({
13
13
  id: userID,
14
14
  collection: userCollection,
15
+ overrideAccess: true,
15
16
  req
16
17
  });
17
18
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/import/createImport.ts"],"sourcesContent":["import type { PayloadRequest, User } from 'payload'\n\nimport { APIError } from 'payload'\n\nimport type { ImportResult } from '../types.js'\n\nimport { applyFieldHooks } from '../utilities/applyFieldHooks.js'\nimport { getImportFieldFunctions } from '../utilities/getImportFieldFunctions.js'\nimport { parseCSV } from '../utilities/parseCSV.js'\nimport { parseJSON } from '../utilities/parseJSON.js'\nimport { removeDisabledFields } from '../utilities/removeDisabledFields.js'\nimport { unflattenObject } from '../utilities/unflattenObject.js'\nimport { createImportBatchProcessor } from './batchProcessor.js'\n\nexport type ImportMode = 'create' | 'update' | 'upsert'\n\nexport type Import = {\n /**\n * Number of documents to process in each batch during import\n * @default 100\n */\n batchSize?: number\n collectionSlug: string\n /**\n * If true, enabled debug logging\n */\n debug?: boolean\n file?: {\n data: Buffer\n mimetype: string\n name: string\n }\n format: 'csv' | 'json'\n id?: number | string\n /**\n * Import mode: create, update or upset\n */\n importMode: ImportMode\n matchField?: string\n /**\n * Maximum number of documents that can be imported in a single operation.\n * This value has already been resolved from the plugin config.\n */\n maxLimit?: number\n name: string\n userCollection?: string\n userID?: number | string\n}\n\nexport type CreateImportArgs = {\n defaultVersionStatus?: 'draft' | 'published'\n req: PayloadRequest\n} & Import\n\nexport const createImport = async ({\n batchSize = 100,\n collectionSlug,\n debug = false,\n defaultVersionStatus = 'published',\n file,\n format,\n importMode = 'create',\n matchField = 'id',\n maxLimit,\n req,\n userCollection,\n userID,\n}: CreateImportArgs): Promise<ImportResult> => {\n let user: undefined | User\n\n if (userCollection && userID) {\n user = (await req.payload.findByID({\n id: userID,\n collection: userCollection,\n req,\n })) as User\n }\n\n if (!user) {\n throw new APIError('User is required for import operations', 401, null, true)\n }\n\n if (debug) {\n req.payload.logger.debug({\n collectionSlug,\n format,\n importMode,\n matchField,\n msg: 'Starting import process with args:',\n transactionID: req.transactionID, // Log transaction ID to verify we're in same transaction\n })\n }\n\n if (!collectionSlug) {\n throw new APIError('Collection slug is required', 400, null, true)\n }\n\n if (!file || !file?.data) {\n throw new APIError('No file data provided for import', 400, null, true)\n }\n\n if (debug) {\n req.payload.logger.debug({\n fileName: file.name,\n fileSize: file.data.length,\n mimeType: file.mimetype,\n msg: 'File info',\n })\n }\n\n const collectionConfig = req.payload.config.collections.find(\n ({ slug }) => slug === collectionSlug,\n )\n\n if (!collectionConfig) {\n if (!collectionSlug) {\n throw new APIError('Collection slug is required', 400, null, true)\n }\n throw new APIError(`Collection with slug ${collectionSlug} not found`, 400, null, true)\n }\n\n // Get disabled fields configuration\n const disabledFields =\n collectionConfig.admin?.custom?.['plugin-import-export']?.disabledFields ?? []\n\n const importHooks = collectionConfig.custom?.['plugin-import-export']?.importHooks\n\n // Get beforeImport functions for field transformations\n const importFieldHooks = getImportFieldFunctions({\n fields: collectionConfig.flattenedFields || [],\n })\n\n // Parse the file data\n let originalDocs: Record<string, unknown>[] | undefined\n let documents: Record<string, unknown>[]\n if (format === 'csv') {\n const rawData = await parseCSV({\n data: file.data,\n req,\n })\n\n originalDocs = rawData\n documents = rawData\n\n // Unflatten CSV data\n documents = documents\n .map((doc) => {\n const unflattened = unflattenObject({\n data: doc,\n fields: collectionConfig.flattenedFields ?? [],\n format,\n importFieldHooks,\n req,\n })\n return unflattened ?? {}\n })\n .filter((doc) => doc && Object.keys(doc).length > 0)\n\n if (debug) {\n req.payload.logger.debug({\n documentCount: documents.length,\n msg: 'After unflattening CSV',\n rawDataCount: rawData.length,\n })\n }\n } else {\n const parsedDocs = parseJSON({ data: file.data, req })\n originalDocs = parsedDocs\n // Apply field-level import hooks for JSON format\n documents = parsedDocs.map((doc) =>\n applyFieldHooks({\n type: 'beforeImport',\n data: doc,\n fieldHooks: importFieldHooks,\n fields: collectionConfig.flattenedFields ?? [],\n format,\n operation: 'import',\n req,\n }),\n )\n }\n\n if (debug) {\n req.payload.logger.debug({\n msg: `Parsed ${documents.length} documents from ${format} file`,\n })\n if (documents.length > 0) {\n req.payload.logger.debug({\n doc: documents[0],\n msg: 'First document sample:',\n })\n }\n }\n\n // Enforce maxLimit before processing to save memory/time\n if (typeof maxLimit === 'number' && maxLimit > 0 && documents.length > maxLimit) {\n throw new APIError(\n `Import file contains ${documents.length} documents but limit is ${maxLimit}`,\n 400,\n null,\n true,\n )\n }\n\n // Remove disabled fields from all documents\n if (disabledFields.length > 0) {\n documents = documents.map((doc) => removeDisabledFields(doc, disabledFields))\n }\n\n if (debug) {\n req.payload.logger.debug({\n batchSize,\n documentCount: documents.length,\n msg: 'Processing import in batches',\n })\n }\n\n // Create batch processor\n const processor = createImportBatchProcessor({\n batchSize,\n defaultVersionStatus,\n })\n\n const totalBatches = documents.length > 0 ? Math.ceil(documents.length / batchSize) : 1\n\n // Process import with batch processor\n const result = await processor.processImport({\n collectionSlug,\n docs: documents,\n format,\n hooks: importHooks,\n importMode,\n matchField,\n originalDocs,\n req,\n totalBatches,\n user,\n })\n\n if (debug) {\n req.payload.logger.info({\n errors: result.errors.length,\n imported: result.imported,\n msg: 'Import completed',\n total: result.total,\n updated: result.updated,\n })\n }\n\n return result\n}\n"],"names":["APIError","applyFieldHooks","getImportFieldFunctions","parseCSV","parseJSON","removeDisabledFields","unflattenObject","createImportBatchProcessor","createImport","batchSize","collectionSlug","debug","defaultVersionStatus","file","format","importMode","matchField","maxLimit","req","userCollection","userID","user","payload","findByID","id","collection","logger","msg","transactionID","data","fileName","name","fileSize","length","mimeType","mimetype","collectionConfig","config","collections","find","slug","disabledFields","admin","custom","importHooks","importFieldHooks","fields","flattenedFields","originalDocs","documents","rawData","map","doc","unflattened","filter","Object","keys","documentCount","rawDataCount","parsedDocs","type","fieldHooks","operation","processor","totalBatches","Math","ceil","result","processImport","docs","hooks","info","errors","imported","total","updated"],"mappings":"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"}
1
+ {"version":3,"sources":["../../src/import/createImport.ts"],"sourcesContent":["import type { PayloadRequest, User } from 'payload'\n\nimport { APIError } from 'payload'\n\nimport type { ImportResult } from '../types.js'\n\nimport { applyFieldHooks } from '../utilities/applyFieldHooks.js'\nimport { getImportFieldFunctions } from '../utilities/getImportFieldFunctions.js'\nimport { parseCSV } from '../utilities/parseCSV.js'\nimport { parseJSON } from '../utilities/parseJSON.js'\nimport { removeDisabledFields } from '../utilities/removeDisabledFields.js'\nimport { unflattenObject } from '../utilities/unflattenObject.js'\nimport { createImportBatchProcessor } from './batchProcessor.js'\n\nexport type ImportMode = 'create' | 'update' | 'upsert'\n\nexport type Import = {\n /**\n * Number of documents to process in each batch during import\n * @default 100\n */\n batchSize?: number\n collectionSlug: string\n /**\n * If true, enabled debug logging\n */\n debug?: boolean\n file?: {\n data: Buffer\n mimetype: string\n name: string\n }\n format: 'csv' | 'json'\n id?: number | string\n /**\n * Import mode: create, update or upset\n */\n importMode: ImportMode\n matchField?: string\n /**\n * Maximum number of documents that can be imported in a single operation.\n * This value has already been resolved from the plugin config.\n */\n maxLimit?: number\n name: string\n userCollection?: string\n userID?: number | string\n}\n\nexport type CreateImportArgs = {\n defaultVersionStatus?: 'draft' | 'published'\n req: PayloadRequest\n} & Import\n\nexport const createImport = async ({\n batchSize = 100,\n collectionSlug,\n debug = false,\n defaultVersionStatus = 'published',\n file,\n format,\n importMode = 'create',\n matchField = 'id',\n maxLimit,\n req,\n userCollection,\n userID,\n}: CreateImportArgs): Promise<ImportResult> => {\n let user: undefined | User\n\n if (userCollection && userID) {\n user = (await req.payload.findByID({\n id: userID,\n collection: userCollection,\n overrideAccess: true,\n req,\n })) as User\n }\n\n if (!user) {\n throw new APIError('User is required for import operations', 401, null, true)\n }\n\n if (debug) {\n req.payload.logger.debug({\n collectionSlug,\n format,\n importMode,\n matchField,\n msg: 'Starting import process with args:',\n transactionID: req.transactionID, // Log transaction ID to verify we're in same transaction\n })\n }\n\n if (!collectionSlug) {\n throw new APIError('Collection slug is required', 400, null, true)\n }\n\n if (!file || !file?.data) {\n throw new APIError('No file data provided for import', 400, null, true)\n }\n\n if (debug) {\n req.payload.logger.debug({\n fileName: file.name,\n fileSize: file.data.length,\n mimeType: file.mimetype,\n msg: 'File info',\n })\n }\n\n const collectionConfig = req.payload.config.collections.find(\n ({ slug }) => slug === collectionSlug,\n )\n\n if (!collectionConfig) {\n if (!collectionSlug) {\n throw new APIError('Collection slug is required', 400, null, true)\n }\n throw new APIError(`Collection with slug ${collectionSlug} not found`, 400, null, true)\n }\n\n // Get disabled fields configuration\n const disabledFields =\n collectionConfig.admin?.custom?.['plugin-import-export']?.disabledFields ?? []\n\n const importHooks = collectionConfig.custom?.['plugin-import-export']?.importHooks\n\n // Get beforeImport functions for field transformations\n const importFieldHooks = getImportFieldFunctions({\n fields: collectionConfig.flattenedFields || [],\n })\n\n // Parse the file data\n let originalDocs: Record<string, unknown>[] | undefined\n let documents: Record<string, unknown>[]\n if (format === 'csv') {\n const rawData = await parseCSV({\n data: file.data,\n req,\n })\n\n originalDocs = rawData\n documents = rawData\n\n // Unflatten CSV data\n documents = documents\n .map((doc) => {\n const unflattened = unflattenObject({\n data: doc,\n fields: collectionConfig.flattenedFields ?? [],\n format,\n importFieldHooks,\n req,\n })\n return unflattened ?? {}\n })\n .filter((doc) => doc && Object.keys(doc).length > 0)\n\n if (debug) {\n req.payload.logger.debug({\n documentCount: documents.length,\n msg: 'After unflattening CSV',\n rawDataCount: rawData.length,\n })\n }\n } else {\n const parsedDocs = parseJSON({ data: file.data, req })\n originalDocs = parsedDocs\n // Apply field-level import hooks for JSON format\n documents = parsedDocs.map((doc) =>\n applyFieldHooks({\n type: 'beforeImport',\n data: doc,\n fieldHooks: importFieldHooks,\n fields: collectionConfig.flattenedFields ?? [],\n format,\n operation: 'import',\n req,\n }),\n )\n }\n\n if (debug) {\n req.payload.logger.debug({\n msg: `Parsed ${documents.length} documents from ${format} file`,\n })\n if (documents.length > 0) {\n req.payload.logger.debug({\n doc: documents[0],\n msg: 'First document sample:',\n })\n }\n }\n\n // Enforce maxLimit before processing to save memory/time\n if (typeof maxLimit === 'number' && maxLimit > 0 && documents.length > maxLimit) {\n throw new APIError(\n `Import file contains ${documents.length} documents but limit is ${maxLimit}`,\n 400,\n null,\n true,\n )\n }\n\n // Remove disabled fields from all documents\n if (disabledFields.length > 0) {\n documents = documents.map((doc) => removeDisabledFields(doc, disabledFields))\n }\n\n if (debug) {\n req.payload.logger.debug({\n batchSize,\n documentCount: documents.length,\n msg: 'Processing import in batches',\n })\n }\n\n // Create batch processor\n const processor = createImportBatchProcessor({\n batchSize,\n defaultVersionStatus,\n })\n\n const totalBatches = documents.length > 0 ? Math.ceil(documents.length / batchSize) : 1\n\n // Process import with batch processor\n const result = await processor.processImport({\n collectionSlug,\n docs: documents,\n format,\n hooks: importHooks,\n importMode,\n matchField,\n originalDocs,\n req,\n totalBatches,\n user,\n })\n\n if (debug) {\n req.payload.logger.info({\n errors: result.errors.length,\n imported: result.imported,\n msg: 'Import completed',\n total: result.total,\n updated: result.updated,\n })\n }\n\n return result\n}\n"],"names":["APIError","applyFieldHooks","getImportFieldFunctions","parseCSV","parseJSON","removeDisabledFields","unflattenObject","createImportBatchProcessor","createImport","batchSize","collectionSlug","debug","defaultVersionStatus","file","format","importMode","matchField","maxLimit","req","userCollection","userID","user","payload","findByID","id","collection","overrideAccess","logger","msg","transactionID","data","fileName","name","fileSize","length","mimeType","mimetype","collectionConfig","config","collections","find","slug","disabledFields","admin","custom","importHooks","importFieldHooks","fields","flattenedFields","originalDocs","documents","rawData","map","doc","unflattened","filter","Object","keys","documentCount","rawDataCount","parsedDocs","type","fieldHooks","operation","processor","totalBatches","Math","ceil","result","processImport","docs","hooks","info","errors","imported","total","updated"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"getCreateImportCollectionTask.d.ts","sourceRoot":"","sources":["../../src/import/getCreateImportCollectionTask.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AAOjD,MAAM,MAAM,eAAe,GAAG;IAC5B,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,oBAAoB,CAAC,EAAE,OAAO,GAAG,WAAW,CAAA;IAC5C,gBAAgB,EAAE,MAAM,CAAA;IACxB,QAAQ,EAAE,MAAM,CAAA;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;CACzB,CAAA;AAED,eAAO,MAAM,6BAA6B,YAC/B,MAAM,KACd,UAAU,CAAC;IACZ,KAAK,EAAE,eAAe,CAAA;IACtB,MAAM,EAAE,MAAM,CAAA;CACf,CAgJA,CAAA"}
1
+ {"version":3,"file":"getCreateImportCollectionTask.d.ts","sourceRoot":"","sources":["../../src/import/getCreateImportCollectionTask.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AAOjD,MAAM,MAAM,eAAe,GAAG;IAC5B,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,oBAAoB,CAAC,EAAE,OAAO,GAAG,WAAW,CAAA;IAC5C,gBAAgB,EAAE,MAAM,CAAA;IACxB,QAAQ,EAAE,MAAM,CAAA;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;CACzB,CAAA;AAED,eAAO,MAAM,6BAA6B,YAC/B,MAAM,KACd,UAAU,CAAC;IACZ,KAAK,EAAE,eAAe,CAAA;IACtB,MAAM,EAAE,MAAM,CAAA;CACf,CAkJA,CAAA"}
@@ -9,7 +9,8 @@ export const getCreateCollectionImportTask = (_config)=>{
9
9
  // Fetch the import document to get all necessary data
10
10
  const importDoc = await req.payload.findByID({
11
11
  id: importId,
12
- collection: importCollection
12
+ collection: importCollection,
13
+ overrideAccess: true
13
14
  });
14
15
  if (!importDoc) {
15
16
  throw new Error(`Import document not found: ${importId}`);
@@ -69,7 +70,8 @@ export const getCreateCollectionImportTask = (_config)=>{
69
70
  total: result.total,
70
71
  updated: result.updated
71
72
  }
72
- }
73
+ },
74
+ overrideAccess: true
73
75
  });
74
76
  return {
75
77
  output: result
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/import/getCreateImportCollectionTask.ts"],"sourcesContent":["import type { Config, TaskConfig } from 'payload'\n\nimport { FileRetrievalError } from 'payload'\n\nimport { getFileFromDoc } from '../utilities/getFileFromDoc.js'\nimport { createImport } from './createImport.js'\n\nexport type ImportTaskInput = {\n batchSize?: number\n debug?: boolean\n defaultVersionStatus?: 'draft' | 'published'\n importCollection: string\n importId: string\n maxLimit?: number\n userCollection?: string\n userID?: number | string\n}\n\nexport const getCreateCollectionImportTask = (\n _config: Config,\n): TaskConfig<{\n input: ImportTaskInput\n output: object\n}> => {\n return {\n slug: 'createCollectionImport',\n handler: async ({ input, req }) => {\n const {\n batchSize,\n debug,\n defaultVersionStatus,\n importCollection,\n importId,\n maxLimit,\n userCollection,\n userID,\n } = input\n\n // Fetch the import document to get all necessary data\n const importDoc = await req.payload.findByID({\n id: importId,\n collection: importCollection,\n })\n\n if (!importDoc) {\n throw new Error(`Import document not found: ${importId}`)\n }\n\n // Get the collection config for the imports collection\n const collectionConfig = req.payload.config.collections.find(\n (c) => c.slug === importCollection,\n )\n\n if (!collectionConfig) {\n throw new Error(`Collection config not found for: ${importCollection}`)\n }\n\n // Retrieve the file using getFileFromDoc (handles both local and cloud storage)\n const file = await getFileFromDoc({\n collectionConfig,\n doc: {\n filename: importDoc.filename as string,\n mimeType: importDoc.mimeType as string | undefined,\n url: importDoc.url as string | undefined,\n },\n req,\n })\n\n const fileMimetype = file.mimetype || (importDoc.mimeType as string)\n\n if (!fileMimetype) {\n throw new FileRetrievalError(\n req.t,\n `Unable to determine mimetype for file: ${importDoc.filename}`,\n )\n }\n\n const result = await createImport({\n name: (importDoc.filename as string) || 'import',\n batchSize,\n collectionSlug: importDoc.collectionSlug as string,\n debug,\n defaultVersionStatus,\n file: {\n name: importDoc.filename as string,\n data: file.data,\n mimetype: fileMimetype,\n },\n format: fileMimetype === 'text/csv' ? 'csv' : 'json',\n importMode: (importDoc.importMode as 'create' | 'update' | 'upsert') || 'create',\n matchField: importDoc.matchField as string | undefined,\n maxLimit,\n req,\n userCollection,\n userID,\n })\n\n // Update the import document with results\n await req.payload.update({\n id: importId,\n collection: importCollection,\n data: {\n status:\n result.errors.length === 0\n ? 'completed'\n : result.imported + result.updated === 0\n ? 'failed'\n : 'partial',\n summary: {\n imported: result.imported,\n issueDetails:\n result.errors.length > 0\n ? result.errors.map((e) => ({\n data: e.doc,\n error: e.error,\n row: e.index + 1,\n }))\n : undefined,\n issues: result.errors.length,\n total: result.total,\n updated: result.updated,\n },\n },\n })\n\n return {\n output: result,\n }\n },\n inputSchema: [\n {\n name: 'importId',\n type: 'text',\n required: true,\n },\n {\n name: 'importCollection',\n type: 'text',\n required: true,\n },\n {\n name: 'userID',\n type: 'text',\n },\n {\n name: 'userCollection',\n type: 'text',\n },\n {\n name: 'batchSize',\n type: 'number',\n },\n {\n name: 'debug',\n type: 'checkbox',\n },\n {\n name: 'defaultVersionStatus',\n type: 'select',\n options: ['draft', 'published'],\n },\n {\n name: 'maxLimit',\n type: 'number',\n },\n ],\n }\n}\n"],"names":["FileRetrievalError","getFileFromDoc","createImport","getCreateCollectionImportTask","_config","slug","handler","input","req","batchSize","debug","defaultVersionStatus","importCollection","importId","maxLimit","userCollection","userID","importDoc","payload","findByID","id","collection","Error","collectionConfig","config","collections","find","c","file","doc","filename","mimeType","url","fileMimetype","mimetype","t","result","name","collectionSlug","data","format","importMode","matchField","update","status","errors","length","imported","updated","summary","issueDetails","map","e","error","row","index","undefined","issues","total","output","inputSchema","type","required","options"],"mappings":"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"}
1
+ {"version":3,"sources":["../../src/import/getCreateImportCollectionTask.ts"],"sourcesContent":["import type { Config, TaskConfig } from 'payload'\n\nimport { FileRetrievalError } from 'payload'\n\nimport { getFileFromDoc } from '../utilities/getFileFromDoc.js'\nimport { createImport } from './createImport.js'\n\nexport type ImportTaskInput = {\n batchSize?: number\n debug?: boolean\n defaultVersionStatus?: 'draft' | 'published'\n importCollection: string\n importId: string\n maxLimit?: number\n userCollection?: string\n userID?: number | string\n}\n\nexport const getCreateCollectionImportTask = (\n _config: Config,\n): TaskConfig<{\n input: ImportTaskInput\n output: object\n}> => {\n return {\n slug: 'createCollectionImport',\n handler: async ({ input, req }) => {\n const {\n batchSize,\n debug,\n defaultVersionStatus,\n importCollection,\n importId,\n maxLimit,\n userCollection,\n userID,\n } = input\n\n // Fetch the import document to get all necessary data\n const importDoc = await req.payload.findByID({\n id: importId,\n collection: importCollection,\n overrideAccess: true,\n })\n\n if (!importDoc) {\n throw new Error(`Import document not found: ${importId}`)\n }\n\n // Get the collection config for the imports collection\n const collectionConfig = req.payload.config.collections.find(\n (c) => c.slug === importCollection,\n )\n\n if (!collectionConfig) {\n throw new Error(`Collection config not found for: ${importCollection}`)\n }\n\n // Retrieve the file using getFileFromDoc (handles both local and cloud storage)\n const file = await getFileFromDoc({\n collectionConfig,\n doc: {\n filename: importDoc.filename as string,\n mimeType: importDoc.mimeType as string | undefined,\n url: importDoc.url as string | undefined,\n },\n req,\n })\n\n const fileMimetype = file.mimetype || (importDoc.mimeType as string)\n\n if (!fileMimetype) {\n throw new FileRetrievalError(\n req.t,\n `Unable to determine mimetype for file: ${importDoc.filename}`,\n )\n }\n\n const result = await createImport({\n name: (importDoc.filename as string) || 'import',\n batchSize,\n collectionSlug: importDoc.collectionSlug as string,\n debug,\n defaultVersionStatus,\n file: {\n name: importDoc.filename as string,\n data: file.data,\n mimetype: fileMimetype,\n },\n format: fileMimetype === 'text/csv' ? 'csv' : 'json',\n importMode: (importDoc.importMode as 'create' | 'update' | 'upsert') || 'create',\n matchField: importDoc.matchField as string | undefined,\n maxLimit,\n req,\n userCollection,\n userID,\n })\n\n // Update the import document with results\n await req.payload.update({\n id: importId,\n collection: importCollection,\n data: {\n status:\n result.errors.length === 0\n ? 'completed'\n : result.imported + result.updated === 0\n ? 'failed'\n : 'partial',\n summary: {\n imported: result.imported,\n issueDetails:\n result.errors.length > 0\n ? result.errors.map((e) => ({\n data: e.doc,\n error: e.error,\n row: e.index + 1,\n }))\n : undefined,\n issues: result.errors.length,\n total: result.total,\n updated: result.updated,\n },\n },\n overrideAccess: true,\n })\n\n return {\n output: result,\n }\n },\n inputSchema: [\n {\n name: 'importId',\n type: 'text',\n required: true,\n },\n {\n name: 'importCollection',\n type: 'text',\n required: true,\n },\n {\n name: 'userID',\n type: 'text',\n },\n {\n name: 'userCollection',\n type: 'text',\n },\n {\n name: 'batchSize',\n type: 'number',\n },\n {\n name: 'debug',\n type: 'checkbox',\n },\n {\n name: 'defaultVersionStatus',\n type: 'select',\n options: ['draft', 'published'],\n },\n {\n name: 'maxLimit',\n type: 'number',\n },\n ],\n }\n}\n"],"names":["FileRetrievalError","getFileFromDoc","createImport","getCreateCollectionImportTask","_config","slug","handler","input","req","batchSize","debug","defaultVersionStatus","importCollection","importId","maxLimit","userCollection","userID","importDoc","payload","findByID","id","collection","overrideAccess","Error","collectionConfig","config","collections","find","c","file","doc","filename","mimeType","url","fileMimetype","mimetype","t","result","name","collectionSlug","data","format","importMode","matchField","update","status","errors","length","imported","updated","summary","issueDetails","map","e","error","row","index","undefined","issues","total","output","inputSchema","type","required","options"],"mappings":"AAEA,SAASA,kBAAkB,QAAQ,UAAS;AAE5C,SAASC,cAAc,QAAQ,iCAAgC;AAC/D,SAASC,YAAY,QAAQ,oBAAmB;AAahD,OAAO,MAAMC,gCAAgC,CAC3CC;IAKA,OAAO;QACLC,MAAM;QACNC,SAAS,OAAO,EAAEC,KAAK,EAAEC,GAAG,EAAE;YAC5B,MAAM,EACJC,SAAS,EACTC,KAAK,EACLC,oBAAoB,EACpBC,gBAAgB,EAChBC,QAAQ,EACRC,QAAQ,EACRC,cAAc,EACdC,MAAM,EACP,GAAGT;YAEJ,sDAAsD;YACtD,MAAMU,YAAY,MAAMT,IAAIU,OAAO,CAACC,QAAQ,CAAC;gBAC3CC,IAAIP;gBACJQ,YAAYT;gBACZU,gBAAgB;YAClB;YAEA,IAAI,CAACL,WAAW;gBACd,MAAM,IAAIM,MAAM,CAAC,2BAA2B,EAAEV,UAAU;YAC1D;YAEA,uDAAuD;YACvD,MAAMW,mBAAmBhB,IAAIU,OAAO,CAACO,MAAM,CAACC,WAAW,CAACC,IAAI,CAC1D,CAACC,IAAMA,EAAEvB,IAAI,KAAKO;YAGpB,IAAI,CAACY,kBAAkB;gBACrB,MAAM,IAAID,MAAM,CAAC,iCAAiC,EAAEX,kBAAkB;YACxE;YAEA,gFAAgF;YAChF,MAAMiB,OAAO,MAAM5B,eAAe;gBAChCuB;gBACAM,KAAK;oBACHC,UAAUd,UAAUc,QAAQ;oBAC5BC,UAAUf,UAAUe,QAAQ;oBAC5BC,KAAKhB,UAAUgB,GAAG;gBACpB;gBACAzB;YACF;YAEA,MAAM0B,eAAeL,KAAKM,QAAQ,IAAKlB,UAAUe,QAAQ;YAEzD,IAAI,CAACE,cAAc;gBACjB,MAAM,IAAIlC,mBACRQ,IAAI4B,CAAC,EACL,CAAC,uCAAuC,EAAEnB,UAAUc,QAAQ,EAAE;YAElE;YAEA,MAAMM,SAAS,MAAMnC,aAAa;gBAChCoC,MAAM,AAACrB,UAAUc,QAAQ,IAAe;gBACxCtB;gBACA8B,gBAAgBtB,UAAUsB,cAAc;gBACxC7B;gBACAC;gBACAkB,MAAM;oBACJS,MAAMrB,UAAUc,QAAQ;oBACxBS,MAAMX,KAAKW,IAAI;oBACfL,UAAUD;gBACZ;gBACAO,QAAQP,iBAAiB,aAAa,QAAQ;gBAC9CQ,YAAY,AAACzB,UAAUyB,UAAU,IAAuC;gBACxEC,YAAY1B,UAAU0B,UAAU;gBAChC7B;gBACAN;gBACAO;gBACAC;YACF;YAEA,0CAA0C;YAC1C,MAAMR,IAAIU,OAAO,CAAC0B,MAAM,CAAC;gBACvBxB,IAAIP;gBACJQ,YAAYT;gBACZ4B,MAAM;oBACJK,QACER,OAAOS,MAAM,CAACC,MAAM,KAAK,IACrB,cACAV,OAAOW,QAAQ,GAAGX,OAAOY,OAAO,KAAK,IACnC,WACA;oBACRC,SAAS;wBACPF,UAAUX,OAAOW,QAAQ;wBACzBG,cACEd,OAAOS,MAAM,CAACC,MAAM,GAAG,IACnBV,OAAOS,MAAM,CAACM,GAAG,CAAC,CAACC,IAAO,CAAA;gCACxBb,MAAMa,EAAEvB,GAAG;gCACXwB,OAAOD,EAAEC,KAAK;gCACdC,KAAKF,EAAEG,KAAK,GAAG;4BACjB,CAAA,KACAC;wBACNC,QAAQrB,OAAOS,MAAM,CAACC,MAAM;wBAC5BY,OAAOtB,OAAOsB,KAAK;wBACnBV,SAASZ,OAAOY,OAAO;oBACzB;gBACF;gBACA3B,gBAAgB;YAClB;YAEA,OAAO;gBACLsC,QAAQvB;YACV;QACF;QACAwB,aAAa;YACX;gBACEvB,MAAM;gBACNwB,MAAM;gBACNC,UAAU;YACZ;YACA;gBACEzB,MAAM;gBACNwB,MAAM;gBACNC,UAAU;YACZ;YACA;gBACEzB,MAAM;gBACNwB,MAAM;YACR;YACA;gBACExB,MAAM;gBACNwB,MAAM;YACR;YACA;gBACExB,MAAM;gBACNwB,MAAM;YACR;YACA;gBACExB,MAAM;gBACNwB,MAAM;YACR;YACA;gBACExB,MAAM;gBACNwB,MAAM;gBACNE,SAAS;oBAAC;oBAAS;iBAAY;YACjC;YACA;gBACE1B,MAAM;gBACNwB,MAAM;YACR;SACD;IACH;AACF,EAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"getImportCollection.d.ts","sourceRoot":"","sources":["../../src/import/getImportCollection.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAA6B,gBAAgB,EAAE,MAAM,SAAS,CAAA;AAI1E,OAAO,KAAK,EAAE,YAAY,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAA;AAYzE,eAAO,MAAM,mBAAmB,qDAI7B;IACD;;OAEG;IACH,eAAe,EAAE,MAAM,EAAE,CAAA;IACzB,YAAY,CAAC,EAAE,YAAY,CAAA;IAC3B,YAAY,EAAE,wBAAwB,CAAA;CACvC,KAAG,gBAoVH,CAAA"}
1
+ {"version":3,"file":"getImportCollection.d.ts","sourceRoot":"","sources":["../../src/import/getImportCollection.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAA6B,gBAAgB,EAAE,MAAM,SAAS,CAAA;AAI1E,OAAO,KAAK,EAAE,YAAY,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAA;AAYzE,eAAO,MAAM,mBAAmB,qDAI7B;IACD;;OAEG;IACH,eAAe,EAAE,MAAM,EAAE,CAAA;IACzB,YAAY,CAAC,EAAE,YAAY,CAAA;IAC3B,YAAY,EAAE,wBAAwB,CAAA;CACvC,KAAG,gBAqVH,CAAA"}
@@ -288,6 +288,7 @@ export const getImportCollection = ({ collectionSlugs, importConfig, pluginConfi
288
288
  };
289
289
  await req.payload.jobs.queue({
290
290
  input,
291
+ overrideAccess: true,
291
292
  task: 'createCollectionImport'
292
293
  });
293
294
  } catch (err) {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/import/getImportCollection.ts"],"sourcesContent":["import type { CollectionAfterChangeHook, CollectionConfig } from 'payload'\n\nimport { FileRetrievalError } from 'payload'\n\nimport type { ImportConfig, ImportExportPluginConfig } from '../types.js'\nimport type { ImportTaskInput } from './getCreateImportCollectionTask.js'\n\nimport { getFileFromDoc } from '../utilities/getFileFromDoc.js'\nimport { resolveLimit } from '../utilities/resolveLimit.js'\nimport { createImport } from './createImport.js'\nimport { getFields } from './getFields.js'\nimport { handlePreview } from './handlePreview.js'\n\nconst FALLBACK_BATCH_SIZE = 100\nconst FALLBACK_VERSION_STATUS = 'published'\n\nexport const getImportCollection = ({\n collectionSlugs,\n importConfig,\n pluginConfig,\n}: {\n /**\n * Collection slugs that this import collection supports.\n */\n collectionSlugs: string[]\n importConfig?: ImportConfig\n pluginConfig: ImportExportPluginConfig\n}): CollectionConfig => {\n const afterChange: CollectionAfterChangeHook[] = []\n\n const collection: CollectionConfig = {\n slug: 'imports',\n access: {\n update: () => false,\n },\n admin: {\n components: {\n edit: {\n SaveButton: '@payloadcms/plugin-import-export/rsc#ImportSaveButton',\n },\n },\n custom: {\n 'plugin-import-export': {\n collectionSlugs,\n },\n },\n disableCopyToLocale: true,\n group: false,\n useAsTitle: 'filename',\n },\n disableDuplicate: true,\n endpoints: [\n {\n handler: handlePreview,\n method: 'post',\n path: '/preview-data',\n },\n ],\n fields: getFields({ collectionSlugs }),\n hooks: {\n afterChange,\n },\n lockDocuments: false,\n upload: {\n filesRequiredOnCreate: true,\n hideFileInputOnCreate: false,\n hideRemoveFile: true,\n mimeTypes: ['text/csv', 'application/json'],\n },\n }\n\n afterChange.push(async ({ collection: collectionConfig, doc, operation, req }) => {\n if (operation !== 'create' || doc.status !== 'pending') {\n return doc\n }\n\n const targetCollection = req.payload.collections[doc.collectionSlug]\n const targetPluginConfig = targetCollection?.config.custom?.['plugin-import-export']\n\n const disableJobsQueue =\n targetPluginConfig?.importDisableJobsQueue ?? importConfig?.disableJobsQueue ?? false\n\n const debug = pluginConfig.debug || false\n\n if (debug) {\n req.payload.logger.info({\n collectionSlug: doc.collectionSlug,\n disableJobsQueue,\n docId: doc.id,\n msg: '[Import Sync Hook] Starting',\n transactionID: req.transactionID,\n })\n }\n\n if (!disableJobsQueue) {\n return doc\n }\n\n try {\n // Get file data from the uploaded document\n // First try req.file which is available during the same request (especially important for cloud storage)\n // Fall back to getFileFromDoc for cases where req.file isn't available\n let fileData: Buffer\n let fileMimetype: string\n\n if (req.file?.data) {\n fileData = req.file.data\n fileMimetype = req.file.mimetype || doc.mimeType\n\n if (!fileMimetype) {\n throw new FileRetrievalError(\n req.t,\n `Unable to determine mimetype for file: ${doc.filename}`,\n )\n }\n } else {\n const fileFromDoc = await getFileFromDoc({\n collectionConfig,\n doc: {\n filename: doc.filename,\n mimeType: doc.mimeType,\n url: doc.url,\n },\n req,\n })\n fileData = fileFromDoc.data\n fileMimetype = fileFromDoc.mimetype\n }\n\n const maxLimit = await resolveLimit({\n limit: targetPluginConfig?.importLimit,\n req,\n })\n const defaultVersionStatus =\n targetPluginConfig?.defaultVersionStatus ??\n importConfig?.defaultVersionStatus ??\n pluginConfig.defaultVersionStatus ??\n FALLBACK_VERSION_STATUS\n const batchSize =\n targetPluginConfig?.importBatchSize ??\n importConfig?.batchSize ??\n pluginConfig.batchSize ??\n FALLBACK_BATCH_SIZE\n\n const result = await createImport({\n id: doc.id,\n name: doc.filename || 'import',\n batchSize,\n collectionSlug: doc.collectionSlug,\n debug,\n defaultVersionStatus,\n file: {\n name: doc.filename,\n data: fileData,\n mimetype: fileMimetype,\n },\n format: fileMimetype === 'text/csv' ? 'csv' : 'json',\n importMode: doc.importMode || 'create',\n matchField: doc.matchField,\n maxLimit,\n req,\n userCollection: req?.user?.collection,\n userID: req?.user?.id,\n })\n\n // Determine status\n let status: 'completed' | 'failed' | 'partial'\n if (result.errors.length === 0) {\n status = 'completed'\n } else if (result.imported + result.updated === 0) {\n status = 'failed'\n } else {\n status = 'partial'\n }\n\n const summary = {\n imported: result.imported,\n issueDetails:\n result.errors.length > 0\n ? result.errors.map((e) => ({\n data: e.doc,\n error: e.error,\n row: e.index + 1,\n }))\n : undefined,\n issues: result.errors.length,\n total: result.total,\n updated: result.updated,\n }\n\n // Try to update the document with results\n try {\n await req.payload.update({\n id: doc.id,\n collection: collectionConfig.slug,\n data: {\n status,\n summary,\n },\n overrideAccess: true,\n req,\n })\n } catch (updateErr) {\n // Update may fail if document not yet committed\n if (debug) {\n req.payload.logger.error({\n err: updateErr,\n msg: `Failed to update import document ${doc.id} with results`,\n })\n }\n }\n\n // Return updated doc for immediate response\n return {\n ...doc,\n status,\n summary,\n }\n } catch (err) {\n const summary = {\n imported: 0,\n issueDetails: [\n {\n data: {},\n error: err instanceof Error ? err.message : String(err),\n row: 0,\n },\n ],\n issues: 1,\n total: 0,\n updated: 0,\n }\n\n if (debug) {\n req.payload.logger.error({\n docId: doc.id,\n err,\n msg: '[Import Sync Hook] Import processing failed, attempting to update status',\n transactionID: req.transactionID,\n })\n }\n\n // Try to update document with error status\n try {\n if (debug) {\n req.payload.logger.info({\n collectionSlug: collectionConfig.slug,\n docId: doc.id,\n msg: '[Import Sync Hook] About to update document with failed status',\n })\n }\n await req.payload.update({\n id: doc.id,\n collection: collectionConfig.slug,\n data: {\n status: 'failed',\n summary,\n },\n overrideAccess: true,\n req,\n })\n if (debug) {\n req.payload.logger.info({\n docId: doc.id,\n msg: '[Import Sync Hook] Successfully updated document with failed status',\n })\n }\n } catch (updateErr) {\n // Update may fail if document not yet committed, log but continue\n // ALWAYS log this error to help debug Postgres issues\n req.payload.logger.error({\n err: updateErr,\n msg: `[Import Sync Hook] Failed to update import document ${doc.id} with error status`,\n transactionID: req.transactionID,\n })\n }\n\n if (debug) {\n req.payload.logger.info({\n docId: doc.id,\n msg: '[Import Sync Hook] Returning failed doc',\n status: 'failed',\n })\n }\n\n // Return error status for immediate response\n return {\n ...doc,\n status: 'failed',\n summary,\n }\n }\n })\n\n afterChange.push(async ({ collection: collectionConfig, doc, operation, req }) => {\n if (operation !== 'create') {\n return\n }\n\n const targetCollection = req.payload.collections[doc.collectionSlug]\n const targetPluginConfig = targetCollection?.config.custom?.['plugin-import-export']\n\n const disableJobsQueue =\n targetPluginConfig?.importDisableJobsQueue ?? importConfig?.disableJobsQueue ?? false\n\n if (pluginConfig.debug) {\n req.payload.logger.info({\n collectionSlug: doc.collectionSlug,\n disableJobsQueue,\n docId: doc.id,\n docStatus: doc.status,\n msg: '[Import Job Hook] Checking if should queue job',\n transactionID: req.transactionID,\n })\n }\n\n if (disableJobsQueue) {\n if (pluginConfig.debug) {\n req.payload.logger.info({\n docId: doc.id,\n msg: '[Import Job Hook] Skipping job queue (sync mode)',\n })\n }\n return\n }\n\n try {\n // Resolve maxLimit ahead of time since it may involve async config resolution\n const maxLimit = await resolveLimit({\n limit: targetPluginConfig?.importLimit,\n req,\n })\n const defaultVersionStatus =\n targetPluginConfig?.defaultVersionStatus ??\n importConfig?.defaultVersionStatus ??\n pluginConfig.defaultVersionStatus ??\n FALLBACK_VERSION_STATUS\n const batchSize =\n targetPluginConfig?.importBatchSize ??\n importConfig?.batchSize ??\n pluginConfig.batchSize ??\n FALLBACK_BATCH_SIZE\n\n const input: ImportTaskInput = {\n batchSize,\n debug: pluginConfig.debug,\n defaultVersionStatus,\n importCollection: collectionConfig.slug,\n importId: doc.id,\n maxLimit,\n userCollection: req.user?.collection,\n userID: req?.user?.id,\n }\n\n await req.payload.jobs.queue({\n input,\n task: 'createCollectionImport',\n })\n } catch (err) {\n req.payload.logger.error({\n err,\n msg: `Failed to queue import job for document ${doc.id}`,\n })\n }\n })\n\n return collection\n}\n"],"names":["FileRetrievalError","getFileFromDoc","resolveLimit","createImport","getFields","handlePreview","FALLBACK_BATCH_SIZE","FALLBACK_VERSION_STATUS","getImportCollection","collectionSlugs","importConfig","pluginConfig","afterChange","collection","slug","access","update","admin","components","edit","SaveButton","custom","disableCopyToLocale","group","useAsTitle","disableDuplicate","endpoints","handler","method","path","fields","hooks","lockDocuments","upload","filesRequiredOnCreate","hideFileInputOnCreate","hideRemoveFile","mimeTypes","push","collectionConfig","doc","operation","req","status","targetCollection","payload","collections","collectionSlug","targetPluginConfig","config","disableJobsQueue","importDisableJobsQueue","debug","logger","info","docId","id","msg","transactionID","fileData","fileMimetype","file","data","mimetype","mimeType","t","filename","fileFromDoc","url","maxLimit","limit","importLimit","defaultVersionStatus","batchSize","importBatchSize","result","name","format","importMode","matchField","userCollection","user","userID","errors","length","imported","updated","summary","issueDetails","map","e","error","row","index","undefined","issues","total","overrideAccess","updateErr","err","Error","message","String","docStatus","input","importCollection","importId","jobs","queue","task"],"mappings":"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"}
1
+ {"version":3,"sources":["../../src/import/getImportCollection.ts"],"sourcesContent":["import type { CollectionAfterChangeHook, CollectionConfig } from 'payload'\n\nimport { FileRetrievalError } from 'payload'\n\nimport type { ImportConfig, ImportExportPluginConfig } from '../types.js'\nimport type { ImportTaskInput } from './getCreateImportCollectionTask.js'\n\nimport { getFileFromDoc } from '../utilities/getFileFromDoc.js'\nimport { resolveLimit } from '../utilities/resolveLimit.js'\nimport { createImport } from './createImport.js'\nimport { getFields } from './getFields.js'\nimport { handlePreview } from './handlePreview.js'\n\nconst FALLBACK_BATCH_SIZE = 100\nconst FALLBACK_VERSION_STATUS = 'published'\n\nexport const getImportCollection = ({\n collectionSlugs,\n importConfig,\n pluginConfig,\n}: {\n /**\n * Collection slugs that this import collection supports.\n */\n collectionSlugs: string[]\n importConfig?: ImportConfig\n pluginConfig: ImportExportPluginConfig\n}): CollectionConfig => {\n const afterChange: CollectionAfterChangeHook[] = []\n\n const collection: CollectionConfig = {\n slug: 'imports',\n access: {\n update: () => false,\n },\n admin: {\n components: {\n edit: {\n SaveButton: '@payloadcms/plugin-import-export/rsc#ImportSaveButton',\n },\n },\n custom: {\n 'plugin-import-export': {\n collectionSlugs,\n },\n },\n disableCopyToLocale: true,\n group: false,\n useAsTitle: 'filename',\n },\n disableDuplicate: true,\n endpoints: [\n {\n handler: handlePreview,\n method: 'post',\n path: '/preview-data',\n },\n ],\n fields: getFields({ collectionSlugs }),\n hooks: {\n afterChange,\n },\n lockDocuments: false,\n upload: {\n filesRequiredOnCreate: true,\n hideFileInputOnCreate: false,\n hideRemoveFile: true,\n mimeTypes: ['text/csv', 'application/json'],\n },\n }\n\n afterChange.push(async ({ collection: collectionConfig, doc, operation, req }) => {\n if (operation !== 'create' || doc.status !== 'pending') {\n return doc\n }\n\n const targetCollection = req.payload.collections[doc.collectionSlug]\n const targetPluginConfig = targetCollection?.config.custom?.['plugin-import-export']\n\n const disableJobsQueue =\n targetPluginConfig?.importDisableJobsQueue ?? importConfig?.disableJobsQueue ?? false\n\n const debug = pluginConfig.debug || false\n\n if (debug) {\n req.payload.logger.info({\n collectionSlug: doc.collectionSlug,\n disableJobsQueue,\n docId: doc.id,\n msg: '[Import Sync Hook] Starting',\n transactionID: req.transactionID,\n })\n }\n\n if (!disableJobsQueue) {\n return doc\n }\n\n try {\n // Get file data from the uploaded document\n // First try req.file which is available during the same request (especially important for cloud storage)\n // Fall back to getFileFromDoc for cases where req.file isn't available\n let fileData: Buffer\n let fileMimetype: string\n\n if (req.file?.data) {\n fileData = req.file.data\n fileMimetype = req.file.mimetype || doc.mimeType\n\n if (!fileMimetype) {\n throw new FileRetrievalError(\n req.t,\n `Unable to determine mimetype for file: ${doc.filename}`,\n )\n }\n } else {\n const fileFromDoc = await getFileFromDoc({\n collectionConfig,\n doc: {\n filename: doc.filename,\n mimeType: doc.mimeType,\n url: doc.url,\n },\n req,\n })\n fileData = fileFromDoc.data\n fileMimetype = fileFromDoc.mimetype\n }\n\n const maxLimit = await resolveLimit({\n limit: targetPluginConfig?.importLimit,\n req,\n })\n const defaultVersionStatus =\n targetPluginConfig?.defaultVersionStatus ??\n importConfig?.defaultVersionStatus ??\n pluginConfig.defaultVersionStatus ??\n FALLBACK_VERSION_STATUS\n const batchSize =\n targetPluginConfig?.importBatchSize ??\n importConfig?.batchSize ??\n pluginConfig.batchSize ??\n FALLBACK_BATCH_SIZE\n\n const result = await createImport({\n id: doc.id,\n name: doc.filename || 'import',\n batchSize,\n collectionSlug: doc.collectionSlug,\n debug,\n defaultVersionStatus,\n file: {\n name: doc.filename,\n data: fileData,\n mimetype: fileMimetype,\n },\n format: fileMimetype === 'text/csv' ? 'csv' : 'json',\n importMode: doc.importMode || 'create',\n matchField: doc.matchField,\n maxLimit,\n req,\n userCollection: req?.user?.collection,\n userID: req?.user?.id,\n })\n\n // Determine status\n let status: 'completed' | 'failed' | 'partial'\n if (result.errors.length === 0) {\n status = 'completed'\n } else if (result.imported + result.updated === 0) {\n status = 'failed'\n } else {\n status = 'partial'\n }\n\n const summary = {\n imported: result.imported,\n issueDetails:\n result.errors.length > 0\n ? result.errors.map((e) => ({\n data: e.doc,\n error: e.error,\n row: e.index + 1,\n }))\n : undefined,\n issues: result.errors.length,\n total: result.total,\n updated: result.updated,\n }\n\n // Try to update the document with results\n try {\n await req.payload.update({\n id: doc.id,\n collection: collectionConfig.slug,\n data: {\n status,\n summary,\n },\n overrideAccess: true,\n req,\n })\n } catch (updateErr) {\n // Update may fail if document not yet committed\n if (debug) {\n req.payload.logger.error({\n err: updateErr,\n msg: `Failed to update import document ${doc.id} with results`,\n })\n }\n }\n\n // Return updated doc for immediate response\n return {\n ...doc,\n status,\n summary,\n }\n } catch (err) {\n const summary = {\n imported: 0,\n issueDetails: [\n {\n data: {},\n error: err instanceof Error ? err.message : String(err),\n row: 0,\n },\n ],\n issues: 1,\n total: 0,\n updated: 0,\n }\n\n if (debug) {\n req.payload.logger.error({\n docId: doc.id,\n err,\n msg: '[Import Sync Hook] Import processing failed, attempting to update status',\n transactionID: req.transactionID,\n })\n }\n\n // Try to update document with error status\n try {\n if (debug) {\n req.payload.logger.info({\n collectionSlug: collectionConfig.slug,\n docId: doc.id,\n msg: '[Import Sync Hook] About to update document with failed status',\n })\n }\n await req.payload.update({\n id: doc.id,\n collection: collectionConfig.slug,\n data: {\n status: 'failed',\n summary,\n },\n overrideAccess: true,\n req,\n })\n if (debug) {\n req.payload.logger.info({\n docId: doc.id,\n msg: '[Import Sync Hook] Successfully updated document with failed status',\n })\n }\n } catch (updateErr) {\n // Update may fail if document not yet committed, log but continue\n // ALWAYS log this error to help debug Postgres issues\n req.payload.logger.error({\n err: updateErr,\n msg: `[Import Sync Hook] Failed to update import document ${doc.id} with error status`,\n transactionID: req.transactionID,\n })\n }\n\n if (debug) {\n req.payload.logger.info({\n docId: doc.id,\n msg: '[Import Sync Hook] Returning failed doc',\n status: 'failed',\n })\n }\n\n // Return error status for immediate response\n return {\n ...doc,\n status: 'failed',\n summary,\n }\n }\n })\n\n afterChange.push(async ({ collection: collectionConfig, doc, operation, req }) => {\n if (operation !== 'create') {\n return\n }\n\n const targetCollection = req.payload.collections[doc.collectionSlug]\n const targetPluginConfig = targetCollection?.config.custom?.['plugin-import-export']\n\n const disableJobsQueue =\n targetPluginConfig?.importDisableJobsQueue ?? importConfig?.disableJobsQueue ?? false\n\n if (pluginConfig.debug) {\n req.payload.logger.info({\n collectionSlug: doc.collectionSlug,\n disableJobsQueue,\n docId: doc.id,\n docStatus: doc.status,\n msg: '[Import Job Hook] Checking if should queue job',\n transactionID: req.transactionID,\n })\n }\n\n if (disableJobsQueue) {\n if (pluginConfig.debug) {\n req.payload.logger.info({\n docId: doc.id,\n msg: '[Import Job Hook] Skipping job queue (sync mode)',\n })\n }\n return\n }\n\n try {\n // Resolve maxLimit ahead of time since it may involve async config resolution\n const maxLimit = await resolveLimit({\n limit: targetPluginConfig?.importLimit,\n req,\n })\n const defaultVersionStatus =\n targetPluginConfig?.defaultVersionStatus ??\n importConfig?.defaultVersionStatus ??\n pluginConfig.defaultVersionStatus ??\n FALLBACK_VERSION_STATUS\n const batchSize =\n targetPluginConfig?.importBatchSize ??\n importConfig?.batchSize ??\n pluginConfig.batchSize ??\n FALLBACK_BATCH_SIZE\n\n const input: ImportTaskInput = {\n batchSize,\n debug: pluginConfig.debug,\n defaultVersionStatus,\n importCollection: collectionConfig.slug,\n importId: doc.id,\n maxLimit,\n userCollection: req.user?.collection,\n userID: req?.user?.id,\n }\n\n await req.payload.jobs.queue({\n input,\n overrideAccess: true,\n task: 'createCollectionImport',\n })\n } catch (err) {\n req.payload.logger.error({\n err,\n msg: `Failed to queue import job for document ${doc.id}`,\n })\n }\n })\n\n return collection\n}\n"],"names":["FileRetrievalError","getFileFromDoc","resolveLimit","createImport","getFields","handlePreview","FALLBACK_BATCH_SIZE","FALLBACK_VERSION_STATUS","getImportCollection","collectionSlugs","importConfig","pluginConfig","afterChange","collection","slug","access","update","admin","components","edit","SaveButton","custom","disableCopyToLocale","group","useAsTitle","disableDuplicate","endpoints","handler","method","path","fields","hooks","lockDocuments","upload","filesRequiredOnCreate","hideFileInputOnCreate","hideRemoveFile","mimeTypes","push","collectionConfig","doc","operation","req","status","targetCollection","payload","collections","collectionSlug","targetPluginConfig","config","disableJobsQueue","importDisableJobsQueue","debug","logger","info","docId","id","msg","transactionID","fileData","fileMimetype","file","data","mimetype","mimeType","t","filename","fileFromDoc","url","maxLimit","limit","importLimit","defaultVersionStatus","batchSize","importBatchSize","result","name","format","importMode","matchField","userCollection","user","userID","errors","length","imported","updated","summary","issueDetails","map","e","error","row","index","undefined","issues","total","overrideAccess","updateErr","err","Error","message","String","docStatus","input","importCollection","importId","jobs","queue","task"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@payloadcms/plugin-import-export",
3
- "version": "4.0.0-canary.36",
3
+ "version": "4.0.0-canary.37",
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": "8.0.1",
67
- "@payloadcms/translations": "4.0.0-canary.36",
68
- "@payloadcms/ui": "4.0.0-canary.36"
67
+ "@payloadcms/translations": "4.0.0-canary.37",
68
+ "@payloadcms/ui": "4.0.0-canary.37"
69
69
  },
70
70
  "devDependencies": {
71
71
  "@payloadcms/eslint-config": "3.28.0",
72
- "@payloadcms/ui": "4.0.0-canary.36",
73
- "payload": "4.0.0-canary.36"
72
+ "payload": "4.0.0-canary.37",
73
+ "@payloadcms/ui": "4.0.0-canary.37"
74
74
  },
75
75
  "peerDependencies": {
76
- "@payloadcms/ui": "4.0.0-canary.36",
77
- "payload": "4.0.0-canary.36"
76
+ "@payloadcms/ui": "4.0.0-canary.37",
77
+ "payload": "4.0.0-canary.37"
78
78
  },
79
79
  "homepage:": "https://payloadcms.com",
80
80
  "scripts": {