@azot-dev/cortex
v2.1.9
Published
A lib to make TDD and clean architecture easy to use with React
Readme
Cortex (core package)
This package exposes the v2 API: Core, BaseService, CortexProvider, createTypedHooks, useAsync.
Installation
npm i @azot-dev/cortexMain API
import { Core, BaseService, createTypedHooks, CortexProvider, useAsync } from '@azot-dev/cortex'Core
type Registry = {
[key: string]: new (deps: Deps) => unknown
}
const core = new Core<Registry, Deps>(deps, services)
core.getService('counter')BaseService
class MyService extends BaseService<Services, Deps, { value: number }> {
state = { value: 0 }
init() {}
doSomething() { this.state.value++ }
}Typed hooks
const { useService } = createTypedHooks<Services>()useService('counter') returns the service public methods + its reactive state (keys of state).
React provider
import { CortexProvider } from '@azot-dev/cortex'
export function Root({ core }: { core: any }) {
return (
<CortexProvider core={core}>
<App />
</CortexProvider>
)
}Async hook
import { useAsync } from '@azot-dev/cortex'
const { data, loading, error, refetch, reset } = useAsync(apiCall, { lazy: true })CLI template
The package includes a bootstrap CLI:
npx @azot-dev/cortex@latest init reactGenerated structure under cortex/: dependencies/, services/, setup/ with createCore and typed useService.
