@typed/navigation 0.5.3 → 0.6.0

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 (186) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +5 -0
  3. package/dist/cjs/Blocking.js +53 -0
  4. package/dist/cjs/Blocking.js.map +1 -0
  5. package/dist/cjs/Layer.js +27 -0
  6. package/dist/cjs/Layer.js.map +1 -0
  7. package/dist/cjs/Navigation.js +184 -62
  8. package/dist/cjs/Navigation.js.map +1 -1
  9. package/dist/cjs/index.js +36 -17
  10. package/dist/cjs/index.js.map +1 -1
  11. package/dist/cjs/internal/fromWindow.js +376 -0
  12. package/dist/cjs/internal/fromWindow.js.map +1 -0
  13. package/dist/cjs/internal/memory.js +67 -0
  14. package/dist/cjs/internal/memory.js.map +1 -0
  15. package/dist/cjs/internal/shared.js +403 -0
  16. package/dist/cjs/internal/shared.js.map +1 -0
  17. package/dist/dts/Blocking.d.ts +33 -0
  18. package/dist/dts/Blocking.d.ts.map +1 -0
  19. package/dist/dts/Layer.d.ts +44 -0
  20. package/dist/dts/Layer.d.ts.map +1 -0
  21. package/dist/dts/Navigation.d.ts +377 -0
  22. package/dist/dts/Navigation.d.ts.map +1 -0
  23. package/dist/dts/index.d.ts +17 -0
  24. package/dist/dts/index.d.ts.map +1 -0
  25. package/dist/dts/internal/fromWindow.d.ts +12 -0
  26. package/dist/dts/internal/fromWindow.d.ts.map +1 -0
  27. package/dist/dts/internal/memory.d.ts +6 -0
  28. package/dist/dts/internal/memory.d.ts.map +1 -0
  29. package/dist/dts/internal/shared.d.ts +139 -0
  30. package/dist/dts/internal/shared.d.ts.map +1 -0
  31. package/dist/esm/Blocking.js +39 -0
  32. package/dist/esm/Blocking.js.map +1 -0
  33. package/dist/esm/Layer.js +18 -0
  34. package/dist/esm/Layer.js.map +1 -0
  35. package/dist/esm/Navigation.js +166 -0
  36. package/dist/esm/Navigation.js.map +1 -0
  37. package/dist/esm/index.js +17 -0
  38. package/dist/esm/index.js.map +1 -0
  39. package/dist/esm/internal/fromWindow.js +273 -0
  40. package/dist/esm/internal/fromWindow.js.map +1 -0
  41. package/dist/esm/internal/memory.js +54 -0
  42. package/dist/esm/internal/memory.js.map +1 -0
  43. package/dist/esm/internal/shared.js +336 -0
  44. package/dist/esm/internal/shared.js.map +1 -0
  45. package/dist/esm/package.json +4 -0
  46. package/package.json +52 -32
  47. package/src/Blocking.ts +102 -0
  48. package/src/Layer.ts +53 -0
  49. package/src/Navigation.ts +342 -159
  50. package/src/index.ts +17 -3
  51. package/src/internal/fromWindow.ts +421 -0
  52. package/src/internal/memory.ts +79 -0
  53. package/src/internal/shared.ts +514 -0
  54. package/dist/DOM.d.ts +0 -12
  55. package/dist/DOM.d.ts.map +0 -1
  56. package/dist/DOM.js +0 -87
  57. package/dist/DOM.js.map +0 -1
  58. package/dist/Memory.d.ts +0 -10
  59. package/dist/Memory.d.ts.map +0 -1
  60. package/dist/Memory.js +0 -55
  61. package/dist/Memory.js.map +0 -1
  62. package/dist/Navigation.d.ts +0 -116
  63. package/dist/Navigation.d.ts.map +0 -1
  64. package/dist/Navigation.js +0 -36
  65. package/dist/Navigation.js.map +0 -1
  66. package/dist/_makeServerWindow.d.ts +0 -16
  67. package/dist/_makeServerWindow.d.ts.map +0 -1
  68. package/dist/_makeServerWindow.js +0 -9
  69. package/dist/_makeServerWindow.js.map +0 -1
  70. package/dist/cjs/DOM.d.ts +0 -12
  71. package/dist/cjs/DOM.d.ts.map +0 -1
  72. package/dist/cjs/DOM.js +0 -116
  73. package/dist/cjs/DOM.js.map +0 -1
  74. package/dist/cjs/Memory.d.ts +0 -10
  75. package/dist/cjs/Memory.d.ts.map +0 -1
  76. package/dist/cjs/Memory.js +0 -82
  77. package/dist/cjs/Memory.js.map +0 -1
  78. package/dist/cjs/Navigation.d.ts +0 -116
  79. package/dist/cjs/Navigation.d.ts.map +0 -1
  80. package/dist/cjs/_makeServerWindow.d.ts +0 -16
  81. package/dist/cjs/_makeServerWindow.d.ts.map +0 -1
  82. package/dist/cjs/_makeServerWindow.js +0 -36
  83. package/dist/cjs/_makeServerWindow.js.map +0 -1
  84. package/dist/cjs/constant.d.ts +0 -2
  85. package/dist/cjs/constant.d.ts.map +0 -1
  86. package/dist/cjs/constant.js +0 -30
  87. package/dist/cjs/constant.js.map +0 -1
  88. package/dist/cjs/dom-intent.d.ts +0 -28
  89. package/dist/cjs/dom-intent.d.ts.map +0 -1
  90. package/dist/cjs/dom-intent.js +0 -172
  91. package/dist/cjs/dom-intent.js.map +0 -1
  92. package/dist/cjs/history.d.ts +0 -31
  93. package/dist/cjs/history.d.ts.map +0 -1
  94. package/dist/cjs/history.js +0 -131
  95. package/dist/cjs/history.js.map +0 -1
  96. package/dist/cjs/index.d.ts +0 -4
  97. package/dist/cjs/index.d.ts.map +0 -1
  98. package/dist/cjs/json.d.ts +0 -13
  99. package/dist/cjs/json.d.ts.map +0 -1
  100. package/dist/cjs/json.js +0 -24
  101. package/dist/cjs/json.js.map +0 -1
  102. package/dist/cjs/memory-intent.d.ts +0 -27
  103. package/dist/cjs/memory-intent.d.ts.map +0 -1
  104. package/dist/cjs/memory-intent.js +0 -156
  105. package/dist/cjs/memory-intent.js.map +0 -1
  106. package/dist/cjs/model.d.ts +0 -22
  107. package/dist/cjs/model.d.ts.map +0 -1
  108. package/dist/cjs/model.js +0 -48
  109. package/dist/cjs/model.js.map +0 -1
  110. package/dist/cjs/shared-intent.d.ts +0 -14
  111. package/dist/cjs/shared-intent.d.ts.map +0 -1
  112. package/dist/cjs/shared-intent.js +0 -82
  113. package/dist/cjs/shared-intent.js.map +0 -1
  114. package/dist/cjs/storage.d.ts +0 -19
  115. package/dist/cjs/storage.d.ts.map +0 -1
  116. package/dist/cjs/storage.js +0 -101
  117. package/dist/cjs/storage.js.map +0 -1
  118. package/dist/cjs/util.d.ts +0 -5
  119. package/dist/cjs/util.d.ts.map +0 -1
  120. package/dist/cjs/util.js +0 -39
  121. package/dist/cjs/util.js.map +0 -1
  122. package/dist/constant.d.ts +0 -2
  123. package/dist/constant.d.ts.map +0 -1
  124. package/dist/constant.js +0 -4
  125. package/dist/constant.js.map +0 -1
  126. package/dist/dom-intent.d.ts +0 -28
  127. package/dist/dom-intent.d.ts.map +0 -1
  128. package/dist/dom-intent.js +0 -140
  129. package/dist/dom-intent.js.map +0 -1
  130. package/dist/history.d.ts +0 -31
  131. package/dist/history.d.ts.map +0 -1
  132. package/dist/history.js +0 -104
  133. package/dist/history.js.map +0 -1
  134. package/dist/index.d.ts +0 -4
  135. package/dist/index.d.ts.map +0 -1
  136. package/dist/index.js +0 -4
  137. package/dist/index.js.map +0 -1
  138. package/dist/intent.d.ts +0 -31
  139. package/dist/intent.d.ts.map +0 -1
  140. package/dist/intent.js +0 -157
  141. package/dist/intent.js.map +0 -1
  142. package/dist/json.d.ts +0 -13
  143. package/dist/json.d.ts.map +0 -1
  144. package/dist/json.js +0 -17
  145. package/dist/json.js.map +0 -1
  146. package/dist/memory-intent.d.ts +0 -27
  147. package/dist/memory-intent.d.ts.map +0 -1
  148. package/dist/memory-intent.js +0 -124
  149. package/dist/memory-intent.js.map +0 -1
  150. package/dist/model.d.ts +0 -22
  151. package/dist/model.d.ts.map +0 -1
  152. package/dist/model.js +0 -21
  153. package/dist/model.js.map +0 -1
  154. package/dist/shared-intent.d.ts +0 -14
  155. package/dist/shared-intent.d.ts.map +0 -1
  156. package/dist/shared-intent.js +0 -51
  157. package/dist/shared-intent.js.map +0 -1
  158. package/dist/storage.d.ts +0 -19
  159. package/dist/storage.d.ts.map +0 -1
  160. package/dist/storage.js +0 -73
  161. package/dist/storage.js.map +0 -1
  162. package/dist/tsconfig.cjs.build.tsbuildinfo +0 -1
  163. package/dist/util.d.ts +0 -5
  164. package/dist/util.d.ts.map +0 -1
  165. package/dist/util.js +0 -12
  166. package/dist/util.js.map +0 -1
  167. package/eslintrc.json +0 -3
  168. package/project.json +0 -46
  169. package/src/DOM.test.ts +0 -699
  170. package/src/DOM.ts +0 -163
  171. package/src/Memory.test.ts +0 -464
  172. package/src/Memory.ts +0 -102
  173. package/src/_makeServerWindow.ts +0 -28
  174. package/src/dom-intent.ts +0 -268
  175. package/src/history.ts +0 -165
  176. package/src/json.ts +0 -31
  177. package/src/memory-intent.ts +0 -224
  178. package/src/model.ts +0 -54
  179. package/src/shared-intent.ts +0 -117
  180. package/src/storage.ts +0 -101
  181. package/src/util.ts +0 -20
  182. package/tsconfig.build.json +0 -4
  183. package/tsconfig.build.tsbuildinfo +0 -1
  184. package/tsconfig.cjs.build.json +0 -22
  185. package/tsconfig.json +0 -27
  186. package/vite.config.mjs +0 -3
@@ -0,0 +1,403 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.NavigationState = void 0;
7
+ exports.getOriginFromUrl = getOriginFromUrl;
8
+ exports.getOriginalState = getOriginalState;
9
+ exports.getUrl = void 0;
10
+ exports.isDestination = isDestination;
11
+ exports.isPatchedState = isPatchedState;
12
+ exports.makeDestination = makeDestination;
13
+ exports.makeHandlersState = makeHandlersState;
14
+ exports.makeOrUpdateDestination = makeOrUpdateDestination;
15
+ exports.makeRedirectEvent = makeRedirectEvent;
16
+ exports.setupFromModelAndIntent = setupFromModelAndIntent;
17
+ exports.upgradeProposedDestination = upgradeProposedDestination;
18
+ var _schema = /*#__PURE__*/require("@effect/schema");
19
+ var RefSubject = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@typed/fx/RefSubject"));
20
+ var _id = /*#__PURE__*/require("@typed/id");
21
+ var _effect = /*#__PURE__*/require("effect");
22
+ var _Navigation = /*#__PURE__*/require("../Navigation");
23
+ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
24
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
25
+ const NavigationState = exports.NavigationState = /*#__PURE__*/_schema.Schema.struct({
26
+ entries: /*#__PURE__*/_schema.Schema.array(_Navigation.Destination),
27
+ index: _schema.Schema.number,
28
+ transition: /*#__PURE__*/_schema.Schema.optionFromNullable(_Navigation.Transition)
29
+ });
30
+ const getUrl = (origin, urlOrPath) => {
31
+ return typeof urlOrPath === "string" ? new URL(urlOrPath, origin) : urlOrPath;
32
+ };
33
+ exports.getUrl = getUrl;
34
+ function setupFromModelAndIntent(modelAndIntent, origin, base, getRandomValues, newNavigationState) {
35
+ const {
36
+ beforeHandlers,
37
+ canGoBack,
38
+ canGoForward,
39
+ commit,
40
+ handlers,
41
+ state
42
+ } = modelAndIntent;
43
+ const entries = state.map(s => s.entries);
44
+ const currentEntry = state.map(s => s.entries[s.index]);
45
+ const transition = state.map(s => s.transition);
46
+ const runBeforeHandlers = event => _effect.Effect.gen(function* (_) {
47
+ const handlers = yield* _(beforeHandlers);
48
+ const matches = [];
49
+ for (const [handler, ctx] of handlers) {
50
+ const exit = yield* _(handler(event), _effect.Effect.provide(ctx), _effect.Effect.either);
51
+ if (_effect.Either.isRight(exit)) {
52
+ const match = exit.right;
53
+ if (_effect.Option.isSome(match)) {
54
+ matches.push(_effect.Effect.provide(match.value, ctx));
55
+ }
56
+ } else {
57
+ return _effect.Option.some(exit.left);
58
+ }
59
+ }
60
+ if (matches.length > 0) {
61
+ for (const match of matches) {
62
+ const exit = yield* _(match, _effect.Effect.either);
63
+ if (_effect.Either.isLeft(exit)) {
64
+ return _effect.Option.some(exit.left);
65
+ }
66
+ }
67
+ }
68
+ return _effect.Option.none();
69
+ });
70
+ const runHandlers = event => _effect.Effect.gen(function* (_) {
71
+ const eventHandlers = yield* _(handlers);
72
+ const matches = [];
73
+ for (const [handler, ctx] of eventHandlers) {
74
+ const match = yield* _(handler(event), _effect.Effect.provide(ctx));
75
+ if (_effect.Option.isSome(match)) {
76
+ matches.push(_effect.Effect.provide(match.value, ctx));
77
+ }
78
+ }
79
+ if (matches.length > 0) {
80
+ yield* _(_effect.Effect.all(matches));
81
+ }
82
+ });
83
+ const runNavigationEvent = (beforeEvent, get, set, depth, skipCommit = false) => _effect.Effect.gen(function* (_) {
84
+ let current = yield* _(get);
85
+ current = yield* _(set({
86
+ ...current,
87
+ transition: _effect.Option.some(beforeEvent)
88
+ }));
89
+ if (!skipCommit) {
90
+ const beforeError = yield* _(runBeforeHandlers(beforeEvent));
91
+ if (_effect.Option.isSome(beforeError)) {
92
+ return yield* _(handleError(beforeError.value, get, set, depth));
93
+ }
94
+ }
95
+ const to = isDestination(beforeEvent.to) ? beforeEvent.to : yield* _(upgradeProposedDestination(beforeEvent.to));
96
+ if (!skipCommit) {
97
+ yield* _(commit(to, beforeEvent));
98
+ }
99
+ if (newNavigationState) {
100
+ const {
101
+ entries,
102
+ index
103
+ } = yield* _(set(newNavigationState()));
104
+ return entries[index];
105
+ } else {
106
+ const event = {
107
+ type: beforeEvent.type,
108
+ info: beforeEvent.info,
109
+ destination: to
110
+ };
111
+ if (beforeEvent.type === "push") {
112
+ const index = current.index + 1;
113
+ const entries = current.entries.slice(0, index).concat([to]);
114
+ yield* _(set({
115
+ entries,
116
+ index,
117
+ transition: _effect.Option.none()
118
+ }));
119
+ } else if (beforeEvent.type === "replace") {
120
+ const index = current.index;
121
+ const before = current.entries.slice(0, index);
122
+ const after = current.entries.slice(index + 1);
123
+ const entries = [...before, to, ...after];
124
+ yield* _(set({
125
+ entries,
126
+ index,
127
+ transition: _effect.Option.none()
128
+ }));
129
+ } else if (beforeEvent.type === "reload") {
130
+ yield* _(set({
131
+ ...current,
132
+ transition: _effect.Option.none()
133
+ }));
134
+ } else {
135
+ const {
136
+ delta
137
+ } = beforeEvent;
138
+ const nextIndex = current.index + delta;
139
+ yield* _(set({
140
+ ...current,
141
+ index: nextIndex,
142
+ transition: _effect.Option.none()
143
+ }));
144
+ }
145
+ yield* _(runHandlers(event));
146
+ }
147
+ return to;
148
+ }).pipe(_id.GetRandomValues.provide(getRandomValues));
149
+ const handleError = (error, get, set, depth) => _effect.Effect.gen(function* (_) {
150
+ if (depth >= 25) {
151
+ return yield* _(_effect.Effect.dieMessage(`Redirect loop detected.`));
152
+ }
153
+ const {
154
+ entries,
155
+ index
156
+ } = yield* _(get);
157
+ const from = entries[index];
158
+ if (error._tag === "CancelNavigation") {
159
+ yield* _(set({
160
+ entries,
161
+ index,
162
+ transition: _effect.Option.none()
163
+ }));
164
+ return from;
165
+ } else {
166
+ const event = yield* _(makeRedirectEvent(origin, error, from));
167
+ return yield* _(runNavigationEvent(event, get, set, depth + 1));
168
+ }
169
+ });
170
+ const navigate = (pathOrUrl, options, skipCommit = false) => state.runUpdate((get, set) => _effect.Effect.gen(function* (_) {
171
+ const state = yield* _(get);
172
+ const from = state.entries[state.index];
173
+ const history = options?.history ?? "auto";
174
+ const to = yield* _(makeOrUpdateDestination(state, getUrl(origin, pathOrUrl), options?.state, origin), _id.GetRandomValues.provide(getRandomValues));
175
+ const type = history === "auto" ? from.key === to.key ? "replace" : "push" : history;
176
+ const event = {
177
+ type,
178
+ from,
179
+ to,
180
+ delta: type === "replace" ? 0 : 1,
181
+ info: options?.info
182
+ };
183
+ return yield* _(runNavigationEvent(event, get, set, 0, skipCommit));
184
+ }));
185
+ const traverseTo = (key, options, skipCommit = false) => state.runUpdate((get, set) => _effect.Effect.gen(function* (_) {
186
+ const state = yield* _(get);
187
+ const {
188
+ entries,
189
+ index
190
+ } = state;
191
+ const from = entries[index];
192
+ const nextIndex = entries.findIndex(e => e.key === key);
193
+ if (nextIndex === -1) return from;
194
+ const id = yield* _(_id.makeUuid, _id.GetRandomValues.provide(getRandomValues));
195
+ const to = {
196
+ ...entries[nextIndex],
197
+ id
198
+ };
199
+ const delta = nextIndex - index;
200
+ const event = {
201
+ type: "traverse",
202
+ from,
203
+ to,
204
+ delta,
205
+ info: options?.info
206
+ };
207
+ return yield* _(runNavigationEvent(event, get, set, 0, skipCommit));
208
+ }));
209
+ const back = (options, skipCommit = false) => _effect.Effect.gen(function* (_) {
210
+ const {
211
+ entries,
212
+ index
213
+ } = yield* _(state);
214
+ if (index === 0) return entries[index];
215
+ const {
216
+ key
217
+ } = entries[index - 1];
218
+ return yield* _(traverseTo(key, options, skipCommit));
219
+ });
220
+ const forward = (options, skipCommit = false) => _effect.Effect.gen(function* (_) {
221
+ const {
222
+ entries,
223
+ index
224
+ } = yield* _(state);
225
+ if (index === entries.length - 1) return entries[index];
226
+ const {
227
+ key
228
+ } = entries[index + 1];
229
+ return yield* _(traverseTo(key, options, skipCommit));
230
+ });
231
+ const reload = (options, skipCommit = false) => state.runUpdate((get, set) => _effect.Effect.gen(function* (_) {
232
+ const {
233
+ entries,
234
+ index
235
+ } = yield* _(state);
236
+ const current = entries[index];
237
+ const event = {
238
+ type: "reload",
239
+ from: current,
240
+ to: current,
241
+ delta: 0,
242
+ info: options?.info
243
+ };
244
+ return yield* _(runNavigationEvent(event, get, set, 0, skipCommit));
245
+ }));
246
+ const beforeNavigation = handler => _effect.Effect.contextWithEffect(ctx => {
247
+ const entry = [handler, ctx];
248
+ return _effect.Effect.zipRight(beforeHandlers.update(handlers => new Set([...handlers, entry])), _effect.Effect.addFinalizer(() => beforeHandlers.update(handlers => {
249
+ const updated = new Set(handlers);
250
+ updated.delete(entry);
251
+ return updated;
252
+ })));
253
+ });
254
+ const onNavigation = handler => _effect.Effect.contextWithEffect(ctx => {
255
+ const entry = [handler, ctx];
256
+ return _effect.Effect.zipRight(handlers.update(handlers => new Set([...handlers, entry])), _effect.Effect.addFinalizer(() => handlers.update(handlers => {
257
+ const updated = new Set(handlers);
258
+ updated.delete(entry);
259
+ return updated;
260
+ })));
261
+ });
262
+ const updateCurrentEntry = options => state.runUpdate((get, set) => _effect.Effect.gen(function* (_) {
263
+ const {
264
+ entries,
265
+ index
266
+ } = yield* _(get);
267
+ const current = entries[index];
268
+ const event = {
269
+ type: "replace",
270
+ from: current,
271
+ to: {
272
+ ...current,
273
+ state: options.state
274
+ },
275
+ delta: 0,
276
+ info: null
277
+ };
278
+ return yield* _(runNavigationEvent(event, get, set, 0));
279
+ }));
280
+ const navigation = {
281
+ back,
282
+ base,
283
+ beforeNavigation,
284
+ canGoBack,
285
+ canGoForward,
286
+ currentEntry,
287
+ entries,
288
+ forward,
289
+ navigate,
290
+ onNavigation,
291
+ origin,
292
+ reload,
293
+ transition,
294
+ traverseTo,
295
+ updateCurrentEntry
296
+ };
297
+ return navigation;
298
+ }
299
+ function makeRedirectEvent(origin, redirect, from) {
300
+ return _effect.Effect.gen(function* (_) {
301
+ const url = getUrl(origin, redirect.path);
302
+ const to = yield* _(makeDestination(url, redirect.options?.state, origin));
303
+ const event = {
304
+ type: "replace",
305
+ from,
306
+ to,
307
+ delta: 0,
308
+ info: redirect.options?.info
309
+ };
310
+ return event;
311
+ });
312
+ }
313
+ function makeOrUpdateDestination(navigationState, url, state, origin) {
314
+ return _effect.Effect.gen(function* (_) {
315
+ const current = navigationState.entries[navigationState.index];
316
+ const isSameOriginAndPath = url.origin === current.url.origin && url.pathname === current.url.pathname;
317
+ if (isSameOriginAndPath) {
318
+ const id = yield* _(_id.makeUuid);
319
+ const destination = {
320
+ id,
321
+ key: current.key,
322
+ url,
323
+ state: getOriginalState(state),
324
+ sameDocument: url.origin === origin
325
+ };
326
+ return destination;
327
+ } else {
328
+ return yield* _(makeDestination(url, state, origin));
329
+ }
330
+ });
331
+ }
332
+ function makeDestination(url, state, origin) {
333
+ return _effect.Effect.gen(function* (_) {
334
+ if (isPatchedState(state)) {
335
+ const destination = {
336
+ id: state.id,
337
+ key: state.key,
338
+ url,
339
+ state: state.originalHistoryState,
340
+ sameDocument: url.origin === origin
341
+ };
342
+ return destination;
343
+ }
344
+ const id = yield* _(_id.makeUuid);
345
+ const key = yield* _(_id.makeUuid);
346
+ const destination = {
347
+ id,
348
+ key,
349
+ url,
350
+ state,
351
+ sameDocument: url.origin === origin
352
+ };
353
+ return destination;
354
+ });
355
+ }
356
+ function upgradeProposedDestination(proposed) {
357
+ return _effect.Effect.gen(function* (_) {
358
+ const id = yield* _(_id.makeUuid);
359
+ const key = yield* _(_id.makeUuid);
360
+ const destination = {
361
+ id,
362
+ key,
363
+ url: proposed.url,
364
+ state: proposed.state,
365
+ sameDocument: proposed.sameDocument
366
+ };
367
+ return destination;
368
+ });
369
+ }
370
+ function isPatchedState(state) {
371
+ if (state === null || !(typeof state === "object") || Array.isArray(state)) return false;
372
+ if ("id" in state && "key" in state && "originalHistoryState" in state) return true;
373
+ return false;
374
+ }
375
+ function getOriginalState(state) {
376
+ if (isPatchedState(state)) return state.originalHistoryState;
377
+ return state;
378
+ }
379
+ function getOriginFromUrl(url) {
380
+ try {
381
+ if (typeof url === "string") {
382
+ return new URL(url).origin;
383
+ } else {
384
+ return url.origin;
385
+ }
386
+ } catch {
387
+ return "http://localhost";
388
+ }
389
+ }
390
+ function isDestination(proposed) {
391
+ return "id" in proposed && "key" in proposed;
392
+ }
393
+ function makeHandlersState() {
394
+ return _effect.Effect.gen(function* (_) {
395
+ const beforeHandlers = yield* _(RefSubject.fromEffect(_effect.Effect.sync(() => new Set())));
396
+ const handlers = yield* _(RefSubject.fromEffect(_effect.Effect.sync(() => new Set())));
397
+ return {
398
+ beforeHandlers,
399
+ handlers
400
+ };
401
+ });
402
+ }
403
+ //# sourceMappingURL=shared.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shared.js","names":["_schema","require","RefSubject","_interopRequireWildcard","_id","_effect","_Navigation","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","prototype","hasOwnProperty","call","i","set","NavigationState","exports","Schema","struct","entries","array","Destination","index","number","transition","optionFromNullable","Transition","getUrl","origin","urlOrPath","URL","setupFromModelAndIntent","modelAndIntent","base","getRandomValues","newNavigationState","beforeHandlers","canGoBack","canGoForward","commit","handlers","state","map","s","currentEntry","runBeforeHandlers","event","Effect","gen","_","matches","handler","ctx","exit","provide","either","Either","isRight","match","right","Option","isSome","push","value","some","left","length","isLeft","none","runHandlers","eventHandlers","all","runNavigationEvent","beforeEvent","depth","skipCommit","current","beforeError","handleError","to","isDestination","upgradeProposedDestination","type","info","destination","slice","concat","before","after","delta","nextIndex","pipe","GetRandomValues","error","dieMessage","from","_tag","makeRedirectEvent","navigate","pathOrUrl","options","runUpdate","history","makeOrUpdateDestination","key","traverseTo","findIndex","id","makeUuid","back","forward","reload","beforeNavigation","contextWithEffect","entry","zipRight","update","Set","addFinalizer","updated","delete","onNavigation","updateCurrentEntry","navigation","redirect","url","path","makeDestination","navigationState","isSameOriginAndPath","pathname","getOriginalState","sameDocument","isPatchedState","originalHistoryState","proposed","Array","isArray","getOriginFromUrl","makeHandlersState","fromEffect","sync"],"sources":["../../../src/internal/shared.ts"],"sourcesContent":[null],"mappings":"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"}
@@ -0,0 +1,33 @@
1
+ /**
2
+ * @since 1.0.0
3
+ */
4
+ import type * as Computed from "@typed/fx/Computed";
5
+ import type { Scope } from "effect";
6
+ import { Effect, Option } from "effect";
7
+ import type { BeforeNavigationEvent, CancelNavigation, Destination, NavigateOptions, RedirectError } from "./Navigation";
8
+ import { Navigation } from "./Navigation";
9
+ /**
10
+ * @since 1.0.0
11
+ */
12
+ export interface BlockNavigation extends Computed.Computed<never, never, Option.Option<Blocking>> {
13
+ readonly isBlocking: Computed.Computed<never, never, boolean>;
14
+ }
15
+ /**
16
+ * @since 1.0.0
17
+ */
18
+ export interface Blocking extends BeforeNavigationEvent {
19
+ readonly cancel: Effect.Effect<never, never, Destination>;
20
+ readonly confirm: Effect.Effect<never, never, Destination>;
21
+ readonly redirect: (urlOrPath: string | URL, options?: NavigateOptions) => Effect.Effect<never, never, Destination>;
22
+ }
23
+ /**
24
+ * @since 1.0.0
25
+ */
26
+ export interface UseBlockNavigationParams<R = never> {
27
+ readonly shouldBlock?: (event: BeforeNavigationEvent) => Effect.Effect<R, RedirectError | CancelNavigation, boolean>;
28
+ }
29
+ /**
30
+ * @since 1.0.0
31
+ */
32
+ export declare const useBlockNavigation: <R = never>(params?: UseBlockNavigationParams<R>) => Effect.Effect<Navigation | Scope.Scope | R, never, BlockNavigation>;
33
+ //# sourceMappingURL=Blocking.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Blocking.d.ts","sourceRoot":"","sources":["../../src/Blocking.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,KAAK,QAAQ,MAAM,oBAAoB,CAAA;AAEnD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAA;AACnC,OAAO,EAAY,MAAM,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AACjD,OAAO,KAAK,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,WAAW,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AACxH,OAAO,EAAoB,UAAU,EAAkB,MAAM,cAAc,CAAA;AAE3E;;GAEG;AACH,MAAM,WAAW,eAAgB,SAAQ,QAAQ,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IAC/F,QAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,CAAC,CAAA;CAC9D;AAED;;GAEG;AACH,MAAM,WAAW,QAAS,SAAQ,qBAAqB;IACrD,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,WAAW,CAAC,CAAA;IACzD,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,WAAW,CAAC,CAAA;IAC1D,QAAQ,CAAC,QAAQ,EAAE,CAAC,SAAS,EAAE,MAAM,GAAG,GAAG,EAAE,OAAO,CAAC,EAAE,eAAe,KAAK,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,WAAW,CAAC,CAAA;CACpH;AAqBD;;GAEG;AACH,MAAM,WAAW,wBAAwB,CAAC,CAAC,GAAG,KAAK;IACjD,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,qBAAqB,KAAK,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,aAAa,GAAG,gBAAgB,EAAE,OAAO,CAAC,CAAA;CACrH;AAED;;GAEG;AACH,eAAO,MAAM,kBAAkB,0HAmC3B,CAAA"}
@@ -0,0 +1,44 @@
1
+ /**
2
+ * @since 1.0.0
3
+ */
4
+ import type { Effect, Layer } from "effect";
5
+ import type { BeforeNavigationEvent, Destination, Navigation, NavigationError } from "./Navigation";
6
+ /**
7
+ * @since 1.0.0
8
+ */
9
+ export declare const fromWindow: Layer.Layer<Window, never, Navigation>;
10
+ /**
11
+ * @since 1.0.0
12
+ */
13
+ export interface MemoryOptions {
14
+ readonly entries: ReadonlyArray<Destination>;
15
+ readonly origin?: string | undefined;
16
+ readonly base?: string | undefined;
17
+ readonly currentIndex?: number | undefined;
18
+ readonly maxEntries?: number | undefined;
19
+ readonly commit?: Commit;
20
+ }
21
+ /**
22
+ * @since 1.0.0
23
+ */
24
+ export declare const memory: (options: MemoryOptions) => Layer.Layer<never, never, Navigation>;
25
+ /**
26
+ * @since 1.0.0
27
+ */
28
+ export interface InitialMemoryOptions {
29
+ readonly url: string | URL;
30
+ readonly origin?: string | undefined;
31
+ readonly base?: string | undefined;
32
+ readonly maxEntries?: number | undefined;
33
+ readonly state?: unknown;
34
+ readonly commit?: Commit;
35
+ }
36
+ /**
37
+ * @since 1.0.0
38
+ */
39
+ export declare const initialMemory: (options: InitialMemoryOptions) => Layer.Layer<never, never, Navigation>;
40
+ /**
41
+ * @since 1.0.0
42
+ */
43
+ export type Commit = (to: Destination, event: BeforeNavigationEvent) => Effect.Effect<never, NavigationError, void>;
44
+ //# sourceMappingURL=Layer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Layer.d.ts","sourceRoot":"","sources":["../../src/Layer.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAA;AAG3C,OAAO,KAAK,EAAE,qBAAqB,EAAE,WAAW,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AAEnG;;GAEG;AACH,eAAO,MAAM,UAAU,EAAE,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,EAAE,UAAU,CAAiC,CAAA;AAE/F;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAC,WAAW,CAAC,CAAA;IAC5C,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IACpC,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IAClC,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IAC1C,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IACxC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CACzB;AAED;;GAEG;AACH,eAAO,MAAM,MAAM,EAAE,CAAC,OAAO,EAAE,aAAa,KAAK,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,UAAU,CAAyB,CAAA;AAE9G;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;IAC1B,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IACpC,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IAClC,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IACxC,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAA;IACxB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CACzB;AAED;;GAEG;AACH,eAAO,MAAM,aAAa,EAAE,CAAC,OAAO,EAAE,oBAAoB,KAAK,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,UAAU,CACrE,CAAA;AAE9B;;GAEG;AACH,MAAM,MAAM,MAAM,GAAG,CAAC,EAAE,EAAE,WAAW,EAAE,KAAK,EAAE,qBAAqB,KAAK,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,eAAe,EAAE,IAAI,CAAC,CAAA"}