@fluxfast/core 0.2.0 → 0.3.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.
package/dist/router.js CHANGED
@@ -19,14 +19,23 @@ class FluxRouter {
19
19
  pageCache;
20
20
  currentVisitId = null;
21
21
  activeController = null;
22
+ activeDeferredController = null;
23
+ activeDeferredKeys = [];
24
+ activeDeferredEpochs = new Map();
22
25
  visitCounter = 0;
26
+ resourceLoadCounter = 0;
27
+ resourceEpochCounter = 0;
28
+ resourceEpochs = new Map();
29
+ initialDeferredBatch;
30
+ initialDeferredPromise;
23
31
  hardNavigate;
24
32
  stopHistoryListener;
25
33
  constructor(options = {}) {
34
+ const initialPage = options.initialEnvelope?.page ?? options.initialPage;
26
35
  this.resourceStore =
27
36
  options.resourceStore ??
28
37
  new store_1.ResourceStore({ maxResources: options.maxResources });
29
- this.pageStore = options.pageStore ?? new store_1.PageStore(options.initialPage);
38
+ this.pageStore = options.pageStore ?? new store_1.PageStore(initialPage);
30
39
  this.transport = options.transport ?? (0, transport_1.createFetchTransport)();
31
40
  this.events = new events_1.EventEmitter();
32
41
  this.history = options.history ?? new history_1.HistoryManager();
@@ -38,11 +47,28 @@ class FluxRouter {
38
47
  if (typeof window !== "undefined")
39
48
  window.location.assign(url);
40
49
  });
41
- if (options.initialResources) {
42
- this.emitResourceUpdates(this.resourceStore.setMany(options.initialResources));
50
+ const initialResources = options.initialEnvelope?.resources ?? options.initialResources;
51
+ if (initialResources) {
52
+ this.emitResourceUpdates(this.resourceStore.setMany(initialResources));
43
53
  }
44
- if (options.initialPage) {
45
- this.pageCache.set(options.initialPage, this.resourceStore.exportKnownVersions());
54
+ for (const [key, error] of Object.entries(options.initialEnvelope?.resourceErrors ?? {})) {
55
+ this.resourceStore.setResourceError(key, error);
56
+ }
57
+ if (options.initialEnvelope?.deferred?.length) {
58
+ const keys = [...options.initialEnvelope.deferred];
59
+ this.resourceStore.markPending(keys);
60
+ this.initialDeferredBatch = {
61
+ keys,
62
+ url: options.initialEnvelope.page.url || "/",
63
+ };
64
+ }
65
+ if (initialPage) {
66
+ if (options.initialEnvelope) {
67
+ this.cachePageEnvelope(options.initialEnvelope);
68
+ }
69
+ else {
70
+ this.pageCache.set(initialPage, this.resourceStore.exportKnownVersions());
71
+ }
46
72
  }
47
73
  if (!options.deferHistory)
48
74
  this.startHistory();
@@ -53,9 +79,14 @@ class FluxRouter {
53
79
  this.stopHistoryListener = this.history.onPopState(url => {
54
80
  const cached = this.pageCache.getValid(url, this.resourceStore);
55
81
  if (cached) {
82
+ this.abortActiveDeferred();
56
83
  this.abortActiveVisit();
84
+ this.resourceStore.markPending(cached.pendingDeferred);
57
85
  this.pageStore.setPage(cached);
58
86
  this.events.emit("cache:hit", { key: url });
87
+ if (cached.pendingDeferred.length > 0) {
88
+ void this.startDeferredBatch(cached.pendingDeferred, cached.url || url).catch(() => undefined);
89
+ }
59
90
  return;
60
91
  }
61
92
  this.events.emit("cache:miss", { key: url });
@@ -77,6 +108,7 @@ class FluxRouter {
77
108
  }
78
109
  async visit(url, options = {}) {
79
110
  const visitId = `visit_${++this.visitCounter}_${Date.now().toString(36)}`;
111
+ this.abortActiveDeferred();
80
112
  this.abortActiveVisit();
81
113
  this.currentVisitId = visitId;
82
114
  const controller = new AbortController();
@@ -123,6 +155,7 @@ class FluxRouter {
123
155
  url: envelope.page.url || url,
124
156
  component: envelope.page.component,
125
157
  });
158
+ this.startDeferredEnvelope(envelope);
126
159
  }
127
160
  catch (error) {
128
161
  if ((error instanceof Error && error.name === "AbortError") ||
@@ -141,19 +174,163 @@ class FluxRouter {
141
174
  }
142
175
  async refresh(options = {}) {
143
176
  const currentUrl = this.pageStore.getSnapshot().url || "/";
177
+ if (options.only?.length) {
178
+ await this.loadResources(options.only, {
179
+ url: currentUrl,
180
+ reason: "refresh",
181
+ });
182
+ return;
183
+ }
144
184
  await this.visit(currentUrl, {
145
185
  preserveState: true,
146
186
  preserveScroll: true,
147
187
  usePrefetch: false,
148
- only: options.only,
149
188
  });
150
189
  }
190
+ /** Start initial deferred work after hydration. Repeated calls share one request. */
191
+ startInitialDeferred() {
192
+ if (this.initialDeferredPromise)
193
+ return this.initialDeferredPromise;
194
+ if (!this.initialDeferredBatch) {
195
+ this.initialDeferredPromise = Promise.resolve();
196
+ return this.initialDeferredPromise;
197
+ }
198
+ const batch = this.initialDeferredBatch;
199
+ this.initialDeferredBatch = undefined;
200
+ this.initialDeferredPromise = this.startDeferredBatch(batch.keys, batch.url);
201
+ return this.initialDeferredPromise;
202
+ }
203
+ /** Load a resource batch without changing the current page or browser history. */
204
+ async loadResources(keys, options) {
205
+ const requestedKeys = Array.from(new Set(keys.filter((key) => typeof key === "string" && key.length > 0)));
206
+ if (requestedKeys.length === 0)
207
+ return;
208
+ const url = options.url ?? (this.pageStore.getSnapshot().url || "/");
209
+ const knownVersions = this.resourceStore.exportKnownVersions();
210
+ const loadId = `resource_${options.reason}_${++this.resourceLoadCounter}_${Date.now().toString(36)}`;
211
+ const capturedEpochs = new Map();
212
+ for (const key of requestedKeys) {
213
+ capturedEpochs.set(key, this.bumpResourceEpoch(key));
214
+ }
215
+ this.resourceStore.markLoading(requestedKeys);
216
+ const loadEvent = {
217
+ url,
218
+ keys: [...requestedKeys],
219
+ reason: options.reason,
220
+ };
221
+ this.events.emit("resource:load:start", loadEvent);
222
+ try {
223
+ const envelope = await this.transport.visit({
224
+ url,
225
+ visitId: loadId,
226
+ knownVersions,
227
+ only: requestedKeys,
228
+ signal: options.signal,
229
+ headers: options.headers,
230
+ });
231
+ const returnedKeys = new Set(Object.keys(envelope.resources));
232
+ const errorKeys = new Set(Object.keys(envelope.resourceErrors ?? {}));
233
+ const settledKeys = [];
234
+ for (const key of requestedKeys) {
235
+ if (this.resourceEpochs.get(key) !== capturedEpochs.get(key))
236
+ continue;
237
+ if (returnedKeys.has(key)) {
238
+ const record = envelope.resources[key];
239
+ if (this.resourceStore.set({
240
+ key,
241
+ version: record.version,
242
+ value: record.value,
243
+ })) {
244
+ this.events.emit("resource:update", { key, version: record.version });
245
+ }
246
+ settledKeys.push(key);
247
+ continue;
248
+ }
249
+ if (errorKeys.has(key)) {
250
+ const resourceError = envelope.resourceErrors[key];
251
+ this.resourceStore.setResourceError(key, resourceError);
252
+ this.events.emit("resource:error", {
253
+ ...loadEvent,
254
+ key,
255
+ error: resourceError,
256
+ });
257
+ settledKeys.push(key);
258
+ continue;
259
+ }
260
+ const record = this.resourceStore.getRecord(key);
261
+ if (record) {
262
+ if (this.resourceStore.set({
263
+ key,
264
+ version: record.version,
265
+ value: record.value,
266
+ })) {
267
+ this.events.emit("resource:update", { key, version: record.version });
268
+ }
269
+ }
270
+ else {
271
+ this.resourceStore.invalidate(key);
272
+ }
273
+ settledKeys.push(key);
274
+ }
275
+ this.pageCache.settleResources(url, settledKeys, this.resourceStore);
276
+ this.events.emit("resource:load:success", loadEvent);
277
+ }
278
+ catch (error) {
279
+ const aborted = options.signal?.aborted ||
280
+ (error instanceof Error && error.name === "AbortError");
281
+ const normalized = error instanceof Error
282
+ ? error
283
+ : new Error(String(error));
284
+ const settledKeys = [];
285
+ for (const key of requestedKeys) {
286
+ if (this.resourceEpochs.get(key) !== capturedEpochs.get(key))
287
+ continue;
288
+ const record = this.resourceStore.getRecord(key);
289
+ if (aborted) {
290
+ if (record) {
291
+ this.resourceStore.set({
292
+ key,
293
+ version: record.version,
294
+ value: record.value,
295
+ });
296
+ }
297
+ else {
298
+ this.resourceStore.invalidate(key);
299
+ }
300
+ }
301
+ else {
302
+ const resourceError = {
303
+ type: normalized.name || "ResourceError",
304
+ message: normalized.message,
305
+ };
306
+ this.resourceStore.setResourceError(key, resourceError);
307
+ this.events.emit("resource:error", {
308
+ ...loadEvent,
309
+ key,
310
+ error: resourceError,
311
+ });
312
+ settledKeys.push(key);
313
+ }
314
+ }
315
+ if (!aborted) {
316
+ this.pageCache.settleResources(url, settledKeys, this.resourceStore);
317
+ }
318
+ this.events.emit("resource:load:error", {
319
+ ...loadEvent,
320
+ error: normalized,
321
+ });
322
+ throw error;
323
+ }
324
+ }
151
325
  async prefetch(url) {
152
326
  this.events.emit("prefetch:start", { url });
153
327
  const knownVersions = this.resourceStore.exportKnownVersions();
154
328
  const envelope = await this.prefetchManager.fetch(url, this.transport, knownVersions);
329
+ for (const key of Object.keys(envelope.resources)) {
330
+ this.bumpResourceEpoch(key);
331
+ }
155
332
  this.emitResourceUpdates(this.resourceStore.setMany(envelope.resources));
156
- this.pageCache.set(envelope.page, this.resourceStore.exportKnownVersions());
333
+ this.cachePageEnvelope(envelope);
157
334
  this.events.emit("prefetch:success", { url });
158
335
  return envelope;
159
336
  }
@@ -167,13 +344,18 @@ class FluxRouter {
167
344
  headers: options.headers,
168
345
  });
169
346
  for (const [key, patches] of Object.entries(envelope.mutation.patches ?? {})) {
347
+ this.bumpResourceEpoch(key);
170
348
  if (this.resourceStore.patch(key, patches)) {
171
349
  const version = this.resourceStore.getRecord(key)?.version ?? "";
172
350
  this.events.emit("resource:update", { key, version });
173
351
  }
352
+ else {
353
+ this.resourceStore.invalidate(key);
354
+ }
174
355
  }
175
356
  const activeInvalidations = [];
176
357
  for (const key of envelope.mutation.invalidate ?? []) {
358
+ this.bumpResourceEpoch(key);
177
359
  if (this.resourceStore.hasSubscribers(key)) {
178
360
  this.resourceStore.markStale(key);
179
361
  activeInvalidations.push(key);
@@ -192,7 +374,10 @@ class FluxRouter {
192
374
  });
193
375
  }
194
376
  else if (activeInvalidations.length > 0) {
195
- await this.refresh({ only: activeInvalidations });
377
+ await this.loadResources(activeInvalidations, {
378
+ url: this.pageStore.getSnapshot().url || "/",
379
+ reason: "mutation",
380
+ });
196
381
  }
197
382
  this.events.emit("mutation:success", { url });
198
383
  return envelope;
@@ -204,22 +389,57 @@ class FluxRouter {
204
389
  }
205
390
  }
206
391
  clear() {
392
+ this.abortActiveDeferred();
207
393
  this.abortActiveVisit();
208
394
  this.resourceStore.clear();
209
395
  this.pageStore.clear();
210
396
  this.pageCache.clear();
211
397
  this.prefetchManager.clear();
398
+ this.resourceEpochs.clear();
212
399
  }
213
400
  destroy() {
401
+ this.abortActiveDeferred();
214
402
  this.abortActiveVisit();
215
403
  this.stopHistory();
216
404
  this.history.destroy();
217
405
  this.events.removeAllListeners();
218
406
  }
219
407
  applyPageEnvelope(envelope) {
408
+ const envelopeKeys = new Set([
409
+ ...Object.keys(envelope.resources),
410
+ ...Object.keys(envelope.resourceErrors ?? {}),
411
+ ...(envelope.deferred ?? []),
412
+ ...(envelope.resourceKeys ?? []),
413
+ ]);
414
+ for (const key of envelopeKeys)
415
+ this.bumpResourceEpoch(key);
220
416
  this.emitResourceUpdates(this.resourceStore.setMany(envelope.resources));
417
+ for (const [key, error] of Object.entries(envelope.resourceErrors ?? {})) {
418
+ this.resourceStore.setResourceError(key, error);
419
+ }
420
+ this.resourceStore.markPending(envelope.deferred ?? []);
221
421
  this.pageStore.setPage(envelope.page);
222
- this.pageCache.set(envelope.page, this.resourceStore.exportKnownVersions());
422
+ this.cachePageEnvelope(envelope);
423
+ }
424
+ cachePageEnvelope(envelope) {
425
+ const allKnownVersions = this.resourceStore.exportKnownVersions();
426
+ if (!envelope.resourceKeys) {
427
+ this.pageCache.set(envelope.page, allKnownVersions);
428
+ return;
429
+ }
430
+ const resourceKeys = Array.from(new Set(envelope.resourceKeys));
431
+ const pendingDeferred = Array.from(new Set(envelope.deferred ?? []))
432
+ .filter(key => resourceKeys.includes(key));
433
+ const versions = {};
434
+ for (const key of resourceKeys) {
435
+ const version = allKnownVersions[key];
436
+ if (version !== undefined)
437
+ versions[key] = version;
438
+ }
439
+ this.pageCache.set(envelope.page, versions, {
440
+ resourceKeys,
441
+ pendingDeferred,
442
+ });
223
443
  }
224
444
  emitResourceUpdates(keys) {
225
445
  for (const key of keys) {
@@ -234,6 +454,62 @@ class FluxRouter {
234
454
  }
235
455
  this.currentVisitId = null;
236
456
  }
457
+ bumpResourceEpoch(key) {
458
+ const epoch = ++this.resourceEpochCounter;
459
+ this.resourceEpochs.set(key, epoch);
460
+ return epoch;
461
+ }
462
+ startDeferredEnvelope(envelope) {
463
+ if (!envelope.deferred?.length)
464
+ return;
465
+ void this.startDeferredBatch(envelope.deferred, envelope.page.url || "/").catch(() => undefined);
466
+ }
467
+ startDeferredBatch(keys, url) {
468
+ this.abortActiveDeferred();
469
+ const controller = new AbortController();
470
+ this.activeDeferredController = controller;
471
+ this.activeDeferredKeys = [...keys];
472
+ const promise = this.loadResources(keys, {
473
+ url,
474
+ reason: "deferred",
475
+ signal: controller.signal,
476
+ });
477
+ this.activeDeferredEpochs = new Map(keys.map(key => [key, this.resourceEpochs.get(key) ?? 0]));
478
+ void promise.finally(() => {
479
+ if (this.activeDeferredController === controller) {
480
+ this.activeDeferredController = null;
481
+ this.activeDeferredKeys = [];
482
+ this.activeDeferredEpochs.clear();
483
+ }
484
+ }).catch(() => undefined);
485
+ return promise;
486
+ }
487
+ abortActiveDeferred() {
488
+ if (!this.activeDeferredController)
489
+ return;
490
+ for (const key of this.activeDeferredKeys) {
491
+ if (this.resourceEpochs.get(key) !== this.activeDeferredEpochs.get(key)) {
492
+ continue;
493
+ }
494
+ this.bumpResourceEpoch(key);
495
+ const record = this.resourceStore.getRecord(key);
496
+ if (record) {
497
+ this.resourceStore.set({
498
+ key,
499
+ version: record.version,
500
+ value: record.value,
501
+ });
502
+ this.resourceStore.markStale(key);
503
+ }
504
+ else {
505
+ this.resourceStore.invalidate(key);
506
+ }
507
+ }
508
+ this.activeDeferredController.abort();
509
+ this.activeDeferredController = null;
510
+ this.activeDeferredKeys = [];
511
+ this.activeDeferredEpochs.clear();
512
+ }
237
513
  }
238
514
  exports.FluxRouter = FluxRouter;
239
515
  function createFluxRuntime(options = {}) {
@@ -1 +1 @@
1
- {"version":3,"file":"router.js","sourceRoot":"","sources":["../src/router.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"router.js","sourceRoot":"","sources":["../src/router.ts"],"names":[],"mappings":"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"}
package/dist/store.d.ts CHANGED
@@ -2,13 +2,20 @@
2
2
  * Reactive ResourceStore with key-level subscriptions and stable snapshots.
3
3
  * Framework-neutral, suitable for React useSyncExternalStore or other UI bindings.
4
4
  */
5
- import { PageDescriptor, ResourcePatch, ResourceWireRecord } from "./protocol";
5
+ import { PageDescriptor, ResourceErrorDetail, ResourcePatch, ResourceWireRecord } from "./protocol";
6
6
  export interface ResourceRecord<T = unknown> {
7
7
  readonly key: string;
8
8
  readonly version: string;
9
9
  readonly value: T;
10
10
  readonly updatedAt: number;
11
11
  }
12
+ export type ResourceStatus = "missing" | "pending" | "loading" | "ready" | "error";
13
+ export interface ResourceStateSnapshot<T = unknown> {
14
+ readonly data: T | undefined;
15
+ readonly status: ResourceStatus;
16
+ readonly error: Readonly<ResourceErrorDetail> | null;
17
+ readonly stale: boolean;
18
+ }
12
19
  export interface PageState {
13
20
  component: string;
14
21
  url: string;
@@ -20,6 +27,7 @@ export declare class ResourceStore {
20
27
  private globalSubscribers;
21
28
  private lruOrder;
22
29
  private staleKeys;
30
+ private stateSnapshots;
23
31
  private readonly maxResources;
24
32
  constructor(options?: {
25
33
  maxResources?: number;
@@ -40,6 +48,8 @@ export declare class ResourceStore {
40
48
  * Return snapshot for server-side rendering.
41
49
  */
42
50
  getServerSnapshot<T = unknown>(key: string): T | undefined;
51
+ /** Return stable loading metadata for a resource key. */
52
+ getStateSnapshot<T = unknown>(key: string): ResourceStateSnapshot<T>;
43
53
  /**
44
54
  * Return full record metadata.
45
55
  */
@@ -56,6 +66,14 @@ export declare class ResourceStore {
56
66
  * Set multiple wire records from a protocol response.
57
67
  */
58
68
  setMany(resources: Record<string, ResourceWireRecord>): string[];
69
+ /** Mark resources announced for deferred resolution but not requested yet. */
70
+ markPending(keys: string[]): void;
71
+ /** Mark resources as actively loading while preserving any stale value. */
72
+ markLoading(keys: string[]): void;
73
+ /** Store a sanitized per-resource error without discarding stale data. */
74
+ setResourceError(key: string, error: ResourceErrorDetail): void;
75
+ /** Clear a resource error and restore its ready or missing state. */
76
+ clearResourceError(key: string): void;
59
77
  /**
60
78
  * Apply mutation patches to a specific resource.
61
79
  */
@@ -76,6 +94,7 @@ export declare class ResourceStore {
76
94
  * Clear all records (e.g. upon user logout).
77
95
  */
78
96
  clear(): void;
97
+ private updateStateSnapshot;
79
98
  private notify;
80
99
  private touchLru;
81
100
  private removeFromLru;
@@ -1 +1 @@
1
- {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../src/store.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../src/store.ts"],"names":[],"mappings":"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"}