diff --git a/CHANGELOG.md b/CHANGELOG.md index 37bf5fb..de20823 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -16,6 +16,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Standardized package development, CI, and release workflows on pnpm 11. - Adopted `@okyrychenko-dev/type-utils` as a direct runtime dependency for shared guards. - Aligned package exports and validation tooling with the other maintained `@okyrychenko-dev` libraries. +- Deprecated `createStoreToolkit().getProvider()` in favor of the canonical `provider` property. + The compatibility accessor still returns the same Provider bindings without runtime warnings; + removal is deferred to the next intentional major release. ### Removed diff --git a/README.md b/README.md index bb89b2e..93f01ef 100644 --- a/README.md +++ b/README.md @@ -41,8 +41,9 @@ Each factory uses the same value/plain/API naming pattern: The provider factory also exposes `useContextStoreOptional` for integrations that need to detect whether a matching provider is present. The toolkit exposes its -shared provider bindings through `provider`; `getProvider()` returns that same -object when function-based access is useful. +shared provider bindings through `provider`. The deprecated `getProvider()` +compatibility accessor returns that same object and remains available until the +next intentional major release. ## Installation @@ -206,7 +207,7 @@ Returns: - `useStorePlain` - `useStoreApi` - `provider` -- `getProvider()` +- `getProvider()` (deprecated; use `provider`) - `useResolvedStoreApi()` - `useResolvedValue()` - `useResolvedStorePlain()` @@ -319,14 +320,19 @@ It returns the same resolved hook family used by `createStoreToolkit`: The deprecated compatibility names have been removed. Replace them with their canonical equivalents: -| Removed name | Replacement | -| -------------------------------- | --------------------------------------------- | -| `toolkit.createProvider()` | `toolkit.provider` or `toolkit.getProvider()` | -| `useContext()` | `useContextStoreApi()` | -| `useOptionalContext()` | `useContextStoreOptional()` | -| `useResolvedStore()` | `useResolvedStoreApi()` | -| `useResolvedStoreWithSelector()` | `useResolvedValue()` | -| `onStoreCreate` | `onStoreReady` | +| Removed name | Replacement | +| -------------------------------- | --------------------------- | +| `toolkit.createProvider()` | `toolkit.provider` | +| `useContext()` | `useContextStoreApi()` | +| `useOptionalContext()` | `useContextStoreOptional()` | +| `useResolvedStore()` | `useResolvedStoreApi()` | +| `useResolvedStoreWithSelector()` | `useResolvedValue()` | +| `onStoreCreate` | `onStoreReady` | + +`getProvider()` remains available as a deprecated compatibility path. Replace +`toolkit.getProvider()` with `toolkit.provider`; both currently return the exact +same Provider bindings object. Its removal is deferred to a separately approved +major release, and calling it does not emit a runtime warning. `onStoreReady` runs after the provider commits and at most once for each provider store instance. Use `onStoreInit` when state must be initialized synchronously diff --git a/src/core/__tests__/createStoreToolkit.test.tsx b/src/core/__tests__/createStoreToolkit.test.tsx index f7f01e5..9a67ce5 100644 --- a/src/core/__tests__/createStoreToolkit.test.tsx +++ b/src/core/__tests__/createStoreToolkit.test.tsx @@ -21,7 +21,6 @@ describe("createStoreToolkit", () => { expect(toolkit.useStorePlain).toBeDefined(); expect(toolkit.useStoreApi).toBeDefined(); expect(toolkit.provider).toBeDefined(); - expect(toolkit.getProvider).toBeDefined(); expect(toolkit.useResolvedStoreApi).toBeDefined(); expect(toolkit.useResolvedValue).toBeDefined(); expect(toolkit.useResolvedStorePlain).toBeDefined(); @@ -32,6 +31,7 @@ describe("createStoreToolkit", () => { count: 0, increment: () => set((state) => ({ count: state.count + 1 })), })); + // eslint-disable-next-line @typescript-eslint/no-deprecated -- Verifies the compatibility path. expect(toolkit.provider).toBe(toolkit.getProvider()); }); diff --git a/src/types/store-toolkit.types.ts b/src/types/store-toolkit.types.ts index 897f03f..670c95f 100644 --- a/src/types/store-toolkit.types.ts +++ b/src/types/store-toolkit.types.ts @@ -6,5 +6,9 @@ import type { StoreMutatorTuple } from "./store.types"; export interface StoreToolkit = []> extends ShallowStoreBindings, ResolvedStoreBindings { provider: StoreProviderResult; + /** + * @deprecated Use {@link provider} instead. This compatibility accessor will be removed in the + * next intentional major release. + */ getProvider: () => StoreProviderResult; }