tinbase 0.2.2 → 0.6.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.
Files changed (94) hide show
  1. package/README.md +64 -31
  2. package/dist/admin/api.d.ts +8 -1
  3. package/dist/admin/api.js +94 -1
  4. package/dist/admin/api.js.map +1 -1
  5. package/dist/admin/ui.d.ts +1 -1
  6. package/dist/admin/ui.js +16 -16
  7. package/dist/auth/handler.d.ts +13 -1
  8. package/dist/auth/handler.js +173 -6
  9. package/dist/auth/handler.js.map +1 -1
  10. package/dist/auth/inbox.d.ts +31 -0
  11. package/dist/auth/inbox.js +112 -0
  12. package/dist/auth/inbox.js.map +1 -0
  13. package/dist/auth/oauth.d.ts +59 -0
  14. package/dist/auth/oauth.js +209 -0
  15. package/dist/auth/oauth.js.map +1 -0
  16. package/dist/auth/qr.d.ts +8 -0
  17. package/dist/auth/qr.js +376 -0
  18. package/dist/auth/qr.js.map +1 -0
  19. package/dist/auth/totp.d.ts +19 -0
  20. package/dist/auth/totp.js +101 -0
  21. package/dist/auth/totp.js.map +1 -0
  22. package/dist/cli.js +168 -10
  23. package/dist/cli.js.map +1 -1
  24. package/dist/cron/service.d.ts +29 -0
  25. package/dist/cron/service.js +134 -0
  26. package/dist/cron/service.js.map +1 -0
  27. package/dist/db/bootstrap.d.ts +8 -1
  28. package/dist/db/bootstrap.js +240 -1
  29. package/dist/db/bootstrap.js.map +1 -1
  30. package/dist/db/database.d.ts +24 -0
  31. package/dist/db/database.js +61 -2
  32. package/dist/db/database.js.map +1 -1
  33. package/dist/db/emulated.d.ts +12 -0
  34. package/dist/db/emulated.js +156 -0
  35. package/dist/db/emulated.js.map +1 -0
  36. package/dist/db/engine.d.ts +2 -0
  37. package/dist/db/engine.js.map +1 -1
  38. package/dist/db/inspect.d.ts +13 -0
  39. package/dist/db/inspect.js +22 -0
  40. package/dist/db/inspect.js.map +1 -0
  41. package/dist/db/pgmem-engine.d.ts +22 -0
  42. package/dist/db/pgmem-engine.js +135 -0
  43. package/dist/db/pgmem-engine.js.map +1 -0
  44. package/dist/db/schema-diff.d.ts +23 -0
  45. package/dist/db/schema-diff.js +182 -0
  46. package/dist/db/schema-diff.js.map +1 -0
  47. package/dist/functions/deno-shim.d.ts +24 -0
  48. package/dist/functions/deno-shim.js +47 -0
  49. package/dist/functions/deno-shim.js.map +1 -0
  50. package/dist/functions/handler.d.ts +3 -1
  51. package/dist/functions/handler.js.map +1 -1
  52. package/dist/gen-types.d.ts +17 -0
  53. package/dist/gen-types.js +222 -0
  54. package/dist/gen-types.js.map +1 -0
  55. package/dist/index.d.ts +20 -0
  56. package/dist/index.js +83 -15
  57. package/dist/index.js.map +1 -1
  58. package/dist/jwt.d.ts +7 -0
  59. package/dist/jwt.js.map +1 -1
  60. package/dist/log-buffer.d.ts +21 -0
  61. package/dist/log-buffer.js +20 -0
  62. package/dist/log-buffer.js.map +1 -0
  63. package/dist/node/bundle-function.d.ts +7 -0
  64. package/dist/node/bundle-function.js +90 -0
  65. package/dist/node/bundle-function.js.map +1 -0
  66. package/dist/node/db-diff.d.ts +34 -0
  67. package/dist/node/db-diff.js +82 -0
  68. package/dist/node/db-diff.js.map +1 -0
  69. package/dist/node/index.d.ts +4 -1
  70. package/dist/node/index.js +4 -1
  71. package/dist/node/index.js.map +1 -1
  72. package/dist/node/load-functions.d.ts +6 -0
  73. package/dist/node/load-functions.js +60 -8
  74. package/dist/node/load-functions.js.map +1 -1
  75. package/dist/node/load-oauth.d.ts +4 -0
  76. package/dist/node/load-oauth.js +126 -0
  77. package/dist/node/load-oauth.js.map +1 -0
  78. package/dist/node/native/engine.d.ts +1 -1
  79. package/dist/node/native/engine.js +45 -14
  80. package/dist/node/native/engine.js.map +1 -1
  81. package/dist/realtime/engine.d.ts +24 -1
  82. package/dist/realtime/engine.js +154 -2
  83. package/dist/realtime/engine.js.map +1 -1
  84. package/dist/rest/build.d.ts +5 -1
  85. package/dist/rest/build.js +17 -8
  86. package/dist/rest/build.js.map +1 -1
  87. package/dist/rest/handler.js +22 -9
  88. package/dist/rest/handler.js.map +1 -1
  89. package/dist/types.d.ts +10 -0
  90. package/dist/types.js.map +1 -1
  91. package/dist/webhooks/service.d.ts +47 -0
  92. package/dist/webhooks/service.js +86 -0
  93. package/dist/webhooks/service.js.map +1 -0
  94. package/package.json +7 -2
@@ -6,7 +6,8 @@
6
6
  * socket directory (0700), never TCP.
7
7
  */
8
8
  import { execFileSync, spawn } from 'node:child_process';
9
- import { chmodSync, existsSync, mkdirSync, mkdtempSync, readFileSync, rmSync, appendFileSync } from 'node:fs';
9
+ import { randomBytes } from 'node:crypto';
10
+ import { chmodSync, existsSync, mkdirSync, mkdtempSync, readFileSync, renameSync, rmSync, appendFileSync } from 'node:fs';
10
11
  import { writeFile } from 'node:fs/promises';
11
12
  import { homedir, tmpdir } from 'node:os';
12
13
  import { join } from 'node:path';
@@ -23,25 +24,55 @@ function target() {
23
24
  return `${arch}-unknown-linux-gnu`;
24
25
  throw new Error(`unsupported platform for native engine: ${process.platform} (use the default PGlite engine)`);
25
26
  }
26
- /** Download + unpack Postgres binaries if not already cached. Returns the install dir. */
27
+ /** A binary install is only usable if both the server and its catalog seed are present. */
28
+ function isCompleteInstall(dir) {
29
+ return existsSync(join(dir, 'bin', 'postgres')) && existsSync(join(dir, 'share', 'postgres.bki'));
30
+ }
31
+ /** Download + unpack Postgres binaries if not already cached (concurrency-safe). Returns the install dir. */
27
32
  export async function ensurePostgres(version = DEFAULT_PG_VERSION, cacheDir, log) {
28
33
  const t = target();
29
34
  const root = cacheDir ?? join(homedir(), '.cache', 'tinbase');
30
35
  const dir = join(root, `postgresql-${version}-${t}`);
31
- if (existsSync(join(dir, 'bin', 'postgres')))
36
+ if (isCompleteInstall(dir))
32
37
  return dir;
38
+ // Concurrency-safe: multiple test workers / processes may call this at once on
39
+ // a cold cache. Each downloads + extracts to unique temp paths, then atomically
40
+ // renames into place — so no worker ever sees a half-written tarball or a
41
+ // partially-extracted install dir.
33
42
  const url = `https://github.com/theseus-rs/postgresql-binaries/releases/download/${version}/postgresql-${version}-${t}.tar.gz`;
34
- log?.(`downloading postgres ${version} (${t})…`);
35
- const res = await fetch(url);
36
- if (!res.ok)
37
- throw new Error(`failed to download ${url}: HTTP ${res.status}`);
38
- mkdirSync(dir, { recursive: true });
39
- const tarball = join(root, `pg-${version}.tar.gz`);
40
- await writeFile(tarball, Buffer.from(await res.arrayBuffer()));
41
- execFileSync('tar', ['xzf', tarball, '-C', dir, '--strip-components=1']);
42
- rmSync(tarball, { force: true });
43
- log?.(`postgres installed to ${dir}`);
44
- return dir;
43
+ mkdirSync(root, { recursive: true });
44
+ const uniq = `${process.pid}-${randomBytes(6).toString('hex')}`;
45
+ const tarball = join(root, `pg-${version}-${uniq}.tar.gz`);
46
+ const tmpDir = join(root, `.tmp-${version}-${t}-${uniq}`);
47
+ try {
48
+ if (isCompleteInstall(dir))
49
+ return dir; // another worker finished while we started
50
+ log?.(`downloading postgres ${version} (${t})…`);
51
+ const res = await fetch(url);
52
+ if (!res.ok)
53
+ throw new Error(`failed to download ${url}: HTTP ${res.status}`);
54
+ await writeFile(tarball, Buffer.from(await res.arrayBuffer()));
55
+ mkdirSync(tmpDir, { recursive: true });
56
+ execFileSync('tar', ['xzf', tarball, '-C', tmpDir, '--strip-components=1']);
57
+ if (!isCompleteInstall(tmpDir))
58
+ throw new Error('postgres archive extracted incompletely');
59
+ // publish atomically; if another worker already did (or a stale dir exists), reconcile
60
+ try {
61
+ renameSync(tmpDir, dir);
62
+ }
63
+ catch {
64
+ if (!isCompleteInstall(dir)) {
65
+ rmSync(dir, { recursive: true, force: true });
66
+ renameSync(tmpDir, dir);
67
+ }
68
+ }
69
+ log?.(`postgres installed to ${dir}`);
70
+ return dir;
71
+ }
72
+ finally {
73
+ rmSync(tarball, { force: true });
74
+ rmSync(tmpDir, { recursive: true, force: true });
75
+ }
45
76
  }
46
77
  const TUNED_CONF = `
47
78
  # tinbase: memory-lean settings for an embedded, single-app Postgres
@@ -1 +1 @@
1
- {"version":3,"file":"engine.js","sourceRoot":"","sources":["../../../src/node/native/engine.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"engine.js","sourceRoot":"","sources":["../../../src/node/native/engine.ts"],"names":[],"mappings":"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"}
@@ -15,13 +15,26 @@ export interface RealtimeSocketLike {
15
15
  }
16
16
  export declare class RealtimeEngine {
17
17
  private db;
18
+ private jwtSecret?;
18
19
  private connections;
19
20
  private bindingCounter;
20
21
  private phxRefCounter;
21
22
  /** topic → key → metas */
22
23
  private presence;
23
24
  private stopCdc;
24
- constructor(db: Database);
25
+ private stopDbBroadcast;
26
+ constructor(db: Database, jwtSecret?: string | undefined);
27
+ /** Resolve a subscriber's access token to a role/claims context. */
28
+ private contextFromToken;
29
+ /**
30
+ * Authorize a private channel against RLS on realtime.messages, as the
31
+ * subscriber. read = a SELECT policy lets them receive; write = an INSERT
32
+ * policy lets them broadcast. Runs in a transaction that always rolls back so
33
+ * the probe rows never persist.
34
+ */
35
+ private authorizePrivate;
36
+ /** Fan a realtime.send() database broadcast out to a topic's subscribers. */
37
+ private dispatchDbBroadcast;
25
38
  start(): Promise<void>;
26
39
  stop(): void;
27
40
  /** Attach a socket. Returns callbacks the transport must wire up. */
@@ -47,6 +60,16 @@ export declare class RealtimeEngine {
47
60
  private handlePresence;
48
61
  private broadcastToTopic;
49
62
  private dispatchCdc;
63
+ /**
64
+ * Whether a subscriber may receive a given change event under RLS.
65
+ * - service_role (bypassrls) and non-RLS tables: always.
66
+ * - INSERT/UPDATE on an RLS table: re-query the row by PK as the subscriber;
67
+ * deliver only if it is visible to them.
68
+ * - DELETE on an RLS table: the row no longer exists to re-query, so per-row
69
+ * filtering isn't possible without WAL-level policy evaluation (WALRUS).
70
+ * We deliver DELETEs to authenticated/service subscribers only, never anon.
71
+ */
72
+ private canSee;
50
73
  private bindingMatches;
51
74
  }
52
75
  /** Evaluate a realtime filter string ("col=eq.value") against a row. */
@@ -1,22 +1,101 @@
1
+ import { quoteIdent } from '../db/database.js';
2
+ import { verifyJwt } from '../jwt.js';
1
3
  export class RealtimeEngine {
2
4
  db;
5
+ jwtSecret;
3
6
  connections = new Set();
4
7
  bindingCounter = 1;
5
8
  phxRefCounter = 1;
6
9
  /** topic → key → metas */
7
10
  presence = new Map();
8
11
  stopCdc = null;
9
- constructor(db) {
12
+ stopDbBroadcast = null;
13
+ constructor(db, jwtSecret) {
10
14
  this.db = db;
15
+ this.jwtSecret = jwtSecret;
16
+ }
17
+ /** Resolve a subscriber's access token to a role/claims context. */
18
+ async contextFromToken(token) {
19
+ if (!token || !this.jwtSecret)
20
+ return { role: 'anon', claims: null };
21
+ const claims = await verifyJwt(token, this.jwtSecret);
22
+ if (!claims)
23
+ return { role: 'anon', claims: null };
24
+ const role = typeof claims.role === 'string' ? claims.role : 'authenticated';
25
+ return { role, claims };
26
+ }
27
+ /**
28
+ * Authorize a private channel against RLS on realtime.messages, as the
29
+ * subscriber. read = a SELECT policy lets them receive; write = an INSERT
30
+ * policy lets them broadcast. Runs in a transaction that always rolls back so
31
+ * the probe rows never persist.
32
+ */
33
+ async authorizePrivate(subTopic, ctx) {
34
+ const claims = ctx.claims ? JSON.stringify(ctx.claims) : '';
35
+ try {
36
+ return await this.db.engine.transaction(async (tx) => {
37
+ // seed a probe row for the topic with RLS bypassed (service_role)
38
+ await tx.query(`select set_config('role', 'service_role', true)`);
39
+ await tx.query(`insert into realtime.messages (topic, extension, event, payload, private) values ($1, 'broadcast', 'authz', '{}'::jsonb, true)`, [subTopic]);
40
+ // become the subscriber and set the topic being authorized
41
+ await tx.query(`select set_config('role', $1, true), set_config('request.jwt.claims', $2, true), set_config('realtime.topic', $3, true)`, [ctx.role, claims, subTopic]);
42
+ // read: does a SELECT policy let them see the probe row for this topic?
43
+ const rd = await tx.query(`select count(*)::int as n from realtime.messages where topic = $1`, [subTopic]);
44
+ const read = (rd.rows[0]?.n ?? 0) > 0;
45
+ // write: does an INSERT policy let them broadcast? (last query — a
46
+ // failure aborts the tx, which we roll back anyway)
47
+ let write = true;
48
+ try {
49
+ await tx.query(`insert into realtime.messages (topic, extension, event, payload, private) values ($1, 'broadcast', 'authz-w', '{}'::jsonb, true)`, [subTopic]);
50
+ }
51
+ catch {
52
+ write = false;
53
+ }
54
+ throw { __authz: { read, write } };
55
+ });
56
+ }
57
+ catch (e) {
58
+ const authz = e.__authz;
59
+ if (authz)
60
+ return authz;
61
+ // realtime schema missing / unexpected error → deny (safe default)
62
+ return { read: false, write: false };
63
+ }
64
+ }
65
+ /** Fan a realtime.send() database broadcast out to a topic's subscribers. */
66
+ dispatchDbBroadcast(msg) {
67
+ const full = `realtime:${msg.topic}`;
68
+ for (const conn of this.connections) {
69
+ const channel = conn.channels.get(full) ?? conn.channels.get(msg.topic);
70
+ if (!channel)
71
+ continue;
72
+ this.send(conn, {
73
+ topic: channel.topic,
74
+ event: 'broadcast',
75
+ payload: { type: 'broadcast', event: msg.event, payload: msg.payload },
76
+ ref: null,
77
+ });
78
+ }
11
79
  }
12
80
  async start() {
13
81
  if (this.stopCdc)
14
82
  return;
15
83
  this.stopCdc = await this.db.onCdcEvent((e) => this.dispatchCdc(e));
84
+ // broadcast-from-database: realtime.send() → pg_notify → fan out to topic
85
+ this.stopDbBroadcast = await this.db.engine.listen('tinbase_realtime_broadcast', (payload) => {
86
+ try {
87
+ this.dispatchDbBroadcast(JSON.parse(payload));
88
+ }
89
+ catch {
90
+ // malformed payload — drop
91
+ }
92
+ });
16
93
  }
17
94
  stop() {
18
95
  this.stopCdc?.();
19
96
  this.stopCdc = null;
97
+ this.stopDbBroadcast?.();
98
+ this.stopDbBroadcast = null;
20
99
  for (const conn of this.connections)
21
100
  conn.socket.close(1001, 'server shutting down');
22
101
  this.connections.clear();
@@ -95,7 +174,16 @@ export class RealtimeEngine {
95
174
  this.handlePresence(conn, msg);
96
175
  break;
97
176
  case 'access_token':
98
- // token refresh — nothing to re-validate in this single-tenant setup
177
+ {
178
+ // supabase-js setAuth() refreshes the subscriber's token; re-derive ctx
179
+ const ctx = await this.contextFromToken(msg.payload?.access_token);
180
+ const channel = conn.channels.get(msg.topic);
181
+ if (channel)
182
+ channel.ctx = ctx;
183
+ else
184
+ for (const c of conn.channels.values())
185
+ c.ctx = ctx;
186
+ }
99
187
  break;
100
188
  default:
101
189
  break;
@@ -103,6 +191,22 @@ export class RealtimeEngine {
103
191
  }
104
192
  async handleJoin(conn, msg) {
105
193
  const config = (msg.payload?.config ?? {});
194
+ const ctx = await this.contextFromToken(msg.payload?.access_token);
195
+ const isPrivate = config.private === true;
196
+ let canBroadcast = true;
197
+ // Private channels are RLS-authorized against realtime.messages (skipped on
198
+ // subset engines with no RLS). No read policy → join is rejected.
199
+ if (isPrivate && !this.db.engine.minimalBootstrap) {
200
+ const sub = msg.topic.replace(/^realtime:/, '');
201
+ const authz = await this.authorizePrivate(sub, ctx);
202
+ if (!authz.read) {
203
+ this.reply(conn, msg, 'error', {
204
+ reason: `You do not have permissions to read from this Channel topic: ${sub}`,
205
+ });
206
+ return;
207
+ }
208
+ canBroadcast = authz.write;
209
+ }
106
210
  const bindings = [];
107
211
  for (const spec of config.postgres_changes ?? []) {
108
212
  const binding = {
@@ -140,6 +244,9 @@ export class RealtimeEngine {
140
244
  broadcastAck: config.broadcast?.ack ?? false,
141
245
  presenceKey: config.presence?.key || crypto.randomUUID(),
142
246
  presenceEnabled: config.presence?.enabled ?? true,
247
+ ctx,
248
+ private: isPrivate,
249
+ canBroadcast,
143
250
  };
144
251
  conn.channels.set(msg.topic, channel);
145
252
  this.reply(conn, msg, 'ok', {
@@ -234,6 +341,12 @@ export class RealtimeEngine {
234
341
  const sender = conn.channels.get(msg.topic);
235
342
  if (!sender)
236
343
  return;
344
+ // private channels require INSERT (write) authorization to broadcast
345
+ if (sender.private && !sender.canBroadcast) {
346
+ if (sender.broadcastAck && msg.ref)
347
+ this.reply(conn, msg, 'error', { reason: 'unauthorized' });
348
+ return;
349
+ }
237
350
  const userPayload = msg.payload.payload;
238
351
  const binaryFrame = userPayload instanceof Uint8Array
239
352
  ? encodeUserBroadcast(msg.topic, String(msg.payload.event ?? ''), userPayload)
@@ -327,6 +440,12 @@ export class RealtimeEngine {
327
440
  catch {
328
441
  // schema went away — still deliver the event without columns
329
442
  }
443
+ // RLS: only deliver a change to a subscriber if their role/claims would let
444
+ // them see the row. INSERT/UPDATE are re-checked by primary key as that
445
+ // subscriber; DELETE cannot be re-queried (the row is gone) — see note below.
446
+ const rlsTables = await this.db.getRlsTables(event.schema).catch(() => new Set());
447
+ const rlsEnabled = rlsTables.has(event.table);
448
+ const pk = rlsEnabled ? (await this.db.getSchemaInfo(event.schema)).tables.get(event.table)?.primaryKey ?? [] : [];
330
449
  for (const conn of this.connections) {
331
450
  for (const channel of conn.channels.values()) {
332
451
  const ids = channel.bindings
@@ -334,6 +453,8 @@ export class RealtimeEngine {
334
453
  .map((b) => b.id);
335
454
  if (ids.length === 0)
336
455
  continue;
456
+ if (!(await this.canSee(channel.ctx, event, rlsEnabled, pk)))
457
+ continue;
337
458
  this.send(conn, {
338
459
  topic: channel.topic,
339
460
  event: 'postgres_changes',
@@ -356,6 +477,37 @@ export class RealtimeEngine {
356
477
  }
357
478
  }
358
479
  }
480
+ /**
481
+ * Whether a subscriber may receive a given change event under RLS.
482
+ * - service_role (bypassrls) and non-RLS tables: always.
483
+ * - INSERT/UPDATE on an RLS table: re-query the row by PK as the subscriber;
484
+ * deliver only if it is visible to them.
485
+ * - DELETE on an RLS table: the row no longer exists to re-query, so per-row
486
+ * filtering isn't possible without WAL-level policy evaluation (WALRUS).
487
+ * We deliver DELETEs to authenticated/service subscribers only, never anon.
488
+ */
489
+ async canSee(ctx, event, rlsEnabled, pk) {
490
+ if (!rlsEnabled)
491
+ return true;
492
+ if (ctx.role === 'service_role')
493
+ return true;
494
+ if (event.type === 'DELETE')
495
+ return ctx.role !== 'anon';
496
+ if (pk.length === 0)
497
+ return ctx.role !== 'anon'; // can't PK-filter; conservative
498
+ const record = event.record ?? {};
499
+ const conds = pk.map((c, i) => `${quoteIdent(c)} = $${i + 1}`);
500
+ const params = pk.map((c) => record[c]);
501
+ if (params.some((v) => v === undefined))
502
+ return ctx.role !== 'anon';
503
+ try {
504
+ const res = await this.db.withContext(ctx, (q) => q(`select 1 from ${quoteIdent(event.schema)}.${quoteIdent(event.table)} where ${conds.join(' and ')} limit 1`, params));
505
+ return res.rows.length > 0;
506
+ }
507
+ catch {
508
+ return false;
509
+ }
510
+ }
359
511
  bindingMatches(b, e) {
360
512
  if (b.schema !== '*' && b.schema !== e.schema)
361
513
  return false;
@@ -1 +1 @@
1
- {"version":3,"file":"engine.js","sourceRoot":"","sources":["../../src/realtime/engine.ts"],"names":[],"mappings":"AAoDA,MAAM,OAAO,cAAc;IAQL;IAPZ,WAAW,GAAG,IAAI,GAAG,EAAc,CAAA;IACnC,cAAc,GAAG,CAAC,CAAA;IAClB,aAAa,GAAG,CAAC,CAAA;IACzB,0BAA0B;IAClB,QAAQ,GAAG,IAAI,GAAG,EAAsC,CAAA;IACxD,OAAO,GAAwB,IAAI,CAAA;IAE3C,YAAoB,EAAY;QAAZ,OAAE,GAAF,EAAE,CAAU;IAAG,CAAC;IAEpC,KAAK,CAAC,KAAK;QACT,IAAI,IAAI,CAAC,OAAO;YAAE,OAAM;QACxB,IAAI,CAAC,OAAO,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAA;IACrE,CAAC;IAED,IAAI;QACF,IAAI,CAAC,OAAO,EAAE,EAAE,CAAA;QAChB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAA;QACnB,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,WAAW;YAAE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,sBAAsB,CAAC,CAAA;QACpF,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAA;IAC1B,CAAC;IAED,qEAAqE;IACrE,OAAO,CAAC,MAA0B,EAAE,OAAyB,EAAE;QAI7D,MAAM,IAAI,GAAe,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,GAAG,EAAE,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,IAAI,OAAO,EAAE,CAAA;QAClF,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;QAC1B,OAAO;YACL,SAAS,EAAE,CAAC,IAAI,EAAE,EAAE;gBAClB,KAAK,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;YACrC,CAAC;YACD,OAAO,EAAE,GAAG,EAAE;gBACZ,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE;oBAAE,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,KAAK,CAAC,CAAA;gBACxE,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;YAC/B,CAAC;SACF,CAAA;IACH,CAAC;IAEO,IAAI,CAAC,IAAgB,EAAE,GAAmB;QAChD,IAAI,CAAC;YACH,MAAM,OAAO,GACX,IAAI,CAAC,GAAG,KAAK,OAAO;gBAClB,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,QAAQ,IAAI,IAAI,EAAE,GAAG,CAAC,GAAG,IAAI,IAAI,EAAE,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;gBAC5F,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAA;YACzB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;QAC3B,CAAC;QAAC,MAAM,CAAC;YACP,2BAA2B;QAC7B,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,IAAgB,EAAE,IAAoB,EAAE,MAAsB,EAAE,QAAiB;QAC7F,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;YACd,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,KAAK,EAAE,WAAW;YAClB,OAAO,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE;YAC7B,GAAG,EAAE,IAAI,CAAC,GAAG;YACb,QAAQ,EAAE,IAAI,CAAC,QAAQ,IAAI,IAAI;SAChC,CAAC,CAAA;IACJ,CAAC;IAEO,KAAK,CAAC,aAAa,CAAC,IAAgB,EAAE,IAAyB;QACrE,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC7B,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;YAC7B,OAAM;QACR,CAAC;QACD,IAAI,GAAmB,CAAA;QACvB,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAY,CAAA;YAC1C,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC1B,gEAAgE;gBAChE,MAAM,CAAC,QAAQ,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,CAAC,GAAG,MAM9C,CAAA;gBACD,GAAG,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,CAAA;YAChD,CAAC;iBAAM,CAAC;gBACN,GAAG,GAAG,MAAwB,CAAA;YAChC,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,OAAM;QACR,CAAC;QACD,IAAI,GAAG,CAAC,KAAK,KAAK,SAAS,IAAI,GAAG,CAAC,KAAK,KAAK,WAAW,EAAE,CAAC;YACzD,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,CAAA;YAC/B,OAAM;QACR,CAAC;QAED,QAAQ,GAAG,CAAC,KAAK,EAAE,CAAC;YAClB,KAAK,UAAU;gBACb,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,GAAG,CAAC,CAAA;gBAChC,MAAK;YACP,KAAK,WAAW;gBACd,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,GAAG,CAAC,KAAK,CAAC,CAAA;gBAClC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,CAAA;gBAC/B,MAAK;YACP,KAAK,WAAW;gBACd,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,GAAG,CAAC,CAAA;gBAC/B,MAAK;YACP,KAAK,UAAU;gBACb,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,GAAG,CAAC,CAAA;gBAC9B,MAAK;YACP,KAAK,cAAc;gBACjB,qEAAqE;gBACrE,MAAK;YACP;gBACE,MAAK;QACT,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,UAAU,CAAC,IAAgB,EAAE,GAAmB;QAC5D,MAAM,MAAM,GAAG,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,IAAI,EAAE,CAIxC,CAAA;QAED,MAAM,QAAQ,GAAsB,EAAE,CAAA;QACtC,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,gBAAgB,IAAI,EAAE,EAAE,CAAC;YACjD,MAAM,OAAO,GAAoB;gBAC/B,EAAE,EAAE,IAAI,CAAC,cAAc,EAAE;gBACzB,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,IAAI,GAAG,CAAC,CAAC,WAAW,EAAE;gBACxC,MAAM,EAAE,IAAI,CAAC,MAAM,IAAI,QAAQ;gBAC/B,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,GAAG;gBACxB,MAAM,EAAE,IAAI,CAAC,MAAM;aACpB,CAAA;YACD,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;YACtB,IAAI,OAAO,CAAC,KAAK,KAAK,GAAG,EAAE,CAAC;gBAC1B,IAAI,CAAC;oBACH,MAAM,IAAI,CAAC,EAAE,CAAC,gBAAgB,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,CAAC,CAAA;gBAC/D,CAAC;gBAAC,MAAM,CAAC;oBACP,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE;wBAC7B,MAAM,EAAE,qCAAqC,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,KAAK,EAAE;qBAC/E,CAAC,CAAA;oBACF,OAAM;gBACR,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,yEAAyE;gBACzE,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;gBACxD,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC;oBACvC,MAAM,IAAI,CAAC,EAAE,CAAC,gBAAgB,CAAC,OAAO,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAA;gBACvE,CAAC;YACH,CAAC;QACH,CAAC;QAED,MAAM,OAAO,GAAY;YACvB,KAAK,EAAE,GAAG,CAAC,KAAK;YAChB,OAAO,EAAE,GAAG,CAAC,QAAQ,IAAI,GAAG,CAAC,GAAG,IAAI,IAAI;YACxC,QAAQ;YACR,aAAa,EAAE,MAAM,CAAC,SAAS,EAAE,IAAI,IAAI,KAAK;YAC9C,YAAY,EAAE,MAAM,CAAC,SAAS,EAAE,GAAG,IAAI,KAAK;YAC5C,WAAW,EAAE,MAAM,CAAC,QAAQ,EAAE,GAAG,IAAI,MAAM,CAAC,UAAU,EAAE;YACxD,eAAe,EAAE,MAAM,CAAC,QAAQ,EAAE,OAAO,IAAI,IAAI;SAClD,CAAA;QACD,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,CAAC,CAAA;QAErC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE;YAC1B,gBAAgB,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBACrC,EAAE,EAAE,CAAC,CAAC,EAAE;gBACR,KAAK,EAAE,CAAC,CAAC,KAAK;gBACd,MAAM,EAAE,CAAC,CAAC,MAAM;gBAChB,KAAK,EAAE,CAAC,CAAC,KAAK;gBACd,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aAC1C,CAAC,CAAC;SACJ,CAAC,CAAA;QAEF,4BAA4B;QAC5B,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;QAC1C,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;YACd,KAAK,EAAE,GAAG,CAAC,KAAK;YAChB,KAAK,EAAE,gBAAgB;YACvB,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE;YAC/C,GAAG,EAAE,IAAI;SACV,CAAC,CAAA;QAEF,mEAAmE;QACnE,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACxB,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;gBACd,KAAK,EAAE,GAAG,CAAC,KAAK;gBAChB,KAAK,EAAE,QAAQ;gBACf,OAAO,EAAE;oBACP,MAAM,EAAE,IAAI;oBACZ,SAAS,EAAE,kBAAkB;oBAC7B,OAAO,EAAE,0BAA0B;oBACnC,OAAO,EAAE,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC;iBAC7C;gBACD,GAAG,EAAE,IAAI;aACV,CAAC,CAAA;QACJ,CAAC;IACH,CAAC;IAEO,YAAY,CAAC,IAAgB,EAAE,KAAa;QAClD,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;QACxC,IAAI,CAAC,OAAO;YAAE,OAAM;QACpB,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;QAC3B,iBAAiB;QACjB,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;QACtC,IAAI,KAAK,EAAE,GAAG,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC;YACpC,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,WAAW,CAAE,CAAA;YAC7C,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,CAAA;YACjC,IAAI,KAAK,CAAC,IAAI,KAAK,CAAC;gBAAE,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;YACjD,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE;gBAC3B,KAAK;gBACL,KAAK,EAAE,eAAe;gBACtB,OAAO,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,KAAK,EAAE,EAAE;gBAChE,GAAG,EAAE,IAAI;aACV,CAAC,CAAA;QACJ,CAAC;IACH,CAAC;IAED;;;;;OAKG;IACK,YAAY,CAAC,IAAgB,EAAE,KAAiB;QACtD,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC;YAAE,OAAM;QAC9C,MAAM,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,CAAC,GAAG,KAAK,CAAA;QAC3E,IAAI,MAAM,GAAG,CAAC,CAAA;QACd,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE,CAAA;QACjC,MAAM,IAAI,GAAG,CAAC,GAAW,EAAE,EAAE;YAC3B,MAAM,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,GAAG,CAAC,CAAC,CAAA;YAChE,MAAM,IAAI,GAAG,CAAA;YACb,OAAO,GAAG,CAAA;QACZ,CAAC,CAAA;QACD,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,CAAA;QAChC,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,CAAA;QACxB,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAA;QAC5B,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAA;QAChC,IAAI,CAAC,OAAO,CAAC,CAAA,CAAC,yBAAyB;QACvC,MAAM,YAAY,GAAG,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAA;QAE3C,MAAM,OAAO,GAA4B;YACvC,IAAI,EAAE,WAAW;YACjB,KAAK,EAAE,SAAS;YAChB,OAAO,EAAE,QAAQ,KAAK,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY;SACrF,CAAA;QACD,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE;YACzB,KAAK;YACL,KAAK,EAAE,WAAW;YAClB,OAAO;YACP,GAAG,EAAE,GAAG,IAAI,IAAI;YAChB,QAAQ,EAAE,OAAO,IAAI,IAAI;SAC1B,CAAC,CAAA;IACJ,CAAC;IAEO,eAAe,CAAC,IAAgB,EAAE,GAAmB;QAC3D,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;QAC3C,IAAI,CAAC,MAAM;YAAE,OAAM;QACnB,MAAM,WAAW,GAAI,GAAG,CAAC,OAAiC,CAAC,OAAO,CAAA;QAClE,MAAM,WAAW,GACf,WAAW,YAAY,UAAU;YAC/B,CAAC,CAAC,mBAAmB,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,CAAE,GAAG,CAAC,OAA+B,CAAC,KAAK,IAAI,EAAE,CAAC,EAAE,WAAW,CAAC;YACvG,CAAC,CAAC,IAAI,CAAA;QACV,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACrC,MAAM,OAAO,GAAG,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;YAC7C,IAAI,CAAC,OAAO;gBAAE,SAAQ;YACtB,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC,aAAa;gBAAE,SAAQ;YACrD,IAAI,WAAW,EAAE,CAAC;gBAChB,IAAI,CAAC;oBACH,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;gBAChC,CAAC;gBAAC,MAAM,CAAC;oBACP,2BAA2B;gBAC7B,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAAA;YAC7F,CAAC;QACH,CAAC;QACD,IAAI,MAAM,CAAC,YAAY,IAAI,GAAG,CAAC,GAAG;YAAE,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,CAAA;IACrE,CAAC;IAEO,cAAc,CAAC,IAAgB,EAAE,GAAmB;QAC1D,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;QAC5C,IAAI,CAAC,OAAO;YAAE,OAAM;QACpB,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAA;QAE9D,IAAI,KAAK,KAAK,OAAO,EAAE,CAAC;YACtB,MAAM,IAAI,GAAG;gBACX,GAAG,CAAE,GAAG,CAAC,OAAO,EAAE,OAAmC,IAAI,EAAE,CAAC;gBAC5D,OAAO,EAAE,IAAI,IAAI,CAAC,aAAa,EAAE,EAAE;aACpC,CAAA;YACD,IAAI,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;YACxC,IAAI,CAAC,KAAK,EAAE,CAAC;gBACX,KAAK,GAAG,IAAI,GAAG,EAAE,CAAA;gBACjB,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,CAAA;YACrC,CAAC;YACD,MAAM,QAAQ,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,WAAW,CAAC,CAAA;YAC/C,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;YACjD,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,KAAK,EAAE;gBAC/B,KAAK,EAAE,GAAG,CAAC,KAAK;gBAChB,KAAK,EAAE,eAAe;gBACtB,OAAO,EAAE;oBACP,KAAK,EAAE,EAAE,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,EAAE,EAAE;oBACnD,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE;iBAC5D;gBACD,GAAG,EAAE,IAAI;aACV,CAAC,CAAA;YACF,IAAI,GAAG,CAAC,GAAG;gBAAE,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,CAAA;YAC5C,OAAM;QACR,CAAC;QAED,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;YAC1C,MAAM,KAAK,GAAG,KAAK,EAAE,GAAG,CAAC,OAAO,CAAC,WAAW,CAAC,CAAA;YAC7C,IAAI,KAAK,IAAI,KAAK,EAAE,CAAC;gBACnB,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,CAAA;gBACjC,IAAI,KAAK,CAAC,IAAI,KAAK,CAAC;oBAAE,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;gBACrD,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,KAAK,EAAE;oBAC/B,KAAK,EAAE,GAAG,CAAC,KAAK;oBAChB,KAAK,EAAE,eAAe;oBACtB,OAAO,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,KAAK,EAAE,EAAE;oBAChE,GAAG,EAAE,IAAI;iBACV,CAAC,CAAA;YACJ,CAAC;YACD,IAAI,GAAG,CAAC,GAAG;gBAAE,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,CAAA;QAC9C,CAAC;IACH,CAAC;IAEO,gBAAgB,CAAC,KAAa,EAAE,GAAmB;QACzD,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACpC,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC;gBAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,CAAA;QACpD,CAAC;IACH,CAAC;IAED,yEAAyE;IAEjE,KAAK,CAAC,WAAW,CAAC,KAAe;QACvC,2DAA2D;QAC3D,IAAI,OAAO,GAAqC,EAAE,CAAA;QAClD,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;YACtD,OAAO,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,OAAO,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBAClE,IAAI,EAAE,CAAC,CAAC,IAAI;gBACZ,IAAI,EAAE,CAAC,CAAC,OAAO;aAChB,CAAC,CAAC,CAAA;QACL,CAAC;QAAC,MAAM,CAAC;YACP,6DAA6D;QAC/D,CAAC;QAED,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACpC,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC;gBAC7C,MAAM,GAAG,GAAG,OAAO,CAAC,QAAQ;qBACzB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;qBAC5C,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAA;gBACnB,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC;oBAAE,SAAQ;gBAC9B,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;oBACd,KAAK,EAAE,OAAO,CAAC,KAAK;oBACpB,KAAK,EAAE,kBAAkB;oBACzB,OAAO,EAAE;wBACP,GAAG;wBACH,IAAI,EAAE;4BACJ,MAAM,EAAE,KAAK,CAAC,MAAM;4BACpB,KAAK,EAAE,KAAK,CAAC,KAAK;4BAClB,gBAAgB,EAAE,KAAK,CAAC,gBAAgB;4BACxC,SAAS,EAAE,KAAK,CAAC,IAAI;4BACrB,IAAI,EAAE,KAAK,CAAC,IAAI;4BAChB,OAAO;4BACP,MAAM,EAAE,KAAK,CAAC,MAAM,IAAI,EAAE;4BAC1B,UAAU,EAAE,KAAK,CAAC,UAAU,IAAI,EAAE;4BAClC,MAAM,EAAE,KAAK,CAAC,MAAM,IAAI,IAAI;yBAC7B;qBACF;oBACD,GAAG,EAAE,IAAI;iBACV,CAAC,CAAA;YACJ,CAAC;QACH,CAAC;IACH,CAAC;IAEO,cAAc,CAAC,CAAkB,EAAE,CAAW;QACpD,IAAI,CAAC,CAAC,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM;YAAE,OAAO,KAAK,CAAA;QAC3D,IAAI,CAAC,CAAC,KAAK,KAAK,GAAG,IAAI,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,KAAK;YAAE,OAAO,KAAK,CAAA;QACxD,IAAI,CAAC,CAAC,KAAK,KAAK,GAAG,IAAI,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,IAAI;YAAE,OAAO,KAAK,CAAA;QACvD,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC;YACb,MAAM,GAAG,GAAG,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAA;YACzD,IAAI,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,EAAE,GAAG,CAAC;gBAAE,OAAO,KAAK,CAAA;QACvD,CAAC;QACD,OAAO,IAAI,CAAA;IACb,CAAC;CACF;AAED,wEAAwE;AACxE,MAAM,UAAU,WAAW,CAAC,MAAc,EAAE,GAA4B;IACtE,MAAM,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,4CAA4C,CAAC,CAAA;IACpE,IAAI,CAAC,CAAC;QAAE,OAAO,KAAK,CAAA;IACpB,MAAM,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAA;IAClC,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAA;IAEjC,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC;QAChB,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAA;QAC3F,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAA;IACjD,CAAC;IACD,IAAI,EAAE,KAAK,IAAI;QAAE,OAAO,WAAW,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAA;IACrD,IAAI,EAAE,KAAK,KAAK;QAAE,OAAO,CAAC,WAAW,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAA;IAEvD,MAAM,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,CAAA;IACxB,MAAM,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAA;IAC1B,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QAAE,OAAO,KAAK,CAAA;IACpD,QAAQ,EAAE,EAAE,CAAC;QACX,KAAK,IAAI;YACP,OAAO,CAAC,GAAG,CAAC,CAAA;QACd,KAAK,KAAK;YACR,OAAO,CAAC,IAAI,CAAC,CAAA;QACf,KAAK,IAAI;YACP,OAAO,CAAC,GAAG,CAAC,CAAA;QACd,KAAK,KAAK;YACR,OAAO,CAAC,IAAI,CAAC,CAAA;IACjB,CAAC;IACD,OAAO,KAAK,CAAA;AACd,CAAC;AAED,SAAS,WAAW,CAAC,MAAe,EAAE,QAAgB;IACpD,IAAI,MAAM,KAAK,IAAI,IAAI,MAAM,KAAK,SAAS;QAAE,OAAO,QAAQ,KAAK,MAAM,CAAA;IACvE,OAAO,MAAM,CAAC,MAAM,CAAC,KAAK,QAAQ,CAAA;AACpC,CAAC;AAED,SAAS,aAAa,CAAC,IAAY;IACjC,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;IACzB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAA;IACb,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,SAAS,mBAAmB,CAAC,KAAa,EAAE,KAAa,EAAE,OAAmB;IAC5E,MAAM,GAAG,GAAG,IAAI,WAAW,EAAE,CAAA;IAC7B,MAAM,UAAU,GAAG,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;IACpC,MAAM,UAAU,GAAG,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;IACpC,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,CAAC,GAAG,UAAU,CAAC,MAAM,GAAG,UAAU,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;IACtF,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA;IACV,GAAG,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,MAAM,CAAA;IAC1B,GAAG,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,MAAM,CAAA;IAC1B,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA;IACV,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA;IACV,GAAG,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC,CAAC,CAAA;IACtB,GAAG,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,CAAC,CAAA;IAC1C,GAAG,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC,CAAA;IAC3D,OAAO,GAAG,CAAA;AACZ,CAAC"}
1
+ {"version":3,"file":"engine.js","sourceRoot":"","sources":["../../src/realtime/engine.ts"],"names":[],"mappings":"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"}
@@ -16,7 +16,11 @@ export declare class QueryBuilder {
16
16
  private q;
17
17
  private aliasCounter;
18
18
  private consumedPaths;
19
- constructor(schema: string, info: SchemaInfo, q: ParsedQuery);
19
+ /** pg-mem can't bind a table alias in UPDATE/DELETE; omit it for subset engines. */
20
+ private aliasMutations;
21
+ constructor(schema: string, info: SchemaInfo, q: ParsedQuery, opts?: {
22
+ aliasMutations?: boolean;
23
+ });
20
24
  private nextAlias;
21
25
  private qualify;
22
26
  private table;
@@ -13,10 +13,13 @@ export class QueryBuilder {
13
13
  q;
14
14
  aliasCounter = 0;
15
15
  consumedPaths = new Set(['']);
16
- constructor(schema, info, q) {
16
+ /** pg-mem can't bind a table alias in UPDATE/DELETE; omit it for subset engines. */
17
+ aliasMutations;
18
+ constructor(schema, info, q, opts) {
17
19
  this.schema = schema;
18
20
  this.info = info;
19
21
  this.q = q;
22
+ this.aliasMutations = opts?.aliasMutations ?? true;
20
23
  }
21
24
  nextAlias() {
22
25
  return `_t${this.aliasCounter++}`;
@@ -115,9 +118,10 @@ export class QueryBuilder {
115
118
  this.requireColumn(tinfo, c);
116
119
  const params = [];
117
120
  const sets = keys.map((c) => `${quoteIdent(c)} = ${this.pushParam(params, tinfo, c, body[c])}`);
118
- const alias = 't0';
121
+ const alias = this.aliasMutations ? 't0' : '';
122
+ const asClause = alias ? ` as ${quoteIdent(alias)}` : '';
119
123
  const where = this.baseWhere(alias, []);
120
- const update = `update ${this.qualify(table)} as ${quoteIdent(alias)} set ${sets.join(', ')}${where} returning *`;
124
+ const update = `update ${this.qualify(table)}${asClause} set ${sets.join(', ')}${where} returning *`;
121
125
  this.assertAllPathsConsumed();
122
126
  if (!opts.returning)
123
127
  return { sql: update.replace(/ returning \*$/, ''), params };
@@ -125,9 +129,10 @@ export class QueryBuilder {
125
129
  }
126
130
  buildDelete(table, opts) {
127
131
  this.table(table);
128
- const alias = 't0';
132
+ const alias = this.aliasMutations ? 't0' : '';
133
+ const asClause = alias ? ` as ${quoteIdent(alias)}` : '';
129
134
  const where = this.baseWhere(alias, []);
130
- const del = `delete from ${this.qualify(table)} as ${quoteIdent(alias)}${where} returning *`;
135
+ const del = `delete from ${this.qualify(table)}${asClause}${where} returning *`;
131
136
  this.assertAllPathsConsumed();
132
137
  if (!opts.returning)
133
138
  return { sql: del.replace(/ returning \*$/, ''), params: [] };
@@ -389,9 +394,12 @@ export class QueryBuilder {
389
394
  params.push(JSON.stringify(value));
390
395
  return `$${params.length}${cast}`;
391
396
  }
392
- if (udt.startsWith('_') && Array.isArray(value)) {
397
+ if (Array.isArray(value)) {
393
398
  params.push(pgArrayLiteral(value));
394
- return `$${params.length}${cast}`;
399
+ // recognized array udt (`_text`) gets a `::text[]` cast; for engines that
400
+ // report an unhelpful udt (pg-mem says "array"), skip the cast and let the
401
+ // target column coerce the literal
402
+ return `$${params.length}${udt.startsWith('_') ? cast : ''}`;
395
403
  }
396
404
  if (typeof value === 'object') {
397
405
  params.push(JSON.stringify(value));
@@ -406,7 +414,8 @@ export class QueryBuilder {
406
414
  export function renderColumnExpr(alias, raw) {
407
415
  const tokens = raw.split(/(->>|->)/);
408
416
  const base = unquote(tokens[0].trim());
409
- let expr = `${quoteIdent(alias)}.${quoteIdent(base)}`;
417
+ // empty alias → unqualified column (used for UPDATE/DELETE on subset engines)
418
+ let expr = alias ? `${quoteIdent(alias)}.${quoteIdent(base)}` : quoteIdent(base);
410
419
  for (let i = 1; i < tokens.length; i += 2) {
411
420
  const op = tokens[i];
412
421
  const key = tokens[i + 1]?.trim() ?? '';