@typed/navigation 0.18.0 → 0.18.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (113) hide show
  1. package/.nvmrc +1 -0
  2. package/biome.json +39 -0
  3. package/dist/Blocking.d.ts +23 -0
  4. package/dist/Blocking.js +41 -0
  5. package/dist/Blocking.js.map +1 -0
  6. package/dist/Destination.d.ts +11 -0
  7. package/dist/Destination.js +10 -0
  8. package/dist/Destination.js.map +1 -0
  9. package/dist/Error.d.ts +33 -0
  10. package/dist/Error.js +22 -0
  11. package/dist/Error.js.map +1 -0
  12. package/dist/Event.d.ts +45 -0
  13. package/dist/Event.js +17 -0
  14. package/dist/Event.js.map +1 -0
  15. package/dist/Forms.d.ts +79 -0
  16. package/dist/Forms.js +111 -0
  17. package/dist/Forms.js.map +1 -0
  18. package/dist/Handler.d.ts +6 -0
  19. package/dist/Handler.js +2 -0
  20. package/dist/Handler.js.map +1 -0
  21. package/dist/{dts/Layer.d.ts → Layer.d.ts} +11 -8
  22. package/dist/{esm/Layer.js → Layer.js} +2 -2
  23. package/dist/Layer.js.map +1 -0
  24. package/dist/NavigateOptions.d.ts +7 -0
  25. package/dist/NavigateOptions.js +7 -0
  26. package/dist/NavigateOptions.js.map +1 -0
  27. package/dist/Navigation.d.ts +79 -0
  28. package/dist/Navigation.js +49 -0
  29. package/dist/Navigation.js.map +1 -0
  30. package/dist/NavigationType.d.ts +3 -0
  31. package/dist/NavigationType.js +3 -0
  32. package/dist/NavigationType.js.map +1 -0
  33. package/dist/ProposedDestination.d.ts +13 -0
  34. package/dist/ProposedDestination.js +4 -0
  35. package/dist/ProposedDestination.js.map +1 -0
  36. package/dist/Url.d.ts +13 -0
  37. package/dist/Url.js +72 -0
  38. package/dist/Url.js.map +1 -0
  39. package/dist/index.d.ts +12 -0
  40. package/dist/index.js +13 -0
  41. package/dist/index.js.map +1 -0
  42. package/dist/internal/fromWindow.d.ts +4 -0
  43. package/dist/{esm/internal → internal}/fromWindow.js +125 -136
  44. package/dist/internal/fromWindow.js.map +1 -0
  45. package/dist/internal/memory.d.ts +6 -0
  46. package/dist/internal/memory.js +59 -0
  47. package/dist/internal/memory.js.map +1 -0
  48. package/dist/{dts/internal → internal}/shared.d.ts +44 -46
  49. package/dist/{esm/internal → internal}/shared.js +121 -168
  50. package/dist/internal/shared.js.map +1 -0
  51. package/package.json +35 -53
  52. package/readme.md +243 -0
  53. package/src/Blocking.ts +65 -65
  54. package/src/Destination.ts +14 -0
  55. package/src/Error.ts +28 -0
  56. package/src/Event.ts +26 -0
  57. package/src/Forms.ts +216 -0
  58. package/src/Handler.ts +16 -0
  59. package/src/Layer.ts +20 -9
  60. package/src/NavigateOptions.ts +9 -0
  61. package/src/Navigation.test.ts +697 -0
  62. package/src/Navigation.ts +135 -472
  63. package/src/NavigationType.ts +5 -0
  64. package/src/ProposedDestination.ts +8 -0
  65. package/src/Url.ts +106 -0
  66. package/src/index.ts +12 -17
  67. package/src/internal/fromWindow.ts +163 -234
  68. package/src/internal/memory.ts +62 -49
  69. package/src/internal/shared.ts +218 -377
  70. package/tsconfig.json +30 -0
  71. package/Blocking/package.json +0 -6
  72. package/LICENSE +0 -21
  73. package/Layer/package.json +0 -6
  74. package/Navigation/package.json +0 -6
  75. package/README.md +0 -5
  76. package/dist/cjs/Blocking.js +0 -58
  77. package/dist/cjs/Blocking.js.map +0 -1
  78. package/dist/cjs/Layer.js +0 -27
  79. package/dist/cjs/Layer.js.map +0 -1
  80. package/dist/cjs/Navigation.js +0 -278
  81. package/dist/cjs/Navigation.js.map +0 -1
  82. package/dist/cjs/index.js +0 -39
  83. package/dist/cjs/index.js.map +0 -1
  84. package/dist/cjs/internal/fromWindow.js +0 -436
  85. package/dist/cjs/internal/fromWindow.js.map +0 -1
  86. package/dist/cjs/internal/memory.js +0 -72
  87. package/dist/cjs/internal/memory.js.map +0 -1
  88. package/dist/cjs/internal/shared.js +0 -525
  89. package/dist/cjs/internal/shared.js.map +0 -1
  90. package/dist/dts/Blocking.d.ts +0 -34
  91. package/dist/dts/Blocking.d.ts.map +0 -1
  92. package/dist/dts/Layer.d.ts.map +0 -1
  93. package/dist/dts/Navigation.d.ts +0 -451
  94. package/dist/dts/Navigation.d.ts.map +0 -1
  95. package/dist/dts/index.d.ts +0 -17
  96. package/dist/dts/index.d.ts.map +0 -1
  97. package/dist/dts/internal/fromWindow.d.ts +0 -12
  98. package/dist/dts/internal/fromWindow.d.ts.map +0 -1
  99. package/dist/dts/internal/memory.d.ts +0 -6
  100. package/dist/dts/internal/memory.d.ts.map +0 -1
  101. package/dist/dts/internal/shared.d.ts.map +0 -1
  102. package/dist/esm/Blocking.js +0 -46
  103. package/dist/esm/Blocking.js.map +0 -1
  104. package/dist/esm/Layer.js.map +0 -1
  105. package/dist/esm/Navigation.js +0 -238
  106. package/dist/esm/Navigation.js.map +0 -1
  107. package/dist/esm/index.js +0 -17
  108. package/dist/esm/index.js.map +0 -1
  109. package/dist/esm/internal/fromWindow.js.map +0 -1
  110. package/dist/esm/internal/memory.js +0 -56
  111. package/dist/esm/internal/memory.js.map +0 -1
  112. package/dist/esm/internal/shared.js.map +0 -1
  113. package/dist/esm/package.json +0 -4
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shared.js","sourceRoot":"","sources":["../../src/internal/shared.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,61 +1,43 @@
1
1
  {
2
2
  "name": "@typed/navigation",
3
- "version": "0.18.0",
4
- "description": "",
3
+ "version": "0.18.1",
4
+ "description": "History/Navigation API for Effect",
5
+ "main": "dist/index.js",
6
+ "types": "dist/index.d.ts",
7
+ "type": "module",
8
+ "keywords": [
9
+ "history",
10
+ "navigation",
11
+ "effect",
12
+ "typescript"
13
+ ],
14
+ "author": "Tylor Steinberger <tlsteinberger167@gmail.com>",
5
15
  "license": "MIT",
6
- "repository": {
7
- "type": "git",
8
- "url": "https://github.com/tylors/typed.git"
9
- },
10
- "sideEffects": [],
11
- "author": "Typed contributors",
12
- "homepage": "https://github.com/tylors/typed",
13
16
  "dependencies": {
14
- "@effect/platform": "^0.66.2",
15
- "@effect/schema": "^0.74.1",
16
- "effect": "^3.8.4",
17
- "@typed/context": "0.30.0",
18
- "@typed/dom": "18.0.0",
19
- "@typed/fx": "1.32.0",
20
- "@typed/id": "0.11.0"
17
+ "@effect/platform": "^0.72.0",
18
+ "@typed/id": "^0.17.1",
19
+ "@typed/lazy-ref": "^0.3.3",
20
+ "effect": "^3.11.9"
21
+ },
22
+ "peerDependencies": {
23
+ "effect": "^3.11.9"
21
24
  },
22
- "main": "./dist/cjs/index.js",
23
- "module": "./dist/esm/index.js",
24
- "types": "./dist/dts/index.d.ts",
25
- "exports": {
26
- "./package.json": "./package.json",
27
- ".": {
28
- "types": "./dist/dts/index.d.ts",
29
- "import": "./dist/esm/index.js",
30
- "default": "./dist/cjs/index.js"
31
- },
32
- "./Blocking": {
33
- "types": "./dist/dts/Blocking.d.ts",
34
- "import": "./dist/esm/Blocking.js",
35
- "default": "./dist/cjs/Blocking.js"
36
- },
37
- "./Layer": {
38
- "types": "./dist/dts/Layer.d.ts",
39
- "import": "./dist/esm/Layer.js",
40
- "default": "./dist/cjs/Layer.js"
41
- },
42
- "./Navigation": {
43
- "types": "./dist/dts/Navigation.d.ts",
44
- "import": "./dist/esm/Navigation.js",
45
- "default": "./dist/cjs/Navigation.js"
46
- }
25
+ "devDependencies": {
26
+ "@biomejs/biome": "^1.9.4",
27
+ "@effect/vitest": "^0.16.0",
28
+ "@types/dom-navigation": "^1.0.4",
29
+ "@types/node": "^22.10.2",
30
+ "@virtualstate/navigation": "1.0.1-alpha.206",
31
+ "happy-dom": "^16.0.1",
32
+ "typescript": "^5.4.2",
33
+ "vitest": "^2.1.8"
47
34
  },
48
- "typesVersions": {
49
- "*": {
50
- "Blocking": [
51
- "./dist/dts/Blocking.d.ts"
52
- ],
53
- "Layer": [
54
- "./dist/dts/Layer.d.ts"
55
- ],
56
- "Navigation": [
57
- "./dist/dts/Navigation.d.ts"
58
- ]
59
- }
35
+ "scripts": {
36
+ "build": "tsc",
37
+ "dev": "tsc --watch",
38
+ "lint": "biome lint --write",
39
+ "test:watch": "vitest --typecheck",
40
+ "test": "vitest run --typecheck",
41
+ "typecheck": "tsc --noEmit"
60
42
  }
61
43
  }
package/readme.md ADDED
@@ -0,0 +1,243 @@
1
+ # @typed/navigation
2
+
3
+ A Effect-based library for managing browser navigation. Built on top of the [Navigation API](https://developer.mozilla.org/en-US/docs/Web/API/Navigation_API) where supported, falling back to the History API, it provides a type-safe and composable way to handle routing, history management, and navigation events in your web applications.
4
+
5
+ Key benefits:
6
+ - Type-safe navigation with full TypeScript support
7
+ - Seamless integration with Effect for powerful error handling and composability
8
+ - Graceful fallback to History API in unsupported browsers
9
+ - First-class support for testing and SSR through memory-based navigation
10
+
11
+ ## Features
12
+
13
+ - 🎯 **Type-Safe**: Full TypeScript support with strict typing
14
+ - 🔄 **Effect Integration**: Built on top of the Effect ecosystem
15
+ - 🧠 **Memory Navigation**: In-memory navigation support for testing and SSR
16
+ - 🌐 **Browser Support**: Seamless integration with the browser's Navigation API
17
+ - 🎭 **State Management**: Built-in state management for navigation entries
18
+ - 🔄 **Navigation Events**: Comprehensive event system for navigation lifecycle
19
+ - 🛡️ **Error Handling**: Type-safe error handling with Effect
20
+
21
+ ## Installation
22
+
23
+ ```bash
24
+ npm install @typed/navigation
25
+ # or
26
+ pnpm add @typed/navigation
27
+ # or
28
+ yarn add @typed/navigation
29
+ ```
30
+
31
+ ## Basic Usage
32
+
33
+ ```typescript
34
+ import * as Navigation from '@typed/navigation'
35
+ import { Effect } from 'effect'
36
+
37
+ // Create a navigation instance
38
+ const program = Effect.gen(function* (_) {
39
+ // Basic navigation operations
40
+ const destination = yield* Navigation.navigate('/new-path')
41
+ yield* Navigation.back()
42
+ yield* Navigation.forward()
43
+
44
+ // Navigate with state and options
45
+ yield* Navigation.navigate('/dashboard', {
46
+ state: { userId: 123 },
47
+ history: 'replace', // 'push' | 'replace' | 'auto'
48
+ info: { source: 'user-action' }
49
+ })
50
+
51
+ // Access current navigation state
52
+ const current = yield* Navigation.CurrentEntry
53
+ console.log(current.url.pathname) // '/dashboard'
54
+ console.log(current.state) // { userId: 123 }
55
+
56
+ // Check navigation capabilities
57
+ const canGoBack = yield* Navigation.CanGoBack
58
+ const canGoForward = yield* Navigation.CanGoForward
59
+
60
+ // Access navigation history
61
+ const entries = yield* Navigation.Entries
62
+ const specificEntry = entries[0]
63
+ yield* Navigation.traverseTo(specificEntry.key)
64
+
65
+ // Update current entry's state
66
+ yield* Navigation.updateCurrentEntry({
67
+ state: { userId: 123, lastUpdated: Date.now() }
68
+ })
69
+
70
+ // Reload current entry
71
+ yield* Navigation.reload({
72
+ state: { refreshed: true },
73
+ info: { source: 'refresh-button' }
74
+ })
75
+
76
+ // Listen to navigation events
77
+ yield* Navigation.onNavigation((event) =>
78
+ Effect.log(`Navigated to ${event.destination.url.pathname}`)
79
+ )
80
+
81
+ // Intercept navigation events
82
+ yield* Navigation.beforeNavigation((event) =>
83
+ Effect.gen(function* (_) {
84
+ console.log(`Navigating from ${event.from.url.pathname} to ${event.to.url.pathname}`)
85
+
86
+ // Can cancel
87
+ yield* Navigation.cancelNavigation
88
+
89
+ // Can redirect
90
+ yield* Navigation.redirect(...)
91
+ })
92
+ )
93
+
94
+ // Track ongoing transitions
95
+ const transition = yield* Navigation.transition
96
+ if (Option.isSome(transition)) {
97
+ const { from, to, type } = transition.value
98
+ console.log(`Transition in progress: ${type} from ${from.url.pathname} to ${to.url.pathname}`)
99
+ }
100
+ })
101
+
102
+ program.pipe(
103
+ Effect.provide(Navigation.fromWindow(window))
104
+ // Effect.provide(Navigation.initialMemory({ url: '/' }))
105
+ )
106
+ ```
107
+
108
+ ## Core Features
109
+
110
+ ### Navigation Operations
111
+
112
+ - `navigate(url, options?)`: Navigate to a new URL
113
+ - `back(options?)`: Go back in history
114
+ - `forward(options?)`: Go forward in history
115
+ - `traverseTo(key, options?)`: Navigate to a specific history entry
116
+ - `updateCurrentEntry(options)`: Update the state of the current entry
117
+ - `reload(options?)`: Reload the current entry
118
+
119
+ ### State Management
120
+
121
+ - `currentEntry`: Get the current navigation entry
122
+ - `entries`: Access all navigation entries
123
+ - `canGoBack`: Check if backward navigation is possible
124
+ - `canGoForward`: Check if forward navigation is possible
125
+
126
+ ### Event Handling
127
+
128
+ - `beforeNavigation`: Register handlers to run before navigation
129
+ - `onNavigation`: Register handlers to run after navigation
130
+ - `transition`: Track ongoing navigation transitions
131
+
132
+ ## Advanced Usage
133
+
134
+ ### Memory Navigation
135
+
136
+ For testing or SSR environments:
137
+
138
+ ```typescript
139
+ import { Navigation } from '@typed/navigation'
140
+ import { Effect } from 'effect'
141
+
142
+ const program = Effect.gen(function* (_) {
143
+ const nav = yield* Navigation.Navigation
144
+
145
+ // Use in-memory navigation
146
+ }).pipe(
147
+ Effect.provide(Navigation.initialMemory({
148
+ url: 'https://example.com',
149
+ state: { /* initial state */ }
150
+ }))
151
+ )
152
+ ```
153
+
154
+ ### Browser Navigation
155
+
156
+ For browser environments:
157
+
158
+ ```typescript
159
+ import { Navigation } from '@typed/navigation'
160
+ import { Effect } from 'effect'
161
+
162
+ const program = Effect.gen(function* (_) {
163
+ const nav = yield* Navigation.Navigation
164
+
165
+ // Use browser's Navigation API
166
+ }).pipe(
167
+ // Has support for:
168
+ // - <base href="...">
169
+ // - intercepting history.*
170
+ // - utilizing native Navigation API (currently Chrome only)
171
+ Effect.provide(Navigation.fromWindow(window))
172
+ )
173
+ ```
174
+
175
+ ### Blocking Navigation
176
+
177
+ The library provides powerful capabilities to intercept and control navigation attempts through the `useBlockNavigation` API. This is useful for scenarios like:
178
+ - Preventing navigation when there are unsaved changes
179
+ - Showing confirmation dialogs before navigation
180
+ - Redirecting users to different paths based on conditions
181
+
182
+ ```typescript
183
+ import { Navigation } from '@typed/navigation'
184
+ import { Effect } from 'effect'
185
+
186
+ const program = Effect.gen(function* (_) {
187
+ // Create a blocking navigation instance
188
+ const blockNavigation = yield* Navigation.useBlockNavigation({
189
+ // Optional: Specify when to block navigation
190
+ shouldBlock: (event) => Effect.succeed(true)
191
+ })
192
+
193
+ // Listen to blocking events and handle them
194
+ yield* Effect.forkScoped(blockNavigation.whenBlocked(
195
+ (blocking) =>
196
+ Effect.gen(function* (_) {
197
+ // You can:
198
+ // 1. Confirm the navigation
199
+ yield* blocking.confirm
200
+
201
+ // 2. Cancel the navigation
202
+ yield* blocking.cancel
203
+
204
+ // 3. Redirect to a different path
205
+ yield* blocking.redirect('/different-path', {
206
+ state: { /* optional state */ },
207
+ info: { /* optional info */ }
208
+ })
209
+ })
210
+ ))
211
+ })
212
+
213
+ // Provide the navigation layer
214
+ program.pipe(
215
+ Effect.provide(Navigation.fromWindow(window))
216
+ )
217
+ ```
218
+
219
+ You can also use `beforeNavigation` for simpler blocking scenarios:
220
+
221
+ ```typescript
222
+ yield* Navigation.beforeNavigation((event) =>
223
+ Effect.gen(function* (_) {
224
+ if (shouldBlock(event)) {
225
+ // Cancel the navigation
226
+ return yield* Navigation.cancelNavigation
227
+ }
228
+
229
+ if (shouldRedirect(event)) {
230
+ // Redirect to a different path
231
+ return yield* Navigation.redirectToPath('/new-path')
232
+ }
233
+
234
+ // Allow the navigation to proceed
235
+ return Effect.none()
236
+ })
237
+ )
238
+ ```
239
+
240
+ ## License
241
+
242
+ MIT
243
+
package/src/Blocking.ts CHANGED
@@ -1,81 +1,70 @@
1
- /**
2
- * @since 1.0.0
3
- */
4
-
5
- import * as RefSubject from "@typed/fx/RefSubject"
6
-
7
- import * as Data from "effect/Data"
8
- import * as Deferred from "effect/Deferred"
9
- import * as Effect from "effect/Effect"
10
- import * as Option from "effect/Option"
11
-
12
- import type * as Scope from "effect/Scope"
13
- import type {
14
- BeforeNavigationEvent,
15
- CancelNavigation,
16
- Destination,
17
- NavigateOptions,
18
- RedirectError
19
- } from "./Navigation.js"
20
- import { cancelNavigation, Navigation, redirectToPath } from "./Navigation.js"
21
-
22
- /**
23
- * @since 1.0.0
24
- */
25
- export interface BlockNavigation extends RefSubject.Computed<Option.Option<Blocking>> {
26
- readonly isBlocking: RefSubject.Computed<boolean>
1
+ import * as LazyRef from '@typed/lazy-ref'
2
+ import { Stream } from 'effect'
3
+ import * as Data from 'effect/Data'
4
+ import * as Deferred from 'effect/Deferred'
5
+ import * as Effect from 'effect/Effect'
6
+ import * as Option from 'effect/Option'
7
+ import type * as Scope from 'effect/Scope'
8
+ import type { Destination } from './Destination.js'
9
+ import { CancelNavigation, type RedirectError } from './Error.js'
10
+ import type { TransitionEvent } from './Event.js'
11
+ import type { NavigateOptions } from './NavigateOptions.js'
12
+ import { Navigation, redirectToPath } from './Navigation.js'
13
+
14
+ export interface BlockNavigation extends LazyRef.Computed<Option.Option<Blocking>> {
15
+ readonly isBlocking: LazyRef.Computed<boolean>
16
+ readonly whenBlocked: <A, E, R>(
17
+ handler: (blocking: Blocking) => Effect.Effect<A, E, R>,
18
+ options?: Parameters<typeof Stream.flatMap>[2],
19
+ ) => Effect.Effect<void, E, R>
27
20
  }
28
21
 
29
- /**
30
- * @since 1.0.0
31
- */
32
- export interface Blocking extends BeforeNavigationEvent {
22
+ export interface Blocking extends TransitionEvent {
33
23
  readonly cancel: Effect.Effect<Destination>
34
24
  readonly confirm: Effect.Effect<Destination>
35
- readonly redirect: (urlOrPath: string | URL, options?: NavigateOptions) => Effect.Effect<Destination>
25
+ readonly redirect: (
26
+ urlOrPath: string | URL,
27
+ options?: NavigateOptions,
28
+ ) => Effect.Effect<Destination>
36
29
  }
37
30
 
38
31
  type InternalBlockState = Unblocked | Blocked
39
32
 
40
33
  type Unblocked = {
41
- readonly _tag: "Unblocked"
34
+ readonly _tag: 'Unblocked'
42
35
  }
43
- const Unblocked: Unblocked = Data.struct({ _tag: "Unblocked" })
36
+ const Unblocked: Unblocked = Data.struct({ _tag: 'Unblocked' })
44
37
 
45
38
  type Blocked = {
46
- readonly _tag: "Blocked"
47
- readonly event: BeforeNavigationEvent
39
+ readonly _tag: 'Blocked'
40
+ readonly event: TransitionEvent
48
41
  readonly deferred: Deferred.Deferred<void, RedirectError | CancelNavigation>
49
42
  }
50
43
 
51
- const Blocked = (event: BeforeNavigationEvent) =>
44
+ const Blocked = (event: TransitionEvent) =>
52
45
  Effect.map(
53
46
  Deferred.make<void, RedirectError | CancelNavigation>(),
54
- (deferred): Blocked => Data.struct({ _tag: "Blocked", deferred, event })
47
+ (deferred): Blocked => Data.struct({ _tag: 'Blocked', deferred, event }),
55
48
  )
56
49
 
57
- /**
58
- * @since 1.0.0
59
- */
60
50
  export interface UseBlockNavigationParams<R = never> {
61
- readonly shouldBlock?: (event: BeforeNavigationEvent) => Effect.Effect<boolean, RedirectError | CancelNavigation, R>
51
+ readonly shouldBlock?: (
52
+ event: TransitionEvent,
53
+ ) => Effect.Effect<boolean, RedirectError | CancelNavigation, R>
62
54
  }
63
55
 
64
- /**
65
- * @since 1.0.0
66
- */
67
56
  export const useBlockNavigation = <R = never>(
68
- params: UseBlockNavigationParams<R> = {}
57
+ params: UseBlockNavigationParams<R> = {},
69
58
  ): Effect.Effect<BlockNavigation, never, Navigation | R | Scope.Scope> =>
70
- Effect.gen(function*() {
59
+ Effect.gen(function* () {
71
60
  const navigation = yield* Navigation
72
- const blockState = yield* RefSubject.of<InternalBlockState>(Unblocked)
61
+ const blockState = yield* LazyRef.of<InternalBlockState>(Unblocked)
73
62
 
74
63
  yield* navigation.beforeNavigation<R, never>((event) =>
75
- RefSubject.modifyEffect(blockState, (state) =>
76
- Effect.gen(function*() {
64
+ LazyRef.modifyEffect(blockState, (state) =>
65
+ Effect.gen(function* () {
77
66
  // Can't block twice
78
- if (state._tag === "Blocked") return [Option.none(), state] as const
67
+ if (state._tag === 'Blocked') return [Option.none(), state] as const
79
68
 
80
69
  if (params.shouldBlock && !(yield* params.shouldBlock(event))) {
81
70
  return [Option.none(), state] as const
@@ -83,21 +72,26 @@ export const useBlockNavigation = <R = never>(
83
72
 
84
73
  const updated = yield* Blocked(event)
85
74
 
86
- return [
87
- Option.some(Deferred.await(updated.deferred)),
88
- updated
89
- ] as const
90
- }))
75
+ return [Option.some(Deferred.await(updated.deferred)), updated] as const
76
+ }),
77
+ ),
91
78
  )
92
79
 
93
- const blockNavigation: BlockNavigation = Object.assign(
94
- RefSubject.map(blockState, (s) => {
95
- return s._tag === "Blocked" ? Option.some(blockedToBlocking(navigation, s)) : Option.none()
96
- }),
97
- {
98
- isBlocking: RefSubject.map(blockState, (s) => s._tag === "Blocked")
99
- }
100
- )
80
+ const computed = LazyRef.map(blockState, (s) => {
81
+ return s._tag === 'Blocked' ? Option.some(blockedToBlocking(navigation, s)) : Option.none()
82
+ })
83
+
84
+ const blockNavigation: BlockNavigation = Object.assign(computed, {
85
+ isBlocking: LazyRef.map(blockState, (s) => s._tag === 'Blocked'),
86
+ whenBlocked: <A, E, R>(
87
+ handler: (blocking: Blocking) => Effect.Effect<A, E, R>,
88
+ options?: Parameters<typeof Stream.flatMap>[2],
89
+ ) =>
90
+ Stream.filterMap(computed.changes, (blocking) => blocking).pipe(
91
+ Stream.flatMap(handler, options),
92
+ Stream.runDrain,
93
+ ),
94
+ })
101
95
 
102
96
  return blockNavigation
103
97
  })
@@ -105,9 +99,15 @@ export const useBlockNavigation = <R = never>(
105
99
  function blockedToBlocking(navigation: Navigation, state: Blocked): Blocking {
106
100
  return {
107
101
  ...state.event,
108
- cancel: Effect.zipRight(Deferred.fail(state.deferred, cancelNavigation), navigation.currentEntry),
102
+ cancel: Effect.zipRight(
103
+ Deferred.failSync(state.deferred, () => new CancelNavigation()),
104
+ navigation.currentEntry,
105
+ ),
109
106
  confirm: Effect.zipRight(Deferred.succeed(state.deferred, undefined), navigation.currentEntry),
110
107
  redirect: (url, options) =>
111
- Effect.zipRight(Deferred.fail(state.deferred, redirectToPath(url, options)), navigation.currentEntry)
108
+ Effect.zipRight(
109
+ Deferred.fail(state.deferred, redirectToPath(url, options)),
110
+ navigation.currentEntry,
111
+ ),
112
112
  }
113
113
  }
@@ -0,0 +1,14 @@
1
+ import * as Schema from 'effect/Schema'
2
+ import { Url } from './Url.js'
3
+
4
+ export const Destination = Schema.Struct({
5
+ id: Schema.UUID,
6
+ key: Schema.UUID,
7
+ url: Url,
8
+ state: Schema.Unknown,
9
+ sameDocument: Schema.Boolean,
10
+ })
11
+
12
+ export type DestinationEncoded = Schema.Schema.Encoded<typeof Destination>
13
+
14
+ export interface Destination extends Schema.Schema.Type<typeof Destination> {}
package/src/Error.ts ADDED
@@ -0,0 +1,28 @@
1
+ import * as Schema from 'effect/Schema'
2
+ import { Url } from './Url.js'
3
+
4
+ export class NavigationError extends Schema.TaggedError<NavigationError>()('NavigationError', {
5
+ cause: Schema.Unknown,
6
+ }) {
7
+ static is = Schema.is(NavigationError)
8
+ }
9
+
10
+ export class RedirectError extends Schema.TaggedError<RedirectError>()('RedirectError', {
11
+ path: Schema.Union(Schema.String, Url),
12
+ options: Schema.optional(Schema.Record({ key: Schema.String, value: Schema.Unknown })),
13
+ }) {
14
+ static is = Schema.is(RedirectError)
15
+ }
16
+
17
+ export class CancelNavigation extends Schema.TaggedError<CancelNavigation>()(
18
+ 'CancelNavigation',
19
+ {},
20
+ ) {
21
+ static is = Schema.is(CancelNavigation)
22
+ }
23
+
24
+ export class FormSubmitError extends Schema.TaggedError<FormSubmitError>()('FormSubmitError', {
25
+ cause: Schema.Unknown,
26
+ }) {
27
+ static is = Schema.is(FormSubmitError)
28
+ }
package/src/Event.ts ADDED
@@ -0,0 +1,26 @@
1
+ import * as Schema from 'effect/Schema'
2
+ import { Destination } from './Destination.js'
3
+ import { NavigationType } from './NavigationType.js'
4
+ import { ProposedDestination } from './ProposedDestination.js'
5
+
6
+ export const TransitionEvent = Schema.Struct({
7
+ type: NavigationType,
8
+ from: Destination,
9
+ delta: Schema.Number,
10
+ to: Schema.Union(ProposedDestination, Destination),
11
+ info: Schema.Unknown,
12
+ })
13
+
14
+ export type TransitionEventEncoded = Schema.Schema.Encoded<typeof TransitionEvent>
15
+
16
+ export interface TransitionEvent extends Schema.Schema.Type<typeof TransitionEvent> {}
17
+
18
+ export const NavigationEvent = Schema.Struct({
19
+ type: NavigationType,
20
+ destination: Destination,
21
+ info: Schema.Unknown,
22
+ })
23
+
24
+ export type NavigationEventEncoded = Schema.Schema.Encoded<typeof NavigationEvent>
25
+
26
+ export interface NavigationEvent extends Schema.Schema.Type<typeof NavigationEvent> {}