Skip to content

Conversation

@holtvogt
Copy link
Contributor

Summary

Introduces @adobe/spacecat-shared-aem-client. A client library for interacting with AEM Cloud Service APIs.

Features

  • Fragment Management: CRUD operations for content fragments
  • Fragment Versioning: Create versions of content fragments
  • Fragment Tagging: CRUD operations for tags on content fragments

Highlights

  • IMS authentication via @adobe/spacecat-shared-ims-client
  • Builder pattern for flexible capability composition
  • Comprehensive error handling with typed errors (authentication, conflict, precondition-failed, etc.)

Usage

import { AemClientBuilder } from '@adobe/spacecat-shared-aem-client';

const { management, versioning, tagging } = AemClientBuilder.create({ site, env, log })
  .withManagement()
  .withVersioning()
  .withTagging()
  .build();

const fragment = await management.getFragment('/content/dam/my-project/fragment');

Please ensure your pull request adheres to the following guidelines:

  • make sure to link the related issues in this description
  • when merging / squashing, make sure the fixed issue references are visible in the commits, for easy compilation of release notes

Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR introduces a new client library @adobe/spacecat-shared-aem-client for interacting with Adobe Experience Manager (AEM) Cloud Service APIs. The library provides a builder pattern for flexible composition of client capabilities including fragment management, versioning, and tagging.

Key changes include:

  • Builder pattern implementation for flexible client instantiation
  • Comprehensive error hierarchy with typed errors for different HTTP status codes
  • IMS authentication integration for secure API access

Reviewed changes

Copilot reviewed 36 out of 37 changed files in this pull request and generated 1 comment.

Show a summary per file
File Description
package.json Package configuration with dependencies on IMS client and shared utils
README.md Comprehensive usage documentation with examples for all capabilities
src/index.js Main entry point exporting builder, errors, and site management classes
src/index.d.ts TypeScript definitions for all exported classes and interfaces
src/aem-client-base.js Base client with authentication and HTTP request handling
src/aem-client-builder.js Builder pattern for composing client capabilities
src/errors/*.js Error class hierarchy for typed error handling
src/sites/fragment-*.js Fragment management, versioning, and tagging implementations
src/sites/constants.js API endpoint constants
test/**/*.test.js Comprehensive test coverage for all modules
Configuration files Standard project setup including ESLint, Mocha, NYC, and semantic-release

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

@github-actions
Copy link

This PR will trigger a minor release when merged.

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
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.

3 participants