@lms-cms/adapters
v0.2.3
Published
Adapter layer for the LMS CMS system, providing data fetching and integration capabilities.
Downloads
1,279
Readme
@lms-cms/adapters
Adapter layer for the LMS CMS system, providing data fetching and integration capabilities.
Overview
This package contains adapters that bridge the core LMS CMS functionality with external data sources and APIs. It leverages React Query for efficient data fetching, caching, and state management.
Installation
npm install @lms-cms/adaptersDependencies
- @lms-cms/core: Core LMS CMS functionality
- @tanstack/react-query: Data fetching and state management
- React (peer dependency): >=18.0.0
- React DOM (peer dependency): >=18.0.0
Features
- REST Adapter: HTTP-based content management
- GraphQL Adapter: GraphQL API integration
- Mock Adapter: In-memory adapter for development and testing
- Seed Mock Adapter: Mock adapter with pre-populated sample data
- Type-Safe: Full TypeScript support with proper interfaces
- Configurable: Flexible configuration options for each adapter type
Usage
REST Adapter
import { createRestAdapter } from '@lms-cms/adapters';
import type { RestAdapterConfig } from '@lms-cms/adapters';
const config: RestAdapterConfig = {
baseUrl: 'https://api.example.com',
headers: {
'Authorization': 'Bearer token',
'Content-Type': 'application/json'
}
};
const adapter = createRestAdapter(config);
// Use with LMSProvider
<LMSProvider adapter={adapter} tenantId="tenant-1">
<App />
</LMSProvider>GraphQL Adapter
import { createGraphQLAdapter } from '@lms-cms/adapters';
import type { GraphQLAdapterConfig } from '@lms-cms/adapters';
const config: GraphQLAdapterConfig = {
endpoint: 'https://api.example.com/graphql',
headers: {
'Authorization': 'Bearer token'
}
};
const adapter = createGraphQLAdapter(config);Mock Adapter
import { createMockAdapter } from '@lms-cms/adapters';
// Basic mock adapter
const adapter = createMockAdapter({
delay: 500, // Simulate network delay
initialDocs: [] // Start with empty documents
});
// Mock adapter with sample data
const seededAdapter = createMockAdapter({
delay: 300,
initialDocs: [
{
id: 'doc-1',
version: 1,
meta: { title: 'Sample Document' },
blocks: []
}
]
});Seed Mock Adapter
import { createSeedMockAdapter } from '@lms-cms/adapters';
// Create mock adapter with pre-populated sample content
const adapter = createSeedMockAdapter({
delay: 200
// Automatically includes sample documents
});API Reference
Adapter Factory Functions
createRestAdapter(config: RestAdapterConfig): IContentAdapter
Creates a REST API adapter for HTTP-based content management.
RestAdapterConfig:
baseUrl: string: Base URL for the APIheaders?: Record<string, string>: Default HTTP headerstimeout?: number: Request timeout in milliseconds
createGraphQLAdapter(config: GraphQLAdapterConfig): IContentAdapter
Creates a GraphQL adapter for GraphQL API integration.
GraphQLAdapterConfig:
endpoint: string: GraphQL endpoint URLheaders?: Record<string, string>: Default HTTP headerstimeout?: number: Request timeout in milliseconds
createMockAdapter(options?: MockAdapterOptions): IContentAdapter
Creates an in-memory mock adapter for development and testing.
MockAdapterOptions:
delay?: number: Simulated network delay in millisecondsinitialDocs?: ContentDoc[]: Initial documents to populate the adapter
createSeedMockAdapter(options?: MockAdapterOptions): IContentAdapter
Creates a mock adapter with pre-populated sample data.
MockAdapterOptions:
delay?: number: Simulated network delay in milliseconds
Type Definitions
RestAdapterConfig: Configuration interface for REST adaptersGraphQLAdapterConfig: Configuration interface for GraphQL adapters
Development
# Install dependencies
npm install
# Run development build
npm run dev
# Build for production
npm run build
# Run tests
npm run test
# Type checking
npm run type-checkScripts
npm run build: Build the package for productionnpm run dev: Build in watch mode for developmentnpm run test: Run tests with Vitestnpm run type-check: Run TypeScript type checking without emitting files
