@substrat-run/kernel 0.120.0 → 0.121.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.ts +9 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +7 -4
- package/dist/index.js.map +1 -1
- package/dist/list-index.d.ts.map +1 -1
- package/dist/list-index.js +5 -2
- package/dist/list-index.js.map +1 -1
- package/dist/module-migrations.d.ts +26 -0
- package/dist/module-migrations.d.ts.map +1 -0
- package/dist/module-migrations.js +21 -0
- package/dist/module-migrations.js.map +1 -0
- package/dist/platform-call.d.ts +20 -0
- package/dist/platform-call.d.ts.map +1 -1
- package/dist/platform-call.js +24 -0
- package/dist/platform-call.js.map +1 -1
- package/dist/platform-sweep.d.ts +157 -4
- package/dist/platform-sweep.d.ts.map +1 -1
- package/dist/platform-sweep.js +574 -45
- package/dist/platform-sweep.js.map +1 -1
- package/dist/scope-host.d.ts +105 -2
- package/dist/scope-host.d.ts.map +1 -1
- package/dist/scope-host.js.map +1 -1
- package/dist/sql-limits.d.ts +70 -0
- package/dist/sql-limits.d.ts.map +1 -0
- package/dist/sql-limits.js +197 -0
- package/dist/sql-limits.js.map +1 -0
- package/dist/system-switch-record.d.ts +158 -0
- package/dist/system-switch-record.d.ts.map +1 -0
- package/dist/system-switch-record.js +227 -0
- package/dist/system-switch-record.js.map +1 -0
- package/dist/ulid.d.ts +6 -0
- package/dist/ulid.d.ts.map +1 -1
- package/dist/ulid.js +21 -7
- package/dist/ulid.js.map +1 -1
- package/dist/vertical-events.d.ts +96 -2
- package/dist/vertical-events.d.ts.map +1 -1
- package/dist/vertical-events.js +230 -1
- package/dist/vertical-events.js.map +1 -1
- package/package.json +2 -2
package/dist/vertical-events.js
CHANGED
|
@@ -23,8 +23,9 @@
|
|
|
23
23
|
* production builds them, and one definition is what keeps the two identical.
|
|
24
24
|
* `lint:spine-ddl` holds each adapter to including it.
|
|
25
25
|
*/
|
|
26
|
-
import { EXPORT_HOP_CAP, } from '@substrat-run/contracts';
|
|
26
|
+
import { EXPORT_HOP_CAP, substratError, } from '@substrat-run/contracts';
|
|
27
27
|
import { domainEventOf } from './outbox-event.js';
|
|
28
|
+
import { ulidCeiling } from './ulid.js';
|
|
28
29
|
export const VERTICAL_EVENTS_DDL = `
|
|
29
30
|
-- #1705: every event this scope has received from another vertical. The envelope only, and
|
|
30
31
|
-- never the payload. The producer's outbox keeps the one copy, where erasure already reaches.
|
|
@@ -68,6 +69,30 @@ export const VERTICAL_EVENTS_DDL = `
|
|
|
68
69
|
-- every pass, for all the unexported activity since the last exported event. With it, the read
|
|
69
70
|
-- seeks each type's range and costs what it returns.
|
|
70
71
|
CREATE INDEX IF NOT EXISTS _substrat_outbox_type_id ON _substrat_outbox (type, id);
|
|
72
|
+
-- #1705 PR 3: what a REPLAY moved out of the live journal. A replay re-delivers events this
|
|
73
|
+
-- scope already took, and the live tables are also the dedupe (a row in _substrat_deliveries
|
|
74
|
+
-- means "do not run this handler again"). So the rows for the replayed range leave them. They
|
|
75
|
+
-- are moved here rather than dropped, because they are the record that a handler ran on an
|
|
76
|
+
-- event, when, and what it reported: evidence the spine keeps. One row per moved row, the
|
|
77
|
+
-- whole row as JSON under the replay that moved it. Nothing reads this to deliver.
|
|
78
|
+
-- ERASURE: today no erasure path touches imported copies, because only piiClass 'none' crosses
|
|
79
|
+
-- and the delivery-error rewrite (#1632) reaches only this scope's OWN outbox events. If a
|
|
80
|
+
-- consumer-side erasure of imported copies is ever added, it must reach \`row\` here too (a
|
|
81
|
+
-- moved delivery row's \`error\` is a handler's own sentence), or the history keeps what the
|
|
82
|
+
-- live tables gave up. Follow-up: #1757.
|
|
83
|
+
CREATE TABLE IF NOT EXISTS _substrat_import_replays (
|
|
84
|
+
-- The act (a ULID). The admin log's row for the replay carries the same id.
|
|
85
|
+
replay_id TEXT NOT NULL,
|
|
86
|
+
replayed_at TEXT NOT NULL,
|
|
87
|
+
source_scope_id TEXT NOT NULL,
|
|
88
|
+
-- 'journal': a _substrat_imports row. 'delivery': a _substrat_deliveries row.
|
|
89
|
+
kind TEXT NOT NULL,
|
|
90
|
+
event_id TEXT NOT NULL,
|
|
91
|
+
-- The handler's module on a 'delivery' row, and '' on a 'journal' row.
|
|
92
|
+
consumer_module TEXT NOT NULL,
|
|
93
|
+
row TEXT NOT NULL,
|
|
94
|
+
PRIMARY KEY (replay_id, kind, event_id, consumer_module)
|
|
95
|
+
);
|
|
71
96
|
`;
|
|
72
97
|
/**
|
|
73
98
|
* The producer-side read: rows of the given types after the watermark, oldest first.
|
|
@@ -216,6 +241,31 @@ export function exportsOf(manifests) {
|
|
|
216
241
|
out.set(e.type, e);
|
|
217
242
|
return out;
|
|
218
243
|
}
|
|
244
|
+
/**
|
|
245
|
+
* The outbox's insertion mark (#1705 PR 2): the kick's "before", taken ahead of an invoke.
|
|
246
|
+
*
|
|
247
|
+
* `rowid`, not the event id. A ULID minted in the same millisecond as the newest row can sort
|
|
248
|
+
* BELOW it, so "ids above the newest id" can miss an event this invoke wrote. SQLite assigns a
|
|
249
|
+
* new row `max(rowid) + 1` while the newest row is still there. No code path deletes outbox rows
|
|
250
|
+
* inside an invoke: the only removals are a restore and a wipe, and they replace the whole table
|
|
251
|
+
* outside any invocation. So every row the invoke and its consumers add sits above the mark. If
|
|
252
|
+
* that ever stopped being true, the effect is bounded: an exported event would miss its kick and
|
|
253
|
+
* wait for the sweep, and no event would be lost or sent twice.
|
|
254
|
+
*/
|
|
255
|
+
export const OUTBOX_MARK_SQL = 'SELECT COALESCE(MAX(rowid), 0) AS mark FROM _substrat_outbox';
|
|
256
|
+
/**
|
|
257
|
+
* How many rows of the exported `types` were added after `mark` (#1705 PR 2). This is the
|
|
258
|
+
* count `ScopeStubOptions.onExportedEvents` reports. A seek on the rowid, so it walks only
|
|
259
|
+
* what the invoke added. Callers skip it entirely when the deployment exports nothing.
|
|
260
|
+
*/
|
|
261
|
+
export function exportedSinceQuery(types, mark) {
|
|
262
|
+
if (types.length === 0)
|
|
263
|
+
throw new Error('exportedSinceQuery: no types to count');
|
|
264
|
+
return {
|
|
265
|
+
sql: `SELECT COUNT(*) AS n FROM _substrat_outbox WHERE rowid > ? AND type IN (${types.map(() => '?').join(', ')})`,
|
|
266
|
+
params: [mark, ...types],
|
|
267
|
+
};
|
|
268
|
+
}
|
|
219
269
|
/** The consumer's watermark per producer, oldest source first. */
|
|
220
270
|
export const IMPORT_CURSORS_SQL = 'SELECT source_scope_id, source_vertical, cursor, updated_at FROM _substrat_import_cursors ORDER BY source_scope_id';
|
|
221
271
|
/** One producer's watermark, for the compare-and-set a batch is applied under. */
|
|
@@ -248,6 +298,178 @@ export const IMPORT_RECORD_SQL = `
|
|
|
248
298
|
entity_type, entity_id, hops, withheld, imported_at)
|
|
249
299
|
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
|
|
250
300
|
`;
|
|
301
|
+
// -- the replay lever (#1705 PR 3) -----------------------------------------------------------
|
|
302
|
+
/**
|
|
303
|
+
* The producer end of the edge a lever moves, resolved by the sweep's own rule (#1705 PR 3).
|
|
304
|
+
*
|
|
305
|
+
* Both ends must be their tenant's one primary instance, exactly as `sweepEdge` requires. A
|
|
306
|
+
* watermark on any other pair is one no pass reads, so a move there would report success and
|
|
307
|
+
* change nothing. `resolve` is the directory's `resolveVerticalInstance`, and it takes the
|
|
308
|
+
* CONSUMER's tenant, so a producer in another tenant is not found rather than moved.
|
|
309
|
+
*/
|
|
310
|
+
export async function importCursorSourceOf(resolve, consumer, from) {
|
|
311
|
+
if (consumer.vertical === null) {
|
|
312
|
+
throw substratError('precondition_failed', `scope ${consumer.scopeId} runs no vertical, so it imports nothing`);
|
|
313
|
+
}
|
|
314
|
+
if (from === consumer.vertical) {
|
|
315
|
+
throw substratError('precondition_failed', `'${from}' is this scope's own vertical — an edge names ANOTHER vertical`);
|
|
316
|
+
}
|
|
317
|
+
const [self, producer] = await Promise.all([resolve(consumer.tenantId, consumer.vertical), resolve(consumer.tenantId, from)]);
|
|
318
|
+
if (self.outcome !== 'resolved' || self.instance.scopeId !== consumer.scopeId) {
|
|
319
|
+
throw substratError('precondition_failed', `scope ${consumer.scopeId} is not its tenant's one primary instance of '${consumer.vertical}' — ` +
|
|
320
|
+
`a fork, a preview or a second install is no end of an edge`);
|
|
321
|
+
}
|
|
322
|
+
if (producer.outcome !== 'resolved') {
|
|
323
|
+
throw substratError(producer.outcome === 'not-installed' ? 'not_found' : 'precondition_failed', producer.outcome === 'not-installed'
|
|
324
|
+
? `'${from}' is not installed in this tenant`
|
|
325
|
+
: `this tenant has more than one primary instance of '${from}' — the edge waits until one is chosen`);
|
|
326
|
+
}
|
|
327
|
+
return { vertical: from, scopeId: producer.instance.scopeId };
|
|
328
|
+
}
|
|
329
|
+
/**
|
|
330
|
+
* Copy the replayed range's delivery rows into `_substrat_import_replays`. Params: replay id,
|
|
331
|
+
* replayed at, source scope, after ('' = the whole history).
|
|
332
|
+
*
|
|
333
|
+
* The rows are the import handlers' own. An imported event is never in this scope's outbox,
|
|
334
|
+
* so no in-scope consumer ever journals one, and joining through `_substrat_imports` on the
|
|
335
|
+
* source names exactly this edge's rows.
|
|
336
|
+
*/
|
|
337
|
+
const ARCHIVE_DELIVERIES_SQL = `
|
|
338
|
+
INSERT INTO _substrat_import_replays
|
|
339
|
+
(replay_id, replayed_at, source_scope_id, kind, event_id, consumer_module, row)
|
|
340
|
+
SELECT ?, ?, i.source_scope_id, 'delivery', d.event_id, d.consumer_module,
|
|
341
|
+
json_object('delivered_at', d.delivered_at, 'error', d.error, 'attempts', d.attempts,
|
|
342
|
+
'next_attempt_at', d.next_attempt_at, 'invocation_id', d.invocation_id)
|
|
343
|
+
FROM _substrat_deliveries d
|
|
344
|
+
JOIN _substrat_imports i ON i.event_id = d.event_id
|
|
345
|
+
WHERE i.source_scope_id = ? AND i.event_id > ?
|
|
346
|
+
`;
|
|
347
|
+
/**
|
|
348
|
+
* What one replay moved aside, by kind: a seek on the table's key prefix over the rows just
|
|
349
|
+
* written. Counted from the rows rather than from a write's change count, because a Durable
|
|
350
|
+
* Object's `rowsWritten` counts index writes too, and the two adapters would then disagree.
|
|
351
|
+
*/
|
|
352
|
+
const REPLAY_ARCHIVED_SQL = 'SELECT kind, COUNT(*) AS n FROM _substrat_import_replays WHERE replay_id = ? GROUP BY kind';
|
|
353
|
+
/** Copy the replayed range's journal rows. Params as `ARCHIVE_DELIVERIES_SQL`. */
|
|
354
|
+
const ARCHIVE_JOURNAL_SQL = `
|
|
355
|
+
INSERT INTO _substrat_import_replays
|
|
356
|
+
(replay_id, replayed_at, source_scope_id, kind, event_id, consumer_module, row)
|
|
357
|
+
SELECT ?, ?, source_scope_id, 'journal', event_id, '',
|
|
358
|
+
json_object('source_vertical', source_vertical, 'type', type, 'schema_version', schema_version,
|
|
359
|
+
'occurred_at', occurred_at, 'entity_type', entity_type, 'entity_id', entity_id,
|
|
360
|
+
'hops', hops, 'withheld', withheld, 'imported_at', imported_at)
|
|
361
|
+
FROM _substrat_imports
|
|
362
|
+
WHERE source_scope_id = ? AND event_id > ?
|
|
363
|
+
`;
|
|
364
|
+
/** Then clear them from the live tables. Deliveries first: their predicate reads the journal. */
|
|
365
|
+
const CLEAR_DELIVERIES_SQL = `
|
|
366
|
+
DELETE FROM _substrat_deliveries
|
|
367
|
+
WHERE event_id IN (SELECT event_id FROM _substrat_imports WHERE source_scope_id = ? AND event_id > ?)
|
|
368
|
+
`;
|
|
369
|
+
const CLEAR_JOURNAL_SQL = 'DELETE FROM _substrat_imports WHERE source_scope_id = ? AND event_id > ?';
|
|
370
|
+
/**
|
|
371
|
+
* Set a watermark to any value, backwards included. `IMPORT_CURSOR_ADVANCE_SQL` can only move
|
|
372
|
+
* it forward, and that is the delivery path's guard. The lever is the one writer allowed past it.
|
|
373
|
+
*/
|
|
374
|
+
const CURSOR_SET_SQL = `
|
|
375
|
+
INSERT INTO _substrat_import_cursors (source_scope_id, source_vertical, cursor, updated_at)
|
|
376
|
+
VALUES (?, ?, ?, ?)
|
|
377
|
+
ON CONFLICT (source_scope_id) DO UPDATE SET
|
|
378
|
+
source_vertical = excluded.source_vertical,
|
|
379
|
+
cursor = excluded.cursor,
|
|
380
|
+
updated_at = excluded.updated_at
|
|
381
|
+
`;
|
|
382
|
+
/** "Never read": the absence of a row, which is how a new edge already reads. */
|
|
383
|
+
const CURSOR_CLEAR_SQL = 'DELETE FROM _substrat_import_cursors WHERE source_scope_id = ?';
|
|
384
|
+
/**
|
|
385
|
+
* Move one edge's watermark (#1705 PR 3). The adapter supplies the store (as the switches'
|
|
386
|
+
* `SwitchSql`), the transaction, the queue, the clock and the act's id. Run on the scope's own
|
|
387
|
+
* queue, so a pass delivering on the same edge can never interleave with the move. Everything the move decides is decided here, once, for
|
|
388
|
+
* both adapters.
|
|
389
|
+
*
|
|
390
|
+
* Why a bare rewind is not a replay. Three guards stand between an event and a second run of
|
|
391
|
+
* its handler, and a replay must pass each one on purpose:
|
|
392
|
+
*
|
|
393
|
+
* 1. `IMPORT_CURSOR_ADVANCE_SQL` moves the watermark forward only. The lever sets it here.
|
|
394
|
+
* 2. `_substrat_deliveries` holds a row per (event, module) that ran, and the delivery path
|
|
395
|
+
* skips any pair it finds. Rewound but not cleared, every replayed event would come back
|
|
396
|
+
* as a `duplicate` and nothing would run.
|
|
397
|
+
* 3. `_substrat_imports` is `INSERT OR IGNORE`. Left in place, an event first withheld for its
|
|
398
|
+
* version would stay recorded as withheld after the consumer's upgrade released it.
|
|
399
|
+
*
|
|
400
|
+
* So a replay moves the range's rows in (2) and (3) into `_substrat_import_replays` under
|
|
401
|
+
* `replayId`, then clears them, then sets the watermark. The evidence stays, and the live tables
|
|
402
|
+
* take the events again. Two things are true between the move and the redelivery, and are
|
|
403
|
+
* stated rather than hidden: a cause walk through a moved event's id ends at `missing`, and an
|
|
404
|
+
* export read in this scope counts fewer hops for a chain through it. Both heal when the next
|
|
405
|
+
* pass redelivers. The undercount only loosens the loop bound (the hop cap bounds loops, and
|
|
406
|
+
* authorizes nothing), so a loop may run a round longer; no event crosses that exports, grants
|
|
407
|
+
* and the PII rule would not already release.
|
|
408
|
+
*
|
|
409
|
+
* Refused, with the reason a person reads:
|
|
410
|
+
* - a replay whose `after` is AHEAD of the watermark (that is a skip), or a skip whose `through`
|
|
411
|
+
* is BEHIND it (that is a replay). The acknowledgement names one direction, and it must be
|
|
412
|
+
* the direction that moves;
|
|
413
|
+
* - a skip past now, which would pass over events not yet written while the edge read as
|
|
414
|
+
* caught up;
|
|
415
|
+
* - a replay on an edge that has delivered nothing yet: there is nothing to run again.
|
|
416
|
+
*/
|
|
417
|
+
export function moveImportCursor(sql, input) {
|
|
418
|
+
const { move, source } = input;
|
|
419
|
+
if (!input.imports.some((i) => i.from === source.vertical)) {
|
|
420
|
+
throw substratError('precondition_failed', `this scope's code imports nothing from '${source.vertical}' — there is no edge to move; ` +
|
|
421
|
+
`a watermark set now would decide where a later import's backfill starts`);
|
|
422
|
+
}
|
|
423
|
+
const at = new Date(input.now).toISOString();
|
|
424
|
+
const previous = sql.all(IMPORT_CURSOR_OF_SQL, source.scopeId)[0]?.cursor ?? null;
|
|
425
|
+
const moved = (cursor, archived) => ({
|
|
426
|
+
replayId: input.replayId,
|
|
427
|
+
mode: move.mode,
|
|
428
|
+
source: source,
|
|
429
|
+
previous: previous,
|
|
430
|
+
cursor: cursor,
|
|
431
|
+
archived,
|
|
432
|
+
});
|
|
433
|
+
if (move.mode === 'skip') {
|
|
434
|
+
// "Now" is every millisecond BEFORE this one, for an explicit target as for 'now'. An event
|
|
435
|
+
// minted in the skip's own millisecond may commit just after it, and a watermark at this
|
|
436
|
+
// millisecond's ceiling would pass over it silently. On the boundary the edge delivers rather
|
|
437
|
+
// than drops: at least once, never lost. One bound for both, so a person who types the ceiling
|
|
438
|
+
// in gets exactly what 'now' gives.
|
|
439
|
+
const ceiling = ulidCeiling(input.now - 1);
|
|
440
|
+
const through = move.through === 'now' ? ceiling : move.through;
|
|
441
|
+
// Not into the future: a watermark past now would pass over every event yet to be written,
|
|
442
|
+
// silently, and the edge would then read as caught up. "Now" is as far as a skip reaches.
|
|
443
|
+
if (through > ceiling) {
|
|
444
|
+
throw substratError('precondition_failed', `a skip reaches at most now, and ${through} is in the future — it would pass over events not yet written`);
|
|
445
|
+
}
|
|
446
|
+
if (previous !== null && through < previous) {
|
|
447
|
+
throw substratError('precondition_failed', `a skip moves the watermark forward, and ${through} is behind it (${previous}) — ` +
|
|
448
|
+
`to deliver events again, replay (mode 'replay')`);
|
|
449
|
+
}
|
|
450
|
+
sql.run(CURSOR_SET_SQL, source.scopeId, source.vertical, through, at);
|
|
451
|
+
return moved(through, { journal: 0, deliveries: 0 });
|
|
452
|
+
}
|
|
453
|
+
if (previous === null) {
|
|
454
|
+
throw substratError('precondition_failed', `this scope has taken nothing from '${source.vertical}' yet — there is nothing to replay; ` +
|
|
455
|
+
`the next pass delivers the whole exported history`);
|
|
456
|
+
}
|
|
457
|
+
if (move.after !== null && move.after > previous) {
|
|
458
|
+
throw substratError('precondition_failed', `a replay moves the watermark back, and ${move.after} is ahead of it (${previous}) — ` +
|
|
459
|
+
`to pass over events, skip (mode 'skip')`);
|
|
460
|
+
}
|
|
461
|
+
const floor = move.after ?? '';
|
|
462
|
+
sql.run(ARCHIVE_DELIVERIES_SQL, input.replayId, at, source.scopeId, floor);
|
|
463
|
+
sql.run(ARCHIVE_JOURNAL_SQL, input.replayId, at, source.scopeId, floor);
|
|
464
|
+
const counts = new Map(sql.all(REPLAY_ARCHIVED_SQL, input.replayId).map((r) => [r.kind, Number(r.n)]));
|
|
465
|
+
sql.run(CLEAR_DELIVERIES_SQL, source.scopeId, floor);
|
|
466
|
+
sql.run(CLEAR_JOURNAL_SQL, source.scopeId, floor);
|
|
467
|
+
if (move.after === null)
|
|
468
|
+
sql.run(CURSOR_CLEAR_SQL, source.scopeId);
|
|
469
|
+
else
|
|
470
|
+
sql.run(CURSOR_SET_SQL, source.scopeId, source.vertical, move.after, at);
|
|
471
|
+
return moved(move.after, { journal: counts.get('journal') ?? 0, deliveries: counts.get('delivery') ?? 0 });
|
|
472
|
+
}
|
|
251
473
|
/** The note a withheld event's dead letter carries at the consumer. Names the reason, never the content. */
|
|
252
474
|
export function withheldNote(reason, vertical) {
|
|
253
475
|
const why = {
|
|
@@ -278,6 +500,8 @@ export class CrossVerticalRegistry {
|
|
|
278
500
|
exportsByType = new Map();
|
|
279
501
|
importVersion = new Map();
|
|
280
502
|
registered = [];
|
|
503
|
+
/** `exportTypes()`, kept current by `register`: an invoke reads it, and must not rebuild a map to. */
|
|
504
|
+
exportTypeList = [];
|
|
281
505
|
register(manifest, handlers) {
|
|
282
506
|
const declared = new Map();
|
|
283
507
|
for (const c of manifest.events.consumes)
|
|
@@ -317,6 +541,7 @@ export class CrossVerticalRegistry {
|
|
|
317
541
|
if (!this.exportsByType.has(e.type))
|
|
318
542
|
this.exportsByType.set(e.type, { ...e, declaredBy: manifest.id });
|
|
319
543
|
}
|
|
544
|
+
this.exportTypeList = [...this.exportsByType.keys()];
|
|
320
545
|
for (const [key, decl] of declared) {
|
|
321
546
|
if (!this.importVersion.has(key))
|
|
322
547
|
this.importVersion.set(key, { schemaVersion: decl.schemaVersion, declaredBy: manifest.id });
|
|
@@ -327,6 +552,10 @@ export class CrossVerticalRegistry {
|
|
|
327
552
|
exports() {
|
|
328
553
|
return new Map([...this.exportsByType].map(([t, { declaredBy: _, ...e }]) => [t, e]));
|
|
329
554
|
}
|
|
555
|
+
/** The exported type names (#1705 PR 2), for the per-invoke kick count. Empty: exports nothing. */
|
|
556
|
+
exportTypes() {
|
|
557
|
+
return this.exportTypeList;
|
|
558
|
+
}
|
|
330
559
|
/** What this deployment imports, one row per (source, type), sorted. */
|
|
331
560
|
consumes() {
|
|
332
561
|
return [...this.importVersion.entries()]
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vertical-events.js","sourceRoot":"","sources":["../src/vertical-events.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"vertical-events.js","sourceRoot":"","sources":["../src/vertical-events.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH,OAAO,EACL,cAAc,EACd,aAAa,GAad,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,aAAa,EAA0B,MAAM,mBAAmB,CAAC;AAE1E,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAGxC,MAAM,CAAC,MAAM,mBAAmB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAmElC,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,UAAU,eAAe,CAC7B,KAAwB,EACxB,KAAoB,EACpB,KAAa;IAEb,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;IAC7E,MAAM,YAAY,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACrD,OAAO;QACL,GAAG,EACD,iDAAiD,YAAY,GAAG;YAChE,CAAC,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC;YACrC,sBAAsB;QACxB,MAAM,EAAE,CAAC,GAAG,KAAK,EAAE,GAAG,CAAC,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC;KAC9D,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG;;;;;;;;;;CAU9B,CAAC;AAKF;;;;;;;;;;GAUG;AACH,MAAM,UAAU,eAAe,CAAC,KAS/B;IACC,MAAM,GAAG,GAAG,KAAK,CAAC,MAAM,IAAI,cAAc,CAAC;IAC3C,MAAM,MAAM,GAAoB,EAAE,CAAC;IACnC,MAAM,QAAQ,GAAoB,EAAE,CAAC;IACrC,MAAM,QAAQ,GAAG,CAAC,GAAc,EAAE,MAA+B,EAAQ,EAAE;QACzE,QAAQ,CAAC,IAAI,CAAC;YACZ,EAAE,EAAE,GAAG,CAAC,EAAyB;YACjC,IAAI,EAAE,GAAG,CAAC,IAAI;YACd,aAAa,EAAE,GAAG,CAAC,cAAc;YACjC,UAAU,EAAE,GAAG,CAAC,WAAW;YAC3B,MAAM,EAAE,EAAE,UAAU,EAAE,GAAG,CAAC,WAAW,EAAE,QAAQ,EAAE,GAAG,CAAC,SAAS,EAAE;YAChE,MAAM;SACP,CAAC,CAAC;IACL,CAAC,CAAC;IACF,KAAK,MAAM,GAAG,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;QAC7B,sFAAsF;QACtF,qFAAqF;QACrF,yCAAyC;QACzC,IAAI,GAAG,CAAC,SAAS,KAAK,MAAM,EAAE,CAAC;YAC7B,QAAQ,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;YACrB,SAAS;QACX,CAAC;QACD,IAAI,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,cAAc,EAAE,CAAC;YACtD,QAAQ,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;YACzB,SAAS;QACX,CAAC;QACD,MAAM,IAAI,GAAG,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACvC,IAAI,IAAI,GAAG,GAAG,EAAE,CAAC;YACf,QAAQ,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;YACzB,SAAS;QACX,CAAC;QACD,IAAI,OAAO,CAAC;QACZ,IAAI,CAAC;YACH,OAAO,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC;QAC/B,CAAC;QAAC,MAAM,CAAC;YACP,8EAA8E;YAC9E,6EAA6E;YAC7E,oBAAoB;YACpB,QAAQ,CAAC,GAAG,EAAE,aAAa,CAAC,CAAC;YAC7B,SAAS;QACX,CAAC;QACD,MAAM,CAAC,IAAI,CAAC;YACV,EAAE,EAAE,OAAO,CAAC,EAAE;YACd,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,aAAa,EAAE,OAAO,CAAC,aAAa;YACpC,UAAU,EAAE,OAAO,CAAC,UAAU;YAC9B,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,IAAI;SACL,CAAC,CAAC;IACL,CAAC;IACD,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAC/C,OAAO;QACL,MAAM;QACN,QAAQ;QACR,IAAI,EAAE,CAAC,IAAI,EAAE,EAAE,IAAI,KAAK,CAAC,KAAK,CAA0B;QACxD,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,MAAM,KAAK,KAAK,CAAC,KAAK;KACxC,CAAC;AACJ,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,cAAc,CAC5B,OAAyC,EACzC,KAA6B;IAE7B,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,MAAM,MAAM,GAAG,IAAI,GAAG,EAAkB,CAAC;IACzC,MAAM,UAAU,GAAkB,EAAE,CAAC;IACrC,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;QACtB,MAAM,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAC9B,IAAI,CAAC,CAAC,EAAE,CAAC;YACP,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACnB,SAAS;QACX,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;YAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAC5C,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,aAAa,CAAC,CAAC;QACpC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC;IAC7B,CAAC;IACD,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC;AAC7E,CAAC;AAED,sGAAsG;AACtG,MAAM,UAAU,SAAS,CACvB,SAAsE;IAEtE,MAAM,GAAG,GAAG,IAAI,GAAG,EAAuB,CAAC;IAC3C,KAAK,MAAM,CAAC,IAAI,SAAS;QAAE,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,OAAO,IAAI,EAAE;YAAE,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;gBAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IAC5G,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,8DAA8D,CAAC;AAE9F;;;;GAIG;AACH,MAAM,UAAU,kBAAkB,CAAC,KAAwB,EAAE,IAAY;IACvE,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;IACjF,OAAO;QACL,GAAG,EAAE,2EAA2E,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG;QAClH,MAAM,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK,CAAC;KACzB,CAAC;AACJ,CAAC;AAED,kEAAkE;AAClE,MAAM,CAAC,MAAM,kBAAkB,GAC7B,oHAAoH,CAAC;AAEvH,kFAAkF;AAClF,MAAM,CAAC,MAAM,oBAAoB,GAAG,uEAAuE,CAAC;AAE5G;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG;;;;;;;;CAQxC,CAAC;AAEF;;;;GAIG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG;;;;;CAKhC,CAAC;AAEF,+FAA+F;AAE/F;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,OAA8E,EAC9E,QAA2E,EAC3E,IAAY;IAEZ,IAAI,QAAQ,CAAC,QAAQ,KAAK,IAAI,EAAE,CAAC;QAC/B,MAAM,aAAa,CAAC,qBAAqB,EAAE,SAAS,QAAQ,CAAC,OAAO,0CAA0C,CAAC,CAAC;IAClH,CAAC;IACD,IAAI,IAAI,KAAK,QAAQ,CAAC,QAAQ,EAAE,CAAC;QAC/B,MAAM,aAAa,CAAC,qBAAqB,EAAE,IAAI,IAAI,iEAAiE,CAAC,CAAC;IACxH,CAAC;IACD,MAAM,CAAC,IAAI,EAAE,QAAQ,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC,QAAQ,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;IAC9H,IAAI,IAAI,CAAC,OAAO,KAAK,UAAU,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,KAAK,QAAQ,CAAC,OAAO,EAAE,CAAC;QAC9E,MAAM,aAAa,CACjB,qBAAqB,EACrB,SAAS,QAAQ,CAAC,OAAO,iDAAiD,QAAQ,CAAC,QAAQ,MAAM;YAC/F,4DAA4D,CAC/D,CAAC;IACJ,CAAC;IACD,IAAI,QAAQ,CAAC,OAAO,KAAK,UAAU,EAAE,CAAC;QACpC,MAAM,aAAa,CACjB,QAAQ,CAAC,OAAO,KAAK,eAAe,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,qBAAqB,EAC1E,QAAQ,CAAC,OAAO,KAAK,eAAe;YAClC,CAAC,CAAC,IAAI,IAAI,mCAAmC;YAC7C,CAAC,CAAC,sDAAsD,IAAI,wCAAwC,CACvG,CAAC;IACJ,CAAC;IACD,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;AAChE,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,sBAAsB,GAAG;;;;;;;;;CAS9B,CAAC;AAEF;;;;GAIG;AACH,MAAM,mBAAmB,GAAG,4FAA4F,CAAC;AAEzH,kFAAkF;AAClF,MAAM,mBAAmB,GAAG;;;;;;;;;CAS3B,CAAC;AAEF,iGAAiG;AACjG,MAAM,oBAAoB,GAAG;;;CAG5B,CAAC;AACF,MAAM,iBAAiB,GAAG,0EAA0E,CAAC;AAErG;;;GAGG;AACH,MAAM,cAAc,GAAG;;;;;;;CAOtB,CAAC;AACF,iFAAiF;AACjF,MAAM,gBAAgB,GAAG,gEAAgE,CAAC;AAE1F;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,MAAM,UAAU,gBAAgB,CAC9B,GAAc,EACd,KAaC;IAED,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,KAAK,CAAC;IAC/B,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC3D,MAAM,aAAa,CACjB,qBAAqB,EACrB,2CAA2C,MAAM,CAAC,QAAQ,gCAAgC;YACxF,yEAAyE,CAC5E,CAAC;IACJ,CAAC;IACD,MAAM,EAAE,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC;IAC7C,MAAM,QAAQ,GAAI,GAAG,CAAC,GAAG,CAAC,oBAAoB,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,MAA6B,IAAI,IAAI,CAAC;IAC1G,MAAM,KAAK,GAAG,CAAC,MAAqB,EAAE,QAAiD,EAAqB,EAAE,CAAC,CAAC;QAC9G,QAAQ,EAAE,KAAK,CAAC,QAAQ;QACxB,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,MAAM,EAAE,MAAqC;QAC7C,QAAQ,EAAE,QAAyC;QACnD,MAAM,EAAE,MAAqC;QAC7C,QAAQ;KACT,CAAC,CAAC;IACH,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;QACzB,4FAA4F;QAC5F,yFAAyF;QACzF,8FAA8F;QAC9F,+FAA+F;QAC/F,oCAAoC;QACpC,MAAM,OAAO,GAAG,WAAW,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;QAC3C,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,KAAK,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC;QAChE,2FAA2F;QAC3F,0FAA0F;QAC1F,IAAI,OAAO,GAAG,OAAO,EAAE,CAAC;YACtB,MAAM,aAAa,CACjB,qBAAqB,EACrB,mCAAmC,OAAO,+DAA+D,CAC1G,CAAC;QACJ,CAAC;QACD,IAAI,QAAQ,KAAK,IAAI,IAAI,OAAO,GAAG,QAAQ,EAAE,CAAC;YAC5C,MAAM,aAAa,CACjB,qBAAqB,EACrB,2CAA2C,OAAO,kBAAkB,QAAQ,MAAM;gBAChF,iDAAiD,CACpD,CAAC;QACJ,CAAC;QACD,GAAG,CAAC,GAAG,CAAC,cAAc,EAAE,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE,CAAC,CAAC;QACtE,OAAO,KAAK,CAAC,OAAO,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,CAAC,CAAC;IACvD,CAAC;IACD,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;QACtB,MAAM,aAAa,CACjB,qBAAqB,EACrB,sCAAsC,MAAM,CAAC,QAAQ,sCAAsC;YACzF,mDAAmD,CACtD,CAAC;IACJ,CAAC;IACD,IAAI,IAAI,CAAC,KAAK,KAAK,IAAI,IAAI,IAAI,CAAC,KAAK,GAAG,QAAQ,EAAE,CAAC;QACjD,MAAM,aAAa,CACjB,qBAAqB,EACrB,0CAA0C,IAAI,CAAC,KAAK,oBAAoB,QAAQ,MAAM;YACpF,yCAAyC,CAC5C,CAAC;IACJ,CAAC;IACD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;IAC/B,GAAG,CAAC,GAAG,CAAC,sBAAsB,EAAE,KAAK,CAAC,QAAQ,EAAE,EAAE,EAAE,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IAC3E,GAAG,CAAC,GAAG,CAAC,mBAAmB,EAAE,KAAK,CAAC,QAAQ,EAAE,EAAE,EAAE,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IACxE,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,mBAAmB,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAc,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACjH,GAAG,CAAC,GAAG,CAAC,oBAAoB,EAAE,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IACrD,GAAG,CAAC,GAAG,CAAC,iBAAiB,EAAE,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IAClD,IAAI,IAAI,CAAC,KAAK,KAAK,IAAI;QAAE,GAAG,CAAC,GAAG,CAAC,gBAAgB,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;;QAC9D,GAAG,CAAC,GAAG,CAAC,cAAc,EAAE,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IAC9E,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAC7G,CAAC;AAED,4GAA4G;AAC5G,MAAM,UAAU,YAAY,CAAC,MAA+B,EAAE,QAAgB;IAC5E,MAAM,GAAG,GAA4C;QACnD,GAAG,EAAE,gGAAgG;QACrG,OAAO,EAAE,+FAA+F;QACxG,OAAO,EAAE,uCAAuC,cAAc,sBAAsB;QACpF,WAAW,EAAE,wCAAwC;KACtD,CAAC;IACF,OAAO,gBAAgB,QAAQ,cAAc,GAAG,CAAC,MAAM,CAAC,0BAA0B,CAAC;AACrF,CAAC;AAWD;;;;;;;;;;;;;;;GAeG;AACH,MAAM,OAAO,qBAAqB;IACf,aAAa,GAAG,IAAI,GAAG,EAAgD,CAAC;IACxE,aAAa,GAAG,IAAI,GAAG,EAAyD,CAAC;IACjF,UAAU,GAAuB,EAAE,CAAC;IACrD,sGAAsG;IAC9F,cAAc,GAAa,EAAE,CAAC;IAEtC,QAAQ,CACN,QAA+C,EAC/C,QAAmE;QAEnE,MAAM,QAAQ,GAAG,IAAI,GAAG,EAA4B,CAAC;QACrD,KAAK,MAAM,CAAC,IAAI,QAAQ,CAAC,MAAM,CAAC,QAAQ;YAAE,IAAI,CAAC,CAAC,IAAI,KAAK,SAAS;gBAAE,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,SAAS,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC;QAChH,MAAM,OAAO,GAAuB,EAAE,CAAC;QACvC,KAAK,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,IAAI,EAAE,CAAC,EAAE,CAAC;YAC5D,KAAK,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;gBACrD,MAAM,IAAI,GAAG,QAAQ,CAAC,GAAG,CAAC,GAAG,IAAI,SAAS,IAAI,EAAE,CAAC,CAAC;gBAClD,IAAI,CAAC,IAAI,EAAE,CAAC;oBACV,MAAM,IAAI,KAAK,CACb,GAAG,QAAQ,CAAC,EAAE,qCAAqC,IAAI,WAAW,IAAI,iCAAiC;wBACrG,0BAA0B,IAAI,aAAa,IAAI,uCAAuC,CACzF,CAAC;gBACJ,CAAC;gBACD,OAAO,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,QAAQ,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,CAAC,aAAa,EAAE,OAAO,EAAE,CAAC,CAAC;YAClG,CAAC;QACH,CAAC;QACD,KAAK,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,QAAQ,EAAE,CAAC;YACnC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,SAAS,CAAC,CAAC,IAAI,EAAE,KAAK,GAAG,CAAC,EAAE,CAAC;gBAC7D,MAAM,IAAI,KAAK,CACb,GAAG,QAAQ,CAAC,EAAE,0BAA0B,IAAI,CAAC,IAAI,WAAW,IAAI,CAAC,IAAI,oCAAoC;oBACvG,oBAAoB,IAAI,CAAC,IAAI,4CAA4C,CAC5E,CAAC;YACJ,CAAC;YACD,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YAC1C,IAAI,KAAK,IAAI,KAAK,CAAC,aAAa,KAAK,IAAI,CAAC,aAAa,EAAE,CAAC;gBACxD,MAAM,IAAI,KAAK,CACb,IAAI,IAAI,CAAC,IAAI,WAAW,IAAI,CAAC,IAAI,kCAAkC,KAAK,CAAC,aAAa,OAAO,KAAK,CAAC,UAAU,GAAG;oBAC9G,OAAO,IAAI,CAAC,aAAa,OAAO,QAAQ,CAAC,EAAE,kCAAkC,CAChF,CAAC;YACJ,CAAC;QACH,CAAC;QACD,KAAK,MAAM,CAAC,IAAI,QAAQ,CAAC,MAAM,CAAC,OAAO,IAAI,EAAE,EAAE,CAAC;YAC9C,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YAC7C,IAAI,KAAK,IAAI,CAAC,KAAK,CAAC,aAAa,KAAK,CAAC,CAAC,aAAa,IAAI,KAAK,CAAC,cAAc,KAAK,CAAC,CAAC,cAAc,CAAC,EAAE,CAAC;gBACpG,MAAM,IAAI,KAAK,CACb,IAAI,CAAC,CAAC,IAAI,qBAAqB,KAAK,CAAC,aAAa,WAAW,KAAK,CAAC,cAAc,QAAQ,KAAK,CAAC,UAAU,GAAG;oBAC1G,WAAW,CAAC,CAAC,aAAa,WAAW,CAAC,CAAC,cAAc,QAAQ,QAAQ,CAAC,EAAE,qCAAqC,CAChH,CAAC;YACJ,CAAC;QACH,CAAC;QACD,yFAAyF;QACzF,KAAK,MAAM,CAAC,IAAI,QAAQ,CAAC,MAAM,CAAC,OAAO,IAAI,EAAE,EAAE,CAAC;YAC9C,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;gBAAE,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,GAAG,CAAC,EAAE,UAAU,EAAE,QAAQ,CAAC,EAAE,EAAE,CAAC,CAAC;QACzG,CAAC;QACD,IAAI,CAAC,cAAc,GAAG,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC,CAAC;QACrD,KAAK,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,QAAQ,EAAE,CAAC;YACnC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC;gBAAE,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,aAAa,EAAE,IAAI,CAAC,aAAa,EAAE,UAAU,EAAE,QAAQ,CAAC,EAAE,EAAE,CAAC,CAAC;QAChI,CAAC;QACD,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,CAAC;IACnC,CAAC;IAED,kFAAkF;IAClF,OAAO;QACL,OAAO,IAAI,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IACxF,CAAC;IAED,mGAAmG;IACnG,WAAW;QACT,OAAO,IAAI,CAAC,cAAc,CAAC;IAC7B,CAAC;IAED,wEAAwE;IACxE,QAAQ;QACN,OAAO,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC;aACrC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE;YAChB,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAqB,CAAC;YAC7D,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC,CAAC,aAAa,EAAE,CAAC;QACxD,CAAC,CAAC;aACD,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IAClF,CAAC;IAED,kEAAkE;IAClE,WAAW,CAAC,IAAY,EAAE,IAAY;QACpC,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;IAC3E,CAAC;IAED,yGAAyG;IACzG,gBAAgB,CAAC,IAAY,EAAE,IAAY;QACzC,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IAC3E,CAAC;CACF"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@substrat-run/kernel",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.121.0",
|
|
4
4
|
"description": "Substrat kernel contracts and services — pure TypeScript, no platform imports (D-14)",
|
|
5
5
|
"license": "AGPL-3.0-only",
|
|
6
6
|
"repository": {
|
|
@@ -22,7 +22,7 @@
|
|
|
22
22
|
"dist"
|
|
23
23
|
],
|
|
24
24
|
"dependencies": {
|
|
25
|
-
"@substrat-run/contracts": "^0.
|
|
25
|
+
"@substrat-run/contracts": "^0.121.0"
|
|
26
26
|
},
|
|
27
27
|
"devDependencies": {
|
|
28
28
|
"@types/node": "^22.0.0",
|