@se-studio/project-build 1.0.69 → 1.0.72

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.
Files changed (44) hide show
  1. package/CHANGELOG.md +18 -0
  2. package/package.json +2 -4
  3. package/skills/se-marketing-sites/create-collection/SKILL.md +14 -10
  4. package/skills/se-marketing-sites/create-component/SKILL.md +1 -1
  5. package/skills/se-marketing-sites/handling-media/SKILL.md +19 -0
  6. package/skills/se-marketing-sites/lib-cms-structure/SKILL.md +8 -6
  7. package/skills/se-marketing-sites/register-cms-features/SKILL.md +15 -15
  8. package/skills/se-marketing-sites/styling-system/SKILL.md +1 -1
  9. package/dist/management/check-target.d.ts +0 -2
  10. package/dist/management/check-target.d.ts.map +0 -1
  11. package/dist/management/check-target.js +0 -40
  12. package/dist/management/check-target.js.map +0 -1
  13. package/dist/management/count-brightline.d.ts +0 -2
  14. package/dist/management/count-brightline.d.ts.map +0 -1
  15. package/dist/management/count-brightline.js +0 -37
  16. package/dist/management/count-brightline.js.map +0 -1
  17. package/dist/management/cross-check-migration.d.ts +0 -2
  18. package/dist/management/cross-check-migration.d.ts.map +0 -1
  19. package/dist/management/cross-check-migration.js +0 -212
  20. package/dist/management/cross-check-migration.js.map +0 -1
  21. package/dist/management/discovery-brightlife.d.ts +0 -2
  22. package/dist/management/discovery-brightlife.d.ts.map +0 -1
  23. package/dist/management/discovery-brightlife.js +0 -78
  24. package/dist/management/discovery-brightlife.js.map +0 -1
  25. package/dist/management/discovery-brightline.d.ts +0 -2
  26. package/dist/management/discovery-brightline.d.ts.map +0 -1
  27. package/dist/management/discovery-brightline.js +0 -68
  28. package/dist/management/discovery-brightline.js.map +0 -1
  29. package/dist/management/generateVisibilityJson.d.ts +0 -3
  30. package/dist/management/generateVisibilityJson.d.ts.map +0 -1
  31. package/dist/management/generateVisibilityJson.js +0 -149
  32. package/dist/management/generateVisibilityJson.js.map +0 -1
  33. package/dist/management/inspect-target.d.ts +0 -2
  34. package/dist/management/inspect-target.d.ts.map +0 -1
  35. package/dist/management/inspect-target.js +0 -48
  36. package/dist/management/inspect-target.js.map +0 -1
  37. package/dist/management/migrate-brightlife.d.ts +0 -2
  38. package/dist/management/migrate-brightlife.d.ts.map +0 -1
  39. package/dist/management/migrate-brightlife.js +0 -475
  40. package/dist/management/migrate-brightlife.js.map +0 -1
  41. package/dist/management/migrate-brightline.d.ts +0 -2
  42. package/dist/management/migrate-brightline.d.ts.map +0 -1
  43. package/dist/management/migrate-brightline.js +0 -1085
  44. package/dist/management/migrate-brightline.js.map +0 -1
package/CHANGELOG.md CHANGED
@@ -1,5 +1,23 @@
1
1
  # @se-studio/project-build
2
2
 
3
+ ## 1.0.72
4
+
5
+ ### Patch Changes
6
+
7
+ - Bulk version bump: patch for all packages
8
+
9
+ ## 1.0.71
10
+
11
+ ### Patch Changes
12
+
13
+ - Bulk version bump: patch for all packages
14
+
15
+ ## 1.0.70
16
+
17
+ ### Patch Changes
18
+
19
+ - Bulk version bump: patch for all packages
20
+
3
21
  ## 1.0.69
4
22
 
5
23
  ### Patch Changes
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@se-studio/project-build",
3
- "version": "1.0.69",
3
+ "version": "1.0.72",
4
4
  "description": "Build tools and management scripts for SE Studio projects",
5
5
  "repository": {
6
6
  "type": "git",
@@ -60,13 +60,11 @@
60
60
  "change-case": "^5.4.4",
61
61
  "chroma-js": "^3.2.0",
62
62
  "contentful-management": "^11.69.2",
63
- "dotenv": "^17.3.1",
64
- "ts-morph": "27.0.2"
63
+ "dotenv": "^17.3.1"
65
64
  },
66
65
  "devDependencies": {
67
66
  "@types/chroma-js": "^3.1.2",
68
67
  "@types/node": "^22.19.11",
69
- "contentful": "^11.10.3",
70
68
  "typescript": "^5.9.3"
71
69
  },
72
70
  "scripts": {
@@ -118,19 +118,21 @@ const CARD_FIELD_KEYS = [
118
118
  ] as const;
119
119
  const CARD_USED_FIELDS = new Set([...CARD_FIELD_KEYS, 'componentType']);
120
120
 
121
- // Helper to render individual cards
121
+ // Helper to render individual cards (use ChildElement for card titles – items inside a collection)
122
122
  const CardWrapper: React.FC<{
123
123
  content: IComponent;
124
124
  index: number;
125
125
  contentContext: IContentContext;
126
126
  rendererConfig: CmsRendererConfig;
127
127
  }> = ({ content, index, contentContext, rendererConfig }) => {
128
- // You can create a specific Card component here or inline it
129
- // This example assumes a simple inline card
128
+ const { ChildElement, sizingInformation } = getSizingInformation(1);
130
129
  return (
131
130
  <div className="p-6 bg-white rounded-lg shadow-sm">
132
- {/* Render card content here */}
133
- <h3 className="h4 mb-2">{content.heading}</h3>
131
+ {content.heading && (
132
+ <ChildElement className={cn(sizingInformation.h3, 'mb-2')}>
133
+ {content.heading}
134
+ </ChildElement>
135
+ )}
134
136
  {/* ... */}
135
137
  </div>
136
138
  );
@@ -276,16 +278,18 @@ export const MyCollectionRegistration = defineCollection({
276
278
  2. **Use `defineCollection`**:
277
279
  * Instead of `defineComponent`.
278
280
  * Pass both `usedFields` and `cardUsedFields`.
279
- 3. **Preview helpers**:
281
+ 3. **Heading hierarchy**:
282
+ * Use **Element** from `getSizingInformation(index)` for the collection's section heading (and a class from `sizingInformation`). Use **ChildElement** from `getSizingInformation(1)` for item/card titles. Render preHeading/postHeading as **&lt;p&gt;** with a typography class, never as heading tags.
283
+ 4. **Preview helpers**:
280
284
  * Use `getPreviewFieldProps(rendererConfig, id, fieldId)` from `@se-studio/core-ui` for CMS preview (do not import from cms-server – avoids circular dependency). For responsive visuals use `getPreviewResponsiveVisualFieldProps(rendererConfig, id, 'visual', 'mobileVisual')`.
281
285
  * For collections that fetch data: use `rendererConfig?.fetchHelpers?.getRelatedArticles?.(information, contentContext, count)` instead of importing from cms-server.
282
- 4. **Handle `contents`**:
286
+ 5. **Handle `contents`**:
283
287
  * Check `if (contents && contents.length > 0)`.
284
288
  * Filter with `contents.filter(isComponent)`.
285
289
  * Map over the result to render items.
286
- 5. **Isolate Client Logic**:
290
+ 6. **Isolate Client Logic**:
287
291
  * **ENSURE SERVER COMPONENT** for the main file.
288
292
  * If a carousel/slider/filter is needed, move that logic to `[Name]Client.tsx`.
289
293
  * Pass server-rendered cards as `children` to the client wrapper.
290
- 6. **Register**:
291
- * Add to `collectionRegistrations` in `src/lib/registrations.ts`.
294
+ 7. **Register**:
295
+ * Add to `collectionRegistrationsList` in `src/lib/registrations.ts`. The `name` is defined only in your `defineCollection(...)` call.
@@ -247,4 +247,4 @@ export const MyNewRegistration = defineComponent({
247
247
  * **CRITICAL**: `name` must match CMS `componentType` exactly.
248
248
  * Provide mock data for showcase.
249
249
  8. **Register Component**:
250
- * Add to `componentRegistrations` in `src/lib/registrations.ts`.
250
+ * Add to `componentRegistrationsList` in `src/lib/registrations.ts`. The `name` is defined only in your `defineComponent(...)` call; do not duplicate it as a Record key.
@@ -58,6 +58,25 @@ const sizes = calculateVisualSizes(1, { laptop: 0.5 });
58
58
  * `1`: 100vw (Mobile default)
59
59
  * `laptop: 0.5`: 50vw (Laptop breakpoint)
60
60
 
61
+ ### visualSizes Must Mirror Col-Span
62
+
63
+ `visualSizes` **must** match the visual's layout (col-span, container width). The browser uses these values to pick the right image size.
64
+
65
+ * **Rule**: `col-span-N` in a 12-col grid → use `N/12` (e.g. 6 cols → 0.5, 5 cols → 5/12).
66
+ * **Full width** (`col-span-full`) → use `1`.
67
+ * **First arg** = mobile/default; breakpoint keys (`laptop`, `tablet`, `desktop`) = that breakpoint.
68
+ * **Common mistake**: Reversing mobile vs laptop. If mobile is full width and laptop is smaller, use `(1, { laptop: 0.5 })`, **not** `(0.5, { laptop: 1 })`.
69
+ * **Fixed-size icons** (~96–128px): use small ratios like `0.2`–`0.25`; **never** use values > 1 (e.g. `(100)` is invalid and causes massive over-fetch).
70
+ * **Example table**:
71
+
72
+ | Layout | visualSizes |
73
+ |--------|-------------|
74
+ | Full width | `(1)` |
75
+ | 6 cols on laptop, full on mobile | `(1, { laptop: 0.5 })` |
76
+ | 5 cols on laptop, full on mobile | `(1, { laptop: 5/12 })` |
77
+ | 2 cols in 12 on laptop, half on mobile | `(0.5, { laptop: 2/12 })` |
78
+ | Small icon (~96px) | `(0.25)` |
79
+
61
80
  ### LCP Optimization (`calculateImagePriority`)
62
81
 
63
82
  For the Hero component (or whatever is at the top of the page), you must prioritize the image load to improve LCP (Largest Contentful Paint).
@@ -15,12 +15,12 @@ Reference apps: **example-se2026**, **example-brightline**, **example-om1**.
15
15
 
16
16
  | File | Client-safe? | Purpose |
17
17
  |------|--------------|---------|
18
- | `cms.ts` | Yes | Types, build maps from registrations, createConverterContext |
18
+ | `cms.ts` | Yes | Types, buildComponentRecord / buildCollectionRecord / buildExternalRecord (array → Record), then build*Maps from those Records, createConverterContext |
19
19
  | `cms-server.ts` | No (server-only) | createAppHelpers, buildOptions, getContentfulConfig, projectRendererConfig |
20
20
  | `client-config.ts` | Yes | isProduction, isDevelopment |
21
21
  | `server-config.ts` | No | draftOnly, videoPrefix, baseUrl, revalidationSecret |
22
22
  | `constants.ts` | Yes | ARTICLES_BASE, TAGS_BASE, PEOPLE_BASE, enable flags, customer name |
23
- | `registrations.ts` | Yes | componentRegistrations, collectionRegistrations, externalComponentRegistrations |
23
+ | `registrations.ts` | Yes | componentRegistrationsList, collectionRegistrationsList, externalComponentRegistrationsList (arrays) |
24
24
  | `SizingInformation.ts` | Yes | getSizingInformation for dynamic heading sizes |
25
25
 
26
26
  ## Server vs Client Boundary
@@ -54,12 +54,14 @@ export const enableTagsIndex = false;
54
54
  ## Data Flow
55
55
 
56
56
  ```
57
- registrations.ts → cms.ts → builds maps → cms-server.ts
58
-
59
- projectRendererConfig
57
+ registrations.ts (*RegistrationsList arrays)
58
+ → cms.ts (build*Record from arrays, then build*Maps)
59
+ → builds maps → cms-server.ts
60
+
61
+ projectRendererConfig
60
62
  ```
61
63
 
62
- Add new components/collections in `registrations.ts`. The `cms.ts` imports from it and builds the maps used by `cms-server.ts`.
64
+ Add new components/collections to the appropriate *RegistrationsList array in `registrations.ts`. The `cms.ts` imports those arrays, builds Records via `buildComponentRecord` / `buildCollectionRecord` / `buildExternalRecord` (which enforce that every CMS type has a registration), then builds the maps used by `cms-server.ts`.
63
65
 
64
66
  ## Circular Dependency: Do Not Import cms-server in Components/Collections
65
67
 
@@ -9,12 +9,12 @@ metadata:
9
9
 
10
10
  # Registering CMS Features
11
11
 
12
- The file `src/lib/registrations.ts` is where you add new components, collections, and external components. The `cms.ts` module imports from `registrations.ts` and builds the maps used by the renderer; add new registrations in `registrations.ts`.
12
+ The file `src/lib/registrations.ts` is where you add new components, collections, and external components. It exports three **arrays** (not Records): `componentRegistrationsList`, `collectionRegistrationsList`, `externalComponentRegistrationsList`. The **name is defined only in each registration** (in the `defineComponent` / `defineCollection` / `defineExternalComponent` call). The `cms.ts` module imports these arrays, uses `buildComponentRecord` / `buildCollectionRecord` / `buildExternalRecord` to build Records keyed by `name` (with exhaustiveness checks), then passes those Records to the core-ui build*Maps helpers. Add new registrations to the appropriate *List array in `registrations.ts`.
13
13
 
14
14
  ## How Registration Works
15
15
 
16
- The system uses "Registration Objects" created via `defineComponent` or `defineCollection`. These objects contain:
17
- 1. **Name**: Matches the Contentful content type ID (or a mapped name).
16
+ The system uses registration objects created via `defineComponent`, `defineCollection`, or `defineExternalComponent` (from `@/lib/define-cms`). Each object contains:
17
+ 1. **Name**: Matches the Contentful content type ID exactly. Defined **once** in the registration (not as a Record key).
18
18
  2. **Renderer**: The React component to render.
19
19
  3. **Used Fields**: Which fields from the content model are used.
20
20
  4. **Mock Data**: Sample data for the styleguide/showcase.
@@ -28,18 +28,18 @@ The system uses "Registration Objects" created via `defineComponent` or `defineC
28
28
  import { MyNewComponentRegistration } from '@/project/components/MyNewComponent';
29
29
  ```
30
30
 
31
- 2. **Add to `componentRegistrations`**:
32
- Find the `componentRegistrations` array in `registrations.ts` and add your component.
31
+ 2. **Add to `componentRegistrationsList`**:
32
+ Find the `componentRegistrationsList` array in `registrations.ts` and add your component.
33
33
 
34
34
  ```typescript
35
- const componentRegistrations = [
35
+ export const componentRegistrationsList = [
36
36
  HeroRegistration,
37
37
  // ...
38
38
  MyNewComponentRegistration, // Add this
39
- ];
39
+ ] as const;
40
40
  ```
41
41
 
42
- *Order does not matter for functionality, but logical grouping is helpful.*
42
+ *Order does not matter for functionality, but logical grouping is helpful. Missing a CMS type causes a type error in `cms.ts` when `buildComponentRecord(componentRegistrationsList)` is called.*
43
43
 
44
44
  ## Registering a New Collection
45
45
 
@@ -49,31 +49,31 @@ The system uses "Registration Objects" created via `defineComponent` or `defineC
49
49
  import { MyCollectionRegistration } from '@/project/collections/MyCollection';
50
50
  ```
51
51
 
52
- 2. **Add to `collectionRegistrations`** in `registrations.ts`:
52
+ 2. **Add to `collectionRegistrationsList`** in `registrations.ts`:
53
53
 
54
54
  ```typescript
55
- const collectionRegistrations = [
55
+ export const collectionRegistrationsList = [
56
56
  CardGridRegistration,
57
57
  // ...
58
58
  MyCollectionRegistration, // Add this
59
- ];
59
+ ] as const;
60
60
  ```
61
61
 
62
62
  ## Adding External Components
63
63
 
64
- External components (like 3rd party forms or iframes) use a separate registry in `src/lib/registrations.ts`.
64
+ External components (like 3rd party forms or iframes) use a separate list in `src/lib/registrations.ts`.
65
65
 
66
66
  1. **Import**:
67
67
  ```typescript
68
68
  import { MyExternalWidgetRegistration } from '@/project/externalComponents/MyExternalWidget';
69
69
  ```
70
70
 
71
- 2. **Add to `externalComponentRegistrations`** in `registrations.ts`:
71
+ 2. **Add to `externalComponentRegistrationsList`** in `registrations.ts`:
72
72
  ```typescript
73
- const externalComponentRegistrations = [
73
+ export const externalComponentRegistrationsList = [
74
74
  ExternalIFrameRegistration,
75
75
  MyExternalWidgetRegistration,
76
- ];
76
+ ] as const;
77
77
  ```
78
78
 
79
79
  ## Extending Type Definitions
@@ -37,7 +37,7 @@ Styles are responsive and scale automatically based on the breakpoints defined i
37
37
 
38
38
  ### Best Practice: Dynamic Sizing
39
39
 
40
- Use `getSizingInformation(index)` from `@/lib/SizingInformation` to dynamically assign the correct heading class based on the component's position on the page.
40
+ Use `getSizingInformation(index)` from `@/lib/SizingInformation` to get **Element** (or **ChildElement** for items inside a collection) and typography classes. Use **Element** for the single main heading of the block; apply a class from `sizingInformation` (e.g. `sizingInformation.h1`). **preHeading** and **postHeading** must be rendered as **&lt;p&gt;** with typography classes (e.g. `sizingInformation.p`), not as heading elements.
41
41
 
42
42
  ```typescript
43
43
  import { getSizingInformation } from '@/lib/SizingInformation';
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=check-target.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"check-target.d.ts","sourceRoot":"","sources":["../../src/management/check-target.ts"],"names":[],"mappings":""}
@@ -1,40 +0,0 @@
1
- import * as contentful from 'contentful';
2
- import dotenv from 'dotenv';
3
- // Load environment variables from .env file in project root or current package
4
- dotenv.config();
5
- const SPACE_ID = 'c27ds9epot4n';
6
- const ENV_ID = 'production-2026';
7
- async function checkTargetTypes() {
8
- console.log(`Checking types in: ${SPACE_ID} / ${ENV_ID}`);
9
- const accessToken = process.env.CONTENTFUL_ACCESS_TOKEN ||
10
- process.env.CONTENTFUL_DELIVERY_TOKEN ||
11
- process.env.CONTENTFUL_MANAGEMENT_TOKEN;
12
- // Create client with whatever token we have (CDA preferred for read-only if we had one, but we have CMA)
13
- // Actually, 'contentful' package is for CDA. 'contentful-management' is for CMA.
14
- // We want to check content types existence. CMA is fine.
15
- const client = contentful.createClient({
16
- space: SPACE_ID,
17
- environment: ENV_ID,
18
- accessToken: accessToken || 'dummy', // contentful client needs a token
19
- });
20
- try {
21
- const contentTypes = await client.getContentTypes();
22
- console.log(`Found ${contentTypes.items.length} content types in TARGET.`);
23
- const requiredTypes = ['Component', 'Collection', 'Page', 'Article', 'Link'];
24
- const foundTypes = contentTypes.items.map((ct) => ct.sys.id);
25
- console.log('Available Types:', foundTypes);
26
- requiredTypes.forEach((req) => {
27
- if (!foundTypes.includes(req)) {
28
- console.error(`MISSING TYPE: ${req}`);
29
- }
30
- else {
31
- console.log(`OK: ${req}`);
32
- }
33
- });
34
- }
35
- catch (error) {
36
- console.error('Error fetching types (might be auth issue or env not found):', error);
37
- }
38
- }
39
- checkTargetTypes();
40
- //# sourceMappingURL=check-target.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"check-target.js","sourceRoot":"","sources":["../../src/management/check-target.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,UAAU,MAAM,YAAY,CAAC;AACzC,OAAO,MAAM,MAAM,QAAQ,CAAC;AAE5B,+EAA+E;AAC/E,MAAM,CAAC,MAAM,EAAE,CAAC;AAEhB,MAAM,QAAQ,GAAG,cAAc,CAAC;AAChC,MAAM,MAAM,GAAG,iBAAiB,CAAC;AAEjC,KAAK,UAAU,gBAAgB;IAC7B,OAAO,CAAC,GAAG,CAAC,sBAAsB,QAAQ,MAAM,MAAM,EAAE,CAAC,CAAC;IAE1D,MAAM,WAAW,GACf,OAAO,CAAC,GAAG,CAAC,uBAAuB;QACnC,OAAO,CAAC,GAAG,CAAC,yBAAyB;QACrC,OAAO,CAAC,GAAG,CAAC,2BAA2B,CAAC;IAE1C,yGAAyG;IACzG,iFAAiF;IACjF,yDAAyD;IAEzD,MAAM,MAAM,GAAG,UAAU,CAAC,YAAY,CAAC;QACrC,KAAK,EAAE,QAAQ;QACf,WAAW,EAAE,MAAM;QACnB,WAAW,EAAE,WAAW,IAAI,OAAO,EAAE,kCAAkC;KACxE,CAAC,CAAC;IAEH,IAAI,CAAC;QACH,MAAM,YAAY,GAAG,MAAM,MAAM,CAAC,eAAe,EAAE,CAAC;QACpD,OAAO,CAAC,GAAG,CAAC,SAAS,YAAY,CAAC,KAAK,CAAC,MAAM,2BAA2B,CAAC,CAAC;QAE3E,MAAM,aAAa,GAAG,CAAC,WAAW,EAAE,YAAY,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;QAC7E,MAAM,UAAU,GAAG,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAE7D,OAAO,CAAC,GAAG,CAAC,kBAAkB,EAAE,UAAU,CAAC,CAAC;QAE5C,aAAa,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;YAC5B,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC9B,OAAO,CAAC,KAAK,CAAC,iBAAiB,GAAG,EAAE,CAAC,CAAC;YACxC,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,GAAG,CAAC,OAAO,GAAG,EAAE,CAAC,CAAC;YAC5B,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,8DAA8D,EAAE,KAAK,CAAC,CAAC;IACvF,CAAC;AACH,CAAC;AAED,gBAAgB,EAAE,CAAC"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=count-brightline.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"count-brightline.d.ts","sourceRoot":"","sources":["../../src/management/count-brightline.ts"],"names":[],"mappings":""}
@@ -1,37 +0,0 @@
1
- import * as contentful from 'contentful';
2
- import dotenv from 'dotenv';
3
- dotenv.config();
4
- const SPACE_ID = '96gdpqkm7elu';
5
- const ENV_ID = 'cleanup';
6
- async function countEntries() {
7
- console.log(`Counting entries in: ${SPACE_ID} / ${ENV_ID}`);
8
- const accessToken = process.env.CONTENTFUL_ACCESS_TOKEN || process.env.CONTENTFUL_DELIVERY_TOKEN;
9
- if (!accessToken) {
10
- console.error('Error: CONTENTFUL_ACCESS_TOKEN is not set.');
11
- process.exit(1);
12
- }
13
- const client = contentful.createClient({
14
- space: SPACE_ID,
15
- environment: ENV_ID,
16
- accessToken: accessToken,
17
- });
18
- try {
19
- const typesToCount = [
20
- 'contentPage', 'blogPost', 'resourcePost', 'ctaCard', 'hero',
21
- 'videoModule', 'quote', 'textSection', 'genericModule', 'iconAndCopy',
22
- 'statisticWithSource', 'form', 'cards', 'carousel', 'itemGrid',
23
- 'featuredPostSection', 'teamMemberGrid', 'teamMember', 'author',
24
- 'therapist', 'imageAndAltText', 'button'
25
- ];
26
- console.log('--- Entry Counts ---');
27
- for (const type of typesToCount) {
28
- const entries = await client.getEntries({ content_type: type, limit: 0 });
29
- console.log(`${type}: ${entries.total}`);
30
- }
31
- }
32
- catch (error) {
33
- console.error('Error occurred:', error);
34
- }
35
- }
36
- countEntries();
37
- //# sourceMappingURL=count-brightline.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"count-brightline.js","sourceRoot":"","sources":["../../src/management/count-brightline.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,UAAU,MAAM,YAAY,CAAC;AACzC,OAAO,MAAM,MAAM,QAAQ,CAAC;AAE5B,MAAM,CAAC,MAAM,EAAE,CAAC;AAEhB,MAAM,QAAQ,GAAG,cAAc,CAAC;AAChC,MAAM,MAAM,GAAG,SAAS,CAAC;AAEzB,KAAK,UAAU,YAAY;IACzB,OAAO,CAAC,GAAG,CAAC,wBAAwB,QAAQ,MAAM,MAAM,EAAE,CAAC,CAAC;IAE5D,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,uBAAuB,IAAI,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC;IAEjG,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,OAAO,CAAC,KAAK,CAAC,4CAA4C,CAAC,CAAC;QAC5D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,MAAM,GAAG,UAAU,CAAC,YAAY,CAAC;QACrC,KAAK,EAAE,QAAQ;QACf,WAAW,EAAE,MAAM;QACnB,WAAW,EAAE,WAAW;KACzB,CAAC,CAAC;IAEH,IAAI,CAAC;QACH,MAAM,YAAY,GAAG;YACjB,aAAa,EAAE,UAAU,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM;YAC5D,aAAa,EAAE,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,aAAa;YACrE,qBAAqB,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,UAAU;YAC9D,qBAAqB,EAAE,gBAAgB,EAAE,YAAY,EAAE,QAAQ;YAC/D,WAAW,EAAE,iBAAiB,EAAE,QAAQ;SAC3C,CAAC;QAEF,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC;QACpC,KAAK,MAAM,IAAI,IAAI,YAAY,EAAE,CAAC;YAC9B,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,EAAE,YAAY,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;YAC1E,OAAO,CAAC,GAAG,CAAC,GAAG,IAAI,KAAK,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;QAC7C,CAAC;IAEH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,iBAAiB,EAAE,KAAK,CAAC,CAAC;IAC1C,CAAC;AACH,CAAC;AAED,YAAY,EAAE,CAAC"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=cross-check-migration.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"cross-check-migration.d.ts","sourceRoot":"","sources":["../../src/management/cross-check-migration.ts"],"names":[],"mappings":""}
@@ -1,212 +0,0 @@
1
- import path from 'node:path';
2
- import contentfulManagement from 'contentful-management';
3
- import dotenv from 'dotenv';
4
- // Load environment variables
5
- dotenv.config({ path: path.resolve(process.cwd(), 'apps/example-brightline/.env.local') });
6
- const SPACE_ID = '96gdpqkm7elu';
7
- const SOURCE_ENV_ID = 'cleanup';
8
- // --- Mapping Definitions (Source Content Type -> Array of Mapped Source Field IDs) ---
9
- // Derived from packages/project-build/src/management/migrate-brightline.ts
10
- const MAPPED_SOURCE_FIELDS = {
11
- contentPage: [
12
- 'title',
13
- 'path',
14
- 'slug',
15
- 'description',
16
- 'adminLabel',
17
- 'socialImage',
18
- 'contents',
19
- 'indexed',
20
- ],
21
- page: [
22
- 'title',
23
- 'path',
24
- 'slug',
25
- 'description',
26
- 'adminLabel',
27
- 'socialImage',
28
- 'contents',
29
- 'indexed',
30
- ],
31
- blogPost: [
32
- 'title',
33
- 'teaserTitle',
34
- 'slug',
35
- 'publishDate',
36
- 'author',
37
- 'image',
38
- 'thumbnail',
39
- 'body',
40
- 'metaContent',
41
- 'featuredImage',
42
- ],
43
- resourcePost: [
44
- 'title',
45
- 'teaserTitle',
46
- 'slug',
47
- 'publishDate',
48
- 'author',
49
- 'image',
50
- 'thumbnail',
51
- 'body',
52
- 'metaContent',
53
- 'featuredImage',
54
- ],
55
- ctaCard: [
56
- 'cardType',
57
- 'title',
58
- 'eyebrow',
59
- 'subtitle',
60
- 'copy',
61
- 'adminLabel',
62
- 'media',
63
- 'image',
64
- 'buttons',
65
- 'anchor',
66
- 'backgroundColour',
67
- 'textColour',
68
- ],
69
- hero: ['title', 'adminLabel', 'heroImage'], // Identified as incomplete in analysis
70
- videoModule: ['title', 'adminTitle', 'videoUrl', 'videoWidth', 'videoAsset', 'copy'],
71
- quote: [
72
- 'copy',
73
- 'adminLabel',
74
- 'authorName',
75
- 'authorTitle',
76
- 'backgroundColour',
77
- 'textColour',
78
- 'image',
79
- ],
80
- textSection: ['copy', 'adminLabel'],
81
- imageAndAltText: ['adminLabel', 'image'],
82
- cards: [
83
- 'type',
84
- 'adminLabel',
85
- 'title',
86
- 'cards',
87
- 'links',
88
- 'backgroundColour',
89
- 'copy',
90
- 'eyebrow',
91
- 'subtitle',
92
- 'footnote',
93
- ],
94
- carousel: ['type', 'adminLabel', 'title', 'items', 'links', 'media', 'backgroundColour'],
95
- itemGrid: ['type', 'adminLabel', 'title', 'items', 'links', 'footnote', 'backgroundColour'],
96
- teamMemberGrid: ['type', 'adminLabel', 'title', 'teamMembers', 'links', 'backgroundColour'],
97
- featuredPostSection: ['type', 'adminLabel', 'title', 'posts', 'links', 'backgroundColour'],
98
- teamMember: ['name', 'role', 'bio', 'photo', 'bylines', 'portraitImage'],
99
- author: ['name', 'bio', 'image'],
100
- therapist: ['name', 'qualifications', 'bio', 'portrait'],
101
- button: ['label', 'adminLabel', 'internalDestination', 'externalDestination'],
102
- form: ['name', 'adminLabel', 'formName'],
103
- genericModule: ['codeId', 'adminLabel'],
104
- };
105
- // Target Type Descriptions for reporting context
106
- const TARGET_TYPE_DESCRIPTIONS = {
107
- contentPage: 'Page',
108
- page: 'Page',
109
- blogPost: 'Article (Blog)',
110
- resourcePost: 'Article (Resource)',
111
- ctaCard: 'Component: CtaCard',
112
- hero: 'Component: Hero',
113
- videoModule: 'Component: Video',
114
- quote: 'Component: Quote',
115
- textSection: 'Component: Text',
116
- imageAndAltText: 'Media',
117
- cards: 'Collection: Cards',
118
- carousel: 'Collection: Carousel',
119
- itemGrid: 'Collection: Grid',
120
- teamMemberGrid: 'Collection: Team Grid',
121
- featuredPostSection: 'Collection: Featured Posts',
122
- teamMember: 'Person: Team Member',
123
- author: 'Person: Author',
124
- therapist: 'Person: Therapist',
125
- button: 'Link',
126
- form: 'ExternalComponent: Form',
127
- genericModule: 'ExternalComponent: Generic',
128
- };
129
- async function run() {
130
- console.log('--- Cross-Check Migration Script ---');
131
- const accessToken = process.env.CONTENTFUL_MANAGEMENT_TOKEN || process.env.CONTENTFUL_ACCESS_TOKEN;
132
- if (!accessToken) {
133
- console.error('Error: CONTENTFUL_MANAGEMENT_TOKEN or CONTENTFUL_ACCESS_TOKEN not found.');
134
- console.log('Make sure you are running from the workspace root and apps/example-brightline/.env.local exists.');
135
- process.exit(1);
136
- }
137
- const client = contentfulManagement.createClient({ accessToken });
138
- console.log(`Connecting to Space: ${SPACE_ID}, Environment: ${SOURCE_ENV_ID}`);
139
- const space = await client.getSpace(SPACE_ID);
140
- const environment = await space.getEnvironment(SOURCE_ENV_ID);
141
- // 1. Fetch all published entries
142
- console.log('Fetching all published entries...');
143
- let allEntries = [];
144
- let skip = 0;
145
- const limit = 1000;
146
- while (true) {
147
- const response = await environment.getPublishedEntries({ limit, skip });
148
- allEntries = allEntries.concat(response.items);
149
- skip += limit;
150
- console.log(`Fetched ${allEntries.length} entries...`);
151
- if (response.items.length < limit)
152
- break;
153
- }
154
- console.log(`Total entries: ${allEntries.length}`);
155
- // 2. Analyze usage
156
- // Map: SourceContentType -> FieldName -> Count
157
- const usageMap = {};
158
- for (const entry of allEntries) {
159
- const contentTypeId = entry.sys.contentType.sys.id;
160
- // Initialize map for this content type if needed
161
- if (!usageMap[contentTypeId]) {
162
- usageMap[contentTypeId] = {};
163
- }
164
- // Check fields
165
- for (const fieldId of Object.keys(entry.fields)) {
166
- // Check if field has value for 'en-US' or any locale
167
- const fieldVal = entry.fields[fieldId];
168
- // Simply check if it's truthy (has data)
169
- const hasValue = Object.keys(fieldVal).length > 0;
170
- if (hasValue) {
171
- usageMap[contentTypeId][fieldId] = (usageMap[contentTypeId][fieldId] || 0) + 1;
172
- }
173
- }
174
- }
175
- // 3. Generate Report
176
- console.log('\n=== FIELD USAGE & MIGRATION CHECK ===\n');
177
- const sortedContentTypes = Object.keys(usageMap).sort();
178
- for (const contentTypeId of sortedContentTypes) {
179
- // Only report on types that are in our mapping list (or warn if unknown)
180
- const targetDesc = TARGET_TYPE_DESCRIPTIONS[contentTypeId];
181
- const mappedFields = MAPPED_SOURCE_FIELDS[contentTypeId];
182
- if (!mappedFields) {
183
- continue;
184
- }
185
- console.log(`SOURCE: ${contentTypeId} --> TARGET: ${targetDesc}`);
186
- console.log('---------------------------------------------------------');
187
- const usedFields = usageMap[contentTypeId];
188
- const sortedUsedFields = Object.keys(usedFields).sort();
189
- let hasMissing = false;
190
- for (const fieldId of sortedUsedFields) {
191
- const count = usedFields[fieldId];
192
- const isMapped = mappedFields.includes(fieldId);
193
- let status = '[OK] Mapped';
194
- if (!isMapped) {
195
- status = '❌ MISSING IN MIGRATION';
196
- hasMissing = true;
197
- }
198
- console.log(`${isMapped ? ' ' : '! '}${fieldId.padEnd(25)} : ${count.toString().padEnd(5)} uses ${status}`);
199
- }
200
- if (hasMissing) {
201
- console.log('Has missing\n');
202
- }
203
- // Also list mapped fields that ARE NOT used? (Optional, but good for cleanup)
204
- const unusedMapped = mappedFields.filter((f) => !usedFields[f]);
205
- if (unusedMapped.length > 0) {
206
- console.log(` [Info] Mapped but unused: ${unusedMapped.join(', ')}`);
207
- }
208
- console.log('\n');
209
- }
210
- }
211
- run().catch(console.error);
212
- //# sourceMappingURL=cross-check-migration.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"cross-check-migration.js","sourceRoot":"","sources":["../../src/management/cross-check-migration.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=discovery-brightlife.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"discovery-brightlife.d.ts","sourceRoot":"","sources":["../../src/management/discovery-brightlife.ts"],"names":[],"mappings":""}