payload-wordpress-migrator 0.0.22 → 0.0.24
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/README.md +151 -422
- package/dist/components/FieldMappingConfiguration.js +2 -10
- package/dist/components/FieldMappingConfiguration.js.map +1 -1
- package/dist/components/MigrationDashboardClient.js +2 -8
- package/dist/components/MigrationDashboardClient.js.map +1 -1
- package/dist/components/SimpleFieldMapping.js +4 -13
- package/dist/components/SimpleFieldMapping.js.map +1 -1
- package/dist/components/dashboard/SiteConfigPanel.d.ts +3 -9
- package/dist/components/dashboard/SiteConfigPanel.js +60 -170
- package/dist/components/dashboard/SiteConfigPanel.js.map +1 -1
- package/dist/components/dashboard/index.d.ts +1 -1
- package/dist/components/dashboard/types.d.ts +0 -8
- package/dist/components/dashboard/useMigrationDashboard.d.ts +2 -8
- package/dist/components/dashboard/useMigrationDashboard.js +33 -195
- package/dist/components/dashboard/useMigrationDashboard.js.map +1 -1
- package/dist/utils/endpoints/handlers.js +29 -11
- package/dist/utils/endpoints/handlers.js.map +1 -1
- package/dist/utils/migration/jobCrud.js +4 -4
- package/dist/utils/migration/jobCrud.js.map +1 -1
- package/dist/utils/migration/orchestrator.d.ts +2 -2
- package/dist/utils/migration/orchestrator.js +5 -5
- package/dist/utils/migration/orchestrator.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"orchestrator.js","sources":["../../../src/utils/migration/orchestrator.ts"],"sourcesContent":["/** Core migration orchestration: fetch WordPress content in batches, transform, deduplicate, and create in PayloadCMS. */\n\nimport type { Payload } from 'payload'\n\nimport type { PayloadWordPressMigratorConfig } from '../../index.js'\nimport type { FailedItemRecord, MigrationJob, SiteConfig, WordPressItem } from '../types.js'\n\nimport { applyFieldMapping, transformWordPressContent } from '../content/index.js'\nimport { cleanEmptyTextNodes, createSafeLexicalRoot } from '../lexical/nodeFactories.js'\nimport { checkMigrationFields } from '../media/validation.js'\nimport { uploadMediaToPayload } from '../media/upload.js'\nimport { isMediaUploadResult, MIGRATION_COLLECTION } from '../types.js'\nimport { createConcurrencyLimiter, getContentTypeEndpoint, invalidateMigrationCache } from '../helpers/index.js'\nimport { WordPressClient } from '../wordpress/client.js'\n\nconst logBuffer: Array<{ level: 'error' | 'info' | 'warning'; message: string; timestamp: Date }> =\n []\n\nconst addJobLog = (level: 'error' | 'info' | 'warning', message: string) => {\n logBuffer.push({ level, message, timestamp: new Date() })\n}\n\nconst flushJobLogs = async (payload: Payload, jobId: string) => {\n if (logBuffer.length === 0) return\n try {\n const currentJob = await payload.findByID({\n id: jobId,\n collection: MIGRATION_COLLECTION,\n })\n await payload.update({\n id: jobId,\n collection: MIGRATION_COLLECTION,\n data: {\n logs: [...(currentJob?.logs || []), ...logBuffer],\n },\n })\n logBuffer.length = 0\n } catch (error) {\n payload.logger.error(`Failed to flush ${logBuffer.length} logs for job ${jobId}: ${error}`)\n }\n}\n\n// ---------------------------------------------------------------------------\n// Per-item processing — extracted for concurrency support\n// ---------------------------------------------------------------------------\n\ninterface ProcessItemResult {\n error?: string\n failedRecord?: FailedItemRecord\n incrementProcessed: boolean\n status: 'failed' | 'skipped' | 'skipped_media_note' | 'success'\n wpId: number\n}\n\nconst processItem = async (\n item: WordPressItem,\n job: MigrationJob,\n payload: Payload,\n pluginOptions: PayloadWordPressMigratorConfig,\n client: WordPressClient,\n action?: string,\n): Promise<ProcessItemResult> => {\n try {\n const hasMigrationFields = await checkMigrationFields(payload, job.targetCollection)\n\n // Dedup check\n if (hasMigrationFields) {\n try {\n const existingItem = await payload.find({\n collection: job.targetCollection,\n limit: 1,\n where: {\n 'migratedFromWordPress.wpPostId': {\n equals: item.id,\n },\n },\n })\n\n if (existingItem.docs.length > 0) {\n const existingDoc = existingItem.docs[0]\n\n // Update mode: fill only empty fields on existing items, preserving any manual\n // edits the user has made post-migration. Only meta (title, description, image),\n // categories, and tags are selectively updated — content is never overwritten.\n if (action === 'update') {\n const payloadData = await transformWordPressContent(\n item,\n job.contentType,\n job.configuration,\n payload,\n pluginOptions,\n { apiUrl: client.wpApiUrl, headers: client.wpHeaders },\n )\n\n const mappedData: Record<string, any> = await applyFieldMapping(\n payloadData as Record<string, unknown>,\n item,\n job.configuration?.fieldMapping,\n payload,\n )\n\n const updateData: Record<string, any> = {}\n let hasUpdates = false\n\n if (!existingDoc.meta?.title && mappedData.meta?.title) {\n updateData.meta = updateData.meta || {}\n updateData.meta.title = mappedData.meta.title\n hasUpdates = true\n }\n\n if (!existingDoc.meta?.description && mappedData.meta?.description) {\n updateData.meta = updateData.meta || {}\n updateData.meta.description = mappedData.meta.description\n hasUpdates = true\n }\n\n if (!existingDoc.meta?.image) {\n const metaImageValue = existingDoc.heroImage || mappedData.meta?.image\n if (metaImageValue && typeof metaImageValue !== 'string') {\n updateData.meta = updateData.meta || {}\n updateData.meta.image = metaImageValue\n hasUpdates = true\n }\n }\n\n if (!existingDoc.categories?.length && mappedData.categories?.length) {\n updateData.categories = mappedData.categories\n hasUpdates = true\n }\n\n if (!existingDoc.tags?.length && mappedData.tags?.length) {\n updateData.tags = mappedData.tags\n hasUpdates = true\n }\n\n if (hasUpdates) {\n try {\n await payload.update({\n id: existingDoc.id,\n collection: job.targetCollection,\n data: updateData,\n })\n } catch (updateError) {\n payload.logger.error(`Failed to update existing post ${item.id}: ${updateError}`)\n return { incrementProcessed: true, status: 'failed', wpId: item.id, error: `Update failed: ${updateError}`, failedRecord: { error: `Update failed: ${updateError}`, errorType: 'UpdateError', stage: 'update', timestamp: new Date(), wpId: item.id } }\n }\n }\n\n return { incrementProcessed: true, status: 'success', wpId: item.id }\n } else {\n // Already exists, skip\n return { incrementProcessed: true, status: 'skipped', wpId: item.id }\n }\n }\n } catch (queryError) {\n payload.logger.warn(\n `Error checking for existing items in collection ${job.targetCollection}: ${queryError}`,\n )\n addJobLog('warning', `Error checking for existing items: ${queryError instanceof Error ? queryError.message : String(queryError)}`)\n }\n }\n\n // Transform\n const payloadData = await transformWordPressContent(\n item,\n job.contentType,\n job.configuration,\n payload,\n pluginOptions,\n { apiUrl: client.wpApiUrl, headers: client.wpHeaders },\n )\n\n // Media upload path\n if (isMediaUploadResult(payloadData)) {\n if (job.dryRun) {\n addJobLog('info', `[DRY RUN] Would upload media: \"${payloadData.mediaMetadata?.title || `Item ${item.id}`}\" (wpId: ${item.id})`)\n return { incrementProcessed: true, status: 'success', wpId: item.id }\n }\n\n try {\n const hasMigFields = await checkMigrationFields(payload, job.targetCollection)\n\n await uploadMediaToPayload(\n payload,\n job.targetCollection,\n payloadData.fileData,\n payloadData.mediaMetadata,\n hasMigFields,\n )\n\n return { incrementProcessed: true, status: 'success', wpId: item.id }\n } catch (uploadError) {\n const errorMessage =\n uploadError instanceof Error ? uploadError.message : 'Unknown error'\n payload.logger.error(`Failed to upload media file for item ${item.id}: ${uploadError}`)\n return {\n error: `Media upload failed: ${errorMessage}`,\n failedRecord: {\n error: `Media upload failed: ${errorMessage}`,\n errorType: uploadError?.constructor?.name || 'Error',\n stage: 'media_upload',\n timestamp: new Date(),\n wpId: item.id,\n },\n incrementProcessed: true,\n status: 'failed',\n wpId: item.id,\n }\n }\n } else if (job.contentType === 'media' && payloadData.migrationNote) {\n return { incrementProcessed: true, status: 'skipped_media_note', wpId: item.id }\n }\n\n // Regular content creation path\n const hasMigFields = await checkMigrationFields(payload, job.targetCollection)\n\n const mappedData = await applyFieldMapping(\n payloadData,\n item,\n job.configuration?.fieldMapping,\n payload,\n )\n\n const createData: any = {\n ...mappedData,\n }\n\n if (hasMigFields) {\n createData.migratedFromWordPress = {\n migrationDate: new Date(),\n wpPostId: item.id,\n wpPostType: job.contentType,\n }\n }\n\n try {\n // Content validation and cleanup\n if (createData.content !== undefined) {\n if (typeof createData.content === 'string') {\n if (createData.content.trim().length === 0) {\n payload.logger.warn(\n `Pre-validation: Empty content string for item ${item.id}, creating safe Lexical structure`,\n )\n createData.content = createSafeLexicalRoot()\n } else {\n payload.logger.warn(\n `Pre-validation: Plain text content for item ${item.id}, converting to Lexical`,\n )\n createData.content = {\n type: 'root',\n children: [\n {\n type: 'paragraph',\n children: [\n {\n type: 'text',\n detail: 0,\n format: 0,\n mode: 'normal',\n style: '',\n text: createData.content,\n version: 1,\n },\n ],\n direction: 'ltr',\n format: '',\n indent: 0,\n version: 1,\n },\n ],\n direction: 'ltr',\n format: '',\n indent: 0,\n version: 1,\n }\n }\n } else if (typeof createData.content === 'object') {\n const contentStr = JSON.stringify(createData.content)\n\n if (contentStr.includes('\"text\":\"\"')) {\n payload.logger.warn(`Pre-validation: Cleaning empty text nodes for item ${item.id}`)\n\n if (createData.content.root) {\n createData.content = cleanEmptyTextNodes(createData.content)\n } else {\n const wrapped = { root: createData.content }\n const cleaned = cleanEmptyTextNodes(wrapped)\n createData.content = cleaned.root || cleaned\n }\n }\n\n if (\n !createData.content.root ||\n !createData.content.root.type ||\n createData.content.root.type !== 'root' ||\n !createData.content.root.children\n ) {\n payload.logger.warn(\n `Pre-validation: Invalid content structure for item ${item.id}, using safe fallback`,\n )\n createData.content = createSafeLexicalRoot()\n } else {\n let hasNonWhitespaceContent = false\n\n const cleanedChildren = createData.content.root.children.filter(\n (child: any) => {\n if (child.type === 'paragraph' && child.children) {\n const hasText = child.children.some((textNode: any) => {\n return (\n textNode.type === 'text' &&\n textNode.text &&\n textNode.text.trim().length > 0\n )\n })\n\n if (hasText) {\n hasNonWhitespaceContent = true\n return true\n } else {\n return false\n }\n } else {\n hasNonWhitespaceContent = true\n return true\n }\n },\n )\n\n createData.content.root.children = cleanedChildren\n\n if (!hasNonWhitespaceContent || cleanedChildren.length === 0) {\n payload.logger.warn(\n `Pre-validation: Content only contains whitespace for item ${item.id}, adding placeholder`,\n )\n createData.content = createSafeLexicalRoot()\n }\n }\n }\n } else {\n payload.logger.warn(\n `Pre-validation: No content field for item ${item.id}, creating safe default`,\n )\n createData.content = createSafeLexicalRoot()\n }\n\n if (\n createData.content &&\n createData.content.root &&\n createData.content.root.type === 'root' &&\n createData.content.root.children\n ) {\n createData.content.root.children = createData.content.root.children.map(\n (child: any) => {\n if (child.type === 'paragraph' && child.children) {\n const validNodes = child.children\n .map((node: any) => {\n if (node.type === 'text') {\n return node.text && node.text.trim().length > 0 ? node : null\n }\n\n if (node.type === 'link') {\n if (!node.url || node.url.trim().length === 0) {\n payload.logger.warn(\n `Converting link with empty URL to text for item ${item.id}`,\n )\n return {\n type: 'text',\n detail: 0,\n format: 0,\n mode: 'normal',\n style: '',\n text:\n node.children && node.children[0] && node.children[0].text\n ? node.children[0].text\n : 'link',\n version: 1,\n }\n }\n\n return {\n ...node,\n rel: node.rel || '',\n target: node.target || '',\n title: node.title || '',\n url: node.url.trim(),\n }\n }\n\n return node\n })\n .filter(Boolean)\n\n if (validNodes.length === 0) {\n validNodes.push({\n type: 'text',\n detail: 0,\n format: 0,\n mode: 'normal',\n style: '',\n text: '(Empty paragraph)',\n version: 1,\n })\n }\n\n return {\n ...child,\n children: validNodes,\n }\n }\n return child\n },\n )\n }\n\n if (job.dryRun) {\n const title = createData.title || createData.name || `Item ${item.id}`\n addJobLog('info', `[DRY RUN] Would create ${job.contentType}: \"${title}\" (wpId: ${item.id}, fields: ${Object.keys(createData).length})`)\n return { incrementProcessed: true, status: 'success', wpId: item.id }\n }\n\n await payload.create({\n collection: job.targetCollection,\n data: createData,\n })\n\n return { incrementProcessed: true, status: 'success', wpId: item.id }\n } catch (createError) {\n const errorMessage =\n createError instanceof Error ? createError.message : String(createError)\n\n if (errorMessage.includes('Content') || errorMessage.includes('ValidationError')) {\n payload.logger.error(\n `Content validation error for item ${item.id}: ${errorMessage} | title=\"${item.title?.rendered || 'N/A'}\" contentLength=${item.content?.rendered?.length || 0}`,\n )\n }\n\n throw createError\n }\n } catch (itemError) {\n let errorMessage = itemError instanceof Error ? itemError.message : String(itemError)\n\n if (itemError instanceof Error && 'data' in itemError) {\n const errorData = (itemError as any).data\n payload.logger.error(\n `Detailed error data for item ${item.id}: ${JSON.stringify(errorData, null, 2)}`,\n )\n\n if (errorData && errorData.errors) {\n payload.logger.error(`Field validation errors: ${JSON.stringify(errorData.errors, null, 2)}`)\n\n if (Array.isArray(errorData.errors)) {\n const fieldErrors = errorData.errors\n .map((e: any) => `${e.field || e.path || 'unknown'}: ${e.message}`)\n .join(', ')\n errorMessage += ` [Field errors: ${fieldErrors}]`\n }\n }\n }\n\n const itemTitle = item.title?.rendered || item.slug || `Item ${item.id}`\n const itemType = job.contentType || 'content'\n const shortError =\n errorMessage.length > 100 ? errorMessage.substring(0, 100) + '...' : errorMessage\n\n addJobLog('error', `Failed to migrate ${itemType} \"${itemTitle}\" (ID: ${item.id}) - ${shortError}`)\n\n payload.logger.error(\n `MIGRATION FAILURE: ${itemType} \"${itemTitle}\" (ID: ${item.id}) - ${shortError}`,\n )\n payload.logger.error(`Failed to migrate item ${item.id}: ${itemError}`)\n\n return {\n error: errorMessage,\n failedRecord: {\n error: errorMessage,\n errorType: itemError?.constructor?.name || 'Error',\n stage: 'create',\n timestamp: new Date(),\n wpId: item.id,\n },\n incrementProcessed: true,\n status: 'failed',\n wpId: item.id,\n }\n }\n}\n\n// ---------------------------------------------------------------------------\n// Batch processing — runs items through processItem with concurrency control\n// ---------------------------------------------------------------------------\n\ninterface BatchCounters {\n failedItemIds: FailedItemRecord[]\n failedItems: number\n processedItems: number\n successfulItems: number\n}\n\nconst processBatch = async (\n batch: WordPressItem[],\n job: MigrationJob,\n payload: Payload,\n pluginOptions: PayloadWordPressMigratorConfig,\n client: WordPressClient,\n counters: BatchCounters,\n action?: string,\n): Promise<void> => {\n const concurrency = job.configuration?.concurrency || pluginOptions.migrationConcurrency || 1\n const limit = createConcurrencyLimiter(concurrency)\n\n const batchResults = await Promise.allSettled(\n batch.map((item) => limit(() => processItem(item, job, payload, pluginOptions, client, action))),\n )\n\n for (const result of batchResults) {\n if (result.status === 'fulfilled') {\n const r = result.value\n if (r.incrementProcessed) {\n counters.processedItems++\n }\n if (r.status === 'success' || r.status === 'skipped') {\n counters.successfulItems++\n } else if (r.status === 'failed') {\n counters.failedItems++\n if (r.failedRecord) {\n counters.failedItemIds.push(r.failedRecord)\n }\n }\n // skipped_media_note: only increments processedItems (already done above)\n } else {\n // Should not happen since processItem catches internally\n counters.processedItems++\n counters.failedItems++\n }\n }\n}\n\n// ---------------------------------------------------------------------------\n// Main orchestrator\n// ---------------------------------------------------------------------------\n\nexport const processMigrationJob = async (\n jobId: string,\n job: MigrationJob,\n payload: Payload,\n pluginOptions: PayloadWordPressMigratorConfig,\n siteConfig: SiteConfig,\n action?: string,\n) => {\n try {\n const client = new WordPressClient({\n wpPassword: siteConfig.wpPassword,\n wpSiteUrl: siteConfig.wpSiteUrl,\n wpUsername: siteConfig.wpUsername,\n })\n\n const batchSize = job.configuration?.batchSize || pluginOptions.migrationBatchSize || 10\n const batchDelay = job.configuration?.batchDelay ?? 200\n const requestDelay = job.configuration?.requestDelay || pluginOptions.wpRequestDelay || 0\n\n addJobLog('info', `Starting migration for ${job.contentType} from ${siteConfig.siteName || 'WordPress Site'}`)\n\n invalidateMigrationCache()\n\n const endpoint = getContentTypeEndpoint(client.wpApiUrl, job.contentType)\n\n const rawIncludeIds = job.includeIds || job.configuration?.includeIds\n let includeIds: number[] | undefined\n if (rawIncludeIds) {\n if (typeof rawIncludeIds === 'string') {\n includeIds = rawIncludeIds\n .split(',')\n .map((id: string) => parseInt(id.trim(), 10))\n .filter((id: number) => !isNaN(id) && id > 0)\n } else if (Array.isArray(rawIncludeIds)) {\n includeIds = rawIncludeIds\n .map((id) => (typeof id === 'number' ? id : parseInt(String(id), 10)))\n .filter((id) => !isNaN(id) && id > 0)\n }\n }\n\n addJobLog('info', `Connecting to WordPress API at ${client.wpApiUrl}...`)\n await flushJobLogs(payload, jobId)\n\n // Retry and resume need the full item array for filtering; fresh start / restart / update can stream\n const needsFullFetch = action === 'retry' || action === 'resume'\n\n const counters: BatchCounters = {\n failedItemIds: [],\n failedItems: 0,\n processedItems: 0,\n successfulItems: 0,\n }\n let totalItems = 0\n\n if (needsFullFetch) {\n // -----------------------------------------------------------------------\n // RETRY / RESUME path — fetch all items, then filter and batch-process\n // -----------------------------------------------------------------------\n const wpContent = await client.fetchAllPages(\n endpoint,\n async (page, totalPages, itemCount) => {\n addJobLog('info', `Fetched page ${page} of ${totalPages} (${itemCount} items)`)\n },\n job.contentType,\n includeIds,\n )\n\n await flushJobLogs(payload, jobId)\n totalItems = wpContent.length\n\n await payload.update({\n id: jobId,\n collection: MIGRATION_COLLECTION,\n data: {\n progress: {\n failedItems: 0,\n processedItems: 0,\n successfulItems: 0,\n totalItems,\n },\n },\n })\n\n invalidateMigrationCache()\n\n const currentJob = await payload.findByID({\n id: jobId,\n collection: MIGRATION_COLLECTION,\n })\n\n counters.processedItems = currentJob.progress?.processedItems || 0\n counters.successfulItems = currentJob.progress?.successfulItems || 0\n counters.failedItems = currentJob.progress?.failedItems || 0\n counters.failedItemIds = currentJob.progress?.failedItemIds || []\n\n let itemsToProcess = wpContent\n\n if (action === 'retry' &&\n currentJob.progress?.failedItemIds &&\n currentJob.progress.failedItemIds.length > 0\n ) {\n const failedIds = currentJob.progress.failedItemIds.map((item: any) => item.wpId)\n itemsToProcess = wpContent.filter((item) => failedIds.includes(item.id))\n addJobLog('info', `Retrying ${itemsToProcess.length} previously failed items`)\n // Resume deduplication: build a Set of WordPress post IDs that already exist in the\n // target collection by paginating through all migrated items. We then filter the\n // fetched WordPress content to skip items that were already successfully imported,\n // so the job continues from where it left off without creating duplicates.\n } else if (action === 'resume' && counters.processedItems > 0 && counters.processedItems < totalItems) {\n const processedIds = new Set<number>()\n\n try {\n const hasMigrationFields = await checkMigrationFields(payload, currentJob.targetCollection)\n if (hasMigrationFields) {\n let page = 1\n let hasMore = true\n while (hasMore) {\n const existingItems = await payload.find({\n collection: currentJob.targetCollection,\n limit: 100,\n page,\n where: {\n 'migratedFromWordPress.wpPostType': {\n equals: currentJob.contentType,\n },\n },\n })\n\n existingItems.docs.forEach((doc: any) => {\n if (doc.migratedFromWordPress?.wpPostId) {\n processedIds.add(doc.migratedFromWordPress.wpPostId)\n }\n })\n\n hasMore = page < existingItems.totalPages\n page++\n }\n }\n } catch (error) {\n payload.logger.warn('Could not determine processed items for resume, continuing from beginning')\n addJobLog('warning', 'Could not determine processed items for resume, continuing from beginning')\n }\n\n itemsToProcess = wpContent.filter((item) => !processedIds.has(item.id))\n\n addJobLog('info', `Resuming migration from ${counters.processedItems}/${totalItems} items (${itemsToProcess.length} remaining)`)\n await flushJobLogs(payload, jobId)\n }\n\n // Batch-process the filtered items\n for (let i = 0; i < itemsToProcess.length; i += batchSize) {\n // Pause check\n const jobState = await payload.findByID({\n id: jobId,\n collection: MIGRATION_COLLECTION,\n })\n\n if (jobState.status === 'paused') {\n addJobLog('info', `Migration paused at ${counters.processedItems}/${totalItems} items processed`)\n await flushJobLogs(payload, jobId)\n await payload.update({\n id: jobId,\n collection: MIGRATION_COLLECTION,\n data: {\n progress: {\n failedItemIds: counters.failedItemIds,\n failedItems: counters.failedItems,\n processedItems: counters.processedItems,\n successfulItems: counters.successfulItems,\n totalItems,\n },\n },\n })\n invalidateMigrationCache()\n return\n }\n\n const batch = itemsToProcess.slice(i, i + batchSize)\n await processBatch(batch, job, payload, pluginOptions, client, counters, action)\n\n // Progress update after each batch\n await payload.update({\n id: jobId,\n collection: MIGRATION_COLLECTION,\n data: {\n progress: {\n failedItemIds: counters.failedItemIds,\n failedItems: counters.failedItems,\n processedItems: counters.processedItems,\n successfulItems: counters.successfulItems,\n totalItems,\n },\n },\n })\n\n await flushJobLogs(payload, jobId)\n if (batchDelay > 0) {\n await new Promise((resolve) => setTimeout(resolve, batchDelay))\n }\n }\n } else {\n // -----------------------------------------------------------------------\n // FRESH START / RESTART / UPDATE path — stream pages, process in batches\n // -----------------------------------------------------------------------\n\n if (action === 'restart') {\n counters.processedItems = 0\n counters.successfulItems = 0\n counters.failedItems = 0\n }\n\n let totalItemsSet = false\n let batchBuffer: WordPressItem[] = []\n\n for await (const { items, totalItems: headerTotal } of client.fetchPages(endpoint, {\n contentType: job.contentType,\n includeIds,\n onProgress: (page, totalPages, count) => {\n addJobLog('info', `Fetched page ${page} of ${totalPages} (${count} items)`)\n },\n requestDelay,\n })) {\n // Set totalItems from X-WP-Total header on first page\n if (!totalItemsSet) {\n totalItems = headerTotal || items.length\n totalItemsSet = true\n\n await payload.update({\n id: jobId,\n collection: MIGRATION_COLLECTION,\n data: {\n progress: {\n failedItems: 0,\n processedItems: 0,\n successfulItems: 0,\n totalItems,\n },\n },\n })\n invalidateMigrationCache()\n await flushJobLogs(payload, jobId)\n }\n\n // Accumulate items into batch buffer\n for (const item of items) {\n batchBuffer.push(item)\n\n if (batchBuffer.length >= batchSize) {\n // Pause check before each batch\n const jobState = await payload.findByID({\n id: jobId,\n collection: MIGRATION_COLLECTION,\n })\n\n if (jobState.status === 'paused') {\n addJobLog('info', `Migration paused at ${counters.processedItems}/${totalItems} items processed`)\n await flushJobLogs(payload, jobId)\n await payload.update({\n id: jobId,\n collection: MIGRATION_COLLECTION,\n data: {\n progress: {\n failedItemIds: counters.failedItemIds,\n failedItems: counters.failedItems,\n processedItems: counters.processedItems,\n successfulItems: counters.successfulItems,\n totalItems,\n },\n },\n })\n invalidateMigrationCache()\n return\n }\n\n await processBatch(batchBuffer, job, payload, pluginOptions, client, counters, action)\n\n // Progress update after each batch\n await payload.update({\n id: jobId,\n collection: MIGRATION_COLLECTION,\n data: {\n progress: {\n failedItemIds: counters.failedItemIds,\n failedItems: counters.failedItems,\n processedItems: counters.processedItems,\n successfulItems: counters.successfulItems,\n totalItems,\n },\n },\n })\n\n await flushJobLogs(payload, jobId)\n if (batchDelay > 0) {\n await new Promise((resolve) => setTimeout(resolve, batchDelay))\n }\n\n batchBuffer = []\n }\n }\n }\n\n // Process remaining items in buffer\n if (batchBuffer.length > 0) {\n const jobState = await payload.findByID({\n id: jobId,\n collection: MIGRATION_COLLECTION,\n })\n\n if (jobState.status === 'paused') {\n addJobLog('info', `Migration paused at ${counters.processedItems}/${totalItems} items processed`)\n await flushJobLogs(payload, jobId)\n await payload.update({\n id: jobId,\n collection: MIGRATION_COLLECTION,\n data: {\n progress: {\n failedItemIds: counters.failedItemIds,\n failedItems: counters.failedItems,\n processedItems: counters.processedItems,\n successfulItems: counters.successfulItems,\n totalItems,\n },\n },\n })\n invalidateMigrationCache()\n return\n }\n\n await processBatch(batchBuffer, job, payload, pluginOptions, client, counters, action)\n\n await payload.update({\n id: jobId,\n collection: MIGRATION_COLLECTION,\n data: {\n progress: {\n failedItemIds: counters.failedItemIds,\n failedItems: counters.failedItems,\n processedItems: counters.processedItems,\n successfulItems: counters.successfulItems,\n totalItems,\n },\n },\n })\n\n await flushJobLogs(payload, jobId)\n }\n\n // If no items were fetched at all, ensure totalItems is set\n if (!totalItemsSet) {\n totalItems = 0\n await payload.update({\n id: jobId,\n collection: MIGRATION_COLLECTION,\n data: {\n progress: {\n failedItems: 0,\n processedItems: 0,\n successfulItems: 0,\n totalItems: 0,\n },\n },\n })\n invalidateMigrationCache()\n }\n }\n\n addJobLog('info', `Migration completed. ${counters.successfulItems} items successfully migrated, ${counters.failedItems} failed.`)\n await flushJobLogs(payload, jobId)\n\n await payload.update({\n id: jobId,\n collection: MIGRATION_COLLECTION,\n data: {\n endTime: new Date(),\n progress: {\n failedItemIds: counters.failedItemIds,\n failedItems: counters.failedItems,\n processedItems: counters.processedItems,\n successfulItems: counters.successfulItems,\n totalItems,\n },\n status: 'completed',\n },\n })\n\n invalidateMigrationCache()\n } catch (error) {\n addJobLog('error', `Migration failed: ${error instanceof Error ? error.message : 'Unknown error'}`)\n await flushJobLogs(payload, jobId)\n\n await payload.update({\n id: jobId,\n collection: MIGRATION_COLLECTION,\n data: {\n endTime: new Date(),\n status: 'failed',\n },\n })\n\n invalidateMigrationCache()\n throw error\n }\n}\n"],"names":["logBuffer","addJobLog","level","message","push","timestamp","Date","flushJobLogs","payload","jobId","length","currentJob","findByID","id","collection","MIGRATION_COLLECTION","update","data","logs","error","logger","processItem","item","job","pluginOptions","client","action","hasMigrationFields","checkMigrationFields","targetCollection","existingItem","find","limit","where","equals","docs","existingDoc","payloadData","transformWordPressContent","contentType","configuration","apiUrl","wpApiUrl","headers","wpHeaders","mappedData","applyFieldMapping","fieldMapping","updateData","hasUpdates","meta","title","description","image","metaImageValue","heroImage","categories","tags","updateError","incrementProcessed","status","wpId","failedRecord","errorType","stage","queryError","warn","Error","String","isMediaUploadResult","dryRun","mediaMetadata","hasMigFields","uploadMediaToPayload","fileData","uploadError","errorMessage","name","migrationNote","createData","migratedFromWordPress","migrationDate","wpPostId","wpPostType","content","undefined","trim","createSafeLexicalRoot","type","children","detail","format","mode","style","text","version","direction","indent","contentStr","JSON","stringify","includes","root","cleanEmptyTextNodes","wrapped","cleaned","hasNonWhitespaceContent","cleanedChildren","filter","child","hasText","some","textNode","map","validNodes","node","url","rel","target","Boolean","Object","keys","create","createError","rendered","itemError","errorData","errors","Array","isArray","fieldErrors","e","field","path","join","itemTitle","slug","itemType","shortError","substring","processBatch","batch","counters","concurrency","migrationConcurrency","createConcurrencyLimiter","batchResults","Promise","allSettled","result","r","value","processedItems","successfulItems","failedItems","failedItemIds","processMigrationJob","siteConfig","WordPressClient","wpPassword","wpSiteUrl","wpUsername","batchSize","migrationBatchSize","batchDelay","requestDelay","wpRequestDelay","siteName","invalidateMigrationCache","endpoint","getContentTypeEndpoint","rawIncludeIds","includeIds","split","parseInt","isNaN","needsFullFetch","totalItems","wpContent","fetchAllPages","page","totalPages","itemCount","progress","itemsToProcess","failedIds","processedIds","Set","hasMore","existingItems","forEach","doc","add","has","i","jobState","slice","resolve","setTimeout","totalItemsSet","batchBuffer","items","headerTotal","fetchPages","onProgress","count","endTime"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"orchestrator.js","sources":["../../../src/utils/migration/orchestrator.ts"],"sourcesContent":["/** Core migration orchestration: fetch WordPress content in batches, transform, deduplicate, and create in PayloadCMS. */\n\nimport type { Payload } from 'payload'\n\nimport type { PayloadWordPressMigratorConfig } from '../../index.js'\nimport type { FailedItemRecord, MigrationJob, WordPressItem } from '../types.js'\n\nimport { applyFieldMapping, transformWordPressContent } from '../content/index.js'\nimport { cleanEmptyTextNodes, createSafeLexicalRoot } from '../lexical/nodeFactories.js'\nimport { checkMigrationFields } from '../media/validation.js'\nimport { uploadMediaToPayload } from '../media/upload.js'\nimport { isMediaUploadResult, MIGRATION_COLLECTION } from '../types.js'\nimport { createConcurrencyLimiter, getContentTypeEndpoint, invalidateMigrationCache } from '../helpers/index.js'\nimport { WordPressClient } from '../wordpress/client.js'\n\nconst logBuffer: Array<{ level: 'error' | 'info' | 'warning'; message: string; timestamp: Date }> =\n []\n\nconst addJobLog = (level: 'error' | 'info' | 'warning', message: string) => {\n logBuffer.push({ level, message, timestamp: new Date() })\n}\n\nconst flushJobLogs = async (payload: Payload, jobId: string) => {\n if (logBuffer.length === 0) return\n try {\n const currentJob = await payload.findByID({\n id: jobId,\n collection: MIGRATION_COLLECTION,\n })\n await payload.update({\n id: jobId,\n collection: MIGRATION_COLLECTION,\n data: {\n logs: [...(currentJob?.logs || []), ...logBuffer],\n },\n })\n logBuffer.length = 0\n } catch (error) {\n payload.logger.error(`Failed to flush ${logBuffer.length} logs for job ${jobId}: ${error}`)\n }\n}\n\n// ---------------------------------------------------------------------------\n// Per-item processing — extracted for concurrency support\n// ---------------------------------------------------------------------------\n\ninterface ProcessItemResult {\n error?: string\n failedRecord?: FailedItemRecord\n incrementProcessed: boolean\n status: 'failed' | 'skipped' | 'skipped_media_note' | 'success'\n wpId: number\n}\n\nconst processItem = async (\n item: WordPressItem,\n job: MigrationJob,\n payload: Payload,\n pluginOptions: PayloadWordPressMigratorConfig,\n client: WordPressClient,\n action?: string,\n): Promise<ProcessItemResult> => {\n try {\n const hasMigrationFields = await checkMigrationFields(payload, job.targetCollection)\n\n // Dedup check\n if (hasMigrationFields) {\n try {\n const existingItem = await payload.find({\n collection: job.targetCollection,\n limit: 1,\n where: {\n 'migratedFromWordPress.wpPostId': {\n equals: item.id,\n },\n },\n })\n\n if (existingItem.docs.length > 0) {\n const existingDoc = existingItem.docs[0]\n\n // Update mode: fill only empty fields on existing items, preserving any manual\n // edits the user has made post-migration. Only meta (title, description, image),\n // categories, and tags are selectively updated — content is never overwritten.\n if (action === 'update') {\n const payloadData = await transformWordPressContent(\n item,\n job.contentType,\n job.configuration,\n payload,\n pluginOptions,\n { apiUrl: client.wpApiUrl, headers: client.wpHeaders },\n )\n\n const mappedData: Record<string, any> = await applyFieldMapping(\n payloadData as Record<string, unknown>,\n item,\n job.configuration?.fieldMapping,\n payload,\n )\n\n const updateData: Record<string, any> = {}\n let hasUpdates = false\n\n if (!existingDoc.meta?.title && mappedData.meta?.title) {\n updateData.meta = updateData.meta || {}\n updateData.meta.title = mappedData.meta.title\n hasUpdates = true\n }\n\n if (!existingDoc.meta?.description && mappedData.meta?.description) {\n updateData.meta = updateData.meta || {}\n updateData.meta.description = mappedData.meta.description\n hasUpdates = true\n }\n\n if (!existingDoc.meta?.image) {\n const metaImageValue = existingDoc.heroImage || mappedData.meta?.image\n if (metaImageValue && typeof metaImageValue !== 'string') {\n updateData.meta = updateData.meta || {}\n updateData.meta.image = metaImageValue\n hasUpdates = true\n }\n }\n\n if (!existingDoc.categories?.length && mappedData.categories?.length) {\n updateData.categories = mappedData.categories\n hasUpdates = true\n }\n\n if (!existingDoc.tags?.length && mappedData.tags?.length) {\n updateData.tags = mappedData.tags\n hasUpdates = true\n }\n\n if (hasUpdates) {\n try {\n await payload.update({\n id: existingDoc.id,\n collection: job.targetCollection,\n data: updateData,\n })\n } catch (updateError) {\n payload.logger.error(`Failed to update existing post ${item.id}: ${updateError}`)\n return { incrementProcessed: true, status: 'failed', wpId: item.id, error: `Update failed: ${updateError}`, failedRecord: { error: `Update failed: ${updateError}`, errorType: 'UpdateError', stage: 'update', timestamp: new Date(), wpId: item.id } }\n }\n }\n\n return { incrementProcessed: true, status: 'success', wpId: item.id }\n } else {\n // Already exists, skip\n return { incrementProcessed: true, status: 'skipped', wpId: item.id }\n }\n }\n } catch (queryError) {\n payload.logger.warn(\n `Error checking for existing items in collection ${job.targetCollection}: ${queryError}`,\n )\n addJobLog('warning', `Error checking for existing items: ${queryError instanceof Error ? queryError.message : String(queryError)}`)\n }\n }\n\n // Transform\n const payloadData = await transformWordPressContent(\n item,\n job.contentType,\n job.configuration,\n payload,\n pluginOptions,\n { apiUrl: client.wpApiUrl, headers: client.wpHeaders },\n )\n\n // Media upload path\n if (isMediaUploadResult(payloadData)) {\n if (job.dryRun) {\n addJobLog('info', `[DRY RUN] Would upload media: \"${payloadData.mediaMetadata?.title || `Item ${item.id}`}\" (wpId: ${item.id})`)\n return { incrementProcessed: true, status: 'success', wpId: item.id }\n }\n\n try {\n const hasMigFields = await checkMigrationFields(payload, job.targetCollection)\n\n await uploadMediaToPayload(\n payload,\n job.targetCollection,\n payloadData.fileData,\n payloadData.mediaMetadata,\n hasMigFields,\n )\n\n return { incrementProcessed: true, status: 'success', wpId: item.id }\n } catch (uploadError) {\n const errorMessage =\n uploadError instanceof Error ? uploadError.message : 'Unknown error'\n payload.logger.error(`Failed to upload media file for item ${item.id}: ${uploadError}`)\n return {\n error: `Media upload failed: ${errorMessage}`,\n failedRecord: {\n error: `Media upload failed: ${errorMessage}`,\n errorType: uploadError?.constructor?.name || 'Error',\n stage: 'media_upload',\n timestamp: new Date(),\n wpId: item.id,\n },\n incrementProcessed: true,\n status: 'failed',\n wpId: item.id,\n }\n }\n } else if (job.contentType === 'media' && payloadData.migrationNote) {\n return { incrementProcessed: true, status: 'skipped_media_note', wpId: item.id }\n }\n\n // Regular content creation path\n const hasMigFields = await checkMigrationFields(payload, job.targetCollection)\n\n const mappedData = await applyFieldMapping(\n payloadData,\n item,\n job.configuration?.fieldMapping,\n payload,\n )\n\n const createData: any = {\n ...mappedData,\n }\n\n if (hasMigFields) {\n createData.migratedFromWordPress = {\n migrationDate: new Date(),\n wpPostId: item.id,\n wpPostType: job.contentType,\n }\n }\n\n try {\n // Content validation and cleanup\n if (createData.content !== undefined) {\n if (typeof createData.content === 'string') {\n if (createData.content.trim().length === 0) {\n payload.logger.warn(\n `Pre-validation: Empty content string for item ${item.id}, creating safe Lexical structure`,\n )\n createData.content = createSafeLexicalRoot()\n } else {\n payload.logger.warn(\n `Pre-validation: Plain text content for item ${item.id}, converting to Lexical`,\n )\n createData.content = {\n type: 'root',\n children: [\n {\n type: 'paragraph',\n children: [\n {\n type: 'text',\n detail: 0,\n format: 0,\n mode: 'normal',\n style: '',\n text: createData.content,\n version: 1,\n },\n ],\n direction: 'ltr',\n format: '',\n indent: 0,\n version: 1,\n },\n ],\n direction: 'ltr',\n format: '',\n indent: 0,\n version: 1,\n }\n }\n } else if (typeof createData.content === 'object') {\n const contentStr = JSON.stringify(createData.content)\n\n if (contentStr.includes('\"text\":\"\"')) {\n payload.logger.warn(`Pre-validation: Cleaning empty text nodes for item ${item.id}`)\n\n if (createData.content.root) {\n createData.content = cleanEmptyTextNodes(createData.content)\n } else {\n const wrapped = { root: createData.content }\n const cleaned = cleanEmptyTextNodes(wrapped)\n createData.content = cleaned.root || cleaned\n }\n }\n\n if (\n !createData.content.root ||\n !createData.content.root.type ||\n createData.content.root.type !== 'root' ||\n !createData.content.root.children\n ) {\n payload.logger.warn(\n `Pre-validation: Invalid content structure for item ${item.id}, using safe fallback`,\n )\n createData.content = createSafeLexicalRoot()\n } else {\n let hasNonWhitespaceContent = false\n\n const cleanedChildren = createData.content.root.children.filter(\n (child: any) => {\n if (child.type === 'paragraph' && child.children) {\n const hasText = child.children.some((textNode: any) => {\n return (\n textNode.type === 'text' &&\n textNode.text &&\n textNode.text.trim().length > 0\n )\n })\n\n if (hasText) {\n hasNonWhitespaceContent = true\n return true\n } else {\n return false\n }\n } else {\n hasNonWhitespaceContent = true\n return true\n }\n },\n )\n\n createData.content.root.children = cleanedChildren\n\n if (!hasNonWhitespaceContent || cleanedChildren.length === 0) {\n payload.logger.warn(\n `Pre-validation: Content only contains whitespace for item ${item.id}, adding placeholder`,\n )\n createData.content = createSafeLexicalRoot()\n }\n }\n }\n } else {\n payload.logger.warn(\n `Pre-validation: No content field for item ${item.id}, creating safe default`,\n )\n createData.content = createSafeLexicalRoot()\n }\n\n if (\n createData.content &&\n createData.content.root &&\n createData.content.root.type === 'root' &&\n createData.content.root.children\n ) {\n createData.content.root.children = createData.content.root.children.map(\n (child: any) => {\n if (child.type === 'paragraph' && child.children) {\n const validNodes = child.children\n .map((node: any) => {\n if (node.type === 'text') {\n return node.text && node.text.trim().length > 0 ? node : null\n }\n\n if (node.type === 'link') {\n if (!node.url || node.url.trim().length === 0) {\n payload.logger.warn(\n `Converting link with empty URL to text for item ${item.id}`,\n )\n return {\n type: 'text',\n detail: 0,\n format: 0,\n mode: 'normal',\n style: '',\n text:\n node.children && node.children[0] && node.children[0].text\n ? node.children[0].text\n : 'link',\n version: 1,\n }\n }\n\n return {\n ...node,\n rel: node.rel || '',\n target: node.target || '',\n title: node.title || '',\n url: node.url.trim(),\n }\n }\n\n return node\n })\n .filter(Boolean)\n\n if (validNodes.length === 0) {\n validNodes.push({\n type: 'text',\n detail: 0,\n format: 0,\n mode: 'normal',\n style: '',\n text: '(Empty paragraph)',\n version: 1,\n })\n }\n\n return {\n ...child,\n children: validNodes,\n }\n }\n return child\n },\n )\n }\n\n if (job.dryRun) {\n const title = createData.title || createData.name || `Item ${item.id}`\n addJobLog('info', `[DRY RUN] Would create ${job.contentType}: \"${title}\" (wpId: ${item.id}, fields: ${Object.keys(createData).length})`)\n return { incrementProcessed: true, status: 'success', wpId: item.id }\n }\n\n await payload.create({\n collection: job.targetCollection,\n data: createData,\n })\n\n return { incrementProcessed: true, status: 'success', wpId: item.id }\n } catch (createError) {\n const errorMessage =\n createError instanceof Error ? createError.message : String(createError)\n\n if (errorMessage.includes('Content') || errorMessage.includes('ValidationError')) {\n payload.logger.error(\n `Content validation error for item ${item.id}: ${errorMessage} | title=\"${item.title?.rendered || 'N/A'}\" contentLength=${item.content?.rendered?.length || 0}`,\n )\n }\n\n throw createError\n }\n } catch (itemError) {\n let errorMessage = itemError instanceof Error ? itemError.message : String(itemError)\n\n if (itemError instanceof Error && 'data' in itemError) {\n const errorData = (itemError as any).data\n payload.logger.error(\n `Detailed error data for item ${item.id}: ${JSON.stringify(errorData, null, 2)}`,\n )\n\n if (errorData && errorData.errors) {\n payload.logger.error(`Field validation errors: ${JSON.stringify(errorData.errors, null, 2)}`)\n\n if (Array.isArray(errorData.errors)) {\n const fieldErrors = errorData.errors\n .map((e: any) => `${e.field || e.path || 'unknown'}: ${e.message}`)\n .join(', ')\n errorMessage += ` [Field errors: ${fieldErrors}]`\n }\n }\n }\n\n const itemTitle = item.title?.rendered || item.slug || `Item ${item.id}`\n const itemType = job.contentType || 'content'\n const shortError =\n errorMessage.length > 100 ? errorMessage.substring(0, 100) + '...' : errorMessage\n\n addJobLog('error', `Failed to migrate ${itemType} \"${itemTitle}\" (ID: ${item.id}) - ${shortError}`)\n\n payload.logger.error(\n `MIGRATION FAILURE: ${itemType} \"${itemTitle}\" (ID: ${item.id}) - ${shortError}`,\n )\n payload.logger.error(`Failed to migrate item ${item.id}: ${itemError}`)\n\n return {\n error: errorMessage,\n failedRecord: {\n error: errorMessage,\n errorType: itemError?.constructor?.name || 'Error',\n stage: 'create',\n timestamp: new Date(),\n wpId: item.id,\n },\n incrementProcessed: true,\n status: 'failed',\n wpId: item.id,\n }\n }\n}\n\n// ---------------------------------------------------------------------------\n// Batch processing — runs items through processItem with concurrency control\n// ---------------------------------------------------------------------------\n\ninterface BatchCounters {\n failedItemIds: FailedItemRecord[]\n failedItems: number\n processedItems: number\n successfulItems: number\n}\n\nconst processBatch = async (\n batch: WordPressItem[],\n job: MigrationJob,\n payload: Payload,\n pluginOptions: PayloadWordPressMigratorConfig,\n client: WordPressClient,\n counters: BatchCounters,\n action?: string,\n): Promise<void> => {\n const concurrency = job.configuration?.concurrency || pluginOptions.migrationConcurrency || 1\n const limit = createConcurrencyLimiter(concurrency)\n\n const batchResults = await Promise.allSettled(\n batch.map((item) => limit(() => processItem(item, job, payload, pluginOptions, client, action))),\n )\n\n for (const result of batchResults) {\n if (result.status === 'fulfilled') {\n const r = result.value\n if (r.incrementProcessed) {\n counters.processedItems++\n }\n if (r.status === 'success' || r.status === 'skipped') {\n counters.successfulItems++\n } else if (r.status === 'failed') {\n counters.failedItems++\n if (r.failedRecord) {\n counters.failedItemIds.push(r.failedRecord)\n }\n }\n // skipped_media_note: only increments processedItems (already done above)\n } else {\n // Should not happen since processItem catches internally\n counters.processedItems++\n counters.failedItems++\n }\n }\n}\n\n// ---------------------------------------------------------------------------\n// Main orchestrator\n// ---------------------------------------------------------------------------\n\nexport const processMigrationJob = async (\n jobId: string,\n job: MigrationJob,\n payload: Payload,\n pluginOptions: PayloadWordPressMigratorConfig,\n action?: string,\n) => {\n try {\n const client = new WordPressClient({\n wpPassword: pluginOptions.wpPassword!,\n wpSiteUrl: pluginOptions.wpSiteUrl!,\n wpUsername: pluginOptions.wpUsername!,\n })\n\n const batchSize = job.configuration?.batchSize || pluginOptions.migrationBatchSize || 10\n const batchDelay = job.configuration?.batchDelay ?? 200\n const requestDelay = job.configuration?.requestDelay || pluginOptions.wpRequestDelay || 0\n\n addJobLog('info', `Starting migration for ${job.contentType} from ${pluginOptions.wpSiteUrl || 'WordPress Site'}`)\n\n invalidateMigrationCache()\n\n const endpoint = getContentTypeEndpoint(client.wpApiUrl, job.contentType)\n\n const rawIncludeIds = job.includeIds || job.configuration?.includeIds\n let includeIds: number[] | undefined\n if (rawIncludeIds) {\n if (typeof rawIncludeIds === 'string') {\n includeIds = rawIncludeIds\n .split(',')\n .map((id: string) => parseInt(id.trim(), 10))\n .filter((id: number) => !isNaN(id) && id > 0)\n } else if (Array.isArray(rawIncludeIds)) {\n includeIds = rawIncludeIds\n .map((id) => (typeof id === 'number' ? id : parseInt(String(id), 10)))\n .filter((id) => !isNaN(id) && id > 0)\n }\n }\n\n addJobLog('info', `Connecting to WordPress API at ${client.wpApiUrl}...`)\n await flushJobLogs(payload, jobId)\n\n // Retry and resume need the full item array for filtering; fresh start / restart / update can stream\n const needsFullFetch = action === 'retry' || action === 'resume'\n\n const counters: BatchCounters = {\n failedItemIds: [],\n failedItems: 0,\n processedItems: 0,\n successfulItems: 0,\n }\n let totalItems = 0\n\n if (needsFullFetch) {\n // -----------------------------------------------------------------------\n // RETRY / RESUME path — fetch all items, then filter and batch-process\n // -----------------------------------------------------------------------\n const wpContent = await client.fetchAllPages(\n endpoint,\n async (page, totalPages, itemCount) => {\n addJobLog('info', `Fetched page ${page} of ${totalPages} (${itemCount} items)`)\n },\n job.contentType,\n includeIds,\n )\n\n await flushJobLogs(payload, jobId)\n totalItems = wpContent.length\n\n await payload.update({\n id: jobId,\n collection: MIGRATION_COLLECTION,\n data: {\n progress: {\n failedItems: 0,\n processedItems: 0,\n successfulItems: 0,\n totalItems,\n },\n },\n })\n\n invalidateMigrationCache()\n\n const currentJob = await payload.findByID({\n id: jobId,\n collection: MIGRATION_COLLECTION,\n })\n\n counters.processedItems = currentJob.progress?.processedItems || 0\n counters.successfulItems = currentJob.progress?.successfulItems || 0\n counters.failedItems = currentJob.progress?.failedItems || 0\n counters.failedItemIds = currentJob.progress?.failedItemIds || []\n\n let itemsToProcess = wpContent\n\n if (action === 'retry' &&\n currentJob.progress?.failedItemIds &&\n currentJob.progress.failedItemIds.length > 0\n ) {\n const failedIds = currentJob.progress.failedItemIds.map((item: any) => item.wpId)\n itemsToProcess = wpContent.filter((item) => failedIds.includes(item.id))\n addJobLog('info', `Retrying ${itemsToProcess.length} previously failed items`)\n // Resume deduplication: build a Set of WordPress post IDs that already exist in the\n // target collection by paginating through all migrated items. We then filter the\n // fetched WordPress content to skip items that were already successfully imported,\n // so the job continues from where it left off without creating duplicates.\n } else if (action === 'resume' && counters.processedItems > 0 && counters.processedItems < totalItems) {\n const processedIds = new Set<number>()\n\n try {\n const hasMigrationFields = await checkMigrationFields(payload, currentJob.targetCollection)\n if (hasMigrationFields) {\n let page = 1\n let hasMore = true\n while (hasMore) {\n const existingItems = await payload.find({\n collection: currentJob.targetCollection,\n limit: 100,\n page,\n where: {\n 'migratedFromWordPress.wpPostType': {\n equals: currentJob.contentType,\n },\n },\n })\n\n existingItems.docs.forEach((doc: any) => {\n if (doc.migratedFromWordPress?.wpPostId) {\n processedIds.add(doc.migratedFromWordPress.wpPostId)\n }\n })\n\n hasMore = page < existingItems.totalPages\n page++\n }\n }\n } catch (error) {\n payload.logger.warn('Could not determine processed items for resume, continuing from beginning')\n addJobLog('warning', 'Could not determine processed items for resume, continuing from beginning')\n }\n\n itemsToProcess = wpContent.filter((item) => !processedIds.has(item.id))\n\n addJobLog('info', `Resuming migration from ${counters.processedItems}/${totalItems} items (${itemsToProcess.length} remaining)`)\n await flushJobLogs(payload, jobId)\n }\n\n // Batch-process the filtered items\n for (let i = 0; i < itemsToProcess.length; i += batchSize) {\n // Pause check\n const jobState = await payload.findByID({\n id: jobId,\n collection: MIGRATION_COLLECTION,\n })\n\n if (jobState.status === 'paused') {\n addJobLog('info', `Migration paused at ${counters.processedItems}/${totalItems} items processed`)\n await flushJobLogs(payload, jobId)\n await payload.update({\n id: jobId,\n collection: MIGRATION_COLLECTION,\n data: {\n progress: {\n failedItemIds: counters.failedItemIds,\n failedItems: counters.failedItems,\n processedItems: counters.processedItems,\n successfulItems: counters.successfulItems,\n totalItems,\n },\n },\n })\n invalidateMigrationCache()\n return\n }\n\n const batch = itemsToProcess.slice(i, i + batchSize)\n await processBatch(batch, job, payload, pluginOptions, client, counters, action)\n\n // Progress update after each batch\n await payload.update({\n id: jobId,\n collection: MIGRATION_COLLECTION,\n data: {\n progress: {\n failedItemIds: counters.failedItemIds,\n failedItems: counters.failedItems,\n processedItems: counters.processedItems,\n successfulItems: counters.successfulItems,\n totalItems,\n },\n },\n })\n\n await flushJobLogs(payload, jobId)\n if (batchDelay > 0) {\n await new Promise((resolve) => setTimeout(resolve, batchDelay))\n }\n }\n } else {\n // -----------------------------------------------------------------------\n // FRESH START / RESTART / UPDATE path — stream pages, process in batches\n // -----------------------------------------------------------------------\n\n if (action === 'restart') {\n counters.processedItems = 0\n counters.successfulItems = 0\n counters.failedItems = 0\n }\n\n let totalItemsSet = false\n let batchBuffer: WordPressItem[] = []\n\n for await (const { items, totalItems: headerTotal } of client.fetchPages(endpoint, {\n contentType: job.contentType,\n includeIds,\n onProgress: (page, totalPages, count) => {\n addJobLog('info', `Fetched page ${page} of ${totalPages} (${count} items)`)\n },\n requestDelay,\n })) {\n // Set totalItems from X-WP-Total header on first page\n if (!totalItemsSet) {\n totalItems = headerTotal || items.length\n totalItemsSet = true\n\n await payload.update({\n id: jobId,\n collection: MIGRATION_COLLECTION,\n data: {\n progress: {\n failedItems: 0,\n processedItems: 0,\n successfulItems: 0,\n totalItems,\n },\n },\n })\n invalidateMigrationCache()\n await flushJobLogs(payload, jobId)\n }\n\n // Accumulate items into batch buffer\n for (const item of items) {\n batchBuffer.push(item)\n\n if (batchBuffer.length >= batchSize) {\n // Pause check before each batch\n const jobState = await payload.findByID({\n id: jobId,\n collection: MIGRATION_COLLECTION,\n })\n\n if (jobState.status === 'paused') {\n addJobLog('info', `Migration paused at ${counters.processedItems}/${totalItems} items processed`)\n await flushJobLogs(payload, jobId)\n await payload.update({\n id: jobId,\n collection: MIGRATION_COLLECTION,\n data: {\n progress: {\n failedItemIds: counters.failedItemIds,\n failedItems: counters.failedItems,\n processedItems: counters.processedItems,\n successfulItems: counters.successfulItems,\n totalItems,\n },\n },\n })\n invalidateMigrationCache()\n return\n }\n\n await processBatch(batchBuffer, job, payload, pluginOptions, client, counters, action)\n\n // Progress update after each batch\n await payload.update({\n id: jobId,\n collection: MIGRATION_COLLECTION,\n data: {\n progress: {\n failedItemIds: counters.failedItemIds,\n failedItems: counters.failedItems,\n processedItems: counters.processedItems,\n successfulItems: counters.successfulItems,\n totalItems,\n },\n },\n })\n\n await flushJobLogs(payload, jobId)\n if (batchDelay > 0) {\n await new Promise((resolve) => setTimeout(resolve, batchDelay))\n }\n\n batchBuffer = []\n }\n }\n }\n\n // Process remaining items in buffer\n if (batchBuffer.length > 0) {\n const jobState = await payload.findByID({\n id: jobId,\n collection: MIGRATION_COLLECTION,\n })\n\n if (jobState.status === 'paused') {\n addJobLog('info', `Migration paused at ${counters.processedItems}/${totalItems} items processed`)\n await flushJobLogs(payload, jobId)\n await payload.update({\n id: jobId,\n collection: MIGRATION_COLLECTION,\n data: {\n progress: {\n failedItemIds: counters.failedItemIds,\n failedItems: counters.failedItems,\n processedItems: counters.processedItems,\n successfulItems: counters.successfulItems,\n totalItems,\n },\n },\n })\n invalidateMigrationCache()\n return\n }\n\n await processBatch(batchBuffer, job, payload, pluginOptions, client, counters, action)\n\n await payload.update({\n id: jobId,\n collection: MIGRATION_COLLECTION,\n data: {\n progress: {\n failedItemIds: counters.failedItemIds,\n failedItems: counters.failedItems,\n processedItems: counters.processedItems,\n successfulItems: counters.successfulItems,\n totalItems,\n },\n },\n })\n\n await flushJobLogs(payload, jobId)\n }\n\n // If no items were fetched at all, ensure totalItems is set\n if (!totalItemsSet) {\n totalItems = 0\n await payload.update({\n id: jobId,\n collection: MIGRATION_COLLECTION,\n data: {\n progress: {\n failedItems: 0,\n processedItems: 0,\n successfulItems: 0,\n totalItems: 0,\n },\n },\n })\n invalidateMigrationCache()\n }\n }\n\n addJobLog('info', `Migration completed. ${counters.successfulItems} items successfully migrated, ${counters.failedItems} failed.`)\n await flushJobLogs(payload, jobId)\n\n await payload.update({\n id: jobId,\n collection: MIGRATION_COLLECTION,\n data: {\n endTime: new Date(),\n progress: {\n failedItemIds: counters.failedItemIds,\n failedItems: counters.failedItems,\n processedItems: counters.processedItems,\n successfulItems: counters.successfulItems,\n totalItems,\n },\n status: 'completed',\n },\n })\n\n invalidateMigrationCache()\n } catch (error) {\n addJobLog('error', `Migration failed: ${error instanceof Error ? error.message : 'Unknown error'}`)\n await flushJobLogs(payload, jobId)\n\n await payload.update({\n id: jobId,\n collection: MIGRATION_COLLECTION,\n data: {\n endTime: new Date(),\n status: 'failed',\n },\n })\n\n invalidateMigrationCache()\n throw error\n }\n}\n"],"names":["logBuffer","addJobLog","level","message","push","timestamp","Date","flushJobLogs","payload","jobId","length","currentJob","findByID","id","collection","MIGRATION_COLLECTION","update","data","logs","error","logger","processItem","item","job","pluginOptions","client","action","hasMigrationFields","checkMigrationFields","targetCollection","existingItem","find","limit","where","equals","docs","existingDoc","payloadData","transformWordPressContent","contentType","configuration","apiUrl","wpApiUrl","headers","wpHeaders","mappedData","applyFieldMapping","fieldMapping","updateData","hasUpdates","meta","title","description","image","metaImageValue","heroImage","categories","tags","updateError","incrementProcessed","status","wpId","failedRecord","errorType","stage","queryError","warn","Error","String","isMediaUploadResult","dryRun","mediaMetadata","hasMigFields","uploadMediaToPayload","fileData","uploadError","errorMessage","name","migrationNote","createData","migratedFromWordPress","migrationDate","wpPostId","wpPostType","content","undefined","trim","createSafeLexicalRoot","type","children","detail","format","mode","style","text","version","direction","indent","contentStr","JSON","stringify","includes","root","cleanEmptyTextNodes","wrapped","cleaned","hasNonWhitespaceContent","cleanedChildren","filter","child","hasText","some","textNode","map","validNodes","node","url","rel","target","Boolean","Object","keys","create","createError","rendered","itemError","errorData","errors","Array","isArray","fieldErrors","e","field","path","join","itemTitle","slug","itemType","shortError","substring","processBatch","batch","counters","concurrency","migrationConcurrency","createConcurrencyLimiter","batchResults","Promise","allSettled","result","r","value","processedItems","successfulItems","failedItems","failedItemIds","processMigrationJob","WordPressClient","wpPassword","wpSiteUrl","wpUsername","batchSize","migrationBatchSize","batchDelay","requestDelay","wpRequestDelay","invalidateMigrationCache","endpoint","getContentTypeEndpoint","rawIncludeIds","includeIds","split","parseInt","isNaN","needsFullFetch","totalItems","wpContent","fetchAllPages","page","totalPages","itemCount","progress","itemsToProcess","failedIds","processedIds","Set","hasMore","existingItems","forEach","doc","add","has","i","jobState","slice","resolve","setTimeout","totalItemsSet","batchBuffer","items","headerTotal","fetchPages","onProgress","count","endTime"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "payload-wordpress-migrator",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.24",
|
|
4
4
|
"description": "A PayloadCMS plugin for WordPress migration - migrate and manage WordPress content directly in your Payload admin dashboard",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|