@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
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,23 @@
|
|
|
1
1
|
# @se-studio/project-build
|
|
2
2
|
|
|
3
|
+
## 1.0.71
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- Bulk version bump: patch for all packages
|
|
8
|
+
|
|
9
|
+
## 1.0.70
|
|
10
|
+
|
|
11
|
+
### Patch Changes
|
|
12
|
+
|
|
13
|
+
- Bulk version bump: patch for all packages
|
|
14
|
+
|
|
15
|
+
## 1.0.69
|
|
16
|
+
|
|
17
|
+
### Patch Changes
|
|
18
|
+
|
|
19
|
+
- Bulk version bump: patch for all packages
|
|
20
|
+
|
|
3
21
|
## 1.0.68
|
|
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.
|
|
3
|
+
"version": "1.0.71",
|
|
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
|
-
|
|
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
|
-
{
|
|
133
|
-
|
|
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. **
|
|
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 **<p>** 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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
291
|
-
* Add to `
|
|
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 `
|
|
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
|
|
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 |
|
|
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
|
|
58
|
-
|
|
59
|
-
|
|
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
|
|
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
|
|
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
|
|
17
|
-
1. **Name**: Matches the Contentful content type ID (
|
|
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 `
|
|
32
|
-
Find the `
|
|
31
|
+
2. **Add to `componentRegistrationsList`**:
|
|
32
|
+
Find the `componentRegistrationsList` array in `registrations.ts` and add your component.
|
|
33
33
|
|
|
34
34
|
```typescript
|
|
35
|
-
const
|
|
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 `
|
|
52
|
+
2. **Add to `collectionRegistrationsList`** in `registrations.ts`:
|
|
53
53
|
|
|
54
54
|
```typescript
|
|
55
|
-
const
|
|
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
|
|
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 `
|
|
71
|
+
2. **Add to `externalComponentRegistrationsList`** in `registrations.ts`:
|
|
72
72
|
```typescript
|
|
73
|
-
const
|
|
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
|
|
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 **<p>** with typography classes (e.g. `sizingInformation.p`), not as heading elements.
|
|
41
41
|
|
|
42
42
|
```typescript
|
|
43
43
|
import { getSizingInformation } from '@/lib/SizingInformation';
|
|
@@ -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 +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 +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 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"discovery-brightlife.d.ts","sourceRoot":"","sources":["../../src/management/discovery-brightlife.ts"],"names":[],"mappings":""}
|