@braidlabs/data 0.3.0 → 0.5.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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@braidlabs/data",
3
- "version": "0.3.0",
3
+ "version": "0.5.0",
4
4
  "description": "Local-first client data layer: persistence-first, skew-tolerant across independently deployed readers.",
5
5
  "keywords": [
6
6
  "local-first",
@@ -23,7 +23,7 @@
23
23
  "./package.json": "./package.json"
24
24
  },
25
25
  "peerDependencies": {
26
- "@braidlabs/skew": "^0.3.0"
26
+ "@braidlabs/skew": "^0.5.0"
27
27
  },
28
28
  "publishConfig": {
29
29
  "access": "public"
package/src/index.d.ts CHANGED
@@ -32,7 +32,7 @@ export { copyPartition } from './lib/partitions.js';
32
32
  export type { CopyPartitionOptions, CopyPartitionResult, PartitionConflictPolicy, } from './lib/partitions.js';
33
33
  export { fromPull } from './lib/adapters.js';
34
34
  export type { PullAdapter, PushAdapter, PushConnection, PushRecord, PushSink, CommandAdapter, } from './lib/adapters.js';
35
- export { createEventBus } from './lib/events.js';
35
+ export { createEventBus, EVENT_BUS_COLLECTIONS } from './lib/events.js';
36
36
  export type { EventBus, EventBusOptions, Channel, ChannelOptions, SubscribeOptions, BusEvent, Delivery, } from './lib/events.js';
37
37
  export { createIntentRegistry, NoIntentHandlerError } from './lib/intents.js';
38
- export type { IntentRegistry, IntentRegistryOptions, IntentHandlerOptions, IntentCandidate, IntentResult, ResolvePolicy, RaiseOptions, } from './lib/intents.js';
38
+ export type { IntentRegistry, IntentRegistryOptions, IntentHandlerOptions, IntentCandidate, RemoteIntentHandler, LocalIntentHandler, IntentResult, ResolvePolicy, RaiseOptions, } from './lib/intents.js';
package/src/index.js CHANGED
@@ -20,6 +20,6 @@ export { createOutbox, OutboxEntrySchema } from './lib/outbox.js';
20
20
  export { createTenancy, partitionKey, TenancyRecordSchema } from './lib/tenancy.js';
21
21
  export { copyPartition } from './lib/partitions.js';
22
22
  export { fromPull } from './lib/adapters.js';
23
- export { createEventBus } from './lib/events.js';
23
+ export { createEventBus, EVENT_BUS_COLLECTIONS } from './lib/events.js';
24
24
  export { createIntentRegistry, NoIntentHandlerError } from './lib/intents.js';
25
25
  //# sourceMappingURL=index.js.map
package/src/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../libs/data/src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAS1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAElE,OAAO,EAAE,0BAA0B,EAAE,MAAM,iCAAiC,CAAC;AAG7E,OAAO,EAAE,QAAQ,EAAE,oBAAoB,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAGjF,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAmBlD,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAI9D,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAGtG,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAGlE,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAGpF,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAOpD,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAU7C,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAWjD,OAAO,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../libs/data/src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAS1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAElE,OAAO,EAAE,0BAA0B,EAAE,MAAM,iCAAiC,CAAC;AAG7E,OAAO,EAAE,QAAQ,EAAE,oBAAoB,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAGjF,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAmBlD,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAI9D,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAGtG,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAGlE,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAGpF,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAOpD,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAU7C,OAAO,EAAE,cAAc,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAWxE,OAAO,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC"}
@@ -1,7 +1,7 @@
1
1
  import type { VersionedSchema } from '@braidlabs/skew';
2
2
  import { type FlushResult } from './flush.js';
3
3
  import { type BroadcastChannelLike, type Invalidator } from './invalidation.js';
4
- import type { RecordDriver } from './record-store.js';
4
+ import { type RecordDriver } from './record-store.js';
5
5
  import type { Conflict, ConflictPolicy } from './query.js';
6
6
  import { type IntentHandlerOptions, type IntentRegistry, type IntentResult, type RaiseOptions } from './intents.js';
7
7
  /**
@@ -61,8 +61,24 @@ export interface EventBusOptions {
61
61
  consumers?: readonly string[];
62
62
  /** Cross-context wake-up and page-scoped fan-out. Defaults to the shared one for the partition. */
63
63
  invalidator?: Invalidator;
64
- /** Origin-scope transport. Injectable for tests; defaults to a `BroadcastChannel`. */
64
+ /** The transport between contexts. Injectable for tests; defaults to a `BroadcastChannel`. */
65
65
  broadcastChannel?: (name: string) => BroadcastChannelLike | undefined;
66
+ /**
67
+ * Which page this bus is on, for `scope: 'page'` channels: buses that name the same page share
68
+ * them, and a bus on another page — another tab — does not.
69
+ *
70
+ * In a browser it defaults to the top-level document, which every Braid realm on the page shares
71
+ * and no other tab does: each fragment's realm is its own JavaScript context, as isolated from
72
+ * the others in memory as a tab is, so without a transport a page-scoped channel would reach no
73
+ * further than the bus that wrote to it. Outside a browser there is no page, and a page-scoped
74
+ * channel stays within this bus unless one is named here.
75
+ */
76
+ page?: string;
77
+ /**
78
+ * How long a raised intent waits for a handler in another context to answer before it fails.
79
+ * Defaults to 30 seconds. A context that closes answers its pending calls at once.
80
+ */
81
+ intentTimeoutMs?: number;
66
82
  /** Attempts before a queued event is abandoned. */
67
83
  maxAttempts?: number;
68
84
  /** Never silent: retention drops and abandoned handlers are reported here. */
@@ -99,6 +115,17 @@ export interface ChannelOptions {
99
115
  * different partition, and then none of this applies because the storage differs too.
100
116
  */
101
117
  entity?: string;
118
+ /**
119
+ * Keep this channel's state across reloads, in the bus's `driver`: the last value this context
120
+ * broadcast is stored, and a bus that opens the channel later — after a reload, with no other
121
+ * context alive to ask — starts from it. Stored per partition, as a versioned envelope when a
122
+ * contract is registered for the channel, so a newer or older build reads it at its own version.
123
+ *
124
+ * A stored value is a fallback, not the truth: a value broadcast since, or a fresher one another
125
+ * context holds, wins over it. Needs a `driver`, and is refused without one rather than quietly
126
+ * not persisting.
127
+ */
128
+ persist?: boolean;
102
129
  }
103
130
  export interface SubscribeOptions {
104
131
  /** The contract version this subscriber speaks. Projected per subscriber, as the context bus does. */
@@ -138,4 +165,9 @@ export interface EventBus extends Pick<IntentRegistry, 'candidates'> {
138
165
  flush(): Promise<FlushResult>;
139
166
  close(): void;
140
167
  }
168
+ /**
169
+ * The collections an event bus writes to its `driver`: durable event queues and persisted channel
170
+ * state. A driver that must declare its collections up front — IndexedDB — needs these among them.
171
+ */
172
+ export declare const EVENT_BUS_COLLECTIONS: readonly ["skew-events", "skew-channel-state"];
141
173
  export declare function createEventBus(options: EventBusOptions): EventBus;
package/src/lib/events.js CHANGED
@@ -1,8 +1,16 @@
1
1
  import { drainOutbox } from './flush.js';
2
2
  import { sharedInvalidator } from './invalidation.js';
3
3
  import { createOutbox } from './outbox.js';
4
- import { createIntentRegistry, } from './intents.js';
4
+ import { storageKey } from './record-store.js';
5
+ import { createIntentRegistry, NoIntentHandlerError, } from './intents.js';
5
6
  const EVENT_COLLECTION = 'skew-events';
7
+ /** Where `persist` channels keep their state between reloads: one record per channel per partition. */
8
+ const STATE_COLLECTION = 'skew-channel-state';
9
+ /**
10
+ * The collections an event bus writes to its `driver`: durable event queues and persisted channel
11
+ * state. A driver that must declare its collections up front — IndexedDB — needs these among them.
12
+ */
13
+ export const EVENT_BUS_COLLECTIONS = [EVENT_COLLECTION, STATE_COLLECTION];
6
14
  const DEFAULT_TTL_MS = 60 * 60 * 1000;
7
15
  const DEFAULT_MAX_DEPTH = 500;
8
16
  /** The queue owner for a consumer's events, kept clear of its mutation outbox's lock and records. */
@@ -11,8 +19,49 @@ const queueOwner = (consumer) => `events:${consumer}`;
11
19
  const wakeTag = (consumer) => `skew:events#${consumer}`;
12
20
  /** One mutation id per channel+type, so `drainOutbox` can find the handler by name after a reload. */
13
21
  const runnerId = (channel, type) => `event:${channel}:${type}`;
22
+ /** How long a new bus's directory of other realms' intent handlers may take to fill. */
23
+ const INTENT_DISCOVERY_MS = 100;
24
+ /**
25
+ * How long a context that holds state it did not publish waits before answering a state request,
26
+ * at most — in case the publisher is gone. The publisher answers at once, and any answer cancels
27
+ * the rest, so a page of many realms sends one reply, not one per realm.
28
+ */
29
+ const FALLBACK_REPLY_MS = 60;
30
+ /**
31
+ * The page this context is on, named by when its document started: the highest ancestor document
32
+ * this context can read, which every same-origin realm composed onto the page reaches and no
33
+ * other tab does. Read, never written: nothing is installed on the host. A cross-origin ancestor
34
+ * (the whole app embedded in another site) stops the walk at the last same-origin one, which is
35
+ * still the composed page. Undefined outside a browser.
36
+ */
37
+ function currentPage() {
38
+ if (typeof window === 'undefined')
39
+ return undefined;
40
+ let page = window;
41
+ for (let depth = 0; depth < 32; depth += 1) {
42
+ let parent;
43
+ try {
44
+ parent = page.parent;
45
+ if (!parent || parent === page)
46
+ break;
47
+ // throws for a cross-origin parent
48
+ void parent.performance.timeOrigin;
49
+ }
50
+ catch {
51
+ break;
52
+ }
53
+ page = parent;
54
+ }
55
+ try {
56
+ return String(page.performance.timeOrigin);
57
+ }
58
+ catch {
59
+ return undefined;
60
+ }
61
+ }
14
62
  export function createEventBus(options) {
15
63
  const partition = options.partition ?? (() => 'default');
64
+ const page = options.page ?? currentPage();
16
65
  const invalidator = options.invalidator ?? sharedInvalidator({ partition: partition() });
17
66
  const schemas = new Map();
18
67
  const channels = new Map();
@@ -39,24 +88,76 @@ export function createEventBus(options) {
39
88
  const wireName = `skew:events:${partition()}:${name}`;
40
89
  if (options.broadcastChannel)
41
90
  return options.broadcastChannel(wireName);
42
- return typeof BroadcastChannel === 'undefined'
43
- ? undefined
44
- : new BroadcastChannel(wireName);
91
+ if (typeof BroadcastChannel === 'undefined')
92
+ return undefined;
93
+ const channel = new BroadcastChannel(wireName);
94
+ // Node — a test environment with a `window` — would otherwise stay alive for an open channel
95
+ channel.unref?.();
96
+ return channel;
97
+ }
98
+ /**
99
+ * Sends to other contexts. A value that cannot be cloned has already reached this context's
100
+ * subscribers and handlers, so the failure is reported rather than thrown after the fact.
101
+ */
102
+ function post(channel, message) {
103
+ try {
104
+ channel.wire?.postMessage(message);
105
+ }
106
+ catch (error) {
107
+ options.onEventError?.(`[skew/data] "${channel.name}" could not be sent to other contexts`, error);
108
+ }
109
+ }
110
+ /**
111
+ * Asks other contexts for the channel's state, once, the first time this context reads it. A
112
+ * channel used only for events never asks.
113
+ */
114
+ function askForState(channel) {
115
+ if (!channel.wire || channel.live || channel.asked !== undefined)
116
+ return;
117
+ channel.asked = crypto.randomUUID();
118
+ post(channel, { kind: 'state-request', request: channel.asked });
119
+ }
120
+ function answer(channel, request) {
121
+ if (!channel.heard || channel.state === undefined || channel.replying.has(request) || channel.answered.has(request))
122
+ return;
123
+ const reply = () => {
124
+ channel.replying.delete(request);
125
+ post(channel, { kind: 'state-reply', request, value: channel.state, at: channel.at ?? 0 });
126
+ };
127
+ if (channel.authored)
128
+ return reply();
129
+ const timer = setTimeout(reply, Math.random() * FALLBACK_REPLY_MS);
130
+ timer.unref?.();
131
+ channel.replying.set(request, timer);
45
132
  }
46
133
  function channelState(name, channelOptions) {
47
134
  // One entity's channel is not another's, so the identity carries it — while the contract stays
48
135
  // registered under the logical name, because every fund's selection has the same shape.
49
136
  const key = channelOptions.entity ? `${name}@${channelOptions.entity}` : name;
50
137
  const existing = channels.get(key);
51
- if (existing)
138
+ if (existing) {
139
+ // the first call decides a channel's reach and storage; a later one asking for different
140
+ // ones would otherwise get them silently ignored
141
+ if ((existing.options.scope ?? 'page') !== (channelOptions.scope ?? 'page') || Boolean(existing.options.persist) !== Boolean(channelOptions.persist)) {
142
+ throw new TypeError(`[skew/data] channel "${key}" is already open with scope "${existing.options.scope ?? 'page'}"` +
143
+ `${existing.options.persist ? ' and persist' : ''}; open it with the same options everywhere in this context`);
144
+ }
52
145
  return existing;
146
+ }
53
147
  const scope = channelOptions.scope ?? 'page';
54
- const wire = scope === 'origin' ? openWire(key) : undefined;
148
+ const wire = scope === 'origin' ? openWire(key) : page === undefined ? undefined : openWire(`page:${page}:${key}`);
55
149
  const created = {
56
150
  name,
57
151
  key,
58
152
  options: channelOptions,
59
153
  state: undefined,
154
+ published: undefined,
155
+ heard: false,
156
+ live: false,
157
+ at: undefined,
158
+ authored: false,
159
+ replying: new Map(),
160
+ answered: new Set(),
60
161
  conflict: null,
61
162
  stateListeners: new Set(),
62
163
  wire,
@@ -66,11 +167,29 @@ export function createEventBus(options) {
66
167
  wire?.addEventListener('message', (event) => {
67
168
  const message = event.data;
68
169
  if (message?.kind === 'state')
69
- applyState(created, message.value, { local: false });
170
+ applyState(created, message.value, { local: false, at: message.at });
70
171
  if (message?.kind === 'event' && message.event)
71
172
  deliverLive(message.event);
173
+ // A context that reads the channel after its state was set asks for it once (askForState).
174
+ if (message?.kind === 'state-request')
175
+ answer(created, message.request);
176
+ if (message?.kind === 'state-reply') {
177
+ // someone answered: nobody else needs to
178
+ clearTimeout(created.replying.get(message.request));
179
+ created.replying.delete(message.request);
180
+ created.answered.add(message.request);
181
+ // a few recent ones are enough: a request is answered within FALLBACK_REPLY_MS
182
+ if (created.answered.size > 64)
183
+ created.answered.delete(created.answered.values().next().value);
184
+ // Only the asker takes it, and only as a catch-up: a reply that arrives after a newer
185
+ // broadcast, or after state was cleared, must not set it back.
186
+ if (message.request === created.asked)
187
+ catchUp(created, message.value, message.at);
188
+ }
72
189
  });
73
190
  channels.set(key, created);
191
+ if (channelOptions.persist)
192
+ restore(created);
74
193
  return created;
75
194
  }
76
195
  /**
@@ -80,8 +199,8 @@ export function createEventBus(options) {
80
199
  * news, not a disagreement. Two publishers racing end in last-write-wins, and the policy decides
81
200
  * whether anyone is told — the same contract, and the same words, as a mutation's confirmation.
82
201
  */
83
- function applyState(channel, value, { local }) {
84
- const previous = channel.state;
202
+ function applyState(channel, value, { local, at = Date.now(), live = true }) {
203
+ const previous = channel.published;
85
204
  let stored = value;
86
205
  if (local && previous !== undefined && !same(previous, value)) {
87
206
  const policy = channel.options.onConflict ?? 'raise';
@@ -96,6 +215,14 @@ export function createEventBus(options) {
96
215
  channel.conflict = conflict;
97
216
  }
98
217
  channel.state = stored;
218
+ channel.heard = true;
219
+ channel.live = channel.live || live;
220
+ channel.at = at;
221
+ channel.authored = local;
222
+ if (live)
223
+ channel.asked = undefined;
224
+ if (local)
225
+ channel.published = stored;
99
226
  for (const subscription of [...channel.stateListeners]) {
100
227
  // Isolated per subscriber: one application's bad deploy must not present as a different
101
228
  // application silently failing to update.
@@ -107,6 +234,85 @@ export function createEventBus(options) {
107
234
  }
108
235
  }
109
236
  }
237
+ /**
238
+ * A value from somewhere other than a live broadcast — a peer's answer to a state request, or
239
+ * what was stored before a reload. Taken only while nothing live has arrived, and only when it is
240
+ * newer than what this context already caught up to.
241
+ */
242
+ function catchUp(channel, value, at) {
243
+ if (channel.live || (channel.at !== undefined && at <= channel.at))
244
+ return;
245
+ applyState(channel, value, { local: false, at, live: false });
246
+ }
247
+ function storedId(channel) {
248
+ return storageKey(partition(), channel.key);
249
+ }
250
+ /**
251
+ * Writes the channel's state to the driver. Runs after the value has reached this context's
252
+ * subscribers, and never throws: a value that cannot be stored — not cloneable, no active
253
+ * partition, a failing driver — is reported, not allowed to undo a broadcast that already happened.
254
+ */
255
+ function store(channel) {
256
+ const report = (error) => options.onEventError?.(`[skew/data] "${channel.name}" state could not be stored`, error);
257
+ try {
258
+ const driver = options.driver;
259
+ const id = storedId(channel);
260
+ const write = channel.state === undefined
261
+ ? driver.delete(STATE_COLLECTION, id)
262
+ : driver.put(STATE_COLLECTION, {
263
+ id,
264
+ key: channel.key,
265
+ partition: partition(),
266
+ seq: channel.at ?? Date.now(),
267
+ envelope: envelopeOf(channel.name, channel.state),
268
+ owner: options.consumer,
269
+ });
270
+ write.catch(report);
271
+ }
272
+ catch (error) {
273
+ report(error);
274
+ }
275
+ }
276
+ function restore(channel) {
277
+ let id;
278
+ try {
279
+ id = storedId(channel);
280
+ }
281
+ catch (error) {
282
+ options.onEventError?.(`[skew/data] stored "${channel.name}" state could not be read`, error);
283
+ return;
284
+ }
285
+ options
286
+ .driver.get(STATE_COLLECTION, id)
287
+ .then((record) => {
288
+ if (!record)
289
+ return;
290
+ const value = valueOf(channel.name, record.envelope);
291
+ if (value.ok)
292
+ catchUp(channel, value.value, record.seq);
293
+ else
294
+ options.onEventError?.(`[skew/data] stored "${channel.name}" state could not be read`, value.error);
295
+ })
296
+ .catch((error) => options.onEventError?.(`[skew/data] stored "${channel.name}" state could not be read`, error));
297
+ }
298
+ /** The stored form: a versioned envelope under the channel's contract, when it has one. */
299
+ function envelopeOf(type, value) {
300
+ const schema = schemas.get(type);
301
+ // without a contract, written as v1 — what a contract registered later reads it as
302
+ return schema ? schema.write(value) : { v: 1, payload: structuredClone(value) };
303
+ }
304
+ function valueOf(type, envelope) {
305
+ const schema = schemas.get(type);
306
+ if (!schema && envelope.n !== undefined) {
307
+ // written under a contract this build has not registered (yet): handing over the raw payload
308
+ // could give it a shape from another version
309
+ return { ok: false, error: new Error(`stored under the "${envelope.n}" contract; register it before opening the channel`) };
310
+ }
311
+ if (!schema)
312
+ return { ok: true, value: envelope.payload };
313
+ const result = schema.read(envelope);
314
+ return result.ok ? { ok: true, value: result.value } : { ok: false, error: result };
315
+ }
110
316
  /** Fan-out to handlers in this context. Used by at-most-once, and by the queue drain. */
111
317
  function deliverLive(event) {
112
318
  for (const handler of [...(handlers.get(runnerId(event.channel, event.type)) ?? [])]) {
@@ -226,28 +432,233 @@ export function createEventBus(options) {
226
432
  ...(options.onEventError === undefined ? {} : { onError: options.onEventError }),
227
433
  });
228
434
  }
435
+ /**
436
+ * Intents across this page's realms. Each bus announces its own handlers and keeps a directory of
437
+ * everyone else's, so `candidates()` stays synchronous; a raise that picks a handler in another
438
+ * realm calls it over the wire. Page scope only: an intent is "somebody on this page handle
439
+ * this", and a handler in another tab is not on the page.
440
+ */
441
+ const busId = crypto.randomUUID();
442
+ // `#` keeps it apart from a page-scoped channel that happens to be named "intents"
443
+ const intentWire = page === undefined ? undefined : openWire(`page:${page}:#intents`);
444
+ const directory = new Map();
445
+ const calls = new Map();
446
+ const intentTimeoutMs = options.intentTimeoutMs ?? 30_000;
447
+ let intentsClosed = false;
448
+ function sendIntents(message) {
449
+ if (intentsClosed && message.kind !== 'intents-bye')
450
+ return;
451
+ try {
452
+ intentWire?.postMessage(message);
453
+ }
454
+ catch (error) {
455
+ options.onEventError?.('[skew/data] an intent message could not be sent to other contexts', error);
456
+ }
457
+ }
458
+ /** Several registrations in one task — a fragment mounting — are announced once. */
459
+ let announcing = false;
460
+ function announce() {
461
+ if (announcing)
462
+ return;
463
+ announcing = true;
464
+ queueMicrotask(() => {
465
+ announcing = false;
466
+ sendIntents({ kind: 'intents-list', from: busId, handlers: intents.local() });
467
+ });
468
+ }
469
+ /**
470
+ * Another realm's handlers, as far as they can be read. Any same-origin script on the page can
471
+ * write to the wire, so an entry of the wrong shape is dropped rather than allowed to break every
472
+ * raise on the page.
473
+ */
474
+ function readHandlers(handlers) {
475
+ if (!Array.isArray(handlers))
476
+ return [];
477
+ return handlers.filter((handler) => typeof handler === 'object' &&
478
+ handler !== null &&
479
+ typeof handler.id === 'string' &&
480
+ typeof handler.intent === 'string' &&
481
+ typeof handler.consumer === 'string' &&
482
+ typeof handler.label === 'string' &&
483
+ Number.isFinite(handler.priority) &&
484
+ (handler.as === undefined || Number.isInteger(handler.as)));
485
+ }
486
+ function remoteHandlers(intent) {
487
+ return [...directory].flatMap(([source, handlers]) => handlers
488
+ .filter((handler) => handler.intent === intent)
489
+ .map(({ id, ...candidate }) => ({ ...candidate, source, run: (payload) => callRemote(source, id, payload, candidate) })));
490
+ }
491
+ /** A realm that no longer answers — crashed, frozen, gone without a word — is dropped, and its calls fail now. */
492
+ function forget(source, reason) {
493
+ directory.delete(source);
494
+ for (const [call, pending] of calls) {
495
+ if (pending.to === source)
496
+ settle(call, { ok: false, error: new Error(`[skew/data] ${reason}`) });
497
+ }
498
+ }
499
+ function callRemote(to, handler, payload, candidate) {
500
+ return new Promise((resolve, reject) => {
501
+ const call = crypto.randomUUID();
502
+ const timer = setTimeout(() => {
503
+ calls.delete(call);
504
+ reject(new Error(`[skew/data] the "${candidate.intent}" handler in ${candidate.consumer} did not answer within ${intentTimeoutMs}ms`));
505
+ // a realm that cannot answer one call will not answer the next: stop offering its handlers
506
+ forget(to, `the context handling "${candidate.intent}" stopped answering`);
507
+ }, intentTimeoutMs);
508
+ timer.unref?.();
509
+ calls.set(call, { to, resolve, reject, timer });
510
+ try {
511
+ intentWire.postMessage({ kind: 'intent-call', call, from: busId, to, handler, payload });
512
+ }
513
+ catch (error) {
514
+ clearTimeout(timer);
515
+ calls.delete(call);
516
+ // `cause` set by hand: Angular builds of this package compile against a lib without Error options
517
+ reject(Object.assign(new Error(`[skew/data] the "${candidate.intent}" payload could not be sent to ${candidate.consumer}`), { cause: error }));
518
+ }
519
+ });
520
+ }
521
+ function settle(call, outcome) {
522
+ const pending = calls.get(call);
523
+ if (!pending)
524
+ return;
525
+ calls.delete(call);
526
+ clearTimeout(pending.timer);
527
+ if (outcome.ok)
528
+ pending.resolve(outcome.result);
529
+ else
530
+ pending.reject(outcome.error);
531
+ }
532
+ /** Runs a call from another realm and answers it. Never throws: the answer is the only output. */
533
+ function answerCall(message) {
534
+ const reply = (outcome) => {
535
+ if (intentsClosed)
536
+ return;
537
+ try {
538
+ intentWire?.postMessage({ kind: 'intent-return', call: message.call, from: busId, to: message.from, ...outcome });
539
+ }
540
+ catch (error) {
541
+ sendIntents({
542
+ kind: 'intent-return',
543
+ call: message.call,
544
+ from: busId,
545
+ to: message.from,
546
+ ok: false,
547
+ error: `the handler's result could not be sent back: ${error instanceof Error ? error.message : String(error)}`,
548
+ });
549
+ }
550
+ };
551
+ intents
552
+ .runLocal(message.handler, message.payload)
553
+ .then((result) => reply({ ok: true, result }), (error) => reply({ ok: false, error: error instanceof Error ? error.message : String(error), ...(error instanceof Error ? { name: error.name } : {}) }))
554
+ .catch((error) => options.onEventError?.('[skew/data] an intent call could not be answered', error));
555
+ }
556
+ intentWire?.addEventListener('message', (event) => {
557
+ const message = event.data;
558
+ if (intentsClosed || typeof message !== 'object' || message === null || typeof message.from !== 'string')
559
+ return;
560
+ try {
561
+ switch (message.kind) {
562
+ case 'intents-hello':
563
+ // a context that just arrived: tell it what is here
564
+ if (intents.local().length > 0)
565
+ announce();
566
+ return;
567
+ case 'intents-list': {
568
+ const handlers = readHandlers(message.handlers);
569
+ if (handlers.length > 0)
570
+ directory.set(message.from, handlers);
571
+ else
572
+ directory.delete(message.from);
573
+ return;
574
+ }
575
+ case 'intents-bye':
576
+ forget(message.from, 'the context handling this intent closed');
577
+ return;
578
+ case 'intent-call':
579
+ if (message.to === busId && typeof message.call === 'string' && typeof message.handler === 'string')
580
+ answerCall(message);
581
+ return;
582
+ case 'intent-return': {
583
+ // only the realm the call went to can answer it
584
+ if (message.to !== busId || calls.get(message.call)?.to !== message.from)
585
+ return;
586
+ const error = message.ok
587
+ ? undefined
588
+ : message.name === 'NoIntentHandlerError'
589
+ ? new NoIntentHandlerError(message.error, [])
590
+ : new Error(message.error);
591
+ settle(message.call, error ? { ok: false, error } : { ok: true, result: message.result });
592
+ return;
593
+ }
594
+ }
595
+ }
596
+ catch (error) {
597
+ options.onEventError?.('[skew/data] an intent message from another context could not be handled', error);
598
+ }
599
+ });
229
600
  const intents = createIntentRegistry({
230
601
  consumer: options.consumer,
231
602
  // Intents project through the same registered contracts state and events do, so an application
232
603
  // declares a shape once and every path respects it.
233
604
  schemaFor: (intent) => schemas.get(intent),
234
605
  ...(options.onEventError === undefined ? {} : { onEventError: options.onEventError }),
606
+ ...(intentWire ? { remote: remoteHandlers, onChange: announce } : {}),
235
607
  });
608
+ sendIntents({ kind: 'intents-hello', from: busId });
609
+ /** Until then, other realms' answers to the hello may still be on their way. */
610
+ const directoryReadyAt = intentWire ? Date.now() + INTENT_DISCOVERY_MS : 0;
611
+ /**
612
+ * A raise in the bus's first moments that finds nobody waits for the directory before choosing,
613
+ * so a fragment that raises as it mounts is not told "nothing can handle this" while the other
614
+ * realms' answers are still in flight. It waits *before* running anything, so no handler runs twice.
615
+ */
616
+ async function raiseIntent(intent, payload, raiseOptions) {
617
+ const wait = directoryReadyAt - Date.now();
618
+ if (wait > 0 && intents.candidates(intent).eligible.length === 0) {
619
+ await new Promise((resolve) => setTimeout(resolve, wait));
620
+ }
621
+ return intents.raiseIntent(intent, payload, raiseOptions);
622
+ }
623
+ // A realm going away — its iframe removed, the tab closing, or entering the back-forward cache —
624
+ // says so; one coming back from that cache says hello again.
625
+ const sayBye = () => sendIntents({ kind: 'intents-bye', from: busId });
626
+ const sayHelloAgain = (event) => {
627
+ if (!event.persisted)
628
+ return;
629
+ sendIntents({ kind: 'intents-hello', from: busId });
630
+ if (intents.local().length > 0)
631
+ announce();
632
+ };
633
+ const listensToPage = Boolean(intentWire) && typeof window !== 'undefined' && typeof window.addEventListener === 'function';
634
+ if (listensToPage) {
635
+ window.addEventListener('pagehide', sayBye);
636
+ window.addEventListener('pageshow', sayHelloAgain);
637
+ }
236
638
  // Woken by any context that queued something for us — including our own emit.
237
639
  const stopWaking = invalidator.subscribe(() => [wakeTag(options.consumer)], () => void flush().catch(() => undefined));
238
640
  return {
239
641
  channel(name, channelOptions = {}) {
642
+ if (channelOptions.persist && !options.driver) {
643
+ throw new TypeError(`[skew/data] channel "${name}" asks to persist its state, which needs a \`driver\` on the bus — ` +
644
+ 'without one it would quietly forget on reload');
645
+ }
240
646
  const channel = channelState(name, channelOptions);
241
647
  return {
242
648
  name,
243
649
  broadcast(value) {
244
650
  applyState(channel, value, { local: true });
245
- channel.wire?.postMessage({ kind: 'state', value: channel.state });
651
+ post(channel, { kind: 'state', value: channel.state, at: channel.at ?? Date.now() });
652
+ if (channel.options.persist)
653
+ store(channel);
246
654
  },
247
655
  state(readOptions) {
656
+ askForState(channel);
248
657
  return channel.state === undefined ? undefined : project(name, channel.state, readOptions?.as);
249
658
  },
250
659
  subscribe(listener, subscribeOptions) {
660
+ if (subscribeOptions?.signal?.aborted)
661
+ return () => undefined;
251
662
  const subscription = {
252
663
  listener: listener,
253
664
  ...(subscribeOptions?.as === undefined ? {} : { as: subscribeOptions.as }),
@@ -265,6 +676,8 @@ export function createEventBus(options) {
265
676
  }
266
677
  const unsubscribe = () => void channel.stateListeners.delete(subscription);
267
678
  subscribeOptions?.signal?.addEventListener('abort', unsubscribe, { once: true });
679
+ // nothing here yet: another context may hold it, and its answer arrives as an update
680
+ askForState(channel);
268
681
  return unsubscribe;
269
682
  },
270
683
  async emit(type, payload, emitOptions) {
@@ -283,7 +696,7 @@ export function createEventBus(options) {
283
696
  return;
284
697
  }
285
698
  deliverLive(event);
286
- channel.wire?.postMessage({ kind: 'event', event });
699
+ post(channel, { kind: 'event', event: event });
287
700
  },
288
701
  addEventListener(type, handler, subscribeOptions) {
289
702
  const id = runnerId(channel.key, type);
@@ -311,13 +724,24 @@ export function createEventBus(options) {
311
724
  schemas.set(type, schema);
312
725
  },
313
726
  addIntentListener: intents.addIntentListener,
314
- raiseIntent: intents.raiseIntent,
727
+ raiseIntent,
315
728
  candidates: intents.candidates,
316
729
  flush,
317
730
  close() {
318
731
  stopWaking();
319
- for (const channel of channels.values())
732
+ sayBye();
733
+ intentsClosed = true;
734
+ if (listensToPage) {
735
+ window.removeEventListener('pagehide', sayBye);
736
+ window.removeEventListener('pageshow', sayHelloAgain);
737
+ }
738
+ for (const call of [...calls.keys()])
739
+ settle(call, { ok: false, error: new Error('[skew/data] the bus closed before the intent was answered') });
740
+ intentWire?.close();
741
+ for (const channel of channels.values()) {
742
+ channel.replying.forEach((timer) => clearTimeout(timer));
320
743
  channel.wire?.close();
744
+ }
321
745
  channels.clear();
322
746
  handlers.clear();
323
747
  invalidator.close();
@@ -1 +1 @@
1
- {"version":3,"file":"events.js","sourceRoot":"","sources":["../../../../../libs/data/src/lib/events.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"events.js","sourceRoot":"","sources":["../../../../../libs/data/src/lib/events.ts"],"names":[],"mappings":"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"}
@@ -28,6 +28,22 @@ export interface IntentCandidate {
28
28
  priority: number;
29
29
  /** The contract version it reads the payload at. */
30
30
  as?: number;
31
+ /**
32
+ * The bus in another JavaScript context — another fragment's realm on this page — that
33
+ * registered it. Absent for a handler registered here.
34
+ */
35
+ source?: string;
36
+ }
37
+ /** A handler registered in another context, as the event bus's directory knows it. */
38
+ export interface RemoteIntentHandler extends IntentCandidate {
39
+ source: string;
40
+ /** Hands the payload — already projected to `as` here — to the other context and awaits its result. */
41
+ run: (payload: unknown) => Promise<unknown>;
42
+ }
43
+ /** A handler registered here, as the event bus announces it to other contexts. */
44
+ export interface LocalIntentHandler extends IntentCandidate {
45
+ /** Stable for the registration's lifetime; how another context asks for this one to run. */
46
+ id: string;
31
47
  }
32
48
  /**
33
49
  * How to choose between handlers.
@@ -73,11 +89,22 @@ export interface IntentRegistry {
73
89
  eligible: IntentCandidate[];
74
90
  ineligible: IntentCandidate[];
75
91
  };
92
+ /** The handlers registered here, for announcing to other contexts. */
93
+ local(): LocalIntentHandler[];
94
+ /** Runs a handler registered here, for a call from another context. The payload is already projected. */
95
+ runLocal(id: string, payload: unknown): Promise<unknown>;
76
96
  }
77
97
  export interface IntentRegistryOptions {
78
98
  consumer: string;
79
99
  /** Resolves the contract for an intent's payload, so eligibility can be decided. */
80
100
  schemaFor: (intent: string) => VersionedSchema<unknown> | undefined;
81
101
  onEventError?: (message: string, detail?: unknown) => void;
102
+ /**
103
+ * Handlers registered in other contexts, considered with this one's. Eligibility and projection
104
+ * are decided here, by the raiser's contract, exactly as for a local handler.
105
+ */
106
+ remote?: (intent: string) => readonly RemoteIntentHandler[];
107
+ /** Called when this context's own registrations change. */
108
+ onChange?: () => void;
82
109
  }
83
110
  export declare function createIntentRegistry(options: IntentRegistryOptions): IntentRegistry;
@@ -22,6 +22,11 @@ export function createIntentRegistry(options) {
22
22
  */
23
23
  function eligibility(registration) {
24
24
  const schema = options.schemaFor(registration.intent);
25
+ if (!schema && registration.source !== undefined && registration.as !== undefined) {
26
+ // In another realm, a handler that names a version is promised that version — and with no
27
+ // contract here, there is nothing to project the payload with.
28
+ return { ok: false, reason: `reads v${registration.as}, and this context registers no contract for "${registration.intent}" to project with` };
29
+ }
25
30
  if (!schema || registration.as === undefined || registration.as === schema.version)
26
31
  return { ok: true };
27
32
  if (registration.as > schema.version) {
@@ -34,6 +39,10 @@ export function createIntentRegistry(options) {
34
39
  ? { ok: true }
35
40
  : { ok: false, reason: `v${registration.as} is unreachable — ${missing.join(', ')} declare no down migration` };
36
41
  }
42
+ /** This context's handlers for an intent, then other contexts'. */
43
+ function everyone(intent) {
44
+ return [...(registrations.get(intent) ?? []), ...(options.remote?.(intent) ?? [])];
45
+ }
37
46
  function project(intent, payload, as) {
38
47
  const schema = options.schemaFor(intent);
39
48
  if (!schema || as === undefined || as === schema.version)
@@ -53,17 +62,33 @@ export function createIntentRegistry(options) {
53
62
  label: handlerOptions.label ?? options.consumer,
54
63
  priority: handlerOptions.priority ?? 0,
55
64
  ...(handlerOptions.as === undefined ? {} : { as: handlerOptions.as }),
65
+ id: crypto.randomUUID(),
56
66
  run: handlerOptions.handler,
57
67
  };
58
68
  forIntent.add(registration);
59
- const unsubscribe = () => void forIntent.delete(registration);
69
+ options.onChange?.();
70
+ const unsubscribe = () => {
71
+ if (forIntent.delete(registration))
72
+ options.onChange?.();
73
+ };
60
74
  handlerOptions.signal?.addEventListener('abort', unsubscribe, { once: true });
61
75
  return unsubscribe;
62
76
  },
77
+ local() {
78
+ return [...registrations.values()].flatMap((set) => [...set].map((registration) => ({ ...strip(registration), id: registration.id })));
79
+ },
80
+ async runLocal(id, payload) {
81
+ for (const set of registrations.values()) {
82
+ for (const registration of set)
83
+ if (registration.id === id)
84
+ return registration.run(payload);
85
+ }
86
+ throw new NoIntentHandlerError('(removed handler)', []);
87
+ },
63
88
  candidates(intent) {
64
89
  const eligible = [];
65
90
  const ineligible = [];
66
- for (const registration of registrations.get(intent) ?? []) {
91
+ for (const registration of everyone(intent)) {
67
92
  (eligibility(registration).ok ? eligible : ineligible).push(strip(registration));
68
93
  }
69
94
  // Ranked here so every policy — and every chooser the host renders — sees one order.
@@ -72,7 +97,7 @@ export function createIntentRegistry(options) {
72
97
  },
73
98
  async raiseIntent(intent, payload, raiseOptions) {
74
99
  const policy = raiseOptions?.resolve ?? 'first';
75
- const all = [...(registrations.get(intent) ?? [])];
100
+ const all = everyone(intent);
76
101
  const eligible = [];
77
102
  const ineligible = [];
78
103
  for (const registration of all) {
@@ -128,8 +153,10 @@ const strip = (registration) => ({
128
153
  label: registration.label,
129
154
  priority: registration.priority,
130
155
  ...(registration.as === undefined ? {} : { as: registration.as }),
156
+ ...(registration.source === undefined ? {} : { source: registration.source }),
131
157
  });
132
- const matches = (registration, candidate) => registration.consumer === candidate.consumer &&
158
+ const matches = (registration, candidate) => registration.source === candidate.source &&
159
+ registration.consumer === candidate.consumer &&
133
160
  registration.label === candidate.label &&
134
161
  registration.priority === candidate.priority &&
135
162
  registration.as === candidate.as;
@@ -1 +1 @@
1
- {"version":3,"file":"intents.js","sourceRoot":"","sources":["../../../../../libs/data/src/lib/intents.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"intents.js","sourceRoot":"","sources":["../../../../../libs/data/src/lib/intents.ts"],"names":[],"mappings":"AA+EA,MAAM,OAAO,oBAAqB,SAAQ,KAAK;IAElC;IACA;IAFX,YACW,MAAc,EACd,UAAqE;QAE9E,MAAM,QAAQ,GAAG,UAAU,CAAC,MAAM;YAChC,CAAC,CAAC,IAAI,UAAU,CAAC,MAAM,8BAA8B,UAAU,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC,SAAS,CAAC,QAAQ,KAAK,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;YAC5I,CAAC,CAAC,EAAE,CAAC;QACP,KAAK,CAAC,8CAA8C,MAAM,KAAK,QAAQ,EAAE,CAAC,CAAC;QANlE,WAAM,GAAN,MAAM,CAAQ;QACd,eAAU,GAAV,UAAU,CAA2D;QAM9E,IAAI,CAAC,IAAI,GAAG,sBAAsB,CAAC;IACrC,CAAC;CACF;AAgCD,MAAM,UAAU,oBAAoB,CAAC,OAA8B;IACjE,MAAM,aAAa,GAAG,IAAI,GAAG,EAA6B,CAAC;IAE3D;;;;;;OAMG;IACH,SAAS,WAAW,CAAC,YAA0B;QAC7C,MAAM,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;QACtD,IAAI,CAAC,MAAM,IAAI,YAAY,CAAC,MAAM,KAAK,SAAS,IAAI,YAAY,CAAC,EAAE,KAAK,SAAS,EAAE,CAAC;YAClF,0FAA0F;YAC1F,+DAA+D;YAC/D,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,YAAY,CAAC,EAAE,iDAAiD,YAAY,CAAC,MAAM,mBAAmB,EAAE,CAAC;QACjJ,CAAC;QACD,IAAI,CAAC,MAAM,IAAI,YAAY,CAAC,EAAE,KAAK,SAAS,IAAI,YAAY,CAAC,EAAE,KAAK,MAAM,CAAC,OAAO;YAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;QAExG,IAAI,YAAY,CAAC,EAAE,GAAG,MAAM,CAAC,OAAO,EAAE,CAAC;YACrC,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,YAAY,CAAC,EAAE,qBAAqB,MAAM,CAAC,OAAO,EAAE,EAAE,CAAC;QAC/F,CAAC;QAED,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK;aACzB,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,GAAG,YAAY,CAAC,EAAG,IAAI,IAAI,CAAC,EAAE,IAAI,MAAM,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;aACvF,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;QAEhC,OAAO,OAAO,CAAC,MAAM,KAAK,CAAC;YACzB,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE;YACd,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,YAAY,CAAC,EAAE,qBAAqB,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,4BAA4B,EAAE,CAAC;IACpH,CAAC;IAED,mEAAmE;IACnE,SAAS,QAAQ,CAAC,MAAc;QAC9B,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IACrF,CAAC;IAED,SAAS,OAAO,CAAC,MAAc,EAAE,OAAgB,EAAE,EAAsB;QACvE,MAAM,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QACzC,IAAI,CAAC,MAAM,IAAI,EAAE,KAAK,SAAS,IAAI,EAAE,KAAK,MAAM,CAAC,OAAO;YAAE,OAAO,OAAO,CAAC;QACzE,OAAO,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC;IAC/C,CAAC;IAED,OAAO;QACL,iBAAiB,CAAI,MAAc,EAAE,cAAuC;YAC1E,IAAI,SAAS,GAAG,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YAC1C,IAAI,CAAC,SAAS,EAAE,CAAC;gBACf,SAAS,GAAG,IAAI,GAAG,EAAE,CAAC;gBACtB,aAAa,CAAC,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;YACvC,CAAC;YAED,MAAM,YAAY,GAAiB;gBACjC,MAAM;gBACN,QAAQ,EAAE,OAAO,CAAC,QAAQ;gBAC1B,KAAK,EAAE,cAAc,CAAC,KAAK,IAAI,OAAO,CAAC,QAAQ;gBAC/C,QAAQ,EAAE,cAAc,CAAC,QAAQ,IAAI,CAAC;gBACtC,GAAG,CAAC,cAAc,CAAC,EAAE,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,cAAc,CAAC,EAAE,EAAE,CAAC;gBACrE,EAAE,EAAE,MAAM,CAAC,UAAU,EAAE;gBACvB,GAAG,EAAE,cAAc,CAAC,OAAwC;aAC7D,CAAC;YACF,SAAS,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;YAC5B,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC;YAErB,MAAM,WAAW,GAAG,GAAG,EAAE;gBACvB,IAAI,SAAS,CAAC,MAAM,CAAC,YAAY,CAAC;oBAAE,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC;YAC3D,CAAC,CAAC;YACF,cAAc,CAAC,MAAM,EAAE,gBAAgB,CAAC,OAAO,EAAE,WAAW,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;YAC9E,OAAO,WAAW,CAAC;QACrB,CAAC;QAED,KAAK;YACH,OAAO,CAAC,GAAG,aAAa,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,KAAK,CAAC,YAAY,CAAC,EAAE,EAAE,EAAE,YAAY,CAAC,EAAG,EAAE,CAAC,CAAC,CAAC,CAAC;QAC1I,CAAC;QAED,KAAK,CAAC,QAAQ,CAAC,EAAU,EAAE,OAAgB;YACzC,KAAK,MAAM,GAAG,IAAI,aAAa,CAAC,MAAM,EAAE,EAAE,CAAC;gBACzC,KAAK,MAAM,YAAY,IAAI,GAAG;oBAAE,IAAI,YAAY,CAAC,EAAE,KAAK,EAAE;wBAAE,OAAO,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YAC/F,CAAC;YACD,MAAM,IAAI,oBAAoB,CAAC,mBAAmB,EAAE,EAAE,CAAC,CAAC;QAC1D,CAAC;QAED,UAAU,CAAC,MAAc;YACvB,MAAM,QAAQ,GAAsB,EAAE,CAAC;YACvC,MAAM,UAAU,GAAsB,EAAE,CAAC;YAEzC,KAAK,MAAM,YAAY,IAAI,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC5C,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC;YACnF,CAAC;YAED,qFAAqF;YACrF,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC;YACjD,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,CAAC;QAClC,CAAC;QAED,KAAK,CAAC,WAAW,CAAI,MAAc,EAAE,OAAgB,EAAE,YAA2B;YAChF,MAAM,MAAM,GAAG,YAAY,EAAE,OAAO,IAAI,OAAO,CAAC;YAChD,MAAM,GAAG,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC;YAE7B,MAAM,QAAQ,GAAmB,EAAE,CAAC;YACpC,MAAM,UAAU,GAAqD,EAAE,CAAC;YAExE,KAAK,MAAM,YAAY,IAAI,GAAG,EAAE,CAAC;gBAC/B,MAAM,OAAO,GAAG,WAAW,CAAC,YAAY,CAAC,CAAC;gBAC1C,IAAI,OAAO,CAAC,EAAE;oBAAE,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;;oBACvC,UAAU,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,KAAK,CAAC,YAAY,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;YACnF,CAAC;YAED,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC;YAEjD,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;gBAAE,MAAM,IAAI,oBAAoB,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;YAE9E,MAAM,GAAG,GAAG,KAAK,EAAE,YAA0B,EAAE,EAAE,CAAC,CAAC;gBACjD,SAAS,EAAE,KAAK,CAAC,YAAY,CAAC;gBAC9B,MAAM,EAAE,CAAC,MAAM,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,EAAE,YAAY,CAAC,EAAE,CAAC,CAAC,CAAM;aACjF,CAAC,CAAC;YAEH,IAAI,MAAM,KAAK,KAAK,EAAE,CAAC;gBACrB,0FAA0F;gBAC1F,0CAA0C;gBAC1C,MAAM,OAAO,GAAgD,EAAE,CAAC;gBAChE,KAAK,MAAM,YAAY,IAAI,QAAQ;oBAAE,OAAO,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC;gBAC3E,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC;YACjC,CAAC;YAED,IAAI,MAAgC,CAAC;YAErC,IAAI,MAAM,KAAK,OAAO,EAAE,CAAC;gBACvB,MAAM,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;YACvB,CAAC;iBAAM,IAAI,MAAM,KAAK,KAAK,EAAE,CAAC;gBAC5B,IAAI,CAAC,YAAY,EAAE,OAAO,EAAE,CAAC;oBAC3B,MAAM,IAAI,SAAS,CACjB,0FAA0F;wBACxF,yDAAyD,CAC5D,CAAC;gBACJ,CAAC;gBACD,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC,CAAC;gBACxE,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,OAAO,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC;YACpE,CAAC;iBAAM,CAAC;gBACN,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC,CAAC;gBAC1D,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,OAAO,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC;YACpE,CAAC;YAED,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,2FAA2F;gBAC3F,uCAAuC;gBACvC,MAAM,IAAI,KAAK,CAAC,iCAAiC,MAAM,6CAA6C,CAAC,CAAC;YACxG,CAAC;YAED,OAAO,EAAE,OAAO,EAAE,CAAC,MAAM,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC;QACtD,CAAC;KACF,CAAC;AACJ,CAAC;AAED,MAAM,KAAK,GAAG,CAAC,YAA0B,EAAmB,EAAE,CAAC,CAAC;IAC9D,MAAM,EAAE,YAAY,CAAC,MAAM;IAC3B,QAAQ,EAAE,YAAY,CAAC,QAAQ;IAC/B,KAAK,EAAE,YAAY,CAAC,KAAK;IACzB,QAAQ,EAAE,YAAY,CAAC,QAAQ;IAC/B,GAAG,CAAC,YAAY,CAAC,EAAE,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,YAAY,CAAC,EAAE,EAAE,CAAC;IACjE,GAAG,CAAC,YAAY,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,YAAY,CAAC,MAAM,EAAE,CAAC;CAC9E,CAAC,CAAC;AAEH,MAAM,OAAO,GAAG,CAAC,YAA0B,EAAE,SAA0B,EAAW,EAAE,CAClF,YAAY,CAAC,MAAM,KAAK,SAAS,CAAC,MAAM;IACxC,YAAY,CAAC,QAAQ,KAAK,SAAS,CAAC,QAAQ;IAC5C,YAAY,CAAC,KAAK,KAAK,SAAS,CAAC,KAAK;IACtC,YAAY,CAAC,QAAQ,KAAK,SAAS,CAAC,QAAQ;IAC5C,YAAY,CAAC,EAAE,KAAK,SAAS,CAAC,EAAE,CAAC"}