Skip to content

feat!: rename ExO export fields to match updated entity names [AIS-388] - #2352

Draft
Joe Bingham (jshmo) wants to merge 6 commits into
exofrom
feat/ais-388-exo-rename
Draft

feat!: rename ExO export fields to match updated entity names [AIS-388]#2352
Joe Bingham (jshmo) wants to merge 6 commits into
exofrom
feat/ais-388-exo-rename

Conversation

@jshmo

@jshmo Joe Bingham (jshmo) commented Jul 31, 2026

Copy link
Copy Markdown

Summary

Updates contentful-export to be compatible with the latest ExO entity naming (PROD-2918, AIS-388).

Three ExO entity types were renamed per the feature naming recommendations:

Old New
Component Type Component
Fragment Experience Fragment
Template Experience Template

Changes

  • Exported JSON field names (lib/tasks/get-space-data.js):
    • componentTypescomponents
    • fragmentsexperienceFragments
    • templatesexperienceTemplates
  • Type definitions (types.d.ts): updated ContentfulExportField union.
  • Task/log strings: Fetching Component Types dataFetching Components data, Fetching Templates dataFetching Experience Templates data, Fetching Fragments dataFetching Experience Fragments data, and matching skip-warning messages.
  • CLI option description (lib/usageParams.js): include-experience-orchestration describe string.

designTokens and experiences are unaffected. The underlying SDK method names (componentType.getMany, template.getMany, fragment.getMany) are unchanged — only the output field names and display strings changed.

Note: this PR targets the exo branch, where the ExO export logic lives (it is not yet on main).

Breaking change

This renames exported JSON schema fields — a breaking change. Consumers of the output (e.g. contentful-import) must update in lockstep. Coordinate with AIS-387. Needs a major semver bump; commit includes feat! + BREAKING CHANGE: footer.

Verification

  • npm run build (tsc typecheck + babel) — passes
  • npm run test:unit — 49/49 pass
  • npm run lint — fails to load the standard eslint config in this environment (pre-existing config-resolution issue, unrelated to these string/identifier renames)

🤖 Generated with Claude Code

Joe Bingham (jshmo) and others added 6 commits July 31, 2026 15:54
Rename three ExO entity arrays in the exported JSON and their user-facing
task/log strings to match the updated feature naming:

- componentTypes -> components (Component Type -> Component)
- templates -> experienceTemplates (Template -> Experience Template)
- fragments -> experienceFragments (Fragment -> Experience Fragment)

Updates the ContentfulExportField type and the
include-experience-orchestration option description. designTokens and
experiences are unaffected.

BREAKING CHANGE: exported JSON field names componentTypes, templates and
fragments are renamed to components, experienceTemplates and
experienceFragments. Consumers of the export output (e.g.
contentful-import, AIS-387) must update in lockstep.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
…d ExO endpoints [AIS-388]

v12.13.0 renames the ExO plain-client endpoints; the old ones are now
deprecated. Switch the export to the non-deprecated endpoints:

- componentType.getMany -> component.getMany
- template.getMany -> experienceTemplate.getMany
- fragment.getMany -> experienceFragment.getMany

designToken.getMany is now implemented in the SDK, so drop the stale
AIS-135 "not yet implemented" note (the graceful try/catch stays for
spaces without the exo_m1 entitlement).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
…388]

The ExO export tasks previously had no unit coverage — every existing
test omits `plainClient` and `includeExperienceOrchestration`, so all six
ExO tasks were always skipped. Add tests that exercise the code AIS-388
changed:

- ExO entities are skipped by default (flag off)
- each entity is fetched via its non-deprecated endpoint
  (component / experienceTemplate / experienceFragment, not the deprecated
  componentType / template / fragment) and lands on its renamed field
- deprecated endpoints are never called
- cursor pagination follows `pages.next` and aggregates across pages
- the target environmentId is threaded through to ExO endpoints
- a failing endpoint degrades to [] without aborting the other entities

Verified by mutation: reverting an endpoint to its deprecated name turns
these tests red.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
The exo branch predates Renovate setup on main (#2331), so renovate.json
was absent, failing the renovate-usage CI check. Restore the same config
used on main, extending local>contentful/renovate-config.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This reverts commit 52c7e7d.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@jshmo

Copy link
Copy Markdown
Author

Governance check just failing until #2331 is consumed in the exo branch 🙂

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant