@se-studio/project-build 1.0.68 → 1.0.71
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/CHANGELOG.md +18 -0
- package/package.json +2 -4
- package/skills/se-marketing-sites/create-collection/SKILL.md +14 -10
- package/skills/se-marketing-sites/create-component/SKILL.md +1 -1
- package/skills/se-marketing-sites/handling-media/SKILL.md +19 -0
- package/skills/se-marketing-sites/lib-cms-structure/SKILL.md +8 -6
- package/skills/se-marketing-sites/register-cms-features/SKILL.md +15 -15
- package/skills/se-marketing-sites/styling-system/SKILL.md +1 -1
- package/dist/management/check-target.d.ts +0 -2
- package/dist/management/check-target.d.ts.map +0 -1
- package/dist/management/check-target.js +0 -40
- package/dist/management/check-target.js.map +0 -1
- package/dist/management/count-brightline.d.ts +0 -2
- package/dist/management/count-brightline.d.ts.map +0 -1
- package/dist/management/count-brightline.js +0 -37
- package/dist/management/count-brightline.js.map +0 -1
- package/dist/management/cross-check-migration.d.ts +0 -2
- package/dist/management/cross-check-migration.d.ts.map +0 -1
- package/dist/management/cross-check-migration.js +0 -212
- package/dist/management/cross-check-migration.js.map +0 -1
- package/dist/management/discovery-brightlife.d.ts +0 -2
- package/dist/management/discovery-brightlife.d.ts.map +0 -1
- package/dist/management/discovery-brightlife.js +0 -78
- package/dist/management/discovery-brightlife.js.map +0 -1
- package/dist/management/discovery-brightline.d.ts +0 -2
- package/dist/management/discovery-brightline.d.ts.map +0 -1
- package/dist/management/discovery-brightline.js +0 -68
- package/dist/management/discovery-brightline.js.map +0 -1
- package/dist/management/generateVisibilityJson.d.ts +0 -3
- package/dist/management/generateVisibilityJson.d.ts.map +0 -1
- package/dist/management/generateVisibilityJson.js +0 -149
- package/dist/management/generateVisibilityJson.js.map +0 -1
- package/dist/management/inspect-target.d.ts +0 -2
- package/dist/management/inspect-target.d.ts.map +0 -1
- package/dist/management/inspect-target.js +0 -48
- package/dist/management/inspect-target.js.map +0 -1
- package/dist/management/migrate-brightlife.d.ts +0 -2
- package/dist/management/migrate-brightlife.d.ts.map +0 -1
- package/dist/management/migrate-brightlife.js +0 -475
- package/dist/management/migrate-brightlife.js.map +0 -1
- package/dist/management/migrate-brightline.d.ts +0 -2
- package/dist/management/migrate-brightline.d.ts.map +0 -1
- package/dist/management/migrate-brightline.js +0 -1085
- package/dist/management/migrate-brightline.js.map +0 -1
|
@@ -1,475 +0,0 @@
|
|
|
1
|
-
import contentfulManagement from 'contentful-management';
|
|
2
|
-
import dotenv from 'dotenv';
|
|
3
|
-
dotenv.config();
|
|
4
|
-
const SPACE_ID = 'c27ds9epot4n';
|
|
5
|
-
const SOURCE_ENV_ID = 'master';
|
|
6
|
-
const TARGET_ENV_ID = 'production-2026';
|
|
7
|
-
const DRY_RUN = process.argv.includes('--dry-run');
|
|
8
|
-
const stats = {
|
|
9
|
-
assets: { created: 0, skipped: 0, errors: 0 },
|
|
10
|
-
entries: { created: 0, skipped: 0, errors: 0 },
|
|
11
|
-
};
|
|
12
|
-
// ID Mapping: Old ID -> New ID
|
|
13
|
-
const idMap = new Map();
|
|
14
|
-
async function getEnvironment(spaceId, envId) {
|
|
15
|
-
const accessToken = process.env.CONTENTFUL_MANAGEMENT_TOKEN;
|
|
16
|
-
if (!accessToken) {
|
|
17
|
-
throw new Error('CONTENTFUL_MANAGEMENT_TOKEN is not set');
|
|
18
|
-
}
|
|
19
|
-
const client = contentfulManagement.createClient({ accessToken });
|
|
20
|
-
const space = await client.getSpace(spaceId);
|
|
21
|
-
return space.getEnvironment(envId);
|
|
22
|
-
}
|
|
23
|
-
// Helper to fetch all entries with pagination
|
|
24
|
-
async function fetchAllEntries(env, query = {}) {
|
|
25
|
-
const limit = 1000;
|
|
26
|
-
let skip = 0;
|
|
27
|
-
let allItems = [];
|
|
28
|
-
while (true) {
|
|
29
|
-
const response = await env.getEntries({ ...query, limit, skip });
|
|
30
|
-
allItems = allItems.concat(response.items);
|
|
31
|
-
skip += limit;
|
|
32
|
-
if (response.items.length < limit)
|
|
33
|
-
break;
|
|
34
|
-
console.log(`Fetched ${allItems.length} entries so far...`);
|
|
35
|
-
}
|
|
36
|
-
return allItems;
|
|
37
|
-
}
|
|
38
|
-
// Helper to fetch all assets with pagination
|
|
39
|
-
async function fetchAllAssets(env, query = {}) {
|
|
40
|
-
const limit = 1000;
|
|
41
|
-
let skip = 0;
|
|
42
|
-
let allItems = [];
|
|
43
|
-
while (true) {
|
|
44
|
-
const response = await env.getAssets({ ...query, limit, skip });
|
|
45
|
-
allItems = allItems.concat(response.items);
|
|
46
|
-
skip += limit;
|
|
47
|
-
if (response.items.length < limit)
|
|
48
|
-
break;
|
|
49
|
-
console.log(`Fetched ${allItems.length} assets so far...`);
|
|
50
|
-
}
|
|
51
|
-
return allItems;
|
|
52
|
-
}
|
|
53
|
-
// --- Asset Migration ---
|
|
54
|
-
async function migrateAssets(sourceEnv, targetEnv) {
|
|
55
|
-
console.log('\n--- Migrating Assets ---');
|
|
56
|
-
const sourceAssetsItems = await fetchAllAssets(sourceEnv);
|
|
57
|
-
for (const asset of sourceAssetsItems) {
|
|
58
|
-
try {
|
|
59
|
-
if (DRY_RUN) {
|
|
60
|
-
console.log(`[Dry Run] Would migrate asset: ${asset.sys.id}`);
|
|
61
|
-
idMap.set(asset.sys.id, asset.sys.id); // Assuming we keep same IDs
|
|
62
|
-
stats.assets.created++;
|
|
63
|
-
continue;
|
|
64
|
-
}
|
|
65
|
-
// Check if asset exists in target
|
|
66
|
-
let targetAsset;
|
|
67
|
-
try {
|
|
68
|
-
targetAsset = await targetEnv.getAsset(asset.sys.id);
|
|
69
|
-
console.log(`Asset ${asset.sys.id} already exists. Skipping.`);
|
|
70
|
-
stats.assets.skipped++;
|
|
71
|
-
}
|
|
72
|
-
catch (e) {
|
|
73
|
-
// Create asset
|
|
74
|
-
console.log(`Creating asset: ${asset.sys.id}`);
|
|
75
|
-
targetAsset = await targetEnv.createAssetWithId(asset.sys.id, {
|
|
76
|
-
fields: asset.fields,
|
|
77
|
-
metadata: asset.metadata,
|
|
78
|
-
});
|
|
79
|
-
await targetAsset.publish();
|
|
80
|
-
stats.assets.created++;
|
|
81
|
-
}
|
|
82
|
-
idMap.set(asset.sys.id, targetAsset.sys.id);
|
|
83
|
-
}
|
|
84
|
-
catch (error) {
|
|
85
|
-
console.error(`Failed to migrate asset ${asset.sys.id}:`, error);
|
|
86
|
-
stats.assets.errors++;
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
|
-
// Helper to create wrapper ID
|
|
91
|
-
function getWrapperId(assetId) {
|
|
92
|
-
return `visual-${assetId}`;
|
|
93
|
-
}
|
|
94
|
-
// Helper to create wrapper entry map
|
|
95
|
-
// We need to create these wrapper entries (media or component/Image)
|
|
96
|
-
async function ensureWrapperEntry(targetEnv, assetId, title = 'Visual Wrapper') {
|
|
97
|
-
const wrapperId = getWrapperId(assetId);
|
|
98
|
-
// We'll create a 'media' entry. If schema says otherwise we fallback.
|
|
99
|
-
// Inspection said 'media' has 'asset' (Link) and 'name' (Symbol).
|
|
100
|
-
if (DRY_RUN) {
|
|
101
|
-
console.log(`[Dry Run] Would ensure wrapper entry ${wrapperId} for asset ${assetId}`);
|
|
102
|
-
idMap.set(wrapperId, wrapperId);
|
|
103
|
-
return wrapperId;
|
|
104
|
-
}
|
|
105
|
-
try {
|
|
106
|
-
try {
|
|
107
|
-
await targetEnv.getEntry(wrapperId);
|
|
108
|
-
// Exists
|
|
109
|
-
}
|
|
110
|
-
catch (e) {
|
|
111
|
-
console.log(`Creating wrapper entry ${wrapperId} for asset ${assetId}`);
|
|
112
|
-
const entry = await targetEnv.createEntryWithId('media', wrapperId, {
|
|
113
|
-
fields: {
|
|
114
|
-
name: { 'en-US': title },
|
|
115
|
-
asset: { 'en-US': { sys: { type: 'Link', linkType: 'Asset', id: assetId } } },
|
|
116
|
-
},
|
|
117
|
-
});
|
|
118
|
-
await entry.publish();
|
|
119
|
-
}
|
|
120
|
-
}
|
|
121
|
-
catch (error) {
|
|
122
|
-
console.error(`Failed to ensure wrapper ${wrapperId}:`, error);
|
|
123
|
-
// Fallback?
|
|
124
|
-
}
|
|
125
|
-
return wrapperId;
|
|
126
|
-
}
|
|
127
|
-
// --- Entry Transformation ---
|
|
128
|
-
function mapSys(sys) {
|
|
129
|
-
return {
|
|
130
|
-
id: sys.id,
|
|
131
|
-
};
|
|
132
|
-
}
|
|
133
|
-
// Helper to get localized value (assuming 'en-US' or generic)
|
|
134
|
-
// For simplicity, we'll take the first locale value we find if generic, or specific one
|
|
135
|
-
function getVal(field, locale = 'en-US') {
|
|
136
|
-
if (!field)
|
|
137
|
-
return undefined;
|
|
138
|
-
return field[locale] || Object.values(field)[0];
|
|
139
|
-
}
|
|
140
|
-
function createLink(id, linkType) {
|
|
141
|
-
return {
|
|
142
|
-
sys: {
|
|
143
|
-
type: 'Link',
|
|
144
|
-
linkType,
|
|
145
|
-
id,
|
|
146
|
-
},
|
|
147
|
-
};
|
|
148
|
-
}
|
|
149
|
-
// Transform Rich Text to update embedded links
|
|
150
|
-
function transformRichText(document) {
|
|
151
|
-
if (!document || !document.nodeType)
|
|
152
|
-
return document;
|
|
153
|
-
// Deep clone to avoid mutating original if needed (though we're mapping)
|
|
154
|
-
const newDoc = JSON.parse(JSON.stringify(document));
|
|
155
|
-
function traverse(node) {
|
|
156
|
-
if (node.data && node.data.target && node.data.target.sys) {
|
|
157
|
-
const oldId = node.data.target.sys.id;
|
|
158
|
-
// If we have a map, use it. If not, keep old ID (maybe it wasn't migrated yet or is same)
|
|
159
|
-
// For Assets, we kept IDs. For Entries, we might keep IDs too if possible.
|
|
160
|
-
if (idMap.has(oldId)) {
|
|
161
|
-
node.data.target.sys.id = idMap.get(oldId);
|
|
162
|
-
}
|
|
163
|
-
}
|
|
164
|
-
if (node.content) {
|
|
165
|
-
node.content.forEach(traverse);
|
|
166
|
-
}
|
|
167
|
-
}
|
|
168
|
-
traverse(newDoc);
|
|
169
|
-
return newDoc;
|
|
170
|
-
}
|
|
171
|
-
// Main Mapping Function
|
|
172
|
-
function mapEntry(entry) {
|
|
173
|
-
const contentTypeId = entry.sys.contentType.sys.id;
|
|
174
|
-
const fields = {};
|
|
175
|
-
const locale = 'en-US'; // Default locale for new entries
|
|
176
|
-
// Helper to set field
|
|
177
|
-
const set = (key, value) => {
|
|
178
|
-
if (value !== undefined)
|
|
179
|
-
fields[key] = { [locale]: value };
|
|
180
|
-
};
|
|
181
|
-
// Helper to resolve link
|
|
182
|
-
const link = (fieldVal, type = 'Entry') => {
|
|
183
|
-
if (!fieldVal)
|
|
184
|
-
return undefined;
|
|
185
|
-
// Check if it's a list
|
|
186
|
-
if (Array.isArray(fieldVal)) {
|
|
187
|
-
return fieldVal.map((item) => {
|
|
188
|
-
const oldId = item.sys.id;
|
|
189
|
-
// For generic 'contents' arrays, we just map the ID.
|
|
190
|
-
return createLink(idMap.get(oldId) || oldId, type);
|
|
191
|
-
});
|
|
192
|
-
}
|
|
193
|
-
const oldId = fieldVal.sys.id;
|
|
194
|
-
return createLink(idMap.get(oldId) || oldId, type);
|
|
195
|
-
};
|
|
196
|
-
// Helper to link visual (wraps asset in media entry)
|
|
197
|
-
// IMPORTANT: This returns a Link to an ENTRY, not ASSET
|
|
198
|
-
const linkVisual = (fieldVal) => {
|
|
199
|
-
if (!fieldVal)
|
|
200
|
-
return undefined;
|
|
201
|
-
const assetId = fieldVal.sys.id;
|
|
202
|
-
// We assume wrapper is created or will be created with deterministic ID
|
|
203
|
-
return createLink(getWrapperId(assetId), 'Entry');
|
|
204
|
-
};
|
|
205
|
-
if (contentTypeId === 'contentPage' || contentTypeId === 'blogPost') {
|
|
206
|
-
const type = contentTypeId === 'contentPage' ? 'page' : 'article';
|
|
207
|
-
set('title', getVal(entry.fields.title));
|
|
208
|
-
set('slug', getVal(entry.fields.path)); // contentPage uses 'path'
|
|
209
|
-
set('description', getVal(entry.fields.description)); // mapped to description/seo
|
|
210
|
-
// Featured Image
|
|
211
|
-
const socialImage = getVal(entry.fields.socialImage);
|
|
212
|
-
if (socialImage) {
|
|
213
|
-
// Page/Article 'featuredImage' expects Asset Link, not Media Entry Link
|
|
214
|
-
set('featuredImage', link(socialImage, 'Asset'));
|
|
215
|
-
}
|
|
216
|
-
// Contents
|
|
217
|
-
const contents = getVal(entry.fields.contents);
|
|
218
|
-
if (contents) {
|
|
219
|
-
set('contents', link(contents)); // 'contents' array is used in Article too (mapped from body/contents)
|
|
220
|
-
// Check if target schema 'article' has 'contents' -> Yes 'content' array
|
|
221
|
-
if (type === 'article') {
|
|
222
|
-
// The target field for main content in Article is 'content' not 'contents'
|
|
223
|
-
set('content', link(contents));
|
|
224
|
-
delete fields['contents'];
|
|
225
|
-
}
|
|
226
|
-
else {
|
|
227
|
-
// Page has 'content' too based on inspection
|
|
228
|
-
set('content', link(contents));
|
|
229
|
-
delete fields['contents'];
|
|
230
|
-
}
|
|
231
|
-
}
|
|
232
|
-
// Add required fields
|
|
233
|
-
set('cmsLabel', getVal(entry.fields.adminLabel) || getVal(entry.fields.title));
|
|
234
|
-
set('indexed', true);
|
|
235
|
-
set('hidden', false);
|
|
236
|
-
if (type === 'article') {
|
|
237
|
-
set('date', new Date().toISOString()); // Required field
|
|
238
|
-
// Link to "Blog Post" article type - we need to find/create this ID beforehand ideally
|
|
239
|
-
// set('articleType', ...);
|
|
240
|
-
}
|
|
241
|
-
return { contentType: type, fields };
|
|
242
|
-
}
|
|
243
|
-
if (contentTypeId === 'ctaCard') {
|
|
244
|
-
set('componentType', 'CtaCard');
|
|
245
|
-
set('heading', getVal(entry.fields.title));
|
|
246
|
-
set('preHeading', getVal(entry.fields.eyebrow));
|
|
247
|
-
set('postHeading', getVal(entry.fields.subtitle));
|
|
248
|
-
set('body', transformRichText(getVal(entry.fields.copy)));
|
|
249
|
-
set('cmsLabel', getVal(entry.fields.adminLabel) || 'CTA Card');
|
|
250
|
-
set('showHeading', !!getVal(entry.fields.title)); // Required
|
|
251
|
-
// Visual
|
|
252
|
-
const media = getVal(entry.fields.media);
|
|
253
|
-
const image = getVal(entry.fields.image);
|
|
254
|
-
if (media) {
|
|
255
|
-
set('visual', linkVisual(media));
|
|
256
|
-
}
|
|
257
|
-
else if (image) {
|
|
258
|
-
// Check if image is a link to imageAndAltText
|
|
259
|
-
if (image.sys.linkType === 'Entry') {
|
|
260
|
-
// It's already an entry (imageAndAltText), we can just link to it?
|
|
261
|
-
// Wait, we mapped imageAndAltText to 'component' (Image).
|
|
262
|
-
// So yes, we can link to it directly!
|
|
263
|
-
// BUT, the error says we provided an Asset link. That implies 'media' field was used (which is Asset link in source)
|
|
264
|
-
// If 'image' field is used, it links to an Entry.
|
|
265
|
-
// So if it's media (Asset), use linkVisual. If it's image (Entry), use link.
|
|
266
|
-
set('visual', link(image));
|
|
267
|
-
}
|
|
268
|
-
else {
|
|
269
|
-
// If for some reason it's an asset link
|
|
270
|
-
set('visual', linkVisual(image));
|
|
271
|
-
}
|
|
272
|
-
}
|
|
273
|
-
return { contentType: 'component', fields };
|
|
274
|
-
}
|
|
275
|
-
if (contentTypeId === 'quote') {
|
|
276
|
-
set('componentType', 'Quote');
|
|
277
|
-
set('body', transformRichText(getVal(entry.fields.copy)));
|
|
278
|
-
set('cmsLabel', getVal(entry.fields.adminLabel) || 'Quote');
|
|
279
|
-
set('showHeading', false);
|
|
280
|
-
return { contentType: 'component', fields };
|
|
281
|
-
}
|
|
282
|
-
if (contentTypeId === 'videoModule') {
|
|
283
|
-
set('componentType', 'Video');
|
|
284
|
-
set('heading', getVal(entry.fields.title));
|
|
285
|
-
set('cmsLabel', getVal(entry.fields.adminTitle) || 'Video');
|
|
286
|
-
set('showHeading', !!getVal(entry.fields.title));
|
|
287
|
-
const videoAsset = getVal(entry.fields.videoAsset);
|
|
288
|
-
if (videoAsset) {
|
|
289
|
-
set('visual', linkVisual(videoAsset));
|
|
290
|
-
}
|
|
291
|
-
return { contentType: 'component', fields };
|
|
292
|
-
}
|
|
293
|
-
if (contentTypeId === 'cards') {
|
|
294
|
-
set('collectionType', 'Card Collection');
|
|
295
|
-
set('cmsLabel', getVal(entry.fields.adminLabel) || 'Cards');
|
|
296
|
-
set('heading', getVal(entry.fields.title));
|
|
297
|
-
set('showHeading', !!getVal(entry.fields.title));
|
|
298
|
-
set('contents', link(getVal(entry.fields.cards)));
|
|
299
|
-
return { contentType: 'collection', fields };
|
|
300
|
-
}
|
|
301
|
-
if (contentTypeId === 'carousel') {
|
|
302
|
-
set('collectionType', 'Carousel');
|
|
303
|
-
set('cmsLabel', getVal(entry.fields.adminLabel) || 'Carousel');
|
|
304
|
-
set('showHeading', false);
|
|
305
|
-
set('contents', link(getVal(entry.fields.items)));
|
|
306
|
-
return { contentType: 'collection', fields };
|
|
307
|
-
}
|
|
308
|
-
if (contentTypeId === 'button') {
|
|
309
|
-
set('linkText', getVal(entry.fields.text));
|
|
310
|
-
set('external', getVal(entry.fields.linkUrl));
|
|
311
|
-
set('name', getVal(entry.fields.text) || 'Button');
|
|
312
|
-
set('useName', true);
|
|
313
|
-
return { contentType: 'link', fields };
|
|
314
|
-
}
|
|
315
|
-
if (contentTypeId === 'imageAndAltText') {
|
|
316
|
-
set('componentType', 'Image');
|
|
317
|
-
set('cmsLabel', getVal(entry.fields.adminLabel) || 'Image');
|
|
318
|
-
set('showHeading', false);
|
|
319
|
-
// visual field in component/Image also needs to be a link to a Media entry?
|
|
320
|
-
// Or does Image component visual accept Asset?
|
|
321
|
-
// Inspection: component.visual (Link). Doesn't specify.
|
|
322
|
-
// But likely it's consistent.
|
|
323
|
-
// Wait, if we map imageAndAltText to 'component' (Image), and that component has a 'visual' field...
|
|
324
|
-
// Does 'visual' point to Asset or Entry?
|
|
325
|
-
// If it points to Entry (Media), then we need to wrap the asset in a Media entry first.
|
|
326
|
-
set('visual', linkVisual(getVal(entry.fields.image)));
|
|
327
|
-
return { contentType: 'component', fields };
|
|
328
|
-
}
|
|
329
|
-
return null;
|
|
330
|
-
}
|
|
331
|
-
// Helper to update entry with retry logic for VersionMismatch
|
|
332
|
-
async function updateEntryWithRetry(env, id, contentType, fields, retries = 3) {
|
|
333
|
-
try {
|
|
334
|
-
let entry;
|
|
335
|
-
try {
|
|
336
|
-
entry = await env.getEntry(id);
|
|
337
|
-
console.log(`Entry ${id} exists. Updating...`);
|
|
338
|
-
entry.fields = fields;
|
|
339
|
-
return await entry.update();
|
|
340
|
-
}
|
|
341
|
-
catch (e) {
|
|
342
|
-
if (e.name === 'NotFound') {
|
|
343
|
-
console.log(`Creating ${contentType} (${id})`);
|
|
344
|
-
return await env.createEntryWithId(contentType, id, { fields });
|
|
345
|
-
}
|
|
346
|
-
throw e;
|
|
347
|
-
}
|
|
348
|
-
}
|
|
349
|
-
catch (error) {
|
|
350
|
-
if (error.name === 'VersionMismatch' && retries > 0) {
|
|
351
|
-
console.warn(`VersionMismatch for ${id}. Retrying... (${retries} left)`);
|
|
352
|
-
return updateEntryWithRetry(env, id, contentType, fields, retries - 1);
|
|
353
|
-
}
|
|
354
|
-
throw error;
|
|
355
|
-
}
|
|
356
|
-
}
|
|
357
|
-
// --- Priority Sorting ---
|
|
358
|
-
function getPriority(contentTypeId) {
|
|
359
|
-
// Level 1: Leafs (Dependencies)
|
|
360
|
-
if ([
|
|
361
|
-
'imageAndAltText',
|
|
362
|
-
'button',
|
|
363
|
-
].includes(contentTypeId)) {
|
|
364
|
-
return 1;
|
|
365
|
-
}
|
|
366
|
-
// Level 2: Components
|
|
367
|
-
if ([
|
|
368
|
-
'ctaCard',
|
|
369
|
-
'quote',
|
|
370
|
-
'videoModule',
|
|
371
|
-
'textSection',
|
|
372
|
-
'hero',
|
|
373
|
-
].includes(contentTypeId)) {
|
|
374
|
-
return 2;
|
|
375
|
-
}
|
|
376
|
-
// Level 3: Collections
|
|
377
|
-
if ([
|
|
378
|
-
'cards',
|
|
379
|
-
'carousel',
|
|
380
|
-
'itemGrid',
|
|
381
|
-
'teamMemberGrid',
|
|
382
|
-
'featuredPostSection',
|
|
383
|
-
].includes(contentTypeId)) {
|
|
384
|
-
return 3;
|
|
385
|
-
}
|
|
386
|
-
// Level 4: Roots (Pages, Articles)
|
|
387
|
-
if (['contentPage', 'page', 'blogPost', 'resourcePost'].includes(contentTypeId)) {
|
|
388
|
-
return 4;
|
|
389
|
-
}
|
|
390
|
-
// Default to last
|
|
391
|
-
return 5;
|
|
392
|
-
}
|
|
393
|
-
// --- Main Execution ---
|
|
394
|
-
async function run() {
|
|
395
|
-
console.log(`Starting migration... DRY_RUN=${DRY_RUN}`);
|
|
396
|
-
const sourceEnv = await getEnvironment(SPACE_ID, SOURCE_ENV_ID);
|
|
397
|
-
const targetEnv = await getEnvironment(SPACE_ID, TARGET_ENV_ID);
|
|
398
|
-
// 1. Migrate Assets
|
|
399
|
-
await migrateAssets(sourceEnv, targetEnv);
|
|
400
|
-
// 2. Fetch all Source Entries
|
|
401
|
-
console.log('\n--- Fetching Source Entries ---');
|
|
402
|
-
const sourceEntriesItems = await fetchAllEntries(sourceEnv);
|
|
403
|
-
console.log(`Fetched ${sourceEntriesItems.length} entries.`);
|
|
404
|
-
// Sort by priority
|
|
405
|
-
sourceEntriesItems.sort((a, b) => {
|
|
406
|
-
return getPriority(a.sys.contentType.sys.id) - getPriority(b.sys.contentType.sys.id);
|
|
407
|
-
});
|
|
408
|
-
// 3. Process Entries (Pass 1: Creation/Mapping)
|
|
409
|
-
console.log('\n--- Processing Entries ---');
|
|
410
|
-
// We process "Leaf" nodes first ideally, but Contentful doesn't enforce referential integrity on creation if we use createEntryWithId and link later?
|
|
411
|
-
// Actually, we need to create entries first, then update them with links.
|
|
412
|
-
// So we'll iterate all, create shell if mapped, then update.
|
|
413
|
-
for (const entry of sourceEntriesItems) {
|
|
414
|
-
// Skip if not in our target list
|
|
415
|
-
if (![
|
|
416
|
-
'contentPage',
|
|
417
|
-
'blogPost',
|
|
418
|
-
'ctaCard',
|
|
419
|
-
'cards',
|
|
420
|
-
'carousel',
|
|
421
|
-
'quote',
|
|
422
|
-
'videoModule',
|
|
423
|
-
'button',
|
|
424
|
-
'imageAndAltText',
|
|
425
|
-
].includes(entry.sys.contentType.sys.id)) {
|
|
426
|
-
continue;
|
|
427
|
-
}
|
|
428
|
-
const mapped = mapEntry(entry);
|
|
429
|
-
if (!mapped) {
|
|
430
|
-
console.log(`Skipping ${entry.sys.id} (${entry.sys.contentType.sys.id}) - No mapping`);
|
|
431
|
-
continue;
|
|
432
|
-
}
|
|
433
|
-
// We use the same ID for simplicity
|
|
434
|
-
const newId = entry.sys.id;
|
|
435
|
-
idMap.set(entry.sys.id, newId);
|
|
436
|
-
// --- NEW STEP: Ensure dependent wrapper entries are created ---
|
|
437
|
-
// Iterate through mapped fields to find 'visual' links that point to Wrappers (media)
|
|
438
|
-
// and create those wrappers before the main entry.
|
|
439
|
-
// This is a bit simplistic, but should work for this specific 'visual' -> 'media' pattern.
|
|
440
|
-
for (const [key, val] of Object.entries(mapped.fields)) {
|
|
441
|
-
// featuredImage is now Asset link, so skip it here. Only check 'visual' or explicit wrapper fields.
|
|
442
|
-
if (key === 'visual') {
|
|
443
|
-
const linkObj = val['en-US'];
|
|
444
|
-
if (linkObj && linkObj.sys.linkType === 'Entry' && linkObj.sys.id.startsWith('visual-')) {
|
|
445
|
-
const wrapperId = linkObj.sys.id;
|
|
446
|
-
const assetId = wrapperId.replace('visual-', '');
|
|
447
|
-
await ensureWrapperEntry(targetEnv, assetId, `Wrapper for ${assetId}`);
|
|
448
|
-
}
|
|
449
|
-
}
|
|
450
|
-
}
|
|
451
|
-
// -------------------------------------------------------------
|
|
452
|
-
if (DRY_RUN) {
|
|
453
|
-
console.log(`[Dry Run] Would create ${mapped.contentType} (${newId}) from ${entry.sys.contentType.sys.id}`);
|
|
454
|
-
stats.entries.created++;
|
|
455
|
-
continue;
|
|
456
|
-
}
|
|
457
|
-
try {
|
|
458
|
-
await updateEntryWithRetry(targetEnv, newId, mapped.contentType, mapped.fields);
|
|
459
|
-
stats.entries.created++;
|
|
460
|
-
}
|
|
461
|
-
catch (error) {
|
|
462
|
-
console.error(`Failed to create/update entry ${newId}:`, error);
|
|
463
|
-
stats.entries.errors++;
|
|
464
|
-
}
|
|
465
|
-
}
|
|
466
|
-
// Pass 2: Publishing (and ensuring links work if we did it in one go)
|
|
467
|
-
// Since we set fields with links immediately, they might fail if linked entries don't exist yet.
|
|
468
|
-
// Contentful allows saving with unresolved links (they just show as missing).
|
|
469
|
-
// But publishing might fail if validatons are strict.
|
|
470
|
-
// For this script, we just create/update. Publishing is a separate step or done here.
|
|
471
|
-
console.log('\n--- Migration Stats ---');
|
|
472
|
-
console.log(JSON.stringify(stats, null, 2));
|
|
473
|
-
}
|
|
474
|
-
run().catch(console.error);
|
|
475
|
-
//# sourceMappingURL=migrate-brightlife.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"migrate-brightlife.js","sourceRoot":"","sources":["../../src/management/migrate-brightlife.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"migrate-brightline.d.ts","sourceRoot":"","sources":["../../src/management/migrate-brightline.ts"],"names":[],"mappings":""}
|