@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
package/dist/Memory.js DELETED
@@ -1,55 +0,0 @@
1
- import { pipe } from '@effect/data/Function';
2
- import * as Option from '@effect/data/Option';
3
- import * as Effect from '@effect/io/Effect';
4
- import { Navigation, NavigationType, } from './Navigation.js';
5
- import { makeIntent } from './memory-intent.js';
6
- import { makeModel } from './model.js';
7
- import { createKey } from './util.js';
8
- export function memory(options) {
9
- return Navigation.layerScoped(Effect.gen(function* ($) {
10
- const initial = {
11
- key: options.initialKey ?? (yield* $(createKey)),
12
- url: options.initialUrl,
13
- state: options.initialState,
14
- };
15
- const initialEvent = {
16
- destination: initial,
17
- hashChange: false,
18
- navigationType: NavigationType.Push,
19
- };
20
- const model = yield* $(makeModel([initialEvent], 0));
21
- const intent = makeIntent(model, options);
22
- // Used to ensure ordering of navigation events
23
- const lock = Effect.unsafeMakeSemaphore(1).withPermits(1);
24
- const handleNavigationError = (depth) => (error) => Effect.gen(function* ($) {
25
- if (depth >= 50) {
26
- throw new Error('Too many redirects. You may have an infinite loop of onNavigation handlers that are redirecting.');
27
- }
28
- switch (error._tag) {
29
- case 'NoSuchElementException':
30
- case 'CancelNavigation':
31
- return yield* $(model.currentEntry.get);
32
- case 'RedirectNavigation':
33
- return yield* $(Effect.catchAll(intent.navigate(error.url, error), handleNavigationError(depth + 1)));
34
- }
35
- });
36
- const catchNavigationError = (effect) => Effect.catchAll(effect, handleNavigationError(0));
37
- // Construct our service
38
- const navigation = {
39
- back: lock(catchNavigationError(intent.back)),
40
- base: '/',
41
- canGoBack: model.canGoBack,
42
- canGoForward: model.canGoForward,
43
- currentEntry: model.currentEntry,
44
- entries: model.entries,
45
- forward: lock(catchNavigationError(intent.forward)),
46
- goTo: (n) => pipe(n, intent.goTo, Effect.catchAll((a) => pipe(a, handleNavigationError(0), Effect.map(Option.some))), lock),
47
- navigate: (url, options) => pipe(intent.navigate(url, options), catchNavigationError, lock),
48
- onNavigation: (handler, options) => pipe(intent.onNavigation(handler, options), catchNavigationError, Effect.asUnit),
49
- onNavigationEnd: (handler, options) => Effect.asUnit(intent.onNavigationEnd(handler, options)),
50
- reload: lock(catchNavigationError(intent.reload)),
51
- };
52
- return navigation;
53
- }));
54
- }
55
- //# sourceMappingURL=Memory.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Memory.js","sourceRoot":"","sources":["../src/Memory.ts"],"names":[],"mappings":"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"}
@@ -1,116 +0,0 @@
1
- import * as Brand from '@effect/data/Brand';
2
- import { Option } from '@effect/data/Option';
3
- import * as Effect from '@effect/io/Effect';
4
- import * as Scope from '@effect/io/Scope';
5
- import * as Context from '@typed/context';
6
- import * as Fx from '@typed/fx';
7
- export interface Navigation {
8
- /**
9
- * Base path for all navigation entries.
10
- */
11
- readonly base: string;
12
- /**
13
- * The list of navigation entries that are currently kept in-memory and
14
- * saved within Local/Session Storage.
15
- */
16
- readonly entries: Fx.Computed<never, never, readonly Destination[]>;
17
- /**
18
- * The currently focused navigation entry.
19
- */
20
- readonly currentEntry: Fx.Computed<never, never, Destination>;
21
- /**
22
- * Navigate to a new URL. NavigateOptions can be used to control how the
23
- * navigation is handled via history.pushState or history.replaceState,
24
- * set/update the state of the navigation entry, or provide a key to use
25
- * for the navigation entry.
26
- */
27
- readonly navigate: (url: string, options?: NavigateOptions) => Effect.Effect<never, never, Destination>;
28
- /**
29
- * Subscribe to navigation events. Any handler can cancel the or redirect
30
- * the navigation by failing with a CancelNavigation or RedirectNavigation
31
- * error.
32
- */
33
- readonly onNavigation: <R>(handler: (event: NavigationEvent) => Effect.Effect<R, NavigationError, void>, options?: OnNavigationOptions) => Effect.Effect<R | Scope.Scope, never, void>;
34
- /**
35
- * Subscribe to navigation events after they have been commited.
36
- */
37
- readonly onNavigationEnd: <R>(handler: (event: NavigationEvent) => Effect.Effect<R, never, void>, options?: OnNavigationOptions) => Effect.Effect<R | Scope.Scope, never, void>;
38
- /**
39
- * Returns true if there is a previous navigation entry to navigate to.
40
- */
41
- readonly canGoBack: Fx.Computed<never, never, boolean>;
42
- /**
43
- * Navigate to the previous navigation entry. If you're on the first entry
44
- * then this will do nothing.
45
- */
46
- readonly back: Effect.Effect<never, never, Destination>;
47
- /**
48
- * Returns true if there is a next navigation entry to navigate to after you have gone back.
49
- */
50
- readonly canGoForward: Fx.Computed<never, never, boolean>;
51
- /**
52
- * Navigate to the next navigation entry. If you're on the last entry then
53
- * this will do nothing.
54
- */
55
- readonly forward: Effect.Effect<never, never, Destination>;
56
- /**
57
- * Reload the current navigation entry.
58
- */
59
- readonly reload: Effect.Effect<never, never, Destination>;
60
- /**
61
- * Navigate to a specific navigation entry by key. If the key does not
62
- * exist then this will do nothing visible to the user and return Option.none().
63
- */
64
- readonly goTo: (key: DestinationKey) => Effect.Effect<never, never, Option<Destination>>;
65
- }
66
- export declare const Navigation: Context.Tag<Navigation, Navigation>;
67
- export declare const navigate: (url: string, options?: NavigateOptions) => Effect.Effect<Navigation, never, Destination>;
68
- export declare const onNavigation: <R>(handler: (event: NavigationEvent) => Effect.Effect<R, never, void>) => Effect.Effect<Scope.Scope | Navigation | R, never, void>;
69
- export declare const canGoBack: Effect.Effect<Navigation, never, boolean> & Fx.Fx<Navigation, never, boolean>;
70
- export declare const back: Effect.Effect<Navigation, never, Destination>;
71
- export declare const canGoForward: Effect.Effect<Navigation, never, boolean> & Fx.Fx<Navigation, never, boolean>;
72
- export declare const forward: Effect.Effect<Navigation, never, Destination>;
73
- export declare const reload: Effect.Effect<Navigation, never, Destination>;
74
- export interface NavigateOptions {
75
- readonly state?: unknown;
76
- readonly history?: 'push' | 'replace';
77
- readonly key?: string;
78
- }
79
- export interface NavigationEvent {
80
- readonly destination: Destination;
81
- readonly hashChange: boolean;
82
- readonly navigationType: NavigationType;
83
- }
84
- export declare function NavigationEvent(destination: Destination, hashChange: boolean, navigationType: NavigationType): NavigationEvent;
85
- export interface Destination {
86
- readonly key: DestinationKey;
87
- readonly url: URL;
88
- readonly state: unknown;
89
- }
90
- export type DestinationKey = string & Brand.Brand<'DestinationKey'>;
91
- export declare const DestinationKey: Brand.Brand.Constructor<DestinationKey>;
92
- export declare function Destination(key: DestinationKey, url: URL, state?: unknown): Destination;
93
- export declare enum NavigationType {
94
- Push = "push",
95
- Reload = "reload",
96
- Replace = "replace",
97
- Back = "back",
98
- Forward = "forward"
99
- }
100
- export type NavigationError = CancelNavigation | RedirectNavigation;
101
- export interface CancelNavigation {
102
- readonly _tag: 'CancelNavigation';
103
- }
104
- export declare const cancelNavigation: Effect.Effect<never, CancelNavigation, never>;
105
- export declare function isCancelNavigation(error: NavigationError): error is CancelNavigation;
106
- export interface RedirectNavigation extends NavigateOptions {
107
- readonly _tag: 'RedirectNavigation';
108
- readonly url: string;
109
- }
110
- export declare const redirect: (url: string, options?: NavigateOptions) => Effect.Effect<never, RedirectNavigation, never>;
111
- export declare function isRedirectNavigation(error: NavigationError): error is RedirectNavigation;
112
- export interface OnNavigationOptions {
113
- readonly passive?: boolean;
114
- }
115
- export declare const getCurrentUrl: Effect.Effect<Navigation, never, URL>;
116
- //# sourceMappingURL=Navigation.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Navigation.d.ts","sourceRoot":"","sources":["../src/Navigation.ts"],"names":[],"mappings":"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"}
@@ -1,36 +0,0 @@
1
- import * as Brand from '@effect/data/Brand';
2
- import * as Effect from '@effect/io/Effect';
3
- import * as Context from '@typed/context';
4
- export const Navigation = Context.Tag('Navigation');
5
- export const navigate = (url, options) => Navigation.withEffect((n) => n.navigate(url, options));
6
- export const onNavigation = (handler) => Navigation.withEffect((n) => n.onNavigation(handler));
7
- export const canGoBack = Object.assign(Navigation.withEffect((n) => n.canGoBack), Navigation.withFx((n) => n.canGoBack));
8
- export const back = Navigation.withEffect((n) => n.back);
9
- export const canGoForward = Object.assign(Navigation.withEffect((n) => n.canGoForward), Navigation.withFx((n) => n.canGoForward));
10
- export const forward = Navigation.withEffect((n) => n.forward);
11
- export const reload = Navigation.withEffect((n) => n.reload);
12
- export function NavigationEvent(destination, hashChange, navigationType) {
13
- return { destination, hashChange, navigationType };
14
- }
15
- export const DestinationKey = Brand.nominal();
16
- export function Destination(key, url, state) {
17
- return { key, url, state };
18
- }
19
- export var NavigationType;
20
- (function (NavigationType) {
21
- NavigationType["Push"] = "push";
22
- NavigationType["Reload"] = "reload";
23
- NavigationType["Replace"] = "replace";
24
- NavigationType["Back"] = "back";
25
- NavigationType["Forward"] = "forward";
26
- })(NavigationType || (NavigationType = {}));
27
- export const cancelNavigation = Effect.fail({ _tag: 'CancelNavigation' });
28
- export function isCancelNavigation(error) {
29
- return error._tag === 'CancelNavigation';
30
- }
31
- export const redirect = (url, options = {}) => Effect.fail({ _tag: 'RedirectNavigation', url, ...options });
32
- export function isRedirectNavigation(error) {
33
- return error._tag === 'RedirectNavigation';
34
- }
35
- export const getCurrentUrl = Navigation.withEffect((n) => n.currentEntry.map((d) => d.url));
36
- //# sourceMappingURL=Navigation.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Navigation.js","sourceRoot":"","sources":["../src/Navigation.ts"],"names":[],"mappings":"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"}
@@ -1,16 +0,0 @@
1
- import type { Window, GlobalThis } from '@typed/dom';
2
- import * as happyDom from 'happy-dom';
3
- export interface ServerWindowOptions {
4
- readonly url: string;
5
- readonly innerWidth?: number;
6
- readonly innerHeight?: number;
7
- readonly settings?: {
8
- readonly disableJavaScriptEvaluation: boolean;
9
- readonly disableJavaScriptFileLoading: boolean;
10
- readonly disableCSSFileLoading: boolean;
11
- readonly enableFileSystemHttpRequests: boolean;
12
- };
13
- }
14
- export declare function makeServerWindow(options?: ServerWindowOptions): Window & GlobalThis & Pick<InstanceType<typeof happyDom.Window>, 'happyDOM'>;
15
- export declare const html5Doctype = "<!DOCTYPE html>";
16
- //# sourceMappingURL=_makeServerWindow.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"_makeServerWindow.d.ts","sourceRoot":"","sources":["../src/_makeServerWindow.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AACpD,OAAO,KAAK,QAAQ,MAAM,WAAW,CAAA;AAErC,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;IAEpB,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAA;IAC5B,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAA;IAC7B,QAAQ,CAAC,QAAQ,CAAC,EAAE;QAClB,QAAQ,CAAC,2BAA2B,EAAE,OAAO,CAAA;QAC7C,QAAQ,CAAC,4BAA4B,EAAE,OAAO,CAAA;QAC9C,QAAQ,CAAC,qBAAqB,EAAE,OAAO,CAAA;QACvC,QAAQ,CAAC,4BAA4B,EAAE,OAAO,CAAA;KAC/C,CAAA;CACF;AAED,wBAAgB,gBAAgB,CAC9B,OAAO,CAAC,EAAE,mBAAmB,GAC5B,MAAM,GAAG,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,QAAQ,CAAC,MAAM,CAAC,EAAE,UAAU,CAAC,CAO9E;AAED,eAAO,MAAM,YAAY,oBAAoB,CAAA"}
@@ -1,9 +0,0 @@
1
- import * as happyDom from 'happy-dom';
2
- export function makeServerWindow(options) {
3
- const win = new happyDom.Window({
4
- ...options,
5
- });
6
- return win;
7
- }
8
- export const html5Doctype = '<!DOCTYPE html>';
9
- //# sourceMappingURL=_makeServerWindow.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"_makeServerWindow.js","sourceRoot":"","sources":["../src/_makeServerWindow.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,QAAQ,MAAM,WAAW,CAAA;AAerC,MAAM,UAAU,gBAAgB,CAC9B,OAA6B;IAE7B,MAAM,GAAG,GACP,IAAI,QAAQ,CAAC,MAAM,CAAC;QAClB,GAAG,OAAO;KACX,CAAQ,CAAA;IAEX,OAAO,GAAG,CAAA;AACZ,CAAC;AAED,MAAM,CAAC,MAAM,YAAY,GAAG,iBAAiB,CAAA"}
package/dist/cjs/DOM.d.ts DELETED
@@ -1,12 +0,0 @@
1
- import * as Layer from '@effect/io/Layer';
2
- import { Location, History, Window, Storage, Document } from '@typed/dom';
3
- import { DestinationKey, Navigation } from './Navigation.js';
4
- export type NavigationServices = Window | Document | Location | History | Storage;
5
- export interface DomNavigationOptions {
6
- readonly initialKey?: DestinationKey;
7
- readonly maxEntries?: number;
8
- }
9
- export declare const dom: (options?: DomNavigationOptions) => Layer.Layer<NavigationServices, never, Navigation>;
10
- export declare function getBasePathFromHref(href: string): string;
11
- export declare function getCurrentPathFromLocation(location: Location | HTMLAnchorElement | URL): string;
12
- //# sourceMappingURL=DOM.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"DOM.d.ts","sourceRoot":"","sources":["../../src/DOM.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,KAAK,MAAM,kBAAkB,CAAA;AAEzC,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAqB,QAAQ,EAAE,MAAM,YAAY,CAAA;AAG5F,OAAO,EAAe,cAAc,EAAE,UAAU,EAAmB,MAAM,iBAAiB,CAAA;AAM1F,MAAM,MAAM,kBAAkB,GAAG,MAAM,GAAG,QAAQ,GAAG,QAAQ,GAAG,OAAO,GAAG,OAAO,CAAA;AAEjF,MAAM,WAAW,oBAAoB;IAGnC,QAAQ,CAAC,UAAU,CAAC,EAAE,cAAc,CAAA;IAIpC,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAA;CAC7B;AAED,eAAO,MAAM,GAAG,aACL,oBAAoB,KAC5B,WAAW,CAAC,kBAAkB,EAAE,KAAK,EAAE,UAAU,CAuHnD,CAAA;AAED,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,UAQ/C;AAED,wBAAgB,0BAA0B,CAAC,QAAQ,EAAE,QAAQ,GAAG,iBAAiB,GAAG,GAAG,UAEtF"}
package/dist/cjs/DOM.js DELETED
@@ -1,116 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || function (mod) {
19
- if (mod && mod.__esModule) return mod;
20
- var result = {};
21
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
- __setModuleDefault(result, mod);
23
- return result;
24
- };
25
- Object.defineProperty(exports, "__esModule", { value: true });
26
- exports.getCurrentPathFromLocation = exports.getBasePathFromHref = exports.dom = void 0;
27
- const Function_1 = require("@effect/data/Function");
28
- const Option = __importStar(require("@effect/data/Option"));
29
- const Effect = __importStar(require("@effect/io/Effect"));
30
- const Context = __importStar(require("@typed/context"));
31
- const dom_1 = require("@typed/dom");
32
- const Fx = __importStar(require("@typed/fx"));
33
- const Navigation_js_1 = require("./Navigation.js");
34
- const dom_intent_js_1 = require("./dom-intent.js");
35
- const history_js_1 = require("./history.js");
36
- const model_js_1 = require("./model.js");
37
- const storage_js_1 = require("./storage.js");
38
- const dom = (options = {}) => {
39
- return Navigation_js_1.Navigation.layerScoped(Effect.gen(function* ($) {
40
- // Get resources
41
- const context = yield* $(Effect.context());
42
- const document = Context.get(context, dom_1.Document);
43
- const base = document.querySelector('base');
44
- const baseHref = base ? getBasePathFromHref(base.href) : '/';
45
- // Patch History API to enable sending events
46
- const [history, historyEvents] = yield* $(history_js_1.patchHistory);
47
- // Create model and intent
48
- const [initialEntries, initialIndex] = yield* $((0, storage_js_1.getInitialValues)(baseHref, options));
49
- const model = yield* $((0, model_js_1.makeModel)(initialEntries, initialIndex));
50
- const intent = (0, dom_intent_js_1.makeIntent)(model, baseHref, history, options);
51
- // Used to ensure ordering of navigation events
52
- const lock = Effect.unsafeMakeSemaphore(1).withPermits(1);
53
- const handleNavigationError = (depth) => (error) => Effect.provideContext(Effect.gen(function* ($) {
54
- if (depth >= 50) {
55
- throw new Error('Too many redirects. You may have an infinite loop of onNavigation handlers that are redirecting.');
56
- }
57
- switch (error._tag) {
58
- case 'NoSuchElementException':
59
- case 'CancelNavigation':
60
- return yield* $(model.currentEntry.get);
61
- case 'RedirectNavigation':
62
- return yield* $(Effect.catchAll(intent.navigate(error.url, error), handleNavigationError(depth + 1)));
63
- }
64
- }), context);
65
- const catchNavigationError = (effect) => Effect.catchAll(effect, handleNavigationError(0));
66
- // Used to provide a locked effect with the current context
67
- const provideLocked = (effect) => Effect.provideContext(lock(effect), context);
68
- // Constructor our service
69
- const navigation = {
70
- back: provideLocked(catchNavigationError(intent.back(false))),
71
- base: baseHref,
72
- canGoBack: model.canGoBack,
73
- canGoForward: model.canGoForward,
74
- currentEntry: model.currentEntry,
75
- entries: model.entries,
76
- forward: provideLocked(catchNavigationError(intent.forward(false))),
77
- goTo: (a) => (0, Function_1.pipe)(a, intent.goTo, Effect.catchAll((a) => (0, Function_1.pipe)(a, handleNavigationError(0), Effect.map(Option.some))), provideLocked),
78
- navigate: (url, options) => (0, Function_1.pipe)(intent.navigate(url, options), catchNavigationError, provideLocked),
79
- onNavigation: (handler, options) => (0, Function_1.pipe)(intent.onNavigation(handler, options), catchNavigationError, Effect.asUnit),
80
- onNavigationEnd: (handler, options) => Effect.asUnit(intent.onNavigationEnd(handler, options)),
81
- reload: provideLocked(catchNavigationError(intent.reload)),
82
- };
83
- // Listen to various events and update our model
84
- yield* $(Fx.mergeAll(
85
- // Listen to history events and keep track of entries
86
- (0, Function_1.pipe)(historyEvents, Fx.mapEffect((event) => lock((0, history_js_1.onHistoryEvent)(event, intent)))),
87
- // Listen to hash changes and push them to the history
88
- (0, Function_1.pipe)((0, dom_1.addWindowListener)('hashchange', { capture: true }), Fx.mapEffect((ev) => lock(intent.push(ev.newURL, { state: history.state }, true)))),
89
- // Listen to popstate events and go to the correct entry
90
- (0, Function_1.pipe)((0, dom_1.addWindowListener)('popstate'), Fx.mapEffect(Effect.unifiedFn((ev) => {
91
- // TODO: Should we throw some kind of error here?
92
- // This should never happen if you are solely using the Navigation Service
93
- if (!ev.state || !ev.state.key) {
94
- return lock(intent.push(location.href, { state: history.state }, true));
95
- }
96
- return lock(intent.goTo(ev.state.key));
97
- })))), Fx.drain, Effect.forkScoped);
98
- return navigation;
99
- }));
100
- };
101
- exports.dom = dom;
102
- function getBasePathFromHref(href) {
103
- try {
104
- const url = new URL(href);
105
- return getCurrentPathFromLocation(url);
106
- }
107
- catch {
108
- return href;
109
- }
110
- }
111
- exports.getBasePathFromHref = getBasePathFromHref;
112
- function getCurrentPathFromLocation(location) {
113
- return location.pathname + location.search + location.hash;
114
- }
115
- exports.getCurrentPathFromLocation = getCurrentPathFromLocation;
116
- //# sourceMappingURL=DOM.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"DOM.js","sourceRoot":"","sources":["../../src/DOM.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,oDAA4C;AAC5C,4DAA6C;AAE7C,0DAA2C;AAE3C,wDAAyC;AACzC,oCAA4F;AAC5F,8CAA+B;AAE/B,mDAA0F;AAC1F,mDAA4C;AAC5C,6CAA2D;AAC3D,yCAAsC;AACtC,6CAA+C;AAcxC,MAAM,GAAG,GAAG,CACjB,UAAgC,EAAE,EACkB,EAAE;IACtD,OAAO,0BAAU,CAAC,WAAW,CAC3B,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;QACrB,gBAAgB;QAChB,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,EAAsB,CAAC,CAAA;QAC9D,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,cAAQ,CAAC,CAAA;QAC/C,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAA;QAC3C,MAAM,QAAQ,GAAG,IAAI,CAAC,CAAC,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAA;QAE5D,6CAA6C;QAC7C,MAAM,CAAC,OAAO,EAAE,aAAa,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,yBAAY,CAAC,CAAA;QAEvD,0BAA0B;QAC1B,MAAM,CAAC,cAAc,EAAE,YAAY,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,IAAA,6BAAgB,EAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAA;QAEpF,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,IAAA,oBAAS,EAAC,cAAc,EAAE,YAAY,CAAC,CAAC,CAAA;QAC/D,MAAM,MAAM,GAAG,IAAA,0BAAU,EAAC,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,CAAC,CAAA;QAE5D,+CAA+C;QAC/C,MAAM,IAAI,GAAG,MAAM,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAA;QAEzD,MAAM,qBAAqB,GACzB,CAAC,KAAa,EAAE,EAAE,CAClB,CACE,KAAqD,EACX,EAAE,CAC5C,MAAM,CAAC,cAAc,CACnB,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;YACrB,IAAI,KAAK,IAAI,EAAE,EAAE;gBACf,MAAM,IAAI,KAAK,CACb,kGAAkG,CACnG,CAAA;aACF;YAED,QAAQ,KAAK,CAAC,IAAI,EAAE;gBAClB,KAAK,wBAAwB,CAAC;gBAC9B,KAAK,kBAAkB;oBACrB,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC,GAAG,CAAC,CAAA;gBACzC,KAAK,oBAAoB;oBACvB,OAAO,KAAK,CAAC,CAAC,CAAC,CACb,MAAM,CAAC,QAAQ,CACb,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,EACjC,qBAAqB,CAAC,KAAK,GAAG,CAAC,CAAC,CACjC,CACF,CAAA;aACJ;QACH,CAAC,CAAC,EACF,OAAO,CACR,CAAA;QAEL,MAAM,oBAAoB,GAAG,CAC3B,MAA2E,EAC3E,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,qBAAqB,CAAC,CAAC,CAAC,CAAC,CAAA;QAEtD,2DAA2D;QAC3D,MAAM,aAAa,GAAG,CAAO,MAA+C,EAAE,EAAE,CAC9E,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,CAAA;QAE9C,0BAA0B;QAC1B,MAAM,UAAU,GAAe;YAC7B,IAAI,EAAE,aAAa,CAAC,oBAAoB,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;YAC7D,IAAI,EAAE,QAAQ;YACd,SAAS,EAAE,KAAK,CAAC,SAAS;YAC1B,YAAY,EAAE,KAAK,CAAC,YAAY;YAChC,YAAY,EAAE,KAAK,CAAC,YAAY;YAChC,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,OAAO,EAAE,aAAa,CAAC,oBAAoB,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;YACnE,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,CACV,IAAA,eAAI,EACF,CAAC,EACD,MAAM,CAAC,IAAI,EACX,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAA,eAAI,EAAC,CAAC,EAAE,qBAAqB,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAClF,aAAa,CACd;YACH,QAAQ,EAAE,CAAC,GAAG,EAAE,OAAO,EAAE,EAAE,CACzB,IAAA,eAAI,EAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE,OAAO,CAAC,EAAE,oBAAoB,EAAE,aAAa,CAAC;YAC1E,YAAY,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,CACjC,IAAA,eAAI,EAAC,MAAM,CAAC,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,oBAAoB,EAAE,MAAM,CAAC,MAAM,CAAC;YAClF,eAAe,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,CACpC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YACzD,MAAM,EAAE,aAAa,CAAC,oBAAoB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;SAC3D,CAAA;QAED,gDAAgD;QAChD,KAAK,CAAC,CAAC,CAAC,CACN,EAAE,CAAC,QAAQ;QACT,qDAAqD;QACrD,IAAA,eAAI,EACF,aAAa,EACb,EAAE,CAAC,SAAS,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,IAAA,2BAAc,EAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,CAC7D;QACD,sDAAsD;QACtD,IAAA,eAAI,EACF,IAAA,uBAAiB,EAAC,YAAY,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,EAClD,EAAE,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,CACnF;QACD,wDAAwD;QACxD,IAAA,eAAI,EACF,IAAA,uBAAiB,EAAC,UAAU,CAAC,EAC7B,EAAE,CAAC,SAAS,CACV,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,EAAE;YACtB,iDAAiD;YACjD,0EAA0E;YAC1E,IAAI,CAAC,EAAE,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE;gBAC9B,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,CAAC,CAAA;aACxE;YAED,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAA;QACxC,CAAC,CAAC,CACH,CACF,CACF,EACD,EAAE,CAAC,KAAK,EACR,MAAM,CAAC,UAAU,CAClB,CAAA;QAED,OAAO,UAAU,CAAA;IACnB,CAAC,CAAC,CACH,CAAA;AACH,CAAC,CAAA;AAzHY,QAAA,GAAG,OAyHf;AAED,SAAgB,mBAAmB,CAAC,IAAY;IAC9C,IAAI;QACF,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,CAAA;QAEzB,OAAO,0BAA0B,CAAC,GAAG,CAAC,CAAA;KACvC;IAAC,MAAM;QACN,OAAO,IAAI,CAAA;KACZ;AACH,CAAC;AARD,kDAQC;AAED,SAAgB,0BAA0B,CAAC,QAA4C;IACrF,OAAO,QAAQ,CAAC,QAAQ,GAAG,QAAQ,CAAC,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAA;AAC5D,CAAC;AAFD,gEAEC"}
@@ -1,10 +0,0 @@
1
- import * as Layer from '@effect/io/Layer';
2
- import type { DomNavigationOptions } from './DOM.js';
3
- import { Navigation } from './Navigation.js';
4
- export interface MemoryNavigationOptions extends DomNavigationOptions {
5
- readonly initialUrl: URL;
6
- readonly initialState?: unknown;
7
- readonly base?: string;
8
- }
9
- export declare function memory(options: MemoryNavigationOptions): Layer.Layer<never, never, Navigation>;
10
- //# sourceMappingURL=Memory.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Memory.d.ts","sourceRoot":"","sources":["../../src/Memory.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,KAAK,MAAM,kBAAkB,CAAA;AAEzC,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAA;AACpD,OAAO,EAEL,UAAU,EAIX,MAAM,iBAAiB,CAAA;AAKxB,MAAM,WAAW,uBAAwB,SAAQ,oBAAoB;IACnE,QAAQ,CAAC,UAAU,EAAE,GAAG,CAAA;IACxB,QAAQ,CAAC,YAAY,CAAC,EAAE,OAAO,CAAA;IAC/B,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CACvB;AAED,wBAAgB,MAAM,CAAC,OAAO,EAAE,uBAAuB,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,UAAU,CAAC,CA6E9F"}
@@ -1,82 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || function (mod) {
19
- if (mod && mod.__esModule) return mod;
20
- var result = {};
21
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
- __setModuleDefault(result, mod);
23
- return result;
24
- };
25
- Object.defineProperty(exports, "__esModule", { value: true });
26
- exports.memory = void 0;
27
- const Function_1 = require("@effect/data/Function");
28
- const Option = __importStar(require("@effect/data/Option"));
29
- const Effect = __importStar(require("@effect/io/Effect"));
30
- const Navigation_js_1 = require("./Navigation.js");
31
- const memory_intent_js_1 = require("./memory-intent.js");
32
- const model_js_1 = require("./model.js");
33
- const util_js_1 = require("./util.js");
34
- function memory(options) {
35
- return Navigation_js_1.Navigation.layerScoped(Effect.gen(function* ($) {
36
- const initial = {
37
- key: options.initialKey ?? (yield* $(util_js_1.createKey)),
38
- url: options.initialUrl,
39
- state: options.initialState,
40
- };
41
- const initialEvent = {
42
- destination: initial,
43
- hashChange: false,
44
- navigationType: Navigation_js_1.NavigationType.Push,
45
- };
46
- const model = yield* $((0, model_js_1.makeModel)([initialEvent], 0));
47
- const intent = (0, memory_intent_js_1.makeIntent)(model, options);
48
- // Used to ensure ordering of navigation events
49
- const lock = Effect.unsafeMakeSemaphore(1).withPermits(1);
50
- const handleNavigationError = (depth) => (error) => Effect.gen(function* ($) {
51
- if (depth >= 50) {
52
- throw new Error('Too many redirects. You may have an infinite loop of onNavigation handlers that are redirecting.');
53
- }
54
- switch (error._tag) {
55
- case 'NoSuchElementException':
56
- case 'CancelNavigation':
57
- return yield* $(model.currentEntry.get);
58
- case 'RedirectNavigation':
59
- return yield* $(Effect.catchAll(intent.navigate(error.url, error), handleNavigationError(depth + 1)));
60
- }
61
- });
62
- const catchNavigationError = (effect) => Effect.catchAll(effect, handleNavigationError(0));
63
- // Construct our service
64
- const navigation = {
65
- back: lock(catchNavigationError(intent.back)),
66
- base: '/',
67
- canGoBack: model.canGoBack,
68
- canGoForward: model.canGoForward,
69
- currentEntry: model.currentEntry,
70
- entries: model.entries,
71
- forward: lock(catchNavigationError(intent.forward)),
72
- goTo: (n) => (0, Function_1.pipe)(n, intent.goTo, Effect.catchAll((a) => (0, Function_1.pipe)(a, handleNavigationError(0), Effect.map(Option.some))), lock),
73
- navigate: (url, options) => (0, Function_1.pipe)(intent.navigate(url, options), catchNavigationError, lock),
74
- onNavigation: (handler, options) => (0, Function_1.pipe)(intent.onNavigation(handler, options), catchNavigationError, Effect.asUnit),
75
- onNavigationEnd: (handler, options) => Effect.asUnit(intent.onNavigationEnd(handler, options)),
76
- reload: lock(catchNavigationError(intent.reload)),
77
- };
78
- return navigation;
79
- }));
80
- }
81
- exports.memory = memory;
82
- //# sourceMappingURL=Memory.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Memory.js","sourceRoot":"","sources":["../../src/Memory.ts"],"names":[],"mappings":"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"}
@@ -1,116 +0,0 @@
1
- import * as Brand from '@effect/data/Brand';
2
- import { Option } from '@effect/data/Option';
3
- import * as Effect from '@effect/io/Effect';
4
- import * as Scope from '@effect/io/Scope';
5
- import * as Context from '@typed/context';
6
- import * as Fx from '@typed/fx';
7
- export interface Navigation {
8
- /**
9
- * Base path for all navigation entries.
10
- */
11
- readonly base: string;
12
- /**
13
- * The list of navigation entries that are currently kept in-memory and
14
- * saved within Local/Session Storage.
15
- */
16
- readonly entries: Fx.Computed<never, never, readonly Destination[]>;
17
- /**
18
- * The currently focused navigation entry.
19
- */
20
- readonly currentEntry: Fx.Computed<never, never, Destination>;
21
- /**
22
- * Navigate to a new URL. NavigateOptions can be used to control how the
23
- * navigation is handled via history.pushState or history.replaceState,
24
- * set/update the state of the navigation entry, or provide a key to use
25
- * for the navigation entry.
26
- */
27
- readonly navigate: (url: string, options?: NavigateOptions) => Effect.Effect<never, never, Destination>;
28
- /**
29
- * Subscribe to navigation events. Any handler can cancel the or redirect
30
- * the navigation by failing with a CancelNavigation or RedirectNavigation
31
- * error.
32
- */
33
- readonly onNavigation: <R>(handler: (event: NavigationEvent) => Effect.Effect<R, NavigationError, void>, options?: OnNavigationOptions) => Effect.Effect<R | Scope.Scope, never, void>;
34
- /**
35
- * Subscribe to navigation events after they have been commited.
36
- */
37
- readonly onNavigationEnd: <R>(handler: (event: NavigationEvent) => Effect.Effect<R, never, void>, options?: OnNavigationOptions) => Effect.Effect<R | Scope.Scope, never, void>;
38
- /**
39
- * Returns true if there is a previous navigation entry to navigate to.
40
- */
41
- readonly canGoBack: Fx.Computed<never, never, boolean>;
42
- /**
43
- * Navigate to the previous navigation entry. If you're on the first entry
44
- * then this will do nothing.
45
- */
46
- readonly back: Effect.Effect<never, never, Destination>;
47
- /**
48
- * Returns true if there is a next navigation entry to navigate to after you have gone back.
49
- */
50
- readonly canGoForward: Fx.Computed<never, never, boolean>;
51
- /**
52
- * Navigate to the next navigation entry. If you're on the last entry then
53
- * this will do nothing.
54
- */
55
- readonly forward: Effect.Effect<never, never, Destination>;
56
- /**
57
- * Reload the current navigation entry.
58
- */
59
- readonly reload: Effect.Effect<never, never, Destination>;
60
- /**
61
- * Navigate to a specific navigation entry by key. If the key does not
62
- * exist then this will do nothing visible to the user and return Option.none().
63
- */
64
- readonly goTo: (key: DestinationKey) => Effect.Effect<never, never, Option<Destination>>;
65
- }
66
- export declare const Navigation: Context.Tag<Navigation, Navigation>;
67
- export declare const navigate: (url: string, options?: NavigateOptions) => Effect.Effect<Navigation, never, Destination>;
68
- export declare const onNavigation: <R>(handler: (event: NavigationEvent) => Effect.Effect<R, never, void>) => Effect.Effect<Scope.Scope | Navigation | R, never, void>;
69
- export declare const canGoBack: Effect.Effect<Navigation, never, boolean> & Fx.Fx<Navigation, never, boolean>;
70
- export declare const back: Effect.Effect<Navigation, never, Destination>;
71
- export declare const canGoForward: Effect.Effect<Navigation, never, boolean> & Fx.Fx<Navigation, never, boolean>;
72
- export declare const forward: Effect.Effect<Navigation, never, Destination>;
73
- export declare const reload: Effect.Effect<Navigation, never, Destination>;
74
- export interface NavigateOptions {
75
- readonly state?: unknown;
76
- readonly history?: 'push' | 'replace';
77
- readonly key?: string;
78
- }
79
- export interface NavigationEvent {
80
- readonly destination: Destination;
81
- readonly hashChange: boolean;
82
- readonly navigationType: NavigationType;
83
- }
84
- export declare function NavigationEvent(destination: Destination, hashChange: boolean, navigationType: NavigationType): NavigationEvent;
85
- export interface Destination {
86
- readonly key: DestinationKey;
87
- readonly url: URL;
88
- readonly state: unknown;
89
- }
90
- export type DestinationKey = string & Brand.Brand<'DestinationKey'>;
91
- export declare const DestinationKey: Brand.Brand.Constructor<DestinationKey>;
92
- export declare function Destination(key: DestinationKey, url: URL, state?: unknown): Destination;
93
- export declare enum NavigationType {
94
- Push = "push",
95
- Reload = "reload",
96
- Replace = "replace",
97
- Back = "back",
98
- Forward = "forward"
99
- }
100
- export type NavigationError = CancelNavigation | RedirectNavigation;
101
- export interface CancelNavigation {
102
- readonly _tag: 'CancelNavigation';
103
- }
104
- export declare const cancelNavigation: Effect.Effect<never, CancelNavigation, never>;
105
- export declare function isCancelNavigation(error: NavigationError): error is CancelNavigation;
106
- export interface RedirectNavigation extends NavigateOptions {
107
- readonly _tag: 'RedirectNavigation';
108
- readonly url: string;
109
- }
110
- export declare const redirect: (url: string, options?: NavigateOptions) => Effect.Effect<never, RedirectNavigation, never>;
111
- export declare function isRedirectNavigation(error: NavigationError): error is RedirectNavigation;
112
- export interface OnNavigationOptions {
113
- readonly passive?: boolean;
114
- }
115
- export declare const getCurrentUrl: Effect.Effect<Navigation, never, URL>;
116
- //# sourceMappingURL=Navigation.d.ts.map