@p4it-kft/ra-data-hydra
v1.1.0
Published
React-admin data provider for Hydra-enabled APIs with Mercure real-time support.
Readme
@p4it-kft/ra-data-hydra
A react-admin data provider for APIs supporting the Hydra Core Vocabulary, including APIs created using the API Platform framework.
Based on the data provider from @api-platform/admin, extracted as a standalone lightweight package that depends on ra-core instead of the full react-admin UI bundle.
Installation
yarn add @p4it-kft/ra-data-hydraNote: This package provides only the data provider. You need react-admin (or at minimum ra-core) installed in your application.
Usage
import { Admin, Resource, ListGuesser, EditGuesser } from 'react-admin';
import { dataProvider } from '@p4it-kft/ra-data-hydra';
const hydraDataProvider = dataProvider({
entrypoint: 'https://demo.api-platform.com',
});
const App = () => (
<Admin dataProvider={hydraDataProvider}>
<Resource name="books" list={ListGuesser} edit={EditGuesser} />
<Resource name="reviews" list={ListGuesser} edit={EditGuesser} />
</Admin>
);
export default App;With Authentication
import { dataProvider, fetchHydra } from '@p4it-kft/ra-data-hydra';
const httpClient = (url, options = {}) => {
const token = localStorage.getItem('token');
return fetchHydra(url, {
...options,
headers: {
...options.headers,
Authorization: token ? `Bearer ${token}` : undefined,
},
});
};
const hydraDataProvider = dataProvider({
entrypoint: 'https://demo.api-platform.com',
httpClient,
});With Custom API Documentation Parser
import { dataProvider } from '@p4it-kft/ra-data-hydra';
import { parseHydraDocumentation } from '@api-platform/api-doc-parser';
const hydraDataProvider = dataProvider({
entrypoint: 'https://demo.api-platform.com',
apiDocumentationParser: parseHydraDocumentation,
});Features
- Parses Hydra API documentation to discover resources and fields
- Implements all react-admin data provider methods (getList, getOne, create, update, delete, etc.)
- Supports pagination, filtering, and sorting
- Handles JSON-LD format and Hydra collections
- Supports file uploads via multipart/form-data
- Supports embedded resources
- TypeScript support with full type definitions
API
dataProvider(options)
Creates a react-admin data provider for Hydra APIs.
Options:
entrypoint(string, required): The API entrypoint URLhttpClient(function): Custom HTTP client (defaults tofetchHydra)apiDocumentationParser(function): Custom API documentation parsermercure(object|boolean): Mercure real-time updates configurationuseEmbedded(boolean): Enable embedded resource support (default:true)disableCache(boolean): Disable the local embedded documents cache (default:false)keyPrefix(string): The prefix used for Hydra JSON-LD keys in API responses (default:'hydra:'). Set to''if your API returns unprefixed keys (e.g.memberinstead ofhydra:member).
fetchHydra(url, options)
HTTP client for Hydra APIs that handles JSON-LD content negotiation.
schemaAnalyzer()
Creates a schema analyzer for extracting field metadata from Hydra documentation.
Exports
// Data provider factory
export { dataProvider } from '@p4it-kft/ra-data-hydra';
// HTTP client
export { fetchHydra } from '@p4it-kft/ra-data-hydra';
// Schema analyzer
export { schemaAnalyzer } from '@p4it-kft/ra-data-hydra';
// Utility
export { transformJsonLdDocumentToReactAdminDocument } from '@p4it-kft/ra-data-hydra';
// Types
export type {
ApiPlatformAdminRecord,
ApiPlatformAdminDataProvider,
HydraDataProviderFactoryParams,
HydraCollection,
HydraHttpClientResponse,
HttpClientOptions,
MercureOptions,
SchemaAnalyzer,
FilterParameter,
IntrospectPayload,
} from '@p4it-kft/ra-data-hydra';Documentation
Credits
Based on the Hydra data provider from @api-platform/admin, originally created by Kévin Dunglas.
License
MIT
