diff --git a/packages/context-state/package.json b/packages/context-state/package.json index 3df6359..d6ae176 100644 --- a/packages/context-state/package.json +++ b/packages/context-state/package.json @@ -24,7 +24,7 @@ "dist" ], "scripts": { - "build": "npm run build:ts && npm run build:esm2017 && npm run build:esm2019 && npm run build:cjs:dev && npm run build:cjs:prod", + "build": "npm run build:ts && npm run build:esm2017 && npm run build:esm2019", "build:esm2019": "esbuild src/index.tsx --bundle --outfile=./dist/context-state.es2019.mjs --target=es2019 --external:react --external:rxjs --external:use-sync-external-store --format=esm --sourcemap", "build:esm2017": "esbuild src/index.tsx --bundle --outfile=./dist/context-state.es2017.js --target=es2017 --external:react --external:rxjs --external:use-sync-external-store --format=esm --sourcemap", "build:cjs:dev": "node cjsBuild.js", diff --git a/packages/context-state/src/index.tsx b/packages/context-state/src/index.tsx index 965d4c5..34c7e7d 100644 --- a/packages/context-state/src/index.tsx +++ b/packages/context-state/src/index.tsx @@ -1,2 +1,7 @@ -export * from "./types" +export * from "./combineStates" +export * from "./create-signal" +export * from "./create-root" +export * from "./route-state" export * from "./substate" +export * from "./types" +export { StatePromise } from "./internal/promisses" diff --git a/packages/context-state/src/route-state.ts b/packages/context-state/src/route-state.ts index 17faa4b..33830ea 100644 --- a/packages/context-state/src/route-state.ts +++ b/packages/context-state/src/route-state.ts @@ -6,7 +6,7 @@ import { } from "./internal" import { of } from "rxjs" import { substate } from "./substate" -import { StateNode, CtxFn, StringRecord } from "./types" +import { StateNode, GetValueFn, StringRecord } from "./types" export class InvalidRouteError extends Error { constructor(key: string, keys: string[]) { @@ -33,12 +33,12 @@ export const routeState = < >( parent: StateNode, routes: O, - selector: (value: T, ctx: CtxFn) => keyof O, + selector: (value: T, ctx: GetValueFn) => string & keyof O, ): [StateNode, OT] => { const internalParent = getInternals(parent) const keys = new Set(Object.keys(routes)) const keyState = substate(parent, (ctx) => { - const key = selector(ctx(parent), ctx as any) as string + const key = selector(ctx(parent), ctx) if (!keys.has(key)) throw new InvalidRouteError(key, [...keys]) return of(key) }) diff --git a/packages/context-state/src/types.ts b/packages/context-state/src/types.ts index 7370569..aee3d7b 100644 --- a/packages/context-state/src/types.ts +++ b/packages/context-state/src/types.ts @@ -28,8 +28,10 @@ interface GetObservableFn { ): Observable } +export type GetValueFn = (node: StateNode) => CT + export type CtxFn> = ( - ctxValue: (node: StateNode) => CT, + ctxValue: GetValueFn, ctxObservable: GetObservableFn, key: K, ) => Observable