@agentshouse/mdruntime 0.1.0-alpha.26 → 0.1.0-alpha.27
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/AGENTS.md +12 -4
- package/dist/client.d.ts +13 -11
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +57 -59
- package/dist/client.js.map +1 -1
- package/dist/connection.d.ts +17 -10
- package/dist/connection.d.ts.map +1 -1
- package/dist/connection.js +94 -88
- package/dist/connection.js.map +1 -1
- package/dist/conversation.d.ts +1 -1
- package/dist/conversation.d.ts.map +1 -1
- package/dist/conversation.js +2 -2
- package/dist/conversation.js.map +1 -1
- package/dist/host.d.ts.map +1 -1
- package/dist/host.js +17 -39
- package/dist/host.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/observation.d.ts +25 -0
- package/dist/observation.d.ts.map +1 -0
- package/dist/observation.js +92 -0
- package/dist/observation.js.map +1 -0
- package/dist/read-side.d.ts +2 -1
- package/dist/read-side.d.ts.map +1 -1
- package/dist/read-side.js +73 -21
- package/dist/read-side.js.map +1 -1
- package/dist/wire.d.ts +2 -1
- package/dist/wire.d.ts.map +1 -1
- package/dist/wire.js +2 -1
- package/dist/wire.js.map +1 -1
- package/package.json +1 -1
package/dist/read-side.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { and, BasicIndex, configureIndexDevMode, count, createCollection, createLiveQueryCollection, deepEquals, eq, gt, gte, inArray, isNull, isUndefined, lt, lte, not, or, toArray } from '@tanstack/db';
|
|
2
|
+
import { rowsOf } from './observation.js';
|
|
2
3
|
import { documentKey } from './rows.js';
|
|
3
4
|
function every(expressions) {
|
|
4
5
|
const [first, second, ...rest] = expressions;
|
|
@@ -253,20 +254,64 @@ function documentOf(row, shape) {
|
|
|
253
254
|
} : {}
|
|
254
255
|
};
|
|
255
256
|
}
|
|
256
|
-
function
|
|
257
|
+
function keyedOf(plan, entries) {
|
|
257
258
|
const shape = plan.shape;
|
|
258
259
|
if (shape.kind === 'documents') {
|
|
259
|
-
return
|
|
260
|
-
|
|
261
|
-
|
|
260
|
+
return {
|
|
261
|
+
result: structuredClone({
|
|
262
|
+
documents: entries.map(([, row])=>documentOf(row, shape))
|
|
263
|
+
}),
|
|
264
|
+
keys: entries.map(([key])=>key)
|
|
265
|
+
};
|
|
262
266
|
}
|
|
263
|
-
const bounded = shape.orderBy.length === 0 && plan.limit !== null ?
|
|
264
|
-
return
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
267
|
+
const bounded = shape.orderBy.length === 0 && plan.limit !== null ? entries.slice(0, plan.limit) : entries;
|
|
268
|
+
return {
|
|
269
|
+
result: structuredClone({
|
|
270
|
+
groups: bounded.map(([, row])=>({
|
|
271
|
+
key: shape.groupBy.map((_, index)=>row[`key${index}`]),
|
|
272
|
+
count: row.count
|
|
273
|
+
}))
|
|
274
|
+
}),
|
|
275
|
+
keys: bounded.map(([key])=>key)
|
|
276
|
+
};
|
|
277
|
+
}
|
|
278
|
+
function reconciled(previous, next) {
|
|
279
|
+
const before = rowsOf(previous.result);
|
|
280
|
+
const held = new Map(previous.keys.map((key, index)=>[
|
|
281
|
+
key,
|
|
282
|
+
before[index]
|
|
283
|
+
]));
|
|
284
|
+
const changed = [];
|
|
285
|
+
const rows = rowsOf(next.result).map((row, index)=>{
|
|
286
|
+
const key = next.keys[index];
|
|
287
|
+
const kept = held.get(key);
|
|
288
|
+
if (kept !== undefined && deepEquals(kept, row)) return kept;
|
|
289
|
+
changed.push([
|
|
290
|
+
key,
|
|
291
|
+
row
|
|
292
|
+
]);
|
|
293
|
+
return row;
|
|
269
294
|
});
|
|
295
|
+
const present = new Set(next.keys);
|
|
296
|
+
const survivors = previous.keys.filter((key)=>present.has(key));
|
|
297
|
+
const removed = previous.keys.filter((key)=>!present.has(key));
|
|
298
|
+
const moved = survivors.length !== next.keys.length || survivors.some((key, index)=>key !== next.keys[index]);
|
|
299
|
+
if (changed.length === 0 && removed.length === 0 && !moved) return null;
|
|
300
|
+
return {
|
|
301
|
+
keyed: {
|
|
302
|
+
result: 'groups' in next.result ? {
|
|
303
|
+
groups: rows
|
|
304
|
+
} : {
|
|
305
|
+
documents: rows
|
|
306
|
+
},
|
|
307
|
+
keys: next.keys
|
|
308
|
+
},
|
|
309
|
+
change: {
|
|
310
|
+
changed,
|
|
311
|
+
removed,
|
|
312
|
+
order: moved ? next.keys : null
|
|
313
|
+
}
|
|
314
|
+
};
|
|
270
315
|
}
|
|
271
316
|
export function createReadSide() {
|
|
272
317
|
configureIndexDevMode({
|
|
@@ -300,10 +345,12 @@ export function createReadSide() {
|
|
|
300
345
|
};
|
|
301
346
|
}
|
|
302
347
|
function publish(entry) {
|
|
303
|
-
const next =
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
348
|
+
const next = reconciled(entry.result, keyedOf(entry.plan, [
|
|
349
|
+
...entry.built.live.entries()
|
|
350
|
+
]));
|
|
351
|
+
if (next === null) return;
|
|
352
|
+
entry.result = next.keyed;
|
|
353
|
+
for (const listener of entry.listeners)listener(next.change);
|
|
307
354
|
}
|
|
308
355
|
return {
|
|
309
356
|
apply (set) {
|
|
@@ -332,12 +379,15 @@ export function createReadSide() {
|
|
|
332
379
|
async query (plan) {
|
|
333
380
|
const { live: collection, dispose } = built(rows, plan);
|
|
334
381
|
try {
|
|
335
|
-
|
|
382
|
+
await collection.toArrayWhenReady();
|
|
383
|
+
return keyedOf(plan, [
|
|
384
|
+
...collection.entries()
|
|
385
|
+
]).result;
|
|
336
386
|
} finally{
|
|
337
387
|
dispose();
|
|
338
388
|
}
|
|
339
389
|
},
|
|
340
|
-
|
|
390
|
+
watch (plan, identity, deliver) {
|
|
341
391
|
let entry = shared.get(identity);
|
|
342
392
|
if (entry === undefined) {
|
|
343
393
|
const created = {
|
|
@@ -354,19 +404,21 @@ export function createReadSide() {
|
|
|
354
404
|
entry = created;
|
|
355
405
|
}
|
|
356
406
|
const observed = entry;
|
|
357
|
-
observed.listeners.add(
|
|
407
|
+
observed.listeners.add(deliver);
|
|
358
408
|
observed.built.live.onFirstReady(()=>{
|
|
359
|
-
if (!observed.listeners.has(
|
|
409
|
+
if (!observed.listeners.has(deliver)) return;
|
|
360
410
|
if (observed.subscription === null) {
|
|
361
|
-
observed.result =
|
|
411
|
+
observed.result = keyedOf(observed.plan, [
|
|
412
|
+
...observed.built.live.entries()
|
|
413
|
+
]);
|
|
362
414
|
observed.subscription = observed.built.live.subscribeChanges(()=>{
|
|
363
415
|
publish(observed);
|
|
364
416
|
});
|
|
365
417
|
}
|
|
366
|
-
|
|
418
|
+
deliver(observed.result);
|
|
367
419
|
});
|
|
368
420
|
return ()=>{
|
|
369
|
-
if (!observed.listeners.delete(
|
|
421
|
+
if (!observed.listeners.delete(deliver) || observed.listeners.size > 0) return;
|
|
370
422
|
observed.subscription?.unsubscribe();
|
|
371
423
|
observed.subscription = null;
|
|
372
424
|
};
|
package/dist/read-side.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["/workspace/packages/mdruntime/src/read-side.ts"],"sourcesContent":["import {\n and,\n BasicIndex,\n configureIndexDevMode,\n count,\n createCollection,\n createLiveQueryCollection,\n deepEquals,\n eq,\n gt,\n gte,\n inArray,\n isNull,\n isUndefined,\n lt,\n lte,\n not,\n or,\n toArray,\n type Collection,\n type Context,\n type InitialQueryBuilder,\n type QueryBuilder,\n type Ref,\n type SyncConfig,\n} from '@tanstack/db';\nimport type { ChangeSet } from './change-set.js';\nimport type {\n Condition,\n Direction,\n DocumentShape,\n GroupShape,\n KeyPlan,\n OrderOptions,\n Plan,\n QueryDocument,\n QueryResult,\n Scope,\n Test,\n Value,\n} from './query.js';\nimport { documentKey, type Row } from './rows.js';\nimport type { SearchedDocument } from './search.js';\n\ntype Stored = {\n key: string;\n kind: string;\n room: string;\n path: string;\n type: string;\n body: string;\n source: string;\n target: string;\n field: string;\n fields: Readonly<Record<string, unknown>>;\n values: Readonly<Record<string, unknown>>;\n sizes: Readonly<Record<string, number>>;\n directories: readonly string[];\n preamble: string;\n sections: Readonly<Record<string, string>>;\n markdown: string;\n} & Readonly<Record<string, unknown>>;\n\ntype Reference = Ref<Stored>;\n\ntype Field = Reference['values'][string];\n\ntype Size = Reference['sizes'][string];\n\ntype Refs = Readonly<Record<string, Reference>>;\n\ntype Expression = ReturnType<typeof eq>;\n\ntype Builder = {\n where(callback: (refs: Refs) => Expression): Builder;\n innerJoin(source: Readonly<Record<string, unknown>>, on: (refs: Refs) => Expression): Builder;\n groupBy(callback: (refs: Refs) => unknown): Builder;\n orderBy(callback: (refs: Refs) => unknown, options: Direction | OrderOptions): Builder;\n limit(count: number): Builder;\n select(callback: (refs: Refs) => object): object;\n};\n\ntype Live = Collection<Stored, string | number>;\n\ntype Built = { live: Live; dispose(): void };\n\ntype Shared = {\n plan: Plan;\n built: Built;\n result: QueryResult | undefined;\n listeners: Set<(result: QueryResult) => void>;\n subscription: { unsubscribe(): void } | null;\n};\n\nexport type ReadSide = {\n apply(set: ChangeSet): void;\n query(plan: Plan): Promise<QueryResult>;\n observe(plan: Plan, identity: string, listener: (result: QueryResult) => void): () => void;\n documents(): readonly SearchedDocument[];\n document(room: string, path: string): SearchedDocument | null;\n close(): void;\n};\n\nfunction every(expressions: readonly Expression[]): Expression {\n const [first, second, ...rest] = expressions;\n return second === undefined ? first : and(first, second, ...rest);\n}\n\nfunction some(expressions: readonly Expression[]): Expression {\n const [first, second, ...rest] = expressions;\n return second === undefined ? first : or(first, second, ...rest);\n}\n\nfunction equal(field: Field, value: Exclude<Value, null>): Expression {\n return or(eq(field, value), inArray(value, field));\n}\n\nfunction tested(test: Test, field: Field, size: Size, written: Field): Expression {\n if (test.op === 'eq') return test.value === null ? isNull(field) : equal(field, test.value);\n if (test.op === 'ne') {\n return test.value === null\n ? not(isNull(field))\n : or(isUndefined(field), isNull(field), not(equal(field, test.value)));\n }\n if (test.op === 'in' || test.op === 'nin') {\n const matches =\n test.values.length === 0\n ? inArray(field, [])\n : some(test.values.map((value) => (value === null ? isNull(field) : equal(field, value))));\n if (test.op === 'in') return matches;\n return some([\n isUndefined(field),\n ...(test.values.includes(null) ? [] : [isNull(field)]),\n not(matches),\n ]);\n }\n if (test.op === 'range') {\n const compare = { gt, gte, lt, lte };\n return every(test.bounds.map(([operator, bound]) => compare[operator](field, bound)));\n }\n if (test.op === 'all') {\n return every([not(isUndefined(size)), ...test.values.map((value) => inArray(value, field))]);\n }\n if (test.op === 'size') return eq(size, test.size);\n return test.exists ? not(isUndefined(written)) : isUndefined(written);\n}\n\nfunction conditioned(condition: Condition, row: Reference): Expression {\n if ('every' in condition) return every(condition.every.map((item) => conditioned(item, row)));\n if ('some' in condition) return some(condition.some.map((item) => conditioned(item, row)));\n return tested(\n condition.test,\n row.values[condition.field],\n row.sizes[condition.field],\n row.fields[condition.field],\n );\n}\n\nfunction scoped(scope: Scope, row: Reference, rooms: readonly string[] | null): Expression {\n return every([\n eq(row.kind, 'document'),\n ...(rooms === null ? [] : [inArray(row.room, [...rooms])]),\n ...(scope.types === null ? [] : [inArray(row.type, [...scope.types])]),\n ...(scope.pathPrefix === null ? [] : [inArray(scope.pathPrefix, row.directories)]),\n ...(scope.where === null ? [] : [conditioned(scope.where, row)]),\n ]);\n}\n\nfunction keyed(key: KeyPlan, row: Reference): Field | Reference['room'] {\n return key.of === 'field' ? row.values[key.field] : row[key.of];\n}\n\nfunction live(query: (q: InitialQueryBuilder) => object): Live {\n return createLiveQueryCollection({\n query: query as (q: InitialQueryBuilder) => QueryBuilder<Context>,\n startSync: true,\n }) as unknown as Live;\n}\n\nfunction related(\n q: InitialQueryBuilder,\n rows: Collection<Stored, string>,\n scope: Scope,\n field: string | null,\n kept: 'source' | 'target',\n): object {\n const matched = kept === 'source' ? 'target' : 'source';\n const from: Builder = q.from({ r: rows });\n return from\n .where(({ r }) =>\n every([eq(r.kind, 'reference'), ...(field === null ? [] : [eq(r.field, field)])]),\n )\n .innerJoin({ m: rows }, ({ r, m }) => eq(r[matched], m.key))\n .where(({ m }) => scoped(scope, m, null))\n .groupBy(({ r }) => r[kept])\n .select(({ r }) => ({ key: r[kept] }));\n}\n\nfunction filtered(q: InitialQueryBuilder, rows: Collection<Stored, string>, plan: Plan): Builder {\n const from: Builder = q.from({ d: rows });\n let query = from.where(({ d }) => scoped(plan.root, d, plan.rooms));\n if (plan.hop !== null) {\n const hop = related(q, rows, plan.hop, plan.hop.field, 'source');\n query = query.innerJoin({ h: hop }, ({ d, h }) => eq(d.key, h.key));\n }\n if (plan.backlinks !== null) {\n const backlinks = related(q, rows, plan.backlinks, plan.backlinks.field, 'target');\n query = query.innerJoin({ k: backlinks }, ({ d, k }) => eq(d.key, k.key));\n }\n return query;\n}\n\nfunction named<T>(prefix: string, names: readonly string[], source: Readonly<Record<string, T>>) {\n return Object.fromEntries(names.map((name, index) => [`${prefix}${index}`, source[name]]));\n}\n\nfunction documents(\n q: InitialQueryBuilder,\n rows: Collection<Stored, string>,\n plan: Plan,\n shape: DocumentShape,\n): object {\n let query = filtered(q, rows, plan);\n if (shape.sections !== null || shape.preamble || shape.markdown) {\n query = query.innerJoin({ b: rows }, ({ d, b }) => eq(d.body, b.key));\n }\n for (const { key, options } of shape.orderBy) {\n query = query.orderBy(({ d }) => keyed(key, d), options);\n }\n if (shape.orderBy.length === 0 && plan.limit !== null) {\n query = query.orderBy(({ d }) => d.key, { stringSort: 'lexical' });\n }\n if (plan.limit !== null) query = query.limit(plan.limit);\n return query.select(({ d, b }) => ({\n room: d.room,\n path: d.path,\n type: d.type,\n ...(shape.fields === 'all' ? { fields: d.fields } : {}),\n ...(Array.isArray(shape.fields) ? named('field', shape.fields, d.fields) : {}),\n ...(shape.sections === 'all' ? { sections: b.sections } : {}),\n ...(Array.isArray(shape.sections) ? named('section', shape.sections, b.sections) : {}),\n ...(shape.preamble ? { preamble: b.preamble } : {}),\n ...(shape.markdown ? { markdown: b.markdown } : {}),\n ...(shape.backlinks ? { backlinks: toArray(backlinked(q, rows, d)) } : {}),\n }));\n}\n\nfunction backlinked(q: InitialQueryBuilder, rows: Collection<Stored, string>, document: Reference) {\n const from: Builder = q.from({ r: rows });\n return from\n .where(({ r }) => eq(r.target, document.key))\n .orderBy(({ r }) => r.path, { stringSort: 'lexical' })\n .orderBy(({ r }) => r.field, { stringSort: 'lexical' })\n .select(({ r }) => ({ path: r.path, type: r.type, field: r.field })) as QueryBuilder<Context>;\n}\n\nfunction groups(q: InitialQueryBuilder, stage: Live, shape: GroupShape, limit: number | null) {\n const keys = shape.groupBy.map((_, index) => `key${index}`);\n const from: Builder = q.from({ m: stage });\n let query = from.groupBy(({ m }) => keys.map((key) => m[key]));\n for (const { by, direction } of shape.orderBy) {\n query = query.orderBy(({ m }) => (by === 'count' ? count(m.key) : m[keys[by]]), direction);\n }\n if (limit !== null && shape.orderBy.length > 0) query = query.limit(limit);\n return query.select(({ m }) => ({\n ...Object.fromEntries(keys.map((key) => [key, m[key]])),\n count: count(m.key),\n }));\n}\n\nfunction built(rows: Collection<Stored, string>, plan: Plan): Built {\n const shape = plan.shape;\n if (shape.kind === 'documents') {\n const collection = live((q) => documents(q, rows, plan, shape));\n return { live: collection, dispose: () => void collection.cleanup() };\n }\n const stage = live((q) =>\n filtered(q, rows, plan).select(({ d }) => ({\n key: d.key,\n ...Object.fromEntries(shape.groupBy.map((key, index) => [`key${index}`, keyed(key, d)])),\n })),\n );\n const collection = live((q) => groups(q, stage, shape, plan.limit));\n return {\n live: collection,\n dispose: () => {\n void collection.cleanup();\n void stage.cleanup();\n },\n };\n}\n\nfunction present(entries: readonly (readonly [string, unknown])[]) {\n return Object.fromEntries(entries.filter(([, value]) => value !== undefined));\n}\n\nfunction part(\n row: Readonly<Record<string, unknown>>,\n prefix: string,\n names: 'all' | readonly string[],\n whole: unknown,\n) {\n if (names === 'all') return whole;\n return present(names.map((name, index) => [name, row[`${prefix}${index}`]] as const));\n}\n\nfunction documentOf(row: Readonly<Record<string, unknown>>, shape: DocumentShape): QueryDocument {\n return {\n room: row.room as string,\n path: row.path as string,\n type: row.type as string,\n ...(shape.fields === null\n ? {}\n : { fields: part(row, 'field', shape.fields, row.fields) as QueryDocument['fields'] }),\n ...(shape.sections === null\n ? {}\n : {\n sections: part(row, 'section', shape.sections, row.sections) as QueryDocument['sections'],\n }),\n ...(shape.preamble ? { preamble: row.preamble as string } : {}),\n ...(shape.markdown ? { markdown: row.markdown as string } : {}),\n ...(shape.backlinks\n ? {\n backlinks: (row.backlinks as readonly Readonly<Record<string, string>>[]).map(\n ({ path, type, field }) => ({ path, type, field }),\n ),\n }\n : {}),\n };\n}\n\nfunction resultOf(plan: Plan, rows: readonly Readonly<Record<string, unknown>>[]): QueryResult {\n const shape = plan.shape;\n if (shape.kind === 'documents') {\n return structuredClone({ documents: rows.map((row) => documentOf(row, shape)) });\n }\n const bounded =\n shape.orderBy.length === 0 && plan.limit !== null ? rows.slice(0, plan.limit) : rows;\n return structuredClone({\n groups: bounded.map((row) => ({\n key: shape.groupBy.map((_, index) => row[`key${index}`]),\n count: row.count as number,\n })),\n });\n}\n\nexport function createReadSide(): ReadSide {\n configureIndexDevMode({ enabled: false });\n let sync!: Parameters<SyncConfig<Stored, string>['sync']>[0];\n const rows = createCollection<Stored, string>({\n getKey: (row) => row.key,\n gcTime: 0,\n startSync: true,\n autoIndex: 'eager',\n defaultIndexType: BasicIndex,\n sync: {\n rowUpdateMode: 'full',\n sync: (params) => {\n sync = params;\n params.markReady();\n },\n },\n });\n const shared = new Map<string, Shared>();\n\n function searched(row: Stored): SearchedDocument {\n const body = rows.get(row.body) as Stored;\n return {\n room: row.room,\n path: row.path,\n type: row.type,\n fields: row.fields,\n preamble: body.preamble,\n sections: body.sections,\n };\n }\n\n function publish(entry: Shared) {\n const next = resultOf(entry.plan, entry.built.live.toArray);\n if (deepEquals(entry.result, next)) return;\n entry.result = next;\n for (const listener of entry.listeners) listener(next);\n }\n\n return {\n apply(set) {\n const next = new Map<string, Row | null>();\n for (const change of set.documents) {\n for (const row of change.before) next.set(row.key, null);\n for (const row of change.after) next.set(row.key, row);\n }\n if (next.size === 0) return;\n sync.begin();\n for (const [key, row] of next) {\n if (row === null) {\n if (rows.has(key)) sync.write({ type: 'delete', key });\n continue;\n }\n sync.write({ type: rows.has(key) ? 'update' : 'insert', value: row as Stored });\n }\n sync.commit();\n },\n async query(plan) {\n const { live: collection, dispose } = built(rows, plan);\n try {\n return resultOf(plan, await collection.toArrayWhenReady());\n } finally {\n dispose();\n }\n },\n observe(plan, identity, listener) {\n let entry = shared.get(identity);\n if (entry === undefined) {\n const created: Shared = {\n plan,\n built: built(rows, plan),\n result: undefined,\n listeners: new Set(),\n subscription: null,\n };\n created.built.live.on('status:change', ({ status }) => {\n if (status === 'cleaned-up' && created.listeners.size === 0) shared.delete(identity);\n });\n shared.set(identity, created);\n entry = created;\n }\n const observed = entry;\n observed.listeners.add(listener);\n observed.built.live.onFirstReady(() => {\n if (!observed.listeners.has(listener)) return;\n if (observed.subscription === null) {\n observed.result = resultOf(observed.plan, observed.built.live.toArray);\n observed.subscription = observed.built.live.subscribeChanges(() => {\n publish(observed);\n });\n }\n listener(observed.result as QueryResult);\n });\n return () => {\n if (!observed.listeners.delete(listener) || observed.listeners.size > 0) return;\n observed.subscription?.unsubscribe();\n observed.subscription = null;\n };\n },\n documents() {\n return rows.toArray.filter((row) => row.kind === 'document').map(searched);\n },\n document(room, path) {\n const row = rows.get(documentKey(room, path));\n return row === undefined ? null : searched(row);\n },\n close() {\n for (const entry of shared.values()) {\n entry.listeners.clear();\n entry.subscription?.unsubscribe();\n entry.built.dispose();\n }\n shared.clear();\n void rows.cleanup();\n },\n };\n}\n"],"names":["and","BasicIndex","configureIndexDevMode","count","createCollection","createLiveQueryCollection","deepEquals","eq","gt","gte","inArray","isNull","isUndefined","lt","lte","not","or","toArray","documentKey","every","expressions","first","second","rest","undefined","some","equal","field","value","tested","test","size","written","op","matches","values","length","map","includes","compare","bounds","operator","bound","exists","conditioned","condition","row","item","sizes","fields","scoped","scope","rooms","kind","room","types","type","pathPrefix","directories","where","keyed","key","of","live","query","startSync","related","q","rows","kept","matched","from","r","innerJoin","m","groupBy","select","filtered","plan","d","root","hop","h","backlinks","k","named","prefix","names","source","Object","fromEntries","name","index","documents","shape","sections","preamble","markdown","b","body","options","orderBy","limit","stringSort","path","Array","isArray","backlinked","document","target","groups","stage","keys","_","by","direction","built","collection","dispose","cleanup","present","entries","filter","part","whole","documentOf","resultOf","structuredClone","bounded","slice","createReadSide","enabled","sync","getKey","gcTime","autoIndex","defaultIndexType","rowUpdateMode","params","markReady","shared","Map","searched","get","publish","entry","next","result","listener","listeners","apply","set","change","before","after","begin","has","write","commit","toArrayWhenReady","observe","identity","created","Set","subscription","on","status","delete","observed","add","onFirstReady","subscribeChanges","unsubscribe","close","clear"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["/workspace/packages/mdruntime/src/read-side.ts"],"sourcesContent":["import {\n and,\n BasicIndex,\n configureIndexDevMode,\n count,\n createCollection,\n createLiveQueryCollection,\n deepEquals,\n eq,\n gt,\n gte,\n inArray,\n isNull,\n isUndefined,\n lt,\n lte,\n not,\n or,\n toArray,\n type Collection,\n type Context,\n type InitialQueryBuilder,\n type QueryBuilder,\n type Ref,\n type SyncConfig,\n} from '@tanstack/db';\nimport type { ChangeSet } from './change-set.js';\nimport { rowsOf, type KeyedResult, type QueryChange, type RowKey } from './observation.js';\nimport type {\n Condition,\n Direction,\n DocumentShape,\n GroupShape,\n KeyPlan,\n OrderOptions,\n Plan,\n QueryDocument,\n QueryGroup,\n QueryResult,\n Scope,\n Test,\n Value,\n} from './query.js';\nimport { documentKey, type Row } from './rows.js';\nimport type { SearchedDocument } from './search.js';\n\ntype Stored = {\n key: string;\n kind: string;\n room: string;\n path: string;\n type: string;\n body: string;\n source: string;\n target: string;\n field: string;\n fields: Readonly<Record<string, unknown>>;\n values: Readonly<Record<string, unknown>>;\n sizes: Readonly<Record<string, number>>;\n directories: readonly string[];\n preamble: string;\n sections: Readonly<Record<string, string>>;\n markdown: string;\n} & Readonly<Record<string, unknown>>;\n\ntype Reference = Ref<Stored>;\n\ntype Field = Reference['values'][string];\n\ntype Size = Reference['sizes'][string];\n\ntype Refs = Readonly<Record<string, Reference>>;\n\ntype Expression = ReturnType<typeof eq>;\n\ntype Builder = {\n where(callback: (refs: Refs) => Expression): Builder;\n innerJoin(source: Readonly<Record<string, unknown>>, on: (refs: Refs) => Expression): Builder;\n groupBy(callback: (refs: Refs) => unknown): Builder;\n orderBy(callback: (refs: Refs) => unknown, options: Direction | OrderOptions): Builder;\n limit(count: number): Builder;\n select(callback: (refs: Refs) => object): object;\n};\n\ntype Live = Collection<Stored, string | number>;\n\ntype Built = { live: Live; dispose(): void };\n\ntype Shared = {\n plan: Plan;\n built: Built;\n result: KeyedResult | undefined;\n listeners: Set<(message: KeyedResult | QueryChange) => void>;\n subscription: { unsubscribe(): void } | null;\n};\n\nexport type ReadSide = {\n apply(set: ChangeSet): void;\n query(plan: Plan): Promise<QueryResult>;\n watch(\n plan: Plan,\n identity: string,\n deliver: (message: KeyedResult | QueryChange) => void,\n ): () => void;\n documents(): readonly SearchedDocument[];\n document(room: string, path: string): SearchedDocument | null;\n close(): void;\n};\n\nfunction every(expressions: readonly Expression[]): Expression {\n const [first, second, ...rest] = expressions;\n return second === undefined ? first : and(first, second, ...rest);\n}\n\nfunction some(expressions: readonly Expression[]): Expression {\n const [first, second, ...rest] = expressions;\n return second === undefined ? first : or(first, second, ...rest);\n}\n\nfunction equal(field: Field, value: Exclude<Value, null>): Expression {\n return or(eq(field, value), inArray(value, field));\n}\n\nfunction tested(test: Test, field: Field, size: Size, written: Field): Expression {\n if (test.op === 'eq') return test.value === null ? isNull(field) : equal(field, test.value);\n if (test.op === 'ne') {\n return test.value === null\n ? not(isNull(field))\n : or(isUndefined(field), isNull(field), not(equal(field, test.value)));\n }\n if (test.op === 'in' || test.op === 'nin') {\n const matches =\n test.values.length === 0\n ? inArray(field, [])\n : some(test.values.map((value) => (value === null ? isNull(field) : equal(field, value))));\n if (test.op === 'in') return matches;\n return some([\n isUndefined(field),\n ...(test.values.includes(null) ? [] : [isNull(field)]),\n not(matches),\n ]);\n }\n if (test.op === 'range') {\n const compare = { gt, gte, lt, lte };\n return every(test.bounds.map(([operator, bound]) => compare[operator](field, bound)));\n }\n if (test.op === 'all') {\n return every([not(isUndefined(size)), ...test.values.map((value) => inArray(value, field))]);\n }\n if (test.op === 'size') return eq(size, test.size);\n return test.exists ? not(isUndefined(written)) : isUndefined(written);\n}\n\nfunction conditioned(condition: Condition, row: Reference): Expression {\n if ('every' in condition) return every(condition.every.map((item) => conditioned(item, row)));\n if ('some' in condition) return some(condition.some.map((item) => conditioned(item, row)));\n return tested(\n condition.test,\n row.values[condition.field],\n row.sizes[condition.field],\n row.fields[condition.field],\n );\n}\n\nfunction scoped(scope: Scope, row: Reference, rooms: readonly string[] | null): Expression {\n return every([\n eq(row.kind, 'document'),\n ...(rooms === null ? [] : [inArray(row.room, [...rooms])]),\n ...(scope.types === null ? [] : [inArray(row.type, [...scope.types])]),\n ...(scope.pathPrefix === null ? [] : [inArray(scope.pathPrefix, row.directories)]),\n ...(scope.where === null ? [] : [conditioned(scope.where, row)]),\n ]);\n}\n\nfunction keyed(key: KeyPlan, row: Reference): Field | Reference['room'] {\n return key.of === 'field' ? row.values[key.field] : row[key.of];\n}\n\nfunction live(query: (q: InitialQueryBuilder) => object): Live {\n return createLiveQueryCollection({\n query: query as (q: InitialQueryBuilder) => QueryBuilder<Context>,\n startSync: true,\n }) as unknown as Live;\n}\n\nfunction related(\n q: InitialQueryBuilder,\n rows: Collection<Stored, string>,\n scope: Scope,\n field: string | null,\n kept: 'source' | 'target',\n): object {\n const matched = kept === 'source' ? 'target' : 'source';\n const from: Builder = q.from({ r: rows });\n return from\n .where(({ r }) =>\n every([eq(r.kind, 'reference'), ...(field === null ? [] : [eq(r.field, field)])]),\n )\n .innerJoin({ m: rows }, ({ r, m }) => eq(r[matched], m.key))\n .where(({ m }) => scoped(scope, m, null))\n .groupBy(({ r }) => r[kept])\n .select(({ r }) => ({ key: r[kept] }));\n}\n\nfunction filtered(q: InitialQueryBuilder, rows: Collection<Stored, string>, plan: Plan): Builder {\n const from: Builder = q.from({ d: rows });\n let query = from.where(({ d }) => scoped(plan.root, d, plan.rooms));\n if (plan.hop !== null) {\n const hop = related(q, rows, plan.hop, plan.hop.field, 'source');\n query = query.innerJoin({ h: hop }, ({ d, h }) => eq(d.key, h.key));\n }\n if (plan.backlinks !== null) {\n const backlinks = related(q, rows, plan.backlinks, plan.backlinks.field, 'target');\n query = query.innerJoin({ k: backlinks }, ({ d, k }) => eq(d.key, k.key));\n }\n return query;\n}\n\nfunction named<T>(prefix: string, names: readonly string[], source: Readonly<Record<string, T>>) {\n return Object.fromEntries(names.map((name, index) => [`${prefix}${index}`, source[name]]));\n}\n\nfunction documents(\n q: InitialQueryBuilder,\n rows: Collection<Stored, string>,\n plan: Plan,\n shape: DocumentShape,\n): object {\n let query = filtered(q, rows, plan);\n if (shape.sections !== null || shape.preamble || shape.markdown) {\n query = query.innerJoin({ b: rows }, ({ d, b }) => eq(d.body, b.key));\n }\n for (const { key, options } of shape.orderBy) {\n query = query.orderBy(({ d }) => keyed(key, d), options);\n }\n if (shape.orderBy.length === 0 && plan.limit !== null) {\n query = query.orderBy(({ d }) => d.key, { stringSort: 'lexical' });\n }\n if (plan.limit !== null) query = query.limit(plan.limit);\n return query.select(({ d, b }) => ({\n room: d.room,\n path: d.path,\n type: d.type,\n ...(shape.fields === 'all' ? { fields: d.fields } : {}),\n ...(Array.isArray(shape.fields) ? named('field', shape.fields, d.fields) : {}),\n ...(shape.sections === 'all' ? { sections: b.sections } : {}),\n ...(Array.isArray(shape.sections) ? named('section', shape.sections, b.sections) : {}),\n ...(shape.preamble ? { preamble: b.preamble } : {}),\n ...(shape.markdown ? { markdown: b.markdown } : {}),\n ...(shape.backlinks ? { backlinks: toArray(backlinked(q, rows, d)) } : {}),\n }));\n}\n\nfunction backlinked(q: InitialQueryBuilder, rows: Collection<Stored, string>, document: Reference) {\n const from: Builder = q.from({ r: rows });\n return from\n .where(({ r }) => eq(r.target, document.key))\n .orderBy(({ r }) => r.path, { stringSort: 'lexical' })\n .orderBy(({ r }) => r.field, { stringSort: 'lexical' })\n .select(({ r }) => ({ path: r.path, type: r.type, field: r.field })) as QueryBuilder<Context>;\n}\n\nfunction groups(q: InitialQueryBuilder, stage: Live, shape: GroupShape, limit: number | null) {\n const keys = shape.groupBy.map((_, index) => `key${index}`);\n const from: Builder = q.from({ m: stage });\n let query = from.groupBy(({ m }) => keys.map((key) => m[key]));\n for (const { by, direction } of shape.orderBy) {\n query = query.orderBy(({ m }) => (by === 'count' ? count(m.key) : m[keys[by]]), direction);\n }\n if (limit !== null && shape.orderBy.length > 0) query = query.limit(limit);\n return query.select(({ m }) => ({\n ...Object.fromEntries(keys.map((key) => [key, m[key]])),\n count: count(m.key),\n }));\n}\n\nfunction built(rows: Collection<Stored, string>, plan: Plan): Built {\n const shape = plan.shape;\n if (shape.kind === 'documents') {\n const collection = live((q) => documents(q, rows, plan, shape));\n return { live: collection, dispose: () => void collection.cleanup() };\n }\n const stage = live((q) =>\n filtered(q, rows, plan).select(({ d }) => ({\n key: d.key,\n ...Object.fromEntries(shape.groupBy.map((key, index) => [`key${index}`, keyed(key, d)])),\n })),\n );\n const collection = live((q) => groups(q, stage, shape, plan.limit));\n return {\n live: collection,\n dispose: () => {\n void collection.cleanup();\n void stage.cleanup();\n },\n };\n}\n\nfunction present(entries: readonly (readonly [string, unknown])[]) {\n return Object.fromEntries(entries.filter(([, value]) => value !== undefined));\n}\n\nfunction part(\n row: Readonly<Record<string, unknown>>,\n prefix: string,\n names: 'all' | readonly string[],\n whole: unknown,\n) {\n if (names === 'all') return whole;\n return present(names.map((name, index) => [name, row[`${prefix}${index}`]] as const));\n}\n\nfunction documentOf(row: Readonly<Record<string, unknown>>, shape: DocumentShape): QueryDocument {\n return {\n room: row.room as string,\n path: row.path as string,\n type: row.type as string,\n ...(shape.fields === null\n ? {}\n : { fields: part(row, 'field', shape.fields, row.fields) as QueryDocument['fields'] }),\n ...(shape.sections === null\n ? {}\n : {\n sections: part(row, 'section', shape.sections, row.sections) as QueryDocument['sections'],\n }),\n ...(shape.preamble ? { preamble: row.preamble as string } : {}),\n ...(shape.markdown ? { markdown: row.markdown as string } : {}),\n ...(shape.backlinks\n ? {\n backlinks: (row.backlinks as readonly Readonly<Record<string, string>>[]).map(\n ({ path, type, field }) => ({ path, type, field }),\n ),\n }\n : {}),\n };\n}\n\nfunction keyedOf(\n plan: Plan,\n entries: readonly (readonly [RowKey, Readonly<Record<string, unknown>>])[],\n): KeyedResult {\n const shape = plan.shape;\n if (shape.kind === 'documents') {\n return {\n result: structuredClone({ documents: entries.map(([, row]) => documentOf(row, shape)) }),\n keys: entries.map(([key]) => key),\n };\n }\n const bounded =\n shape.orderBy.length === 0 && plan.limit !== null ? entries.slice(0, plan.limit) : entries;\n return {\n result: structuredClone({\n groups: bounded.map(([, row]) => ({\n key: shape.groupBy.map((_, index) => row[`key${index}`]),\n count: row.count as number,\n })),\n }),\n keys: bounded.map(([key]) => key),\n };\n}\n\nfunction reconciled(\n previous: KeyedResult,\n next: KeyedResult,\n): { keyed: KeyedResult; change: QueryChange } | null {\n const before = rowsOf(previous.result);\n const held = new Map(previous.keys.map((key, index) => [key, before[index]]));\n const changed: (readonly [RowKey, QueryDocument | QueryGroup])[] = [];\n const rows = rowsOf(next.result).map((row, index) => {\n const key = next.keys[index];\n const kept = held.get(key);\n if (kept !== undefined && deepEquals(kept, row)) return kept;\n changed.push([key, row]);\n return row;\n });\n const present = new Set(next.keys);\n const survivors = previous.keys.filter((key) => present.has(key));\n const removed = previous.keys.filter((key) => !present.has(key));\n const moved =\n survivors.length !== next.keys.length ||\n survivors.some((key, index) => key !== next.keys[index]);\n if (changed.length === 0 && removed.length === 0 && !moved) return null;\n return {\n keyed: {\n result:\n 'groups' in next.result\n ? { groups: rows as readonly QueryGroup[] }\n : { documents: rows as readonly QueryDocument[] },\n keys: next.keys,\n },\n change: { changed, removed, order: moved ? next.keys : null },\n };\n}\n\nexport function createReadSide(): ReadSide {\n configureIndexDevMode({ enabled: false });\n let sync!: Parameters<SyncConfig<Stored, string>['sync']>[0];\n const rows = createCollection<Stored, string>({\n getKey: (row) => row.key,\n gcTime: 0,\n startSync: true,\n autoIndex: 'eager',\n defaultIndexType: BasicIndex,\n sync: {\n rowUpdateMode: 'full',\n sync: (params) => {\n sync = params;\n params.markReady();\n },\n },\n });\n const shared = new Map<string, Shared>();\n\n function searched(row: Stored): SearchedDocument {\n const body = rows.get(row.body) as Stored;\n return {\n room: row.room,\n path: row.path,\n type: row.type,\n fields: row.fields,\n preamble: body.preamble,\n sections: body.sections,\n };\n }\n\n function publish(entry: Shared) {\n const next = reconciled(\n entry.result as KeyedResult,\n keyedOf(entry.plan, [...entry.built.live.entries()]),\n );\n if (next === null) return;\n entry.result = next.keyed;\n for (const listener of entry.listeners) listener(next.change);\n }\n\n return {\n apply(set) {\n const next = new Map<string, Row | null>();\n for (const change of set.documents) {\n for (const row of change.before) next.set(row.key, null);\n for (const row of change.after) next.set(row.key, row);\n }\n if (next.size === 0) return;\n sync.begin();\n for (const [key, row] of next) {\n if (row === null) {\n if (rows.has(key)) sync.write({ type: 'delete', key });\n continue;\n }\n sync.write({ type: rows.has(key) ? 'update' : 'insert', value: row as Stored });\n }\n sync.commit();\n },\n async query(plan) {\n const { live: collection, dispose } = built(rows, plan);\n try {\n await collection.toArrayWhenReady();\n return keyedOf(plan, [...collection.entries()]).result;\n } finally {\n dispose();\n }\n },\n watch(plan, identity, deliver) {\n let entry = shared.get(identity);\n if (entry === undefined) {\n const created: Shared = {\n plan,\n built: built(rows, plan),\n result: undefined,\n listeners: new Set(),\n subscription: null,\n };\n created.built.live.on('status:change', ({ status }) => {\n if (status === 'cleaned-up' && created.listeners.size === 0) shared.delete(identity);\n });\n shared.set(identity, created);\n entry = created;\n }\n const observed = entry;\n observed.listeners.add(deliver);\n observed.built.live.onFirstReady(() => {\n if (!observed.listeners.has(deliver)) return;\n if (observed.subscription === null) {\n observed.result = keyedOf(observed.plan, [...observed.built.live.entries()]);\n observed.subscription = observed.built.live.subscribeChanges(() => {\n publish(observed);\n });\n }\n deliver(observed.result as KeyedResult);\n });\n return () => {\n if (!observed.listeners.delete(deliver) || observed.listeners.size > 0) return;\n observed.subscription?.unsubscribe();\n observed.subscription = null;\n };\n },\n documents() {\n return rows.toArray.filter((row) => row.kind === 'document').map(searched);\n },\n document(room, path) {\n const row = rows.get(documentKey(room, path));\n return row === undefined ? null : searched(row);\n },\n close() {\n for (const entry of shared.values()) {\n entry.listeners.clear();\n entry.subscription?.unsubscribe();\n entry.built.dispose();\n }\n shared.clear();\n void rows.cleanup();\n },\n };\n}\n"],"names":["and","BasicIndex","configureIndexDevMode","count","createCollection","createLiveQueryCollection","deepEquals","eq","gt","gte","inArray","isNull","isUndefined","lt","lte","not","or","toArray","rowsOf","documentKey","every","expressions","first","second","rest","undefined","some","equal","field","value","tested","test","size","written","op","matches","values","length","map","includes","compare","bounds","operator","bound","exists","conditioned","condition","row","item","sizes","fields","scoped","scope","rooms","kind","room","types","type","pathPrefix","directories","where","keyed","key","of","live","query","startSync","related","q","rows","kept","matched","from","r","innerJoin","m","groupBy","select","filtered","plan","d","root","hop","h","backlinks","k","named","prefix","names","source","Object","fromEntries","name","index","documents","shape","sections","preamble","markdown","b","body","options","orderBy","limit","stringSort","path","Array","isArray","backlinked","document","target","groups","stage","keys","_","by","direction","built","collection","dispose","cleanup","present","entries","filter","part","whole","documentOf","keyedOf","result","structuredClone","bounded","slice","reconciled","previous","next","before","held","Map","changed","get","push","Set","survivors","has","removed","moved","change","order","createReadSide","enabled","sync","getKey","gcTime","autoIndex","defaultIndexType","rowUpdateMode","params","markReady","shared","searched","publish","entry","listener","listeners","apply","set","after","begin","write","commit","toArrayWhenReady","watch","identity","deliver","created","subscription","on","status","delete","observed","add","onFirstReady","subscribeChanges","unsubscribe","close","clear"],"mappings":"AAAA,SACEA,GAAG,EACHC,UAAU,EACVC,qBAAqB,EACrBC,KAAK,EACLC,gBAAgB,EAChBC,yBAAyB,EACzBC,UAAU,EACVC,EAAE,EACFC,EAAE,EACFC,GAAG,EACHC,OAAO,EACPC,MAAM,EACNC,WAAW,EACXC,EAAE,EACFC,GAAG,EACHC,GAAG,EACHC,EAAE,EACFC,OAAO,QAOF,eAAe;AAEtB,SAASC,MAAM,QAAyD,mBAAmB;AAgB3F,SAASC,WAAW,QAAkB,YAAY;AAkElD,SAASC,MAAMC,WAAkC;IAC/C,MAAM,CAACC,OAAOC,QAAQ,GAAGC,KAAK,GAAGH;IACjC,OAAOE,WAAWE,YAAYH,QAAQtB,IAAIsB,OAAOC,WAAWC;AAC9D;AAEA,SAASE,KAAKL,WAAkC;IAC9C,MAAM,CAACC,OAAOC,QAAQ,GAAGC,KAAK,GAAGH;IACjC,OAAOE,WAAWE,YAAYH,QAAQN,GAAGM,OAAOC,WAAWC;AAC7D;AAEA,SAASG,MAAMC,KAAY,EAAEC,KAA2B;IACtD,OAAOb,GAAGT,GAAGqB,OAAOC,QAAQnB,QAAQmB,OAAOD;AAC7C;AAEA,SAASE,OAAOC,IAAU,EAAEH,KAAY,EAAEI,IAAU,EAAEC,OAAc;IAClE,IAAIF,KAAKG,EAAE,KAAK,MAAM,OAAOH,KAAKF,KAAK,KAAK,OAAOlB,OAAOiB,SAASD,MAAMC,OAAOG,KAAKF,KAAK;IAC1F,IAAIE,KAAKG,EAAE,KAAK,MAAM;QACpB,OAAOH,KAAKF,KAAK,KAAK,OAClBd,IAAIJ,OAAOiB,UACXZ,GAAGJ,YAAYgB,QAAQjB,OAAOiB,QAAQb,IAAIY,MAAMC,OAAOG,KAAKF,KAAK;IACvE;IACA,IAAIE,KAAKG,EAAE,KAAK,QAAQH,KAAKG,EAAE,KAAK,OAAO;QACzC,MAAMC,UACJJ,KAAKK,MAAM,CAACC,MAAM,KAAK,IACnB3B,QAAQkB,OAAO,EAAE,IACjBF,KAAKK,KAAKK,MAAM,CAACE,GAAG,CAAC,CAACT,QAAWA,UAAU,OAAOlB,OAAOiB,SAASD,MAAMC,OAAOC;QACrF,IAAIE,KAAKG,EAAE,KAAK,MAAM,OAAOC;QAC7B,OAAOT,KAAK;YACVd,YAAYgB;eACRG,KAAKK,MAAM,CAACG,QAAQ,CAAC,QAAQ,EAAE,GAAG;gBAAC5B,OAAOiB;aAAO;YACrDb,IAAIoB;SACL;IACH;IACA,IAAIJ,KAAKG,EAAE,KAAK,SAAS;QACvB,MAAMM,UAAU;YAAEhC;YAAIC;YAAKI;YAAIC;QAAI;QACnC,OAAOM,MAAMW,KAAKU,MAAM,CAACH,GAAG,CAAC,CAAC,CAACI,UAAUC,MAAM,GAAKH,OAAO,CAACE,SAAS,CAACd,OAAOe;IAC/E;IACA,IAAIZ,KAAKG,EAAE,KAAK,OAAO;QACrB,OAAOd,MAAM;YAACL,IAAIH,YAAYoB;eAAWD,KAAKK,MAAM,CAACE,GAAG,CAAC,CAACT,QAAUnB,QAAQmB,OAAOD;SAAQ;IAC7F;IACA,IAAIG,KAAKG,EAAE,KAAK,QAAQ,OAAO3B,GAAGyB,MAAMD,KAAKC,IAAI;IACjD,OAAOD,KAAKa,MAAM,GAAG7B,IAAIH,YAAYqB,YAAYrB,YAAYqB;AAC/D;AAEA,SAASY,YAAYC,SAAoB,EAAEC,GAAc;IACvD,IAAI,WAAWD,WAAW,OAAO1B,MAAM0B,UAAU1B,KAAK,CAACkB,GAAG,CAAC,CAACU,OAASH,YAAYG,MAAMD;IACvF,IAAI,UAAUD,WAAW,OAAOpB,KAAKoB,UAAUpB,IAAI,CAACY,GAAG,CAAC,CAACU,OAASH,YAAYG,MAAMD;IACpF,OAAOjB,OACLgB,UAAUf,IAAI,EACdgB,IAAIX,MAAM,CAACU,UAAUlB,KAAK,CAAC,EAC3BmB,IAAIE,KAAK,CAACH,UAAUlB,KAAK,CAAC,EAC1BmB,IAAIG,MAAM,CAACJ,UAAUlB,KAAK,CAAC;AAE/B;AAEA,SAASuB,OAAOC,KAAY,EAAEL,GAAc,EAAEM,KAA+B;IAC3E,OAAOjC,MAAM;QACXb,GAAGwC,IAAIO,IAAI,EAAE;WACTD,UAAU,OAAO,EAAE,GAAG;YAAC3C,QAAQqC,IAAIQ,IAAI,EAAE;mBAAIF;aAAM;SAAE;WACrDD,MAAMI,KAAK,KAAK,OAAO,EAAE,GAAG;YAAC9C,QAAQqC,IAAIU,IAAI,EAAE;mBAAIL,MAAMI,KAAK;aAAC;SAAE;WACjEJ,MAAMM,UAAU,KAAK,OAAO,EAAE,GAAG;YAAChD,QAAQ0C,MAAMM,UAAU,EAAEX,IAAIY,WAAW;SAAE;WAC7EP,MAAMQ,KAAK,KAAK,OAAO,EAAE,GAAG;YAACf,YAAYO,MAAMQ,KAAK,EAAEb;SAAK;KAChE;AACH;AAEA,SAASc,MAAMC,GAAY,EAAEf,GAAc;IACzC,OAAOe,IAAIC,EAAE,KAAK,UAAUhB,IAAIX,MAAM,CAAC0B,IAAIlC,KAAK,CAAC,GAAGmB,GAAG,CAACe,IAAIC,EAAE,CAAC;AACjE;AAEA,SAASC,KAAKC,KAAyC;IACrD,OAAO5D,0BAA0B;QAC/B4D,OAAOA;QACPC,WAAW;IACb;AACF;AAEA,SAASC,QACPC,CAAsB,EACtBC,IAAgC,EAChCjB,KAAY,EACZxB,KAAoB,EACpB0C,IAAyB;IAEzB,MAAMC,UAAUD,SAAS,WAAW,WAAW;IAC/C,MAAME,OAAgBJ,EAAEI,IAAI,CAAC;QAAEC,GAAGJ;IAAK;IACvC,OAAOG,KACJZ,KAAK,CAAC,CAAC,EAAEa,CAAC,EAAE,GACXrD,MAAM;YAACb,GAAGkE,EAAEnB,IAAI,EAAE;eAAkB1B,UAAU,OAAO,EAAE,GAAG;gBAACrB,GAAGkE,EAAE7C,KAAK,EAAEA;aAAO;SAAE,GAEjF8C,SAAS,CAAC;QAAEC,GAAGN;IAAK,GAAG,CAAC,EAAEI,CAAC,EAAEE,CAAC,EAAE,GAAKpE,GAAGkE,CAAC,CAACF,QAAQ,EAAEI,EAAEb,GAAG,GACzDF,KAAK,CAAC,CAAC,EAAEe,CAAC,EAAE,GAAKxB,OAAOC,OAAOuB,GAAG,OAClCC,OAAO,CAAC,CAAC,EAAEH,CAAC,EAAE,GAAKA,CAAC,CAACH,KAAK,EAC1BO,MAAM,CAAC,CAAC,EAAEJ,CAAC,EAAE,GAAM,CAAA;YAAEX,KAAKW,CAAC,CAACH,KAAK;QAAC,CAAA;AACvC;AAEA,SAASQ,SAASV,CAAsB,EAAEC,IAAgC,EAAEU,IAAU;IACpF,MAAMP,OAAgBJ,EAAEI,IAAI,CAAC;QAAEQ,GAAGX;IAAK;IACvC,IAAIJ,QAAQO,KAAKZ,KAAK,CAAC,CAAC,EAAEoB,CAAC,EAAE,GAAK7B,OAAO4B,KAAKE,IAAI,EAAED,GAAGD,KAAK1B,KAAK;IACjE,IAAI0B,KAAKG,GAAG,KAAK,MAAM;QACrB,MAAMA,MAAMf,QAAQC,GAAGC,MAAMU,KAAKG,GAAG,EAAEH,KAAKG,GAAG,CAACtD,KAAK,EAAE;QACvDqC,QAAQA,MAAMS,SAAS,CAAC;YAAES,GAAGD;QAAI,GAAG,CAAC,EAAEF,CAAC,EAAEG,CAAC,EAAE,GAAK5E,GAAGyE,EAAElB,GAAG,EAAEqB,EAAErB,GAAG;IACnE;IACA,IAAIiB,KAAKK,SAAS,KAAK,MAAM;QAC3B,MAAMA,YAAYjB,QAAQC,GAAGC,MAAMU,KAAKK,SAAS,EAAEL,KAAKK,SAAS,CAACxD,KAAK,EAAE;QACzEqC,QAAQA,MAAMS,SAAS,CAAC;YAAEW,GAAGD;QAAU,GAAG,CAAC,EAAEJ,CAAC,EAAEK,CAAC,EAAE,GAAK9E,GAAGyE,EAAElB,GAAG,EAAEuB,EAAEvB,GAAG;IACzE;IACA,OAAOG;AACT;AAEA,SAASqB,MAASC,MAAc,EAAEC,KAAwB,EAAEC,MAAmC;IAC7F,OAAOC,OAAOC,WAAW,CAACH,MAAMlD,GAAG,CAAC,CAACsD,MAAMC,QAAU;YAAC,GAAGN,SAASM,OAAO;YAAEJ,MAAM,CAACG,KAAK;SAAC;AAC1F;AAEA,SAASE,UACP1B,CAAsB,EACtBC,IAAgC,EAChCU,IAAU,EACVgB,KAAoB;IAEpB,IAAI9B,QAAQa,SAASV,GAAGC,MAAMU;IAC9B,IAAIgB,MAAMC,QAAQ,KAAK,QAAQD,MAAME,QAAQ,IAAIF,MAAMG,QAAQ,EAAE;QAC/DjC,QAAQA,MAAMS,SAAS,CAAC;YAAEyB,GAAG9B;QAAK,GAAG,CAAC,EAAEW,CAAC,EAAEmB,CAAC,EAAE,GAAK5F,GAAGyE,EAAEoB,IAAI,EAAED,EAAErC,GAAG;IACrE;IACA,KAAK,MAAM,EAAEA,GAAG,EAAEuC,OAAO,EAAE,IAAIN,MAAMO,OAAO,CAAE;QAC5CrC,QAAQA,MAAMqC,OAAO,CAAC,CAAC,EAAEtB,CAAC,EAAE,GAAKnB,MAAMC,KAAKkB,IAAIqB;IAClD;IACA,IAAIN,MAAMO,OAAO,CAACjE,MAAM,KAAK,KAAK0C,KAAKwB,KAAK,KAAK,MAAM;QACrDtC,QAAQA,MAAMqC,OAAO,CAAC,CAAC,EAAEtB,CAAC,EAAE,GAAKA,EAAElB,GAAG,EAAE;YAAE0C,YAAY;QAAU;IAClE;IACA,IAAIzB,KAAKwB,KAAK,KAAK,MAAMtC,QAAQA,MAAMsC,KAAK,CAACxB,KAAKwB,KAAK;IACvD,OAAOtC,MAAMY,MAAM,CAAC,CAAC,EAAEG,CAAC,EAAEmB,CAAC,EAAE,GAAM,CAAA;YACjC5C,MAAMyB,EAAEzB,IAAI;YACZkD,MAAMzB,EAAEyB,IAAI;YACZhD,MAAMuB,EAAEvB,IAAI;YACZ,GAAIsC,MAAM7C,MAAM,KAAK,QAAQ;gBAAEA,QAAQ8B,EAAE9B,MAAM;YAAC,IAAI,CAAC,CAAC;YACtD,GAAIwD,MAAMC,OAAO,CAACZ,MAAM7C,MAAM,IAAIoC,MAAM,SAASS,MAAM7C,MAAM,EAAE8B,EAAE9B,MAAM,IAAI,CAAC,CAAC;YAC7E,GAAI6C,MAAMC,QAAQ,KAAK,QAAQ;gBAAEA,UAAUG,EAAEH,QAAQ;YAAC,IAAI,CAAC,CAAC;YAC5D,GAAIU,MAAMC,OAAO,CAACZ,MAAMC,QAAQ,IAAIV,MAAM,WAAWS,MAAMC,QAAQ,EAAEG,EAAEH,QAAQ,IAAI,CAAC,CAAC;YACrF,GAAID,MAAME,QAAQ,GAAG;gBAAEA,UAAUE,EAAEF,QAAQ;YAAC,IAAI,CAAC,CAAC;YAClD,GAAIF,MAAMG,QAAQ,GAAG;gBAAEA,UAAUC,EAAED,QAAQ;YAAC,IAAI,CAAC,CAAC;YAClD,GAAIH,MAAMX,SAAS,GAAG;gBAAEA,WAAWnE,QAAQ2F,WAAWxC,GAAGC,MAAMW;YAAI,IAAI,CAAC,CAAC;QAC3E,CAAA;AACF;AAEA,SAAS4B,WAAWxC,CAAsB,EAAEC,IAAgC,EAAEwC,QAAmB;IAC/F,MAAMrC,OAAgBJ,EAAEI,IAAI,CAAC;QAAEC,GAAGJ;IAAK;IACvC,OAAOG,KACJZ,KAAK,CAAC,CAAC,EAAEa,CAAC,EAAE,GAAKlE,GAAGkE,EAAEqC,MAAM,EAAED,SAAS/C,GAAG,GAC1CwC,OAAO,CAAC,CAAC,EAAE7B,CAAC,EAAE,GAAKA,EAAEgC,IAAI,EAAE;QAAED,YAAY;IAAU,GACnDF,OAAO,CAAC,CAAC,EAAE7B,CAAC,EAAE,GAAKA,EAAE7C,KAAK,EAAE;QAAE4E,YAAY;IAAU,GACpD3B,MAAM,CAAC,CAAC,EAAEJ,CAAC,EAAE,GAAM,CAAA;YAAEgC,MAAMhC,EAAEgC,IAAI;YAAEhD,MAAMgB,EAAEhB,IAAI;YAAE7B,OAAO6C,EAAE7C,KAAK;QAAC,CAAA;AACrE;AAEA,SAASmF,OAAO3C,CAAsB,EAAE4C,KAAW,EAAEjB,KAAiB,EAAEQ,KAAoB;IAC1F,MAAMU,OAAOlB,MAAMnB,OAAO,CAACtC,GAAG,CAAC,CAAC4E,GAAGrB,QAAU,CAAC,GAAG,EAAEA,OAAO;IAC1D,MAAMrB,OAAgBJ,EAAEI,IAAI,CAAC;QAAEG,GAAGqC;IAAM;IACxC,IAAI/C,QAAQO,KAAKI,OAAO,CAAC,CAAC,EAAED,CAAC,EAAE,GAAKsC,KAAK3E,GAAG,CAAC,CAACwB,MAAQa,CAAC,CAACb,IAAI;IAC5D,KAAK,MAAM,EAAEqD,EAAE,EAAEC,SAAS,EAAE,IAAIrB,MAAMO,OAAO,CAAE;QAC7CrC,QAAQA,MAAMqC,OAAO,CAAC,CAAC,EAAE3B,CAAC,EAAE,GAAMwC,OAAO,UAAUhH,MAAMwE,EAAEb,GAAG,IAAIa,CAAC,CAACsC,IAAI,CAACE,GAAG,CAAC,EAAGC;IAClF;IACA,IAAIb,UAAU,QAAQR,MAAMO,OAAO,CAACjE,MAAM,GAAG,GAAG4B,QAAQA,MAAMsC,KAAK,CAACA;IACpE,OAAOtC,MAAMY,MAAM,CAAC,CAAC,EAAEF,CAAC,EAAE,GAAM,CAAA;YAC9B,GAAGe,OAAOC,WAAW,CAACsB,KAAK3E,GAAG,CAAC,CAACwB,MAAQ;oBAACA;oBAAKa,CAAC,CAACb,IAAI;iBAAC,EAAE;YACvD3D,OAAOA,MAAMwE,EAAEb,GAAG;QACpB,CAAA;AACF;AAEA,SAASuD,MAAMhD,IAAgC,EAAEU,IAAU;IACzD,MAAMgB,QAAQhB,KAAKgB,KAAK;IACxB,IAAIA,MAAMzC,IAAI,KAAK,aAAa;QAC9B,MAAMgE,aAAatD,KAAK,CAACI,IAAM0B,UAAU1B,GAAGC,MAAMU,MAAMgB;QACxD,OAAO;YAAE/B,MAAMsD;YAAYC,SAAS,IAAM,KAAKD,WAAWE,OAAO;QAAG;IACtE;IACA,MAAMR,QAAQhD,KAAK,CAACI,IAClBU,SAASV,GAAGC,MAAMU,MAAMF,MAAM,CAAC,CAAC,EAAEG,CAAC,EAAE,GAAM,CAAA;gBACzClB,KAAKkB,EAAElB,GAAG;gBACV,GAAG4B,OAAOC,WAAW,CAACI,MAAMnB,OAAO,CAACtC,GAAG,CAAC,CAACwB,KAAK+B,QAAU;wBAAC,CAAC,GAAG,EAAEA,OAAO;wBAAEhC,MAAMC,KAAKkB;qBAAG,EAAE;YAC1F,CAAA;IAEF,MAAMsC,aAAatD,KAAK,CAACI,IAAM2C,OAAO3C,GAAG4C,OAAOjB,OAAOhB,KAAKwB,KAAK;IACjE,OAAO;QACLvC,MAAMsD;QACNC,SAAS;YACP,KAAKD,WAAWE,OAAO;YACvB,KAAKR,MAAMQ,OAAO;QACpB;IACF;AACF;AAEA,SAASC,QAAQC,OAAgD;IAC/D,OAAOhC,OAAOC,WAAW,CAAC+B,QAAQC,MAAM,CAAC,CAAC,GAAG9F,MAAM,GAAKA,UAAUJ;AACpE;AAEA,SAASmG,KACP7E,GAAsC,EACtCwC,MAAc,EACdC,KAAgC,EAChCqC,KAAc;IAEd,IAAIrC,UAAU,OAAO,OAAOqC;IAC5B,OAAOJ,QAAQjC,MAAMlD,GAAG,CAAC,CAACsD,MAAMC,QAAU;YAACD;YAAM7C,GAAG,CAAC,GAAGwC,SAASM,OAAO,CAAC;SAAC;AAC5E;AAEA,SAASiC,WAAW/E,GAAsC,EAAEgD,KAAoB;IAC9E,OAAO;QACLxC,MAAMR,IAAIQ,IAAI;QACdkD,MAAM1D,IAAI0D,IAAI;QACdhD,MAAMV,IAAIU,IAAI;QACd,GAAIsC,MAAM7C,MAAM,KAAK,OACjB,CAAC,IACD;YAAEA,QAAQ0E,KAAK7E,KAAK,SAASgD,MAAM7C,MAAM,EAAEH,IAAIG,MAAM;QAA6B,CAAC;QACvF,GAAI6C,MAAMC,QAAQ,KAAK,OACnB,CAAC,IACD;YACEA,UAAU4B,KAAK7E,KAAK,WAAWgD,MAAMC,QAAQ,EAAEjD,IAAIiD,QAAQ;QAC7D,CAAC;QACL,GAAID,MAAME,QAAQ,GAAG;YAAEA,UAAUlD,IAAIkD,QAAQ;QAAW,IAAI,CAAC,CAAC;QAC9D,GAAIF,MAAMG,QAAQ,GAAG;YAAEA,UAAUnD,IAAImD,QAAQ;QAAW,IAAI,CAAC,CAAC;QAC9D,GAAIH,MAAMX,SAAS,GACf;YACEA,WAAW,AAACrC,IAAIqC,SAAS,CAAiD9C,GAAG,CAC3E,CAAC,EAAEmE,IAAI,EAAEhD,IAAI,EAAE7B,KAAK,EAAE,GAAM,CAAA;oBAAE6E;oBAAMhD;oBAAM7B;gBAAM,CAAA;QAEpD,IACA,CAAC,CAAC;IACR;AACF;AAEA,SAASmG,QACPhD,IAAU,EACV2C,OAA0E;IAE1E,MAAM3B,QAAQhB,KAAKgB,KAAK;IACxB,IAAIA,MAAMzC,IAAI,KAAK,aAAa;QAC9B,OAAO;YACL0E,QAAQC,gBAAgB;gBAAEnC,WAAW4B,QAAQpF,GAAG,CAAC,CAAC,GAAGS,IAAI,GAAK+E,WAAW/E,KAAKgD;YAAQ;YACtFkB,MAAMS,QAAQpF,GAAG,CAAC,CAAC,CAACwB,IAAI,GAAKA;QAC/B;IACF;IACA,MAAMoE,UACJnC,MAAMO,OAAO,CAACjE,MAAM,KAAK,KAAK0C,KAAKwB,KAAK,KAAK,OAAOmB,QAAQS,KAAK,CAAC,GAAGpD,KAAKwB,KAAK,IAAImB;IACrF,OAAO;QACLM,QAAQC,gBAAgB;YACtBlB,QAAQmB,QAAQ5F,GAAG,CAAC,CAAC,GAAGS,IAAI,GAAM,CAAA;oBAChCe,KAAKiC,MAAMnB,OAAO,CAACtC,GAAG,CAAC,CAAC4E,GAAGrB,QAAU9C,GAAG,CAAC,CAAC,GAAG,EAAE8C,OAAO,CAAC;oBACvD1F,OAAO4C,IAAI5C,KAAK;gBAClB,CAAA;QACF;QACA8G,MAAMiB,QAAQ5F,GAAG,CAAC,CAAC,CAACwB,IAAI,GAAKA;IAC/B;AACF;AAEA,SAASsE,WACPC,QAAqB,EACrBC,IAAiB;IAEjB,MAAMC,SAASrH,OAAOmH,SAASL,MAAM;IACrC,MAAMQ,OAAO,IAAIC,IAAIJ,SAASpB,IAAI,CAAC3E,GAAG,CAAC,CAACwB,KAAK+B,QAAU;YAAC/B;YAAKyE,MAAM,CAAC1C,MAAM;SAAC;IAC3E,MAAM6C,UAA6D,EAAE;IACrE,MAAMrE,OAAOnD,OAAOoH,KAAKN,MAAM,EAAE1F,GAAG,CAAC,CAACS,KAAK8C;QACzC,MAAM/B,MAAMwE,KAAKrB,IAAI,CAACpB,MAAM;QAC5B,MAAMvB,OAAOkE,KAAKG,GAAG,CAAC7E;QACtB,IAAIQ,SAAS7C,aAAanB,WAAWgE,MAAMvB,MAAM,OAAOuB;QACxDoE,QAAQE,IAAI,CAAC;YAAC9E;YAAKf;SAAI;QACvB,OAAOA;IACT;IACA,MAAM0E,UAAU,IAAIoB,IAAIP,KAAKrB,IAAI;IACjC,MAAM6B,YAAYT,SAASpB,IAAI,CAACU,MAAM,CAAC,CAAC7D,MAAQ2D,QAAQsB,GAAG,CAACjF;IAC5D,MAAMkF,UAAUX,SAASpB,IAAI,CAACU,MAAM,CAAC,CAAC7D,MAAQ,CAAC2D,QAAQsB,GAAG,CAACjF;IAC3D,MAAMmF,QACJH,UAAUzG,MAAM,KAAKiG,KAAKrB,IAAI,CAAC5E,MAAM,IACrCyG,UAAUpH,IAAI,CAAC,CAACoC,KAAK+B,QAAU/B,QAAQwE,KAAKrB,IAAI,CAACpB,MAAM;IACzD,IAAI6C,QAAQrG,MAAM,KAAK,KAAK2G,QAAQ3G,MAAM,KAAK,KAAK,CAAC4G,OAAO,OAAO;IACnE,OAAO;QACLpF,OAAO;YACLmE,QACE,YAAYM,KAAKN,MAAM,GACnB;gBAAEjB,QAAQ1C;YAA8B,IACxC;gBAAEyB,WAAWzB;YAAiC;YACpD4C,MAAMqB,KAAKrB,IAAI;QACjB;QACAiC,QAAQ;YAAER;YAASM;YAASG,OAAOF,QAAQX,KAAKrB,IAAI,GAAG;QAAK;IAC9D;AACF;AAEA,OAAO,SAASmC;IACdlJ,sBAAsB;QAAEmJ,SAAS;IAAM;IACvC,IAAIC;IACJ,MAAMjF,OAAOjE,iBAAiC;QAC5CmJ,QAAQ,CAACxG,MAAQA,IAAIe,GAAG;QACxB0F,QAAQ;QACRtF,WAAW;QACXuF,WAAW;QACXC,kBAAkBzJ;QAClBqJ,MAAM;YACJK,eAAe;YACfL,MAAM,CAACM;gBACLN,OAAOM;gBACPA,OAAOC,SAAS;YAClB;QACF;IACF;IACA,MAAMC,SAAS,IAAIrB;IAEnB,SAASsB,SAAShH,GAAW;QAC3B,MAAMqD,OAAO/B,KAAKsE,GAAG,CAAC5F,IAAIqD,IAAI;QAC9B,OAAO;YACL7C,MAAMR,IAAIQ,IAAI;YACdkD,MAAM1D,IAAI0D,IAAI;YACdhD,MAAMV,IAAIU,IAAI;YACdP,QAAQH,IAAIG,MAAM;YAClB+C,UAAUG,KAAKH,QAAQ;YACvBD,UAAUI,KAAKJ,QAAQ;QACzB;IACF;IAEA,SAASgE,QAAQC,KAAa;QAC5B,MAAM3B,OAAOF,WACX6B,MAAMjC,MAAM,EACZD,QAAQkC,MAAMlF,IAAI,EAAE;eAAIkF,MAAM5C,KAAK,CAACrD,IAAI,CAAC0D,OAAO;SAAG;QAErD,IAAIY,SAAS,MAAM;QACnB2B,MAAMjC,MAAM,GAAGM,KAAKzE,KAAK;QACzB,KAAK,MAAMqG,YAAYD,MAAME,SAAS,CAAED,SAAS5B,KAAKY,MAAM;IAC9D;IAEA,OAAO;QACLkB,OAAMC,GAAG;YACP,MAAM/B,OAAO,IAAIG;YACjB,KAAK,MAAMS,UAAUmB,IAAIvE,SAAS,CAAE;gBAClC,KAAK,MAAM/C,OAAOmG,OAAOX,MAAM,CAAED,KAAK+B,GAAG,CAACtH,IAAIe,GAAG,EAAE;gBACnD,KAAK,MAAMf,OAAOmG,OAAOoB,KAAK,CAAEhC,KAAK+B,GAAG,CAACtH,IAAIe,GAAG,EAAEf;YACpD;YACA,IAAIuF,KAAKtG,IAAI,KAAK,GAAG;YACrBsH,KAAKiB,KAAK;YACV,KAAK,MAAM,CAACzG,KAAKf,IAAI,IAAIuF,KAAM;gBAC7B,IAAIvF,QAAQ,MAAM;oBAChB,IAAIsB,KAAK0E,GAAG,CAACjF,MAAMwF,KAAKkB,KAAK,CAAC;wBAAE/G,MAAM;wBAAUK;oBAAI;oBACpD;gBACF;gBACAwF,KAAKkB,KAAK,CAAC;oBAAE/G,MAAMY,KAAK0E,GAAG,CAACjF,OAAO,WAAW;oBAAUjC,OAAOkB;gBAAc;YAC/E;YACAuG,KAAKmB,MAAM;QACb;QACA,MAAMxG,OAAMc,IAAI;YACd,MAAM,EAAEf,MAAMsD,UAAU,EAAEC,OAAO,EAAE,GAAGF,MAAMhD,MAAMU;YAClD,IAAI;gBACF,MAAMuC,WAAWoD,gBAAgB;gBACjC,OAAO3C,QAAQhD,MAAM;uBAAIuC,WAAWI,OAAO;iBAAG,EAAEM,MAAM;YACxD,SAAU;gBACRT;YACF;QACF;QACAoD,OAAM5F,IAAI,EAAE6F,QAAQ,EAAEC,OAAO;YAC3B,IAAIZ,QAAQH,OAAOnB,GAAG,CAACiC;YACvB,IAAIX,UAAUxI,WAAW;gBACvB,MAAMqJ,UAAkB;oBACtB/F;oBACAsC,OAAOA,MAAMhD,MAAMU;oBACnBiD,QAAQvG;oBACR0I,WAAW,IAAItB;oBACfkC,cAAc;gBAChB;gBACAD,QAAQzD,KAAK,CAACrD,IAAI,CAACgH,EAAE,CAAC,iBAAiB,CAAC,EAAEC,MAAM,EAAE;oBAChD,IAAIA,WAAW,gBAAgBH,QAAQX,SAAS,CAACnI,IAAI,KAAK,GAAG8H,OAAOoB,MAAM,CAACN;gBAC7E;gBACAd,OAAOO,GAAG,CAACO,UAAUE;gBACrBb,QAAQa;YACV;YACA,MAAMK,WAAWlB;YACjBkB,SAAShB,SAAS,CAACiB,GAAG,CAACP;YACvBM,SAAS9D,KAAK,CAACrD,IAAI,CAACqH,YAAY,CAAC;gBAC/B,IAAI,CAACF,SAAShB,SAAS,CAACpB,GAAG,CAAC8B,UAAU;gBACtC,IAAIM,SAASJ,YAAY,KAAK,MAAM;oBAClCI,SAASnD,MAAM,GAAGD,QAAQoD,SAASpG,IAAI,EAAE;2BAAIoG,SAAS9D,KAAK,CAACrD,IAAI,CAAC0D,OAAO;qBAAG;oBAC3EyD,SAASJ,YAAY,GAAGI,SAAS9D,KAAK,CAACrD,IAAI,CAACsH,gBAAgB,CAAC;wBAC3DtB,QAAQmB;oBACV;gBACF;gBACAN,QAAQM,SAASnD,MAAM;YACzB;YACA,OAAO;gBACL,IAAI,CAACmD,SAAShB,SAAS,CAACe,MAAM,CAACL,YAAYM,SAAShB,SAAS,CAACnI,IAAI,GAAG,GAAG;gBACxEmJ,SAASJ,YAAY,EAAEQ;gBACvBJ,SAASJ,YAAY,GAAG;YAC1B;QACF;QACAjF;YACE,OAAOzB,KAAKpD,OAAO,CAAC0G,MAAM,CAAC,CAAC5E,MAAQA,IAAIO,IAAI,KAAK,YAAYhB,GAAG,CAACyH;QACnE;QACAlD,UAAStD,IAAI,EAAEkD,IAAI;YACjB,MAAM1D,MAAMsB,KAAKsE,GAAG,CAACxH,YAAYoC,MAAMkD;YACvC,OAAO1D,QAAQtB,YAAY,OAAOsI,SAAShH;QAC7C;QACAyI;YACE,KAAK,MAAMvB,SAASH,OAAO1H,MAAM,GAAI;gBACnC6H,MAAME,SAAS,CAACsB,KAAK;gBACrBxB,MAAMc,YAAY,EAAEQ;gBACpBtB,MAAM5C,KAAK,CAACE,OAAO;YACrB;YACAuC,OAAO2B,KAAK;YACZ,KAAKpH,KAAKmD,OAAO;QACnB;IACF;AACF"}
|
package/dist/wire.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { ConnectionRefusal } from './connection.js';
|
|
2
|
-
export declare const RUNTIME_WIRE_PROTOCOL =
|
|
2
|
+
export declare const RUNTIME_WIRE_PROTOCOL = 7;
|
|
3
3
|
export declare const PROTOCOL_MISMATCH: ConnectionRefusal;
|
|
4
4
|
export type RuntimePort = {
|
|
5
5
|
postMessage(message: unknown): void;
|
|
@@ -47,6 +47,7 @@ export type WireAnswer = {
|
|
|
47
47
|
kind: 'ended';
|
|
48
48
|
};
|
|
49
49
|
export declare const AUTHORIZATION_ENDED = "the host authorization ended";
|
|
50
|
+
export declare const PORT_CLOSED = "the port closed";
|
|
50
51
|
export type WireEnvelope = {
|
|
51
52
|
mdRuntime: number;
|
|
52
53
|
message: WireRequest | WireAnswer;
|
package/dist/wire.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wire.d.ts","sourceRoot":"","sources":["../src/wire.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"wire.d.ts","sourceRoot":"","sources":["../src/wire.ts"],"names":[],"mappings":"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"}
|
package/dist/wire.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export const RUNTIME_WIRE_PROTOCOL =
|
|
1
|
+
export const RUNTIME_WIRE_PROTOCOL = 7;
|
|
2
2
|
export const PROTOCOL_MISMATCH = {
|
|
3
3
|
reason: 'client-host-protocol-mismatch',
|
|
4
4
|
reauthorizationOffered: false,
|
|
@@ -51,6 +51,7 @@ const TOPICS = [
|
|
|
51
51
|
'conversation'
|
|
52
52
|
];
|
|
53
53
|
export const AUTHORIZATION_ENDED = 'the host authorization ended';
|
|
54
|
+
export const PORT_CLOSED = 'the port closed';
|
|
54
55
|
export function envelope(message) {
|
|
55
56
|
return {
|
|
56
57
|
mdRuntime: RUNTIME_WIRE_PROTOCOL,
|
package/dist/wire.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["/workspace/packages/mdruntime/src/wire.ts"],"sourcesContent":["import type { ConnectionRefusal } from './connection.js';\n\nexport const RUNTIME_WIRE_PROTOCOL =
|
|
1
|
+
{"version":3,"sources":["/workspace/packages/mdruntime/src/wire.ts"],"sourcesContent":["import type { ConnectionRefusal } from './connection.js';\n\nexport const RUNTIME_WIRE_PROTOCOL = 7;\n\nexport const PROTOCOL_MISMATCH: ConnectionRefusal = {\n reason: 'client-host-protocol-mismatch',\n reauthorizationOffered: false,\n refusal: null,\n};\n\nexport type RuntimePort = {\n postMessage(message: unknown): void;\n addEventListener(type: 'message' | 'close', listener: (event: { data?: unknown }) => void): void;\n start(): void;\n};\n\nconst MEMBERS = [\n 'rooms',\n 'slots',\n 'query',\n 'search',\n 'types',\n 'syncStatus',\n 'save',\n 'outcome',\n 'history',\n 'call',\n 'log',\n 'storageLoss',\n 'persistence',\n 'deploymentFacts',\n 'reauthorize',\n 'roomDraft.list',\n 'roomDraft.read',\n 'roomDraft.write',\n 'roomDraft.discard',\n 'presentation.read',\n 'presentation.write',\n 'conversation.list',\n 'conversation.read',\n 'conversation.create',\n 'conversation.send',\n 'conversation.answer',\n 'conversation.interrupt',\n 'conversation.kill',\n 'conversation.cancel',\n 'conversation.delete',\n 'chatDraft.write',\n 'chatDraft.discard',\n] as const;\n\nconst TOPICS = [\n 'rooms',\n 'connection-refusal',\n 'storage-loss',\n 'deployment-facts',\n 'sync-status',\n 'query',\n 'queue',\n 'room-drafts',\n 'presentation',\n 'conversation',\n] as const;\n\nexport type WireMember = (typeof MEMBERS)[number];\nexport type WireTopic = (typeof TOPICS)[number];\n\nexport type WireRequest =\n | { kind: 'hello' }\n | { kind: 'call'; id: number; member: WireMember; input: readonly unknown[] }\n | { kind: 'observe'; id: number; topic: WireTopic; input: readonly unknown[] }\n | { kind: 'stop'; id: number };\n\nexport type WireAnswer =\n | { kind: 'result'; id: number; value: unknown }\n | { kind: 'failure'; id: number; message: string }\n | { kind: 'event'; id: number; value: unknown }\n | { kind: 'refusal'; refusal: ConnectionRefusal }\n | { kind: 'ended' };\n\nexport const AUTHORIZATION_ENDED = 'the host authorization ended';\n\nexport const PORT_CLOSED = 'the port closed';\n\nexport type WireEnvelope = { mdRuntime: number; message: WireRequest | WireAnswer };\n\nexport type Carried = { matching: boolean; message: unknown };\n\nexport function envelope(message: WireRequest | WireAnswer): WireEnvelope {\n return { mdRuntime: RUNTIME_WIRE_PROTOCOL, message };\n}\n\nexport function carried(data: unknown): Carried | null {\n if (typeof data !== 'object' || data === null || !('mdRuntime' in data)) return null;\n const record = data as { mdRuntime: unknown; message?: unknown };\n return { matching: record.mdRuntime === RUNTIME_WIRE_PROTOCOL, message: record.message };\n}\n\nfunction body(message: unknown): { kind: unknown; id: unknown } | null {\n if (typeof message !== 'object' || message === null) return null;\n const record = message as { kind?: unknown; id?: unknown };\n return { kind: record.kind, id: record.id };\n}\n\nexport function request(message: unknown): WireRequest | null {\n const shape = body(message);\n if (shape === null) return null;\n if (shape.kind === 'hello') return { kind: 'hello' };\n if (typeof shape.id !== 'number') return null;\n const record = message as { input?: unknown; member?: unknown; topic?: unknown };\n if (shape.kind === 'stop') return { kind: 'stop', id: shape.id };\n if (!Array.isArray(record.input)) return null;\n if (shape.kind === 'call' && MEMBERS.includes(record.member as WireMember)) {\n return {\n kind: 'call',\n id: shape.id,\n member: record.member as WireMember,\n input: record.input as readonly unknown[],\n };\n }\n if (shape.kind === 'observe' && TOPICS.includes(record.topic as WireTopic)) {\n return {\n kind: 'observe',\n id: shape.id,\n topic: record.topic as WireTopic,\n input: record.input as readonly unknown[],\n };\n }\n return null;\n}\n\nexport function answer(message: unknown): WireAnswer | null {\n const shape = body(message);\n if (shape === null) return null;\n const record = message as { value?: unknown; message?: unknown; refusal?: unknown };\n if (shape.kind === 'refusal') {\n return { kind: 'refusal', refusal: record.refusal as ConnectionRefusal };\n }\n if (shape.kind === 'ended') return { kind: 'ended' };\n if (typeof shape.id !== 'number') return null;\n if (shape.kind === 'result') return { kind: 'result', id: shape.id, value: record.value };\n if (shape.kind === 'event') return { kind: 'event', id: shape.id, value: record.value };\n if (shape.kind === 'failure' && typeof record.message === 'string') {\n return { kind: 'failure', id: shape.id, message: record.message };\n }\n return null;\n}\n"],"names":["RUNTIME_WIRE_PROTOCOL","PROTOCOL_MISMATCH","reason","reauthorizationOffered","refusal","MEMBERS","TOPICS","AUTHORIZATION_ENDED","PORT_CLOSED","envelope","message","mdRuntime","carried","data","record","matching","body","kind","id","request","shape","Array","isArray","input","includes","member","topic","answer","value"],"mappings":"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"}
|