@substrat-run/adapter-sqlite 0.2.0 → 0.3.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/README.md CHANGED
@@ -8,6 +8,8 @@ database for fail-closed scope addressing, and a kernel-stamped event outbox. It
8
8
  a mock: it is the adapter that local development and CI run on, and the reason the
9
9
  self-host/escrow story is literally true (single-node, but runnable).
10
10
 
11
+ **Full documentation: https://substrat.ahlstrand.es/reference/adapter-sqlite**
12
+
11
13
  ## Usage
12
14
 
13
15
  ```ts
package/dist/index.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { type PrincipalId, type ScopeId, type TenantId } from '@substrat-run/contracts';
1
+ import { type PlatformActorId, type PrincipalId, type ScopeId, type TenantId } from '@substrat-run/contracts';
2
2
  import { type HostAdmin, type ModuleRegistration, type OperationHandler, type PermissionChecker, type ProvisionScopeInput, type ScopeHost, type ScopeStub } from '@substrat-run/kernel';
3
3
  export interface SqliteScopeHostOptions {
4
4
  /** Directory holding one SQLite file per scope plus the directory database. */
@@ -22,17 +22,28 @@ export declare class SqliteScopeHost implements ScopeHost {
22
22
  /** operation names whose default binding some manifest withdrew (K-17). */
23
23
  private readonly withdrawn;
24
24
  private readonly relations;
25
+ /** operation name → its owning module's entitlementKey (§4.3 gate). */
26
+ private readonly operationEntitlement;
25
27
  private readonly roles;
26
28
  private readonly systemPrincipal;
27
29
  constructor(options: SqliteScopeHostOptions);
28
30
  registerModule(registration: ModuleRegistration): void;
29
31
  defineOperation<I, O>(name: string, handler: OperationHandler<I, O>): void;
30
- provisionScope(input: ProvisionScopeInput): Promise<void>;
32
+ provisionScope(actor: PlatformActorId, input: ProvisionScopeInput): Promise<void>;
31
33
  getScope(principal: PrincipalId, tenantId: TenantId, scopeId: ScopeId): Promise<ScopeStub>;
32
34
  private runGuards;
33
35
  close(): Promise<void>;
34
36
  private dispatch;
35
37
  private parseOutboxRow;
38
+ /**
39
+ * The single audit choke point (control-plane.md §4.4). EVERY control-plane
40
+ * mutation — here and `provisionScope` — routes through this one method, so
41
+ * "no mutation without a durable record" holds by construction rather than by
42
+ * remembering a call per method. `before` is captured only where cheaply
43
+ * readable; idempotent upserts with no cheap prior state pass `before: null`.
44
+ */
45
+ private recordAdmin;
46
+ private tenantHoldsEntitlement;
36
47
  private buildAdmin;
37
48
  private loadRoles;
38
49
  private operationContext;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAeL,KAAK,WAAW,EAGhB,KAAK,OAAO,EACZ,KAAK,QAAQ,EACd,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAIL,KAAK,SAAS,EACd,KAAK,kBAAkB,EAEvB,KAAK,gBAAgB,EACrB,KAAK,iBAAiB,EACtB,KAAK,mBAAmB,EAExB,KAAK,SAAS,EACd,KAAK,SAAS,EAGf,MAAM,sBAAsB,CAAC;AAyB9B,MAAM,WAAW,sBAAsB;IACrC,+EAA+E;IAC/E,GAAG,EAAE,MAAM,CAAC;IACZ,gFAAgF;IAChF,OAAO,CAAC,EAAE,iBAAiB,CAAC;CAC7B;AAuDD,qBAAa,eAAgB,YAAW,SAAS;IAC/C,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC;IAC1B,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,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,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAqC;IAC3D,OAAO,CAAC,QAAQ,CAAC,eAAe,CAA0C;gBAE9D,OAAO,EAAE,sBAAsB;IA0C3C,cAAc,CAAC,YAAY,EAAE,kBAAkB,GAAG,IAAI;IAgFtD,eAAe,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,gBAAgB,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI;IAMpE,cAAc,CAAC,KAAK,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC;IAiBzD,QAAQ,CACZ,SAAS,EAAE,WAAW,EACtB,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,OAAO,GACf,OAAO,CAAC,SAAS,CAAC;YAkDP,SAAS;IAqBjB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;YAYd,QAAQ;IAkDtB,OAAO,CAAC,cAAc;IAoBtB,OAAO,CAAC,UAAU;IA4GlB,OAAO,CAAC,SAAS;IAejB,OAAO,CAAC,gBAAgB;IA6ExB,OAAO,CAAC,sBAAsB;IAuC9B,OAAO,CAAC,OAAO;CAoBhB"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAwBL,KAAK,eAAe,EACpB,KAAK,WAAW,EAIhB,KAAK,OAAO,EAGZ,KAAK,QAAQ,EAEd,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAIL,KAAK,SAAS,EACd,KAAK,kBAAkB,EAEvB,KAAK,gBAAgB,EACrB,KAAK,iBAAiB,EACtB,KAAK,mBAAmB,EAExB,KAAK,SAAS,EACd,KAAK,SAAS,EAGf,MAAM,sBAAsB,CAAC;AAyB9B,MAAM,WAAW,sBAAsB;IACrC,+EAA+E;IAC/E,GAAG,EAAE,MAAM,CAAC;IACZ,gFAAgF;IAChF,OAAO,CAAC,EAAE,iBAAiB,CAAC;CAC7B;AA2ED,qBAAa,eAAgB,YAAW,SAAS;IAC/C,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC;IAC1B,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,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,uEAAuE;IACvE,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAA6B;IAClE,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAqC;IAC3D,OAAO,CAAC,QAAQ,CAAC,eAAe,CAA0C;gBAE9D,OAAO,EAAE,sBAAsB;IAsF3C,cAAc,CAAC,YAAY,EAAE,kBAAkB,GAAG,IAAI;IAmFtD,eAAe,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,gBAAgB,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI;IAMpE,cAAc,CAAC,KAAK,EAAE,eAAe,EAAE,KAAK,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC;IAyCjF,QAAQ,CACZ,SAAS,EAAE,WAAW,EACtB,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,OAAO,GACf,OAAO,CAAC,SAAS,CAAC;YAgFP,SAAS;IAqBjB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;YAYd,QAAQ;IAkDtB,OAAO,CAAC,cAAc;IAoBtB;;;;;;OAMG;IACH,OAAO,CAAC,WAAW;IA0BnB,OAAO,CAAC,sBAAsB;IAQ9B,OAAO,CAAC,UAAU;IAsTlB,OAAO,CAAC,SAAS;IAejB,OAAO,CAAC,gBAAgB;IA6ExB,OAAO,CAAC,sBAAsB;IAuC9B,OAAO,CAAC,OAAO;CAoBhB"}
package/dist/index.js CHANGED
@@ -1,7 +1,7 @@
1
1
  import { mkdirSync } from 'node:fs';
2
2
  import { join } from 'node:path';
3
3
  import Database from 'better-sqlite3';
4
- import { domainEvent, domainEventInput, eventId, instant, moduleManifest, objectRef, principalId, roleDefinition, } from '@substrat-run/contracts';
4
+ import { adminLogEntry, createTenantInput, domainEvent, domainEventInput, eventId, identityLink, instant, moduleManifest, objectRef, principalId, resolvedIdentity, roleDefinition, tenant as tenantSchema, } from '@substrat-run/contracts';
5
5
  import { ulid, } from '@substrat-run/kernel';
6
6
  import { ScopeActor } from './actor.js';
7
7
  import { createTupleChecker } from './checker.js';
@@ -58,6 +58,8 @@ export class SqliteScopeHost {
58
58
  /** operation names whose default binding some manifest withdrew (K-17). */
59
59
  withdrawn = new Map(); // operation → withdrawing module
60
60
  relations = new Map();
61
+ /** operation name → its owning module's entitlementKey (§4.3 gate). */
62
+ operationEntitlement = new Map();
61
63
  roles = new Map(); // 'tenantId/roleKey'
62
64
  systemPrincipal = principalId.parse(ulid());
63
65
  constructor(options) {
@@ -66,6 +68,15 @@ export class SqliteScopeHost {
66
68
  this.directory = new Database(join(this.dir, '_directory.sqlite'));
67
69
  this.directory.pragma('journal_mode = WAL');
68
70
  this.directory.exec(`
71
+ -- The tenant registry (control-plane.md §4.1). Before this a tenant was an
72
+ -- FK string on scope rows; now it is a real record with a lifecycle status.
73
+ CREATE TABLE IF NOT EXISTS tenants (
74
+ tenant_id TEXT PRIMARY KEY,
75
+ slug TEXT NOT NULL,
76
+ name TEXT NOT NULL,
77
+ status TEXT NOT NULL DEFAULT 'active',
78
+ created_at TEXT NOT NULL
79
+ );
69
80
  CREATE TABLE IF NOT EXISTS scopes (
70
81
  scope_id TEXT PRIMARY KEY,
71
82
  tenant_id TEXT NOT NULL,
@@ -90,6 +101,41 @@ export class SqliteScopeHost {
90
101
  source TEXT NOT NULL,
91
102
  PRIMARY KEY (tenant_id, role_key)
92
103
  );
104
+ -- Per-tenant SKU flags (control-plane.md §4.3). A module loads for a tenant
105
+ -- only if the tenant holds its manifest.entitlementKey — default-deny.
106
+ CREATE TABLE IF NOT EXISTS _substrat_entitlements (
107
+ tenant_id TEXT NOT NULL,
108
+ entitlement_key TEXT NOT NULL,
109
+ PRIMARY KEY (tenant_id, entitlement_key)
110
+ );
111
+ -- The identity seam (D-16; control-plane.md §6). An external identity
112
+ -- (provider + external_id — an auth adapter at the edge) maps to a
113
+ -- principal + home node. Provider-keyed so Better Auth, an OIDC issuer, or
114
+ -- several at once coexist. Authentication input only — authorization stays
115
+ -- in the tuples above.
116
+ CREATE TABLE IF NOT EXISTS _substrat_identities (
117
+ provider TEXT NOT NULL,
118
+ external_id TEXT NOT NULL,
119
+ principal_id TEXT NOT NULL,
120
+ tenant_id TEXT NOT NULL,
121
+ scope_id TEXT,
122
+ created_at TEXT NOT NULL,
123
+ PRIMARY KEY (provider, external_id)
124
+ );
125
+ -- Append-only control-plane audit trail (control-plane.md §4.4). Lives in
126
+ -- the directory, not a scope DB: it records cross-tenant staff actions and
127
+ -- is stamped host-side. Never UPDATEd, never DELETEd.
128
+ CREATE TABLE IF NOT EXISTS _substrat_admin_log (
129
+ id TEXT PRIMARY KEY,
130
+ actor TEXT NOT NULL,
131
+ action TEXT NOT NULL,
132
+ tenant_id TEXT NOT NULL,
133
+ scope_id TEXT,
134
+ vertical TEXT,
135
+ before TEXT,
136
+ after TEXT,
137
+ at TEXT NOT NULL
138
+ );
93
139
  `);
94
140
  this.loadRoles();
95
141
  this.checker =
@@ -170,6 +216,9 @@ export class SqliteScopeHost {
170
216
  }
171
217
  for (const [name, handler] of Object.entries(registration.operations ?? {})) {
172
218
  this.defineOperation(name, handler);
219
+ // Record which SKU flag gates this operation (§4.3). Bare defineOperation
220
+ // bindings (tests, glue) carry no manifest and stay ungated.
221
+ this.operationEntitlement.set(name, manifest.entitlementKey);
173
222
  }
174
223
  }
175
224
  defineOperation(name, handler) {
@@ -179,21 +228,54 @@ export class SqliteScopeHost {
179
228
  throw new Error(`operation already defined: ${name}`);
180
229
  this.operations.set(name, handler);
181
230
  }
182
- async provisionScope(input) {
183
- this.directory
184
- .prepare(`INSERT OR IGNORE INTO scopes (scope_id, tenant_id, storage_shape, jurisdiction, created_at)
185
- VALUES (?, ?, ?, ?, ?)`)
231
+ async provisionScope(actor, input) {
232
+ // Mandatory active tenant (control-plane.md §4.1/§4.2): a scope with no
233
+ // tenant record is the "tenant is an FK string" hole the registry closes —
234
+ // fail closed, never silently create the scope orphaned.
235
+ const tenantRow = this.directory
236
+ .prepare('SELECT status FROM tenants WHERE tenant_id = ?')
237
+ .get(input.tenantId);
238
+ if (!tenantRow) {
239
+ throw new Error(`cannot provision scope under unknown tenant: ${input.tenantId}`);
240
+ }
241
+ if (tenantRow.status !== 'active') {
242
+ throw new Error(`cannot provision scope under non-active tenant (status: ${tenantRow.status}): ${input.tenantId}`);
243
+ }
244
+ const info = this.directory
245
+ .prepare(`INSERT OR IGNORE INTO scopes (scope_id, tenant_id, storage_shape, jurisdiction, status, created_at)
246
+ VALUES (?, ?, ?, ?, 'active', ?)`)
186
247
  .run(input.scopeId, input.tenantId, input.storageShape ?? 'A', input.jurisdiction ?? null, new Date().toISOString());
187
248
  const rt = this.runtime(input.tenantId, input.scopeId);
188
249
  await this.applyPendingMigrations(rt);
250
+ // Audit a real provision only; an idempotent re-provision changed nothing.
251
+ if (info.changes > 0) {
252
+ this.recordAdmin(actor, 'provisionScope', { tenantId: input.tenantId, scopeId: input.scopeId }, null, { storageShape: input.storageShape ?? 'A', jurisdiction: input.jurisdiction ?? null });
253
+ }
189
254
  }
190
255
  async getScope(principal, tenantId, scopeId) {
191
256
  const row = this.directory
192
- .prepare('SELECT tenant_id FROM scopes WHERE scope_id = ?')
257
+ .prepare('SELECT tenant_id, status FROM scopes WHERE scope_id = ?')
193
258
  .get(scopeId);
194
259
  if (!row || row.tenant_id !== tenantId) {
195
260
  throw new Error(`unknown scope for tenant: (${tenantId}, ${scopeId})`);
196
261
  }
262
+ // Lifecycle gates (control-plane.md §4.1/§4.2), all the K-3 fail-closed path.
263
+ // The tenant record is mandatory: every scope has a tenant with a status
264
+ // (provisioning enforces it), so a missing one is corruption, not a legacy
265
+ // scope. A non-active tenant fails every scope under it; a non-active scope
266
+ // fails on its own — this is what makes suspend/archive actually contain.
267
+ const tenantRow = this.directory
268
+ .prepare('SELECT status FROM tenants WHERE tenant_id = ?')
269
+ .get(tenantId);
270
+ if (!tenantRow) {
271
+ throw new Error(`scope has no tenant record: (${tenantId}, ${scopeId})`);
272
+ }
273
+ if (tenantRow.status !== 'active') {
274
+ throw new Error(`tenant not active (status: ${tenantRow.status}): ${tenantId}`);
275
+ }
276
+ if (row.status !== 'active') {
277
+ throw new Error(`scope not active (status: ${row.status}): ${scopeId}`);
278
+ }
197
279
  const rt = this.runtime(tenantId, scopeId);
198
280
  await this.applyPendingMigrations(rt);
199
281
  const ctx = this.operationContext(rt, principal);
@@ -205,6 +287,14 @@ export class SqliteScopeHost {
205
287
  const handler = operations.get(operation);
206
288
  if (!handler)
207
289
  return Promise.reject(new Error(`unknown operation: ${operation}`));
290
+ // Entitlement gate (control-plane.md §4.3): a module loads for a tenant
291
+ // only if the tenant holds its SKU flag. Checked per invoke — the simple,
292
+ // uncached path (K-OQ5); a DO-cached variant is a later benchmark call.
293
+ // Fails closed the same way withdrawal does: the operation is unavailable.
294
+ const requiredKey = this.operationEntitlement.get(operation);
295
+ if (requiredKey && !this.tenantHoldsEntitlement(tenantId, requiredKey)) {
296
+ return Promise.reject(new Error(`operation not entitled: ${operation} — tenant does not hold '${requiredKey}'`));
297
+ }
208
298
  return rt.actor.enqueue(async () => {
209
299
  const clonedInput = structuredClone(input);
210
300
  rt.db.exec('BEGIN IMMEDIATE');
@@ -324,7 +414,55 @@ export class SqliteScopeHost {
324
414
  // -------------------------------------------------------------------------
325
415
  // Admin surface (enforcement input, §9.2.5)
326
416
  // -------------------------------------------------------------------------
417
+ /**
418
+ * The single audit choke point (control-plane.md §4.4). EVERY control-plane
419
+ * mutation — here and `provisionScope` — routes through this one method, so
420
+ * "no mutation without a durable record" holds by construction rather than by
421
+ * remembering a call per method. `before` is captured only where cheaply
422
+ * readable; idempotent upserts with no cheap prior state pass `before: null`.
423
+ */
424
+ recordAdmin(actor, action, target, before, after) {
425
+ this.directory
426
+ .prepare(`INSERT INTO _substrat_admin_log
427
+ (id, actor, action, tenant_id, scope_id, vertical, before, after, at)
428
+ VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)`)
429
+ .run(ulid(), actor, action, target.tenantId, target.scopeId ?? null, target.vertical ?? null, before == null ? null : JSON.stringify(before), after == null ? null : JSON.stringify(after), new Date().toISOString());
430
+ }
431
+ tenantHoldsEntitlement(tenantId, key) {
432
+ return (this.directory
433
+ .prepare('SELECT 1 FROM _substrat_entitlements WHERE tenant_id = ? AND entitlement_key = ?')
434
+ .get(tenantId, key) !== undefined);
435
+ }
327
436
  buildAdmin() {
437
+ const mapTenant = (r) => tenantSchema.parse({
438
+ id: r.tenant_id,
439
+ slug: r.slug,
440
+ name: r.name,
441
+ status: r.status,
442
+ createdAt: r.created_at,
443
+ });
444
+ const readTenant = (id) => {
445
+ const r = this.directory.prepare('SELECT * FROM tenants WHERE tenant_id = ?').get(id);
446
+ return r ? mapTenant(r) : undefined;
447
+ };
448
+ // Scope lifecycle transition (control-plane.md §4.2): validate ownership,
449
+ // enforce the legal transition graph (fail closed on an illegal one), flip
450
+ // the status, and audit before/after. un-archive is just another entry here
451
+ // — an explicit, audited restore, never a silent flag flip.
452
+ const transitionScope = (actor, action, tenantId, scopeId, from, to) => {
453
+ const row = this.directory
454
+ .prepare('SELECT tenant_id, status FROM scopes WHERE scope_id = ?')
455
+ .get(scopeId);
456
+ if (!row || row.tenant_id !== tenantId) {
457
+ throw new Error(`unknown scope for tenant: (${tenantId}, ${scopeId})`);
458
+ }
459
+ if (!from.includes(row.status)) {
460
+ throw new Error(`illegal scope transition for ${action}: ${row.status} → ${to} ` +
461
+ `(allowed from: ${from.join('|')})`);
462
+ }
463
+ this.directory.prepare('UPDATE scopes SET status = ? WHERE scope_id = ?').run(to, scopeId);
464
+ this.recordAdmin(actor, action, { tenantId, scopeId }, { status: row.status }, { status: to });
465
+ };
328
466
  const writeTenantTuple = (tenantId, subject, relation, object, expiresAt) => this.directory
329
467
  .prepare(`INSERT OR REPLACE INTO _substrat_tenant_tuples
330
468
  (tenant_id, subject, relation, object, expires_at)
@@ -351,15 +489,17 @@ export class SqliteScopeHost {
351
489
  }
352
490
  };
353
491
  return {
354
- defineRole: (tenantId, role) => {
492
+ defineRole: async (actor, tenantId, role) => {
355
493
  const parsed = roleDefinition.parse(role);
494
+ const before = this.roles.get(`${tenantId}/${parsed.key}`) ?? null;
356
495
  this.directory
357
496
  .prepare(`INSERT OR REPLACE INTO _substrat_roles (tenant_id, role_key, permissions, source)
358
497
  VALUES (?, ?, ?, ?)`)
359
498
  .run(tenantId, parsed.key, JSON.stringify(parsed.permissions), String(parsed.source));
360
499
  this.roles.set(`${tenantId}/${parsed.key}`, parsed);
500
+ this.recordAdmin(actor, 'defineRole', { tenantId }, before, parsed);
361
501
  },
362
- assignRole: (assignment) => {
502
+ assignRole: async (actor, assignment) => {
363
503
  const subject = `principal:${assignment.principalId}`;
364
504
  if (assignment.node.scopeId) {
365
505
  writeScopeTuple(assignment.node, subject, `role:${assignment.roleKey}`, `scope:${assignment.node.scopeId}`);
@@ -367,15 +507,110 @@ export class SqliteScopeHost {
367
507
  else {
368
508
  writeTenantTuple(assignment.node.tenantId, subject, `role:${assignment.roleKey}`, `tenant:${assignment.node.tenantId}`);
369
509
  }
510
+ this.recordAdmin(actor, 'assignRole', { tenantId: assignment.node.tenantId, scopeId: assignment.node.scopeId }, null, assignment);
370
511
  },
371
- grant: (grant) => {
512
+ grant: async (actor, grant) => {
372
513
  writeGrant(`principal:${grant.principalId}`, grant.permission, grant.node, grant.entity, grant.expiresAt);
514
+ this.recordAdmin(actor, 'grant', { tenantId: grant.node.tenantId, scopeId: grant.node.scopeId }, null, grant);
373
515
  },
374
- grantToOrg: (orgId, permission, node, entity) => {
516
+ grantToOrg: async (actor, orgId, permission, node, entity) => {
375
517
  writeGrant(`org:${orgId}`, permission, node, entity);
518
+ this.recordAdmin(actor, 'grantToOrg', { tenantId: node.tenantId, scopeId: node.scopeId }, null, { orgId, permission, node, entity });
376
519
  },
377
- addMember: (tenantId, principal, orgId) => {
520
+ addMember: async (actor, tenantId, principal, orgId) => {
378
521
  writeTenantTuple(tenantId, `principal:${principal}`, 'member', `org:${orgId}`);
522
+ this.recordAdmin(actor, 'addMember', { tenantId }, null, { principal, orgId });
523
+ },
524
+ createTenant: async (actor, input) => {
525
+ const parsed = createTenantInput.parse(input);
526
+ const info = this.directory
527
+ .prepare(`INSERT OR IGNORE INTO tenants (tenant_id, slug, name, status, created_at)
528
+ VALUES (?, ?, ?, 'active', ?)`)
529
+ .run(parsed.id, parsed.slug, parsed.name, new Date().toISOString());
530
+ // Idempotent: re-creating an existing tenant is a no-op, and a no-op is
531
+ // not audited — nothing changed.
532
+ if (info.changes === 0)
533
+ return;
534
+ this.recordAdmin(actor, 'createTenant', { tenantId: parsed.id }, null, readTenant(parsed.id));
535
+ },
536
+ setTenantStatus: async (actor, tenantId, status) => {
537
+ const before = readTenant(tenantId);
538
+ if (!before)
539
+ throw new Error(`unknown tenant: ${tenantId}`);
540
+ this.directory
541
+ .prepare('UPDATE tenants SET status = ? WHERE tenant_id = ?')
542
+ .run(status, tenantId);
543
+ this.recordAdmin(actor, 'setTenantStatus', { tenantId }, { status: before.status }, { status });
544
+ },
545
+ listTenants: async () => this.directory.prepare('SELECT * FROM tenants ORDER BY tenant_id').all().map(mapTenant),
546
+ getTenant: async (tenantId) => readTenant(tenantId),
547
+ suspendScope: async (actor, tenantId, scopeId) => transitionScope(actor, 'suspendScope', tenantId, scopeId, ['active'], 'suspended'),
548
+ unsuspendScope: async (actor, tenantId, scopeId) => transitionScope(actor, 'unsuspendScope', tenantId, scopeId, ['suspended'], 'active'),
549
+ archiveScope: async (actor, tenantId, scopeId) => transitionScope(actor, 'archiveScope', tenantId, scopeId, ['active', 'suspended'], 'archived'),
550
+ unarchiveScope: async (actor, tenantId, scopeId) => transitionScope(actor, 'unarchiveScope', tenantId, scopeId, ['archived'], 'active'),
551
+ grantEntitlement: async (actor, tenantId, entitlementKey) => {
552
+ const info = this.directory
553
+ .prepare(`INSERT OR IGNORE INTO _substrat_entitlements (tenant_id, entitlement_key)
554
+ VALUES (?, ?)`)
555
+ .run(tenantId, entitlementKey);
556
+ // Idempotent: granting a held flag changed nothing, so it is not audited.
557
+ if (info.changes === 0)
558
+ return;
559
+ this.recordAdmin(actor, 'grantEntitlement', { tenantId }, null, { entitlementKey });
560
+ },
561
+ revokeEntitlement: async (actor, tenantId, entitlementKey) => {
562
+ const info = this.directory
563
+ .prepare('DELETE FROM _substrat_entitlements WHERE tenant_id = ? AND entitlement_key = ?')
564
+ .run(tenantId, entitlementKey);
565
+ if (info.changes === 0)
566
+ return; // nothing held, nothing changed
567
+ this.recordAdmin(actor, 'revokeEntitlement', { tenantId }, { entitlementKey }, null);
568
+ },
569
+ listEntitlements: async (tenantId) => this.directory
570
+ .prepare('SELECT entitlement_key FROM _substrat_entitlements WHERE tenant_id = ? ORDER BY entitlement_key')
571
+ .all(tenantId).map((r) => r.entitlement_key),
572
+ linkIdentity: async (actor, input) => {
573
+ const parsed = identityLink.parse(input);
574
+ const info = this.directory
575
+ .prepare(`INSERT OR IGNORE INTO _substrat_identities
576
+ (provider, external_id, principal_id, tenant_id, scope_id, created_at)
577
+ VALUES (?, ?, ?, ?, ?, ?)`)
578
+ .run(parsed.provider, parsed.externalId, parsed.principal, parsed.tenantId, parsed.scopeId ?? null, new Date().toISOString());
579
+ // Idempotent: an identity already bound is a no-op, and a no-op is not audited.
580
+ if (info.changes === 0)
581
+ return;
582
+ this.recordAdmin(actor, 'linkIdentity', { tenantId: parsed.tenantId, scopeId: parsed.scopeId }, null, { provider: parsed.provider, externalId: parsed.externalId, principal: parsed.principal });
583
+ },
584
+ resolveIdentity: async (provider, externalId) => {
585
+ const row = this.directory
586
+ .prepare(`SELECT principal_id, tenant_id, scope_id FROM _substrat_identities
587
+ WHERE provider = ? AND external_id = ?`)
588
+ .get(provider, externalId);
589
+ if (!row)
590
+ return undefined;
591
+ return resolvedIdentity.parse({
592
+ principal: row.principal_id,
593
+ tenantId: row.tenant_id,
594
+ scopeId: row.scope_id,
595
+ });
596
+ },
597
+ auditLog: async (filter) => {
598
+ const rows = (filter?.tenantId
599
+ ? this.directory
600
+ .prepare('SELECT * FROM _substrat_admin_log WHERE tenant_id = ? ORDER BY id')
601
+ .all(filter.tenantId)
602
+ : this.directory.prepare('SELECT * FROM _substrat_admin_log ORDER BY id').all());
603
+ return rows.map((r) => adminLogEntry.parse({
604
+ id: r.id,
605
+ actor: r.actor,
606
+ action: r.action,
607
+ tenantId: r.tenant_id,
608
+ scopeId: r.scope_id,
609
+ vertical: r.vertical,
610
+ before: r.before === null ? null : JSON.parse(r.before),
611
+ after: r.after === null ? null : JSON.parse(r.after),
612
+ at: r.at,
613
+ }));
379
614
  },
380
615
  };
381
616
  }
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACpC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AACtC,OAAO,EACL,aAAa,EACb,iBAAiB,EACjB,WAAW,EACX,gBAAgB,EAChB,OAAO,EACP,YAAY,EACZ,OAAO,EACP,cAAc,EACd,SAAS,EACT,WAAW,EACX,gBAAgB,EAChB,cAAc,EACd,MAAM,IAAI,YAAY,GAqBvB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,IAAI,GAcL,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AA8BlD,MAAM,UAAU,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoClB,CAAC;AAqCF,MAAM,OAAO,eAAe;IACjB,KAAK,CAAY;IACT,GAAG,CAAS;IACZ,OAAO,CAAoB;IAC3B,SAAS,CAAoB;IAC7B,MAAM,GAAG,IAAI,GAAG,EAAwB,CAAC;IACzC,UAAU,GAAG,IAAI,GAAG,EAAwB,CAAC;IAC7C,UAAU,GAAG,IAAI,GAAG,EAA4C,CAAC;IACjE,OAAO,GAAG,IAAI,GAAG,EAA4B,CAAC;IAC/D,gFAAgF;IAC/D,MAAM,GAAG,IAAI,GAAG,EAA2B,CAAC;IAC7D,gFAAgF;IAC/D,UAAU,GAAG,IAAI,GAAG,EAAuD,CAAC;IAC7F,2EAA2E;IAC1D,SAAS,GAAG,IAAI,GAAG,EAAkB,CAAC,CAAC,iCAAiC;IACxE,SAAS,GAAG,IAAI,GAAG,EAAuB,CAAC;IAC5D,uEAAuE;IACtD,oBAAoB,GAAG,IAAI,GAAG,EAAkB,CAAC;IACjD,KAAK,GAAG,IAAI,GAAG,EAA0B,CAAC,CAAC,qBAAqB;IAChE,eAAe,GAAgB,WAAW,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;IAE1E,YAAY,OAA+B;QACzC,IAAI,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC;QACvB,SAAS,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACzC,IAAI,CAAC,SAAS,GAAG,IAAI,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,mBAAmB,CAAC,CAAC,CAAC;QACnE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC;QAC5C,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAqEnB,CAAC,CAAC;QACH,IAAI,CAAC,SAAS,EAAE,CAAC;QACjB,IAAI,CAAC,OAAO;YACV,OAAO,CAAC,OAAO;gBACf,kBAAkB,CAAC;oBACjB,SAAS,EAAE,IAAI,CAAC,SAAS;oBACzB,OAAO,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,EAAE;oBACtD,OAAO,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,QAAQ,IAAI,GAAG,EAAE,CAAC;iBACjE,CAAC,CAAC;QACL,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;IACjC,CAAC;IAED,cAAc,CAAC,YAAgC;QAC7C,MAAM,QAAQ,GAAG,cAAc,CAAC,KAAK,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;QAC7D,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC;YAClC,MAAM,IAAI,KAAK,CAAC,8BAA8B,QAAQ,CAAC,EAAE,EAAE,CAAC,CAAC;QAC/D,CAAC;QACD,MAAM,UAAU,GAAG,YAAY,CAAC,UAAU,IAAI,EAAE,CAAC;QACjD,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;QAC/B,KAAK,MAAM,CAAC,IAAI,UAAU,EAAE,CAAC;YAC3B,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;gBACxB,MAAM,IAAI,KAAK,CAAC,kCAAkC,QAAQ,CAAC,EAAE,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;YACjF,CAAC;YACD,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;QACtB,CAAC;QACD,MAAM,gBAAgB,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QAC9E,MAAM,SAAS,GAAG,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC,GAAG,CAChE,CAAC,CAAC,SAAS,EAAE,OAAO,CAAC,EAAE,EAAE;YACvB,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;gBACrC,MAAM,IAAI,KAAK,CACb,GAAG,QAAQ,CAAC,EAAE,oDAAoD,SAAS,EAAE,CAC9E,CAAC;YACJ,CAAC;YACD,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC;QAChC,CAAC,CACF,CAAC;QACF,4EAA4E;QAC5E,4EAA4E;QAC5E,yEAAyE;QACzE,4EAA4E;QAC5E,6EAA6E;QAC7E,0EAA0E;QAC1E,yEAAyE;QACzE,2EAA2E;QAC3E,kDAAkD;QAClD,KAAK,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,UAAU,IAAI,EAAE,CAAC,EAAE,CAAC;YAC5E,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAC3C,IAAI,QAAQ,EAAE,CAAC;gBACb,MAAM,IAAI,KAAK,CACb,0CAA0C,QAAQ,CAAC,MAAM,KAAK,IAAI,qBAAqB,CACxF,CAAC;YACJ,CAAC;YACD,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;QAC9D,CAAC;QACD,KAAK,MAAM,KAAK,IAAI,QAAQ,CAAC,MAAM,IAAI,EAAE,EAAE,CAAC;YAC1C,MAAM,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;YACzD,YAAY,CAAC,IAAI,CAAC;gBAChB,SAAS,EAAE,KAAK,CAAC,SAAS;gBAC1B,MAAM,EAAE,KAAK,CAAC,MAAM;gBACpB,UAAU,EAAE,QAAQ,CAAC,EAAE;aACxB,CAAC,CAAC;YACH,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;QAC9C,CAAC;QACD,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,QAAQ,CAAC,EAAE,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC,CAAC;QAC1E,KAAK,MAAM,GAAG,IAAI,QAAQ,CAAC,eAAe,IAAI,EAAE,EAAE,CAAC;YACjD,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,IAAI,GAAG,EAAU,CAAC;YACxE,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;YAC5B,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QAC9C,CAAC;QACD,sEAAsE;QACtE,0EAA0E;QAC1E,4EAA4E;QAC5E,4EAA4E;QAC5E,2EAA2E;QAC3E,4EAA4E;QAC5E,4EAA4E;QAC5E,oCAAoC;QACpC,MAAM,aAAa,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC,CAAC;QAC1E,KAAK,MAAM,IAAI,IAAI,QAAQ,CAAC,SAAS,IAAI,EAAE,EAAE,CAAC;YAC5C,IAAI,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC5B,MAAM,IAAI,KAAK,CACb,GAAG,QAAQ,CAAC,EAAE,iCAAiC,IAAI,6DAA6D,CACjH,CAAC;YACJ,CAAC;YACD,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC;YACtC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAC/B,CAAC;QACD,KAAK,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,UAAU,IAAI,EAAE,CAAC,EAAE,CAAC;YAC5E,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;YACpC,0EAA0E;YAC1E,6DAA6D;YAC7D,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,IAAI,EAAE,QAAQ,CAAC,cAAc,CAAC,CAAC;QAC/D,CAAC;IACH,CAAC;IAED,eAAe,CAAO,IAAY,EAAE,OAA+B;QACjE,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC;YAAE,OAAO,CAAC,8CAA8C;QACpF,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,8BAA8B,IAAI,EAAE,CAAC,CAAC;QACrF,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,EAAE,OAA2C,CAAC,CAAC;IACzE,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,KAAsB,EAAE,KAA0B;QACrE,wEAAwE;QACxE,2EAA2E;QAC3E,yDAAyD;QACzD,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS;aAC7B,OAAO,CAAC,gDAAgD,CAAC;aACzD,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAmC,CAAC;QACzD,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,gDAAgD,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;QACpF,CAAC;QACD,IAAI,SAAS,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;YAClC,MAAM,IAAI,KAAK,CACb,2DAA2D,SAAS,CAAC,MAAM,MAAM,KAAK,CAAC,QAAQ,EAAE,CAClG,CAAC;QACJ,CAAC;QACD,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS;aACxB,OAAO,CACN;0CACkC,CACnC;aACA,GAAG,CACF,KAAK,CAAC,OAAO,EACb,KAAK,CAAC,QAAQ,EACd,KAAK,CAAC,YAAY,IAAI,GAAG,EACzB,KAAK,CAAC,YAAY,IAAI,IAAI,EAC1B,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CACzB,CAAC;QACJ,MAAM,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;QACvD,MAAM,IAAI,CAAC,sBAAsB,CAAC,EAAE,CAAC,CAAC;QACtC,2EAA2E;QAC3E,IAAI,IAAI,CAAC,OAAO,GAAG,CAAC,EAAE,CAAC;YACrB,IAAI,CAAC,WAAW,CACd,KAAK,EACL,gBAAgB,EAChB,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,EACpD,IAAI,EACJ,EAAE,YAAY,EAAE,KAAK,CAAC,YAAY,IAAI,GAAG,EAAE,YAAY,EAAE,KAAK,CAAC,YAAY,IAAI,IAAI,EAAE,CACtF,CAAC;QACJ,CAAC;IACH,CAAC;IAED,KAAK,CAAC,QAAQ,CACZ,SAAsB,EACtB,QAAkB,EAClB,OAAgB;QAEhB,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS;aACvB,OAAO,CAAC,yDAAyD,CAAC;aAClE,GAAG,CAAC,OAAO,CAAsD,CAAC;QACrE,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,SAAS,KAAK,QAAQ,EAAE,CAAC;YACvC,MAAM,IAAI,KAAK,CAAC,8BAA8B,QAAQ,KAAK,OAAO,GAAG,CAAC,CAAC;QACzE,CAAC;QAED,8EAA8E;QAC9E,yEAAyE;QACzE,2EAA2E;QAC3E,4EAA4E;QAC5E,0EAA0E;QAC1E,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS;aAC7B,OAAO,CAAC,gDAAgD,CAAC;aACzD,GAAG,CAAC,QAAQ,CAAmC,CAAC;QACnD,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,gCAAgC,QAAQ,KAAK,OAAO,GAAG,CAAC,CAAC;QAC3E,CAAC;QACD,IAAI,SAAS,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;YAClC,MAAM,IAAI,KAAK,CAAC,8BAA8B,SAAS,CAAC,MAAM,MAAM,QAAQ,EAAE,CAAC,CAAC;QAClF,CAAC;QACD,IAAI,GAAG,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;YAC5B,MAAM,IAAI,KAAK,CAAC,6BAA6B,GAAG,CAAC,MAAM,MAAM,OAAO,EAAE,CAAC,CAAC;QAC1E,CAAC;QAED,MAAM,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QAC3C,MAAM,IAAI,CAAC,sBAAsB,CAAC,EAAE,CAAC,CAAC;QACtC,MAAM,GAAG,GAAG,IAAI,CAAC,gBAAgB,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;QACjD,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;QAEnC,OAAO;YACL,QAAQ;YACR,OAAO;YACP,MAAM,EAAE,CAAO,SAAiB,EAAE,KAAS,EAAc,EAAE;gBACzD,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;gBAC1C,IAAI,CAAC,OAAO;oBAAE,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,sBAAsB,SAAS,EAAE,CAAC,CAAC,CAAC;gBAClF,wEAAwE;gBACxE,0EAA0E;gBAC1E,wEAAwE;gBACxE,2EAA2E;gBAC3E,MAAM,WAAW,GAAG,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;gBAC7D,IAAI,WAAW,IAAI,CAAC,IAAI,CAAC,sBAAsB,CAAC,QAAQ,EAAE,WAAW,CAAC,EAAE,CAAC;oBACvE,OAAO,OAAO,CAAC,MAAM,CACnB,IAAI,KAAK,CACP,2BAA2B,SAAS,4BAA4B,WAAW,GAAG,CAC/E,CACF,CAAC;gBACJ,CAAC;gBACD,OAAO,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,IAAI,EAAE;oBACjC,MAAM,WAAW,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC;oBAC3C,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;oBAC9B,IAAI,MAAS,CAAC;oBACd,IAAI,CAAC;wBACH,qEAAqE;wBACrE,qEAAqE;wBACrE,6DAA6D;wBAC7D,MAAM,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,GAAG,EAAE,WAAW,CAAC,CAAC;wBAClD,MAAM,GAAG,MAAO,OAA8C,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;wBACjF,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;oBACvB,CAAC;oBAAC,OAAO,GAAG,EAAE,CAAC;wBACb,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;wBACvB,MAAM,GAAG,CAAC;oBACZ,CAAC;oBACD,sEAAsE;oBACtE,MAAM,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;oBACxB,OAAO,eAAe,CAAC,MAAM,CAAC,CAAC;gBACjC,CAAC,CAAC,CAAC;YACL,CAAC;SACF,CAAC;IACJ,CAAC;IAED,4EAA4E;IAC5E,2EAA2E;IAC3E,4EAA4E;IAC5E,oEAAoE;IACpE,4EAA4E;IAC5E,kEAAkE;IAClE,4EAA4E;IAEpE,KAAK,CAAC,SAAS,CACrB,SAAiB,EACjB,GAAqB,EACrB,KAAc;QAEd,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAC5C,IAAI,CAAC,QAAQ;YAAE,OAAO;QACtB,KAAK,MAAM,KAAK,IAAI,QAAQ,EAAE,CAAC;YAC7B,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;YACvD,IAAI,CAAC,SAAS,EAAE,CAAC;gBACf,qEAAqE;gBACrE,oEAAoE;gBACpE,MAAM,IAAI,KAAK,CACb,6BAA6B,KAAK,CAAC,SAAS,mBAAmB,KAAK,CAAC,UAAU,GAAG;oBAChF,WAAW,SAAS,4DAA4D,CACnF,CAAC;YACJ,CAAC;YACD,MAAM,SAAS,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QACpD,CAAC;IACH,CAAC;IAED,KAAK,CAAC,KAAK;QACT,KAAK,MAAM,EAAE,EAAE,EAAE,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE;YAAE,EAAE,CAAC,KAAK,EAAE,CAAC;QACtD,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;QACpB,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;QACxB,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;IACzB,CAAC;IAED,4EAA4E;IAC5E,yEAAyE;IACzE,sEAAsE;IACtE,4EAA4E;IAEpE,KAAK,CAAC,QAAQ,CAAC,EAAgB;QACrC,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,EAAE,EAAE,KAAK,EAAE,EAAE,CAAC;YACxC,IAAI,YAAY,GAAG,KAAK,CAAC;YACzB,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;gBACxC,KAAK,MAAM,QAAQ,IAAI,GAAG,CAAC,SAAS,EAAE,CAAC;oBACrC,MAAM,IAAI,GAAG,EAAE,CAAC,EAAE;yBACf,OAAO,CACN;;;;;;6BAMe,CAChB;yBACA,GAAG,CAAC,QAAQ,CAAC,SAAS,EAAE,GAAG,CAAC,EAAE,CAAgB,CAAC;oBAClD,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;wBACvB,MAAM,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;wBACvC,MAAM,GAAG,GAAG,IAAI,CAAC,gBAAgB,CAAC,EAAE,EAAE,IAAI,CAAC,eAAe,EAAE;4BAC1D,MAAM,EAAE,GAAG,CAAC,EAAE;yBACf,CAAC,CAAC;wBACH,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;wBAC9B,IAAI,CAAC;4BACH,MAAM,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;4BACnC,EAAE,CAAC,EAAE;iCACF,OAAO,CACN;oCACkB,CACnB;iCACA,GAAG,CAAC,KAAK,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC;4BACnD,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;4BACrB,YAAY,GAAG,IAAI,CAAC;wBACtB,CAAC;wBAAC,OAAO,GAAG,EAAE,CAAC;4BACb,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;4BACvB,4DAA4D;4BAC5D,gEAAgE;4BAChE,EAAE,CAAC,EAAE;iCACF,OAAO,CACN;uCACqB,CACtB;iCACA,GAAG,CAAC,KAAK,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;wBAClE,CAAC;oBACH,CAAC;gBACH,CAAC;YACH,CAAC;YACD,IAAI,CAAC,YAAY;gBAAE,OAAO;QAC5B,CAAC;IACH,CAAC;IAEO,cAAc,CAAC,GAAc;QACnC,OAAO,WAAW,CAAC,KAAK,CAAC;YACvB,EAAE,EAAE,GAAG,CAAC,EAAE;YACV,IAAI,EAAE,GAAG,CAAC,IAAI;YACd,aAAa,EAAE,GAAG,CAAC,cAAc;YACjC,UAAU,EAAE,GAAG,CAAC,WAAW;YAC3B,QAAQ,EAAE,GAAG,CAAC,SAAS;YACvB,OAAO,EAAE,GAAG,CAAC,QAAQ;YACrB,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC;YAC5B,MAAM,EAAE,EAAE,UAAU,EAAE,GAAG,CAAC,WAAW,EAAE,QAAQ,EAAE,GAAG,CAAC,SAAS,EAAE;YAChE,QAAQ,EAAE,GAAG,CAAC,SAAS;YACvB,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,GAAG,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACxD,OAAO,EAAE,GAAG,CAAC,OAAO,KAAK,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC;SACpE,CAAC,CAAC;IACL,CAAC;IAED,4EAA4E;IAC5E,4CAA4C;IAC5C,4EAA4E;IAE5E;;;;;;OAMG;IACK,WAAW,CACjB,KAAsB,EACtB,MAAmB,EACnB,MAAkF,EAClF,MAAe,EACf,KAAc;QAEd,IAAI,CAAC,SAAS;aACX,OAAO,CACN;;4CAEoC,CACrC;aACA,GAAG,CACF,IAAI,EAAE,EACN,KAAK,EACL,MAAM,EACN,MAAM,CAAC,QAAQ,EACf,MAAM,CAAC,OAAO,IAAI,IAAI,EACtB,MAAM,CAAC,QAAQ,IAAI,IAAI,EACvB,MAAM,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAC9C,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAC5C,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CACzB,CAAC;IACN,CAAC;IAEO,sBAAsB,CAAC,QAAkB,EAAE,GAAW;QAC5D,OAAO,CACL,IAAI,CAAC,SAAS;aACX,OAAO,CAAC,kFAAkF,CAAC;aAC3F,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,KAAK,SAAS,CACpC,CAAC;IACJ,CAAC;IAEO,UAAU;QAChB,MAAM,SAAS,GAAG,CAAC,CAAY,EAAU,EAAE,CACzC,YAAY,CAAC,KAAK,CAAC;YACjB,EAAE,EAAE,CAAC,CAAC,SAAS;YACf,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,MAAM,EAAE,CAAC,CAAC,MAAM;YAChB,SAAS,EAAE,CAAC,CAAC,UAAU;SACxB,CAAC,CAAC;QACL,MAAM,UAAU,GAAG,CAAC,EAAY,EAAsB,EAAE;YACtD,MAAM,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,2CAA2C,CAAC,CAAC,GAAG,CAAC,EAAE,CAEvE,CAAC;YACd,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QACtC,CAAC,CAAC;QAEF,0EAA0E;QAC1E,2EAA2E;QAC3E,4EAA4E;QAC5E,4DAA4D;QAC5D,MAAM,eAAe,GAAG,CACtB,KAAsB,EACtB,MAAmB,EACnB,QAAkB,EAClB,OAAgB,EAChB,IAAmB,EACnB,EAAe,EACf,EAAE;YACF,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS;iBACvB,OAAO,CAAC,yDAAyD,CAAC;iBAClE,GAAG,CAAC,OAAO,CAAsD,CAAC;YACrE,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,SAAS,KAAK,QAAQ,EAAE,CAAC;gBACvC,MAAM,IAAI,KAAK,CAAC,8BAA8B,QAAQ,KAAK,OAAO,GAAG,CAAC,CAAC;YACzE,CAAC;YACD,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAqB,CAAC,EAAE,CAAC;gBAC9C,MAAM,IAAI,KAAK,CACb,gCAAgC,MAAM,KAAK,GAAG,CAAC,MAAM,MAAM,EAAE,GAAG;oBAC9D,kBAAkB,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CACtC,CAAC;YACJ,CAAC;YACD,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,iDAAiD,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;YAC3F,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,CAAC;QACjG,CAAC,CAAC;QAEF,MAAM,gBAAgB,GAAG,CACvB,QAAgB,EAChB,OAAe,EACf,QAAgB,EAChB,MAAc,EACd,SAAkB,EAClB,EAAE,CACF,IAAI,CAAC,SAAS;aACX,OAAO,CACN;;kCAEwB,CACzB;aACA,GAAG,CAAC,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,IAAI,IAAI,CAAC,CAAC;QAEjE,MAAM,eAAe,GAAG,CACtB,IAAU,EACV,OAAe,EACf,QAAgB,EAChB,MAAc,EACd,SAAkB,EAClB,EAAE;YACF,IAAI,CAAC,IAAI,CAAC,OAAO;gBAAE,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;YACxE,MAAM,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;YACrD,EAAE,CAAC,EAAE;iBACF,OAAO,CACN;+BACqB,CACtB;iBACA,GAAG,CAAC,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,IAAI,IAAI,CAAC,CAAC;QACvD,CAAC,CAAC;QAEF,MAAM,UAAU,GAAG,CACjB,OAAe,EACf,UAAyB,EACzB,IAAU,EACV,MAAkB,EAClB,SAAkB,EAClB,EAAE;YACF,IAAI,MAAM,EAAE,CAAC;gBACX,eAAe,CACb,IAAI,EACJ,OAAO,EACP,WAAW,UAAU,EAAE,EACvB,GAAG,MAAM,CAAC,UAAU,IAAI,MAAM,CAAC,QAAQ,EAAE,EACzC,SAAS,CACV,CAAC;YACJ,CAAC;iBAAM,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;gBACxB,eAAe,CAAC,IAAI,EAAE,OAAO,EAAE,WAAW,UAAU,EAAE,EAAE,SAAS,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,CAAC,CAAC;YAC9F,CAAC;iBAAM,CAAC;gBACN,gBAAgB,CACd,IAAI,CAAC,QAAQ,EACb,OAAO,EACP,WAAW,UAAU,EAAE,EACvB,UAAU,IAAI,CAAC,QAAQ,EAAE,EACzB,SAAS,CACV,CAAC;YACJ,CAAC;QACH,CAAC,CAAC;QAEF,OAAO;YACL,UAAU,EAAE,KAAK,EAAE,KAAsB,EAAE,QAAkB,EAAE,IAAoB,EAAE,EAAE;gBACrF,MAAM,MAAM,GAAG,cAAc,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBAC1C,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,QAAQ,IAAI,MAAM,CAAC,GAAG,EAAE,CAAC,IAAI,IAAI,CAAC;gBACnE,IAAI,CAAC,SAAS;qBACX,OAAO,CACN;iCACqB,CACtB;qBACA,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;gBACxF,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,QAAQ,IAAI,MAAM,CAAC,GAAG,EAAE,EAAE,MAAM,CAAC,CAAC;gBACpD,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,YAAY,EAAE,EAAE,QAAQ,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;YACtE,CAAC;YACD,UAAU,EAAE,KAAK,EAAE,KAAsB,EAAE,UAA0B,EAAE,EAAE;gBACvE,MAAM,OAAO,GAAG,aAAa,UAAU,CAAC,WAAW,EAAE,CAAC;gBACtD,IAAI,UAAU,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;oBAC5B,eAAe,CACb,UAAU,CAAC,IAAI,EACf,OAAO,EACP,QAAQ,UAAU,CAAC,OAAO,EAAE,EAC5B,SAAS,UAAU,CAAC,IAAI,CAAC,OAAO,EAAE,CACnC,CAAC;gBACJ,CAAC;qBAAM,CAAC;oBACN,gBAAgB,CACd,UAAU,CAAC,IAAI,CAAC,QAAQ,EACxB,OAAO,EACP,QAAQ,UAAU,CAAC,OAAO,EAAE,EAC5B,UAAU,UAAU,CAAC,IAAI,CAAC,QAAQ,EAAE,CACrC,CAAC;gBACJ,CAAC;gBACD,IAAI,CAAC,WAAW,CACd,KAAK,EACL,YAAY,EACZ,EAAE,QAAQ,EAAE,UAAU,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,EAAE,UAAU,CAAC,IAAI,CAAC,OAAO,EAAE,EACxE,IAAI,EACJ,UAAU,CACX,CAAC;YACJ,CAAC;YACD,KAAK,EAAE,KAAK,EAAE,KAAsB,EAAE,KAAsB,EAAE,EAAE;gBAC9D,UAAU,CACR,aAAa,KAAK,CAAC,WAAW,EAAE,EAChC,KAAK,CAAC,UAAU,EAChB,KAAK,CAAC,IAAI,EACV,KAAK,CAAC,MAAM,EACZ,KAAK,CAAC,SAAS,CAChB,CAAC;gBACF,IAAI,CAAC,WAAW,CACd,KAAK,EACL,OAAO,EACP,EAAE,QAAQ,EAAE,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,EAC9D,IAAI,EACJ,KAAK,CACN,CAAC;YACJ,CAAC;YACD,UAAU,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE;gBAC3D,UAAU,CAAC,OAAO,KAAK,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;gBACrD,IAAI,CAAC,WAAW,CACd,KAAK,EACL,YAAY,EACZ,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,EAClD,IAAI,EACJ,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE,CACpC,CAAC;YACJ,CAAC;YACD,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,EAAE;gBACrD,gBAAgB,CAAC,QAAQ,EAAE,aAAa,SAAS,EAAE,EAAE,QAAQ,EAAE,OAAO,KAAK,EAAE,CAAC,CAAC;gBAC/E,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,WAAW,EAAE,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;YACjF,CAAC;YACD,YAAY,EAAE,KAAK,EAAE,KAAsB,EAAE,KAAwB,EAAE,EAAE;gBACvE,MAAM,MAAM,GAAG,iBAAiB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;gBAC9C,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS;qBACxB,OAAO,CACN;2CAC+B,CAChC;qBACA,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC;gBACtE,wEAAwE;gBACxE,iCAAiC;gBACjC,IAAI,IAAI,CAAC,OAAO,KAAK,CAAC;oBAAE,OAAO;gBAC/B,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,cAAc,EAAE,EAAE,QAAQ,EAAE,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;YAChG,CAAC;YACD,eAAe,EAAE,KAAK,EAAE,KAAsB,EAAE,QAAkB,EAAE,MAAoB,EAAE,EAAE;gBAC1F,MAAM,MAAM,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC;gBACpC,IAAI,CAAC,MAAM;oBAAE,MAAM,IAAI,KAAK,CAAC,mBAAmB,QAAQ,EAAE,CAAC,CAAC;gBAC5D,IAAI,CAAC,SAAS;qBACX,OAAO,CAAC,mDAAmD,CAAC;qBAC5D,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;gBACzB,IAAI,CAAC,WAAW,CACd,KAAK,EACL,iBAAiB,EACjB,EAAE,QAAQ,EAAE,EACZ,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,EACzB,EAAE,MAAM,EAAE,CACX,CAAC;YACJ,CAAC;YACD,WAAW,EAAE,KAAK,IAAuB,EAAE,CACxC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,0CAA0C,CAAC,CAAC,GAAG,EAAkB,CAAC,GAAG,CAC3F,SAAS,CACV;YACH,SAAS,EAAE,KAAK,EAAE,QAAkB,EAA+B,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC;YAC1F,YAAY,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,CAC/C,eAAe,CAAC,KAAK,EAAE,cAAc,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,QAAQ,CAAC,EAAE,WAAW,CAAC;YACpF,cAAc,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,CACjD,eAAe,CAAC,KAAK,EAAE,gBAAgB,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,WAAW,CAAC,EAAE,QAAQ,CAAC;YACtF,YAAY,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,CAC/C,eAAe,CAAC,KAAK,EAAE,cAAc,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,QAAQ,EAAE,WAAW,CAAC,EAAE,UAAU,CAAC;YAChG,cAAc,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,CACjD,eAAe,CAAC,KAAK,EAAE,gBAAgB,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,UAAU,CAAC,EAAE,QAAQ,CAAC;YACrF,gBAAgB,EAAE,KAAK,EAAE,KAAsB,EAAE,QAAkB,EAAE,cAAsB,EAAE,EAAE;gBAC7F,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS;qBACxB,OAAO,CACN;2BACe,CAChB;qBACA,GAAG,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC;gBACjC,0EAA0E;gBAC1E,IAAI,IAAI,CAAC,OAAO,KAAK,CAAC;oBAAE,OAAO;gBAC/B,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,kBAAkB,EAAE,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,EAAE,cAAc,EAAE,CAAC,CAAC;YACtF,CAAC;YACD,iBAAiB,EAAE,KAAK,EAAE,KAAsB,EAAE,QAAkB,EAAE,cAAsB,EAAE,EAAE;gBAC9F,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS;qBACxB,OAAO,CACN,gFAAgF,CACjF;qBACA,GAAG,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC;gBACjC,IAAI,IAAI,CAAC,OAAO,KAAK,CAAC;oBAAE,OAAO,CAAC,gCAAgC;gBAChE,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,mBAAmB,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,cAAc,EAAE,EAAE,IAAI,CAAC,CAAC;YACvF,CAAC;YACD,gBAAgB,EAAE,KAAK,EAAE,QAAkB,EAAqB,EAAE,CAE9D,IAAI,CAAC,SAAS;iBACX,OAAO,CACN,iGAAiG,CAClG;iBACA,GAAG,CAAC,QAAQ,CAChB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,eAAe,CAAC;YACjC,YAAY,EAAE,KAAK,EAAE,KAAsB,EAAE,KAAmB,EAAE,EAAE;gBAClE,MAAM,MAAM,GAAG,YAAY,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;gBACzC,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS;qBACxB,OAAO,CACN;;uCAE2B,CAC5B;qBACA,GAAG,CACF,MAAM,CAAC,QAAQ,EACf,MAAM,CAAC,UAAU,EACjB,MAAM,CAAC,SAAS,EAChB,MAAM,CAAC,QAAQ,EACf,MAAM,CAAC,OAAO,IAAI,IAAI,EACtB,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CACzB,CAAC;gBACJ,gFAAgF;gBAChF,IAAI,IAAI,CAAC,OAAO,KAAK,CAAC;oBAAE,OAAO;gBAC/B,IAAI,CAAC,WAAW,CACd,KAAK,EACL,cAAc,EACd,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,EACtD,IAAI,EACJ,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,UAAU,EAAE,MAAM,CAAC,UAAU,EAAE,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,CAC1F,CAAC;YACJ,CAAC;YACD,eAAe,EAAE,KAAK,EACpB,QAAgB,EAChB,UAAkB,EACqB,EAAE;gBACzC,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS;qBACvB,OAAO,CACN;oDACwC,CACzC;qBACA,GAAG,CAAC,QAAQ,EAAE,UAAU,CAEd,CAAC;gBACd,IAAI,CAAC,GAAG;oBAAE,OAAO,SAAS,CAAC;gBAC3B,OAAO,gBAAgB,CAAC,KAAK,CAAC;oBAC5B,SAAS,EAAE,GAAG,CAAC,YAAY;oBAC3B,QAAQ,EAAE,GAAG,CAAC,SAAS;oBACvB,OAAO,EAAE,GAAG,CAAC,QAAQ;iBACtB,CAAC,CAAC;YACL,CAAC;YACD,QAAQ,EAAE,KAAK,EAAE,MAAgC,EAA4B,EAAE;gBAC7E,MAAM,IAAI,GAAG,CACX,MAAM,EAAE,QAAQ;oBACd,CAAC,CAAC,IAAI,CAAC,SAAS;yBACX,OAAO,CAAC,mEAAmE,CAAC;yBAC5E,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC;oBACzB,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,+CAA+C,CAAC,CAAC,GAAG,EAAE,CACjE,CAAC;gBACnB,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CACpB,aAAa,CAAC,KAAK,CAAC;oBAClB,EAAE,EAAE,CAAC,CAAC,EAAE;oBACR,KAAK,EAAE,CAAC,CAAC,KAAK;oBACd,MAAM,EAAE,CAAC,CAAC,MAAM;oBAChB,QAAQ,EAAE,CAAC,CAAC,SAAS;oBACrB,OAAO,EAAE,CAAC,CAAC,QAAQ;oBACnB,QAAQ,EAAE,CAAC,CAAC,QAAQ;oBACpB,MAAM,EAAE,CAAC,CAAC,MAAM,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC;oBACvD,KAAK,EAAE,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC;oBACpD,EAAE,EAAE,CAAC,CAAC,EAAE;iBACT,CAAC,CACH,CAAC;YACJ,CAAC;SACF,CAAC;IACJ,CAAC;IAEO,SAAS;QACf,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS;aACxB,OAAO,CAAC,sEAAsE,CAAC;aAC/E,GAAG,EAAoF,CAAC;QAC3F,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;YACrB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE;gBAC7C,GAAG,EAAE,CAAC,CAAC,QAAQ;gBACf,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC;gBACtC,MAAM,EAAE,CAAC,CAAC,MAAM;aACC,CAAC,CAAC;QACvB,CAAC;IACH,CAAC;IAED,4EAA4E;IAEpE,gBAAgB,CACtB,EAAgB,EAChB,SAAsB,EACtB,WAAgC;QAEhC,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;QAC7B,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;QACjC,OAAO;YACL,QAAQ,EAAE,EAAE,CAAC,QAAQ;YACrB,OAAO,EAAE,EAAE,CAAC,OAAO;YACnB,SAAS;YACT,GAAG,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC;YACrB,IAAI,EAAE,CAAC,KAAuB,EAAE,EAAE;gBAChC,MAAM,KAAK,GAAG,gBAAgB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;gBAC5C,MAAM,IAAI,GAAG,WAAW,CAAC,KAAK,CAAC;oBAC7B,GAAG,KAAK;oBACR,EAAE,EAAE,OAAO,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;oBACzB,UAAU,EAAE,OAAO,CAAC,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;oBACnD,QAAQ,EAAE,EAAE,CAAC,QAAQ;oBACrB,OAAO,EAAE,EAAE,CAAC,OAAO;oBACnB,KAAK,EAAE,WAAW,IAAI,SAAS;iBAChC,CAAC,CAAC;gBACH,EAAE,CAAC,EAAE;qBACF,OAAO,CACN;;;yDAG6C,CAC9C;qBACA,GAAG,CACF,IAAI,CAAC,EAAE,EACP,IAAI,CAAC,IAAI,EACT,IAAI,CAAC,aAAa,EAClB,IAAI,CAAC,UAAU,EACf,IAAI,CAAC,QAAQ,EACb,IAAI,CAAC,OAAO,EACZ,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,EAC1B,IAAI,CAAC,MAAM,CAAC,UAAU,EACtB,IAAI,CAAC,MAAM,CAAC,QAAQ,EACpB,IAAI,CAAC,QAAQ,EACb,IAAI,CAAC,SAAS,IAAI,IAAI,EACtB,IAAI,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CACjE,CAAC;YACN,CAAC;YACD,KAAK,EAAE,CAAC,UAAU,EAAE,MAAO,EAAE,EAAE,CAC7B,WAAW;gBACT,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC;oBACd,OAAO,EAAE,IAAa;oBACtB,KAAK,EAAE;wBACL;4BACE,OAAO,EAAE,SAAS,CAAC,KAAK,CACtB,UAAU,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,kBAAkB,EAAE,GAAG,CAAC,EAAE,CAChE;4BACD,QAAQ,EAAE,WAAW,UAAU,EAAE;4BACjC,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC,OAAO,EAAE,CAAC;yBAC/C;qBACF;iBACF,CAAC;gBACJ,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,SAAS,EAAE,UAAU,EAAE,EAAE,QAAQ,EAAE,EAAE,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE,CAAC,OAAO,EAAE,EAAE,MAAM,CAAC;YAClG,IAAI,EAAE,CAAC,KAAgB,EAAE,MAAiB,EAAE,EAAE;gBAC5C,MAAM,OAAO,GAAG,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;gBAChD,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC;oBACrC,MAAM,IAAI,KAAK,CACb,+BAA+B,KAAK,CAAC,UAAU,MAAM,MAAM,CAAC,UAAU,GAAG;wBACvE,qDAAqD,CACxD,CAAC;gBACJ,CAAC;gBACD,EAAE,CAAC,EAAE;qBACF,OAAO,CACN;qCACyB,CAC1B;qBACA,GAAG,CAAC,GAAG,KAAK,CAAC,UAAU,IAAI,KAAK,CAAC,QAAQ,EAAE,EAAE,GAAG,MAAM,CAAC,UAAU,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;YAC7F,CAAC;SACF,CAAC;IACJ,CAAC;IAEO,sBAAsB,CAAC,EAAgB;QAC7C,MAAM,OAAO,GAAoD,EAAE,CAAC;QACpE,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;YACxC,KAAK,MAAM,SAAS,IAAI,GAAG,CAAC,UAAU,EAAE,CAAC;gBACvC,IAAI,CAAC,EAAE,CAAC,iBAAiB,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,EAAE,IAAI,SAAS,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC;oBAChE,OAAO,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,GAAG,CAAC,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC;gBAChD,CAAC;YACH,CAAC;QACH,CAAC;QACD,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;QACnD,OAAO,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE;YAC3B,KAAK,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,IAAI,OAAO,EAAE,CAAC;gBAC9C,MAAM,GAAG,GAAG,GAAG,QAAQ,IAAI,SAAS,CAAC,OAAO,EAAE,CAAC;gBAC/C,IAAI,EAAE,CAAC,iBAAiB,CAAC,GAAG,CAAC,GAAG,CAAC;oBAAE,SAAS;gBAC5C,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;gBAC9B,IAAI,CAAC;oBACH,MAAM,OAAO,GAAG,EAAE,CAAC,EAAE;yBAClB,OAAO,CAAC,wEAAwE,CAAC;yBACjF,GAAG,CAAC,QAAQ,EAAE,SAAS,CAAC,OAAO,CAAC,CAAC;oBACpC,IAAI,CAAC,OAAO,EAAE,CAAC;wBACb,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;wBAC1B,EAAE,CAAC,EAAE;6BACF,OAAO,CACN,oFAAoF,CACrF;6BACA,GAAG,CAAC,QAAQ,EAAE,SAAS,CAAC,OAAO,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC;oBAChE,CAAC;oBACD,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;gBACvB,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACb,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;oBACvB,MAAM,IAAI,KAAK,CACb,wBAAwB,GAAG,0BAA2B,GAAa,CAAC,OAAO,EAAE,CAC9E,CAAC;gBACJ,CAAC;gBACD,EAAE,CAAC,iBAAiB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YAChC,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,OAAO,CAAC,QAAkB,EAAE,OAAgB;QAClD,MAAM,GAAG,GAAG,GAAG,QAAQ,IAAI,OAAO,EAAE,CAAC;QACrC,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACtC,IAAI,QAAQ;YAAE,OAAO,QAAQ,CAAC;QAC9B,MAAM,EAAE,GAAG,IAAI,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,QAAQ,KAAK,OAAO,SAAS,CAAC,CAAC,CAAC;QAC1E,EAAE,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC;QAChC,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACpB,MAAM,iBAAiB,GAAG,IAAI,GAAG,CAE7B,EAAE,CAAC,OAAO,CAAC,qDAAqD,CAAC,CAAC,GAAG,EAItE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC,CAC5C,CAAC;QACF,MAAM,OAAO,GAAiB,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,UAAU,EAAE,EAAE,iBAAiB,EAAE,CAAC;QACpG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;QAC9B,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QACtC,OAAO,OAAO,CAAC;IACjB,CAAC;CACF;AAED,SAAS,SAAS,CAAC,EAAqB;IACtC,OAAO;QACL,KAAK,EAAE,CAAI,GAAW,EAAE,SAA8B,EAAE,EAAO,EAAE,CAC/D,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,MAAM,CAAQ;QACvC,IAAI,EAAE,CAAC,GAAW,EAAE,SAA8B,EAAE,EAAE,EAAE;YACtD,MAAM,IAAI,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC;YAC5C,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC;QACnC,CAAC;KACF,CAAC;AACJ,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@substrat-run/adapter-sqlite",
3
- "version": "0.2.0",
3
+ "version": "0.3.0",
4
4
  "description": "Pure-SQLite scope host — real kernel semantics with no Cloudflare dependency (D-14): local dev, CI, self-host/escrow",
5
5
  "license": "AGPL-3.0-only",
6
6
  "repository": {
@@ -23,14 +23,14 @@
23
23
  ],
24
24
  "dependencies": {
25
25
  "better-sqlite3": "^12.0.0",
26
- "@substrat-run/kernel": "^0.2.0",
27
- "@substrat-run/contracts": "^0.2.0"
26
+ "@substrat-run/kernel": "^0.3.0",
27
+ "@substrat-run/contracts": "^0.3.0"
28
28
  },
29
29
  "devDependencies": {
30
30
  "@types/better-sqlite3": "^7.6.0",
31
31
  "typescript": "^5.6.0",
32
32
  "vitest": "^3.0.0",
33
- "@substrat-run/contract-tests": "^0.2.0"
33
+ "@substrat-run/contract-tests": "^0.3.0"
34
34
  },
35
35
  "publishConfig": {
36
36
  "access": "public"