@cooperco/cooper-component-library 0.1.62 → 0.1.64

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.
@@ -1,112 +1,42 @@
1
- # GraphQL Queries
1
+ # Migrations
2
2
 
3
- This directory contains GraphQL queries for fetching content from Contentful CMS.
3
+ ## Prerequisites
4
4
 
5
- ## Directory Structure
5
+ - Run `pnpm install`
6
+ - Obtain a Contentful CMA token
7
+ - Confirm and double check what space and environment you should be running these in
8
+ - Run `pnpm exec contentful-cli-migrations --environment-id <your-env-name> --space-id <space-id> --management-token <CMA-TOKEN> --initialise` on environment if not already and update `.env`
6
9
 
7
- ```
8
- cms/contentful/queries/
9
- ├── index.ts # Barrel export file (manual updates required)
10
- ├── fragments.ts # Shared GraphQL fragments
11
- ├── *.query.ts # Individual component queries
12
- └── README.md # This file
13
- ```
14
10
 
15
- ## How Queries Are Exported
11
+ ## Helpful Docs
16
12
 
17
- The query export system in this project is **semi-automatic**:
13
+ - [Contentful Migration](https://github.com/contentful/contentful-migration)
14
+ - [Contentful Migration Reference Docs](https://github.com/contentful/contentful-migration/blob/main/README.md#reference-documentation)
15
+ - [Contentful Data Model](https://www.contentful.com/developers/docs/concepts/data-model/)
18
16
 
19
- ### The Process
17
+ ### Instructions
20
18
 
21
- 1. **Individual Query Files** - Queries are defined in individual files with the pattern `*.query.ts`
22
- - Example: `accordion.query.ts`, `carousel.query.ts`
19
+ - Create your migration file in the scripts folder with the following format: `0002-description.cjs`
20
+ - Write your migrations
21
+ - This should be with an up and a down function
22
+ - The up function updates the model
23
+ - The down function reversts your changes
24
+ - Run your migration on a test environment with the following command: `pnpm exec contentful-cli-migrations --environment-id <your-env-name> --space-id <space-id> --management-token <CMA-TOKEN>`
25
+ - Optional Flags:
26
+ - `--rollback`: Rolls back one migration.
23
27
 
24
- 2. **Manual Barrel Export** - Queries are re-exported through `index.ts`
25
- - Uses wildcard exports: `export * from './accordion.query.js'`
26
- - **Note:** Exports use `.js` extensions even though source files are `.ts` (ESM compatibility)
28
+ ### Gotchas
27
29
 
28
- 3. **Package-Level Export** - The barrel export is exposed via `package.json`:
29
- ```json
30
- "./cms/contentful/graphql": {
31
- "import": "./dist/cms/contentful/queries/index.js",
32
- "types": "./dist/cms/contentful/queries/index.d.ts"
33
- }
34
- ```
30
+ - Currently the rollback may change the version counter even if the migration doesnt run.
31
+ - for this just update the counter to the correct counter in contentful and rerun.
32
+ - The migration may run and create a content type even if the whole migration doesnt run correctly.
33
+ - To fix you will need to delete the content type and re-run
35
34
 
36
- ## Creating a New Query
35
+ ### TODO
37
36
 
38
- ### Steps Required
39
-
40
- 1. **Create Query File** - Add your query file: `yourComponent.query.ts`
41
-
42
- 2. **Define Query** - Follow the established pattern:
43
- ```typescript
44
- import { gql } from 'graphql-tag'
45
- import type { DocumentNode } from 'graphql'
46
- import { someFragment } from './fragments.js' // If needed
47
-
48
- export const getYourComponent: DocumentNode = gql`
49
- ${someFragment} // Include fragments if needed
50
- query yourComponentQuery($id: String!, $preview: Boolean = false) {
51
- yourComponent(id: $id, preview: $preview) {
52
- __typename
53
- # Add your fields here
54
- }
55
- }
56
- `
57
- ```
58
-
59
- 3. **Update Barrel Export** - **MANUALLY ADD** export to `index.ts`:
60
- ```typescript
61
- export * from './yourComponent.query.js'
62
- ```
63
- - Maintain alphabetical order for consistency
64
- - Use `.js` extension (not `.ts`)
65
-
66
- ### Query Naming Conventions
67
-
68
- - **File Name:** `componentName.query.ts` (camelCase)
69
- - **Export Name:** `getComponentName` (camelCase with `get` prefix)
70
- - **Query Name:** `componentNameQuery` (camelCase with `Query` suffix)
71
-
72
- ### Example
73
-
74
- ```typescript
75
- // accordion.query.ts
76
- import { gql } from 'graphql-tag'
77
- import type { DocumentNode } from 'graphql'
78
- import { accordionItemFragment } from './fragments.js'
79
-
80
- export const getAccordion: DocumentNode = gql`
81
- ${accordionItemFragment}
82
- query accordionQuery($id: String!, $preview: Boolean = false) {
83
- accordion(id: $id, preview: $preview) {
84
- __typename
85
- headline
86
- accordionType
87
- loadMoreButtonTitle
88
- startOpen
89
- accordionItemCollection {
90
- items {
91
- ...accordionItemFragment
92
- }
93
- }
94
- }
95
- }
96
- `
97
- ```
98
-
99
- ## Using Queries in Consumer Projects
100
-
101
- Queries are consumed via the package export:
102
-
103
- ```typescript
104
- import { getAccordion, getCarousel } from '@cooperco/cooper-component-library/cms/contentful/graphql'
105
- ```
106
-
107
- ## Important Notes
108
-
109
- - **Manual Export Required:** The system is NOT fully automatic - you MUST manually update `index.ts` when adding new queries
110
- - **ESM Extensions:** Always use `.js` extensions in exports (even for `.ts` source files)
111
- - **Preview Mode:** All queries support a `preview` parameter for Contentful preview API
112
- - **Fragments:** Shared fragments are defined in `fragments.ts` and can be reused across queries
37
+ - Fix rollback versioning
38
+ - This flag should cause a rollback to that specific version, in this case 0001 `--version 0001`
39
+ - It should be used with `--rollback`
40
+ - It should update dthe versionTracker entry on successful rollback
41
+ - Run migration error handling
42
+ - runMigration is currently not working as expected and bumping the counter when the migration was aborted