diff --git a/.changeset/accurate-lifecycle-diagnostics.md b/.changeset/accurate-lifecycle-diagnostics.md deleted file mode 100644 index 7569b3e5..00000000 --- a/.changeset/accurate-lifecycle-diagnostics.md +++ /dev/null @@ -1,12 +0,0 @@ ---- -"@okyrychenko-dev/react-action-guard": patch -"@okyrychenko-dev/react-action-guard-devtools": patch ---- - -Finalize performance lifetimes on timeout and bulk cleanup, preserve timing through scope updates, and isolate slow-block callback failures. Keep Devtools history durations accurate after scope changes and preserve global registrations during targeted cleanup. - -Preserve replacement registrations created inside timeout callbacks using opaque lifecycle registration identities; stale timeout events finalize only the expired lifetime. - -Snapshot tracked scopes in performance and Devtools diagnostics so caller-owned array mutations cannot prevent scoped cleanup. - -Read timeout metadata after the timeout callback so scope, reason and priority updates are reflected in the emitted event while preserving registration identity. diff --git a/.changeset/active-query-work.md b/.changeset/active-query-work.md deleted file mode 100644 index eeef2b2a..00000000 --- a/.changeset/active-query-work.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@okyrychenko-dev/react-action-guard-tanstack": minor ---- - -Block query initial loading only while pending and actively fetching. Disabled idle and offline paused queries no longer block by default across single, infinite, and collection hooks. Background refetch and pagination blocking remain opt-in, and mutation pending behavior is unchanged. See the TanStack README migration guidance for workflows that previously relied on pending queries without active work. diff --git a/.changeset/async-execution-onboarding.md b/.changeset/async-execution-onboarding.md deleted file mode 100644 index 4258d1e5..00000000 --- a/.changeset/async-execution-onboarding.md +++ /dev/null @@ -1,6 +0,0 @@ ---- ---- - -Clarify async tracking, blocker timeout, cleanup, and application-owned cancellation -in onboarding documentation. Add public-hook lifetime tests without changing runtime -behavior or public APIs; no package release is required. diff --git a/.changeset/bold-beers-accept.md b/.changeset/bold-beers-accept.md deleted file mode 100644 index a845151c..00000000 --- a/.changeset/bold-beers-accept.md +++ /dev/null @@ -1,2 +0,0 @@ ---- ---- diff --git a/.changeset/bright-blockers-live.md b/.changeset/bright-blockers-live.md deleted file mode 100644 index 4b349d92..00000000 --- a/.changeset/bright-blockers-live.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@okyrychenko-dev/react-action-guard": minor ---- - -Introduce a public Blocking lifecycle interface that owns blocker transitions, timers, immutable reads, and isolated observation while preserving the existing Zustand store interface through a compatibility adapter. diff --git a/.changeset/bright-scopes-align.md b/.changeset/bright-scopes-align.md deleted file mode 100644 index d493911f..00000000 --- a/.changeset/bright-scopes-align.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -"@okyrychenko-dev/react-action-guard": patch -"@okyrychenko-dev/react-action-guard-ui": patch ---- - -Centralize scope normalization, inheritance, observation, and targeted-clear semantics in the core package, preserve empty observed scopes, and migrate guarded UI controls to use the shared behavior. The UI package now requires the core release that exports these helpers. diff --git a/.changeset/browser-history-verification.md b/.changeset/browser-history-verification.md deleted file mode 100644 index da09aaa7..00000000 --- a/.changeset/browser-history-verification.md +++ /dev/null @@ -1,6 +0,0 @@ ---- ---- - -Add real-browser TanStack back/forward confirmation tests, CI verification, and -versioned evidence. This is test and documentation infrastructure with no public -runtime behavior change, so no package release is required. diff --git a/.changeset/calm-tools-migrate.md b/.changeset/calm-tools-migrate.md deleted file mode 100644 index 6f599c6d..00000000 --- a/.changeset/calm-tools-migrate.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -"@okyrychenko-dev/react-action-guard": patch -"@okyrychenko-dev/react-action-guard-devtools": patch ---- - -Migrate the Core and Devtools store integrations to `@okyrychenko-dev/react-zustand-toolkit` 1.0.0 while preserving React Action Guard's public store and provider APIs. diff --git a/.changeset/canonical-guides-core-contract.md b/.changeset/canonical-guides-core-contract.md deleted file mode 100644 index 020194b8..00000000 --- a/.changeset/canonical-guides-core-contract.md +++ /dev/null @@ -1,7 +0,0 @@ ---- ---- - -Add canonical concepts, workflow and advanced guides, UI/Router reference pages and the -planned stable Core contract and migration path. Verify canonical snippets through built public -exports and local navigation destinations. These documentation/private-tooling changes do not -alter runtime APIs or require a package release. diff --git a/.changeset/checked-coordination-onboarding.md b/.changeset/checked-coordination-onboarding.md deleted file mode 100644 index 53793fe1..00000000 --- a/.changeset/checked-coordination-onboarding.md +++ /dev/null @@ -1,8 +0,0 @@ ---- ---- - -Embed the checked core coordination example in the documentation site. Demonstrate -command-time availability checks, distinct repeated editor registrations, accessible -blocking reasons, failure recovery and pending work after producer unmount. Add -source build provenance and truthful version/migration navigation. These private -example and documentation changes require no runtime package release. diff --git a/.changeset/clean-blockers-publish.md b/.changeset/clean-blockers-publish.md deleted file mode 100644 index 88dc5f50..00000000 --- a/.changeset/clean-blockers-publish.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -"@okyrychenko-dev/react-action-guard": minor -"@okyrychenko-dev/react-action-guard-devtools": minor -"@okyrychenko-dev/react-action-guard-ui": patch ---- - -Publish immutable Blocking lifecycle snapshots through global and provider-scoped stores. React hooks, guarded UI controls, and Devtools subscribe to those snapshots. The final release cohort is Core 2.0 and Devtools 1.0 with a Core ^2.0.0 peer requirement. Node.js 20 or newer is required; prior intermediate version proposals are superseded by this cohort. diff --git a/.changeset/core-coordination-onboarding.md b/.changeset/core-coordination-onboarding.md deleted file mode 100644 index ee0824ac..00000000 --- a/.changeset/core-coordination-onboarding.md +++ /dev/null @@ -1,15 +0,0 @@ ---- ---- - -Provide focused onboarding around a core-only example where one save coordinates -two independent controls. Link runnable instructions and canonical documentation -from the package READMEs, retaining detailed reference in expandable sections. -Clarify scope matching, execution lifetime and when local state is sufficient. -Build core before typechecking the example so clean-checkout verification resolves -the package's public declarations without relying on existing build output. -Include the example's rendered workflow tests in recursive CI coverage checks. -Resolve core's public source entry in example tests so standalone tests work -without build output. Build core before root recursive test commands, preserving -parallel workspace testing without depending on a particular example package. -These documentation and private-example changes do not alter runtime behavior or -public APIs; no package release is required. diff --git a/.changeset/current-conditional-registration.md b/.changeset/current-conditional-registration.md deleted file mode 100644 index ae970efd..00000000 --- a/.changeset/current-conditional-registration.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@okyrychenko-dev/react-action-guard": patch ---- - -Keep conditional blocker configuration current while the condition remains true, including scope, reason, priority, timestamp and timeout options. Preserve unchanged timeout deadlines and use the latest timeout callback. A timeout ends the current registration episode until a polled false-to-true condition transition or a new ID or Provider attachment starts another episode. diff --git a/.changeset/current-react-router-confirmation.md b/.changeset/current-react-router-confirmation.md deleted file mode 100644 index 9e9bd722..00000000 --- a/.changeset/current-react-router-confirmation.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -"@okyrychenko-dev/react-action-guard-router": patch ---- - -Use shared confirmation ownership in React Router so only the latest attached navigation attempt can proceed or notify permission. Invalidate pending answers when the evaluated protection state, scope, or message changes, while preserving them across callback rerenders and equivalent scopes. - -Reset the current blocked transition and clear its pending confirmation when protection configuration changes, without resuming stale approvals or resetting superseding attempts. - -Retain ownership of synchronous denials and silent blocking when they replace an async prompt, so later protection changes reset the current blocked transition rather than consulting the obsolete prompt. diff --git a/.changeset/deep-guards-contract.md b/.changeset/deep-guards-contract.md deleted file mode 100644 index edac2def..00000000 --- a/.changeset/deep-guards-contract.md +++ /dev/null @@ -1,16 +0,0 @@ ---- -"@okyrychenko-dev/react-action-guard": major -"@okyrychenko-dev/react-action-guard-devtools": major -"@okyrychenko-dev/react-action-guard-ui": patch -"@okyrychenko-dev/react-action-guard-tanstack": patch -"@okyrychenko-dev/react-action-guard-router": patch ---- - -Complete the Blocking lifecycle architecture migration. Remove mutable blocker and middleware maps, -named middleware registration, direct event dispatch, and compatibility restore contracts. Observe -lifecycle transitions through ownership-safe anonymous leases and read readonly BlockerInfo snapshots. -Devtools sessions release only their observations; manual observation is now additive on every store. -Centralize guarded-control state and accessible reasons while retaining public hooks, state mappers, -state utilities, and distinct link behavior. Consolidate shared TanStack coverage at its coordination -interface and document migration from removed interfaces. Retain react-zustand-toolkit as the state -management base. diff --git a/.changeset/duplicate-hook-diagnostics.md b/.changeset/duplicate-hook-diagnostics.md deleted file mode 100644 index 1b627993..00000000 --- a/.changeset/duplicate-hook-diagnostics.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@okyrychenko-dev/react-action-guard": patch ---- - -Warn in development when active useActionBlocker hooks share an ID in the same store. Track registrations through cleanup and Strict Mode without warning for equal IDs in isolated stores. Shared IDs still require consumer correction; production registration and cleanup behavior is unchanged. diff --git a/.changeset/empty-peer-install-config.md b/.changeset/empty-peer-install-config.md deleted file mode 100644 index ec380ec4..00000000 --- a/.changeset/empty-peer-install-config.md +++ /dev/null @@ -1,3 +0,0 @@ ---- ---- - diff --git a/.changeset/evidence-gated-evolution.md b/.changeset/evidence-gated-evolution.md deleted file mode 100644 index e5b68c4e..00000000 --- a/.changeset/evidence-gated-evolution.md +++ /dev/null @@ -1,7 +0,0 @@ ---- ---- - -Record registration identity, application guard instance, headless distribution and ecosystem -demand decisions with source/test evidence, compatibility consequences and reconsideration gates. -Expose the current composition guidance and compile its type-utils example. Documentation and -private validation tooling only; no runtime package release is required. diff --git a/.changeset/explain-observed-protection.md b/.changeset/explain-observed-protection.md deleted file mode 100644 index 7ae06c49..00000000 --- a/.changeset/explain-observed-protection.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@okyrychenko-dev/react-action-guard-devtools": minor ---- - -Explain blocker age and unavailable provenance, and visualize actual blocker-to-scope protection with an accessible text table. Add optional panel-local scope/action declarations without changing blocking policy or observation-session ownership. Record telemetry ownership and retain existing Core analytics compatibility. diff --git a/.changeset/explanatory-workflow-showcase.md b/.changeset/explanatory-workflow-showcase.md deleted file mode 100644 index 52b2a9e5..00000000 --- a/.changeset/explanatory-workflow-showcase.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -"@okyrychenko-dev/react-action-guard-devtools": patch ---- - -Preserve scoped CSS Module class mappings in packed Devtools and keep its panel within narrow viewports. Use one full-height scroll area for active blockers and scope protection so the table can reach the bottom of the panel without nested scrolling or unused space. Document the runnable enterprise showcase using store-local Devtools, checkout autosave and shared user/agent revision protection, including explicit scope/action declarations and application-owned execution responsibilities. - -Include both checkout and navigation in the showcase's save-cart inspection mapping so scope protection matches the guarded action. diff --git a/.changeset/explicit-scheduled-windows.md b/.changeset/explicit-scheduled-windows.md deleted file mode 100644 index 80820208..00000000 --- a/.changeset/explicit-scheduled-windows.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -"@okyrychenko-dev/react-action-guard": patch ---- - -Validate every supplied scheduled-window bound, preserve epoch-zero ends, and treat zero duration as an empty window instead of indefinite blocking. Invalid bounds cancel hook-owned work with a development warning. Support distant finite starts using bounded timer chunks, matching end deadlines. Omit duration and end explicitly when indefinite blocking is intended. - -Empty future windows do not retain start timers or repeatedly wake for distant deadlines. diff --git a/.changeset/four-lands-smash.md b/.changeset/four-lands-smash.md deleted file mode 100644 index 6e10bf94..00000000 --- a/.changeset/four-lands-smash.md +++ /dev/null @@ -1,4 +0,0 @@ ---- ---- - -Centralize shared tooling configuration without changing published package behavior. diff --git a/.changeset/fresh-router-render-conditions.md b/.changeset/fresh-router-render-conditions.md deleted file mode 100644 index 00d1d08a..00000000 --- a/.changeset/fresh-router-render-conditions.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@okyrychenko-dev/react-action-guard-router": patch ---- - -Evaluate pure navigation predicates on every React render, including stable functions reading refs or external state. Remove misleading useCallback guidance: changing a ref alone still requires a React rerender to refresh protection. Preserve scope OR semantics and router-specific navigation and unload capabilities. diff --git a/.changeset/frozen-normalized-scopes.md b/.changeset/frozen-normalized-scopes.md deleted file mode 100644 index 1dd3c1bd..00000000 --- a/.changeset/frozen-normalized-scopes.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@okyrychenko-dev/react-action-guard": patch ---- - -Freeze normalized scope arrays so JavaScript mutation cannot corrupt cached results shared by other consumers. Stable identity, sorting, deduplication, default and empty scope semantics, and bounded cache eviction are preserved. diff --git a/.changeset/fuzzy-dingos-match.md b/.changeset/fuzzy-dingos-match.md deleted file mode 100644 index e4af3a6b..00000000 --- a/.changeset/fuzzy-dingos-match.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@okyrychenko-dev/react-action-guard": patch ---- - -Treat array-form global blocker scopes consistently across store scope queries and targeted clears. diff --git a/.changeset/gentle-stores-resolve.md b/.changeset/gentle-stores-resolve.md deleted file mode 100644 index 9563643a..00000000 --- a/.changeset/gentle-stores-resolve.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@okyrychenko-dev/react-action-guard-tanstack": patch ---- - -Route TanStack blocking hooks through the nearest `UIBlockingProvider` store while preserving the global-store fallback when no provider is present. diff --git a/.changeset/mutation-execution-contract.md b/.changeset/mutation-execution-contract.md deleted file mode 100644 index f44808a8..00000000 --- a/.changeset/mutation-execution-contract.md +++ /dev/null @@ -1,4 +0,0 @@ ---- ---- - -Document the planned mutation execution lifetime contract, including concurrent calls, native callbacks, reset, unmount, and blocker timeouts. This decision record does not change runtime behavior; all-call protection remains pending implementation, and no package release is required. diff --git a/.changeset/native-tanstack-navigation.md b/.changeset/native-tanstack-navigation.md deleted file mode 100644 index 8f6456c8..00000000 --- a/.changeset/native-tanstack-navigation.md +++ /dev/null @@ -1,13 +0,0 @@ ---- -"@okyrychenko-dev/react-action-guard-router": minor ---- - -Restore TanStack navigation blocking using native useBlocker. Confirmed transitions keep protection armed, failed confirmations deny navigation, and superseded or unmounted attempts cannot allow navigation. Require TanStack Router >=1.170.41 within v1, the verified compatibility floor, and use native unload protection with a one-shot bypass after accepted document navigation, avoiding a duplicate browser prompt. - -Invalidate pending confirmations when when or scope changes, including replacements that leave the computed blocking state active. - -Preserve pending confirmations when observer callbacks onBlock or onAllow change during a rerender. - -Compare scopes by normalized contents so equivalent arrays, including reordered or duplicated entries, preserve pending confirmations while effective scope changes invalidate them. - -Document and test the native not-found limitation at TanStack Router 1.170.41: unmatched-to-matched navigation skips adapter callbacks even with an active condition or scope; subsequent matched-route navigation remains guarded. diff --git a/.changeset/owned-mutation-executions.md b/.changeset/owned-mutation-executions.md deleted file mode 100644 index 29b2ecb3..00000000 --- a/.changeset/owned-mutation-executions.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -"@okyrychenko-dev/react-action-guard-tanstack": patch ---- - -Protect all unsettled calls initiated through one useBlockingMutation hook, including concurrent calls, native awaited callbacks, retries, pauses, and queues. Preserve native result observation and callback behavior. Reset and mutation-key changes retain pending ownership; unmount retains pending protection until settlement or timeout. Timeouts end an aggregate registration episode without cancelling work or allowing rerenders and additional calls to revive expired protection. - -Strengthen Query and Mutation registration tests to require blocker existence before checking metadata. - -Share latest-call/error observation across replacement blocking owners that retain the same native mutation observer, while keeping pending accounting and timeout episodes local to each owner. Retained invocations and reset cannot leave stale error protection in another store. diff --git a/.changeset/packed-next-runtime-verification.md b/.changeset/packed-next-runtime-verification.md deleted file mode 100644 index 556c6481..00000000 --- a/.changeset/packed-next-runtime-verification.md +++ /dev/null @@ -1,8 +0,0 @@ ---- ---- - -Verify packed Next.js Pages and App Router integrations with a production build, -server start, and real Chrome navigation and unload checks. Add CI execution, -versioned provenance evidence, and documentation of the verified capabilities and -limitations. These test and documentation changes do not alter runtime APIs or -require a package release. diff --git a/.changeset/packed-public-compatibility.md b/.changeset/packed-public-compatibility.md deleted file mode 100644 index a6fa4a4e..00000000 --- a/.changeset/packed-public-compatibility.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -"@okyrychenko-dev/react-action-guard": patch -"@okyrychenko-dev/react-action-guard-ui": patch -"@okyrychenko-dev/react-action-guard-devtools": patch -"@okyrychenko-dev/react-action-guard-tanstack": patch -"@okyrychenko-dev/react-action-guard-router": minor ---- - -Publish format-specific ESM and CommonJS declarations so NodeNext CommonJS consumers can use the supported public imports. Correct Core's legacy main/module paths and resolve Next's router.js entry so native Node ESM can load the Next adapter. Require React Router DOM >=6.19.0 within v6 or v7 because earlier v6 releases do not export the stable useBlocker API. This excludes previously declared unsupported versions and releases the pre-1.0 router package as a minor change. Consumers on older v6 must upgrade before adopting this release; no new runtime dependency is added. Publish evidence-labelled capabilities and packed peer/provider checks, and clarify App Router and application-owned payment cancellation limits. diff --git a/.changeset/pages-confirmation-ownership.md b/.changeset/pages-confirmation-ownership.md deleted file mode 100644 index b08f4453..00000000 --- a/.changeset/pages-confirmation-ownership.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@okyrychenko-dev/react-action-guard-router": patch ---- - -Prevent stale Pages Router confirmations from resuming navigation and notify permission once across async acceptance and route replay. diff --git a/.changeset/publication-evidence-parity.md b/.changeset/publication-evidence-parity.md deleted file mode 100644 index 6b2a0cf0..00000000 --- a/.changeset/publication-evidence-parity.md +++ /dev/null @@ -1,4 +0,0 @@ ---- ---- - -Add publication checks using publint and Are the Types Wrong?, measured bundles and import-side-effect probes, and strict peer installation of a disposable workspace versioned with the real pending Changesets. Run them in CI and before release. This is private test/release infrastructure with no public runtime or API change, so no package version bump is required. diff --git a/.changeset/query-differential-contract.md b/.changeset/query-differential-contract.md deleted file mode 100644 index 8f142aaa..00000000 --- a/.changeset/query-differential-contract.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@okyrychenko-dev/react-action-guard-tanstack": patch ---- - -Verify native mutation callback ordering, latest-result observation, reset and error boundaries under overlapping executions. Document the distinction between native result observation and protection for all owned calls, with differential checks against selected Query versions. diff --git a/.changeset/query-registration-ownership.md b/.changeset/query-registration-ownership.md deleted file mode 100644 index 14125676..00000000 --- a/.changeset/query-registration-ownership.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@okyrychenko-dev/react-action-guard-tanstack": patch ---- - -Reuse core action-blocker registration ownership in Query coordination, avoiding redundant lifecycle updates for equivalent configuration while preserving adapter policies and timeout behavior. diff --git a/.changeset/quiet-queries-coordinate.md b/.changeset/quiet-queries-coordinate.md deleted file mode 100644 index 12bfe64a..00000000 --- a/.changeset/quiet-queries-coordinate.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@okyrychenko-dev/react-action-guard-tanstack": patch ---- - -Centralize blocking state policy, reasons, instance identity, provider store resolution, and blocker cleanup across TanStack hooks. Use the shared type-utils toolset for reason selection. Consolidate public hook configuration and behavior documentation in the package README. diff --git a/.changeset/quiet-tools-observe.md b/.changeset/quiet-tools-observe.md deleted file mode 100644 index 5228f30e..00000000 --- a/.changeset/quiet-tools-observe.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@okyrychenko-dev/react-action-guard-devtools": patch ---- - -Isolate Devtools event history and runtime viewing state per observed blocking store, share one observation session between Devtools instances attached to the same store, and expose custom sessions to advanced hook consumers through `ActionGuardDevtoolsProvider`. diff --git a/.changeset/reactive-blocker-config.md b/.changeset/reactive-blocker-config.md deleted file mode 100644 index 369f55e5..00000000 --- a/.changeset/reactive-blocker-config.md +++ /dev/null @@ -1,12 +0,0 @@ ---- -"@okyrychenko-dev/react-action-guard": patch -"@okyrychenko-dev/react-action-guard-tanstack": patch ---- - -Apply current reactive blocker configuration in core and TanStack hooks. Removed -scope, reason and priority values return to defaults; omitted timeout and callback -values clear. Metadata changes preserve unchanged deadlines and registration -timestamps, while changed timeouts restart and removed timeouts cancel timers. -Imperative updateBlocker patch behavior remains compatible. Consumers relying on -retained hook options must keep those options in the current configuration. -The released TanStack adapter requires Core ^2.0.0, including configuration replacement support. diff --git a/.changeset/real-dogs-jog.md b/.changeset/real-dogs-jog.md deleted file mode 100644 index be13c66e..00000000 --- a/.changeset/real-dogs-jog.md +++ /dev/null @@ -1,6 +0,0 @@ ---- ---- - -Monorepo restructuring only (repo layout, tooling, docs). No package's published -output changed — verified via `npm pack --dry-run` diff against each package's -pre-migration tarball. No version bump needed. diff --git a/.changeset/refreshed-stabilization-evidence.md b/.changeset/refreshed-stabilization-evidence.md deleted file mode 100644 index 3f14794e..00000000 --- a/.changeset/refreshed-stabilization-evidence.md +++ /dev/null @@ -1,4 +0,0 @@ ---- ---- - -Refresh corrected release-cohort evidence and migration guidance after lifecycle, schedule, diagnostics and Router stabilization. Preserve the pending package changesets and planned versions; this preparation adds no runtime change or package bump. diff --git a/.changeset/release-audit-scheduling.md b/.changeset/release-audit-scheduling.md deleted file mode 100644 index be343928..00000000 --- a/.changeset/release-audit-scheduling.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -"@okyrychenko-dev/react-action-guard": patch -"@okyrychenko-dev/react-action-guard-router": patch ---- - -Skip scheduled windows that have already elapsed when a delayed start timer runs, and retain long windows without overflowing their end timers. Share router protection scope keys, remove unused internal confirmation handling, and correct the documented public router types. diff --git a/.changeset/release-documentation-consistency.md b/.changeset/release-documentation-consistency.md deleted file mode 100644 index 65394f41..00000000 --- a/.changeset/release-documentation-consistency.md +++ /dev/null @@ -1,11 +0,0 @@ ---- -"@okyrychenko-dev/react-action-guard": patch -"@okyrychenko-dev/react-action-guard-devtools": patch -"@okyrychenko-dev/react-action-guard-router": patch -"@okyrychenko-dev/react-action-guard-tanstack": patch -"@okyrychenko-dev/react-action-guard-ui": patch ---- - -Align packaged README requirements with the Core ^2.0.0 release cohort and use durable repository URLs for migration, observability and Next runtime evidence. Declare the Query adapter's existing Node.js >=20 requirement inherited from type-utils. Reconcile superseded intermediate compatibility descriptions in pending release notes. - -Include CHANGELOG.md in every package so the packaged README changelog links resolve. Generate versioned API references and advance changelog links as part of the Changesets version command. diff --git a/.changeset/release-handoff-state.md b/.changeset/release-handoff-state.md deleted file mode 100644 index 74028ad1..00000000 --- a/.changeset/release-handoff-state.md +++ /dev/null @@ -1,4 +0,0 @@ ---- ---- - -Clarify release handoff state before and after applying versions, including consumed changesets and regenerated API references. diff --git a/.changeset/safe-lifecycle-timeout.md b/.changeset/safe-lifecycle-timeout.md deleted file mode 100644 index 2bdcc1b6..00000000 --- a/.changeset/safe-lifecycle-timeout.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@okyrychenko-dev/react-action-guard": patch ---- - -Honor long finite blocker timeouts with bounded timer chunks that credit each completed wait even when the monotonic clock pauses during system suspension. System clock adjustments do not change the delay. Reject nonfinite timeouts and unrepresentable deadlines with RangeError before changing registrations or existing timers. Omitted, zero and finite negative timeouts continue to disable expiration; replace infinity/NaN sentinels with an omitted timeout or zero. diff --git a/.changeset/scheduled-notification-cleanup.md b/.changeset/scheduled-notification-cleanup.md deleted file mode 100644 index b324dd1d..00000000 --- a/.changeset/scheduled-notification-cleanup.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@okyrychenko-dev/react-action-guard": patch ---- - -Guarantee scheduled blocker completion when start or end notifications throw. Schedule the end before notifying start, and always release protection after the end notification. Cancel scheduled notifications and release protection when an immediate start notification prevents effect setup. Notification errors remain observable. diff --git a/.changeset/scheduled-registration-ownership.md b/.changeset/scheduled-registration-ownership.md deleted file mode 100644 index ee7cad6f..00000000 --- a/.changeset/scheduled-registration-ownership.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@okyrychenko-dev/react-action-guard": patch ---- - -Keep scheduled blocker configuration current during active windows and honor timeout options without restarting unchanged deadlines. Preserve scheduled end notifications after blocker timeout. diff --git a/.changeset/settled-custom-dialogs.md b/.changeset/settled-custom-dialogs.md deleted file mode 100644 index 0bb16909..00000000 --- a/.changeset/settled-custom-dialogs.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@okyrychenko-dev/react-action-guard-router": patch ---- - -Settle pending custom confirmation dialogs as false on effect teardown, including unmount and hiding a preserved React Activity subtree. Clear preserved dialog state so it cannot reappear after effects reconnect. Dialog-specific resolvers now close their own dialog exactly once and cannot affect a replacement dialog. Stable hook-level controls continue to act on the current dialog. diff --git a/.changeset/single-flight-confirmation.md b/.changeset/single-flight-confirmation.md deleted file mode 100644 index b76181ce..00000000 --- a/.changeset/single-flight-confirmation.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -"@okyrychenko-dev/react-action-guard": patch ---- - -Prevent repeated confirmation calls from executing the same action more than once per hook -instance. Concurrent callers share its outcome; reopening and cancellation are ignored while -execution is pending. Success and failure both allow retry. Existing timeout and unmount -behavior remains unchanged. diff --git a/.changeset/slick-eggs-mix.md b/.changeset/slick-eggs-mix.md deleted file mode 100644 index a845151c..00000000 --- a/.changeset/slick-eggs-mix.md +++ /dev/null @@ -1,2 +0,0 @@ ---- ---- diff --git a/.changeset/small-dogs-observe.md b/.changeset/small-dogs-observe.md deleted file mode 100644 index fdd26015..00000000 --- a/.changeset/small-dogs-observe.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -"@okyrychenko-dev/react-action-guard": minor -"@okyrychenko-dev/react-action-guard-devtools": patch ---- - -Expose anonymous, ownership-safe lifecycle event observation through global and provider-scoped stores. Provider middleware and automatic Devtools observation use release leases without registry names. Core 2.0 removes the intermediate named middleware and direct runMiddlewares compatibility APIs; use observeBlockingEvents and release its lease to detach. - -Observers registered while an event is being delivered begin receiving events with the next delivery. Observers released before their turn are skipped. Observer delivery remains ordered and error-isolated without awaiting earlier observers. - -Manual Devtools observation is additive and store-local. Releasing an observation lease does not remove another owner's observer. diff --git a/.changeset/stable-scoped-metadata.md b/.changeset/stable-scoped-metadata.md deleted file mode 100644 index 3ba08a36..00000000 --- a/.changeset/stable-scoped-metadata.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -"@okyrychenko-dev/react-action-guard": patch -"@okyrychenko-dev/react-action-guard-ui": patch ---- - -Keep scoped metadata and guarded controls stable when unrelated blockers change, while observing all relevant metadata and preserving immutable priority-ordered results. Core `useBlockingInfo` now also accepts readonly scope arrays so UI consumers share the same projection and matching rules; `createTypedHooks` accepts the same arrays while rejecting unknown scope names. Delegate resolved subscriptions and selection retention to react-zustand-toolkit, with optional custom equality on `useResolvedValue`. Cover scope representation changes and stable metadata when observation expands. Retain production/development scale and rapid-registration benchmark evidence refreshed after the typed-hook fix, with installed-tarball declaration checks and pinned source provenance. diff --git a/.changeset/steady-sessions-observe.md b/.changeset/steady-sessions-observe.md deleted file mode 100644 index da03c77c..00000000 --- a/.changeset/steady-sessions-observe.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@okyrychenko-dev/react-action-guard-devtools": patch ---- - -Manage Devtools observation through store-specific participation leases. Panels and providers observing the same blocking store share one event history and automatic observer; configuration ownership transfers deterministically without reapplying `defaultOpen`, and the final release detaches observation and clears runtime viewing state. Manual Devtools middleware remains compatible. diff --git a/.changeset/supported-store-cleanup-docs.md b/.changeset/supported-store-cleanup-docs.md deleted file mode 100644 index 29ce75d9..00000000 --- a/.changeset/supported-store-cleanup-docs.md +++ /dev/null @@ -1,4 +0,0 @@ ---- ---- - -Correct the store reference to list supported StoreApi methods and explain independent subscription release, observation release and blocker clearing. Remove the advertised destroy method. This documentation-only correction requires no package release. diff --git a/.changeset/tanstack-confirmation-compatibility.md b/.changeset/tanstack-confirmation-compatibility.md deleted file mode 100644 index d6a0fa19..00000000 --- a/.changeset/tanstack-confirmation-compatibility.md +++ /dev/null @@ -1,6 +0,0 @@ ---- ---- - -Verify TanStack navigation confirmation compatibility through real-router tests, -Chrome back/forward checks, and an isolated packed consumer. Cover stale answers -after protection is disabled and document browser verification history and limits. diff --git a/.changeset/tidy-wombats-listen.md b/.changeset/tidy-wombats-listen.md deleted file mode 100644 index 6b827db3..00000000 --- a/.changeset/tidy-wombats-listen.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -"@okyrychenko-dev/react-action-guard": patch -"@okyrychenko-dev/react-action-guard-devtools": patch -"@okyrychenko-dev/react-action-guard-router": patch -"@okyrychenko-dev/react-action-guard-ui": patch ---- - -Adopt `@okyrychenko-dev/type-utils` 0.1.2 for internal type guards, assertions, and utility types, replacing equivalent hand-rolled checks, a duplicated `assertNever` helper, and inline nullable/optional unions. Runtime behavior is unchanged; some public function signatures now show the package's equivalent utility types. Adds `@okyrychenko-dev/type-utils` as a new dependency and explicitly requires Node.js 20 or newer; Node.js 18 is EOL and unsupported. diff --git a/.changeset/truthful-docs-and-root-license.md b/.changeset/truthful-docs-and-root-license.md deleted file mode 100644 index 89d7075a..00000000 --- a/.changeset/truthful-docs-and-root-license.md +++ /dev/null @@ -1,11 +0,0 @@ ---- ---- - -Align documentation with current hook names, priority reason ordering, Provider -ownership and SSR isolation, TanStack Query naming, and Next.js Pages/App Router -limitations. Validate the primary quickstarts, refresh the core API reference, and -add the repository MIT license with the existing package terms and attribution. -Bind the onboarding DevTools panel explicitly to the provider store so it observes -the application’s blocker events. -These documentation and licensing changes do not alter runtime behavior or public -APIs; no package release is required. diff --git a/.changeset/verified-release-handoff.md b/.changeset/verified-release-handoff.md deleted file mode 100644 index 2253c922..00000000 --- a/.changeset/verified-release-handoff.md +++ /dev/null @@ -1,4 +0,0 @@ ---- ---- - -Refresh release-cohort verification and publication handoff using the existing disposable Changesets, packed-consumer and Next runtime workflows. Preserve pending package changesets and source versions; this release documentation and evidence update adds no runtime change or package bump. diff --git a/.changeset/version-pr-ci-check.md b/.changeset/version-pr-ci-check.md deleted file mode 100644 index 8b985563..00000000 --- a/.changeset/version-pr-ci-check.md +++ /dev/null @@ -1,4 +0,0 @@ ---- ---- - -Keep the Changeset check job successful for the same-repository version PR created by github-actions[bot] on changeset-release/, where pending changesets have already been applied and deleted. All other pull requests still require changesets for package changes, and the remaining release checks remain enabled. This CI-only change requires no package release. diff --git a/.changeset/workflow-pilot-learning-materials.md b/.changeset/workflow-pilot-learning-materials.md deleted file mode 100644 index 42e73358..00000000 --- a/.changeset/workflow-pilot-learning-materials.md +++ /dev/null @@ -1,9 +0,0 @@ ---- ---- - -Add a concrete revision-editor pilot integration and measurement plan plus three practical -coordination drafts covering loading flags, conflicting actions and the user/agent showcase. -Clearly distinguish simulated evidence from unmeasured real application outcomes, and include -review/distribution guidance without external posting. Validate new documentation links and -the public observation example using type-utils. Documentation/private-tooling only; no runtime -package release is required. diff --git a/packages/core/CHANGELOG.md b/packages/core/CHANGELOG.md index 601c0663..52a173c6 100644 --- a/packages/core/CHANGELOG.md +++ b/packages/core/CHANGELOG.md @@ -1,5 +1,73 @@ # Changelog +## 2.0.0 + +[Release history](https://github.com/okyrychenko-dev/react-action-guard/compare/v1.0.5...@okyrychenko-dev/react-action-guard@2.0.0) + +### Major Changes + +- 0d3c1f7: Complete the Blocking lifecycle architecture migration. Remove mutable blocker and middleware maps, + named middleware registration, direct event dispatch, and compatibility restore contracts. Observe + lifecycle transitions through ownership-safe anonymous leases and read readonly BlockerInfo snapshots. + Devtools sessions release only their observations; manual observation is now additive on every store. + Centralize guarded-control state and accessible reasons while retaining public hooks, state mappers, + state utilities, and distinct link behavior. Consolidate shared TanStack coverage at its coordination + interface and document migration from removed interfaces. Retain react-zustand-toolkit as the state + management base. + +### Minor Changes + +- 39fb3de: Introduce a public Blocking lifecycle interface that owns blocker transitions, timers, immutable reads, and isolated observation while preserving the existing Zustand store interface through a compatibility adapter. +- 3db526a: Publish immutable Blocking lifecycle snapshots through global and provider-scoped stores. React hooks, guarded UI controls, and Devtools subscribe to those snapshots. The final release cohort is Core 2.0 and Devtools 1.0 with a Core ^2.0.0 peer requirement. Node.js 20 or newer is required; prior intermediate version proposals are superseded by this cohort. +- 4363609: Expose anonymous, ownership-safe lifecycle event observation through global and provider-scoped stores. Provider middleware and automatic Devtools observation use release leases without registry names. Core 2.0 removes the intermediate named middleware and direct runMiddlewares compatibility APIs; use observeBlockingEvents and release its lease to detach. + + Observers registered while an event is being delivered begin receiving events with the next delivery. Observers released before their turn are skipped. Observer delivery remains ordered and error-isolated without awaiting earlier observers. + + Manual Devtools observation is additive and store-local. Releasing an observation lease does not remove another owner's observer. + +### Patch Changes + +- 6a08414: Finalize performance lifetimes on timeout and bulk cleanup, preserve timing through scope updates, and isolate slow-block callback failures. Keep Devtools history durations accurate after scope changes and preserve global registrations during targeted cleanup. + + Preserve replacement registrations created inside timeout callbacks using opaque lifecycle registration identities; stale timeout events finalize only the expired lifetime. + + Snapshot tracked scopes in performance and Devtools diagnostics so caller-owned array mutations cannot prevent scoped cleanup. + + Read timeout metadata after the timeout callback so scope, reason and priority updates are reflected in the emitted event while preserving registration identity. + +- 32264e4: Centralize scope normalization, inheritance, observation, and targeted-clear semantics in the core package, preserve empty observed scopes, and migrate guarded UI controls to use the shared behavior. The UI package now requires the core release that exports these helpers. +- 5d403d8: Migrate the Core and Devtools store integrations to `@okyrychenko-dev/react-zustand-toolkit` 1.0.0 while preserving React Action Guard's public store and provider APIs. +- 64145c9: Keep conditional blocker configuration current while the condition remains true, including scope, reason, priority, timestamp and timeout options. Preserve unchanged timeout deadlines and use the latest timeout callback. A timeout ends the current registration episode until a polled false-to-true condition transition or a new ID or Provider attachment starts another episode. +- 083a5b7: Warn in development when active useActionBlocker hooks share an ID in the same store. Track registrations through cleanup and Strict Mode without warning for equal IDs in isolated stores. Shared IDs still require consumer correction; production registration and cleanup behavior is unchanged. +- 690a3a9: Validate every supplied scheduled-window bound, preserve epoch-zero ends, and treat zero duration as an empty window instead of indefinite blocking. Invalid bounds cancel hook-owned work with a development warning. Support distant finite starts using bounded timer chunks, matching end deadlines. Omit duration and end explicitly when indefinite blocking is intended. + + Empty future windows do not retain start timers or repeatedly wake for distant deadlines. + +- a1b83db: Freeze normalized scope arrays so JavaScript mutation cannot corrupt cached results shared by other consumers. Stable identity, sorting, deduplication, default and empty scope semantics, and bounded cache eviction are preserved. +- d07b65a: Treat array-form global blocker scopes consistently across store scope queries and targeted clears. +- bd1dc3b: Publish format-specific ESM and CommonJS declarations so NodeNext CommonJS consumers can use the supported public imports. Correct Core's legacy main/module paths and resolve Next's router.js entry so native Node ESM can load the Next adapter. Require React Router DOM >=6.19.0 within v6 or v7 because earlier v6 releases do not export the stable useBlocker API. This excludes previously declared unsupported versions and releases the pre-1.0 router package as a minor change. Consumers on older v6 must upgrade before adopting this release; no new runtime dependency is added. Publish evidence-labelled capabilities and packed peer/provider checks, and clarify App Router and application-owned payment cancellation limits. +- 6513e1e: Apply current reactive blocker configuration in core and TanStack hooks. Removed + scope, reason and priority values return to defaults; omitted timeout and callback + values clear. Metadata changes preserve unchanged deadlines and registration + timestamps, while changed timeouts restart and removed timeouts cancel timers. + Imperative updateBlocker patch behavior remains compatible. Consumers relying on + retained hook options must keep those options in the current configuration. + The released TanStack adapter requires Core ^2.0.0, including configuration replacement support. +- 6d59289: Skip scheduled windows that have already elapsed when a delayed start timer runs, and retain long windows without overflowing their end timers. Share router protection scope keys, remove unused internal confirmation handling, and correct the documented public router types. +- 26cc31e: Align packaged README requirements with the Core ^2.0.0 release cohort and use durable repository URLs for migration, observability and Next runtime evidence. Declare the Query adapter's existing Node.js >=20 requirement inherited from type-utils. Reconcile superseded intermediate compatibility descriptions in pending release notes. + + Include CHANGELOG.md in every package so the packaged README changelog links resolve. Generate versioned API references and advance changelog links as part of the Changesets version command. + +- b987ed1: Honor long finite blocker timeouts with bounded timer chunks that credit each completed wait even when the monotonic clock pauses during system suspension. System clock adjustments do not change the delay. Reject nonfinite timeouts and unrepresentable deadlines with RangeError before changing registrations or existing timers. Omitted, zero and finite negative timeouts continue to disable expiration; replace infinity/NaN sentinels with an omitted timeout or zero. +- 743c6f4: Guarantee scheduled blocker completion when start or end notifications throw. Schedule the end before notifying start, and always release protection after the end notification. Cancel scheduled notifications and release protection when an immediate start notification prevents effect setup. Notification errors remain observable. +- 303abc3: Keep scheduled blocker configuration current during active windows and honor timeout options without restarting unchanged deadlines. Preserve scheduled end notifications after blocker timeout. +- eefba30: Prevent repeated confirmation calls from executing the same action more than once per hook + instance. Concurrent callers share its outcome; reopening and cancellation are ignored while + execution is pending. Success and failure both allow retry. Existing timeout and unmount + behavior remains unchanged. +- 40e8420: Keep scoped metadata and guarded controls stable when unrelated blockers change, while observing all relevant metadata and preserving immutable priority-ordered results. Core `useBlockingInfo` now also accepts readonly scope arrays so UI consumers share the same projection and matching rules; `createTypedHooks` accepts the same arrays while rejecting unknown scope names. Delegate resolved subscriptions and selection retention to react-zustand-toolkit, with optional custom equality on `useResolvedValue`. Cover scope representation changes and stable metadata when observation expands. Retain production/development scale and rapid-registration benchmark evidence refreshed after the typed-hook fix, with installed-tarball declaration checks and pinned source provenance. +- 6230733: Adopt `@okyrychenko-dev/type-utils` 0.1.2 for internal type guards, assertions, and utility types, replacing equivalent hand-rolled checks, a duplicated `assertNever` helper, and inline nullable/optional unions. Runtime behavior is unchanged; some public function signatures now show the package's equivalent utility types. Adds `@okyrychenko-dev/type-utils` as a new dependency and explicitly requires Node.js 20 or newer; Node.js 18 is EOL and unsupported. + All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), @@ -360,7 +428,7 @@ uiBlockingStoreApi.getState().addBlocker("id", config); - Comprehensive test suite - MIT License -[Unreleased]: https://github.com/okyrychenko-dev/react-action-guard/compare/v1.0.5...HEAD +[Unreleased]: https://github.com/okyrychenko-dev/react-action-guard/compare/@okyrychenko-dev/react-action-guard@2.0.0...HEAD [1.0.5]: https://github.com/okyrychenko-dev/react-action-guard/compare/v1.0.4...v1.0.5 [1.0.4]: https://github.com/okyrychenko/react-action-guard/compare/v1.0.3...v1.0.4 [1.0.3]: https://github.com/okyrychenko/react-action-guard/compare/v1.0.2...v1.0.3 @@ -380,3 +448,4 @@ uiBlockingStoreApi.getState().addBlocker("id", config); [0.2.2]: https://github.com/okyrychenko/react-action-guard/compare/v0.2.1...v0.2.2 [0.2.1]: https://github.com/okyrychenko/react-action-guard/compare/v0.1.0...v0.2.1 [0.1.0]: https://github.com/okyrychenko/react-action-guard/releases/tag/v0.1.0 +[2.0.0]: https://github.com/okyrychenko-dev/react-action-guard/compare/v1.0.5...@okyrychenko-dev/react-action-guard@2.0.0 diff --git a/packages/core/package.json b/packages/core/package.json index 57a98767..813af8af 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -1,6 +1,6 @@ { "name": "@okyrychenko-dev/react-action-guard", - "version": "1.0.5", + "version": "2.0.0", "type": "module", "description": "Coordinate shared UI interaction locks across complex React forms and workflows", "engines": { diff --git a/packages/devtools/CHANGELOG.md b/packages/devtools/CHANGELOG.md index 12b21ade..e6af4155 100644 --- a/packages/devtools/CHANGELOG.md +++ b/packages/devtools/CHANGELOG.md @@ -1,5 +1,78 @@ # Changelog +## 1.0.0 + +[Release history](https://github.com/okyrychenko-dev/react-action-guard/releases/tag/@okyrychenko-dev/react-action-guard-devtools@1.0.0) + +### Major Changes + +- 0d3c1f7: Complete the Blocking lifecycle architecture migration. Remove mutable blocker and middleware maps, + named middleware registration, direct event dispatch, and compatibility restore contracts. Observe + lifecycle transitions through ownership-safe anonymous leases and read readonly BlockerInfo snapshots. + Devtools sessions release only their observations; manual observation is now additive on every store. + Centralize guarded-control state and accessible reasons while retaining public hooks, state mappers, + state utilities, and distinct link behavior. Consolidate shared TanStack coverage at its coordination + interface and document migration from removed interfaces. Retain react-zustand-toolkit as the state + management base. + +### Minor Changes + +- 3db526a: Publish immutable Blocking lifecycle snapshots through global and provider-scoped stores. React hooks, guarded UI controls, and Devtools subscribe to those snapshots. The final release cohort is Core 2.0 and Devtools 1.0 with a Core ^2.0.0 peer requirement. Node.js 20 or newer is required; prior intermediate version proposals are superseded by this cohort. +- 1587a9d: Explain blocker age and unavailable provenance, and visualize actual blocker-to-scope protection with an accessible text table. Add optional panel-local scope/action declarations without changing blocking policy or observation-session ownership. Record telemetry ownership and retain existing Core analytics compatibility. + +### Patch Changes + +- 6a08414: Finalize performance lifetimes on timeout and bulk cleanup, preserve timing through scope updates, and isolate slow-block callback failures. Keep Devtools history durations accurate after scope changes and preserve global registrations during targeted cleanup. + + Preserve replacement registrations created inside timeout callbacks using opaque lifecycle registration identities; stale timeout events finalize only the expired lifetime. + + Snapshot tracked scopes in performance and Devtools diagnostics so caller-owned array mutations cannot prevent scoped cleanup. + + Read timeout metadata after the timeout callback so scope, reason and priority updates are reflected in the emitted event while preserving registration identity. + +- 5d403d8: Migrate the Core and Devtools store integrations to `@okyrychenko-dev/react-zustand-toolkit` 1.0.0 while preserving React Action Guard's public store and provider APIs. +- 3f63533: Preserve scoped CSS Module class mappings in packed Devtools and keep its panel within narrow viewports. Use one full-height scroll area for active blockers and scope protection so the table can reach the bottom of the panel without nested scrolling or unused space. Document the runnable enterprise showcase using store-local Devtools, checkout autosave and shared user/agent revision protection, including explicit scope/action declarations and application-owned execution responsibilities. + + Include both checkout and navigation in the showcase's save-cart inspection mapping so scope protection matches the guarded action. + +- bd1dc3b: Publish format-specific ESM and CommonJS declarations so NodeNext CommonJS consumers can use the supported public imports. Correct Core's legacy main/module paths and resolve Next's router.js entry so native Node ESM can load the Next adapter. Require React Router DOM >=6.19.0 within v6 or v7 because earlier v6 releases do not export the stable useBlocker API. This excludes previously declared unsupported versions and releases the pre-1.0 router package as a minor change. Consumers on older v6 must upgrade before adopting this release; no new runtime dependency is added. Publish evidence-labelled capabilities and packed peer/provider checks, and clarify App Router and application-owned payment cancellation limits. +- 94547ea: Isolate Devtools event history and runtime viewing state per observed blocking store, share one observation session between Devtools instances attached to the same store, and expose custom sessions to advanced hook consumers through `ActionGuardDevtoolsProvider`. +- 26cc31e: Align packaged README requirements with the Core ^2.0.0 release cohort and use durable repository URLs for migration, observability and Next runtime evidence. Declare the Query adapter's existing Node.js >=20 requirement inherited from type-utils. Reconcile superseded intermediate compatibility descriptions in pending release notes. + + Include CHANGELOG.md in every package so the packaged README changelog links resolve. Generate versioned API references and advance changelog links as part of the Changesets version command. + +- 4363609: Expose anonymous, ownership-safe lifecycle event observation through global and provider-scoped stores. Provider middleware and automatic Devtools observation use release leases without registry names. Core 2.0 removes the intermediate named middleware and direct runMiddlewares compatibility APIs; use observeBlockingEvents and release its lease to detach. + + Observers registered while an event is being delivered begin receiving events with the next delivery. Observers released before their turn are skipped. Observer delivery remains ordered and error-isolated without awaiting earlier observers. + + Manual Devtools observation is additive and store-local. Releasing an observation lease does not remove another owner's observer. + +- 5d03641: Manage Devtools observation through store-specific participation leases. Panels and providers observing the same blocking store share one event history and automatic observer; configuration ownership transfers deterministically without reapplying `defaultOpen`, and the final release detaches observation and clears runtime viewing state. Manual Devtools middleware remains compatible. +- 6230733: Adopt `@okyrychenko-dev/type-utils` 0.1.2 for internal type guards, assertions, and utility types, replacing equivalent hand-rolled checks, a duplicated `assertNever` helper, and inline nullable/optional unions. Runtime behavior is unchanged; some public function signatures now show the package's equivalent utility types. Adds `@okyrychenko-dev/type-utils` as a new dependency and explicitly requires Node.js 20 or newer; Node.js 18 is EOL and unsupported. +- Updated dependencies [6a08414] +- Updated dependencies [39fb3de] +- Updated dependencies [32264e4] +- Updated dependencies [5d403d8] +- Updated dependencies [3db526a] +- Updated dependencies [64145c9] +- Updated dependencies [0d3c1f7] +- Updated dependencies [083a5b7] +- Updated dependencies [690a3a9] +- Updated dependencies [a1b83db] +- Updated dependencies [d07b65a] +- Updated dependencies [bd1dc3b] +- Updated dependencies [6513e1e] +- Updated dependencies [6d59289] +- Updated dependencies [26cc31e] +- Updated dependencies [b987ed1] +- Updated dependencies [743c6f4] +- Updated dependencies [303abc3] +- Updated dependencies [eefba30] +- Updated dependencies [4363609] +- Updated dependencies [40e8420] +- Updated dependencies [6230733] + - @okyrychenko-dev/react-action-guard@2.0.0 + All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), @@ -179,7 +252,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Source maps included - Comprehensive JSDoc documentation -[Unreleased]: https://github.com/okyrychenko-dev/react-action-guard-devtools/compare/v0.3.0...HEAD +[Unreleased]: https://github.com/okyrychenko-dev/react-action-guard/compare/@okyrychenko-dev/react-action-guard-devtools@1.0.0...HEAD [0.3.0]: https://github.com/okyrychenko-dev/react-action-guard-devtools/compare/v0.2.4...v0.3.0 [0.2.4]: https://github.com/okyrychenko-dev/react-action-guard-devtools/compare/v0.2.3...v0.2.4 [0.2.3]: https://github.com/okyrychenko-dev/react-action-guard-devtools/compare/v0.2.2...v0.2.3 @@ -190,3 +263,4 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 [0.1.2]: https://github.com/okyrychenko-dev/react-action-guard-devtools/compare/v0.1.1...v0.1.2 [0.1.1]: https://github.com/okyrychenko-dev/react-action-guard-devtools/compare/v0.1.0...v0.1.1 [0.1.0]: https://github.com/okyrychenko-dev/react-action-guard-devtools/releases/tag/v0.1.0 +[1.0.0]: https://github.com/okyrychenko-dev/react-action-guard/releases/tag/@okyrychenko-dev/react-action-guard-devtools@1.0.0 diff --git a/packages/devtools/package.json b/packages/devtools/package.json index c0c08bb4..af158baa 100644 --- a/packages/devtools/package.json +++ b/packages/devtools/package.json @@ -1,6 +1,6 @@ { "name": "@okyrychenko-dev/react-action-guard-devtools", - "version": "0.3.0", + "version": "1.0.0", "type": "module", "description": "Developer tools for @okyrychenko-dev/react-action-guard", "engines": { @@ -72,7 +72,7 @@ "access": "public" }, "peerDependencies": { - "@okyrychenko-dev/react-action-guard": "^1.1.0", + "@okyrychenko-dev/react-action-guard": "^2.0.0", "react": "^18.0.0 || ^19.0.0", "zustand": "^5.0.0" }, diff --git a/packages/docs/src/packages/react-action-guard-devtools/api/typedoc/README.md b/packages/docs/src/packages/react-action-guard-devtools/api/typedoc/README.md index 60a800bc..9a4e8e13 100644 --- a/packages/docs/src/packages/react-action-guard-devtools/api/typedoc/README.md +++ b/packages/docs/src/packages/react-action-guard-devtools/api/typedoc/README.md @@ -1,12 +1,15 @@ -**React Action Guard DevTools API v0.3.0** +**React Action Guard DevTools API v1.0.0** *** -# React Action Guard DevTools API v0.3.0 +# React Action Guard DevTools API v1.0.0 ## Interfaces - [ActionGuardDevtoolsProviderProps](interfaces/ActionGuardDevtoolsProviderProps.md) +- [DevtoolsInspectedAction](interfaces/DevtoolsInspectedAction.md) +- [DevtoolsInspection](interfaces/DevtoolsInspection.md) +- [ActionGuardDevtoolsProps](interfaces/ActionGuardDevtoolsProps.md) - [DevtoolsEvent](interfaces/DevtoolsEvent.md) - [DevtoolsFilter](interfaces/DevtoolsFilter.md) - [DevtoolsEventStats](interfaces/DevtoolsEventStats.md) diff --git a/packages/docs/src/packages/react-action-guard-devtools/api/typedoc/functions/ActionGuardDevtools.md b/packages/docs/src/packages/react-action-guard-devtools/api/typedoc/functions/ActionGuardDevtools.md index 8d827dfc..784df697 100644 --- a/packages/docs/src/packages/react-action-guard-devtools/api/typedoc/functions/ActionGuardDevtools.md +++ b/packages/docs/src/packages/react-action-guard-devtools/api/typedoc/functions/ActionGuardDevtools.md @@ -1,4 +1,4 @@ -[**React Action Guard DevTools API v0.3.0**](../README.md) +[**React Action Guard DevTools API v1.0.0**](../README.md) *** @@ -17,7 +17,7 @@ Visual panel for inspecting UI blocking. Hidden in production unless ### props -`ActionGuardDevtoolsProps` +[`ActionGuardDevtoolsProps`](../interfaces/ActionGuardDevtoolsProps.md) ## Returns diff --git a/packages/docs/src/packages/react-action-guard-devtools/api/typedoc/functions/ActionGuardDevtoolsProvider.md b/packages/docs/src/packages/react-action-guard-devtools/api/typedoc/functions/ActionGuardDevtoolsProvider.md index e4217905..5d453235 100644 --- a/packages/docs/src/packages/react-action-guard-devtools/api/typedoc/functions/ActionGuardDevtoolsProvider.md +++ b/packages/docs/src/packages/react-action-guard-devtools/api/typedoc/functions/ActionGuardDevtoolsProvider.md @@ -1,4 +1,4 @@ -[**React Action Guard DevTools API v0.3.0**](../README.md) +[**React Action Guard DevTools API v1.0.0**](../README.md) *** diff --git a/packages/docs/src/packages/react-action-guard-devtools/api/typedoc/functions/createDevtoolsMiddleware.md b/packages/docs/src/packages/react-action-guard-devtools/api/typedoc/functions/createDevtoolsMiddleware.md index 95799ef2..cabbfda6 100644 --- a/packages/docs/src/packages/react-action-guard-devtools/api/typedoc/functions/createDevtoolsMiddleware.md +++ b/packages/docs/src/packages/react-action-guard-devtools/api/typedoc/functions/createDevtoolsMiddleware.md @@ -1,4 +1,4 @@ -[**React Action Guard DevTools API v0.3.0**](../README.md) +[**React Action Guard DevTools API v1.0.0**](../README.md) *** @@ -8,7 +8,7 @@ > **createDevtoolsMiddleware**(): `Middleware` -Defined in: [middleware/devtoolsMiddleware.ts:108](https://github.com/okyrychenko-dev/react-action-guard/blob/main/packages/devtools/src/middleware/devtoolsMiddleware.ts#L108) +Defined in: [middleware/devtoolsMiddleware.ts:144](https://github.com/okyrychenko-dev/react-action-guard/blob/main/packages/devtools/src/middleware/devtoolsMiddleware.ts#L144) ## Returns diff --git a/packages/docs/src/packages/react-action-guard-devtools/api/typedoc/interfaces/ActionGuardDevtoolsProps.md b/packages/docs/src/packages/react-action-guard-devtools/api/typedoc/interfaces/ActionGuardDevtoolsProps.md new file mode 100644 index 00000000..ea89aae6 --- /dev/null +++ b/packages/docs/src/packages/react-action-guard-devtools/api/typedoc/interfaces/ActionGuardDevtoolsProps.md @@ -0,0 +1,82 @@ +[**React Action Guard DevTools API v1.0.0**](../README.md) + +*** + +[React Action Guard DevTools API](../README.md) / ActionGuardDevtoolsProps + +# Interface: ActionGuardDevtoolsProps + +Defined in: [components/actionGuardDevtools/ActionGuardDevtools.types.ts:36](https://github.com/okyrychenko-dev/react-action-guard/blob/main/packages/devtools/src/components/actionGuardDevtools/ActionGuardDevtools.types.ts#L36) + +## Properties + +### inspection? + +> `optional` **inspection?**: [`DevtoolsInspection`](DevtoolsInspection.md) + +Defined in: [components/actionGuardDevtools/ActionGuardDevtools.types.ts:38](https://github.com/okyrychenko-dev/react-action-guard/blob/main/packages/devtools/src/components/actionGuardDevtools/ActionGuardDevtools.types.ts#L38) + +Optional declarations for scope and action explanations in this panel. + +*** + +### position? + +> `optional` **position?**: [`DevtoolsPosition`](../type-aliases/DevtoolsPosition.md) + +Defined in: [components/actionGuardDevtools/ActionGuardDevtools.types.ts:40](https://github.com/okyrychenko-dev/react-action-guard/blob/main/packages/devtools/src/components/actionGuardDevtools/ActionGuardDevtools.types.ts#L40) + +Position of the toggle button and panel + +*** + +### defaultOpen? + +> `optional` **defaultOpen?**: `boolean` + +Defined in: [components/actionGuardDevtools/ActionGuardDevtools.types.ts:42](https://github.com/okyrychenko-dev/react-action-guard/blob/main/packages/devtools/src/components/actionGuardDevtools/ActionGuardDevtools.types.ts#L42) + +Whether the panel is open by default + +*** + +### maxEvents? + +> `optional` **maxEvents?**: `number` + +Defined in: [components/actionGuardDevtools/ActionGuardDevtools.types.ts:44](https://github.com/okyrychenko-dev/react-action-guard/blob/main/packages/devtools/src/components/actionGuardDevtools/ActionGuardDevtools.types.ts#L44) + +Maximum number of events to store + +*** + +### stuckThresholdMs? + +> `optional` **stuckThresholdMs?**: `number` + +Defined in: [components/actionGuardDevtools/ActionGuardDevtools.types.ts:49](https://github.com/okyrychenko-dev/react-action-guard/blob/main/packages/devtools/src/components/actionGuardDevtools/ActionGuardDevtools.types.ts#L49) + +Age in milliseconds after which an active blocker is flagged as potentially +stuck (a likely missing `unblock()`), shown with a warning badge (default: 10000). + +*** + +### showInProduction? + +> `optional` **showInProduction?**: `boolean` + +Defined in: [components/actionGuardDevtools/ActionGuardDevtools.types.ts:51](https://github.com/okyrychenko-dev/react-action-guard/blob/main/packages/devtools/src/components/actionGuardDevtools/ActionGuardDevtools.types.ts#L51) + +Whether to show in production (default: false) + +*** + +### store? + +> `optional` **store?**: `UIBlockingStoreApi` + +Defined in: [components/actionGuardDevtools/ActionGuardDevtools.types.ts:57](https://github.com/okyrychenko-dev/react-action-guard/blob/main/packages/devtools/src/components/actionGuardDevtools/ActionGuardDevtools.types.ts#L57) + +Custom blocking store instance to observe instead of the global store. +Wrap the panel and adjacent `useDevtoolsStore` consumers in +`ActionGuardDevtoolsProvider` to expose this store's observation session. diff --git a/packages/docs/src/packages/react-action-guard-devtools/api/typedoc/interfaces/ActionGuardDevtoolsProviderProps.md b/packages/docs/src/packages/react-action-guard-devtools/api/typedoc/interfaces/ActionGuardDevtoolsProviderProps.md index f94c00fd..3918c968 100644 --- a/packages/docs/src/packages/react-action-guard-devtools/api/typedoc/interfaces/ActionGuardDevtoolsProviderProps.md +++ b/packages/docs/src/packages/react-action-guard-devtools/api/typedoc/interfaces/ActionGuardDevtoolsProviderProps.md @@ -1,4 +1,4 @@ -[**React Action Guard DevTools API v0.3.0**](../README.md) +[**React Action Guard DevTools API v1.0.0**](../README.md) *** diff --git a/packages/docs/src/packages/react-action-guard-devtools/api/typedoc/interfaces/DevtoolsActions.md b/packages/docs/src/packages/react-action-guard-devtools/api/typedoc/interfaces/DevtoolsActions.md index 16aa108a..efa17ed2 100644 --- a/packages/docs/src/packages/react-action-guard-devtools/api/typedoc/interfaces/DevtoolsActions.md +++ b/packages/docs/src/packages/react-action-guard-devtools/api/typedoc/interfaces/DevtoolsActions.md @@ -1,4 +1,4 @@ -[**React Action Guard DevTools API v0.3.0**](../README.md) +[**React Action Guard DevTools API v1.0.0**](../README.md) *** diff --git a/packages/docs/src/packages/react-action-guard-devtools/api/typedoc/interfaces/DevtoolsEvent.md b/packages/docs/src/packages/react-action-guard-devtools/api/typedoc/interfaces/DevtoolsEvent.md index a792e107..e42d9361 100644 --- a/packages/docs/src/packages/react-action-guard-devtools/api/typedoc/interfaces/DevtoolsEvent.md +++ b/packages/docs/src/packages/react-action-guard-devtools/api/typedoc/interfaces/DevtoolsEvent.md @@ -1,4 +1,4 @@ -[**React Action Guard DevTools API v0.3.0**](../README.md) +[**React Action Guard DevTools API v1.0.0**](../README.md) *** diff --git a/packages/docs/src/packages/react-action-guard-devtools/api/typedoc/interfaces/DevtoolsEventStats.md b/packages/docs/src/packages/react-action-guard-devtools/api/typedoc/interfaces/DevtoolsEventStats.md index 2bbd5b13..2726cd06 100644 --- a/packages/docs/src/packages/react-action-guard-devtools/api/typedoc/interfaces/DevtoolsEventStats.md +++ b/packages/docs/src/packages/react-action-guard-devtools/api/typedoc/interfaces/DevtoolsEventStats.md @@ -1,4 +1,4 @@ -[**React Action Guard DevTools API v0.3.0**](../README.md) +[**React Action Guard DevTools API v1.0.0**](../README.md) *** diff --git a/packages/docs/src/packages/react-action-guard-devtools/api/typedoc/interfaces/DevtoolsFilter.md b/packages/docs/src/packages/react-action-guard-devtools/api/typedoc/interfaces/DevtoolsFilter.md index 1e4bc156..b6307b13 100644 --- a/packages/docs/src/packages/react-action-guard-devtools/api/typedoc/interfaces/DevtoolsFilter.md +++ b/packages/docs/src/packages/react-action-guard-devtools/api/typedoc/interfaces/DevtoolsFilter.md @@ -1,4 +1,4 @@ -[**React Action Guard DevTools API v0.3.0**](../README.md) +[**React Action Guard DevTools API v1.0.0**](../README.md) *** diff --git a/packages/docs/src/packages/react-action-guard-devtools/api/typedoc/interfaces/DevtoolsInspectedAction.md b/packages/docs/src/packages/react-action-guard-devtools/api/typedoc/interfaces/DevtoolsInspectedAction.md new file mode 100644 index 00000000..1db34b1c --- /dev/null +++ b/packages/docs/src/packages/react-action-guard-devtools/api/typedoc/interfaces/DevtoolsInspectedAction.md @@ -0,0 +1,27 @@ +[**React Action Guard DevTools API v1.0.0**](../README.md) + +*** + +[React Action Guard DevTools API](../README.md) / DevtoolsInspectedAction + +# Interface: DevtoolsInspectedAction + +Defined in: [components/actionGuardDevtools/ActionGuardDevtools.types.ts:23](https://github.com/okyrychenko-dev/react-action-guard/blob/main/packages/devtools/src/components/actionGuardDevtools/ActionGuardDevtools.types.ts#L23) + +An explicitly declared action, not a runtime action registration. + +## Properties + +### id + +> **id**: `string` + +Defined in: [components/actionGuardDevtools/ActionGuardDevtools.types.ts:24](https://github.com/okyrychenko-dev/react-action-guard/blob/main/packages/devtools/src/components/actionGuardDevtools/ActionGuardDevtools.types.ts#L24) + +*** + +### scope + +> **scope**: `Scope` + +Defined in: [components/actionGuardDevtools/ActionGuardDevtools.types.ts:25](https://github.com/okyrychenko-dev/react-action-guard/blob/main/packages/devtools/src/components/actionGuardDevtools/ActionGuardDevtools.types.ts#L25) diff --git a/packages/docs/src/packages/react-action-guard-devtools/api/typedoc/interfaces/DevtoolsInspection.md b/packages/docs/src/packages/react-action-guard-devtools/api/typedoc/interfaces/DevtoolsInspection.md new file mode 100644 index 00000000..8ead42ce --- /dev/null +++ b/packages/docs/src/packages/react-action-guard-devtools/api/typedoc/interfaces/DevtoolsInspection.md @@ -0,0 +1,31 @@ +[**React Action Guard DevTools API v1.0.0**](../README.md) + +*** + +[React Action Guard DevTools API](../README.md) / DevtoolsInspection + +# Interface: DevtoolsInspection + +Defined in: [components/actionGuardDevtools/ActionGuardDevtools.types.ts:29](https://github.com/okyrychenko-dev/react-action-guard/blob/main/packages/devtools/src/components/actionGuardDevtools/ActionGuardDevtools.types.ts#L29) + +Store-local inspection declarations; they do not change blocking behavior. + +## Properties + +### scopes? + +> `optional` **scopes?**: readonly `string`[] + +Defined in: [components/actionGuardDevtools/ActionGuardDevtools.types.ts:31](https://github.com/okyrychenko-dev/react-action-guard/blob/main/packages/devtools/src/components/actionGuardDevtools/ActionGuardDevtools.types.ts#L31) + +Include known areas even when no active blocker names them. + +*** + +### actions? + +> `optional` **actions?**: readonly [`DevtoolsInspectedAction`](DevtoolsInspectedAction.md)[] + +Defined in: [components/actionGuardDevtools/ActionGuardDevtools.types.ts:33](https://github.com/okyrychenko-dev/react-action-guard/blob/main/packages/devtools/src/components/actionGuardDevtools/ActionGuardDevtools.types.ts#L33) + +Explain actions only through the scopes declared by the application. diff --git a/packages/docs/src/packages/react-action-guard-devtools/api/typedoc/interfaces/DevtoolsState.md b/packages/docs/src/packages/react-action-guard-devtools/api/typedoc/interfaces/DevtoolsState.md index 47165e36..84fe0127 100644 --- a/packages/docs/src/packages/react-action-guard-devtools/api/typedoc/interfaces/DevtoolsState.md +++ b/packages/docs/src/packages/react-action-guard-devtools/api/typedoc/interfaces/DevtoolsState.md @@ -1,4 +1,4 @@ -[**React Action Guard DevTools API v0.3.0**](../README.md) +[**React Action Guard DevTools API v1.0.0**](../README.md) *** diff --git a/packages/docs/src/packages/react-action-guard-devtools/api/typedoc/type-aliases/DevtoolsPosition.md b/packages/docs/src/packages/react-action-guard-devtools/api/typedoc/type-aliases/DevtoolsPosition.md index cc7ec7e3..62c09469 100644 --- a/packages/docs/src/packages/react-action-guard-devtools/api/typedoc/type-aliases/DevtoolsPosition.md +++ b/packages/docs/src/packages/react-action-guard-devtools/api/typedoc/type-aliases/DevtoolsPosition.md @@ -1,4 +1,4 @@ -[**React Action Guard DevTools API v0.3.0**](../README.md) +[**React Action Guard DevTools API v1.0.0**](../README.md) *** diff --git a/packages/docs/src/packages/react-action-guard-devtools/api/typedoc/type-aliases/DevtoolsStore.md b/packages/docs/src/packages/react-action-guard-devtools/api/typedoc/type-aliases/DevtoolsStore.md index d197738f..7b90ef06 100644 --- a/packages/docs/src/packages/react-action-guard-devtools/api/typedoc/type-aliases/DevtoolsStore.md +++ b/packages/docs/src/packages/react-action-guard-devtools/api/typedoc/type-aliases/DevtoolsStore.md @@ -1,4 +1,4 @@ -[**React Action Guard DevTools API v0.3.0**](../README.md) +[**React Action Guard DevTools API v1.0.0**](../README.md) *** diff --git a/packages/docs/src/packages/react-action-guard-devtools/api/typedoc/variables/selectEventStats.md b/packages/docs/src/packages/react-action-guard-devtools/api/typedoc/variables/selectEventStats.md index 922208fe..205fe793 100644 --- a/packages/docs/src/packages/react-action-guard-devtools/api/typedoc/variables/selectEventStats.md +++ b/packages/docs/src/packages/react-action-guard-devtools/api/typedoc/variables/selectEventStats.md @@ -1,4 +1,4 @@ -[**React Action Guard DevTools API v0.3.0**](../README.md) +[**React Action Guard DevTools API v1.0.0**](../README.md) *** diff --git a/packages/docs/src/packages/react-action-guard-devtools/api/typedoc/variables/selectFilteredEvents.md b/packages/docs/src/packages/react-action-guard-devtools/api/typedoc/variables/selectFilteredEvents.md index 375f6873..29369879 100644 --- a/packages/docs/src/packages/react-action-guard-devtools/api/typedoc/variables/selectFilteredEvents.md +++ b/packages/docs/src/packages/react-action-guard-devtools/api/typedoc/variables/selectFilteredEvents.md @@ -1,4 +1,4 @@ -[**React Action Guard DevTools API v0.3.0**](../README.md) +[**React Action Guard DevTools API v1.0.0**](../README.md) *** diff --git a/packages/docs/src/packages/react-action-guard-devtools/api/typedoc/variables/selectUniqueScopes.md b/packages/docs/src/packages/react-action-guard-devtools/api/typedoc/variables/selectUniqueScopes.md index 5dbe4419..11875927 100644 --- a/packages/docs/src/packages/react-action-guard-devtools/api/typedoc/variables/selectUniqueScopes.md +++ b/packages/docs/src/packages/react-action-guard-devtools/api/typedoc/variables/selectUniqueScopes.md @@ -1,4 +1,4 @@ -[**React Action Guard DevTools API v0.3.0**](../README.md) +[**React Action Guard DevTools API v1.0.0**](../README.md) *** diff --git a/packages/docs/src/packages/react-action-guard-devtools/api/typedoc/variables/useDevtoolsStore.md b/packages/docs/src/packages/react-action-guard-devtools/api/typedoc/variables/useDevtoolsStore.md index 93b4da4e..8506ec92 100644 --- a/packages/docs/src/packages/react-action-guard-devtools/api/typedoc/variables/useDevtoolsStore.md +++ b/packages/docs/src/packages/react-action-guard-devtools/api/typedoc/variables/useDevtoolsStore.md @@ -1,4 +1,4 @@ -[**React Action Guard DevTools API v0.3.0**](../README.md) +[**React Action Guard DevTools API v1.0.0**](../README.md) *** diff --git a/packages/docs/src/packages/react-action-guard-tanstack/api/typedoc/README.md b/packages/docs/src/packages/react-action-guard-tanstack/api/typedoc/README.md index b22ed9e5..18c8c82c 100644 --- a/packages/docs/src/packages/react-action-guard-tanstack/api/typedoc/README.md +++ b/packages/docs/src/packages/react-action-guard-tanstack/api/typedoc/README.md @@ -1,8 +1,8 @@ -**React Action Guard TanStack API v0.3.5** +**React Action Guard TanStack API v0.4.0** *** -# React Action Guard TanStack API v0.3.5 +# React Action Guard TanStack API v0.4.0 ## Interfaces diff --git a/packages/docs/src/packages/react-action-guard-tanstack/api/typedoc/functions/useBlockingInfiniteQuery.md b/packages/docs/src/packages/react-action-guard-tanstack/api/typedoc/functions/useBlockingInfiniteQuery.md index fed66ff4..1ae6ae29 100644 --- a/packages/docs/src/packages/react-action-guard-tanstack/api/typedoc/functions/useBlockingInfiniteQuery.md +++ b/packages/docs/src/packages/react-action-guard-tanstack/api/typedoc/functions/useBlockingInfiniteQuery.md @@ -1,4 +1,4 @@ -[**React Action Guard TanStack API v0.3.5**](../README.md) +[**React Action Guard TanStack API v0.4.0**](../README.md) *** diff --git a/packages/docs/src/packages/react-action-guard-tanstack/api/typedoc/functions/useBlockingMutation.md b/packages/docs/src/packages/react-action-guard-tanstack/api/typedoc/functions/useBlockingMutation.md index a72a3b72..1be2f2b0 100644 --- a/packages/docs/src/packages/react-action-guard-tanstack/api/typedoc/functions/useBlockingMutation.md +++ b/packages/docs/src/packages/react-action-guard-tanstack/api/typedoc/functions/useBlockingMutation.md @@ -1,4 +1,4 @@ -[**React Action Guard TanStack API v0.3.5**](../README.md) +[**React Action Guard TanStack API v0.4.0**](../README.md) *** @@ -8,7 +8,7 @@ > **useBlockingMutation**\<`TData`, `TError`, `TVariables`, `TOnMutateResult`\>(`options`, `queryClient?`): `UseMutationResult`\<`TData`, `TError`, `TVariables`, `TOnMutateResult`\> -Defined in: [packages/tanstack/src/hooks/useBlockingMutation.ts:11](https://github.com/okyrychenko-dev/react-action-guard/blob/main/packages/tanstack/src/hooks/useBlockingMutation.ts#L11) +Defined in: [packages/tanstack/src/hooks/useBlockingMutation.ts:28](https://github.com/okyrychenko-dev/react-action-guard/blob/main/packages/tanstack/src/hooks/useBlockingMutation.ts#L28) Wraps TanStack Mutation with UI blocking. diff --git a/packages/docs/src/packages/react-action-guard-tanstack/api/typedoc/functions/useBlockingQueries.md b/packages/docs/src/packages/react-action-guard-tanstack/api/typedoc/functions/useBlockingQueries.md index 954d62cd..e3213c6d 100644 --- a/packages/docs/src/packages/react-action-guard-tanstack/api/typedoc/functions/useBlockingQueries.md +++ b/packages/docs/src/packages/react-action-guard-tanstack/api/typedoc/functions/useBlockingQueries.md @@ -1,4 +1,4 @@ -[**React Action Guard TanStack API v0.3.5**](../README.md) +[**React Action Guard TanStack API v0.4.0**](../README.md) *** diff --git a/packages/docs/src/packages/react-action-guard-tanstack/api/typedoc/functions/useBlockingQuery.md b/packages/docs/src/packages/react-action-guard-tanstack/api/typedoc/functions/useBlockingQuery.md index 8b7fca07..250be112 100644 --- a/packages/docs/src/packages/react-action-guard-tanstack/api/typedoc/functions/useBlockingQuery.md +++ b/packages/docs/src/packages/react-action-guard-tanstack/api/typedoc/functions/useBlockingQuery.md @@ -1,4 +1,4 @@ -[**React Action Guard TanStack API v0.3.5**](../README.md) +[**React Action Guard TanStack API v0.4.0**](../README.md) *** diff --git a/packages/docs/src/packages/react-action-guard-tanstack/api/typedoc/interfaces/BaseBlockingConfig.md b/packages/docs/src/packages/react-action-guard-tanstack/api/typedoc/interfaces/BaseBlockingConfig.md index 2cbaf7e5..5c97c023 100644 --- a/packages/docs/src/packages/react-action-guard-tanstack/api/typedoc/interfaces/BaseBlockingConfig.md +++ b/packages/docs/src/packages/react-action-guard-tanstack/api/typedoc/interfaces/BaseBlockingConfig.md @@ -1,4 +1,4 @@ -[**React Action Guard TanStack API v0.3.5**](../README.md) +[**React Action Guard TanStack API v0.4.0**](../README.md) *** @@ -6,7 +6,7 @@ # Interface: BaseBlockingConfig -Defined in: [packages/tanstack/src/types/common.types.ts:4](https://github.com/okyrychenko-dev/react-action-guard/blob/main/packages/tanstack/src/types/common.types.ts#L4) +Defined in: [packages/tanstack/src/types/common.types.ts:2](https://github.com/okyrychenko-dev/react-action-guard/blob/main/packages/tanstack/src/types/common.types.ts#L2) Shared blocking options. @@ -22,7 +22,7 @@ Shared blocking options. > `optional` **scope?**: `string` \| readonly `string`[] -Defined in: [packages/tanstack/src/types/common.types.ts:5](https://github.com/okyrychenko-dev/react-action-guard/blob/main/packages/tanstack/src/types/common.types.ts#L5) +Defined in: [packages/tanstack/src/types/common.types.ts:3](https://github.com/okyrychenko-dev/react-action-guard/blob/main/packages/tanstack/src/types/common.types.ts#L3) *** @@ -30,7 +30,7 @@ Defined in: [packages/tanstack/src/types/common.types.ts:5](https://github.com/o > `optional` **priority?**: `number` -Defined in: [packages/tanstack/src/types/common.types.ts:6](https://github.com/okyrychenko-dev/react-action-guard/blob/main/packages/tanstack/src/types/common.types.ts#L6) +Defined in: [packages/tanstack/src/types/common.types.ts:4](https://github.com/okyrychenko-dev/react-action-guard/blob/main/packages/tanstack/src/types/common.types.ts#L4) *** @@ -38,7 +38,7 @@ Defined in: [packages/tanstack/src/types/common.types.ts:6](https://github.com/o > `optional` **reason?**: `string` -Defined in: [packages/tanstack/src/types/common.types.ts:7](https://github.com/okyrychenko-dev/react-action-guard/blob/main/packages/tanstack/src/types/common.types.ts#L7) +Defined in: [packages/tanstack/src/types/common.types.ts:5](https://github.com/okyrychenko-dev/react-action-guard/blob/main/packages/tanstack/src/types/common.types.ts#L5) *** @@ -46,7 +46,7 @@ Defined in: [packages/tanstack/src/types/common.types.ts:7](https://github.com/o > `optional` **timeout?**: `number` -Defined in: [packages/tanstack/src/types/common.types.ts:8](https://github.com/okyrychenko-dev/react-action-guard/blob/main/packages/tanstack/src/types/common.types.ts#L8) +Defined in: [packages/tanstack/src/types/common.types.ts:6](https://github.com/okyrychenko-dev/react-action-guard/blob/main/packages/tanstack/src/types/common.types.ts#L6) *** @@ -54,7 +54,7 @@ Defined in: [packages/tanstack/src/types/common.types.ts:8](https://github.com/o > `optional` **onTimeout?**: (`blockerId`) => `void` -Defined in: [packages/tanstack/src/types/common.types.ts:9](https://github.com/okyrychenko-dev/react-action-guard/blob/main/packages/tanstack/src/types/common.types.ts#L9) +Defined in: [packages/tanstack/src/types/common.types.ts:7](https://github.com/okyrychenko-dev/react-action-guard/blob/main/packages/tanstack/src/types/common.types.ts#L7) #### Parameters diff --git a/packages/docs/src/packages/react-action-guard-tanstack/api/typedoc/interfaces/InfiniteQueryBlockingConfig.md b/packages/docs/src/packages/react-action-guard-tanstack/api/typedoc/interfaces/InfiniteQueryBlockingConfig.md index fa9c1636..a03f93cd 100644 --- a/packages/docs/src/packages/react-action-guard-tanstack/api/typedoc/interfaces/InfiniteQueryBlockingConfig.md +++ b/packages/docs/src/packages/react-action-guard-tanstack/api/typedoc/interfaces/InfiniteQueryBlockingConfig.md @@ -1,4 +1,4 @@ -[**React Action Guard TanStack API v0.3.5**](../README.md) +[**React Action Guard TanStack API v0.4.0**](../README.md) *** @@ -68,7 +68,7 @@ Defined in: [packages/tanstack/src/hooks/useBlockingInfiniteQuery.types.ts:17](h > `optional` **scope?**: `string` \| readonly `string`[] -Defined in: [packages/tanstack/src/types/common.types.ts:5](https://github.com/okyrychenko-dev/react-action-guard/blob/main/packages/tanstack/src/types/common.types.ts#L5) +Defined in: [packages/tanstack/src/types/common.types.ts:3](https://github.com/okyrychenko-dev/react-action-guard/blob/main/packages/tanstack/src/types/common.types.ts#L3) #### Inherited from @@ -80,7 +80,7 @@ Defined in: [packages/tanstack/src/types/common.types.ts:5](https://github.com/o > `optional` **priority?**: `number` -Defined in: [packages/tanstack/src/types/common.types.ts:6](https://github.com/okyrychenko-dev/react-action-guard/blob/main/packages/tanstack/src/types/common.types.ts#L6) +Defined in: [packages/tanstack/src/types/common.types.ts:4](https://github.com/okyrychenko-dev/react-action-guard/blob/main/packages/tanstack/src/types/common.types.ts#L4) #### Inherited from @@ -92,7 +92,7 @@ Defined in: [packages/tanstack/src/types/common.types.ts:6](https://github.com/o > `optional` **reason?**: `string` -Defined in: [packages/tanstack/src/types/common.types.ts:7](https://github.com/okyrychenko-dev/react-action-guard/blob/main/packages/tanstack/src/types/common.types.ts#L7) +Defined in: [packages/tanstack/src/types/common.types.ts:5](https://github.com/okyrychenko-dev/react-action-guard/blob/main/packages/tanstack/src/types/common.types.ts#L5) #### Inherited from @@ -104,7 +104,7 @@ Defined in: [packages/tanstack/src/types/common.types.ts:7](https://github.com/o > `optional` **timeout?**: `number` -Defined in: [packages/tanstack/src/types/common.types.ts:8](https://github.com/okyrychenko-dev/react-action-guard/blob/main/packages/tanstack/src/types/common.types.ts#L8) +Defined in: [packages/tanstack/src/types/common.types.ts:6](https://github.com/okyrychenko-dev/react-action-guard/blob/main/packages/tanstack/src/types/common.types.ts#L6) #### Inherited from @@ -116,7 +116,7 @@ Defined in: [packages/tanstack/src/types/common.types.ts:8](https://github.com/o > `optional` **onTimeout?**: (`blockerId`) => `void` -Defined in: [packages/tanstack/src/types/common.types.ts:9](https://github.com/okyrychenko-dev/react-action-guard/blob/main/packages/tanstack/src/types/common.types.ts#L9) +Defined in: [packages/tanstack/src/types/common.types.ts:7](https://github.com/okyrychenko-dev/react-action-guard/blob/main/packages/tanstack/src/types/common.types.ts#L7) #### Parameters diff --git a/packages/docs/src/packages/react-action-guard-tanstack/api/typedoc/interfaces/QueriesBlockingConfig.md b/packages/docs/src/packages/react-action-guard-tanstack/api/typedoc/interfaces/QueriesBlockingConfig.md index 0a1ea2b8..260f60c9 100644 --- a/packages/docs/src/packages/react-action-guard-tanstack/api/typedoc/interfaces/QueriesBlockingConfig.md +++ b/packages/docs/src/packages/react-action-guard-tanstack/api/typedoc/interfaces/QueriesBlockingConfig.md @@ -1,4 +1,4 @@ -[**React Action Guard TanStack API v0.3.5**](../README.md) +[**React Action Guard TanStack API v0.4.0**](../README.md) *** @@ -68,7 +68,7 @@ Defined in: [packages/tanstack/src/hooks/useBlockingQueries.types.ts:15](https:/ > `optional` **scope?**: `string` \| readonly `string`[] -Defined in: [packages/tanstack/src/types/common.types.ts:5](https://github.com/okyrychenko-dev/react-action-guard/blob/main/packages/tanstack/src/types/common.types.ts#L5) +Defined in: [packages/tanstack/src/types/common.types.ts:3](https://github.com/okyrychenko-dev/react-action-guard/blob/main/packages/tanstack/src/types/common.types.ts#L3) #### Inherited from @@ -80,7 +80,7 @@ Defined in: [packages/tanstack/src/types/common.types.ts:5](https://github.com/o > `optional` **priority?**: `number` -Defined in: [packages/tanstack/src/types/common.types.ts:6](https://github.com/okyrychenko-dev/react-action-guard/blob/main/packages/tanstack/src/types/common.types.ts#L6) +Defined in: [packages/tanstack/src/types/common.types.ts:4](https://github.com/okyrychenko-dev/react-action-guard/blob/main/packages/tanstack/src/types/common.types.ts#L4) #### Inherited from @@ -92,7 +92,7 @@ Defined in: [packages/tanstack/src/types/common.types.ts:6](https://github.com/o > `optional` **reason?**: `string` -Defined in: [packages/tanstack/src/types/common.types.ts:7](https://github.com/okyrychenko-dev/react-action-guard/blob/main/packages/tanstack/src/types/common.types.ts#L7) +Defined in: [packages/tanstack/src/types/common.types.ts:5](https://github.com/okyrychenko-dev/react-action-guard/blob/main/packages/tanstack/src/types/common.types.ts#L5) #### Inherited from @@ -104,7 +104,7 @@ Defined in: [packages/tanstack/src/types/common.types.ts:7](https://github.com/o > `optional` **timeout?**: `number` -Defined in: [packages/tanstack/src/types/common.types.ts:8](https://github.com/okyrychenko-dev/react-action-guard/blob/main/packages/tanstack/src/types/common.types.ts#L8) +Defined in: [packages/tanstack/src/types/common.types.ts:6](https://github.com/okyrychenko-dev/react-action-guard/blob/main/packages/tanstack/src/types/common.types.ts#L6) #### Inherited from @@ -116,7 +116,7 @@ Defined in: [packages/tanstack/src/types/common.types.ts:8](https://github.com/o > `optional` **onTimeout?**: (`blockerId`) => `void` -Defined in: [packages/tanstack/src/types/common.types.ts:9](https://github.com/okyrychenko-dev/react-action-guard/blob/main/packages/tanstack/src/types/common.types.ts#L9) +Defined in: [packages/tanstack/src/types/common.types.ts:7](https://github.com/okyrychenko-dev/react-action-guard/blob/main/packages/tanstack/src/types/common.types.ts#L7) #### Parameters diff --git a/packages/docs/src/packages/react-action-guard-tanstack/api/typedoc/interfaces/QueryBlockingConfig.md b/packages/docs/src/packages/react-action-guard-tanstack/api/typedoc/interfaces/QueryBlockingConfig.md index 76db2acd..27129cc5 100644 --- a/packages/docs/src/packages/react-action-guard-tanstack/api/typedoc/interfaces/QueryBlockingConfig.md +++ b/packages/docs/src/packages/react-action-guard-tanstack/api/typedoc/interfaces/QueryBlockingConfig.md @@ -1,4 +1,4 @@ -[**React Action Guard TanStack API v0.3.5**](../README.md) +[**React Action Guard TanStack API v0.4.0**](../README.md) *** @@ -68,7 +68,7 @@ Defined in: [packages/tanstack/src/hooks/useBlockingQuery.types.ts:16](https://g > `optional` **scope?**: `string` \| readonly `string`[] -Defined in: [packages/tanstack/src/types/common.types.ts:5](https://github.com/okyrychenko-dev/react-action-guard/blob/main/packages/tanstack/src/types/common.types.ts#L5) +Defined in: [packages/tanstack/src/types/common.types.ts:3](https://github.com/okyrychenko-dev/react-action-guard/blob/main/packages/tanstack/src/types/common.types.ts#L3) #### Inherited from @@ -80,7 +80,7 @@ Defined in: [packages/tanstack/src/types/common.types.ts:5](https://github.com/o > `optional` **priority?**: `number` -Defined in: [packages/tanstack/src/types/common.types.ts:6](https://github.com/okyrychenko-dev/react-action-guard/blob/main/packages/tanstack/src/types/common.types.ts#L6) +Defined in: [packages/tanstack/src/types/common.types.ts:4](https://github.com/okyrychenko-dev/react-action-guard/blob/main/packages/tanstack/src/types/common.types.ts#L4) #### Inherited from @@ -92,7 +92,7 @@ Defined in: [packages/tanstack/src/types/common.types.ts:6](https://github.com/o > `optional` **reason?**: `string` -Defined in: [packages/tanstack/src/types/common.types.ts:7](https://github.com/okyrychenko-dev/react-action-guard/blob/main/packages/tanstack/src/types/common.types.ts#L7) +Defined in: [packages/tanstack/src/types/common.types.ts:5](https://github.com/okyrychenko-dev/react-action-guard/blob/main/packages/tanstack/src/types/common.types.ts#L5) #### Inherited from @@ -104,7 +104,7 @@ Defined in: [packages/tanstack/src/types/common.types.ts:7](https://github.com/o > `optional` **timeout?**: `number` -Defined in: [packages/tanstack/src/types/common.types.ts:8](https://github.com/okyrychenko-dev/react-action-guard/blob/main/packages/tanstack/src/types/common.types.ts#L8) +Defined in: [packages/tanstack/src/types/common.types.ts:6](https://github.com/okyrychenko-dev/react-action-guard/blob/main/packages/tanstack/src/types/common.types.ts#L6) #### Inherited from @@ -116,7 +116,7 @@ Defined in: [packages/tanstack/src/types/common.types.ts:8](https://github.com/o > `optional` **onTimeout?**: (`blockerId`) => `void` -Defined in: [packages/tanstack/src/types/common.types.ts:9](https://github.com/okyrychenko-dev/react-action-guard/blob/main/packages/tanstack/src/types/common.types.ts#L9) +Defined in: [packages/tanstack/src/types/common.types.ts:7](https://github.com/okyrychenko-dev/react-action-guard/blob/main/packages/tanstack/src/types/common.types.ts#L7) #### Parameters diff --git a/packages/docs/src/packages/react-action-guard-tanstack/api/typedoc/interfaces/UseBlockingInfiniteQueryOptions.md b/packages/docs/src/packages/react-action-guard-tanstack/api/typedoc/interfaces/UseBlockingInfiniteQueryOptions.md index 26d75d37..7fcaf662 100644 --- a/packages/docs/src/packages/react-action-guard-tanstack/api/typedoc/interfaces/UseBlockingInfiniteQueryOptions.md +++ b/packages/docs/src/packages/react-action-guard-tanstack/api/typedoc/interfaces/UseBlockingInfiniteQueryOptions.md @@ -1,4 +1,4 @@ -[**React Action Guard TanStack API v0.3.5**](../README.md) +[**React Action Guard TanStack API v0.4.0**](../README.md) *** diff --git a/packages/docs/src/packages/react-action-guard-tanstack/api/typedoc/interfaces/UseBlockingMutationOptions.md b/packages/docs/src/packages/react-action-guard-tanstack/api/typedoc/interfaces/UseBlockingMutationOptions.md index c036ec84..051978a9 100644 --- a/packages/docs/src/packages/react-action-guard-tanstack/api/typedoc/interfaces/UseBlockingMutationOptions.md +++ b/packages/docs/src/packages/react-action-guard-tanstack/api/typedoc/interfaces/UseBlockingMutationOptions.md @@ -1,4 +1,4 @@ -[**React Action Guard TanStack API v0.3.5**](../README.md) +[**React Action Guard TanStack API v0.4.0**](../README.md) *** diff --git a/packages/docs/src/packages/react-action-guard-tanstack/api/typedoc/interfaces/UseBlockingQueryOptions.md b/packages/docs/src/packages/react-action-guard-tanstack/api/typedoc/interfaces/UseBlockingQueryOptions.md index 2faaf965..f1083f9e 100644 --- a/packages/docs/src/packages/react-action-guard-tanstack/api/typedoc/interfaces/UseBlockingQueryOptions.md +++ b/packages/docs/src/packages/react-action-guard-tanstack/api/typedoc/interfaces/UseBlockingQueryOptions.md @@ -1,4 +1,4 @@ -[**React Action Guard TanStack API v0.3.5**](../README.md) +[**React Action Guard TanStack API v0.4.0**](../README.md) *** diff --git a/packages/docs/src/packages/react-action-guard-tanstack/api/typedoc/type-aliases/MutationBlockingConfig.md b/packages/docs/src/packages/react-action-guard-tanstack/api/typedoc/type-aliases/MutationBlockingConfig.md index 32d993a1..b13679c1 100644 --- a/packages/docs/src/packages/react-action-guard-tanstack/api/typedoc/type-aliases/MutationBlockingConfig.md +++ b/packages/docs/src/packages/react-action-guard-tanstack/api/typedoc/type-aliases/MutationBlockingConfig.md @@ -1,4 +1,4 @@ -[**React Action Guard TanStack API v0.3.5**](../README.md) +[**React Action Guard TanStack API v0.4.0**](../README.md) *** diff --git a/packages/docs/src/packages/react-action-guard-tanstack/api/typedoc/type-aliases/UseBlockingQueriesOptions.md b/packages/docs/src/packages/react-action-guard-tanstack/api/typedoc/type-aliases/UseBlockingQueriesOptions.md index 7a22f648..3da0e810 100644 --- a/packages/docs/src/packages/react-action-guard-tanstack/api/typedoc/type-aliases/UseBlockingQueriesOptions.md +++ b/packages/docs/src/packages/react-action-guard-tanstack/api/typedoc/type-aliases/UseBlockingQueriesOptions.md @@ -1,4 +1,4 @@ -[**React Action Guard TanStack API v0.3.5**](../README.md) +[**React Action Guard TanStack API v0.4.0**](../README.md) *** diff --git a/packages/docs/src/packages/react-action-guard/api/typedoc/README.md b/packages/docs/src/packages/react-action-guard/api/typedoc/README.md index 3b067223..d6f3ca9e 100644 --- a/packages/docs/src/packages/react-action-guard/api/typedoc/README.md +++ b/packages/docs/src/packages/react-action-guard/api/typedoc/README.md @@ -1,8 +1,8 @@ -**React Action Guard API v1.0.5** +**React Action Guard API v2.0.0** *** -# React Action Guard API v1.0.5 +# React Action Guard API v2.0.0 ## Interfaces @@ -56,6 +56,9 @@ - [useUIBlockingStoreFromContext](functions/useUIBlockingStoreFromContext.md) - [UIBlockingProvider](functions/UIBlockingProvider.md) +- [~~useOptionalContext~~](functions/useOptionalContext.md) +- [~~useResolvedStore~~](functions/useResolvedStore.md) +- [~~useResolvedStoreWithSelector~~](functions/useResolvedStoreWithSelector.md) - [useResolvedStoreApi](functions/useResolvedStoreApi.md) - [useResolvedValue](functions/useResolvedValue.md) - [createTypedHooks](functions/createTypedHooks.md) @@ -66,9 +69,6 @@ - [useConfirmableBlocker](functions/useConfirmableBlocker.md) - [useIsBlocked](functions/useIsBlocked.md) - [useScheduledBlocker](functions/useScheduledBlocker.md) -- [~~useOptionalContext~~](functions/useOptionalContext.md) -- [~~useResolvedStore~~](functions/useResolvedStore.md) -- [~~useResolvedStoreWithSelector~~](functions/useResolvedStoreWithSelector.md) - [createAnalyticsMiddleware](functions/createAnalyticsMiddleware.md) - [configureMiddleware](functions/configureMiddleware.md) - [loggerMiddleware](functions/loggerMiddleware.md) diff --git a/packages/docs/src/packages/react-action-guard/api/typedoc/functions/UIBlockingProvider.md b/packages/docs/src/packages/react-action-guard/api/typedoc/functions/UIBlockingProvider.md index fccec984..1d2b9376 100644 --- a/packages/docs/src/packages/react-action-guard/api/typedoc/functions/UIBlockingProvider.md +++ b/packages/docs/src/packages/react-action-guard/api/typedoc/functions/UIBlockingProvider.md @@ -1,4 +1,4 @@ -[**React Action Guard API v1.0.5**](../README.md) +[**React Action Guard API v2.0.0**](../README.md) *** diff --git a/packages/docs/src/packages/react-action-guard/api/typedoc/functions/configureMiddleware.md b/packages/docs/src/packages/react-action-guard/api/typedoc/functions/configureMiddleware.md index 659bb1a7..a9a0ebe4 100644 --- a/packages/docs/src/packages/react-action-guard/api/typedoc/functions/configureMiddleware.md +++ b/packages/docs/src/packages/react-action-guard/api/typedoc/functions/configureMiddleware.md @@ -1,4 +1,4 @@ -[**React Action Guard API v1.0.5**](../README.md) +[**React Action Guard API v2.0.0**](../README.md) *** diff --git a/packages/docs/src/packages/react-action-guard/api/typedoc/functions/createAnalyticsMiddleware.md b/packages/docs/src/packages/react-action-guard/api/typedoc/functions/createAnalyticsMiddleware.md index 03d4ca7e..8c7298a6 100644 --- a/packages/docs/src/packages/react-action-guard/api/typedoc/functions/createAnalyticsMiddleware.md +++ b/packages/docs/src/packages/react-action-guard/api/typedoc/functions/createAnalyticsMiddleware.md @@ -1,4 +1,4 @@ -[**React Action Guard API v1.0.5**](../README.md) +[**React Action Guard API v2.0.0**](../README.md) *** diff --git a/packages/docs/src/packages/react-action-guard/api/typedoc/functions/createBlockingLifecycle.md b/packages/docs/src/packages/react-action-guard/api/typedoc/functions/createBlockingLifecycle.md index e1221dd4..04ab1912 100644 --- a/packages/docs/src/packages/react-action-guard/api/typedoc/functions/createBlockingLifecycle.md +++ b/packages/docs/src/packages/react-action-guard/api/typedoc/functions/createBlockingLifecycle.md @@ -1,4 +1,4 @@ -[**React Action Guard API v1.0.5**](../README.md) +[**React Action Guard API v2.0.0**](../README.md) *** @@ -8,7 +8,7 @@ > **createBlockingLifecycle**(): [`BlockingLifecycle`](../interfaces/BlockingLifecycle.md) -Defined in: [store/blockingLifecycle/blockingLifecycle.ts:46](https://github.com/okyrychenko-dev/react-action-guard/blob/main/packages/core/src/store/blockingLifecycle/blockingLifecycle.ts#L46) +Defined in: [store/blockingLifecycle/blockingLifecycle.ts:48](https://github.com/okyrychenko-dev/react-action-guard/blob/main/packages/core/src/store/blockingLifecycle/blockingLifecycle.ts#L48) Owns one independent store's blockers, timers, snapshots, and transition events. diff --git a/packages/docs/src/packages/react-action-guard/api/typedoc/functions/createPerformanceMiddleware.md b/packages/docs/src/packages/react-action-guard/api/typedoc/functions/createPerformanceMiddleware.md index 66b788ba..dbd7f265 100644 --- a/packages/docs/src/packages/react-action-guard/api/typedoc/functions/createPerformanceMiddleware.md +++ b/packages/docs/src/packages/react-action-guard/api/typedoc/functions/createPerformanceMiddleware.md @@ -1,4 +1,4 @@ -[**React Action Guard API v1.0.5**](../README.md) +[**React Action Guard API v2.0.0**](../README.md) *** @@ -8,9 +8,10 @@ > **createPerformanceMiddleware**(`config?`): [`Middleware`](../type-aliases/Middleware.md) -Defined in: [middleware/performanceMiddleware.ts:43](https://github.com/okyrychenko-dev/react-action-guard/blob/main/packages/core/src/middleware/performanceMiddleware.ts#L43) +Defined in: [middleware/performanceMiddleware.ts:15](https://github.com/okyrychenko-dev/react-action-guard/blob/main/packages/core/src/middleware/performanceMiddleware.ts#L15) -Creates middleware for monitoring blocker performance and detecting slow blocks. +Measures registration lifetimes from add until removal, timeout or bulk clear. +Updates preserve the start; replacement adds restart it. Callback failures are isolated. ## Parameters @@ -25,8 +26,3 @@ Creates middleware for monitoring blocker performance and detecting slow blocks. ## Since 0.6.0 - -## See - - - [PerformanceConfig](../interfaces/PerformanceConfig.md) for configuration options - - [configureMiddleware](configureMiddleware.md) for registering middleware diff --git a/packages/docs/src/packages/react-action-guard/api/typedoc/functions/createTypedHooks.md b/packages/docs/src/packages/react-action-guard/api/typedoc/functions/createTypedHooks.md index c0cd5a58..186bfd07 100644 --- a/packages/docs/src/packages/react-action-guard/api/typedoc/functions/createTypedHooks.md +++ b/packages/docs/src/packages/react-action-guard/api/typedoc/functions/createTypedHooks.md @@ -1,4 +1,4 @@ -[**React Action Guard API v1.0.5**](../README.md) +[**React Action Guard API v2.0.0**](../README.md) *** diff --git a/packages/docs/src/packages/react-action-guard/api/typedoc/functions/loggerMiddleware.md b/packages/docs/src/packages/react-action-guard/api/typedoc/functions/loggerMiddleware.md index 28442c78..31f3178a 100644 --- a/packages/docs/src/packages/react-action-guard/api/typedoc/functions/loggerMiddleware.md +++ b/packages/docs/src/packages/react-action-guard/api/typedoc/functions/loggerMiddleware.md @@ -1,4 +1,4 @@ -[**React Action Guard API v1.0.5**](../README.md) +[**React Action Guard API v2.0.0**](../README.md) *** diff --git a/packages/docs/src/packages/react-action-guard/api/typedoc/functions/normalizeScope.md b/packages/docs/src/packages/react-action-guard/api/typedoc/functions/normalizeScope.md index df7e2f67..d5a79de3 100644 --- a/packages/docs/src/packages/react-action-guard/api/typedoc/functions/normalizeScope.md +++ b/packages/docs/src/packages/react-action-guard/api/typedoc/functions/normalizeScope.md @@ -1,4 +1,4 @@ -[**React Action Guard API v1.0.5**](../README.md) +[**React Action Guard API v2.0.0**](../README.md) *** diff --git a/packages/docs/src/packages/react-action-guard/api/typedoc/functions/resolveScope.md b/packages/docs/src/packages/react-action-guard/api/typedoc/functions/resolveScope.md index 09cbe66c..6b0e096a 100644 --- a/packages/docs/src/packages/react-action-guard/api/typedoc/functions/resolveScope.md +++ b/packages/docs/src/packages/react-action-guard/api/typedoc/functions/resolveScope.md @@ -1,4 +1,4 @@ -[**React Action Guard API v1.0.5**](../README.md) +[**React Action Guard API v2.0.0**](../README.md) *** diff --git a/packages/docs/src/packages/react-action-guard/api/typedoc/functions/scopeAffectsObservation.md b/packages/docs/src/packages/react-action-guard/api/typedoc/functions/scopeAffectsObservation.md index e35a0b9c..7ee21395 100644 --- a/packages/docs/src/packages/react-action-guard/api/typedoc/functions/scopeAffectsObservation.md +++ b/packages/docs/src/packages/react-action-guard/api/typedoc/functions/scopeAffectsObservation.md @@ -1,4 +1,4 @@ -[**React Action Guard API v1.0.5**](../README.md) +[**React Action Guard API v2.0.0**](../README.md) *** diff --git a/packages/docs/src/packages/react-action-guard/api/typedoc/functions/scopeMatchesTarget.md b/packages/docs/src/packages/react-action-guard/api/typedoc/functions/scopeMatchesTarget.md index 0b349018..29ae572b 100644 --- a/packages/docs/src/packages/react-action-guard/api/typedoc/functions/scopeMatchesTarget.md +++ b/packages/docs/src/packages/react-action-guard/api/typedoc/functions/scopeMatchesTarget.md @@ -1,4 +1,4 @@ -[**React Action Guard API v1.0.5**](../README.md) +[**React Action Guard API v2.0.0**](../README.md) *** diff --git a/packages/docs/src/packages/react-action-guard/api/typedoc/functions/useActionBlocker.md b/packages/docs/src/packages/react-action-guard/api/typedoc/functions/useActionBlocker.md index 10502fc7..9dd052f1 100644 --- a/packages/docs/src/packages/react-action-guard/api/typedoc/functions/useActionBlocker.md +++ b/packages/docs/src/packages/react-action-guard/api/typedoc/functions/useActionBlocker.md @@ -1,4 +1,4 @@ -[**React Action Guard API v1.0.5**](../README.md) +[**React Action Guard API v2.0.0**](../README.md) *** diff --git a/packages/docs/src/packages/react-action-guard/api/typedoc/functions/useAsyncAction.md b/packages/docs/src/packages/react-action-guard/api/typedoc/functions/useAsyncAction.md index 2935aa21..85aa7e6c 100644 --- a/packages/docs/src/packages/react-action-guard/api/typedoc/functions/useAsyncAction.md +++ b/packages/docs/src/packages/react-action-guard/api/typedoc/functions/useAsyncAction.md @@ -1,4 +1,4 @@ -[**React Action Guard API v1.0.5**](../README.md) +[**React Action Guard API v2.0.0**](../README.md) *** diff --git a/packages/docs/src/packages/react-action-guard/api/typedoc/functions/useBlockingInfo.md b/packages/docs/src/packages/react-action-guard/api/typedoc/functions/useBlockingInfo.md index 9f5685c2..676e82a2 100644 --- a/packages/docs/src/packages/react-action-guard/api/typedoc/functions/useBlockingInfo.md +++ b/packages/docs/src/packages/react-action-guard/api/typedoc/functions/useBlockingInfo.md @@ -1,4 +1,4 @@ -[**React Action Guard API v1.0.5**](../README.md) +[**React Action Guard API v2.0.0**](../README.md) *** diff --git a/packages/docs/src/packages/react-action-guard/api/typedoc/functions/useConditionalBlocker.md b/packages/docs/src/packages/react-action-guard/api/typedoc/functions/useConditionalBlocker.md index a835615a..bf6c728d 100644 --- a/packages/docs/src/packages/react-action-guard/api/typedoc/functions/useConditionalBlocker.md +++ b/packages/docs/src/packages/react-action-guard/api/typedoc/functions/useConditionalBlocker.md @@ -1,4 +1,4 @@ -[**React Action Guard API v1.0.5**](../README.md) +[**React Action Guard API v2.0.0**](../README.md) *** diff --git a/packages/docs/src/packages/react-action-guard/api/typedoc/functions/useConfirmableBlocker.md b/packages/docs/src/packages/react-action-guard/api/typedoc/functions/useConfirmableBlocker.md index 14889856..83f12e53 100644 --- a/packages/docs/src/packages/react-action-guard/api/typedoc/functions/useConfirmableBlocker.md +++ b/packages/docs/src/packages/react-action-guard/api/typedoc/functions/useConfirmableBlocker.md @@ -1,4 +1,4 @@ -[**React Action Guard API v1.0.5**](../README.md) +[**React Action Guard API v2.0.0**](../README.md) *** diff --git a/packages/docs/src/packages/react-action-guard/api/typedoc/functions/useIsBlocked.md b/packages/docs/src/packages/react-action-guard/api/typedoc/functions/useIsBlocked.md index 99927150..bc0d69f6 100644 --- a/packages/docs/src/packages/react-action-guard/api/typedoc/functions/useIsBlocked.md +++ b/packages/docs/src/packages/react-action-guard/api/typedoc/functions/useIsBlocked.md @@ -1,4 +1,4 @@ -[**React Action Guard API v1.0.5**](../README.md) +[**React Action Guard API v2.0.0**](../README.md) *** diff --git a/packages/docs/src/packages/react-action-guard/api/typedoc/functions/useOptionalContext.md b/packages/docs/src/packages/react-action-guard/api/typedoc/functions/useOptionalContext.md index 6db830a8..4fb5c008 100644 --- a/packages/docs/src/packages/react-action-guard/api/typedoc/functions/useOptionalContext.md +++ b/packages/docs/src/packages/react-action-guard/api/typedoc/functions/useOptionalContext.md @@ -1,4 +1,4 @@ -[**React Action Guard API v1.0.5**](../README.md) +[**React Action Guard API v2.0.0**](../README.md) *** @@ -8,7 +8,7 @@ > **useOptionalContext**(): `StoreApi`\<[`UIBlockingStore`](../type-aliases/UIBlockingStore.md)\> \| `null` -Defined in: [index.ts:102](https://github.com/okyrychenko-dev/react-action-guard/blob/main/packages/core/src/index.ts#L102) +Defined in: [context/index.ts:25](https://github.com/okyrychenko-dev/react-action-guard/blob/main/packages/core/src/context/index.ts#L25) ## Returns diff --git a/packages/docs/src/packages/react-action-guard/api/typedoc/functions/useResolvedStore.md b/packages/docs/src/packages/react-action-guard/api/typedoc/functions/useResolvedStore.md index 09546922..16d23453 100644 --- a/packages/docs/src/packages/react-action-guard/api/typedoc/functions/useResolvedStore.md +++ b/packages/docs/src/packages/react-action-guard/api/typedoc/functions/useResolvedStore.md @@ -1,4 +1,4 @@ -[**React Action Guard API v1.0.5**](../README.md) +[**React Action Guard API v2.0.0**](../README.md) *** @@ -8,7 +8,7 @@ > **useResolvedStore**(): `StoreApi`\<[`UIBlockingStore`](../type-aliases/UIBlockingStore.md)\> -Defined in: [index.ts:109](https://github.com/okyrychenko-dev/react-action-guard/blob/main/packages/core/src/index.ts#L109) +Defined in: [context/index.ts:32](https://github.com/okyrychenko-dev/react-action-guard/blob/main/packages/core/src/context/index.ts#L32) ## Returns diff --git a/packages/docs/src/packages/react-action-guard/api/typedoc/functions/useResolvedStoreApi.md b/packages/docs/src/packages/react-action-guard/api/typedoc/functions/useResolvedStoreApi.md index 6f47fbc0..4c036f7d 100644 --- a/packages/docs/src/packages/react-action-guard/api/typedoc/functions/useResolvedStoreApi.md +++ b/packages/docs/src/packages/react-action-guard/api/typedoc/functions/useResolvedStoreApi.md @@ -1,4 +1,4 @@ -[**React Action Guard API v1.0.5**](../README.md) +[**React Action Guard API v2.0.0**](../README.md) *** diff --git a/packages/docs/src/packages/react-action-guard/api/typedoc/functions/useResolvedStoreWithSelector.md b/packages/docs/src/packages/react-action-guard/api/typedoc/functions/useResolvedStoreWithSelector.md index 2b39f3df..33c43129 100644 --- a/packages/docs/src/packages/react-action-guard/api/typedoc/functions/useResolvedStoreWithSelector.md +++ b/packages/docs/src/packages/react-action-guard/api/typedoc/functions/useResolvedStoreWithSelector.md @@ -1,4 +1,4 @@ -[**React Action Guard API v1.0.5**](../README.md) +[**React Action Guard API v2.0.0**](../README.md) *** @@ -8,7 +8,7 @@ > **useResolvedStoreWithSelector**\<`T`\>(`selector`): `T` -Defined in: [index.ts:116](https://github.com/okyrychenko-dev/react-action-guard/blob/main/packages/core/src/index.ts#L116) +Defined in: [context/index.ts:39](https://github.com/okyrychenko-dev/react-action-guard/blob/main/packages/core/src/context/index.ts#L39) ## Type Parameters diff --git a/packages/docs/src/packages/react-action-guard/api/typedoc/functions/useResolvedValue.md b/packages/docs/src/packages/react-action-guard/api/typedoc/functions/useResolvedValue.md index cbd61158..eab5b510 100644 --- a/packages/docs/src/packages/react-action-guard/api/typedoc/functions/useResolvedValue.md +++ b/packages/docs/src/packages/react-action-guard/api/typedoc/functions/useResolvedValue.md @@ -1,4 +1,4 @@ -[**React Action Guard API v1.0.5**](../README.md) +[**React Action Guard API v2.0.0**](../README.md) *** diff --git a/packages/docs/src/packages/react-action-guard/api/typedoc/functions/useScheduledBlocker.md b/packages/docs/src/packages/react-action-guard/api/typedoc/functions/useScheduledBlocker.md index 62cb1be3..a964a0a5 100644 --- a/packages/docs/src/packages/react-action-guard/api/typedoc/functions/useScheduledBlocker.md +++ b/packages/docs/src/packages/react-action-guard/api/typedoc/functions/useScheduledBlocker.md @@ -1,4 +1,4 @@ -[**React Action Guard API v1.0.5**](../README.md) +[**React Action Guard API v2.0.0**](../README.md) *** @@ -8,7 +8,7 @@ > **useScheduledBlocker**(`blockerId`, `config`): `void` -Defined in: [hooks/useScheduledBlocker/useScheduledBlocker.ts:25](https://github.com/okyrychenko-dev/react-action-guard/blob/main/packages/core/src/hooks/useScheduledBlocker/useScheduledBlocker.ts#L25) +Defined in: [hooks/useScheduledBlocker/useScheduledBlocker.ts:24](https://github.com/okyrychenko-dev/react-action-guard/blob/main/packages/core/src/hooks/useScheduledBlocker/useScheduledBlocker.ts#L24) Schedules UI blocking for a specific time period (e.g., maintenance windows). diff --git a/packages/docs/src/packages/react-action-guard/api/typedoc/functions/useUIBlockingStore.md b/packages/docs/src/packages/react-action-guard/api/typedoc/functions/useUIBlockingStore.md index 23ac9455..490ec757 100644 --- a/packages/docs/src/packages/react-action-guard/api/typedoc/functions/useUIBlockingStore.md +++ b/packages/docs/src/packages/react-action-guard/api/typedoc/functions/useUIBlockingStore.md @@ -1,4 +1,4 @@ -[**React Action Guard API v1.0.5**](../README.md) +[**React Action Guard API v2.0.0**](../README.md) *** diff --git a/packages/docs/src/packages/react-action-guard/api/typedoc/functions/useUIBlockingStoreFromContext.md b/packages/docs/src/packages/react-action-guard/api/typedoc/functions/useUIBlockingStoreFromContext.md index 830f5c6f..813306a8 100644 --- a/packages/docs/src/packages/react-action-guard/api/typedoc/functions/useUIBlockingStoreFromContext.md +++ b/packages/docs/src/packages/react-action-guard/api/typedoc/functions/useUIBlockingStoreFromContext.md @@ -1,4 +1,4 @@ -[**React Action Guard API v1.0.5**](../README.md) +[**React Action Guard API v2.0.0**](../README.md) *** diff --git a/packages/docs/src/packages/react-action-guard/api/typedoc/interfaces/AmplitudeConfig.md b/packages/docs/src/packages/react-action-guard/api/typedoc/interfaces/AmplitudeConfig.md index 944cb7f2..c7a9d4c8 100644 --- a/packages/docs/src/packages/react-action-guard/api/typedoc/interfaces/AmplitudeConfig.md +++ b/packages/docs/src/packages/react-action-guard/api/typedoc/interfaces/AmplitudeConfig.md @@ -1,4 +1,4 @@ -[**React Action Guard API v1.0.5**](../README.md) +[**React Action Guard API v2.0.0**](../README.md) *** diff --git a/packages/docs/src/packages/react-action-guard/api/typedoc/interfaces/BlockerConfig.md b/packages/docs/src/packages/react-action-guard/api/typedoc/interfaces/BlockerConfig.md index 626692fe..3a88d2b3 100644 --- a/packages/docs/src/packages/react-action-guard/api/typedoc/interfaces/BlockerConfig.md +++ b/packages/docs/src/packages/react-action-guard/api/typedoc/interfaces/BlockerConfig.md @@ -1,4 +1,4 @@ -[**React Action Guard API v1.0.5**](../README.md) +[**React Action Guard API v2.0.0**](../README.md) *** @@ -59,9 +59,11 @@ Defined in: [store/uiBlockingStore.types.ts:15](https://github.com/okyrychenko-d > `optional` **timeout?**: `number` -Defined in: [store/uiBlockingStore.types.ts:17](https://github.com/okyrychenko-dev/react-action-guard/blob/main/packages/core/src/store/uiBlockingStore.types.ts#L17) +Defined in: [store/uiBlockingStore.types.ts:21](https://github.com/okyrychenko-dev/react-action-guard/blob/main/packages/core/src/store/uiBlockingStore.types.ts#L21) -Automatically remove the blocker after N milliseconds +Remove after a positive finite delay in milliseconds, using bounded timer chunks. +Omitted, zero and finite negative values disable expiration. Invalid/nonfinite values +or a deadline beyond Number.MAX_SAFE_INTEGER throw RangeError before mutation. *** @@ -69,7 +71,7 @@ Automatically remove the blocker after N milliseconds > `optional` **onTimeout?**: (`blockerId`) => `void` -Defined in: [store/uiBlockingStore.types.ts:19](https://github.com/okyrychenko-dev/react-action-guard/blob/main/packages/core/src/store/uiBlockingStore.types.ts#L19) +Defined in: [store/uiBlockingStore.types.ts:23](https://github.com/okyrychenko-dev/react-action-guard/blob/main/packages/core/src/store/uiBlockingStore.types.ts#L23) Callback invoked when the blocker is automatically removed due to timeout diff --git a/packages/docs/src/packages/react-action-guard/api/typedoc/interfaces/BlockerConfigTyped.md b/packages/docs/src/packages/react-action-guard/api/typedoc/interfaces/BlockerConfigTyped.md index 28fe0ec9..2a9bc1f0 100644 --- a/packages/docs/src/packages/react-action-guard/api/typedoc/interfaces/BlockerConfigTyped.md +++ b/packages/docs/src/packages/react-action-guard/api/typedoc/interfaces/BlockerConfigTyped.md @@ -1,4 +1,4 @@ -[**React Action Guard API v1.0.5**](../README.md) +[**React Action Guard API v2.0.0**](../README.md) *** diff --git a/packages/docs/src/packages/react-action-guard/api/typedoc/interfaces/BlockerInfo.md b/packages/docs/src/packages/react-action-guard/api/typedoc/interfaces/BlockerInfo.md index ffcc1613..ec5286ef 100644 --- a/packages/docs/src/packages/react-action-guard/api/typedoc/interfaces/BlockerInfo.md +++ b/packages/docs/src/packages/react-action-guard/api/typedoc/interfaces/BlockerInfo.md @@ -1,4 +1,4 @@ -[**React Action Guard API v1.0.5**](../README.md) +[**React Action Guard API v2.0.0**](../README.md) *** @@ -6,7 +6,7 @@ # Interface: BlockerInfo -Defined in: [store/uiBlockingStore.types.ts:28](https://github.com/okyrychenko-dev/react-action-guard/blob/main/packages/core/src/store/uiBlockingStore.types.ts#L28) +Defined in: [store/uiBlockingStore.types.ts:32](https://github.com/okyrychenko-dev/react-action-guard/blob/main/packages/core/src/store/uiBlockingStore.types.ts#L32) Complete blocker information including its unique identifier. @@ -20,7 +20,7 @@ Complete blocker information including its unique identifier. > `readonly` **id**: `string` -Defined in: [store/uiBlockingStore.types.ts:29](https://github.com/okyrychenko-dev/react-action-guard/blob/main/packages/core/src/store/uiBlockingStore.types.ts#L29) +Defined in: [store/uiBlockingStore.types.ts:33](https://github.com/okyrychenko-dev/react-action-guard/blob/main/packages/core/src/store/uiBlockingStore.types.ts#L33) *** @@ -28,7 +28,7 @@ Defined in: [store/uiBlockingStore.types.ts:29](https://github.com/okyrychenko-d > `readonly` **scope**: `string` \| readonly `string`[] -Defined in: [store/uiBlockingStore.types.ts:30](https://github.com/okyrychenko-dev/react-action-guard/blob/main/packages/core/src/store/uiBlockingStore.types.ts#L30) +Defined in: [store/uiBlockingStore.types.ts:34](https://github.com/okyrychenko-dev/react-action-guard/blob/main/packages/core/src/store/uiBlockingStore.types.ts#L34) *** @@ -36,7 +36,7 @@ Defined in: [store/uiBlockingStore.types.ts:30](https://github.com/okyrychenko-d > `readonly` **reason**: `string` -Defined in: [store/uiBlockingStore.types.ts:31](https://github.com/okyrychenko-dev/react-action-guard/blob/main/packages/core/src/store/uiBlockingStore.types.ts#L31) +Defined in: [store/uiBlockingStore.types.ts:35](https://github.com/okyrychenko-dev/react-action-guard/blob/main/packages/core/src/store/uiBlockingStore.types.ts#L35) *** @@ -44,7 +44,7 @@ Defined in: [store/uiBlockingStore.types.ts:31](https://github.com/okyrychenko-d > `readonly` **priority**: `number` -Defined in: [store/uiBlockingStore.types.ts:32](https://github.com/okyrychenko-dev/react-action-guard/blob/main/packages/core/src/store/uiBlockingStore.types.ts#L32) +Defined in: [store/uiBlockingStore.types.ts:36](https://github.com/okyrychenko-dev/react-action-guard/blob/main/packages/core/src/store/uiBlockingStore.types.ts#L36) *** @@ -52,7 +52,7 @@ Defined in: [store/uiBlockingStore.types.ts:32](https://github.com/okyrychenko-d > `readonly` **timestamp**: `number` -Defined in: [store/uiBlockingStore.types.ts:33](https://github.com/okyrychenko-dev/react-action-guard/blob/main/packages/core/src/store/uiBlockingStore.types.ts#L33) +Defined in: [store/uiBlockingStore.types.ts:37](https://github.com/okyrychenko-dev/react-action-guard/blob/main/packages/core/src/store/uiBlockingStore.types.ts#L37) *** @@ -60,7 +60,7 @@ Defined in: [store/uiBlockingStore.types.ts:33](https://github.com/okyrychenko-d > `readonly` `optional` **timeout?**: `number` -Defined in: [store/uiBlockingStore.types.ts:34](https://github.com/okyrychenko-dev/react-action-guard/blob/main/packages/core/src/store/uiBlockingStore.types.ts#L34) +Defined in: [store/uiBlockingStore.types.ts:38](https://github.com/okyrychenko-dev/react-action-guard/blob/main/packages/core/src/store/uiBlockingStore.types.ts#L38) *** @@ -68,7 +68,7 @@ Defined in: [store/uiBlockingStore.types.ts:34](https://github.com/okyrychenko-d > `readonly` `optional` **onTimeout?**: (`blockerId`) => `void` -Defined in: [store/uiBlockingStore.types.ts:35](https://github.com/okyrychenko-dev/react-action-guard/blob/main/packages/core/src/store/uiBlockingStore.types.ts#L35) +Defined in: [store/uiBlockingStore.types.ts:39](https://github.com/okyrychenko-dev/react-action-guard/blob/main/packages/core/src/store/uiBlockingStore.types.ts#L39) #### Parameters diff --git a/packages/docs/src/packages/react-action-guard/api/typedoc/interfaces/BlockingLifecycle.md b/packages/docs/src/packages/react-action-guard/api/typedoc/interfaces/BlockingLifecycle.md index 79a87c68..b2b5f5b7 100644 --- a/packages/docs/src/packages/react-action-guard/api/typedoc/interfaces/BlockingLifecycle.md +++ b/packages/docs/src/packages/react-action-guard/api/typedoc/interfaces/BlockingLifecycle.md @@ -1,4 +1,4 @@ -[**React Action Guard API v1.0.5**](../README.md) +[**React Action Guard API v2.0.0**](../README.md) *** diff --git a/packages/docs/src/packages/react-action-guard/api/typedoc/interfaces/BlockingLifecycleObservation.md b/packages/docs/src/packages/react-action-guard/api/typedoc/interfaces/BlockingLifecycleObservation.md index fc97f006..885f0ce7 100644 --- a/packages/docs/src/packages/react-action-guard/api/typedoc/interfaces/BlockingLifecycleObservation.md +++ b/packages/docs/src/packages/react-action-guard/api/typedoc/interfaces/BlockingLifecycleObservation.md @@ -1,4 +1,4 @@ -[**React Action Guard API v1.0.5**](../README.md) +[**React Action Guard API v2.0.0**](../README.md) *** diff --git a/packages/docs/src/packages/react-action-guard/api/typedoc/interfaces/BlockingSchedule.md b/packages/docs/src/packages/react-action-guard/api/typedoc/interfaces/BlockingSchedule.md index 28e4d634..80af9f62 100644 --- a/packages/docs/src/packages/react-action-guard/api/typedoc/interfaces/BlockingSchedule.md +++ b/packages/docs/src/packages/react-action-guard/api/typedoc/interfaces/BlockingSchedule.md @@ -1,4 +1,4 @@ -[**React Action Guard API v1.0.5**](../README.md) +[**React Action Guard API v2.0.0**](../README.md) *** @@ -6,7 +6,7 @@ # Interface: BlockingSchedule -Defined in: [hooks/useScheduledBlocker/useScheduledBlocker.types.ts:12](https://github.com/okyrychenko-dev/react-action-guard/blob/main/packages/core/src/hooks/useScheduledBlocker/useScheduledBlocker.types.ts#L12) +Defined in: [hooks/useScheduledBlocker/useScheduledBlocker.types.ts:16](https://github.com/okyrychenko-dev/react-action-guard/blob/main/packages/core/src/hooks/useScheduledBlocker/useScheduledBlocker.types.ts#L16) Schedule configuration for time-based blocking. @@ -14,7 +14,11 @@ You can specify the blocking period in two ways: 1. start + duration: Block for a specific duration after start time 2. start + end: Block between start and end times -Note: If both duration and end are provided, duration takes precedence. +Windows are half-open [start, end). Omit both duration and end for indefinite blocking. +Zero duration or equal bounds are empty and emit no schedule notifications. +Every supplied bound must be valid, even when duration takes precedence over end. +Negative/nonfinite duration, invalid dates, end before start and calculated end +outside the JavaScript Date range cancel the schedule with a development warning. ## Properties @@ -22,7 +26,7 @@ Note: If both duration and end are provided, duration takes precedence. > **start**: `string` \| `number` \| `Date` -Defined in: [hooks/useScheduledBlocker/useScheduledBlocker.types.ts:14](https://github.com/okyrychenko-dev/react-action-guard/blob/main/packages/core/src/hooks/useScheduledBlocker/useScheduledBlocker.types.ts#L14) +Defined in: [hooks/useScheduledBlocker/useScheduledBlocker.types.ts:18](https://github.com/okyrychenko-dev/react-action-guard/blob/main/packages/core/src/hooks/useScheduledBlocker/useScheduledBlocker.types.ts#L18) Start time as ISO string, Date object, or timestamp @@ -32,7 +36,7 @@ Start time as ISO string, Date object, or timestamp > `optional` **end?**: `string` \| `number` \| `Date` -Defined in: [hooks/useScheduledBlocker/useScheduledBlocker.types.ts:16](https://github.com/okyrychenko-dev/react-action-guard/blob/main/packages/core/src/hooks/useScheduledBlocker/useScheduledBlocker.types.ts#L16) +Defined in: [hooks/useScheduledBlocker/useScheduledBlocker.types.ts:20](https://github.com/okyrychenko-dev/react-action-guard/blob/main/packages/core/src/hooks/useScheduledBlocker/useScheduledBlocker.types.ts#L20) Optional end time as ISO string, Date object, or timestamp @@ -42,6 +46,6 @@ Optional end time as ISO string, Date object, or timestamp > `optional` **duration?**: `number` -Defined in: [hooks/useScheduledBlocker/useScheduledBlocker.types.ts:18](https://github.com/okyrychenko-dev/react-action-guard/blob/main/packages/core/src/hooks/useScheduledBlocker/useScheduledBlocker.types.ts#L18) +Defined in: [hooks/useScheduledBlocker/useScheduledBlocker.types.ts:22](https://github.com/okyrychenko-dev/react-action-guard/blob/main/packages/core/src/hooks/useScheduledBlocker/useScheduledBlocker.types.ts#L22) Duration in milliseconds (takes precedence over end if both provided) diff --git a/packages/docs/src/packages/react-action-guard/api/typedoc/interfaces/ConditionalBlockerConfig.md b/packages/docs/src/packages/react-action-guard/api/typedoc/interfaces/ConditionalBlockerConfig.md index 2f4f47a6..3538d547 100644 --- a/packages/docs/src/packages/react-action-guard/api/typedoc/interfaces/ConditionalBlockerConfig.md +++ b/packages/docs/src/packages/react-action-guard/api/typedoc/interfaces/ConditionalBlockerConfig.md @@ -1,4 +1,4 @@ -[**React Action Guard API v1.0.5**](../README.md) +[**React Action Guard API v2.0.0**](../README.md) *** @@ -117,9 +117,11 @@ Defined in: [store/uiBlockingStore.types.ts:15](https://github.com/okyrychenko-d > `optional` **timeout?**: `number` -Defined in: [store/uiBlockingStore.types.ts:17](https://github.com/okyrychenko-dev/react-action-guard/blob/main/packages/core/src/store/uiBlockingStore.types.ts#L17) +Defined in: [store/uiBlockingStore.types.ts:21](https://github.com/okyrychenko-dev/react-action-guard/blob/main/packages/core/src/store/uiBlockingStore.types.ts#L21) -Automatically remove the blocker after N milliseconds +Remove after a positive finite delay in milliseconds, using bounded timer chunks. +Omitted, zero and finite negative values disable expiration. Invalid/nonfinite values +or a deadline beyond Number.MAX_SAFE_INTEGER throw RangeError before mutation. #### Inherited from @@ -131,7 +133,7 @@ Automatically remove the blocker after N milliseconds > `optional` **onTimeout?**: (`blockerId`) => `void` -Defined in: [store/uiBlockingStore.types.ts:19](https://github.com/okyrychenko-dev/react-action-guard/blob/main/packages/core/src/store/uiBlockingStore.types.ts#L19) +Defined in: [store/uiBlockingStore.types.ts:23](https://github.com/okyrychenko-dev/react-action-guard/blob/main/packages/core/src/store/uiBlockingStore.types.ts#L23) Callback invoked when the blocker is automatically removed due to timeout diff --git a/packages/docs/src/packages/react-action-guard/api/typedoc/interfaces/ConfirmDialogConfig.md b/packages/docs/src/packages/react-action-guard/api/typedoc/interfaces/ConfirmDialogConfig.md index 7a9d0ca0..349bd2e5 100644 --- a/packages/docs/src/packages/react-action-guard/api/typedoc/interfaces/ConfirmDialogConfig.md +++ b/packages/docs/src/packages/react-action-guard/api/typedoc/interfaces/ConfirmDialogConfig.md @@ -1,4 +1,4 @@ -[**React Action Guard API v1.0.5**](../README.md) +[**React Action Guard API v2.0.0**](../README.md) *** diff --git a/packages/docs/src/packages/react-action-guard/api/typedoc/interfaces/ConfirmableBlockerConfig.md b/packages/docs/src/packages/react-action-guard/api/typedoc/interfaces/ConfirmableBlockerConfig.md index 23d070cd..4375f6af 100644 --- a/packages/docs/src/packages/react-action-guard/api/typedoc/interfaces/ConfirmableBlockerConfig.md +++ b/packages/docs/src/packages/react-action-guard/api/typedoc/interfaces/ConfirmableBlockerConfig.md @@ -1,4 +1,4 @@ -[**React Action Guard API v1.0.5**](../README.md) +[**React Action Guard API v2.0.0**](../README.md) *** @@ -137,9 +137,11 @@ Defined in: [store/uiBlockingStore.types.ts:15](https://github.com/okyrychenko-d > `optional` **timeout?**: `number` -Defined in: [store/uiBlockingStore.types.ts:17](https://github.com/okyrychenko-dev/react-action-guard/blob/main/packages/core/src/store/uiBlockingStore.types.ts#L17) +Defined in: [store/uiBlockingStore.types.ts:21](https://github.com/okyrychenko-dev/react-action-guard/blob/main/packages/core/src/store/uiBlockingStore.types.ts#L21) -Automatically remove the blocker after N milliseconds +Remove after a positive finite delay in milliseconds, using bounded timer chunks. +Omitted, zero and finite negative values disable expiration. Invalid/nonfinite values +or a deadline beyond Number.MAX_SAFE_INTEGER throw RangeError before mutation. #### Inherited from @@ -151,7 +153,7 @@ Automatically remove the blocker after N milliseconds > `optional` **onTimeout?**: (`blockerId`) => `void` -Defined in: [store/uiBlockingStore.types.ts:19](https://github.com/okyrychenko-dev/react-action-guard/blob/main/packages/core/src/store/uiBlockingStore.types.ts#L19) +Defined in: [store/uiBlockingStore.types.ts:23](https://github.com/okyrychenko-dev/react-action-guard/blob/main/packages/core/src/store/uiBlockingStore.types.ts#L23) Callback invoked when the blocker is automatically removed due to timeout diff --git a/packages/docs/src/packages/react-action-guard/api/typedoc/interfaces/CustomAnalyticsConfig.md b/packages/docs/src/packages/react-action-guard/api/typedoc/interfaces/CustomAnalyticsConfig.md index 26a88667..da258e3f 100644 --- a/packages/docs/src/packages/react-action-guard/api/typedoc/interfaces/CustomAnalyticsConfig.md +++ b/packages/docs/src/packages/react-action-guard/api/typedoc/interfaces/CustomAnalyticsConfig.md @@ -1,4 +1,4 @@ -[**React Action Guard API v1.0.5**](../README.md) +[**React Action Guard API v2.0.0**](../README.md) *** diff --git a/packages/docs/src/packages/react-action-guard/api/typedoc/interfaces/GoogleAnalyticsConfig.md b/packages/docs/src/packages/react-action-guard/api/typedoc/interfaces/GoogleAnalyticsConfig.md index 0b5bd6be..bd5b71ef 100644 --- a/packages/docs/src/packages/react-action-guard/api/typedoc/interfaces/GoogleAnalyticsConfig.md +++ b/packages/docs/src/packages/react-action-guard/api/typedoc/interfaces/GoogleAnalyticsConfig.md @@ -1,4 +1,4 @@ -[**React Action Guard API v1.0.5**](../README.md) +[**React Action Guard API v2.0.0**](../README.md) *** diff --git a/packages/docs/src/packages/react-action-guard/api/typedoc/interfaces/MiddlewareContext.md b/packages/docs/src/packages/react-action-guard/api/typedoc/interfaces/MiddlewareContext.md index 956eaf1e..e4d04b7c 100644 --- a/packages/docs/src/packages/react-action-guard/api/typedoc/interfaces/MiddlewareContext.md +++ b/packages/docs/src/packages/react-action-guard/api/typedoc/interfaces/MiddlewareContext.md @@ -1,4 +1,4 @@ -[**React Action Guard API v1.0.5**](../README.md) +[**React Action Guard API v2.0.0**](../README.md) *** @@ -10,11 +10,19 @@ Defined in: [middleware/middleware.types.ts:7](https://github.com/okyrychenko-de ## Properties +### registration? + +> `optional` **registration?**: `object` + +Defined in: [middleware/middleware.types.ts:8](https://github.com/okyrychenko-dev/react-action-guard/blob/main/packages/core/src/middleware/middleware.types.ts#L8) + +*** + ### action > **action**: [`BlockingAction`](../type-aliases/BlockingAction.md) -Defined in: [middleware/middleware.types.ts:8](https://github.com/okyrychenko-dev/react-action-guard/blob/main/packages/core/src/middleware/middleware.types.ts#L8) +Defined in: [middleware/middleware.types.ts:9](https://github.com/okyrychenko-dev/react-action-guard/blob/main/packages/core/src/middleware/middleware.types.ts#L9) *** @@ -22,7 +30,7 @@ Defined in: [middleware/middleware.types.ts:8](https://github.com/okyrychenko-de > **blockerId**: `string` -Defined in: [middleware/middleware.types.ts:9](https://github.com/okyrychenko-dev/react-action-guard/blob/main/packages/core/src/middleware/middleware.types.ts#L9) +Defined in: [middleware/middleware.types.ts:10](https://github.com/okyrychenko-dev/react-action-guard/blob/main/packages/core/src/middleware/middleware.types.ts#L10) *** @@ -30,7 +38,7 @@ Defined in: [middleware/middleware.types.ts:9](https://github.com/okyrychenko-de > `optional` **config?**: [`BlockerConfig`](BlockerConfig.md) -Defined in: [middleware/middleware.types.ts:10](https://github.com/okyrychenko-dev/react-action-guard/blob/main/packages/core/src/middleware/middleware.types.ts#L10) +Defined in: [middleware/middleware.types.ts:11](https://github.com/okyrychenko-dev/react-action-guard/blob/main/packages/core/src/middleware/middleware.types.ts#L11) *** @@ -38,7 +46,7 @@ Defined in: [middleware/middleware.types.ts:10](https://github.com/okyrychenko-d > **timestamp**: `number` -Defined in: [middleware/middleware.types.ts:11](https://github.com/okyrychenko-dev/react-action-guard/blob/main/packages/core/src/middleware/middleware.types.ts#L11) +Defined in: [middleware/middleware.types.ts:12](https://github.com/okyrychenko-dev/react-action-guard/blob/main/packages/core/src/middleware/middleware.types.ts#L12) *** @@ -46,7 +54,7 @@ Defined in: [middleware/middleware.types.ts:11](https://github.com/okyrychenko-d > `optional` **prevState?**: [`BlockerConfig`](BlockerConfig.md) -Defined in: [middleware/middleware.types.ts:12](https://github.com/okyrychenko-dev/react-action-guard/blob/main/packages/core/src/middleware/middleware.types.ts#L12) +Defined in: [middleware/middleware.types.ts:13](https://github.com/okyrychenko-dev/react-action-guard/blob/main/packages/core/src/middleware/middleware.types.ts#L13) *** @@ -54,7 +62,7 @@ Defined in: [middleware/middleware.types.ts:12](https://github.com/okyrychenko-d > `optional` **scope?**: `string` -Defined in: [middleware/middleware.types.ts:13](https://github.com/okyrychenko-dev/react-action-guard/blob/main/packages/core/src/middleware/middleware.types.ts#L13) +Defined in: [middleware/middleware.types.ts:14](https://github.com/okyrychenko-dev/react-action-guard/blob/main/packages/core/src/middleware/middleware.types.ts#L14) *** @@ -62,4 +70,4 @@ Defined in: [middleware/middleware.types.ts:13](https://github.com/okyrychenko-d > `optional` **count?**: `number` -Defined in: [middleware/middleware.types.ts:14](https://github.com/okyrychenko-dev/react-action-guard/blob/main/packages/core/src/middleware/middleware.types.ts#L14) +Defined in: [middleware/middleware.types.ts:15](https://github.com/okyrychenko-dev/react-action-guard/blob/main/packages/core/src/middleware/middleware.types.ts#L15) diff --git a/packages/docs/src/packages/react-action-guard/api/typedoc/interfaces/MixpanelConfig.md b/packages/docs/src/packages/react-action-guard/api/typedoc/interfaces/MixpanelConfig.md index c2c2a6c5..885cdf94 100644 --- a/packages/docs/src/packages/react-action-guard/api/typedoc/interfaces/MixpanelConfig.md +++ b/packages/docs/src/packages/react-action-guard/api/typedoc/interfaces/MixpanelConfig.md @@ -1,4 +1,4 @@ -[**React Action Guard API v1.0.5**](../README.md) +[**React Action Guard API v2.0.0**](../README.md) *** diff --git a/packages/docs/src/packages/react-action-guard/api/typedoc/interfaces/PerformanceConfig.md b/packages/docs/src/packages/react-action-guard/api/typedoc/interfaces/PerformanceConfig.md index 128ace62..93eb8ae5 100644 --- a/packages/docs/src/packages/react-action-guard/api/typedoc/interfaces/PerformanceConfig.md +++ b/packages/docs/src/packages/react-action-guard/api/typedoc/interfaces/PerformanceConfig.md @@ -1,4 +1,4 @@ -[**React Action Guard API v1.0.5**](../README.md) +[**React Action Guard API v2.0.0**](../README.md) *** @@ -6,7 +6,7 @@ # Interface: PerformanceConfig -Defined in: [middleware/performanceMiddleware.types.ts:1](https://github.com/okyrychenko-dev/react-action-guard/blob/main/packages/core/src/middleware/performanceMiddleware.types.ts#L1) +Defined in: [middleware/performanceMiddleware.types.ts:3](https://github.com/okyrychenko-dev/react-action-guard/blob/main/packages/core/src/middleware/performanceMiddleware.types.ts#L3) ## Properties @@ -14,7 +14,7 @@ Defined in: [middleware/performanceMiddleware.types.ts:1](https://github.com/oky > `optional` **slowBlockThreshold?**: `number` -Defined in: [middleware/performanceMiddleware.types.ts:2](https://github.com/okyrychenko-dev/react-action-guard/blob/main/packages/core/src/middleware/performanceMiddleware.types.ts#L2) +Defined in: [middleware/performanceMiddleware.types.ts:4](https://github.com/okyrychenko-dev/react-action-guard/blob/main/packages/core/src/middleware/performanceMiddleware.types.ts#L4) *** @@ -22,7 +22,7 @@ Defined in: [middleware/performanceMiddleware.types.ts:2](https://github.com/oky > `optional` **onSlowBlock?**: (`blockerId`, `duration`) => `void` -Defined in: [middleware/performanceMiddleware.types.ts:3](https://github.com/okyrychenko-dev/react-action-guard/blob/main/packages/core/src/middleware/performanceMiddleware.types.ts#L3) +Defined in: [middleware/performanceMiddleware.types.ts:5](https://github.com/okyrychenko-dev/react-action-guard/blob/main/packages/core/src/middleware/performanceMiddleware.types.ts#L5) #### Parameters diff --git a/packages/docs/src/packages/react-action-guard/api/typedoc/interfaces/ScheduledBlockerConfig.md b/packages/docs/src/packages/react-action-guard/api/typedoc/interfaces/ScheduledBlockerConfig.md index 92c36cfa..757becf2 100644 --- a/packages/docs/src/packages/react-action-guard/api/typedoc/interfaces/ScheduledBlockerConfig.md +++ b/packages/docs/src/packages/react-action-guard/api/typedoc/interfaces/ScheduledBlockerConfig.md @@ -1,4 +1,4 @@ -[**React Action Guard API v1.0.5**](../README.md) +[**React Action Guard API v2.0.0**](../README.md) *** @@ -6,7 +6,7 @@ # Interface: ScheduledBlockerConfig -Defined in: [hooks/useScheduledBlocker/useScheduledBlocker.types.ts:24](https://github.com/okyrychenko-dev/react-action-guard/blob/main/packages/core/src/hooks/useScheduledBlocker/useScheduledBlocker.types.ts#L24) +Defined in: [hooks/useScheduledBlocker/useScheduledBlocker.types.ts:28](https://github.com/okyrychenko-dev/react-action-guard/blob/main/packages/core/src/hooks/useScheduledBlocker/useScheduledBlocker.types.ts#L28) Configuration for scheduled blocker hook @@ -20,7 +20,7 @@ Configuration for scheduled blocker hook > **schedule**: [`BlockingSchedule`](BlockingSchedule.md) -Defined in: [hooks/useScheduledBlocker/useScheduledBlocker.types.ts:26](https://github.com/okyrychenko-dev/react-action-guard/blob/main/packages/core/src/hooks/useScheduledBlocker/useScheduledBlocker.types.ts#L26) +Defined in: [hooks/useScheduledBlocker/useScheduledBlocker.types.ts:30](https://github.com/okyrychenko-dev/react-action-guard/blob/main/packages/core/src/hooks/useScheduledBlocker/useScheduledBlocker.types.ts#L30) Schedule defining when blocking should be active @@ -30,7 +30,7 @@ Schedule defining when blocking should be active > `optional` **onScheduleStart?**: `VoidFunction` -Defined in: [hooks/useScheduledBlocker/useScheduledBlocker.types.ts:28](https://github.com/okyrychenko-dev/react-action-guard/blob/main/packages/core/src/hooks/useScheduledBlocker/useScheduledBlocker.types.ts#L28) +Defined in: [hooks/useScheduledBlocker/useScheduledBlocker.types.ts:32](https://github.com/okyrychenko-dev/react-action-guard/blob/main/packages/core/src/hooks/useScheduledBlocker/useScheduledBlocker.types.ts#L32) Optional callback to execute when the blocking schedule starts @@ -40,7 +40,7 @@ Optional callback to execute when the blocking schedule starts > `optional` **onScheduleEnd?**: `VoidFunction` -Defined in: [hooks/useScheduledBlocker/useScheduledBlocker.types.ts:30](https://github.com/okyrychenko-dev/react-action-guard/blob/main/packages/core/src/hooks/useScheduledBlocker/useScheduledBlocker.types.ts#L30) +Defined in: [hooks/useScheduledBlocker/useScheduledBlocker.types.ts:34](https://github.com/okyrychenko-dev/react-action-guard/blob/main/packages/core/src/hooks/useScheduledBlocker/useScheduledBlocker.types.ts#L34) Optional callback to execute when the blocking schedule ends @@ -100,9 +100,11 @@ Defined in: [store/uiBlockingStore.types.ts:15](https://github.com/okyrychenko-d > `optional` **timeout?**: `number` -Defined in: [store/uiBlockingStore.types.ts:17](https://github.com/okyrychenko-dev/react-action-guard/blob/main/packages/core/src/store/uiBlockingStore.types.ts#L17) +Defined in: [store/uiBlockingStore.types.ts:21](https://github.com/okyrychenko-dev/react-action-guard/blob/main/packages/core/src/store/uiBlockingStore.types.ts#L21) -Automatically remove the blocker after N milliseconds +Remove after a positive finite delay in milliseconds, using bounded timer chunks. +Omitted, zero and finite negative values disable expiration. Invalid/nonfinite values +or a deadline beyond Number.MAX_SAFE_INTEGER throw RangeError before mutation. #### Inherited from @@ -114,7 +116,7 @@ Automatically remove the blocker after N milliseconds > `optional` **onTimeout?**: (`blockerId`) => `void` -Defined in: [store/uiBlockingStore.types.ts:19](https://github.com/okyrychenko-dev/react-action-guard/blob/main/packages/core/src/store/uiBlockingStore.types.ts#L19) +Defined in: [store/uiBlockingStore.types.ts:23](https://github.com/okyrychenko-dev/react-action-guard/blob/main/packages/core/src/store/uiBlockingStore.types.ts#L23) Callback invoked when the blocker is automatically removed due to timeout diff --git a/packages/docs/src/packages/react-action-guard/api/typedoc/interfaces/TypedHooks.md b/packages/docs/src/packages/react-action-guard/api/typedoc/interfaces/TypedHooks.md index 35d0bbcc..f3735a49 100644 --- a/packages/docs/src/packages/react-action-guard/api/typedoc/interfaces/TypedHooks.md +++ b/packages/docs/src/packages/react-action-guard/api/typedoc/interfaces/TypedHooks.md @@ -1,4 +1,4 @@ -[**React Action Guard API v1.0.5**](../README.md) +[**React Action Guard API v2.0.0**](../README.md) *** diff --git a/packages/docs/src/packages/react-action-guard/api/typedoc/interfaces/UIBlockingProviderProps.md b/packages/docs/src/packages/react-action-guard/api/typedoc/interfaces/UIBlockingProviderProps.md index 24edc5b4..e0bdcaa8 100644 --- a/packages/docs/src/packages/react-action-guard/api/typedoc/interfaces/UIBlockingProviderProps.md +++ b/packages/docs/src/packages/react-action-guard/api/typedoc/interfaces/UIBlockingProviderProps.md @@ -1,4 +1,4 @@ -[**React Action Guard API v1.0.5**](../README.md) +[**React Action Guard API v2.0.0**](../README.md) *** diff --git a/packages/docs/src/packages/react-action-guard/api/typedoc/interfaces/UIBlockingStoreActions.md b/packages/docs/src/packages/react-action-guard/api/typedoc/interfaces/UIBlockingStoreActions.md index 26231632..98ad778d 100644 --- a/packages/docs/src/packages/react-action-guard/api/typedoc/interfaces/UIBlockingStoreActions.md +++ b/packages/docs/src/packages/react-action-guard/api/typedoc/interfaces/UIBlockingStoreActions.md @@ -1,4 +1,4 @@ -[**React Action Guard API v1.0.5**](../README.md) +[**React Action Guard API v2.0.0**](../README.md) *** @@ -6,7 +6,7 @@ # Interface: UIBlockingStoreActions -Defined in: [store/uiBlockingStore.types.ts:49](https://github.com/okyrychenko-dev/react-action-guard/blob/main/packages/core/src/store/uiBlockingStore.types.ts#L49) +Defined in: [store/uiBlockingStore.types.ts:53](https://github.com/okyrychenko-dev/react-action-guard/blob/main/packages/core/src/store/uiBlockingStore.types.ts#L53) All available actions for managing UI blocking state. @@ -20,7 +20,7 @@ All available actions for managing UI blocking state. > **addBlocker**: (`id`, `config?`) => `void` -Defined in: [store/uiBlockingStore.types.ts:50](https://github.com/okyrychenko-dev/react-action-guard/blob/main/packages/core/src/store/uiBlockingStore.types.ts#L50) +Defined in: [store/uiBlockingStore.types.ts:54](https://github.com/okyrychenko-dev/react-action-guard/blob/main/packages/core/src/store/uiBlockingStore.types.ts#L54) #### Parameters @@ -42,7 +42,7 @@ Defined in: [store/uiBlockingStore.types.ts:50](https://github.com/okyrychenko-d > **updateBlocker**: (`id`, `config?`) => `void` -Defined in: [store/uiBlockingStore.types.ts:51](https://github.com/okyrychenko-dev/react-action-guard/blob/main/packages/core/src/store/uiBlockingStore.types.ts#L51) +Defined in: [store/uiBlockingStore.types.ts:55](https://github.com/okyrychenko-dev/react-action-guard/blob/main/packages/core/src/store/uiBlockingStore.types.ts#L55) #### Parameters @@ -64,7 +64,7 @@ Defined in: [store/uiBlockingStore.types.ts:51](https://github.com/okyrychenko-d > **removeBlocker**: (`id`) => `void` -Defined in: [store/uiBlockingStore.types.ts:54](https://github.com/okyrychenko-dev/react-action-guard/blob/main/packages/core/src/store/uiBlockingStore.types.ts#L54) +Defined in: [store/uiBlockingStore.types.ts:58](https://github.com/okyrychenko-dev/react-action-guard/blob/main/packages/core/src/store/uiBlockingStore.types.ts#L58) #### Parameters @@ -82,7 +82,7 @@ Defined in: [store/uiBlockingStore.types.ts:54](https://github.com/okyrychenko-d > **isBlocked**: (`scope?`) => `boolean` -Defined in: [store/uiBlockingStore.types.ts:55](https://github.com/okyrychenko-dev/react-action-guard/blob/main/packages/core/src/store/uiBlockingStore.types.ts#L55) +Defined in: [store/uiBlockingStore.types.ts:59](https://github.com/okyrychenko-dev/react-action-guard/blob/main/packages/core/src/store/uiBlockingStore.types.ts#L59) #### Parameters @@ -100,7 +100,7 @@ Defined in: [store/uiBlockingStore.types.ts:55](https://github.com/okyrychenko-d > **getBlockingInfo**: (`scope`) => readonly `Readonly`\<[`BlockerInfo`](BlockerInfo.md)\>[] -Defined in: [store/uiBlockingStore.types.ts:56](https://github.com/okyrychenko-dev/react-action-guard/blob/main/packages/core/src/store/uiBlockingStore.types.ts#L56) +Defined in: [store/uiBlockingStore.types.ts:60](https://github.com/okyrychenko-dev/react-action-guard/blob/main/packages/core/src/store/uiBlockingStore.types.ts#L60) #### Parameters @@ -118,7 +118,7 @@ readonly `Readonly`\<[`BlockerInfo`](BlockerInfo.md)\>[] > **clearAllBlockers**: `VoidFunction` -Defined in: [store/uiBlockingStore.types.ts:57](https://github.com/okyrychenko-dev/react-action-guard/blob/main/packages/core/src/store/uiBlockingStore.types.ts#L57) +Defined in: [store/uiBlockingStore.types.ts:61](https://github.com/okyrychenko-dev/react-action-guard/blob/main/packages/core/src/store/uiBlockingStore.types.ts#L61) *** @@ -126,7 +126,7 @@ Defined in: [store/uiBlockingStore.types.ts:57](https://github.com/okyrychenko-d > **clearBlockersForScope**: (`scope`) => `void` -Defined in: [store/uiBlockingStore.types.ts:58](https://github.com/okyrychenko-dev/react-action-guard/blob/main/packages/core/src/store/uiBlockingStore.types.ts#L58) +Defined in: [store/uiBlockingStore.types.ts:62](https://github.com/okyrychenko-dev/react-action-guard/blob/main/packages/core/src/store/uiBlockingStore.types.ts#L62) #### Parameters @@ -144,7 +144,7 @@ Defined in: [store/uiBlockingStore.types.ts:58](https://github.com/okyrychenko-d > **observeBlockingEvents**: (`observer`) => `VoidFunction` -Defined in: [store/uiBlockingStore.types.ts:60](https://github.com/okyrychenko-dev/react-action-guard/blob/main/packages/core/src/store/uiBlockingStore.types.ts#L60) +Defined in: [store/uiBlockingStore.types.ts:64](https://github.com/okyrychenko-dev/react-action-guard/blob/main/packages/core/src/store/uiBlockingStore.types.ts#L64) Observe lifecycle transitions through an anonymous, ownership-safe lease. diff --git a/packages/docs/src/packages/react-action-guard/api/typedoc/interfaces/UIBlockingStoreState.md b/packages/docs/src/packages/react-action-guard/api/typedoc/interfaces/UIBlockingStoreState.md index 612aee8a..66e3b966 100644 --- a/packages/docs/src/packages/react-action-guard/api/typedoc/interfaces/UIBlockingStoreState.md +++ b/packages/docs/src/packages/react-action-guard/api/typedoc/interfaces/UIBlockingStoreState.md @@ -1,4 +1,4 @@ -[**React Action Guard API v1.0.5**](../README.md) +[**React Action Guard API v2.0.0**](../README.md) *** @@ -6,7 +6,7 @@ # Interface: UIBlockingStoreState -Defined in: [store/uiBlockingStore.types.ts:39](https://github.com/okyrychenko-dev/react-action-guard/blob/main/packages/core/src/store/uiBlockingStore.types.ts#L39) +Defined in: [store/uiBlockingStore.types.ts:43](https://github.com/okyrychenko-dev/react-action-guard/blob/main/packages/core/src/store/uiBlockingStore.types.ts#L43) Immutable projection published by the Zustand adapter. @@ -16,4 +16,4 @@ Immutable projection published by the Zustand adapter. > `readonly` **blockingSnapshot**: [`BlockingLifecycleSnapshot`](../type-aliases/BlockingLifecycleSnapshot.md) -Defined in: [store/uiBlockingStore.types.ts:40](https://github.com/okyrychenko-dev/react-action-guard/blob/main/packages/core/src/store/uiBlockingStore.types.ts#L40) +Defined in: [store/uiBlockingStore.types.ts:44](https://github.com/okyrychenko-dev/react-action-guard/blob/main/packages/core/src/store/uiBlockingStore.types.ts#L44) diff --git a/packages/docs/src/packages/react-action-guard/api/typedoc/interfaces/UseAsyncActionOptions.md b/packages/docs/src/packages/react-action-guard/api/typedoc/interfaces/UseAsyncActionOptions.md index e3c9ae60..420ad7b1 100644 --- a/packages/docs/src/packages/react-action-guard/api/typedoc/interfaces/UseAsyncActionOptions.md +++ b/packages/docs/src/packages/react-action-guard/api/typedoc/interfaces/UseAsyncActionOptions.md @@ -1,4 +1,4 @@ -[**React Action Guard API v1.0.5**](../README.md) +[**React Action Guard API v2.0.0**](../README.md) *** diff --git a/packages/docs/src/packages/react-action-guard/api/typedoc/interfaces/UseConfirmableBlockerReturn.md b/packages/docs/src/packages/react-action-guard/api/typedoc/interfaces/UseConfirmableBlockerReturn.md index 4ffc55c3..230d8a43 100644 --- a/packages/docs/src/packages/react-action-guard/api/typedoc/interfaces/UseConfirmableBlockerReturn.md +++ b/packages/docs/src/packages/react-action-guard/api/typedoc/interfaces/UseConfirmableBlockerReturn.md @@ -1,4 +1,4 @@ -[**React Action Guard API v1.0.5**](../README.md) +[**React Action Guard API v2.0.0**](../README.md) *** diff --git a/packages/docs/src/packages/react-action-guard/api/typedoc/type-aliases/AnalyticsConfig.md b/packages/docs/src/packages/react-action-guard/api/typedoc/type-aliases/AnalyticsConfig.md index 8d444ac6..243c2a63 100644 --- a/packages/docs/src/packages/react-action-guard/api/typedoc/type-aliases/AnalyticsConfig.md +++ b/packages/docs/src/packages/react-action-guard/api/typedoc/type-aliases/AnalyticsConfig.md @@ -1,4 +1,4 @@ -[**React Action Guard API v1.0.5**](../README.md) +[**React Action Guard API v2.0.0**](../README.md) *** diff --git a/packages/docs/src/packages/react-action-guard/api/typedoc/type-aliases/AnalyticsEventData.md b/packages/docs/src/packages/react-action-guard/api/typedoc/type-aliases/AnalyticsEventData.md index d8cc02b5..08058626 100644 --- a/packages/docs/src/packages/react-action-guard/api/typedoc/type-aliases/AnalyticsEventData.md +++ b/packages/docs/src/packages/react-action-guard/api/typedoc/type-aliases/AnalyticsEventData.md @@ -1,4 +1,4 @@ -[**React Action Guard API v1.0.5**](../README.md) +[**React Action Guard API v2.0.0**](../README.md) *** diff --git a/packages/docs/src/packages/react-action-guard/api/typedoc/type-aliases/AnalyticsProvider.md b/packages/docs/src/packages/react-action-guard/api/typedoc/type-aliases/AnalyticsProvider.md index 5d92af72..c7ab6b40 100644 --- a/packages/docs/src/packages/react-action-guard/api/typedoc/type-aliases/AnalyticsProvider.md +++ b/packages/docs/src/packages/react-action-guard/api/typedoc/type-aliases/AnalyticsProvider.md @@ -1,4 +1,4 @@ -[**React Action Guard API v1.0.5**](../README.md) +[**React Action Guard API v2.0.0**](../README.md) *** diff --git a/packages/docs/src/packages/react-action-guard/api/typedoc/type-aliases/BlockingAction.md b/packages/docs/src/packages/react-action-guard/api/typedoc/type-aliases/BlockingAction.md index cd0738f1..dce28f1a 100644 --- a/packages/docs/src/packages/react-action-guard/api/typedoc/type-aliases/BlockingAction.md +++ b/packages/docs/src/packages/react-action-guard/api/typedoc/type-aliases/BlockingAction.md @@ -1,4 +1,4 @@ -[**React Action Guard API v1.0.5**](../README.md) +[**React Action Guard API v2.0.0**](../README.md) *** diff --git a/packages/docs/src/packages/react-action-guard/api/typedoc/type-aliases/BlockingEvent.md b/packages/docs/src/packages/react-action-guard/api/typedoc/type-aliases/BlockingEvent.md index 3bc4f707..a6804d3e 100644 --- a/packages/docs/src/packages/react-action-guard/api/typedoc/type-aliases/BlockingEvent.md +++ b/packages/docs/src/packages/react-action-guard/api/typedoc/type-aliases/BlockingEvent.md @@ -1,4 +1,4 @@ -[**React Action Guard API v1.0.5**](../README.md) +[**React Action Guard API v2.0.0**](../README.md) *** diff --git a/packages/docs/src/packages/react-action-guard/api/typedoc/type-aliases/BlockingLifecycleSnapshot.md b/packages/docs/src/packages/react-action-guard/api/typedoc/type-aliases/BlockingLifecycleSnapshot.md index 12f1ead4..41914511 100644 --- a/packages/docs/src/packages/react-action-guard/api/typedoc/type-aliases/BlockingLifecycleSnapshot.md +++ b/packages/docs/src/packages/react-action-guard/api/typedoc/type-aliases/BlockingLifecycleSnapshot.md @@ -1,4 +1,4 @@ -[**React Action Guard API v1.0.5**](../README.md) +[**React Action Guard API v2.0.0**](../README.md) *** diff --git a/packages/docs/src/packages/react-action-guard/api/typedoc/type-aliases/DefaultScopes.md b/packages/docs/src/packages/react-action-guard/api/typedoc/type-aliases/DefaultScopes.md index beebbc2c..9ff1db30 100644 --- a/packages/docs/src/packages/react-action-guard/api/typedoc/type-aliases/DefaultScopes.md +++ b/packages/docs/src/packages/react-action-guard/api/typedoc/type-aliases/DefaultScopes.md @@ -1,4 +1,4 @@ -[**React Action Guard API v1.0.5**](../README.md) +[**React Action Guard API v2.0.0**](../README.md) *** diff --git a/packages/docs/src/packages/react-action-guard/api/typedoc/type-aliases/Middleware.md b/packages/docs/src/packages/react-action-guard/api/typedoc/type-aliases/Middleware.md index 1e144140..23ac6f30 100644 --- a/packages/docs/src/packages/react-action-guard/api/typedoc/type-aliases/Middleware.md +++ b/packages/docs/src/packages/react-action-guard/api/typedoc/type-aliases/Middleware.md @@ -1,4 +1,4 @@ -[**React Action Guard API v1.0.5**](../README.md) +[**React Action Guard API v2.0.0**](../README.md) *** @@ -8,7 +8,7 @@ > **Middleware** = (`context`) => `void` \| `Promise`\<`void`\> -Defined in: [middleware/middleware.types.ts:17](https://github.com/okyrychenko-dev/react-action-guard/blob/main/packages/core/src/middleware/middleware.types.ts#L17) +Defined in: [middleware/middleware.types.ts:18](https://github.com/okyrychenko-dev/react-action-guard/blob/main/packages/core/src/middleware/middleware.types.ts#L18) ## Parameters diff --git a/packages/docs/src/packages/react-action-guard/api/typedoc/type-aliases/Scope.md b/packages/docs/src/packages/react-action-guard/api/typedoc/type-aliases/Scope.md index 4b075480..78fcf029 100644 --- a/packages/docs/src/packages/react-action-guard/api/typedoc/type-aliases/Scope.md +++ b/packages/docs/src/packages/react-action-guard/api/typedoc/type-aliases/Scope.md @@ -1,4 +1,4 @@ -[**React Action Guard API v1.0.5**](../README.md) +[**React Action Guard API v2.0.0**](../README.md) *** diff --git a/packages/docs/src/packages/react-action-guard/api/typedoc/type-aliases/ScopeValue.md b/packages/docs/src/packages/react-action-guard/api/typedoc/type-aliases/ScopeValue.md index b61ae26d..1452f5dc 100644 --- a/packages/docs/src/packages/react-action-guard/api/typedoc/type-aliases/ScopeValue.md +++ b/packages/docs/src/packages/react-action-guard/api/typedoc/type-aliases/ScopeValue.md @@ -1,4 +1,4 @@ -[**React Action Guard API v1.0.5**](../README.md) +[**React Action Guard API v2.0.0**](../README.md) *** diff --git a/packages/docs/src/packages/react-action-guard/api/typedoc/type-aliases/UIBlockingStore.md b/packages/docs/src/packages/react-action-guard/api/typedoc/type-aliases/UIBlockingStore.md index 62c7f9cf..713a5742 100644 --- a/packages/docs/src/packages/react-action-guard/api/typedoc/type-aliases/UIBlockingStore.md +++ b/packages/docs/src/packages/react-action-guard/api/typedoc/type-aliases/UIBlockingStore.md @@ -1,4 +1,4 @@ -[**React Action Guard API v1.0.5**](../README.md) +[**React Action Guard API v2.0.0**](../README.md) *** @@ -8,7 +8,7 @@ > **UIBlockingStore** = [`UIBlockingStoreState`](../interfaces/UIBlockingStoreState.md) & [`UIBlockingStoreActions`](../interfaces/UIBlockingStoreActions.md) -Defined in: [store/uiBlockingStore.types.ts:69](https://github.com/okyrychenko-dev/react-action-guard/blob/main/packages/core/src/store/uiBlockingStore.types.ts#L69) +Defined in: [store/uiBlockingStore.types.ts:73](https://github.com/okyrychenko-dev/react-action-guard/blob/main/packages/core/src/store/uiBlockingStore.types.ts#L73) Complete UI blocking store type combining state and actions. diff --git a/packages/docs/src/packages/react-action-guard/api/typedoc/variables/DEFAULT_SCOPE.md b/packages/docs/src/packages/react-action-guard/api/typedoc/variables/DEFAULT_SCOPE.md index aa9fab17..ef5d00a6 100644 --- a/packages/docs/src/packages/react-action-guard/api/typedoc/variables/DEFAULT_SCOPE.md +++ b/packages/docs/src/packages/react-action-guard/api/typedoc/variables/DEFAULT_SCOPE.md @@ -1,4 +1,4 @@ -[**React Action Guard API v1.0.5**](../README.md) +[**React Action Guard API v2.0.0**](../README.md) *** diff --git a/packages/docs/src/packages/react-action-guard/api/typedoc/variables/uiBlockingStoreApi.md b/packages/docs/src/packages/react-action-guard/api/typedoc/variables/uiBlockingStoreApi.md index cf524295..2f7f1717 100644 --- a/packages/docs/src/packages/react-action-guard/api/typedoc/variables/uiBlockingStoreApi.md +++ b/packages/docs/src/packages/react-action-guard/api/typedoc/variables/uiBlockingStoreApi.md @@ -1,4 +1,4 @@ -[**React Action Guard API v1.0.5**](../README.md) +[**React Action Guard API v2.0.0**](../README.md) *** diff --git a/packages/docs/src/packages/react-action-guard/api/typedoc/variables/useBlocker.md b/packages/docs/src/packages/react-action-guard/api/typedoc/variables/useBlocker.md index 3444b8ab..3bcd29de 100644 --- a/packages/docs/src/packages/react-action-guard/api/typedoc/variables/useBlocker.md +++ b/packages/docs/src/packages/react-action-guard/api/typedoc/variables/useBlocker.md @@ -1,4 +1,4 @@ -[**React Action Guard API v1.0.5**](../README.md) +[**React Action Guard API v2.0.0**](../README.md) *** diff --git a/packages/docs/src/packages/react-action-guard/api/typedoc/variables/useIsInsideUIBlockingProvider.md b/packages/docs/src/packages/react-action-guard/api/typedoc/variables/useIsInsideUIBlockingProvider.md index 420a0625..131405ef 100644 --- a/packages/docs/src/packages/react-action-guard/api/typedoc/variables/useIsInsideUIBlockingProvider.md +++ b/packages/docs/src/packages/react-action-guard/api/typedoc/variables/useIsInsideUIBlockingProvider.md @@ -1,4 +1,4 @@ -[**React Action Guard API v1.0.5**](../README.md) +[**React Action Guard API v2.0.0**](../README.md) *** diff --git a/packages/docs/src/packages/react-action-guard/api/typedoc/variables/useOptionalUIBlockingContext.md b/packages/docs/src/packages/react-action-guard/api/typedoc/variables/useOptionalUIBlockingContext.md index 2120859e..43b7ec4f 100644 --- a/packages/docs/src/packages/react-action-guard/api/typedoc/variables/useOptionalUIBlockingContext.md +++ b/packages/docs/src/packages/react-action-guard/api/typedoc/variables/useOptionalUIBlockingContext.md @@ -1,4 +1,4 @@ -[**React Action Guard API v1.0.5**](../README.md) +[**React Action Guard API v2.0.0**](../README.md) *** diff --git a/packages/docs/src/packages/react-action-guard/api/typedoc/variables/useUIBlockingContext.md b/packages/docs/src/packages/react-action-guard/api/typedoc/variables/useUIBlockingContext.md index 75037e8f..153f1588 100644 --- a/packages/docs/src/packages/react-action-guard/api/typedoc/variables/useUIBlockingContext.md +++ b/packages/docs/src/packages/react-action-guard/api/typedoc/variables/useUIBlockingContext.md @@ -1,4 +1,4 @@ -[**React Action Guard API v1.0.5**](../README.md) +[**React Action Guard API v2.0.0**](../README.md) *** diff --git a/packages/router/CHANGELOG.md b/packages/router/CHANGELOG.md index cc4ddca3..ae72531b 100644 --- a/packages/router/CHANGELOG.md +++ b/packages/router/CHANGELOG.md @@ -1,5 +1,72 @@ # Changelog +## 1.0.0 + +[Release history](https://github.com/okyrychenko-dev/react-action-guard/releases/tag/@okyrychenko-dev/react-action-guard-router@1.0.0) + +### Minor Changes + +- b4945b0: Restore TanStack navigation blocking using native useBlocker. Confirmed transitions keep protection armed, failed confirmations deny navigation, and superseded or unmounted attempts cannot allow navigation. Require TanStack Router >=1.170.41 within v1, the verified compatibility floor, and use native unload protection with a one-shot bypass after accepted document navigation, avoiding a duplicate browser prompt. + + Invalidate pending confirmations when when or scope changes, including replacements that leave the computed blocking state active. + + Preserve pending confirmations when observer callbacks onBlock or onAllow change during a rerender. + + Compare scopes by normalized contents so equivalent arrays, including reordered or duplicated entries, preserve pending confirmations while effective scope changes invalidate them. + + Document and test the native not-found limitation at TanStack Router 1.170.41: unmatched-to-matched navigation skips adapter callbacks even with an active condition or scope; subsequent matched-route navigation remains guarded. + +- bd1dc3b: Publish format-specific ESM and CommonJS declarations so NodeNext CommonJS consumers can use the supported public imports. Correct Core's legacy main/module paths and resolve Next's router.js entry so native Node ESM can load the Next adapter. Require React Router DOM >=6.19.0 within v6 or v7 because earlier v6 releases do not export the stable useBlocker API. This excludes previously declared unsupported versions and releases the pre-1.0 router package as a minor change. Consumers on older v6 must upgrade before adopting this release; no new runtime dependency is added. Publish evidence-labelled capabilities and packed peer/provider checks, and clarify App Router and application-owned payment cancellation limits. + +### Patch Changes + +- 06df6f3: Use shared confirmation ownership in React Router so only the latest attached navigation attempt can proceed or notify permission. Invalidate pending answers when the evaluated protection state, scope, or message changes, while preserving them across callback rerenders and equivalent scopes. + + Reset the current blocked transition and clear its pending confirmation when protection configuration changes, without resuming stale approvals or resetting superseding attempts. + + Retain ownership of synchronous denials and silent blocking when they replace an async prompt, so later protection changes reset the current blocked transition rather than consulting the obsolete prompt. + +- 0d3c1f7: Complete the Blocking lifecycle architecture migration. Remove mutable blocker and middleware maps, + named middleware registration, direct event dispatch, and compatibility restore contracts. Observe + lifecycle transitions through ownership-safe anonymous leases and read readonly BlockerInfo snapshots. + Devtools sessions release only their observations; manual observation is now additive on every store. + Centralize guarded-control state and accessible reasons while retaining public hooks, state mappers, + state utilities, and distinct link behavior. Consolidate shared TanStack coverage at its coordination + interface and document migration from removed interfaces. Retain react-zustand-toolkit as the state + management base. +- dd13e1b: Evaluate pure navigation predicates on every React render, including stable functions reading refs or external state. Remove misleading useCallback guidance: changing a ref alone still requires a React rerender to refresh protection. Preserve scope OR semantics and router-specific navigation and unload capabilities. +- 369b2c0: Prevent stale Pages Router confirmations from resuming navigation and notify permission once across async acceptance and route replay. +- 6d59289: Skip scheduled windows that have already elapsed when a delayed start timer runs, and retain long windows without overflowing their end timers. Share router protection scope keys, remove unused internal confirmation handling, and correct the documented public router types. +- 26cc31e: Align packaged README requirements with the Core ^2.0.0 release cohort and use durable repository URLs for migration, observability and Next runtime evidence. Declare the Query adapter's existing Node.js >=20 requirement inherited from type-utils. Reconcile superseded intermediate compatibility descriptions in pending release notes. + + Include CHANGELOG.md in every package so the packaged README changelog links resolve. Generate versioned API references and advance changelog links as part of the Changesets version command. + +- 691ea3e: Settle pending custom confirmation dialogs as false on effect teardown, including unmount and hiding a preserved React Activity subtree. Clear preserved dialog state so it cannot reappear after effects reconnect. Dialog-specific resolvers now close their own dialog exactly once and cannot affect a replacement dialog. Stable hook-level controls continue to act on the current dialog. +- 6230733: Adopt `@okyrychenko-dev/type-utils` 0.1.2 for internal type guards, assertions, and utility types, replacing equivalent hand-rolled checks, a duplicated `assertNever` helper, and inline nullable/optional unions. Runtime behavior is unchanged; some public function signatures now show the package's equivalent utility types. Adds `@okyrychenko-dev/type-utils` as a new dependency and explicitly requires Node.js 20 or newer; Node.js 18 is EOL and unsupported. +- Updated dependencies [6a08414] +- Updated dependencies [39fb3de] +- Updated dependencies [32264e4] +- Updated dependencies [5d403d8] +- Updated dependencies [3db526a] +- Updated dependencies [64145c9] +- Updated dependencies [0d3c1f7] +- Updated dependencies [083a5b7] +- Updated dependencies [690a3a9] +- Updated dependencies [a1b83db] +- Updated dependencies [d07b65a] +- Updated dependencies [bd1dc3b] +- Updated dependencies [6513e1e] +- Updated dependencies [6d59289] +- Updated dependencies [26cc31e] +- Updated dependencies [b987ed1] +- Updated dependencies [743c6f4] +- Updated dependencies [303abc3] +- Updated dependencies [eefba30] +- Updated dependencies [4363609] +- Updated dependencies [40e8420] +- Updated dependencies [6230733] + - @okyrychenko-dev/react-action-guard@2.0.0 + All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), @@ -151,10 +218,11 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - `react` ^18.0.0 || ^19.0.0 - One of: `react-router-dom` ^6.0.0, `@tanstack/react-router` ^1.0.0, or `next` ^13.4.0 -[Unreleased]: https://github.com/okyrychenko-dev/react-action-guard-router/compare/v0.2.4...HEAD +[Unreleased]: https://github.com/okyrychenko-dev/react-action-guard/compare/@okyrychenko-dev/react-action-guard-router@1.0.0...HEAD [0.2.4]: https://github.com/okyrychenko-dev/react-action-guard-router/compare/v0.2.3...v0.2.4 [0.2.3]: https://github.com/okyrychenko-dev/react-action-guard-router/compare/v0.2.2...v0.2.3 [0.2.2]: https://github.com/okyrychenko-dev/react-action-guard-router/compare/v0.2.1...v0.2.2 [0.2.1]: https://github.com/okyrychenko-dev/react-action-guard-router/releases/tag/v0.2.1 [0.2.0]: https://github.com/okyrychenko-dev/react-action-guard-router/releases/tag/v0.2.0 [0.1.0]: https://github.com/okyrychenko-dev/react-action-guard-router/releases/tag/v0.1.0 +[1.0.0]: https://github.com/okyrychenko-dev/react-action-guard/releases/tag/@okyrychenko-dev/react-action-guard-router@1.0.0 diff --git a/packages/router/package.json b/packages/router/package.json index 174e1b90..8376a5f0 100644 --- a/packages/router/package.json +++ b/packages/router/package.json @@ -1,6 +1,6 @@ { "name": "@okyrychenko-dev/react-action-guard-router", - "version": "0.2.4", + "version": "1.0.0", "type": "module", "description": "Navigation blocking adapters for React Action Guard across React Router, TanStack Router, and Next.js", "engines": { @@ -104,7 +104,7 @@ "access": "public" }, "peerDependencies": { - "@okyrychenko-dev/react-action-guard": "^1.0.4", + "@okyrychenko-dev/react-action-guard": "^2.0.0", "@tanstack/react-router": "^1.170.41", "next": "^13.4.0 || ^14.0.0 || ^15.0.0", "react": "^18.0.0 || ^19.0.0", diff --git a/packages/tanstack/CHANGELOG.md b/packages/tanstack/CHANGELOG.md index 0a16b9cd..3126d754 100644 --- a/packages/tanstack/CHANGELOG.md +++ b/packages/tanstack/CHANGELOG.md @@ -1,5 +1,69 @@ # Changelog +## 0.4.0 + +[Release history](https://github.com/okyrychenko-dev/react-action-guard/releases/tag/@okyrychenko-dev/react-action-guard-tanstack@0.4.0) + +### Minor Changes + +- f75e05e: Block query initial loading only while pending and actively fetching. Disabled idle and offline paused queries no longer block by default across single, infinite, and collection hooks. Background refetch and pagination blocking remain opt-in, and mutation pending behavior is unchanged. See the TanStack README migration guidance for workflows that previously relied on pending queries without active work. + +### Patch Changes + +- 0d3c1f7: Complete the Blocking lifecycle architecture migration. Remove mutable blocker and middleware maps, + named middleware registration, direct event dispatch, and compatibility restore contracts. Observe + lifecycle transitions through ownership-safe anonymous leases and read readonly BlockerInfo snapshots. + Devtools sessions release only their observations; manual observation is now additive on every store. + Centralize guarded-control state and accessible reasons while retaining public hooks, state mappers, + state utilities, and distinct link behavior. Consolidate shared TanStack coverage at its coordination + interface and document migration from removed interfaces. Retain react-zustand-toolkit as the state + management base. +- 583ec47: Route TanStack blocking hooks through the nearest `UIBlockingProvider` store while preserving the global-store fallback when no provider is present. +- d7f6739: Protect all unsettled calls initiated through one useBlockingMutation hook, including concurrent calls, native awaited callbacks, retries, pauses, and queues. Preserve native result observation and callback behavior. Reset and mutation-key changes retain pending ownership; unmount retains pending protection until settlement or timeout. Timeouts end an aggregate registration episode without cancelling work or allowing rerenders and additional calls to revive expired protection. + + Strengthen Query and Mutation registration tests to require blocker existence before checking metadata. + + Share latest-call/error observation across replacement blocking owners that retain the same native mutation observer, while keeping pending accounting and timeout episodes local to each owner. Retained invocations and reset cannot leave stale error protection in another store. + +- bd1dc3b: Publish format-specific ESM and CommonJS declarations so NodeNext CommonJS consumers can use the supported public imports. Correct Core's legacy main/module paths and resolve Next's router.js entry so native Node ESM can load the Next adapter. Require React Router DOM >=6.19.0 within v6 or v7 because earlier v6 releases do not export the stable useBlocker API. This excludes previously declared unsupported versions and releases the pre-1.0 router package as a minor change. Consumers on older v6 must upgrade before adopting this release; no new runtime dependency is added. Publish evidence-labelled capabilities and packed peer/provider checks, and clarify App Router and application-owned payment cancellation limits. +- 235677a: Verify native mutation callback ordering, latest-result observation, reset and error boundaries under overlapping executions. Document the distinction between native result observation and protection for all owned calls, with differential checks against selected Query versions. +- e0b58e3: Reuse core action-blocker registration ownership in Query coordination, avoiding redundant lifecycle updates for equivalent configuration while preserving adapter policies and timeout behavior. +- b050190: Centralize blocking state policy, reasons, instance identity, provider store resolution, and blocker cleanup across TanStack hooks. Use the shared type-utils toolset for reason selection. Consolidate public hook configuration and behavior documentation in the package README. +- 6513e1e: Apply current reactive blocker configuration in core and TanStack hooks. Removed + scope, reason and priority values return to defaults; omitted timeout and callback + values clear. Metadata changes preserve unchanged deadlines and registration + timestamps, while changed timeouts restart and removed timeouts cancel timers. + Imperative updateBlocker patch behavior remains compatible. Consumers relying on + retained hook options must keep those options in the current configuration. + The released TanStack adapter requires Core ^2.0.0, including configuration replacement support. +- 26cc31e: Align packaged README requirements with the Core ^2.0.0 release cohort and use durable repository URLs for migration, observability and Next runtime evidence. Declare the Query adapter's existing Node.js >=20 requirement inherited from type-utils. Reconcile superseded intermediate compatibility descriptions in pending release notes. + + Include CHANGELOG.md in every package so the packaged README changelog links resolve. Generate versioned API references and advance changelog links as part of the Changesets version command. + +- Updated dependencies [6a08414] +- Updated dependencies [39fb3de] +- Updated dependencies [32264e4] +- Updated dependencies [5d403d8] +- Updated dependencies [3db526a] +- Updated dependencies [64145c9] +- Updated dependencies [0d3c1f7] +- Updated dependencies [083a5b7] +- Updated dependencies [690a3a9] +- Updated dependencies [a1b83db] +- Updated dependencies [d07b65a] +- Updated dependencies [bd1dc3b] +- Updated dependencies [6513e1e] +- Updated dependencies [6d59289] +- Updated dependencies [26cc31e] +- Updated dependencies [b987ed1] +- Updated dependencies [743c6f4] +- Updated dependencies [303abc3] +- Updated dependencies [eefba30] +- Updated dependencies [4363609] +- Updated dependencies [40e8420] +- Updated dependencies [6230733] + - @okyrychenko-dev/react-action-guard@2.0.0 + All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), @@ -207,7 +271,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - 🔍 TypeScript type definitions with detailed annotations - ✅ 41 unit tests with 95%+ coverage -[Unreleased]: https://github.com/okyrychenko-dev/react-action-guard-tanstack/compare/v0.3.5...HEAD +[Unreleased]: https://github.com/okyrychenko-dev/react-action-guard/compare/@okyrychenko-dev/react-action-guard-tanstack@0.4.0...HEAD [0.3.5]: https://github.com/okyrychenko-dev/react-action-guard-tanstack/compare/v0.3.4...v0.3.5 [0.3.4]: https://github.com/okyrychenko-dev/react-action-guard-tanstack/compare/v0.3.3...v0.3.4 [0.3.3]: https://github.com/okyrychenko-dev/react-action-guard-tanstack/compare/v0.3.2...v0.3.3 @@ -219,3 +283,4 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 [0.2.2]: https://github.com/okyrychenko-dev/react-action-guard-tanstack/compare/v0.2.0...v0.2.2 [0.2.0]: https://github.com/okyrychenko-dev/react-action-guard-tanstack/compare/v0.1.0...v0.2.0 [0.1.0]: https://github.com/okyrychenko-dev/react-action-guard-tanstack/releases/tag/v0.1.0 +[0.4.0]: https://github.com/okyrychenko-dev/react-action-guard/releases/tag/@okyrychenko-dev/react-action-guard-tanstack@0.4.0 diff --git a/packages/tanstack/package.json b/packages/tanstack/package.json index a81ca5a0..b4cc78b0 100644 --- a/packages/tanstack/package.json +++ b/packages/tanstack/package.json @@ -1,6 +1,6 @@ { "name": "@okyrychenko-dev/react-action-guard-tanstack", - "version": "0.3.5", + "version": "0.4.0", "type": "module", "engines": { "node": ">=20" @@ -68,7 +68,7 @@ "access": "public" }, "peerDependencies": { - "@okyrychenko-dev/react-action-guard": "^1.0.6", + "@okyrychenko-dev/react-action-guard": "^2.0.0", "@tanstack/react-query": "^5.90.10", "react": "^18.0.0 || ^19.0.0" }, diff --git a/packages/ui/CHANGELOG.md b/packages/ui/CHANGELOG.md index e9fb89eb..50fc273d 100644 --- a/packages/ui/CHANGELOG.md +++ b/packages/ui/CHANGELOG.md @@ -1,5 +1,52 @@ # Changelog +## 1.0.0 + +[Release history](https://github.com/okyrychenko-dev/react-action-guard/releases/tag/@okyrychenko-dev/react-action-guard-ui@1.0.0) + +### Patch Changes + +- 32264e4: Centralize scope normalization, inheritance, observation, and targeted-clear semantics in the core package, preserve empty observed scopes, and migrate guarded UI controls to use the shared behavior. The UI package now requires the core release that exports these helpers. +- 3db526a: Publish immutable Blocking lifecycle snapshots through global and provider-scoped stores. React hooks, guarded UI controls, and Devtools subscribe to those snapshots. The final release cohort is Core 2.0 and Devtools 1.0 with a Core ^2.0.0 peer requirement. Node.js 20 or newer is required; prior intermediate version proposals are superseded by this cohort. +- 0d3c1f7: Complete the Blocking lifecycle architecture migration. Remove mutable blocker and middleware maps, + named middleware registration, direct event dispatch, and compatibility restore contracts. Observe + lifecycle transitions through ownership-safe anonymous leases and read readonly BlockerInfo snapshots. + Devtools sessions release only their observations; manual observation is now additive on every store. + Centralize guarded-control state and accessible reasons while retaining public hooks, state mappers, + state utilities, and distinct link behavior. Consolidate shared TanStack coverage at its coordination + interface and document migration from removed interfaces. Retain react-zustand-toolkit as the state + management base. +- bd1dc3b: Publish format-specific ESM and CommonJS declarations so NodeNext CommonJS consumers can use the supported public imports. Correct Core's legacy main/module paths and resolve Next's router.js entry so native Node ESM can load the Next adapter. Require React Router DOM >=6.19.0 within v6 or v7 because earlier v6 releases do not export the stable useBlocker API. This excludes previously declared unsupported versions and releases the pre-1.0 router package as a minor change. Consumers on older v6 must upgrade before adopting this release; no new runtime dependency is added. Publish evidence-labelled capabilities and packed peer/provider checks, and clarify App Router and application-owned payment cancellation limits. +- 26cc31e: Align packaged README requirements with the Core ^2.0.0 release cohort and use durable repository URLs for migration, observability and Next runtime evidence. Declare the Query adapter's existing Node.js >=20 requirement inherited from type-utils. Reconcile superseded intermediate compatibility descriptions in pending release notes. + + Include CHANGELOG.md in every package so the packaged README changelog links resolve. Generate versioned API references and advance changelog links as part of the Changesets version command. + +- 40e8420: Keep scoped metadata and guarded controls stable when unrelated blockers change, while observing all relevant metadata and preserving immutable priority-ordered results. Core `useBlockingInfo` now also accepts readonly scope arrays so UI consumers share the same projection and matching rules; `createTypedHooks` accepts the same arrays while rejecting unknown scope names. Delegate resolved subscriptions and selection retention to react-zustand-toolkit, with optional custom equality on `useResolvedValue`. Cover scope representation changes and stable metadata when observation expands. Retain production/development scale and rapid-registration benchmark evidence refreshed after the typed-hook fix, with installed-tarball declaration checks and pinned source provenance. +- 6230733: Adopt `@okyrychenko-dev/type-utils` 0.1.2 for internal type guards, assertions, and utility types, replacing equivalent hand-rolled checks, a duplicated `assertNever` helper, and inline nullable/optional unions. Runtime behavior is unchanged; some public function signatures now show the package's equivalent utility types. Adds `@okyrychenko-dev/type-utils` as a new dependency and explicitly requires Node.js 20 or newer; Node.js 18 is EOL and unsupported. +- Updated dependencies [6a08414] +- Updated dependencies [39fb3de] +- Updated dependencies [32264e4] +- Updated dependencies [5d403d8] +- Updated dependencies [3db526a] +- Updated dependencies [64145c9] +- Updated dependencies [0d3c1f7] +- Updated dependencies [083a5b7] +- Updated dependencies [690a3a9] +- Updated dependencies [a1b83db] +- Updated dependencies [d07b65a] +- Updated dependencies [bd1dc3b] +- Updated dependencies [6513e1e] +- Updated dependencies [6d59289] +- Updated dependencies [26cc31e] +- Updated dependencies [b987ed1] +- Updated dependencies [743c6f4] +- Updated dependencies [303abc3] +- Updated dependencies [eefba30] +- Updated dependencies [4363609] +- Updated dependencies [40e8420] +- Updated dependencies [6230733] + - @okyrychenko-dev/react-action-guard@2.0.0 + All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), @@ -81,10 +128,11 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - `@okyrychenko-dev/react-action-guard` ^1.0.4 - `react` ^18.0.0 || ^19.0.0 -[Unreleased]: https://github.com/okyrychenko-dev/react-action-guard-ui/compare/v0.1.5...HEAD +[Unreleased]: https://github.com/okyrychenko-dev/react-action-guard/compare/@okyrychenko-dev/react-action-guard-ui@1.0.0...HEAD [0.1.5]: https://github.com/okyrychenko-dev/react-action-guard-ui/compare/v0.1.4...v0.1.5 [0.1.4]: https://github.com/okyrychenko-dev/react-action-guard-ui/compare/v0.1.3...v0.1.4 [0.1.3]: https://github.com/okyrychenko-dev/react-action-guard-ui/compare/v0.1.2...v0.1.3 [0.1.2]: https://github.com/okyrychenko-dev/react-action-guard-ui/compare/v0.1.1...v0.1.2 [0.1.1]: https://github.com/okyrychenko-dev/react-action-guard-ui/compare/v0.1.0...v0.1.1 [0.1.0]: https://github.com/okyrychenko-dev/react-action-guard-ui/releases/tag/v0.1.0 +[1.0.0]: https://github.com/okyrychenko-dev/react-action-guard/releases/tag/@okyrychenko-dev/react-action-guard-ui@1.0.0 diff --git a/packages/ui/package.json b/packages/ui/package.json index 98256b94..27516ece 100644 --- a/packages/ui/package.json +++ b/packages/ui/package.json @@ -1,6 +1,6 @@ { "name": "@okyrychenko-dev/react-action-guard-ui", - "version": "0.1.5", + "version": "1.0.0", "type": "module", "description": "UI-agnostic guarded control primitives for react-action-guard", "engines": {