@rattus-orm/react-signals
Version:
ORM for your JS/TS apps: react-signals bindings
40 lines (34 loc) • 1.89 kB
text/typescript
import { RattusOrmInstallerOptions, UseRepository } from '@rattus-orm/core/utils/integrationsHelpers';
import React, { PropsWithChildren } from 'react';
import { State, Elements, DataProviderHelpers, DataProvider, ModulePath, SerializedStorage, Repository, Model } from '@rattus-orm/core';
import { Signal } from '@preact/signals-react';
export { reactUseDatabase as useDatabase } from '@rattus-orm/core/utils/reactIntegrationHelpers';
declare function RattusProvider(props: PropsWithChildren<RattusOrmInstallerOptions>): React.JSX.Element;
declare class SignalStore {
protected signal: Signal<State>;
constructor(initialState?: State);
destroy(ids: string[]): void;
flush(): void;
fresh(records: Elements): void;
save(records: Elements): void;
getData(): State;
protected peekData(): Elements;
}
declare class ReactSignalsDataProvider extends DataProviderHelpers implements DataProvider {
protected readonly storesMap: Map<string, SignalStore>;
delete(module: ModulePath, ids: string[]): void;
dump(): SerializedStorage;
flush(module: ModulePath): void;
getModuleState(module: ModulePath): State;
hasModule(module: ModulePath): boolean;
insert(module: ModulePath, records: Elements): void;
registerConnection(): void;
registerModule(path: ModulePath, initialState?: State): void;
replace(module: ModulePath, records: Elements): void;
save(module: ModulePath, records: Elements): void;
update(module: ModulePath, records: Elements): void;
protected getModulePathAsString(modulePath: ModulePath): string;
protected getSignalStore(modulePath: ModulePath): SignalStore;
}
declare function useRepository<R extends Repository<InstanceType<M>>, M extends typeof Model = typeof Model>(model: M, connection?: string): UseRepository<R, M>;
export { RattusProvider, ReactSignalsDataProvider, useRepository };