payload-wordpress-migrator 0.0.22
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/LICENSE +21 -0
- package/README.md +586 -0
- package/dist/components/BeforeDashboardClient.d.ts +14 -0
- package/dist/components/BeforeDashboardClient.js +225 -0
- package/dist/components/BeforeDashboardClient.js.map +1 -0
- package/dist/components/BeforeDashboardClient.module.css +175 -0
- package/dist/components/BeforeDashboardServer.d.ts +1 -0
- package/dist/components/BeforeDashboardServer.js +29 -0
- package/dist/components/BeforeDashboardServer.js.map +1 -0
- package/dist/components/ContentTypeSelect.d.ts +4 -0
- package/dist/components/ContentTypeSelect.js +147 -0
- package/dist/components/ContentTypeSelect.js.map +1 -0
- package/dist/components/FieldMappingConfiguration.d.ts +5 -0
- package/dist/components/FieldMappingConfiguration.js +361 -0
- package/dist/components/FieldMappingConfiguration.js.map +1 -0
- package/dist/components/FieldMappingConfiguration.module.css +75 -0
- package/dist/components/MigrationDashboardClient.d.ts +6 -0
- package/dist/components/MigrationDashboardClient.js +49 -0
- package/dist/components/MigrationDashboardClient.js.map +1 -0
- package/dist/components/MigrationDashboardClient.module.css +749 -0
- package/dist/components/SimpleFieldMapping.d.ts +5 -0
- package/dist/components/SimpleFieldMapping.js +437 -0
- package/dist/components/SimpleFieldMapping.js.map +1 -0
- package/dist/components/dashboard/JobActionButtons.d.ts +8 -0
- package/dist/components/dashboard/JobActionButtons.js +91 -0
- package/dist/components/dashboard/JobActionButtons.js.map +1 -0
- package/dist/components/dashboard/JobsTable.d.ts +6 -0
- package/dist/components/dashboard/JobsTable.js +86 -0
- package/dist/components/dashboard/JobsTable.js.map +1 -0
- package/dist/components/dashboard/LogViewer.d.ts +3 -0
- package/dist/components/dashboard/LogViewer.js +35 -0
- package/dist/components/dashboard/LogViewer.js.map +1 -0
- package/dist/components/dashboard/SiteConfigPanel.d.ts +12 -0
- package/dist/components/dashboard/SiteConfigPanel.js +205 -0
- package/dist/components/dashboard/SiteConfigPanel.js.map +1 -0
- package/dist/components/dashboard/StatsOverview.d.ts +5 -0
- package/dist/components/dashboard/StatsOverview.js +72 -0
- package/dist/components/dashboard/StatsOverview.js.map +1 -0
- package/dist/components/dashboard/index.d.ts +7 -0
- package/dist/components/dashboard/index.js +7 -0
- package/dist/components/dashboard/index.js.map +1 -0
- package/dist/components/dashboard/types.d.ts +46 -0
- package/dist/components/dashboard/types.js +2 -0
- package/dist/components/dashboard/types.js.map +1 -0
- package/dist/components/dashboard/useMigrationDashboard.d.ts +15 -0
- package/dist/components/dashboard/useMigrationDashboard.js +584 -0
- package/dist/components/dashboard/useMigrationDashboard.js.map +1 -0
- package/dist/exports/client.d.ts +4 -0
- package/dist/exports/client.js +5 -0
- package/dist/exports/client.js.map +1 -0
- package/dist/exports/rsc.d.ts +1 -0
- package/dist/exports/rsc.js +2 -0
- package/dist/exports/rsc.js.map +1 -0
- package/dist/index.d.ts +101 -0
- package/dist/index.js +443 -0
- package/dist/index.js.map +1 -0
- package/dist/utils/content/blocks.d.ts +6 -0
- package/dist/utils/content/blocks.js +93 -0
- package/dist/utils/content/blocks.js.map +1 -0
- package/dist/utils/content/fieldMapping.d.ts +9 -0
- package/dist/utils/content/fieldMapping.js +218 -0
- package/dist/utils/content/fieldMapping.js.map +1 -0
- package/dist/utils/content/index.d.ts +4 -0
- package/dist/utils/content/index.js +4 -0
- package/dist/utils/content/index.js.map +1 -0
- package/dist/utils/content/transformer.d.ts +5 -0
- package/dist/utils/content/transformer.js +323 -0
- package/dist/utils/content/transformer.js.map +1 -0
- package/dist/utils/endpoints/handlers.d.ts +9 -0
- package/dist/utils/endpoints/handlers.js +201 -0
- package/dist/utils/endpoints/handlers.js.map +1 -0
- package/dist/utils/endpoints/index.d.ts +2 -0
- package/dist/utils/endpoints/index.js +2 -0
- package/dist/utils/endpoints/index.js.map +1 -0
- package/dist/utils/fields/analyzer.d.ts +7 -0
- package/dist/utils/fields/analyzer.js +502 -0
- package/dist/utils/fields/analyzer.js.map +1 -0
- package/dist/utils/fields/index.d.ts +2 -0
- package/dist/utils/fields/index.js +2 -0
- package/dist/utils/fields/index.js.map +1 -0
- package/dist/utils/helpers/auth.d.ts +9 -0
- package/dist/utils/helpers/auth.js +50 -0
- package/dist/utils/helpers/auth.js.map +1 -0
- package/dist/utils/helpers/cache.d.ts +11 -0
- package/dist/utils/helpers/cache.js +47 -0
- package/dist/utils/helpers/cache.js.map +1 -0
- package/dist/utils/helpers/concurrency.d.ts +2 -0
- package/dist/utils/helpers/concurrency.js +26 -0
- package/dist/utils/helpers/concurrency.js.map +1 -0
- package/dist/utils/helpers/index.d.ts +8 -0
- package/dist/utils/helpers/index.js +8 -0
- package/dist/utils/helpers/index.js.map +1 -0
- package/dist/utils/helpers/objectHelpers.d.ts +3 -0
- package/dist/utils/helpers/objectHelpers.js +22 -0
- package/dist/utils/helpers/objectHelpers.js.map +1 -0
- package/dist/utils/helpers/rateLimiter.d.ts +10 -0
- package/dist/utils/helpers/rateLimiter.js +29 -0
- package/dist/utils/helpers/rateLimiter.js.map +1 -0
- package/dist/utils/helpers/responses.d.ts +3 -0
- package/dist/utils/helpers/responses.js +23 -0
- package/dist/utils/helpers/responses.js.map +1 -0
- package/dist/utils/helpers/wpHelpers.d.ts +6 -0
- package/dist/utils/helpers/wpHelpers.js +29 -0
- package/dist/utils/helpers/wpHelpers.js.map +1 -0
- package/dist/utils/lexical/constants.d.ts +37 -0
- package/dist/utils/lexical/constants.js +58 -0
- package/dist/utils/lexical/constants.js.map +1 -0
- package/dist/utils/lexical/htmlParser.d.ts +20 -0
- package/dist/utils/lexical/htmlParser.js +253 -0
- package/dist/utils/lexical/htmlParser.js.map +1 -0
- package/dist/utils/lexical/htmlToLexicalConverter.d.ts +55 -0
- package/dist/utils/lexical/htmlToLexicalConverter.js +999 -0
- package/dist/utils/lexical/htmlToLexicalConverter.js.map +1 -0
- package/dist/utils/lexical/index.d.ts +5 -0
- package/dist/utils/lexical/index.js +4 -0
- package/dist/utils/lexical/index.js.map +1 -0
- package/dist/utils/lexical/nodeFactories.d.ts +21 -0
- package/dist/utils/lexical/nodeFactories.js +91 -0
- package/dist/utils/lexical/nodeFactories.js.map +1 -0
- package/dist/utils/lexical/preprocessor.d.ts +4 -0
- package/dist/utils/lexical/preprocessor.js +302 -0
- package/dist/utils/lexical/preprocessor.js.map +1 -0
- package/dist/utils/media/download.d.ts +7 -0
- package/dist/utils/media/download.js +85 -0
- package/dist/utils/media/download.js.map +1 -0
- package/dist/utils/media/extraction.d.ts +12 -0
- package/dist/utils/media/extraction.js +58 -0
- package/dist/utils/media/extraction.js.map +1 -0
- package/dist/utils/media/import.d.ts +7 -0
- package/dist/utils/media/import.js +146 -0
- package/dist/utils/media/import.js.map +1 -0
- package/dist/utils/media/index.d.ts +6 -0
- package/dist/utils/media/index.js +6 -0
- package/dist/utils/media/index.js.map +1 -0
- package/dist/utils/media/upload.d.ts +4 -0
- package/dist/utils/media/upload.js +46 -0
- package/dist/utils/media/upload.js.map +1 -0
- package/dist/utils/media/validation.d.ts +8 -0
- package/dist/utils/media/validation.js +60 -0
- package/dist/utils/media/validation.js.map +1 -0
- package/dist/utils/migration/index.d.ts +3 -0
- package/dist/utils/migration/index.js +3 -0
- package/dist/utils/migration/index.js.map +1 -0
- package/dist/utils/migration/jobCrud.d.ts +4 -0
- package/dist/utils/migration/jobCrud.js +380 -0
- package/dist/utils/migration/jobCrud.js.map +1 -0
- package/dist/utils/migration/orchestrator.d.ts +5 -0
- package/dist/utils/migration/orchestrator.js +756 -0
- package/dist/utils/migration/orchestrator.js.map +1 -0
- package/dist/utils/types.d.ts +201 -0
- package/dist/utils/types.js +14 -0
- package/dist/utils/types.js.map +1 -0
- package/dist/utils/wordpress/client.d.ts +61 -0
- package/dist/utils/wordpress/client.js +365 -0
- package/dist/utils/wordpress/client.js.map +1 -0
- package/dist/utils/wordpress/index.d.ts +2 -0
- package/dist/utils/wordpress/index.js +2 -0
- package/dist/utils/wordpress/index.js.map +1 -0
- package/dist/utils/wordpressApi.d.ts +11 -0
- package/dist/utils/wordpressApi.js +25 -0
- package/dist/utils/wordpressApi.js.map +1 -0
- package/package.json +155 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/** WordPress and PayloadCMS field structure analysis for migration mapping. */
|
|
2
|
+
import type { AnalyzedField, WordPressItem } from '../types.js';
|
|
3
|
+
export declare const analyzeWordPressFields: (item: WordPressItem | null, contentType: string) => AnalyzedField[];
|
|
4
|
+
/**
|
|
5
|
+
* Analyze Payload collection fields
|
|
6
|
+
*/
|
|
7
|
+
export declare const analyzePayloadFields: (fields: any[], prefix?: string) => AnalyzedField[];
|
|
@@ -0,0 +1,502 @@
|
|
|
1
|
+
/** WordPress and PayloadCMS field structure analysis for migration mapping. */ const analyzeWordPressFields = (item, contentType)=>{
|
|
2
|
+
const fields = [];
|
|
3
|
+
// Common WordPress fields
|
|
4
|
+
const commonFields = [
|
|
5
|
+
{
|
|
6
|
+
name: 'id',
|
|
7
|
+
type: 'number',
|
|
8
|
+
label: 'ID'
|
|
9
|
+
},
|
|
10
|
+
{
|
|
11
|
+
name: 'date',
|
|
12
|
+
type: 'date',
|
|
13
|
+
label: 'Date'
|
|
14
|
+
},
|
|
15
|
+
{
|
|
16
|
+
name: 'date_gmt',
|
|
17
|
+
type: 'date',
|
|
18
|
+
label: 'Date (GMT)'
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
name: 'modified',
|
|
22
|
+
type: 'date',
|
|
23
|
+
label: 'Modified'
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
name: 'modified_gmt',
|
|
27
|
+
type: 'date',
|
|
28
|
+
label: 'Modified (GMT)'
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
name: 'slug',
|
|
32
|
+
type: 'text',
|
|
33
|
+
label: 'Slug'
|
|
34
|
+
},
|
|
35
|
+
{
|
|
36
|
+
name: 'status',
|
|
37
|
+
type: 'text',
|
|
38
|
+
label: 'Status'
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
name: 'link',
|
|
42
|
+
type: 'url',
|
|
43
|
+
label: 'Link'
|
|
44
|
+
}
|
|
45
|
+
];
|
|
46
|
+
fields.push(...commonFields);
|
|
47
|
+
// Content type specific fields
|
|
48
|
+
switch(contentType){
|
|
49
|
+
case 'categories':
|
|
50
|
+
fields.push({
|
|
51
|
+
name: 'name',
|
|
52
|
+
type: 'text',
|
|
53
|
+
label: 'Name'
|
|
54
|
+
}, {
|
|
55
|
+
name: 'description',
|
|
56
|
+
type: 'textarea',
|
|
57
|
+
label: 'Description'
|
|
58
|
+
}, {
|
|
59
|
+
name: 'count',
|
|
60
|
+
type: 'number',
|
|
61
|
+
label: 'Count'
|
|
62
|
+
}, {
|
|
63
|
+
name: 'parent',
|
|
64
|
+
type: 'number',
|
|
65
|
+
label: 'Parent ID'
|
|
66
|
+
});
|
|
67
|
+
break;
|
|
68
|
+
case 'media':
|
|
69
|
+
fields.push({
|
|
70
|
+
name: 'title.rendered',
|
|
71
|
+
type: 'text',
|
|
72
|
+
label: 'Title'
|
|
73
|
+
}, {
|
|
74
|
+
name: 'description.rendered',
|
|
75
|
+
type: 'textarea',
|
|
76
|
+
label: 'Description'
|
|
77
|
+
}, {
|
|
78
|
+
name: 'caption.rendered',
|
|
79
|
+
type: 'textarea',
|
|
80
|
+
label: 'Caption'
|
|
81
|
+
}, {
|
|
82
|
+
name: 'alt_text',
|
|
83
|
+
type: 'text',
|
|
84
|
+
label: 'Alt Text'
|
|
85
|
+
}, {
|
|
86
|
+
name: 'media_type',
|
|
87
|
+
type: 'text',
|
|
88
|
+
label: 'Media Type'
|
|
89
|
+
}, {
|
|
90
|
+
name: 'mime_type',
|
|
91
|
+
type: 'text',
|
|
92
|
+
label: 'MIME Type'
|
|
93
|
+
}, {
|
|
94
|
+
name: 'media_details',
|
|
95
|
+
type: 'json',
|
|
96
|
+
label: 'Media Details'
|
|
97
|
+
}, {
|
|
98
|
+
name: 'source_url',
|
|
99
|
+
type: 'url',
|
|
100
|
+
label: 'Source URL'
|
|
101
|
+
});
|
|
102
|
+
break;
|
|
103
|
+
case 'pages':
|
|
104
|
+
fields.push({
|
|
105
|
+
name: 'title.rendered',
|
|
106
|
+
type: 'text',
|
|
107
|
+
label: 'Title'
|
|
108
|
+
}, {
|
|
109
|
+
name: 'content.rendered',
|
|
110
|
+
type: 'richText',
|
|
111
|
+
label: 'Content'
|
|
112
|
+
}, {
|
|
113
|
+
name: 'excerpt.rendered',
|
|
114
|
+
type: 'textarea',
|
|
115
|
+
label: 'Excerpt'
|
|
116
|
+
}, {
|
|
117
|
+
name: 'author',
|
|
118
|
+
type: 'number',
|
|
119
|
+
label: 'Author ID'
|
|
120
|
+
}, {
|
|
121
|
+
name: 'featured_media',
|
|
122
|
+
type: 'number',
|
|
123
|
+
label: 'Featured Media ID'
|
|
124
|
+
});
|
|
125
|
+
break;
|
|
126
|
+
case 'posts':
|
|
127
|
+
fields.push({
|
|
128
|
+
name: 'title.rendered',
|
|
129
|
+
type: 'text',
|
|
130
|
+
label: 'Title'
|
|
131
|
+
}, {
|
|
132
|
+
name: 'content.rendered',
|
|
133
|
+
type: 'richText',
|
|
134
|
+
label: 'Content'
|
|
135
|
+
}, {
|
|
136
|
+
name: 'excerpt.rendered',
|
|
137
|
+
type: 'textarea',
|
|
138
|
+
label: 'Excerpt'
|
|
139
|
+
}, {
|
|
140
|
+
name: 'author',
|
|
141
|
+
type: 'number',
|
|
142
|
+
label: 'Author ID'
|
|
143
|
+
}, {
|
|
144
|
+
name: 'featured_media',
|
|
145
|
+
type: 'number',
|
|
146
|
+
label: 'Featured Media ID'
|
|
147
|
+
}, {
|
|
148
|
+
name: 'comment_status',
|
|
149
|
+
type: 'text',
|
|
150
|
+
label: 'Comment Status'
|
|
151
|
+
}, {
|
|
152
|
+
name: 'ping_status',
|
|
153
|
+
type: 'text',
|
|
154
|
+
label: 'Ping Status'
|
|
155
|
+
}, {
|
|
156
|
+
name: 'sticky',
|
|
157
|
+
type: 'checkbox',
|
|
158
|
+
label: 'Sticky'
|
|
159
|
+
}, {
|
|
160
|
+
name: 'template',
|
|
161
|
+
type: 'text',
|
|
162
|
+
label: 'Template'
|
|
163
|
+
}, {
|
|
164
|
+
name: 'format',
|
|
165
|
+
type: 'text',
|
|
166
|
+
label: 'Format'
|
|
167
|
+
}, {
|
|
168
|
+
name: 'categories',
|
|
169
|
+
type: 'array',
|
|
170
|
+
label: 'Categories'
|
|
171
|
+
}, {
|
|
172
|
+
name: 'tags',
|
|
173
|
+
type: 'array',
|
|
174
|
+
label: 'Tags'
|
|
175
|
+
});
|
|
176
|
+
break;
|
|
177
|
+
case 'users':
|
|
178
|
+
fields.push({
|
|
179
|
+
name: 'username',
|
|
180
|
+
type: 'text',
|
|
181
|
+
label: 'Username'
|
|
182
|
+
}, {
|
|
183
|
+
name: 'name',
|
|
184
|
+
type: 'text',
|
|
185
|
+
label: 'Display Name'
|
|
186
|
+
}, {
|
|
187
|
+
name: 'first_name',
|
|
188
|
+
type: 'text',
|
|
189
|
+
label: 'First Name'
|
|
190
|
+
}, {
|
|
191
|
+
name: 'last_name',
|
|
192
|
+
type: 'text',
|
|
193
|
+
label: 'Last Name'
|
|
194
|
+
}, {
|
|
195
|
+
name: 'email',
|
|
196
|
+
type: 'email',
|
|
197
|
+
label: 'Email'
|
|
198
|
+
}, {
|
|
199
|
+
name: 'url',
|
|
200
|
+
type: 'url',
|
|
201
|
+
label: 'Website URL'
|
|
202
|
+
}, {
|
|
203
|
+
name: 'description',
|
|
204
|
+
type: 'textarea',
|
|
205
|
+
label: 'Biography'
|
|
206
|
+
}, {
|
|
207
|
+
name: 'roles',
|
|
208
|
+
type: 'array',
|
|
209
|
+
label: 'Roles'
|
|
210
|
+
}, {
|
|
211
|
+
name: 'capabilities',
|
|
212
|
+
type: 'json',
|
|
213
|
+
label: 'Capabilities'
|
|
214
|
+
}, {
|
|
215
|
+
name: 'avatar_urls',
|
|
216
|
+
type: 'json',
|
|
217
|
+
label: 'Avatar URLs'
|
|
218
|
+
});
|
|
219
|
+
break;
|
|
220
|
+
}
|
|
221
|
+
// Add common SEO plugin fields (even if not present in sample)
|
|
222
|
+
const commonSEOFields = [
|
|
223
|
+
// Yoast SEO fields
|
|
224
|
+
{
|
|
225
|
+
name: 'yoast_head_json.title',
|
|
226
|
+
type: 'text',
|
|
227
|
+
label: 'Yoast: SEO Title'
|
|
228
|
+
},
|
|
229
|
+
{
|
|
230
|
+
name: 'yoast_head_json.description',
|
|
231
|
+
type: 'text',
|
|
232
|
+
label: 'Yoast: Meta Description'
|
|
233
|
+
},
|
|
234
|
+
{
|
|
235
|
+
name: 'yoast_head_json.og_image[0].url',
|
|
236
|
+
type: 'url',
|
|
237
|
+
label: 'Yoast: OG Image URL'
|
|
238
|
+
},
|
|
239
|
+
{
|
|
240
|
+
name: 'meta._yoast_wpseo_title',
|
|
241
|
+
type: 'text',
|
|
242
|
+
label: 'Yoast: Title (Meta)'
|
|
243
|
+
},
|
|
244
|
+
{
|
|
245
|
+
name: 'meta._yoast_wpseo_metadesc',
|
|
246
|
+
type: 'text',
|
|
247
|
+
label: 'Yoast: Description (Meta)'
|
|
248
|
+
},
|
|
249
|
+
{
|
|
250
|
+
name: 'meta._yoast_wpseo_opengraph_image',
|
|
251
|
+
type: 'url',
|
|
252
|
+
label: 'Yoast: OG Image (Meta)'
|
|
253
|
+
},
|
|
254
|
+
// RankMath SEO fields
|
|
255
|
+
{
|
|
256
|
+
name: 'meta.rank_math_title',
|
|
257
|
+
type: 'text',
|
|
258
|
+
label: 'RankMath: SEO Title'
|
|
259
|
+
},
|
|
260
|
+
{
|
|
261
|
+
name: 'meta.rank_math_description',
|
|
262
|
+
type: 'text',
|
|
263
|
+
label: 'RankMath: Meta Description'
|
|
264
|
+
},
|
|
265
|
+
{
|
|
266
|
+
name: 'meta.rank_math_facebook_image',
|
|
267
|
+
type: 'url',
|
|
268
|
+
label: 'RankMath: Facebook Image'
|
|
269
|
+
},
|
|
270
|
+
// All in One SEO fields
|
|
271
|
+
{
|
|
272
|
+
name: 'meta._aioseo_title',
|
|
273
|
+
type: 'text',
|
|
274
|
+
label: 'AIOSEO: SEO Title'
|
|
275
|
+
},
|
|
276
|
+
{
|
|
277
|
+
name: 'meta._aioseo_description',
|
|
278
|
+
type: 'text',
|
|
279
|
+
label: 'AIOSEO: Meta Description'
|
|
280
|
+
},
|
|
281
|
+
{
|
|
282
|
+
name: 'meta._aioseo_og_image',
|
|
283
|
+
type: 'url',
|
|
284
|
+
label: 'AIOSEO: OG Image'
|
|
285
|
+
},
|
|
286
|
+
// SEOPress fields
|
|
287
|
+
{
|
|
288
|
+
name: 'meta.seopress_titles_title',
|
|
289
|
+
type: 'text',
|
|
290
|
+
label: 'SEOPress: SEO Title'
|
|
291
|
+
},
|
|
292
|
+
{
|
|
293
|
+
name: 'meta.seopress_titles_desc',
|
|
294
|
+
type: 'text',
|
|
295
|
+
label: 'SEOPress: Meta Description'
|
|
296
|
+
},
|
|
297
|
+
{
|
|
298
|
+
name: 'meta.seopress_social_fb_img',
|
|
299
|
+
type: 'url',
|
|
300
|
+
label: 'SEOPress: Facebook Image'
|
|
301
|
+
}
|
|
302
|
+
];
|
|
303
|
+
// Add common SEO fields for posts content type
|
|
304
|
+
if (contentType === 'posts') {
|
|
305
|
+
fields.push(...commonSEOFields);
|
|
306
|
+
}
|
|
307
|
+
// Check for custom fields (meta) - existing fields from the sample
|
|
308
|
+
if (item?.meta && typeof item.meta === 'object') {
|
|
309
|
+
Object.keys(item.meta).forEach((metaKey)=>{
|
|
310
|
+
// Skip if we already added this as a common SEO field
|
|
311
|
+
const alreadyAdded = commonSEOFields.some((field)=>field.name === `meta.${metaKey}`);
|
|
312
|
+
if (alreadyAdded) {
|
|
313
|
+
return;
|
|
314
|
+
}
|
|
315
|
+
const metaValue = item.meta[metaKey];
|
|
316
|
+
const fieldType = typeof metaValue === 'number' ? 'number' : typeof metaValue === 'boolean' ? 'checkbox' : Array.isArray(metaValue) ? 'array' : typeof metaValue === 'object' ? 'json' : 'text';
|
|
317
|
+
fields.push({
|
|
318
|
+
name: `meta.${metaKey}`,
|
|
319
|
+
type: fieldType,
|
|
320
|
+
custom: true,
|
|
321
|
+
label: `Meta: ${metaKey}`
|
|
322
|
+
});
|
|
323
|
+
});
|
|
324
|
+
}
|
|
325
|
+
// Check for Yoast head JSON (even if not in meta)
|
|
326
|
+
if (item && item.yoast_head_json && typeof item.yoast_head_json === 'object') {
|
|
327
|
+
// These are already added above, but we can add more specific ones if found
|
|
328
|
+
if (item.yoast_head_json.og_image && Array.isArray(item.yoast_head_json.og_image)) {
|
|
329
|
+
item.yoast_head_json.og_image.forEach((img, index)=>{
|
|
330
|
+
if (img.url) {
|
|
331
|
+
fields.push({
|
|
332
|
+
name: `yoast_head_json.og_image[${index}].url`,
|
|
333
|
+
type: 'url',
|
|
334
|
+
custom: true,
|
|
335
|
+
label: `Yoast: OG Image ${index + 1} URL`
|
|
336
|
+
});
|
|
337
|
+
}
|
|
338
|
+
});
|
|
339
|
+
}
|
|
340
|
+
}
|
|
341
|
+
// Check for ACF fields
|
|
342
|
+
if (item?.acf && typeof item.acf === 'object') {
|
|
343
|
+
Object.keys(item.acf).forEach((acfKey)=>{
|
|
344
|
+
const acfValue = item.acf[acfKey];
|
|
345
|
+
const fieldType = typeof acfValue === 'number' ? 'number' : typeof acfValue === 'boolean' ? 'checkbox' : Array.isArray(acfValue) ? 'array' : typeof acfValue === 'object' ? 'json' : 'text';
|
|
346
|
+
fields.push({
|
|
347
|
+
name: `acf.${acfKey}`,
|
|
348
|
+
type: fieldType,
|
|
349
|
+
custom: true,
|
|
350
|
+
label: `ACF: ${acfKey}`
|
|
351
|
+
});
|
|
352
|
+
});
|
|
353
|
+
}
|
|
354
|
+
const finalFields = fields.map((field)=>({
|
|
355
|
+
...field,
|
|
356
|
+
path: field.name
|
|
357
|
+
}));
|
|
358
|
+
return finalFields;
|
|
359
|
+
};
|
|
360
|
+
/**
|
|
361
|
+
* Analyze Payload collection fields
|
|
362
|
+
*/ // eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
363
|
+
const analyzePayloadFields = (fields, prefix = '')=>{
|
|
364
|
+
const analyzedFields = [];
|
|
365
|
+
fields.forEach((field, index)=>{
|
|
366
|
+
// Skip completely invalid fields
|
|
367
|
+
if (!field) {
|
|
368
|
+
console.warn(`Skipping null/undefined field at index ${index}`);
|
|
369
|
+
return;
|
|
370
|
+
}
|
|
371
|
+
// Debug logging for problematic fields
|
|
372
|
+
if (field.type === 'date' && (!field.name || field.name === 'undefined')) {
|
|
373
|
+
console.warn(`Found problematic date field at index ${index}:`, {
|
|
374
|
+
name: field.name,
|
|
375
|
+
type: field.type,
|
|
376
|
+
admin: field.admin,
|
|
377
|
+
fullField: field,
|
|
378
|
+
label: field.label
|
|
379
|
+
});
|
|
380
|
+
}
|
|
381
|
+
try {
|
|
382
|
+
// First, handle nested structures that need destructuring
|
|
383
|
+
// Handle nested fields (groups, tabs, etc.)
|
|
384
|
+
if (field.fields && Array.isArray(field.fields)) {
|
|
385
|
+
const nestedPath = field.name ? prefix ? `${prefix}.${field.name}` : field.name : prefix;
|
|
386
|
+
analyzedFields.push(...analyzePayloadFields(field.fields, nestedPath));
|
|
387
|
+
}
|
|
388
|
+
// Handle array fields
|
|
389
|
+
if (field.type === 'array') {
|
|
390
|
+
// Add the array field itself if it has a name
|
|
391
|
+
if (field.name) {
|
|
392
|
+
const fieldPath = prefix ? `${prefix}.${field.name}` : field.name;
|
|
393
|
+
analyzedFields.push({
|
|
394
|
+
name: field.name,
|
|
395
|
+
type: field.type,
|
|
396
|
+
label: field.label || field.name || 'Array Field',
|
|
397
|
+
path: fieldPath
|
|
398
|
+
});
|
|
399
|
+
}
|
|
400
|
+
// Process array items
|
|
401
|
+
if (field.of && Array.isArray(field.of)) {
|
|
402
|
+
field.of.forEach((arrayField, index)=>{
|
|
403
|
+
if (arrayField && arrayField.fields) {
|
|
404
|
+
const arrayPath = field.name ? prefix ? `${prefix}.${field.name}[${index}]` : `${field.name}[${index}]` : `${prefix || ''}[${index}]`;
|
|
405
|
+
analyzedFields.push(...analyzePayloadFields(arrayField.fields, arrayPath));
|
|
406
|
+
}
|
|
407
|
+
});
|
|
408
|
+
}
|
|
409
|
+
} else if (field.type === 'blocks') {
|
|
410
|
+
// Add the blocks field itself if it has a name
|
|
411
|
+
if (field.name) {
|
|
412
|
+
const fieldPath = prefix ? `${prefix}.${field.name}` : field.name;
|
|
413
|
+
analyzedFields.push({
|
|
414
|
+
name: field.name,
|
|
415
|
+
type: field.type,
|
|
416
|
+
label: field.label || field.name || 'Blocks Field',
|
|
417
|
+
path: fieldPath
|
|
418
|
+
});
|
|
419
|
+
}
|
|
420
|
+
// Process individual blocks
|
|
421
|
+
if (field.blocks && Array.isArray(field.blocks)) {
|
|
422
|
+
field.blocks.forEach((block)=>{
|
|
423
|
+
if (block && block.fields && block.slug) {
|
|
424
|
+
const blockPath = field.name ? prefix ? `${prefix}.${field.name}.${block.slug}` : `${field.name}.${block.slug}` : `${prefix || ''}.${block.slug}`;
|
|
425
|
+
analyzedFields.push(...analyzePayloadFields(block.fields, blockPath));
|
|
426
|
+
}
|
|
427
|
+
});
|
|
428
|
+
}
|
|
429
|
+
} else if (field.type === 'tabs' && field.tabs && Array.isArray(field.tabs)) {
|
|
430
|
+
field.tabs.forEach((tab)=>{
|
|
431
|
+
if (tab && tab.fields) {
|
|
432
|
+
// If tab has a name, it creates a nested path (like 'meta' tab)
|
|
433
|
+
// If tab has no name, it's just organizational
|
|
434
|
+
const tabPath = tab.name ? prefix ? `${prefix}.${tab.name}` : tab.name : prefix;
|
|
435
|
+
analyzedFields.push(...analyzePayloadFields(tab.fields, tabPath));
|
|
436
|
+
}
|
|
437
|
+
});
|
|
438
|
+
} else if (field.name && field.type) {
|
|
439
|
+
const fieldPath = prefix ? `${prefix}.${field.name}` : field.name;
|
|
440
|
+
// Handle label: false case explicitly - use field name as label
|
|
441
|
+
let fieldLabel;
|
|
442
|
+
if (field.label === false || field.label === undefined || field.label === null || field.label === '') {
|
|
443
|
+
fieldLabel = field.name || 'Field';
|
|
444
|
+
} else if (typeof field.label === 'string') {
|
|
445
|
+
fieldLabel = field.label;
|
|
446
|
+
} else {
|
|
447
|
+
fieldLabel = field.name || 'Field';
|
|
448
|
+
}
|
|
449
|
+
const baseField = {
|
|
450
|
+
name: field.name,
|
|
451
|
+
type: field.type,
|
|
452
|
+
label: fieldLabel,
|
|
453
|
+
path: fieldPath
|
|
454
|
+
};
|
|
455
|
+
analyzedFields.push(baseField);
|
|
456
|
+
} else if (field.type && !field.name) {
|
|
457
|
+
console.warn('Found field with type but no name:', {
|
|
458
|
+
type: field.type,
|
|
459
|
+
admin: field.admin,
|
|
460
|
+
fullField: field,
|
|
461
|
+
label: field.label,
|
|
462
|
+
prefix
|
|
463
|
+
});
|
|
464
|
+
} else if (!field.name && field.fields && Array.isArray(field.fields)) {
|
|
465
|
+
// Process fields without adding to path
|
|
466
|
+
analyzedFields.push(...analyzePayloadFields(field.fields, prefix));
|
|
467
|
+
} else {
|
|
468
|
+
// Log problematic fields for debugging
|
|
469
|
+
console.warn('Skipping field with missing name or type:', {
|
|
470
|
+
name: field.name,
|
|
471
|
+
type: field.type,
|
|
472
|
+
hasBlocks: !!field.blocks,
|
|
473
|
+
hasFields: !!field.fields,
|
|
474
|
+
hasOf: !!field.of,
|
|
475
|
+
hasTabs: !!field.tabs
|
|
476
|
+
});
|
|
477
|
+
}
|
|
478
|
+
} catch (error) {
|
|
479
|
+
console.warn('Error processing field:', field, error);
|
|
480
|
+
}
|
|
481
|
+
});
|
|
482
|
+
// Filter out any fields with undefined names, types, or labels
|
|
483
|
+
const validFields = analyzedFields.filter((field)=>{
|
|
484
|
+
const isValid = field && field.name && field.type && field.label && field.path && field.name !== 'undefined' && field.type !== 'undefined' && field.label !== 'undefined' && typeof field.name === 'string' && typeof field.type === 'string' && typeof field.label === 'string';
|
|
485
|
+
if (!isValid) {
|
|
486
|
+
console.warn('❌ Filtering out invalid field:', {
|
|
487
|
+
name: field?.name,
|
|
488
|
+
type: field?.type,
|
|
489
|
+
label: field?.label,
|
|
490
|
+
labelType: typeof field?.label,
|
|
491
|
+
nameType: typeof field?.name,
|
|
492
|
+
path: field?.path,
|
|
493
|
+
typeType: typeof field?.type
|
|
494
|
+
});
|
|
495
|
+
}
|
|
496
|
+
return isValid;
|
|
497
|
+
});
|
|
498
|
+
return validFields;
|
|
499
|
+
};
|
|
500
|
+
|
|
501
|
+
export { analyzePayloadFields, analyzeWordPressFields };
|
|
502
|
+
//# sourceMappingURL=analyzer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"analyzer.js","sources":["../../../src/utils/fields/analyzer.ts"],"sourcesContent":["/** WordPress and PayloadCMS field structure analysis for migration mapping. */\n\nimport type { AnalyzedField, WordPressItem } from '../types.js'\n\ntype PartialField = Omit<AnalyzedField, 'path'>\n\nexport const analyzeWordPressFields = (item: WordPressItem | null, contentType: string): AnalyzedField[] => {\n const fields: PartialField[] = []\n\n // Common WordPress fields\n const commonFields = [\n { name: 'id', type: 'number', label: 'ID' },\n { name: 'date', type: 'date', label: 'Date' },\n { name: 'date_gmt', type: 'date', label: 'Date (GMT)' },\n { name: 'modified', type: 'date', label: 'Modified' },\n { name: 'modified_gmt', type: 'date', label: 'Modified (GMT)' },\n { name: 'slug', type: 'text', label: 'Slug' },\n { name: 'status', type: 'text', label: 'Status' },\n { name: 'link', type: 'url', label: 'Link' },\n ]\n\n fields.push(...commonFields)\n\n // Content type specific fields\n switch (contentType) {\n case 'categories':\n fields.push(\n { name: 'name', type: 'text', label: 'Name' },\n { name: 'description', type: 'textarea', label: 'Description' },\n { name: 'count', type: 'number', label: 'Count' },\n { name: 'parent', type: 'number', label: 'Parent ID' },\n )\n break\n case 'media':\n fields.push(\n { name: 'title.rendered', type: 'text', label: 'Title' },\n { name: 'description.rendered', type: 'textarea', label: 'Description' },\n { name: 'caption.rendered', type: 'textarea', label: 'Caption' },\n { name: 'alt_text', type: 'text', label: 'Alt Text' },\n { name: 'media_type', type: 'text', label: 'Media Type' },\n { name: 'mime_type', type: 'text', label: 'MIME Type' },\n { name: 'media_details', type: 'json', label: 'Media Details' },\n { name: 'source_url', type: 'url', label: 'Source URL' },\n )\n break\n\n case 'pages':\n fields.push(\n { name: 'title.rendered', type: 'text', label: 'Title' },\n { name: 'content.rendered', type: 'richText', label: 'Content' },\n { name: 'excerpt.rendered', type: 'textarea', label: 'Excerpt' },\n { name: 'author', type: 'number', label: 'Author ID' },\n { name: 'featured_media', type: 'number', label: 'Featured Media ID' },\n )\n break\n\n case 'posts':\n fields.push(\n { name: 'title.rendered', type: 'text', label: 'Title' },\n { name: 'content.rendered', type: 'richText', label: 'Content' },\n { name: 'excerpt.rendered', type: 'textarea', label: 'Excerpt' },\n { name: 'author', type: 'number', label: 'Author ID' },\n { name: 'featured_media', type: 'number', label: 'Featured Media ID' },\n { name: 'comment_status', type: 'text', label: 'Comment Status' },\n { name: 'ping_status', type: 'text', label: 'Ping Status' },\n { name: 'sticky', type: 'checkbox', label: 'Sticky' },\n { name: 'template', type: 'text', label: 'Template' },\n { name: 'format', type: 'text', label: 'Format' },\n { name: 'categories', type: 'array', label: 'Categories' },\n { name: 'tags', type: 'array', label: 'Tags' },\n )\n break\n\n case 'users':\n fields.push(\n { name: 'username', type: 'text', label: 'Username' },\n { name: 'name', type: 'text', label: 'Display Name' },\n { name: 'first_name', type: 'text', label: 'First Name' },\n { name: 'last_name', type: 'text', label: 'Last Name' },\n { name: 'email', type: 'email', label: 'Email' },\n { name: 'url', type: 'url', label: 'Website URL' },\n { name: 'description', type: 'textarea', label: 'Biography' },\n { name: 'roles', type: 'array', label: 'Roles' },\n { name: 'capabilities', type: 'json', label: 'Capabilities' },\n { name: 'avatar_urls', type: 'json', label: 'Avatar URLs' },\n )\n break\n }\n\n // Add common SEO plugin fields (even if not present in sample)\n const commonSEOFields = [\n // Yoast SEO fields\n { name: 'yoast_head_json.title', type: 'text', label: 'Yoast: SEO Title' },\n { name: 'yoast_head_json.description', type: 'text', label: 'Yoast: Meta Description' },\n { name: 'yoast_head_json.og_image[0].url', type: 'url', label: 'Yoast: OG Image URL' },\n { name: 'meta._yoast_wpseo_title', type: 'text', label: 'Yoast: Title (Meta)' },\n { name: 'meta._yoast_wpseo_metadesc', type: 'text', label: 'Yoast: Description (Meta)' },\n { name: 'meta._yoast_wpseo_opengraph_image', type: 'url', label: 'Yoast: OG Image (Meta)' },\n\n // RankMath SEO fields\n { name: 'meta.rank_math_title', type: 'text', label: 'RankMath: SEO Title' },\n { name: 'meta.rank_math_description', type: 'text', label: 'RankMath: Meta Description' },\n { name: 'meta.rank_math_facebook_image', type: 'url', label: 'RankMath: Facebook Image' },\n\n // All in One SEO fields\n { name: 'meta._aioseo_title', type: 'text', label: 'AIOSEO: SEO Title' },\n { name: 'meta._aioseo_description', type: 'text', label: 'AIOSEO: Meta Description' },\n { name: 'meta._aioseo_og_image', type: 'url', label: 'AIOSEO: OG Image' },\n\n // SEOPress fields\n { name: 'meta.seopress_titles_title', type: 'text', label: 'SEOPress: SEO Title' },\n { name: 'meta.seopress_titles_desc', type: 'text', label: 'SEOPress: Meta Description' },\n { name: 'meta.seopress_social_fb_img', type: 'url', label: 'SEOPress: Facebook Image' },\n ]\n\n // Add common SEO fields for posts content type\n if (contentType === 'posts') {\n fields.push(...commonSEOFields)\n }\n\n // Check for custom fields (meta) - existing fields from the sample\n if (item?.meta && typeof item.meta === 'object') {\n Object.keys(item.meta!).forEach((metaKey) => {\n // Skip if we already added this as a common SEO field\n const alreadyAdded = commonSEOFields.some((field) => field.name === `meta.${metaKey}`)\n if (alreadyAdded) {\n return\n }\n\n const metaValue = item.meta![metaKey]\n const fieldType =\n typeof metaValue === 'number'\n ? 'number'\n : typeof metaValue === 'boolean'\n ? 'checkbox'\n : Array.isArray(metaValue)\n ? 'array'\n : typeof metaValue === 'object'\n ? 'json'\n : 'text'\n\n fields.push({\n name: `meta.${metaKey}`,\n type: fieldType,\n custom: true,\n label: `Meta: ${metaKey}`,\n })\n })\n }\n\n // Check for Yoast head JSON (even if not in meta)\n if (item && item.yoast_head_json && typeof item.yoast_head_json === 'object') {\n // These are already added above, but we can add more specific ones if found\n if (item.yoast_head_json.og_image && Array.isArray(item.yoast_head_json.og_image)) {\n item.yoast_head_json.og_image.forEach((img: any, index: number) => {\n if (img.url) {\n fields.push({\n name: `yoast_head_json.og_image[${index}].url`,\n type: 'url',\n custom: true,\n label: `Yoast: OG Image ${index + 1} URL`,\n })\n }\n })\n }\n }\n\n // Check for ACF fields\n if (item?.acf && typeof item.acf === 'object') {\n Object.keys(item.acf!).forEach((acfKey) => {\n const acfValue = item.acf![acfKey]\n const fieldType =\n typeof acfValue === 'number'\n ? 'number'\n : typeof acfValue === 'boolean'\n ? 'checkbox'\n : Array.isArray(acfValue)\n ? 'array'\n : typeof acfValue === 'object'\n ? 'json'\n : 'text'\n\n fields.push({\n name: `acf.${acfKey}`,\n type: fieldType,\n custom: true,\n label: `ACF: ${acfKey}`,\n })\n })\n }\n\n const finalFields = fields.map((field) => ({\n ...field,\n path: field.name,\n }))\n\n return finalFields\n}\n\n/**\n * Analyze Payload collection fields\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport const analyzePayloadFields = (fields: any[], prefix = ''): AnalyzedField[] => {\n const analyzedFields: AnalyzedField[] = []\n\n fields.forEach((field, index) => {\n // Skip completely invalid fields\n if (!field) {\n console.warn(`Skipping null/undefined field at index ${index}`)\n return\n }\n\n // Debug logging for problematic fields\n if (field.type === 'date' && (!field.name || field.name === 'undefined')) {\n console.warn(`Found problematic date field at index ${index}:`, {\n name: field.name,\n type: field.type,\n admin: field.admin,\n fullField: field,\n label: field.label,\n })\n }\n\n try {\n // First, handle nested structures that need destructuring\n\n // Handle nested fields (groups, tabs, etc.)\n if (field.fields && Array.isArray(field.fields)) {\n const nestedPath = field.name ? (prefix ? `${prefix}.${field.name}` : field.name) : prefix\n analyzedFields.push(...analyzePayloadFields(field.fields, nestedPath))\n }\n\n // Handle array fields\n if (field.type === 'array') {\n // Add the array field itself if it has a name\n if (field.name) {\n const fieldPath = prefix ? `${prefix}.${field.name}` : field.name\n analyzedFields.push({\n name: field.name,\n type: field.type,\n label: field.label || field.name || 'Array Field',\n path: fieldPath,\n })\n }\n\n // Process array items\n if (field.of && Array.isArray(field.of)) {\n field.of.forEach((arrayField: any, index: number) => {\n if (arrayField && arrayField.fields) {\n const arrayPath = field.name\n ? prefix\n ? `${prefix}.${field.name}[${index}]`\n : `${field.name}[${index}]`\n : `${prefix || ''}[${index}]`\n analyzedFields.push(...analyzePayloadFields(arrayField.fields, arrayPath))\n }\n })\n }\n }\n // Handle blocks field\n else if (field.type === 'blocks') {\n // Add the blocks field itself if it has a name\n if (field.name) {\n const fieldPath = prefix ? `${prefix}.${field.name}` : field.name\n analyzedFields.push({\n name: field.name,\n type: field.type,\n label: field.label || field.name || 'Blocks Field',\n path: fieldPath,\n })\n }\n\n // Process individual blocks\n if (field.blocks && Array.isArray(field.blocks)) {\n field.blocks.forEach((block: any) => {\n if (block && block.fields && block.slug) {\n const blockPath = field.name\n ? prefix\n ? `${prefix}.${field.name}.${block.slug}`\n : `${field.name}.${block.slug}`\n : `${prefix || ''}.${block.slug}`\n analyzedFields.push(...analyzePayloadFields(block.fields, blockPath))\n }\n })\n }\n }\n // Handle tabs (which contain fields but aren't fields themselves)\n else if (field.type === 'tabs' && field.tabs && Array.isArray(field.tabs)) {\n field.tabs.forEach((tab: any) => {\n if (tab && tab.fields) {\n // If tab has a name, it creates a nested path (like 'meta' tab)\n // If tab has no name, it's just organizational\n const tabPath = tab.name ? (prefix ? `${prefix}.${tab.name}` : tab.name) : prefix\n analyzedFields.push(...analyzePayloadFields(tab.fields, tabPath))\n }\n })\n }\n // Handle regular fields\n else if (field.name && field.type) {\n const fieldPath = prefix ? `${prefix}.${field.name}` : field.name\n\n // Handle label: false case explicitly - use field name as label\n let fieldLabel: string\n if (\n field.label === false ||\n field.label === undefined ||\n field.label === null ||\n field.label === ''\n ) {\n fieldLabel = field.name || 'Field'\n } else if (typeof field.label === 'string') {\n fieldLabel = field.label\n } else {\n fieldLabel = field.name || 'Field'\n }\n\n const baseField = {\n name: field.name,\n type: field.type,\n label: fieldLabel,\n path: fieldPath,\n }\n\n analyzedFields.push(baseField)\n }\n // Handle fields with type but no name (this might be causing the undefined issue)\n else if (field.type && !field.name) {\n console.warn('Found field with type but no name:', {\n type: field.type,\n admin: field.admin,\n fullField: field,\n label: field.label,\n prefix,\n })\n }\n // Handle fields that might be structural but unnamed (like unnamed groups)\n else if (!field.name && field.fields && Array.isArray(field.fields)) {\n // Process fields without adding to path\n analyzedFields.push(...analyzePayloadFields(field.fields, prefix))\n } else {\n // Log problematic fields for debugging\n console.warn('Skipping field with missing name or type:', {\n name: field.name,\n type: field.type,\n hasBlocks: !!field.blocks,\n hasFields: !!field.fields,\n hasOf: !!field.of,\n hasTabs: !!field.tabs,\n })\n }\n } catch (error) {\n console.warn('Error processing field:', field, error)\n }\n })\n\n // Filter out any fields with undefined names, types, or labels\n const validFields = analyzedFields.filter((field) => {\n const isValid =\n field &&\n field.name &&\n field.type &&\n field.label &&\n field.path &&\n field.name !== 'undefined' &&\n field.type !== 'undefined' &&\n field.label !== 'undefined' &&\n typeof field.name === 'string' &&\n typeof field.type === 'string' &&\n typeof field.label === 'string'\n\n if (!isValid) {\n console.warn('❌ Filtering out invalid field:', {\n name: field?.name,\n type: field?.type,\n label: field?.label,\n labelType: typeof field?.label,\n nameType: typeof field?.name,\n path: field?.path,\n typeType: typeof field?.type,\n })\n }\n\n return isValid\n })\n\n return validFields\n}\n"],"names":["analyzeWordPressFields","item","contentType","fields","commonFields","name","type","label","push","commonSEOFields","meta","Object","keys","forEach","metaKey","alreadyAdded","some","field","metaValue","fieldType","Array","isArray","custom","yoast_head_json","og_image","img","index","url","acf","acfKey","acfValue","finalFields","map","path","analyzePayloadFields","prefix","analyzedFields","console","warn","admin","fullField","nestedPath","fieldPath","of","arrayField","arrayPath","blocks","block","slug","blockPath","tabs","tab","tabPath","fieldLabel","undefined","baseField","hasBlocks","hasFields","hasOf","hasTabs","error","validFields","filter","isValid","labelType","nameType","typeType"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/** Authentication and request parsing utilities for endpoint handlers. */
|
|
2
|
+
import type { PayloadRequest } from 'payload';
|
|
3
|
+
import type { WordPressCredentials } from '../types.js';
|
|
4
|
+
export declare const requireAuth: (req: PayloadRequest) => Response | null;
|
|
5
|
+
export declare const requireMigrationAccess: (req: PayloadRequest, accessFn?: (args: {
|
|
6
|
+
req: PayloadRequest;
|
|
7
|
+
}) => boolean | Promise<boolean>) => Promise<Response | null>;
|
|
8
|
+
export declare const parseRequestBody: (req: PayloadRequest) => Promise<any>;
|
|
9
|
+
export declare const validateWordPressCredentials: (body: any) => WordPressCredentials;
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { createErrorResponse } from './responses.js';
|
|
2
|
+
|
|
3
|
+
const requireAuth = (req)=>{
|
|
4
|
+
if (!req.user) {
|
|
5
|
+
return createErrorResponse('Authentication required', 401);
|
|
6
|
+
}
|
|
7
|
+
return null;
|
|
8
|
+
};
|
|
9
|
+
const requireMigrationAccess = async (req, accessFn)=>{
|
|
10
|
+
if (!req.user) {
|
|
11
|
+
return createErrorResponse('Authentication required', 401);
|
|
12
|
+
}
|
|
13
|
+
if (accessFn) {
|
|
14
|
+
const allowed = await accessFn({
|
|
15
|
+
req
|
|
16
|
+
});
|
|
17
|
+
if (!allowed) {
|
|
18
|
+
return createErrorResponse('Insufficient permissions for migration operations', 403);
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
return null;
|
|
22
|
+
};
|
|
23
|
+
const parseRequestBody = async (req)=>{
|
|
24
|
+
let body = {};
|
|
25
|
+
if (req.json && typeof req.json === 'function') {
|
|
26
|
+
try {
|
|
27
|
+
body = await req.json();
|
|
28
|
+
} catch (jsonError) {
|
|
29
|
+
console.error('Failed to parse JSON from request:', jsonError);
|
|
30
|
+
throw new Error('Invalid JSON in request body');
|
|
31
|
+
}
|
|
32
|
+
} else if (req.body) {
|
|
33
|
+
body = req.body;
|
|
34
|
+
}
|
|
35
|
+
return body;
|
|
36
|
+
};
|
|
37
|
+
const validateWordPressCredentials = (body)=>{
|
|
38
|
+
const { wpPassword, wpSiteUrl, wpUsername } = body;
|
|
39
|
+
if (!wpSiteUrl || !wpUsername || !wpPassword) {
|
|
40
|
+
throw new Error('Missing required fields: wpSiteUrl, wpUsername, wpPassword');
|
|
41
|
+
}
|
|
42
|
+
return {
|
|
43
|
+
wpPassword,
|
|
44
|
+
wpSiteUrl,
|
|
45
|
+
wpUsername
|
|
46
|
+
};
|
|
47
|
+
};
|
|
48
|
+
|
|
49
|
+
export { parseRequestBody, requireAuth, requireMigrationAccess, validateWordPressCredentials };
|
|
50
|
+
//# sourceMappingURL=auth.js.map
|