@typed/navigation 0.17.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 (115) 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/internal/fromWindow.js +358 -0
  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/internal/shared.d.ts +109 -0
  49. package/dist/{esm/internal → internal}/shared.js +134 -165
  50. package/dist/internal/shared.js.map +1 -0
  51. package/package.json +35 -52
  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 +133 -468
  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 +250 -180
  68. package/src/internal/memory.ts +62 -49
  69. package/src/internal/shared.ts +238 -305
  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 -275
  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 -421
  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 -522
  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 -462
  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 +0 -114
  102. package/dist/dts/internal/shared.d.ts.map +0 -1
  103. package/dist/esm/Blocking.js +0 -46
  104. package/dist/esm/Blocking.js.map +0 -1
  105. package/dist/esm/Layer.js.map +0 -1
  106. package/dist/esm/Navigation.js +0 -237
  107. package/dist/esm/Navigation.js.map +0 -1
  108. package/dist/esm/index.js +0 -17
  109. package/dist/esm/index.js.map +0 -1
  110. package/dist/esm/internal/fromWindow.js +0 -310
  111. package/dist/esm/internal/fromWindow.js.map +0 -1
  112. package/dist/esm/internal/memory.js +0 -56
  113. package/dist/esm/internal/memory.js.map +0 -1
  114. package/dist/esm/internal/shared.js.map +0 -1
  115. package/dist/esm/package.json +0 -4
@@ -1,25 +1,54 @@
1
- import * as HttpClient from "@effect/platform/HttpClient";
2
- import { Schema } from "@effect/schema";
3
- import * as RefSubject from "@typed/fx/RefSubject";
4
- import { GetRandomValues, makeUuid } from "@typed/id";
5
- import * as Effect from "effect/Effect";
6
- import * as Either from "effect/Either";
7
- import * as Option from "effect/Option";
8
- import { Destination, Transition } from "../Navigation.js";
1
+ import * as Headers from '@effect/platform/Headers';
2
+ import * as HttpClient from '@effect/platform/HttpClient';
3
+ import { GetRandomValues, makeUuid4 } from '@typed/id';
4
+ import * as LazyRef from '@typed/lazy-ref';
5
+ import { Cause, Schema } from 'effect';
6
+ import * as Effect from 'effect/Effect';
7
+ import * as Either from 'effect/Either';
8
+ import * as Option from 'effect/Option';
9
+ import { Destination } from '../Destination.js';
10
+ import { FormSubmitError, } from '../Error.js';
11
+ import { TransitionEvent } from '../Event.js';
9
12
  export const NavigationState = Schema.Struct({
10
13
  entries: Schema.Array(Destination),
11
14
  index: Schema.Number,
12
- transition: Schema.OptionFromNullishOr(Transition, null)
15
+ transition: Schema.OptionFromNullishOr(TransitionEvent, null),
13
16
  });
14
- export const getUrl = (origin, urlOrPath) => {
15
- return typeof urlOrPath === "string" ? new URL(urlOrPath, origin) : urlOrPath;
16
- };
17
+ export function getUrl(origin, urlOrPath, base) {
18
+ if (typeof urlOrPath === 'string') {
19
+ const url = new URL(urlOrPath, origin);
20
+ // If the URL is relative, join it with the base
21
+ if (isRelativeUrl(urlOrPath)) {
22
+ url.pathname = joinPath(base, url.pathname);
23
+ }
24
+ return url;
25
+ }
26
+ return urlOrPath;
27
+ }
28
+ function isRelativeUrl(url) {
29
+ if (url.includes('://'))
30
+ return false;
31
+ return true;
32
+ }
33
+ function joinPath(a, b) {
34
+ const aEndsWithSlash = a[a.length - 1] === '/';
35
+ const bStartsWithSlash = b[0] === '/';
36
+ if (aEndsWithSlash && bStartsWithSlash) {
37
+ return a + b.slice(1);
38
+ }
39
+ if (!aEndsWithSlash && !bStartsWithSlash) {
40
+ return `${a}/${b}`;
41
+ }
42
+ return a + b;
43
+ }
17
44
  const REDIRECT_STATUS_CODES = new Set([301, 302, 303, 307, 308]);
18
45
  export function setupFromModelAndIntent(modelAndIntent, origin, base, getRandomValues, newNavigationState) {
19
- const { beforeHandlers, canGoBack, canGoForward, commit, formDataHandlers, handlers, state } = modelAndIntent;
20
- const entries = RefSubject.map(state, (s) => s.entries);
21
- const currentEntry = RefSubject.map(state, (s) => s.entries[s.index]);
22
- const transition = RefSubject.map(state, (s) => s.transition);
46
+ const { beforeHandlers, commit, handlers, state } = modelAndIntent;
47
+ const canGoBack = LazyRef.map(state, (s) => s.index > 0);
48
+ const canGoForward = LazyRef.map(state, (s) => s.index < s.entries.length - 1);
49
+ const entries = LazyRef.map(state, (s) => s.entries);
50
+ const currentEntry = LazyRef.map(state, (s) => s.entries[s.index]);
51
+ const transition = LazyRef.map(state, (s) => s.transition);
23
52
  const runBeforeHandlers = (event) => Effect.gen(function* () {
24
53
  const handlers = yield* beforeHandlers;
25
54
  const matches = [];
@@ -27,7 +56,7 @@ export function setupFromModelAndIntent(modelAndIntent, origin, base, getRandomV
27
56
  const exit = yield* handler(event).pipe(Effect.provide(ctx), Effect.either);
28
57
  if (Either.isRight(exit)) {
29
58
  const match = exit.right;
30
- if (Option.isSome(match)) {
59
+ if (match !== undefined && Option.isSome(match)) {
31
60
  matches.push(Effect.provide(match.value, ctx));
32
61
  }
33
62
  }
@@ -50,7 +79,7 @@ export function setupFromModelAndIntent(modelAndIntent, origin, base, getRandomV
50
79
  const matches = [];
51
80
  for (const [handler, ctx] of eventHandlers) {
52
81
  const match = yield* Effect.provide(handler(event), ctx);
53
- if (Option.isSome(match)) {
82
+ if (match !== undefined && Option.isSome(match)) {
54
83
  matches.push(Effect.provide(match.value, ctx));
55
84
  }
56
85
  }
@@ -58,53 +87,24 @@ export function setupFromModelAndIntent(modelAndIntent, origin, base, getRandomV
58
87
  yield* Effect.all(matches, { discard: true });
59
88
  }
60
89
  });
61
- const runFormDataHandlers = (event) => Effect.gen(function* () {
62
- const handlers = yield* formDataHandlers;
63
- const matches = [];
64
- for (const [handler, ctx] of handlers) {
65
- const exit = yield* handler(event).pipe(Effect.provide(ctx), Effect.either);
66
- if (Either.isRight(exit)) {
67
- const match = exit.right;
68
- if (Option.isSome(match)) {
69
- matches.push(Effect.provide(match.value, ctx));
70
- }
71
- }
72
- else {
73
- return Either.left(exit.left);
74
- }
75
- }
76
- if (matches.length > 0) {
77
- for (const match of matches) {
78
- const exit = yield* Effect.either(match);
79
- if (Either.isLeft(exit)) {
80
- return Either.left(exit.left);
81
- }
82
- else if (Option.isSome(exit.right)) {
83
- return Either.right(exit.right);
84
- }
85
- }
86
- }
87
- else {
88
- // Only if there are 0 matches, we'll make a request to the server ourselves
89
- const response = yield* makeFormDataRequest(event, Option.getOrElse(event.action, () => event.from.url.href));
90
- return Either.right(Option.some(response));
91
- }
92
- return Either.right(Option.none());
93
- });
94
90
  const runNavigationEvent = (beforeEvent, get, set, depth, skipCommit = false) => Effect.gen(function* () {
95
- let current = yield* get;
96
- current = yield* set({ ...current, transition: Option.some(beforeEvent) });
91
+ const current = yield* set({
92
+ ...(yield* get),
93
+ transition: Option.some(beforeEvent),
94
+ });
97
95
  if (!skipCommit) {
98
96
  const beforeError = yield* runBeforeHandlers(beforeEvent);
99
97
  if (Option.isSome(beforeError)) {
100
98
  return yield* handleError(beforeError.value, get, set, depth);
101
99
  }
102
100
  }
103
- const to = isDestination(beforeEvent.to) ? beforeEvent.to : yield* upgradeProposedDestination(beforeEvent.to);
101
+ const to = isDestination(beforeEvent.to)
102
+ ? beforeEvent.to
103
+ : yield* upgradeProposedDestination(beforeEvent.to);
104
104
  if (!skipCommit) {
105
105
  yield* commit(to, beforeEvent);
106
106
  }
107
- if (newNavigationState) {
107
+ if (newNavigationState !== undefined) {
108
108
  const { entries, index } = yield* set(newNavigationState());
109
109
  return entries[index];
110
110
  }
@@ -112,59 +112,63 @@ export function setupFromModelAndIntent(modelAndIntent, origin, base, getRandomV
112
112
  const event = {
113
113
  type: beforeEvent.type,
114
114
  info: beforeEvent.info,
115
- destination: to
115
+ destination: to,
116
116
  };
117
- if (beforeEvent.type === "push") {
117
+ if (beforeEvent.type === 'push') {
118
118
  const index = current.index + 1;
119
119
  const entries = current.entries.slice(0, index).concat([to]);
120
120
  yield* set({ entries, index, transition: Option.none() });
121
121
  }
122
- else if (beforeEvent.type === "replace") {
122
+ else if (beforeEvent.type === 'replace') {
123
123
  const index = current.index;
124
124
  const before = current.entries.slice(0, index);
125
125
  const after = current.entries.slice(index + 1);
126
126
  const entries = [...before, to, ...after];
127
127
  yield* set({ entries, index, transition: Option.none() });
128
128
  }
129
- else if (beforeEvent.type === "reload") {
129
+ else if (beforeEvent.type === 'reload') {
130
130
  yield* set({ ...current, transition: Option.none() });
131
131
  }
132
132
  else {
133
133
  const { delta } = beforeEvent;
134
134
  const nextIndex = current.index + delta;
135
- yield* set({ ...current, index: nextIndex, transition: Option.none() });
135
+ yield* set({
136
+ ...current,
137
+ index: nextIndex,
138
+ transition: Option.none(),
139
+ });
136
140
  }
137
141
  yield* runHandlers(event);
138
142
  }
139
143
  return to;
140
- }).pipe(GetRandomValues.provide(getRandomValues));
144
+ }).pipe(Effect.provideService(GetRandomValues, getRandomValues));
141
145
  const handleError = (error, get, set, depth) => Effect.gen(function* () {
142
146
  if (depth >= 25) {
143
- return yield* Effect.dieMessage(`Redirect loop detected.`);
147
+ return yield* Effect.dieMessage('Redirect loop detected.');
144
148
  }
145
149
  const { entries, index } = yield* get;
146
150
  const from = entries[index];
147
- if (error._tag === "CancelNavigation") {
151
+ if (error._tag === 'CancelNavigation') {
148
152
  yield* set({ entries, index, transition: Option.none() });
149
153
  return from;
150
154
  }
151
155
  else {
152
- const event = yield* makeRedirectEvent(origin, error, from);
156
+ const event = yield* makeRedirectEvent(origin, error, from, base);
153
157
  return yield* runNavigationEvent(event, get, set, depth + 1);
154
158
  }
155
- }).pipe(GetRandomValues.provide(getRandomValues));
159
+ }).pipe(Effect.provideService(GetRandomValues, getRandomValues));
156
160
  const navigate = (pathOrUrl, options, skipCommit = false) => state.runUpdates(({ get, set }) => Effect.gen(function* () {
157
161
  const state = yield* get;
158
162
  const from = state.entries[state.index];
159
- const history = options?.history ?? "auto";
160
- const to = yield* makeOrUpdateDestination(state, getUrl(origin, pathOrUrl), options?.state, origin).pipe(GetRandomValues.provide(getRandomValues));
161
- const type = history === "auto" ? from.key === to.key ? "replace" : "push" : history;
163
+ const history = options?.history ?? 'auto';
164
+ const to = yield* makeOrUpdateDestination(state, getUrl(origin, pathOrUrl, base), options?.state, origin).pipe(Effect.provideService(GetRandomValues, getRandomValues));
165
+ const type = history === 'auto' ? (from.key === to.key ? 'replace' : 'push') : history;
162
166
  const event = {
163
167
  type,
164
168
  from,
165
169
  to,
166
- delta: type === "replace" ? 0 : 1,
167
- info: options?.info
170
+ delta: type === 'replace' ? 0 : 1,
171
+ info: options?.info,
168
172
  };
169
173
  return yield* runNavigationEvent(event, get, set, 0, skipCommit);
170
174
  }));
@@ -175,15 +179,15 @@ export function setupFromModelAndIntent(modelAndIntent, origin, base, getRandomV
175
179
  const nextIndex = entries.findIndex((e) => e.key === key);
176
180
  if (nextIndex === -1)
177
181
  return from;
178
- const id = yield* makeUuid.pipe(GetRandomValues.provide(getRandomValues));
182
+ const id = yield* makeUuid4.pipe(Effect.provideService(GetRandomValues, getRandomValues));
179
183
  const to = { ...entries[nextIndex], id };
180
184
  const delta = nextIndex - index;
181
185
  const event = {
182
- type: "traverse",
186
+ type: 'traverse',
183
187
  from,
184
188
  to,
185
189
  delta,
186
- info: options?.info
190
+ info: options?.info,
187
191
  };
188
192
  return yield* runNavigationEvent(event, get, set, 0, skipCommit);
189
193
  }));
@@ -205,82 +209,61 @@ export function setupFromModelAndIntent(modelAndIntent, origin, base, getRandomV
205
209
  const { entries, index } = yield* state;
206
210
  const current = entries[index];
207
211
  const event = {
208
- type: "reload",
212
+ type: 'reload',
209
213
  from: current,
210
214
  to: current,
211
215
  delta: 0,
212
- info: options?.info
216
+ info: options?.info,
213
217
  };
214
218
  return yield* runNavigationEvent(event, get, set, 0, skipCommit);
215
219
  }));
216
220
  const beforeNavigation = (handler) => Effect.contextWithEffect((ctx) => {
217
221
  const entry = [handler, ctx];
218
- return Effect.zipRight(RefSubject.update(beforeHandlers, (handlers) => new Set([...handlers, entry])), Effect.addFinalizer(() => RefSubject.update(beforeHandlers, (handlers) => {
222
+ const acquire = LazyRef.update(beforeHandlers, (handlers) => new Set([...handlers, entry]));
223
+ const release = Effect.ignoreLogged(LazyRef.update(beforeHandlers, (handlers) => {
219
224
  const updated = new Set(handlers);
220
225
  updated.delete(entry);
221
226
  return updated;
222
- })));
227
+ }));
228
+ return Effect.acquireRelease(acquire, () => release);
223
229
  });
224
230
  const onNavigation = (handler) => Effect.contextWithEffect((ctx) => {
225
231
  const entry = [handler, ctx];
226
- return Effect.zipRight(RefSubject.update(handlers, (handlers) => new Set([...handlers, entry])), Effect.addFinalizer(() => RefSubject.update(handlers, (handlers) => {
232
+ const acquire = LazyRef.update(handlers, (handlers) => new Set([...handlers, entry]));
233
+ const release = Effect.ignoreLogged(LazyRef.update(handlers, (handlers) => {
227
234
  const updated = new Set(handlers);
228
235
  updated.delete(entry);
229
236
  return updated;
230
- })));
237
+ }));
238
+ return Effect.acquireRelease(acquire, () => release);
231
239
  });
232
240
  const updateCurrentEntry = (options) => state.runUpdates(({ get, set }) => Effect.gen(function* () {
233
241
  const { entries, index } = yield* get;
234
242
  const current = entries[index];
235
243
  const event = {
236
- type: "replace",
244
+ type: 'replace',
237
245
  from: current,
238
246
  to: { ...current, state: options.state },
239
247
  delta: 0,
240
- info: null
248
+ info: null,
241
249
  };
242
250
  return yield* runNavigationEvent(event, get, set, 0);
243
251
  }));
244
- const submit = (data, input) => state.runUpdates(({ get, set }) => Effect.gen(function* () {
245
- const { entries, index } = yield* get;
246
- const from = entries[index];
247
- const event = {
248
- from,
249
- data,
250
- name: Option.fromNullable(input?.name),
251
- action: Option.fromNullable(input?.action),
252
- method: Option.fromNullable(input?.method),
253
- encoding: Option.fromNullable(input?.encoding)
254
- };
255
- const either = yield* runFormDataHandlers(event);
256
- if (Either.isLeft(either)) {
257
- yield* handleError(either.left, get, set, 0);
258
- return Option.none();
259
- }
260
- else {
261
- if (Option.isNone(either.right)) {
262
- return either.right;
252
+ const submit = (form) => Effect.gen(function* () {
253
+ const current = yield* currentEntry;
254
+ // Utilize the action URL if provided, otherwise use the current URL
255
+ const url = form.action ? getUrl(origin, form.action, base) : current.url;
256
+ // Submit the HTTP request
257
+ const response = yield* HttpClient[form.method](url, form).pipe(Effect.mapErrorCause((cause) => Cause.fail(new FormSubmitError({ cause }))));
258
+ // If the response is a redirect, navigate to the new URL
259
+ if (REDIRECT_STATUS_CODES.has(response.status)) {
260
+ // Get the location header
261
+ const location = Headers.get(response.headers, 'location');
262
+ if (Option.isSome(location)) {
263
+ return [yield* navigate(getUrl(origin, location.value, base), form), response];
263
264
  }
264
- const response = either.right.value;
265
- // If it is a redirect
266
- if (REDIRECT_STATUS_CODES.has(response.status)) {
267
- const location = HttpClient.headers.get(response.headers, "location");
268
- // And we have a location header
269
- if (Option.isSome(location)) {
270
- // Then we navigate to that location
271
- yield* navigate(location.value, { history: "replace" });
272
- }
273
- }
274
- return Option.some(response);
275
265
  }
276
- }));
277
- const onFormData = (handler) => Effect.contextWithEffect((ctx) => {
278
- const entry = [handler, ctx];
279
- return Effect.zipRight(RefSubject.update(formDataHandlers, (handlers) => new Set([...handlers, entry])), Effect.addFinalizer(() => RefSubject.update(formDataHandlers, (handlers) => {
280
- const updated = new Set(handlers);
281
- updated.delete(entry);
282
- return updated;
283
- })));
266
+ return [current, response];
284
267
  });
285
268
  const navigation = {
286
269
  back,
@@ -299,20 +282,19 @@ export function setupFromModelAndIntent(modelAndIntent, origin, base, getRandomV
299
282
  traverseTo,
300
283
  updateCurrentEntry,
301
284
  submit,
302
- onFormData
303
285
  };
304
286
  return navigation;
305
287
  }
306
- export function makeRedirectEvent(origin, redirect, from) {
288
+ function makeRedirectEvent(origin, redirect, from, base) {
307
289
  return Effect.gen(function* () {
308
- const url = getUrl(origin, redirect.path);
290
+ const url = getUrl(origin, redirect.path, base);
309
291
  const to = yield* makeDestination(url, redirect.options?.state, origin);
310
292
  const event = {
311
- type: "replace",
293
+ type: 'replace',
312
294
  from,
313
295
  to,
314
296
  delta: 0,
315
- info: redirect.options?.info
297
+ info: redirect.options?.info,
316
298
  };
317
299
  return event;
318
300
  });
@@ -322,13 +304,13 @@ export function makeOrUpdateDestination(navigationState, url, state, origin) {
322
304
  const current = navigationState.entries[navigationState.index];
323
305
  const isSameOriginAndPath = url.origin === current.url.origin && url.pathname === current.url.pathname;
324
306
  if (isSameOriginAndPath) {
325
- const id = yield* makeUuid;
307
+ const id = yield* makeUuid4;
326
308
  const destination = {
327
309
  id,
328
310
  key: current.key,
329
311
  url,
330
312
  state: getOriginalState(state),
331
- sameDocument: url.origin === origin
313
+ sameDocument: url.origin === origin,
332
314
  };
333
315
  return destination;
334
316
  }
@@ -341,55 +323,57 @@ export function makeDestination(url, state, origin) {
341
323
  return Effect.gen(function* () {
342
324
  if (isPatchedState(state)) {
343
325
  const destination = {
344
- id: state.id,
345
- key: state.key,
326
+ id: state.__typed__navigation__id__,
327
+ key: state.__typed__navigation__key__,
346
328
  url,
347
- state: state.originalHistoryState,
348
- sameDocument: url.origin === origin
329
+ state: state.__typed__navigation__state__,
330
+ sameDocument: url.origin === origin,
349
331
  };
350
332
  return destination;
351
333
  }
352
- const id = yield* makeUuid;
353
- const key = yield* makeUuid;
334
+ const id = yield* makeUuid4;
335
+ const key = yield* makeUuid4;
354
336
  const destination = {
355
337
  id,
356
338
  key,
357
339
  url,
358
340
  state,
359
- sameDocument: url.origin === origin
341
+ sameDocument: url.origin === origin,
360
342
  };
361
343
  return destination;
362
344
  });
363
345
  }
364
346
  export function upgradeProposedDestination(proposed) {
365
347
  return Effect.gen(function* () {
366
- const id = yield* makeUuid;
367
- const key = yield* makeUuid;
348
+ const id = yield* makeUuid4;
349
+ const key = yield* makeUuid4;
368
350
  const destination = {
369
351
  id,
370
352
  key,
371
353
  url: proposed.url,
372
354
  state: proposed.state,
373
- sameDocument: proposed.sameDocument
355
+ sameDocument: proposed.sameDocument,
374
356
  };
375
357
  return destination;
376
358
  });
377
359
  }
378
360
  export function isPatchedState(state) {
379
- if (state === null || !(typeof state === "object") || Array.isArray(state))
361
+ if (state === null || !(typeof state === 'object') || Array.isArray(state)) {
380
362
  return false;
381
- if ("id" in state && "key" in state && "originalHistoryState" in state)
363
+ }
364
+ if ('__typed__navigation__id__' in state && '__typed__navigation__key__' in state) {
382
365
  return true;
366
+ }
383
367
  return false;
384
368
  }
385
369
  export function getOriginalState(state) {
386
370
  if (isPatchedState(state))
387
- return state.originalHistoryState;
371
+ return state.__typed__navigation__state__;
388
372
  return state;
389
373
  }
390
374
  export function getOriginFromUrl(url) {
391
375
  try {
392
- if (typeof url === "string") {
376
+ if (typeof url === 'string') {
393
377
  return new URL(url).origin;
394
378
  }
395
379
  else {
@@ -397,34 +381,19 @@ export function getOriginFromUrl(url) {
397
381
  }
398
382
  }
399
383
  catch {
400
- return "http://localhost";
384
+ return 'http://localhost';
401
385
  }
402
386
  }
403
387
  export function isDestination(proposed) {
404
- return "id" in proposed && "key" in proposed;
388
+ return 'id' in proposed && 'key' in proposed;
405
389
  }
406
390
  const strictEqual = (a, b) => a === b;
407
- export function makeHandlersState() {
408
- return Effect.gen(function* () {
409
- const beforeHandlers = yield* RefSubject.fromEffect(Effect.sync(() => new Set()), { eq: strictEqual });
410
- const handlers = yield* RefSubject.fromEffect(Effect.sync(() => new Set()), { eq: strictEqual });
411
- const formDataHandlers = yield* RefSubject.fromEffect(Effect.sync(() => new Set()), { eq: strictEqual });
412
- return {
413
- beforeHandlers,
414
- handlers,
415
- formDataHandlers
416
- };
417
- });
418
- }
419
- function makeFormDataRequest(event, url) {
420
- const headers = new Headers();
421
- if (Option.isSome(event.encoding)) {
422
- headers.set("Content-Type", event.encoding.value);
423
- }
424
- const method = Option.getOrElse(event.method, () => "POST");
425
- return Effect.flatMap(HttpClient.client.Client, (client) => client(HttpClient.request.make(method)(url, {
426
- headers: HttpClient.headers.fromInput(headers),
427
- body: HttpClient.body.formData(event.data)
428
- })));
429
- }
391
+ export const makeHandlersState = Effect.gen(function* () {
392
+ const beforeHandlers = yield* LazyRef.fromEffect(Effect.sync(() => new Set()), { eq: strictEqual });
393
+ const handlers = yield* LazyRef.fromEffect(Effect.sync(() => new Set()), { eq: strictEqual });
394
+ return {
395
+ beforeHandlers,
396
+ handlers,
397
+ };
398
+ });
430
399
  //# sourceMappingURL=shared.js.map
@@ -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,60 +1,43 @@
1
1
  {
2
2
  "name": "@typed/navigation",
3
- "version": "0.17.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
16
  "dependencies": {
13
- "@effect/platform": "^0.57.4",
14
- "@effect/schema": "^0.68.1",
15
- "effect": "^3.3.5",
16
- "@typed/context": "0.29.0",
17
- "@typed/dom": "17.0.0",
18
- "@typed/fx": "1.31.0",
19
- "@typed/id": "0.10.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"
20
24
  },
21
- "main": "./dist/cjs/index.js",
22
- "module": "./dist/esm/index.js",
23
- "types": "./dist/dts/index.d.ts",
24
- "exports": {
25
- "./package.json": "./package.json",
26
- ".": {
27
- "types": "./dist/dts/index.d.ts",
28
- "import": "./dist/esm/index.js",
29
- "default": "./dist/cjs/index.js"
30
- },
31
- "./Blocking": {
32
- "types": "./dist/dts/Blocking.d.ts",
33
- "import": "./dist/esm/Blocking.js",
34
- "default": "./dist/cjs/Blocking.js"
35
- },
36
- "./Layer": {
37
- "types": "./dist/dts/Layer.d.ts",
38
- "import": "./dist/esm/Layer.js",
39
- "default": "./dist/cjs/Layer.js"
40
- },
41
- "./Navigation": {
42
- "types": "./dist/dts/Navigation.d.ts",
43
- "import": "./dist/esm/Navigation.js",
44
- "default": "./dist/cjs/Navigation.js"
45
- }
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"
46
34
  },
47
- "typesVersions": {
48
- "*": {
49
- "Blocking": [
50
- "./dist/dts/Blocking.d.ts"
51
- ],
52
- "Layer": [
53
- "./dist/dts/Layer.d.ts"
54
- ],
55
- "Navigation": [
56
- "./dist/dts/Navigation.d.ts"
57
- ]
58
- }
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"
59
42
  }
60
43
  }