@loomwork/ui-hydration 0.0.0-stage → 0.1.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/LICENSE +202 -0
- package/NOTICE +8 -0
- package/README.md +398 -2
- package/dist/cache.d.ts +71 -0
- package/dist/cache.d.ts.map +1 -0
- package/dist/cache.js +157 -0
- package/dist/cache.js.map +1 -0
- package/dist/chatSource.d.ts +105 -0
- package/dist/chatSource.d.ts.map +1 -0
- package/dist/chatSource.js +259 -0
- package/dist/chatSource.js.map +1 -0
- package/dist/client.d.ts +17 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +36 -0
- package/dist/client.js.map +1 -0
- package/dist/contentRefs.d.ts +78 -0
- package/dist/contentRefs.d.ts.map +1 -0
- package/dist/contentRefs.js +129 -0
- package/dist/contentRefs.js.map +1 -0
- package/dist/controller.d.ts +228 -0
- package/dist/controller.d.ts.map +1 -0
- package/dist/controller.js +454 -0
- package/dist/controller.js.map +1 -0
- package/dist/dataProvider.d.ts +53 -0
- package/dist/dataProvider.d.ts.map +1 -0
- package/dist/dataProvider.js +77 -0
- package/dist/dataProvider.js.map +1 -0
- package/dist/esm/cache.js +151 -0
- package/dist/esm/cache.js.map +1 -0
- package/dist/esm/chatSource.js +254 -0
- package/dist/esm/chatSource.js.map +1 -0
- package/dist/esm/client.js +15 -0
- package/dist/esm/client.js.map +1 -0
- package/dist/esm/contentRefs.js +119 -0
- package/dist/esm/contentRefs.js.map +1 -0
- package/dist/esm/controller.js +449 -0
- package/dist/esm/controller.js.map +1 -0
- package/dist/esm/dataProvider.js +72 -0
- package/dist/esm/dataProvider.js.map +1 -0
- package/dist/esm/index.js +15 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/invoker.js +2 -0
- package/dist/esm/invoker.js.map +1 -0
- package/dist/esm/invokers.js +310 -0
- package/dist/esm/invokers.js.map +1 -0
- package/dist/esm/loomEffectProvider.js +96 -0
- package/dist/esm/loomEffectProvider.js.map +1 -0
- package/dist/esm/params.js +207 -0
- package/dist/esm/params.js.map +1 -0
- package/dist/esm/path.js +24 -0
- package/dist/esm/path.js.map +1 -0
- package/dist/esm/plan.js +190 -0
- package/dist/esm/plan.js.map +1 -0
- package/dist/esm/projection.js +230 -0
- package/dist/esm/projection.js.map +1 -0
- package/dist/esm/provider.js +416 -0
- package/dist/esm/provider.js.map +1 -0
- package/dist/esm/repair.js +53 -0
- package/dist/esm/repair.js.map +1 -0
- package/dist/esm/reshape.js +156 -0
- package/dist/esm/reshape.js.map +1 -0
- package/dist/esm/restricted.js +54 -0
- package/dist/esm/restricted.js.map +1 -0
- package/dist/esm/scheduler.js +247 -0
- package/dist/esm/scheduler.js.map +1 -0
- package/dist/esm/select.js +18 -0
- package/dist/esm/select.js.map +1 -0
- package/dist/esm/shape.js +34 -0
- package/dist/esm/shape.js.map +1 -0
- package/dist/esm/split/client.js +309 -0
- package/dist/esm/split/client.js.map +1 -0
- package/dist/esm/split/index.js +3 -0
- package/dist/esm/split/index.js.map +1 -0
- package/dist/esm/split/server.js +488 -0
- package/dist/esm/split/server.js.map +1 -0
- package/dist/esm/split/shared.js +13 -0
- package/dist/esm/split/shared.js.map +1 -0
- package/dist/index.d.ts +29 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +63 -0
- package/dist/index.js.map +1 -0
- package/dist/invoker.d.ts +10 -0
- package/dist/invoker.d.ts.map +1 -0
- package/dist/invoker.js +3 -0
- package/dist/invoker.js.map +1 -0
- package/dist/invokers.d.ts +36 -0
- package/dist/invokers.d.ts.map +1 -0
- package/dist/invokers.js +315 -0
- package/dist/invokers.js.map +1 -0
- package/dist/loomEffectProvider.d.ts +67 -0
- package/dist/loomEffectProvider.d.ts.map +1 -0
- package/dist/loomEffectProvider.js +101 -0
- package/dist/loomEffectProvider.js.map +1 -0
- package/dist/params.d.ts +103 -0
- package/dist/params.d.ts.map +1 -0
- package/dist/params.js +221 -0
- package/dist/params.js.map +1 -0
- package/dist/path.d.ts +12 -0
- package/dist/path.d.ts.map +1 -0
- package/dist/path.js +28 -0
- package/dist/path.js.map +1 -0
- package/dist/plan.d.ts +56 -0
- package/dist/plan.d.ts.map +1 -0
- package/dist/plan.js +199 -0
- package/dist/plan.js.map +1 -0
- package/dist/projection.d.ts +122 -0
- package/dist/projection.d.ts.map +1 -0
- package/dist/projection.js +238 -0
- package/dist/projection.js.map +1 -0
- package/dist/provider.d.ts +152 -0
- package/dist/provider.d.ts.map +1 -0
- package/dist/provider.js +421 -0
- package/dist/provider.js.map +1 -0
- package/dist/repair.d.ts +18 -0
- package/dist/repair.d.ts.map +1 -0
- package/dist/repair.js +57 -0
- package/dist/repair.js.map +1 -0
- package/dist/reshape.d.ts +32 -0
- package/dist/reshape.d.ts.map +1 -0
- package/dist/reshape.js +164 -0
- package/dist/reshape.js.map +1 -0
- package/dist/restricted.d.ts +21 -0
- package/dist/restricted.d.ts.map +1 -0
- package/dist/restricted.js +61 -0
- package/dist/restricted.js.map +1 -0
- package/dist/scheduler.d.ts +82 -0
- package/dist/scheduler.d.ts.map +1 -0
- package/dist/scheduler.js +254 -0
- package/dist/scheduler.js.map +1 -0
- package/dist/select.d.ts +34 -0
- package/dist/select.d.ts.map +1 -0
- package/dist/select.js +21 -0
- package/dist/select.js.map +1 -0
- package/dist/shape.d.ts +3 -0
- package/dist/shape.d.ts.map +1 -0
- package/dist/shape.js +37 -0
- package/dist/shape.js.map +1 -0
- package/dist/split/client.d.ts +132 -0
- package/dist/split/client.d.ts.map +1 -0
- package/dist/split/client.js +313 -0
- package/dist/split/client.js.map +1 -0
- package/dist/split/index.d.ts +5 -0
- package/dist/split/index.d.ts.map +1 -0
- package/dist/split/index.js +14 -0
- package/dist/split/index.js.map +1 -0
- package/dist/split/server.d.ts +160 -0
- package/dist/split/server.d.ts.map +1 -0
- package/dist/split/server.js +496 -0
- package/dist/split/server.js.map +1 -0
- package/dist/split/shared.d.ts +6 -0
- package/dist/split/shared.d.ts.map +1 -0
- package/dist/split/shared.js +19 -0
- package/dist/split/shared.js.map +1 -0
- package/package.json +77 -3
- package/src/cache.ts +211 -0
- package/src/chatSource.ts +374 -0
- package/src/client.ts +46 -0
- package/src/contentRefs.ts +195 -0
- package/src/controller.ts +708 -0
- package/src/dataProvider.ts +141 -0
- package/src/index.ts +86 -0
- package/src/invoker.ts +14 -0
- package/src/invokers.ts +348 -0
- package/src/loomEffectProvider.ts +136 -0
- package/src/params.ts +314 -0
- package/src/path.ts +26 -0
- package/src/plan.ts +197 -0
- package/src/projection.ts +297 -0
- package/src/provider.ts +657 -0
- package/src/repair.ts +70 -0
- package/src/reshape.ts +193 -0
- package/src/restricted.ts +69 -0
- package/src/scheduler.ts +284 -0
- package/src/select.ts +59 -0
- package/src/shape.ts +39 -0
- package/src/split/client.ts +449 -0
- package/src/split/index.ts +18 -0
- package/src/split/server.ts +746 -0
- package/src/split/shared.ts +18 -0
|
@@ -0,0 +1,309 @@
|
|
|
1
|
+
import { checkKindValue, hasKindContract, isBroadcast } from "@loomwork/ui-core/browser";
|
|
2
|
+
import { checkParams, paramsKey, pickParams } from "../params";
|
|
3
|
+
import { HydrationAudienceMismatchError, isReservedHandle, } from "../projection";
|
|
4
|
+
import { HandleScheduler, KEY_SEP, defaultTimer, disposedFinding, } from "../scheduler";
|
|
5
|
+
import { errorMessage, refuse, reservedFinding } from "./shared";
|
|
6
|
+
const isFinding = (f) => f !== null &&
|
|
7
|
+
typeof f === "object" &&
|
|
8
|
+
typeof f.code === "string" &&
|
|
9
|
+
typeof f.message === "string" &&
|
|
10
|
+
(f.severity === "error" || f.severity === "warn");
|
|
11
|
+
const malformedResult = (handle) => refuse("load-malformed", `the loader answered "${handle}" with something that is not a load result`);
|
|
12
|
+
const failedResult = (handle, e) => refuse("load-failed", `loading "${handle}" failed: ${errorMessage(e)}`);
|
|
13
|
+
/** A loader's answer crossed a boundary: believe only what has the shape of a load result. */
|
|
14
|
+
function asLoadResult(x, handle) {
|
|
15
|
+
if (x === null || typeof x !== "object")
|
|
16
|
+
return malformedResult(handle);
|
|
17
|
+
const r = x;
|
|
18
|
+
const finding = isFinding(r.finding) ? r.finding : undefined;
|
|
19
|
+
if (r.state === "ready")
|
|
20
|
+
return finding === undefined
|
|
21
|
+
? { state: "ready", value: r.value }
|
|
22
|
+
: { state: "ready", value: r.value, finding };
|
|
23
|
+
// `empty` (loom ADR 0100) carries its finding and never a value: a value beside it is dropped.
|
|
24
|
+
if ((r.state === "stale" || r.state === "error" || r.state === "empty") && finding !== undefined)
|
|
25
|
+
return { state: r.state, finding };
|
|
26
|
+
return malformedResult(handle);
|
|
27
|
+
}
|
|
28
|
+
const PRIORITIES = new Set(["P0", "P1", "P2"]);
|
|
29
|
+
/** The inventory crossed a boundary too: believe only what has the shape of one. */
|
|
30
|
+
function isInventory(x) {
|
|
31
|
+
if (x === null || typeof x !== "object")
|
|
32
|
+
return false;
|
|
33
|
+
const inv = x;
|
|
34
|
+
return (typeof inv.experienceId === "string" &&
|
|
35
|
+
typeof inv.versionHash === "string" &&
|
|
36
|
+
Array.isArray(inv.handles) &&
|
|
37
|
+
inv.handles.every((r) => {
|
|
38
|
+
if (r === null || typeof r !== "object")
|
|
39
|
+
return false;
|
|
40
|
+
const ref = r;
|
|
41
|
+
return (typeof ref.handle === "string" &&
|
|
42
|
+
PRIORITIES.has(ref.priority) &&
|
|
43
|
+
typeof ref.revision === "string" &&
|
|
44
|
+
Array.isArray(ref.params) &&
|
|
45
|
+
ref.params.every((p) => typeof p === "string") &&
|
|
46
|
+
(ref.finding === undefined || isFinding(ref.finding)));
|
|
47
|
+
}));
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Client-side hydration across a trust boundary. Same scheduling as `HydrationController` (P0 now,
|
|
51
|
+
* P1 batched, P2 on `markVisible`, once per question, supersede, dispose) over a `HandleInventory`,
|
|
52
|
+
* loading through the injected `HandleLoader` — a group the scheduler starts together as ONE
|
|
53
|
+
* `loadMany` — and publishing to a `HydrationStore`. A question is the handle's opaque revision
|
|
54
|
+
* plus its params (defaults < global < handle-scoped, filtered to the names the inventory lists
|
|
55
|
+
* for it). No cache, no clock and no drift handling here: all three are the server's.
|
|
56
|
+
*/
|
|
57
|
+
export class SplitHydrationController {
|
|
58
|
+
opts;
|
|
59
|
+
sched;
|
|
60
|
+
current;
|
|
61
|
+
globalParams = {};
|
|
62
|
+
scopedParams = new Map();
|
|
63
|
+
/**
|
|
64
|
+
* Throws `TypeError` for a loader missing `load` or `loadMany`, `RangeError` for
|
|
65
|
+
* unrepresentable `defaultParams`.
|
|
66
|
+
*/
|
|
67
|
+
constructor(opts) {
|
|
68
|
+
this.opts = opts;
|
|
69
|
+
const broadcast = isBroadcast(opts.audience);
|
|
70
|
+
if (broadcast !== isBroadcast(opts.store.scope.audience))
|
|
71
|
+
throw new HydrationAudienceMismatchError(broadcast);
|
|
72
|
+
const loader = opts.loader;
|
|
73
|
+
if (typeof loader?.load !== "function" || typeof loader.loadMany !== "function")
|
|
74
|
+
throw new TypeError("SplitHydrationController: the loader must implement load and loadMany");
|
|
75
|
+
if (opts.defaultParams !== undefined) {
|
|
76
|
+
const bad = checkParams(opts.defaultParams);
|
|
77
|
+
if (bad)
|
|
78
|
+
throw new RangeError(bad.message);
|
|
79
|
+
}
|
|
80
|
+
this.sched = new HandleScheduler(opts.store, {
|
|
81
|
+
newGroup: () => ({ queue: [] }),
|
|
82
|
+
run: (job, signal, group) => this.enqueue(job, signal, group),
|
|
83
|
+
}, opts.setTimer ?? defaultTimer, opts.batchWindowMs ?? 50);
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Publish a value for a handle that no loader serves (a live transcript this page folds), through
|
|
87
|
+
* the inventory's gate: only a handle the server LISTED is accepted (a restricted or unknown one is
|
|
88
|
+
* absent from it, so it is refused), and the value must pass the contract of `kind`, which the caller
|
|
89
|
+
* names (this side holds no catalogue). Refused = a finding and nothing written. NOTE: the inventory
|
|
90
|
+
* does not say what KIND a listed handle feeds, so this cannot verify that `kind` is the handle's
|
|
91
|
+
* widget: that is the page author's code naming its own handle, the viewer gate (listed or not) is
|
|
92
|
+
* the part that is enforced here.
|
|
93
|
+
*/
|
|
94
|
+
publishValue(handle, value, options) {
|
|
95
|
+
const listed = !this.sched.isDisposed &&
|
|
96
|
+
!isReservedHandle(handle) &&
|
|
97
|
+
this.current?.handles.some((r) => r.handle === handle && r.finding === undefined) === true;
|
|
98
|
+
if (!listed)
|
|
99
|
+
return {
|
|
100
|
+
ok: false,
|
|
101
|
+
finding: {
|
|
102
|
+
code: "publish-unbound",
|
|
103
|
+
severity: "error",
|
|
104
|
+
message: "the handle is not in the current inventory; the value was refused",
|
|
105
|
+
},
|
|
106
|
+
};
|
|
107
|
+
if (!hasKindContract(options.kind))
|
|
108
|
+
return {
|
|
109
|
+
ok: false,
|
|
110
|
+
finding: {
|
|
111
|
+
code: "publish-uncontracted",
|
|
112
|
+
severity: "error",
|
|
113
|
+
message: "the named kind has no value contract; refused",
|
|
114
|
+
},
|
|
115
|
+
};
|
|
116
|
+
const check = checkKindValue(options.kind, value);
|
|
117
|
+
if (!check.ok)
|
|
118
|
+
return { ok: false, finding: check.finding };
|
|
119
|
+
this.opts.store.setValue(handle, value, { state: options.state ?? "ready" });
|
|
120
|
+
return { ok: true };
|
|
121
|
+
}
|
|
122
|
+
/** Bind an inventory; a second `load` IS a recompose. */
|
|
123
|
+
load(inventory) {
|
|
124
|
+
if (this.sched.isDisposed)
|
|
125
|
+
return { findings: [disposedFinding("load")] };
|
|
126
|
+
if (!isInventory(inventory))
|
|
127
|
+
return { findings: [invalidInventory()] };
|
|
128
|
+
if (this.current !== undefined)
|
|
129
|
+
return this.recompose(inventory);
|
|
130
|
+
return this.bind(inventory);
|
|
131
|
+
}
|
|
132
|
+
/** A new inventory replaces the current one: drop unlisted handles, keep the rest, load new ones. */
|
|
133
|
+
recompose(next) {
|
|
134
|
+
if (this.sched.isDisposed)
|
|
135
|
+
return { findings: [disposedFinding("recompose")] };
|
|
136
|
+
// Before anything is dropped: an inventory we refuse must leave the current one as it was.
|
|
137
|
+
if (!isInventory(next))
|
|
138
|
+
return { findings: [invalidInventory()] };
|
|
139
|
+
this.sched.retain(new Set(next.handles.map((r) => r.handle)));
|
|
140
|
+
return this.bind(next);
|
|
141
|
+
}
|
|
142
|
+
/** The surface reports a lazy (P2) widget entered the viewport. */
|
|
143
|
+
markVisible(handle) {
|
|
144
|
+
this.sched.markVisible(handle);
|
|
145
|
+
}
|
|
146
|
+
/**
|
|
147
|
+
* Replace the global params (no `scope.handle`) or one handle's scoped params, then re-ask
|
|
148
|
+
* every bound handle whose question changed — only those, so a handle that ended on `error`
|
|
149
|
+
* with an unchanged question is NOT retried here (`invalidate` retries it). `{}` clears.
|
|
150
|
+
* Refused, with nothing changed, for params `checkParams` refuses or a reserved handle.
|
|
151
|
+
*/
|
|
152
|
+
setParams(params, scope = {}) {
|
|
153
|
+
if (this.sched.isDisposed)
|
|
154
|
+
return { findings: [disposedFinding("setParams")] };
|
|
155
|
+
const bad = checkParams(params);
|
|
156
|
+
if (bad)
|
|
157
|
+
return { findings: [bad] };
|
|
158
|
+
if (scope.handle !== undefined && isReservedHandle(scope.handle))
|
|
159
|
+
return { findings: [reservedFinding(scope.handle)] };
|
|
160
|
+
const before = this.current === undefined
|
|
161
|
+
? new Map()
|
|
162
|
+
: new Map(this.jobs(this.current).jobs.map((j) => [j.handle, j.fingerprint]));
|
|
163
|
+
// A copy (own enumerable keys only): a caller mutating its object later changes nothing.
|
|
164
|
+
const copy = Object.fromEntries(Object.entries(params));
|
|
165
|
+
if (scope.handle === undefined)
|
|
166
|
+
this.globalParams = copy;
|
|
167
|
+
else
|
|
168
|
+
this.scopedParams.set(scope.handle, copy);
|
|
169
|
+
if (this.current !== undefined)
|
|
170
|
+
this.sched.schedule(this.jobs(this.current).jobs.filter((j) => before.get(j.handle) !== j.fingerprint));
|
|
171
|
+
return { findings: [] };
|
|
172
|
+
}
|
|
173
|
+
/** Ask again (one handle or all): supersedes in-flight loads; a lazy handle stays lazy. */
|
|
174
|
+
invalidate(handle) {
|
|
175
|
+
if (this.sched.isDisposed)
|
|
176
|
+
return { findings: [disposedFinding("invalidate")] };
|
|
177
|
+
if (this.current === undefined)
|
|
178
|
+
return { findings: [] };
|
|
179
|
+
const { jobs } = this.jobs(this.current);
|
|
180
|
+
this.sched.reload(handle === undefined ? jobs : jobs.filter((j) => j.handle === handle));
|
|
181
|
+
return { findings: [] };
|
|
182
|
+
}
|
|
183
|
+
inFlight() {
|
|
184
|
+
return this.sched.inFlight();
|
|
185
|
+
}
|
|
186
|
+
/** Terminal: every in-flight load is aborted and reported, and nothing schedules again. */
|
|
187
|
+
dispose() {
|
|
188
|
+
this.sched.dispose();
|
|
189
|
+
this.current = undefined;
|
|
190
|
+
this.globalParams = {};
|
|
191
|
+
this.scopedParams.clear();
|
|
192
|
+
}
|
|
193
|
+
bind(inventory) {
|
|
194
|
+
this.current = inventory;
|
|
195
|
+
const listed = new Set(inventory.handles.map((r) => r.handle));
|
|
196
|
+
for (const handle of [...this.scopedParams.keys()])
|
|
197
|
+
if (!listed.has(handle))
|
|
198
|
+
this.scopedParams.delete(handle);
|
|
199
|
+
const { jobs, findings, missing } = this.jobs(inventory);
|
|
200
|
+
for (const m of missing)
|
|
201
|
+
this.opts.store.setStatus(m.handle, { state: "error", finding: m.finding });
|
|
202
|
+
this.sched.schedule(jobs);
|
|
203
|
+
return { findings };
|
|
204
|
+
}
|
|
205
|
+
/** Pure: the jobs `inventory` asks for right now, and the handles that cannot load (with why). */
|
|
206
|
+
jobs(inventory) {
|
|
207
|
+
const jobs = [];
|
|
208
|
+
const findings = [];
|
|
209
|
+
const missing = [];
|
|
210
|
+
for (const ref of inventory.handles) {
|
|
211
|
+
// The inventory crossed a boundary: a reserved handle is refused here too.
|
|
212
|
+
if (isReservedHandle(ref.handle)) {
|
|
213
|
+
findings.push(reservedFinding(ref.handle));
|
|
214
|
+
continue;
|
|
215
|
+
}
|
|
216
|
+
if (ref.finding !== undefined) {
|
|
217
|
+
findings.push(ref.finding);
|
|
218
|
+
missing.push({ handle: ref.handle, finding: ref.finding });
|
|
219
|
+
continue;
|
|
220
|
+
}
|
|
221
|
+
const params = pickParams({ ...this.opts.defaultParams, ...this.globalParams, ...this.scopedParams.get(ref.handle) }, ref.params);
|
|
222
|
+
jobs.push({
|
|
223
|
+
handle: ref.handle,
|
|
224
|
+
priority: ref.priority,
|
|
225
|
+
params,
|
|
226
|
+
experienceId: inventory.experienceId,
|
|
227
|
+
versionHash: inventory.versionHash,
|
|
228
|
+
fingerprint: `${ref.revision}${KEY_SEP}${paramsKey(params)}`,
|
|
229
|
+
});
|
|
230
|
+
}
|
|
231
|
+
return { jobs, findings, missing };
|
|
232
|
+
}
|
|
233
|
+
/**
|
|
234
|
+
* The scheduler starts a group's jobs in one synchronous turn; each joins the group's queue and
|
|
235
|
+
* the first schedules the flush, so the whole group leaves as one request.
|
|
236
|
+
*/
|
|
237
|
+
enqueue(job, signal, group) {
|
|
238
|
+
return new Promise((resolve) => {
|
|
239
|
+
group.queue.push({ job, signal, resolve });
|
|
240
|
+
if (group.queue.length === 1)
|
|
241
|
+
queueMicrotask(() => this.flush(group));
|
|
242
|
+
});
|
|
243
|
+
}
|
|
244
|
+
flush(group) {
|
|
245
|
+
const queued = group.queue;
|
|
246
|
+
group.queue = [];
|
|
247
|
+
// Abandoned before it left (superseded, dropped, disposed): its result would be dropped anyway.
|
|
248
|
+
const live = [];
|
|
249
|
+
for (const q of queued) {
|
|
250
|
+
if (q.signal.aborted)
|
|
251
|
+
q.resolve(refuse("aborted", `the load of "${q.job.handle}" was abandoned`));
|
|
252
|
+
else
|
|
253
|
+
live.push(q);
|
|
254
|
+
}
|
|
255
|
+
if (live.length > 1) {
|
|
256
|
+
this.loadGroup(live).then((results) => {
|
|
257
|
+
live.forEach((q, i) => q.resolve(results[i] ?? malformedResult(q.job.handle)));
|
|
258
|
+
});
|
|
259
|
+
return;
|
|
260
|
+
}
|
|
261
|
+
for (const q of live)
|
|
262
|
+
this.loadOne(q).then(q.resolve);
|
|
263
|
+
}
|
|
264
|
+
async loadOne(q) {
|
|
265
|
+
try {
|
|
266
|
+
return asLoadResult(await this.opts.loader.load(request(q.job), q.signal), q.job.handle);
|
|
267
|
+
}
|
|
268
|
+
catch (e) {
|
|
269
|
+
return failedResult(q.job.handle, e);
|
|
270
|
+
}
|
|
271
|
+
}
|
|
272
|
+
/** One `loadMany` for the group; its signal aborts once every member has been abandoned. */
|
|
273
|
+
async loadGroup(live) {
|
|
274
|
+
const ac = new AbortController();
|
|
275
|
+
let remaining = live.length;
|
|
276
|
+
const onAbort = () => {
|
|
277
|
+
remaining -= 1;
|
|
278
|
+
if (remaining === 0)
|
|
279
|
+
ac.abort();
|
|
280
|
+
};
|
|
281
|
+
for (const q of live)
|
|
282
|
+
q.signal.addEventListener("abort", onAbort, { once: true });
|
|
283
|
+
try {
|
|
284
|
+
const answer = await this.opts.loader.loadMany(live.map((q) => request(q.job)), ac.signal);
|
|
285
|
+
if (!Array.isArray(answer) || answer.length !== live.length)
|
|
286
|
+
return live.map((q) => malformedResult(q.job.handle));
|
|
287
|
+
return live.map((q, i) => asLoadResult(answer[i], q.job.handle));
|
|
288
|
+
}
|
|
289
|
+
catch (e) {
|
|
290
|
+
return live.map((q) => failedResult(q.job.handle, e));
|
|
291
|
+
}
|
|
292
|
+
finally {
|
|
293
|
+
for (const q of live)
|
|
294
|
+
q.signal.removeEventListener("abort", onAbort);
|
|
295
|
+
}
|
|
296
|
+
}
|
|
297
|
+
}
|
|
298
|
+
const invalidInventory = () => ({
|
|
299
|
+
code: "invalid-inventory",
|
|
300
|
+
severity: "error",
|
|
301
|
+
message: "not a handle inventory: expected an experienceId, a versionHash and well-formed handle refs",
|
|
302
|
+
});
|
|
303
|
+
const request = (job) => ({
|
|
304
|
+
experienceId: job.experienceId,
|
|
305
|
+
versionHash: job.versionHash,
|
|
306
|
+
handle: job.handle,
|
|
307
|
+
params: job.params,
|
|
308
|
+
});
|
|
309
|
+
//# sourceMappingURL=client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../../src/split/client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/split/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iBAAiB,EACjB,4BAA4B,EAC5B,kBAAkB,EAClB,eAAe,EACf,aAAa,EACb,WAAW,EACX,YAAY,GACb,MAAM,UAAU,CAAC;AAElB,OAAO,EAAE,wBAAwB,EAAE,MAAM,UAAU,CAAC"}
|