@substrat-run/adapter-sqlite 0.116.0 → 0.117.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/actor.d.ts +10 -0
- package/dist/actor.d.ts.map +1 -1
- package/dist/actor.js +25 -1
- package/dist/actor.js.map +1 -1
- package/dist/checker.d.ts.map +1 -1
- package/dist/checker.js +5 -1
- package/dist/checker.js.map +1 -1
- package/dist/index.d.ts +100 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +801 -271
- package/dist/index.js.map +1 -1
- package/package.json +4 -4
package/dist/actor.d.ts
CHANGED
|
@@ -7,5 +7,15 @@
|
|
|
7
7
|
export declare class ScopeActor {
|
|
8
8
|
private tail;
|
|
9
9
|
enqueue<T>(op: () => Promise<T> | T): Promise<T>;
|
|
10
|
+
/** True when the caller is itself running inside one of this actor's tasks. */
|
|
11
|
+
holds(): boolean;
|
|
12
|
+
/**
|
|
13
|
+
* A turn of this actor, re-entrant (#1666 review): from outside, an ordinary
|
|
14
|
+
* `enqueue`; from INSIDE one of this actor's tasks, the op runs in that task
|
|
15
|
+
* rather than queueing behind it — which would wait on itself and never return.
|
|
16
|
+
* The re-entrant op is part of the enclosing task, so it shares whatever
|
|
17
|
+
* transaction that task holds open: the caller's own unit, not a stranger's.
|
|
18
|
+
*/
|
|
19
|
+
turn<T>(op: () => Promise<T> | T): Promise<T>;
|
|
10
20
|
}
|
|
11
21
|
//# sourceMappingURL=actor.d.ts.map
|
package/dist/actor.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"actor.d.ts","sourceRoot":"","sources":["../src/actor.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"actor.d.ts","sourceRoot":"","sources":["../src/actor.ts"],"names":[],"mappings":"AAUA;;;;;GAKG;AACH,qBAAa,UAAU;IACrB,OAAO,CAAC,IAAI,CAAuC;IAEnD,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAY/C;IAED,+EAA+E;IAC/E,KAAK,IAAI,OAAO,CAEf;IAED;;;;;;OAMG;IACH,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAE5C;CACF"}
|
package/dist/actor.js
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { AsyncLocalStorage } from 'node:async_hooks';
|
|
2
|
+
const held = new AsyncLocalStorage();
|
|
1
3
|
/**
|
|
2
4
|
* Per-scope actor: strict serialization (K-6). One operation runs to
|
|
3
5
|
* completion before the next starts — the conservative semantics both
|
|
@@ -7,10 +9,32 @@
|
|
|
7
9
|
export class ScopeActor {
|
|
8
10
|
tail = Promise.resolve();
|
|
9
11
|
enqueue(op) {
|
|
10
|
-
const result = this.tail.then(
|
|
12
|
+
const result = this.tail.then(async () => {
|
|
13
|
+
const task = { actor: this, live: true };
|
|
14
|
+
try {
|
|
15
|
+
return await held.run([...(held.getStore() ?? []), task], op);
|
|
16
|
+
}
|
|
17
|
+
finally {
|
|
18
|
+
task.live = false;
|
|
19
|
+
}
|
|
20
|
+
});
|
|
11
21
|
// The chain must survive failures; callers still see the rejection.
|
|
12
22
|
this.tail = result.catch(() => undefined);
|
|
13
23
|
return result;
|
|
14
24
|
}
|
|
25
|
+
/** True when the caller is itself running inside one of this actor's tasks. */
|
|
26
|
+
holds() {
|
|
27
|
+
return (held.getStore() ?? []).some((t) => t.actor === this && t.live);
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* A turn of this actor, re-entrant (#1666 review): from outside, an ordinary
|
|
31
|
+
* `enqueue`; from INSIDE one of this actor's tasks, the op runs in that task
|
|
32
|
+
* rather than queueing behind it — which would wait on itself and never return.
|
|
33
|
+
* The re-entrant op is part of the enclosing task, so it shares whatever
|
|
34
|
+
* transaction that task holds open: the caller's own unit, not a stranger's.
|
|
35
|
+
*/
|
|
36
|
+
turn(op) {
|
|
37
|
+
return this.holds() ? Promise.resolve().then(op) : this.enqueue(op);
|
|
38
|
+
}
|
|
15
39
|
}
|
|
16
40
|
//# sourceMappingURL=actor.js.map
|
package/dist/actor.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"actor.js","sourceRoot":"","sources":["../src/actor.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,MAAM,OAAO,UAAU;IACb,IAAI,GAAqB,OAAO,CAAC,OAAO,EAAE,CAAC;IAEnD,OAAO,CAAI,EAAwB;QACjC,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"actor.js","sourceRoot":"","sources":["../src/actor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAQrD,MAAM,IAAI,GAAG,IAAI,iBAAiB,EAAuB,CAAC;AAE1D;;;;;GAKG;AACH,MAAM,OAAO,UAAU;IACb,IAAI,GAAqB,OAAO,CAAC,OAAO,EAAE,CAAC;IAEnD,OAAO,CAAI,EAAwB;QACjC,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE;YACvC,MAAM,IAAI,GAAa,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;YACnD,IAAI,CAAC;gBACH,OAAO,MAAM,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;YAChE,CAAC;oBAAS,CAAC;gBACT,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC;YACpB,CAAC;QACH,CAAC,CAAC,CAAC;QACH,oEAAoE;QACpE,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;QAC1C,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,+EAA+E;IAC/E,KAAK;QACH,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC;IACzE,CAAC;IAED;;;;;;OAMG;IACH,IAAI,CAAI,EAAwB;QAC9B,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IACtE,CAAC;CACF"}
|
package/dist/checker.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"checker.d.ts","sourceRoot":"","sources":["../src/checker.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAC3C,OAAO,KAAK,EAAQ,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACpE,OAAO,
|
|
1
|
+
{"version":3,"file":"checker.d.ts","sourceRoot":"","sources":["../src/checker.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAC3C,OAAO,KAAK,EAAQ,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACpE,OAAO,EAIL,KAAK,KAAK,EACV,KAAK,iBAAiB,EAIvB,MAAM,sBAAsB,CAAC;AAE9B;;;;;;;;;;;;;GAaG;AAEH,MAAM,WAAW,WAAW;IAC1B,SAAS,EAAE,QAAQ,CAAC,QAAQ,CAAC;IAC7B,kFAAkF;IAClF,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,QAAQ,CAAC,QAAQ,GAAG,SAAS,CAAC;IACxD,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS,CAAC;IACnE;;;;;;;OAOG;IACH,KAAK,CAAC,EAAE,KAAK,CAAC;CACf;AAyCD;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,WAAW,GAAG,iBAAiB,CAsBvE"}
|
package/dist/checker.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { createTupleEvaluator, } from '@substrat-run/kernel';
|
|
1
|
+
import { capabilityByIdQuery, createTupleEvaluator, } from '@substrat-run/kernel';
|
|
2
2
|
const TUPLE_COLUMNS = 'subject, relation, object, expires_at, revoked_at';
|
|
3
3
|
/**
|
|
4
4
|
* The scope-local reads. Each statement is compiled at most once per decision and only if
|
|
@@ -11,6 +11,7 @@ const scopeReader = (db) => {
|
|
|
11
11
|
let tuplesStmt;
|
|
12
12
|
let grantStmt;
|
|
13
13
|
let parentsStmt;
|
|
14
|
+
let capabilityStmt;
|
|
14
15
|
return {
|
|
15
16
|
tuples: (subject, relationPrefix) => (tuplesStmt ??= db.prepare(`SELECT ${TUPLE_COLUMNS} FROM _substrat_tuples
|
|
16
17
|
WHERE subject = ? AND relation LIKE ?`)).all(subject, `${relationPrefix}%`),
|
|
@@ -18,6 +19,9 @@ const scopeReader = (db) => {
|
|
|
18
19
|
WHERE subject = ? AND relation = ? AND object = ?`)).get(subject, relation, object),
|
|
19
20
|
parents: (object) => (parentsStmt ??= db.prepare(`SELECT ${TUPLE_COLUMNS} FROM _substrat_tuples
|
|
20
21
|
WHERE subject = ? AND relation = 'parent'`)).all(object),
|
|
22
|
+
// #1672: a capability subject is resolved against its own directory row, which lives
|
|
23
|
+
// in this scope's spine beside the entities it reaches.
|
|
24
|
+
capability: (id) => (capabilityStmt ??= db.prepare(capabilityByIdQuery(id).sql)).get(...capabilityByIdQuery(id).params),
|
|
21
25
|
};
|
|
22
26
|
};
|
|
23
27
|
/**
|
package/dist/checker.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"checker.js","sourceRoot":"","sources":["../src/checker.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,oBAAoB,
|
|
1
|
+
{"version":3,"file":"checker.js","sourceRoot":"","sources":["../src/checker.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,mBAAmB,EACnB,oBAAoB,GAOrB,MAAM,sBAAsB,CAAC;AAiC9B,MAAM,aAAa,GAAG,mDAAmD,CAAC;AAE1E;;;;;;GAMG;AACH,MAAM,WAAW,GAAG,CAAC,EAAqB,EAAoB,EAAE;IAC9D,IAAI,UAA0C,CAAC;IAC/C,IAAI,SAAyC,CAAC;IAC9C,IAAI,WAA2C,CAAC;IAChD,IAAI,cAA8C,CAAC;IACnD,OAAO;QACL,MAAM,EAAE,CAAC,OAAO,EAAE,cAAc,EAAE,EAAE,CAClC,CAAC,UAAU,KAAK,EAAE,CAAC,OAAO,CACxB,UAAU,aAAa;+CACgB,CACxC,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,cAAc,GAAG,CAAyB;QAC/D,KAAK,EAAE,CAAC,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,CACnC,CAAC,SAAS,KAAK,EAAE,CAAC,OAAO,CACvB,UAAU,aAAa;2DAC4B,CACpD,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,QAAQ,EAAE,MAAM,CAAmC;QACrE,OAAO,EAAE,CAAC,MAAM,EAAE,EAAE,CAClB,CAAC,WAAW,KAAK,EAAE,CAAC,OAAO,CACzB,UAAU,aAAa;mDACoB,CAC5C,CAAC,CAAC,GAAG,CAAC,MAAM,CAAyB;QACxC,qFAAqF;QACrF,wDAAwD;QACxD,UAAU,EAAE,CAAC,EAAE,EAAE,EAAE,CACjB,CAAC,cAAc,KAAK,EAAE,CAAC,OAAO,CAAC,mBAAmB,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAC9D,GAAG,mBAAmB,CAAC,EAAE,CAAC,CAAC,MAAM,CACL;KACjC,CAAC;AACJ,CAAC,CAAC;AAEF;;;;;GAKG;AACH,MAAM,UAAU,kBAAkB,CAAC,IAAiB;IAClD,MAAM,OAAO,GAAiB,IAAI,CAAC,KAAK,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC;IAE7E,MAAM,MAAM,GAA0B;QACpC,GAAG,EAAE,OAAO;QACZ,YAAY,EAAE,CAAC,QAAQ,EAAE,OAAO,EAAE,cAAc,EAAE,EAAE,CAClD,IAAI,CAAC,SAAS;aACX,OAAO,CACN,UAAU,aAAa;mEACkC,CAC1D;aACA,GAAG,CAAC,QAAQ,EAAE,OAAO,EAAE,GAAG,cAAc,GAAG,CAAyB;QACzE,OAAO,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,GAAG,CAAC;QACvD,oFAAoF;QACpF,4EAA4E;QAC5E,QAAQ,EAAE,CAAC,IAAU,EAAE,EAAE;YACvB,MAAM,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YACjE,OAAO,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAC1C,CAAC;KACF,CAAC;IAEF,OAAO,oBAAoB,CAAC,MAAM,CAAC,CAAC;AACtC,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { type BlobStoreHandle, type ConnectionId, type ModuleId, type DomainEvent, type PlatformRequestId, type PlatformRequest, type PlatformRequestFilter, type PlatformRequestStatus, type PlatformRequestFailure, type ProjectedConnectionGrant, type PlatformActorId, type PrincipalId, type ScopeDump, type ScopeId, type ImpersonationSessionId, type TenantId, type TenantStoreHandle } from '@substrat-run/contracts';
|
|
1
|
+
import { type BlobStoreHandle, type CapabilityExchange, type ConnectionId, type ModuleId, type DomainEvent, type PlatformRequestId, type PlatformRequest, type PlatformRequestFilter, type PlatformRequestStatus, type PlatformRequestFailure, type ProjectedConnectionGrant, type PlatformActorId, type PrincipalId, type ScopeDump, type ScopeId, type ImpersonationSessionId, type TenantId, type TenantStoreHandle } from '@substrat-run/contracts';
|
|
2
2
|
import { type FreshnessReport, type FreshnessRegistration, type BlobStoreProvisionInput, type ScopeAttachments, type ExecutorDeadLetter, type ExecutorDrainReport, type MigrateScopeOutcome, type MigrationFrontier, type ExecutorHandler, type ExecutorRetryPolicy, type ConnectorHandler, type ConnectorOptions, type Clock, type FetchLike, type SecretBox, type HostAdmin, type ModuleRegistration, type OperationHandler, type PermissionChecker, type ProvisionScopeInput, type ScheduleRegistration, type ScheduleRunReport, type ScopeHost, type ScopeStub, type ScopeStubOptions, type TenantRelationalStore, type TenantStoreProvisionInput, type JobDriveReport, type JobHandler, type JobRun, type JobRunFilter, type StartJobRunInput } from '@substrat-run/kernel';
|
|
3
3
|
export interface SqliteScopeHostOptions {
|
|
4
4
|
/** Directory holding one SQLite file per scope plus the directory database. */
|
|
@@ -80,6 +80,8 @@ export declare class SqliteScopeHost implements ScopeHost {
|
|
|
80
80
|
private readonly directory;
|
|
81
81
|
private readonly scopes;
|
|
82
82
|
private readonly scopesById;
|
|
83
|
+
/** The runtimes holding an open `reader` (#1624), least recently read first — `READER_CAP`'s LRU. */
|
|
84
|
+
private readonly readers;
|
|
83
85
|
/** Per-tenant relational stores (#301), opened lazily and cached by `ref` (the bare
|
|
84
86
|
* `.sqlite` filename). The pure-adapter analogue of a per-tenant D1 — one file per
|
|
85
87
|
* (tenant, vertical, binding), physically separate from the scope DBs. */
|
|
@@ -249,6 +251,29 @@ export declare class SqliteScopeHost implements ScopeHost {
|
|
|
249
251
|
*/
|
|
250
252
|
getImpersonatedScope(session: ImpersonationSessionId, tenantId: TenantId, scopeId: ScopeId, options?: ScopeStubOptions): Promise<ScopeStub>;
|
|
251
253
|
getSystemScope(moduleId: ModuleId, tenantId: TenantId, scopeId: ScopeId): Promise<ScopeStub>;
|
|
254
|
+
/**
|
|
255
|
+
* The lifecycle gate the capability doors share (#1672): the scope must exist in this
|
|
256
|
+
* tenant, the tenant must be active, the scope must be active — K-3's fail-closed pair
|
|
257
|
+
* check, worded as the principal door words it, so a scope in another tenant reads the
|
|
258
|
+
* same as one that does not exist. Migrations are applied as on every door.
|
|
259
|
+
*/
|
|
260
|
+
private openActiveScope;
|
|
261
|
+
/**
|
|
262
|
+
* The exchange (#1672) — a secret traded for a session, or for the principal a `become`
|
|
263
|
+
* capability yields. One serialized scope task and one transaction, so the use it takes
|
|
264
|
+
* and the `capability.exercised` event recording it commit together or not at all; the
|
|
265
|
+
* event's consumers then dispatch as an invoke's would.
|
|
266
|
+
*/
|
|
267
|
+
exchangeCapability(tenantId: TenantId, scopeId: ScopeId, secret: string, options?: {
|
|
268
|
+
mode?: 'act' | 'become';
|
|
269
|
+
}): Promise<CapabilityExchange | null>;
|
|
270
|
+
/**
|
|
271
|
+
* The capability door (#1672) — mirror of the connection and system doors. The token is
|
|
272
|
+
* shape-checked and hashed HERE, and only its hash travels on: `buildStub` re-resolves it
|
|
273
|
+
* to its capability on every invoke, so a revoke or an expiry refuses the very next call
|
|
274
|
+
* on a stub minted before it.
|
|
275
|
+
*/
|
|
276
|
+
getCapabilityScope(sessionToken: string, tenantId: TenantId, scopeId: ScopeId, options?: ScopeStubOptions): Promise<ScopeStub>;
|
|
252
277
|
registeredSchedules(): ScheduleRegistration[];
|
|
253
278
|
registeredFreshness(): FreshnessRegistration[];
|
|
254
279
|
/**
|
|
@@ -269,7 +294,7 @@ export declare class SqliteScopeHost implements ScopeHost {
|
|
|
269
294
|
*/
|
|
270
295
|
checkFreshness(moduleId: ModuleId, tenantId: TenantId, scopeId: ScopeId): Promise<FreshnessReport>;
|
|
271
296
|
runDueSchedules(moduleId: ModuleId, tenantId: TenantId, scopeId: ScopeId): Promise<ScheduleRunReport>;
|
|
272
|
-
/** The stub body, shared by the principal, connection, system and
|
|
297
|
+
/** The stub body, shared by the principal, connection, system, impersonation and capability doors. */
|
|
273
298
|
private buildStub;
|
|
274
299
|
/**
|
|
275
300
|
* The entity a guarded operation's precondition is about (#129).
|
|
@@ -386,7 +411,6 @@ export declare class SqliteScopeHost implements ScopeHost {
|
|
|
386
411
|
* point, since the denial is exactly the write the rolled-back operation could not make.
|
|
387
412
|
*/
|
|
388
413
|
private recordDenial;
|
|
389
|
-
private parseOutboxRow;
|
|
390
414
|
/**
|
|
391
415
|
* The single audit choke point (control-plane.md §4.4). EVERY control-plane
|
|
392
416
|
* mutation — here and `provisionScope` — routes through this one method, so
|
|
@@ -469,6 +493,22 @@ export declare class SqliteScopeHost implements ScopeHost {
|
|
|
469
493
|
* read `ensureIdentityKey` already uses — PRAGMA would do here, but not there.
|
|
470
494
|
*/
|
|
471
495
|
private ensureScheduleStateKind;
|
|
496
|
+
/**
|
|
497
|
+
* #1573: run a create-copy-drop-rename against the directory as ONE transaction.
|
|
498
|
+
* `exec` of four statements is four autocommits, and the state between DROP and
|
|
499
|
+
* RENAME is the one to fear: the next open runs the bootstrap first, whose `CREATE
|
|
500
|
+
* TABLE IF NOT EXISTS` puts an EMPTY table of the new shape back, detection then
|
|
501
|
+
* reads that shape and concludes the migration is done — and every copied row stays
|
|
502
|
+
* orphaned in the `_new` table, with nothing ever erroring. Atomic, neither
|
|
503
|
+
* intermediate state is reachable, so there is no recovery path to write (or to
|
|
504
|
+
* leave untested).
|
|
505
|
+
*
|
|
506
|
+
* `db.transaction` nests as a SAVEPOINT, as `ensureScheduleStateKind` (#1571) relies
|
|
507
|
+
* on. Each script leads with `DROP TABLE IF EXISTS <table>_new` to absorb a scratch
|
|
508
|
+
* table arriving from BELOW the transaction (a torn copy of the file, a backup that
|
|
509
|
+
* captured one mid-rebuild) — belt, not the fix.
|
|
510
|
+
*/
|
|
511
|
+
private rebuildAtomically;
|
|
472
512
|
/**
|
|
473
513
|
* Rebuild `_substrat_identities` when it still carries the pre-K-22 global key.
|
|
474
514
|
* A PRIMARY KEY cannot be ALTERed, so this is create-copy-drop-rename.
|
|
@@ -492,6 +532,20 @@ export declare class SqliteScopeHost implements ScopeHost {
|
|
|
492
532
|
* widens what a future row may say.
|
|
493
533
|
*/
|
|
494
534
|
private ensureAdminLogTenantNullable;
|
|
535
|
+
/**
|
|
536
|
+
* #1572: `_substrat_sweep_runs_intent` with `kind` in it, on a directory whose index
|
|
537
|
+
* predates that. `CREATE UNIQUE INDEX IF NOT EXISTS` matches on the name alone, so the
|
|
538
|
+
* bootstrap cannot do this: on an existing directory it sees the old index and skips,
|
|
539
|
+
* and the schedule/freshness collision the new key refuses stays live for good.
|
|
540
|
+
*
|
|
541
|
+
* Detected from `sqlite_master.sql`, like the table rebuilds above, and replaced as
|
|
542
|
+
* DROP-then-CREATE in one transaction (`rebuildAtomically`). Less rides on that than on
|
|
543
|
+
* a table rebuild — the index holds no rows, and one dropped but not re-created comes
|
|
544
|
+
* back on the next open, because the bootstrap creates it by name — but there is then
|
|
545
|
+
* no committed directory with no dedupe key at all. The CREATE cannot meet a row it
|
|
546
|
+
* refuses: every set of rows unique on (request_id, unit) is unique on the wider key.
|
|
547
|
+
*/
|
|
548
|
+
private ensureSweepRunsIntentKind;
|
|
495
549
|
private ensureDirectoryColumns;
|
|
496
550
|
private loadRoles;
|
|
497
551
|
/**
|
|
@@ -533,7 +587,50 @@ export declare class SqliteScopeHost implements ScopeHost {
|
|
|
533
587
|
* state.
|
|
534
588
|
*/
|
|
535
589
|
private assertScopeReachable;
|
|
590
|
+
/**
|
|
591
|
+
* The intent-journal half of `shredSubject` (#1600) — the DO's `redactSubject` twin.
|
|
592
|
+
*
|
|
593
|
+
* Row-by-row rather than one `UPDATE … WHERE`: the decision is structural (does this
|
|
594
|
+
* payload embed an event the erasure redacts?) and SQL cannot make it, because an
|
|
595
|
+
* intent payload is opaque JSON with no `pii_class` column to test. The SQL narrows to
|
|
596
|
+
* the rows that could possibly match; the kernel predicate decides; the kernel's
|
|
597
|
+
* statement writes. All three are shared with the Durable-Object adapter so the two
|
|
598
|
+
* cannot drift about what a redacted intent is.
|
|
599
|
+
*
|
|
600
|
+
* Returns how many rows it redacted — zero on a re-run, the tombstones having already
|
|
601
|
+
* stopped matching.
|
|
602
|
+
*/
|
|
603
|
+
private redactSubjectIntents;
|
|
536
604
|
private scopeDbFor;
|
|
605
|
+
/**
|
|
606
|
+
* The connection a `HostAdmin` READ runs on (#1624) — `scopeDbFor`'s twin, with the
|
|
607
|
+
* same K-3 and reap gate in front of it.
|
|
608
|
+
*
|
|
609
|
+
* From OUTSIDE the scope's actor it is the scope's read-only connection. `invoke` holds
|
|
610
|
+
* a `BEGIN IMMEDIATE` open on the shared connection across its awaits, so a read there
|
|
611
|
+
* saw a stranger's uncommitted rows: a lake drain shipped an event that then rolled
|
|
612
|
+
* back — permanently, since the lake is append-only — and an export captured one into a
|
|
613
|
+
* backup. The file is WAL, so the reader sees exactly what was committed.
|
|
614
|
+
*
|
|
615
|
+
* From INSIDE one of the scope's actor tasks (an executor handed `HostAdmin`, reading
|
|
616
|
+
* its own scope) it is the shared connection, as before. The only transaction open
|
|
617
|
+
* there is the caller's own unit — the actor serializes everything else — so reading
|
|
618
|
+
* it is reading your own writes, which is the answer the caller is owed and the one it
|
|
619
|
+
* had. `ScopeActor.turn` makes the same call for the writers (#1678).
|
|
620
|
+
*/
|
|
621
|
+
private scopeReadDbFor;
|
|
622
|
+
/**
|
|
623
|
+
* `scopeReadDbFor` without the directory gate, for the host-side reads that already
|
|
624
|
+
* resolved their runtime — the platform-intent drain's `listPlatformRequests` among them,
|
|
625
|
+
* where a stranger's uncommitted intent was a platform effect about to be carried out for
|
|
626
|
+
* an operation that then rolled back.
|
|
627
|
+
*/
|
|
628
|
+
private readDb;
|
|
629
|
+
/**
|
|
630
|
+
* Close a scope's connections and forget its runtime — the reader with the writer, so
|
|
631
|
+
* neither outlives the file a reap or a snapshot delete is about to remove.
|
|
632
|
+
*/
|
|
633
|
+
private closeRuntime;
|
|
537
634
|
/**
|
|
538
635
|
* The additive spine-column migrations, shared by `runtime()` and the dump replay.
|
|
539
636
|
* KERNEL_DDL is all IF NOT EXISTS, so a scope DB created before a column keeps the
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAcL,KAAK,eAAe,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAcL,KAAK,eAAe,EAuDpB,KAAK,kBAAkB,EAMvB,KAAK,YAAY,EAGjB,KAAK,QAAQ,EAab,KAAK,WAAW,EAIhB,KAAK,iBAAiB,EACtB,KAAK,eAAe,EACpB,KAAK,qBAAqB,EAC1B,KAAK,qBAAqB,EAC1B,KAAK,sBAAsB,EAI3B,KAAK,wBAAwB,EAY7B,KAAK,eAAe,EACpB,KAAK,WAAW,EAehB,KAAK,SAAS,EAEd,KAAK,OAAO,EAYZ,KAAK,sBAAsB,EAG3B,KAAK,QAAQ,EAGb,KAAK,iBAAiB,EAavB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EA8BL,KAAK,eAAe,EACpB,KAAK,qBAAqB,EAc1B,KAAK,uBAAuB,EAG5B,KAAK,gBAAgB,EAGrB,KAAK,kBAAkB,EACvB,KAAK,mBAAmB,EACxB,KAAK,mBAAmB,EACxB,KAAK,iBAAiB,EACtB,KAAK,eAAe,EACpB,KAAK,mBAAmB,EAkDxB,KAAK,gBAAgB,EACrB,KAAK,gBAAgB,EACrB,KAAK,KAAK,EACV,KAAK,SAAS,EACd,KAAK,SAAS,EAEd,KAAK,SAAS,EACd,KAAK,kBAAkB,EAEvB,KAAK,gBAAgB,EAErB,KAAK,iBAAiB,EACtB,KAAK,mBAAmB,EAExB,KAAK,oBAAoB,EACzB,KAAK,iBAAiB,EAGtB,KAAK,SAAS,EACd,KAAK,SAAS,EACd,KAAK,gBAAgB,EAGrB,KAAK,qBAAqB,EAC1B,KAAK,yBAAyB,EAkC9B,KAAK,cAAc,EACnB,KAAK,UAAU,EACf,KAAK,MAAM,EACX,KAAK,YAAY,EAMjB,KAAK,gBAAgB,EA0BtB,MAAM,sBAAsB,CAAC;AAsG9B,MAAM,WAAW,sBAAsB;IACrC,+EAA+E;IAC/E,GAAG,EAAE,MAAM,CAAC;IACZ,gFAAgF;IAChF,OAAO,CAAC,EAAE,iBAAiB,CAAC;IAC5B;;;;OAIG;IACH,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB;;;;;;;OAOG;IACH,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB;;;;;;;;;;;;;;OAcG;IACH,KAAK,CAAC,EAAE,KAAK,CAAC;IACd;;;;;;;;OAQG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAwrBD,qBAAa,eAAgB,YAAW,SAAS;IAC/C,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC;IAC1B;;;;;;;;;;;;;;;;;;;;;;;;OAwBG;IACH,QAAQ,CAAC,SAAS,CAAC,EAAE,KAAK,CAAC;IAC3B,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAS;IAC7B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAoB;IAC5C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAoB;IAC9C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAmC;IAC1D,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAmC;IAC9D,qGAAqG;IACrG,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAmC;IAC3D;;+EAE2E;IAC3E,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAwC;IACvE,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAuD;IAClF,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAuC;IAC/D,gFAAgF;IAChF,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAsC;IAC7D,gFAAgF;IAChF,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAkE;IAC7F,2EAA2E;IAC3E,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA6B;IACvD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAkC;IAC5D,8EAA8E;IAC9E,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAsC;IAClE,4FAA4F;IAC5F,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAoC;IAC9D,8FAA8F;IAC9F,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAoE;IACtG,uEAAuE;IACvE,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAA6B;IAClE;;;;;OAKG;IACH,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAyD;IACxF;;;;OAIG;IACH,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAyD;IAC9F;;;;;OAKG;IACH,OAAO,CAAC,QAAQ,CAAC,0BAA0B,CAAqB;IAChE,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAqC;IAC3D,kFAAkF;IAClF,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAyC;IACnE;;;;;OAKG;IACH,OAAO,CAAC,QAAQ,CAAC,IAAI,CAA2E;IAChG;;;;;OAKG;IACH,OAAO,CAAC,QAAQ,CAAuB;IACvC,OAAO,CAAC,QAAQ,CAAC,eAAe,CAA0C;IAC1E,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAY;IACtC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAY;IACtC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAQ;IAC9B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAgB;IAO1C,YAAY,OAAO,EAAE,sBAAsB,EAuB1C;IAED;;;;;;;;;;;;;;;;;;;;;;;OAuBG;IACH,OAAO,CAAC,oBAAoB;IAuiB5B,gBAAgB,CACd,EAAE,EAAE,MAAM,EACV,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,eAAe,EACxB,KAAK,CAAC,EAAE,mBAAmB,GAC1B,IAAI,CAQN;IAED,iBAAiB,CACf,EAAE,EAAE,MAAM,EACV,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,gBAAgB,EACzB,OAAO,CAAC,EAAE,gBAAgB,GACzB,IAAI,CASN;IAED;;;;;;;;;;;;OAYG;IACH,OAAO,CAAC,gBAAgB;IAkGxB,cAAc,CAAC,YAAY,EAAE,kBAAkB,GAAG,IAAI,CA6LrD;IAED,eAAe,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,gBAAgB,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAIzE;IAEK,cAAc,CAAC,KAAK,EAAE,eAAe,EAAE,KAAK,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC,CA6GtF;IAEK,oBAAoB,CACxB,KAAK,EAAE,eAAe,EACtB,KAAK,EAAE,yBAAyB,GAC/B,OAAO,CAAC,iBAAiB,CAAC,CAwD5B;IAED,eAAe,CAAC,MAAM,EAAE,iBAAiB,GAAG,qBAAqB,CAoBhE;IAED,sFAAsF;IACtF,OAAO,CAAC,aAAa;IAUf,kBAAkB,CACtB,KAAK,EAAE,eAAe,EACtB,KAAK,EAAE,uBAAuB,GAC7B,OAAO,CAAC,eAAe,CAAC,CA0C1B;IAED;;mFAE+E;IAC/E,OAAO,CAAC,SAAS;IAoDjB;;;wEAGoE;IACpE,OAAO,CAAC,eAAe;IAuBjB,WAAW,CACf,SAAS,EAAE,WAAW,EACtB,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,OAAO,GACf,OAAO,CAAC,gBAAgB,CAAC,CAU3B;IAED;;;;;;OAMG;IACH,OAAO,CAAC,gBAAgB;IA2NlB,WAAW,CACf,KAAK,EAAE,eAAe,EACtB,KAAK,EAAE,mBAAmB,EAC1B,IAAI,EAAE,SAAS,GACd,OAAO,CAAC,IAAI,CAAC,CAoBf;IAED,oFAAoF;YACtE,QAAQ;IAwGhB,YAAY,CAChB,KAAK,EAAE,eAAe,EACtB,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,OAAO,EAChB,IAAI,EAAE,SAAS,GACd,OAAO,CAAC,IAAI,CAAC,CAYf;IAEK,aAAa,CACjB,KAAK,EAAE,eAAe,EACtB,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,OAAO,EAChB,IAAI,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,GAC3C,OAAO,CAAC,OAAO,CAAC,CAwBlB;IAEK,cAAc,CAAC,KAAK,EAAE,eAAe,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CA4BhG;IAEK,QAAQ,CACZ,SAAS,EAAE,WAAW,EACtB,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,OAAO,EAChB,OAAO,CAAC,EAAE,gBAAgB,GACzB,OAAO,CAAC,SAAS,CAAC,CA2CpB;IAED;;;;;;;;;;;;;OAaG;IACG,iBAAiB,CAAC,YAAY,EAAE,YAAY,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,SAAS,CAAC,CA4BxF;IAEK,uBAAuB,CAC3B,YAAY,EAAE,YAAY,EAC1B,OAAO,EAAE,OAAO,GACf,OAAO,CAAC,gBAAgB,CAAC,CA2B3B;IAED,mFAAmF;IACnF,OAAO,CAAC,iBAAiB;IAOzB;;;;;;;OAOG;IACG,oBAAoB,CACxB,OAAO,EAAE,sBAAsB,EAC/B,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,OAAO,EAChB,OAAO,CAAC,EAAE,gBAAgB,GACzB,OAAO,CAAC,SAAS,CAAC,CAiBpB;IAEK,cAAc,CAClB,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,OAAO,GACf,OAAO,CAAC,SAAS,CAAC,CAoBpB;IAED;;;;;OAKG;YACW,eAAe;IAqB7B;;;;;OAKG;IACG,kBAAkB,CACtB,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,OAAO,EAChB,MAAM,EAAE,MAAM,EACd,OAAO,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,KAAK,GAAG,QAAQ,CAAA;KAAE,GACpC,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC,CA0CpC;IAED;;;;;OAKG;IACG,kBAAkB,CACtB,YAAY,EAAE,MAAM,EACpB,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,OAAO,EAChB,OAAO,CAAC,EAAE,gBAAgB,GACzB,OAAO,CAAC,SAAS,CAAC,CAOpB;IAED,mBAAmB,IAAI,oBAAoB,EAAE,CAQ5C;IAED,mBAAmB,IAAI,qBAAqB,EAAE,CAQ7C;IAED;;;;;;;;;;;;;;;OAeG;IACG,cAAc,CAClB,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,OAAO,GACf,OAAO,CAAC,eAAe,CAAC,CA8E1B;IAGK,eAAe,CACnB,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,OAAO,GACf,OAAO,CAAC,iBAAiB,CAAC,CAyG5B;IAED,sGAAsG;IACtG,OAAO,CAAC,SAAS;IAyRjB;;;;;;;;;OASG;IACH,OAAO,CAAC,cAAc;IAgBtB,qFAAqF;IACrF,OAAO,CAAC,SAAS;YAKH,SAAS;IAqBjB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAG3B;IAOD;;;;;;;;;;;;;;;;;;;;OAoBG;YACW,iBAAiB;IAgF/B;;;;;;;OAOG;IACH,OAAO,CAAC,sBAAsB;IAmDxB,QAAQ,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAOjF;IAED,WAAW,CACT,QAAQ,EAAE,QAAQ,EAClB,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,UAAU,EACnB,KAAK,CAAC,EAAE,mBAAmB,GAC1B,IAAI,CAIN;IAED;;;;;;;;;;;;;;;;;;;;OAoBG;IACH,OAAO,CAAC,QAAQ;IA+GV,WAAW,CACf,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,gBAAgB,GACtB,OAAO,CAAC,MAAM,CAAC,CAIjB;IAEK,UAAU,CACd,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,OAAO,EAChB,OAAO,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,GAC/C,OAAO,CAAC,cAAc,CAAC,CAWzB;IAEK,OAAO,CACX,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,OAAO,EAChB,MAAM,CAAC,EAAE,YAAY,GACpB,OAAO,CAAC,MAAM,EAAE,CAAC,CAInB;IAEK,iBAAiB,CACrB,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,gBAAgB,EACzB,KAAK,EAAE,WAAW,EAClB,OAAO,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,GAC/B,OAAO,CAAC,IAAI,CAAC,CAgBf;IAED;;;;;;;OAOG;IACG,uBAAuB,CAC3B,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,OAAO,GACf,OAAO,CAAC,wBAAwB,EAAE,CAAC,CAgCrC;IAED,iBAAiB,IAAI,iBAAiB,CAIrC;IAED;;;;;;;;OAQG;IACG,YAAY,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,mBAAmB,CAAC,CA6CrF;IAEK,mBAAmB,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,kBAAkB,EAAE,CAAC,CA6B7F;IAEK,oBAAoB,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC,CAW3F;IAEK,0BAA0B,CAC9B,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,OAAO,EAChB,MAAM,CAAC,EAAE,qBAAqB,GAC7B,OAAO,CAAC,eAAe,EAAE,CAAC,CAO5B;IAEK,qBAAqB,CACzB,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,OAAO,EAChB,EAAE,EAAE,iBAAiB,EACrB,OAAO,EAAE;QACP,MAAM,EAAE,qBAAqB,CAAC;QAC9B,MAAM,CAAC,EAAE,OAAO,CAAC;QACjB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAC1B,OAAO,CAAC,EAAE,sBAAsB,GAAG,IAAI,CAAC;KACzC,GACA,OAAO,CAAC,IAAI,CAAC,CA4Bf;YAEa,QAAQ;IAyFtB;;;;OAIG;IACH,OAAO,CAAC,YAAY;IAmDpB;;;;;;OAMG;IACH;;;;;;OAMG;IACH,mFAAmF;IACnF,OAAO,CAAC,gBAAgB;IA4CxB,OAAO,CAAC,YAAY;IA0BpB;;;;;OAKG;IACH,OAAO,CAAC,WAAW;IASnB;;;;OAIG;IACH,OAAO,CAAC,cAAc;IAiDtB;;;;;;;;;OASG;YACW,gBAAgB;IA0D9B;;;;;;;;;OASG;YACW,eAAe;IAiB7B,gFAAgF;IAChF,OAAO,CAAC,aAAa;IAQrB,OAAO,CAAC,WAAW;IA2BnB,OAAO,CAAC,sBAAsB;IAe9B,4FAA4F;IAC5F,OAAO,CAAC,gBAAgB;IAYxB,OAAO,CAAC,UAAU;IAoqHlB;;;;;;;;;OASG;IACH;;;;OAIG;IACH,OAAO,CAAC,YAAY;IAOpB;;;;;OAKG;IACH,OAAO,CAAC,uBAAuB;IAc/B;;;;;;;;;;;;;;OAcG;IACH,OAAO,CAAC,iBAAiB;IAIzB;;;;;;;;;;;;;OAaG;IACH,OAAO,CAAC,iBAAiB;IA0BzB;;;;;;OAMG;IACH,OAAO,CAAC,4BAA4B;IA2BpC;;;;;;;;;;;;OAYG;IACH,OAAO,CAAC,yBAAyB;IAWjC,OAAO,CAAC,sBAAsB;IA+H9B,OAAO,CAAC,SAAS;IAejB;;;;OAIG;IACH,OAAO,CAAC,gBAAgB;YAoeV,sBAAsB;IAqDpC;;;;;;;;;OASG;IACH,OAAO,CAAC,oBAAoB;IAyB5B;;;;;OAKG;IACH;;;;;;;;;;;;;OAaG;IACH,OAAO,CAAC,oBAAoB;IAU5B;;;;;;;;;;;;OAYG;IACH,OAAO,CAAC,oBAAoB;IAa5B,OAAO,CAAC,UAAU;IAKlB;;;;;;;;;;;;;;;OAeG;IACH,OAAO,CAAC,cAAc;IAKtB;;;;;OAKG;IACH,OAAO,CAAC,MAAM;IAuBd;;;OAGG;IACH,OAAO,CAAC,YAAY;IAUpB;;;;;;;OAOG;IACH,OAAO,CAAC,kBAAkB;IAiE1B,OAAO,CAAC,OAAO;CA6ChB"}
|