@refinest/refine-adapter
v0.1.0
Published
Refinest: bridge to @refinedev/core ^5 (resources, dataProvider wrapping, route generation)
Readme
@refinest/refine-adapter
Bridge to @refinedev/core v5: wraps a refinest App plus user-provided refine providers into ready-to-spread props for <Refine>.
Install
pnpm add @refinest/refine-adapter @refinest/core @refinedev/coreUsage
import { Refine } from '@refinedev/core';
import { defineApp, defineResource } from '@refinest/core';
import { useRefinestRefine, bindDispatcherEffects } from '@refinest/refine-adapter';
const app = defineApp({ name: 'admin' });
app.use(defineResource('post', { basePath: '/posts' }));
function Root() {
const refineProps = useRefinestRefine(app, {
dataProvider: yourRefineDataProvider,
notificationProvider: yourNotificationProvider,
accessControlProvider: yourRefineAccessControlProvider, // optional
scopeResolver: (resource) => ({ companyId: 'c1' }), // optional, scope to inject
ourCan: (action, resource, record) => true, // your permissions check
});
return <Refine {...refineProps}>{/* your routes */}</Refine>;
}What it does
- wrapDataProvider: injects a per-resource scope into
getList(as filter) andgetOne/create/update/deleteOne(asmeta.__scope).customis opt-in (no scope). - wrapAccessControlProvider: AND-chains your
ourCanwith refine's accessControlProvider — your deny short-circuits, otherwise delegates. - toRefineResources: maps refinest
ResourceDef[]to refine v5ResourceProps[]— uses string paths, not components (per refine v5). - bindDispatcherEffects: wires refinest
ActionResulteffects (notify / refetch / redirect / setClipboard / clearSelection) to refine providers.infonotifications map toprogress(refine v5 has noinfo). - useRefinestRefine: composes everything into a single
RefinePropsobject.
License
MIT
