@agentshouse/mdruntime 0.1.0-c49444f2a8fc6 → 0.1.0-c4c5934c45f21

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 (261) hide show
  1. package/README.md +8 -8
  2. package/dist/acceptance.d.ts +3 -0
  3. package/dist/acceptance.d.ts.map +1 -0
  4. package/dist/acceptance.js +308 -0
  5. package/dist/act-lanes.d.ts +33 -0
  6. package/dist/act-lanes.d.ts.map +1 -0
  7. package/dist/act-lanes.js +177 -0
  8. package/dist/actions.d.ts +20 -0
  9. package/dist/actions.d.ts.map +1 -0
  10. package/dist/actions.js +251 -0
  11. package/dist/adapter.d.ts +31 -44
  12. package/dist/adapter.d.ts.map +1 -1
  13. package/dist/bootstrap.d.ts +1 -1
  14. package/dist/bootstrap.d.ts.map +1 -1
  15. package/dist/bootstrap.js +6 -18
  16. package/dist/cell.d.ts +6 -0
  17. package/dist/cell.d.ts.map +1 -0
  18. package/dist/cell.js +9 -0
  19. package/dist/change-set.d.ts +4 -0
  20. package/dist/change-set.d.ts.map +1 -1
  21. package/dist/change-set.js +6 -0
  22. package/dist/change.d.ts.map +1 -1
  23. package/dist/change.js +4 -2
  24. package/dist/chat-types.d.ts +5 -0
  25. package/dist/chat-types.d.ts.map +1 -0
  26. package/dist/chat-types.js +13 -0
  27. package/dist/client.d.ts +19 -13
  28. package/dist/client.d.ts.map +1 -1
  29. package/dist/client.js +30 -14
  30. package/dist/collection.d.ts +22 -4
  31. package/dist/collection.d.ts.map +1 -1
  32. package/dist/collection.js +12 -2
  33. package/dist/compile.d.ts +5 -0
  34. package/dist/compile.d.ts.map +1 -1
  35. package/dist/compile.js +200 -75
  36. package/dist/connection.d.ts +5 -143
  37. package/dist/connection.d.ts.map +1 -1
  38. package/dist/connection.js +104 -5308
  39. package/dist/conversation-live.d.ts +136 -0
  40. package/dist/conversation-live.d.ts.map +1 -0
  41. package/dist/conversation-live.js +249 -0
  42. package/dist/conversation-row.d.ts.map +1 -1
  43. package/dist/conversation-row.js +7 -1
  44. package/dist/conversation.d.ts +43 -44
  45. package/dist/conversation.d.ts.map +1 -1
  46. package/dist/conversation.js +906 -1024
  47. package/dist/declaration.d.ts +10 -0
  48. package/dist/declaration.d.ts.map +1 -0
  49. package/dist/declaration.js +24 -0
  50. package/dist/discovery.d.ts +10 -0
  51. package/dist/discovery.d.ts.map +1 -0
  52. package/dist/discovery.js +148 -0
  53. package/dist/durability.d.ts +9 -0
  54. package/dist/durability.d.ts.map +1 -1
  55. package/dist/expectation.d.ts +4 -2
  56. package/dist/expectation.d.ts.map +1 -1
  57. package/dist/expectation.js +33 -11
  58. package/dist/failure.d.ts +1 -0
  59. package/dist/failure.d.ts.map +1 -1
  60. package/dist/failure.js +3 -0
  61. package/dist/figures.d.ts +49 -0
  62. package/dist/figures.d.ts.map +1 -0
  63. package/dist/figures.js +197 -0
  64. package/dist/holdings.d.ts +29 -0
  65. package/dist/holdings.d.ts.map +1 -0
  66. package/dist/holdings.js +95 -0
  67. package/dist/host.d.ts +18 -2
  68. package/dist/host.d.ts.map +1 -1
  69. package/dist/host.js +45 -12
  70. package/dist/index.d.ts +22 -8
  71. package/dist/index.d.ts.map +1 -1
  72. package/dist/index.js +7 -2
  73. package/dist/install.d.ts +54 -0
  74. package/dist/install.d.ts.map +1 -0
  75. package/dist/install.js +538 -0
  76. package/dist/lifecycle.d.ts +7 -0
  77. package/dist/lifecycle.d.ts.map +1 -0
  78. package/dist/lifecycle.js +272 -0
  79. package/dist/listing.d.ts +48 -0
  80. package/dist/listing.d.ts.map +1 -0
  81. package/dist/listing.js +139 -0
  82. package/dist/live.d.ts.map +1 -1
  83. package/dist/live.js +3 -3
  84. package/dist/locks.d.ts +7 -0
  85. package/dist/locks.d.ts.map +1 -0
  86. package/dist/locks.js +33 -0
  87. package/dist/log.d.ts +1 -0
  88. package/dist/log.d.ts.map +1 -1
  89. package/dist/lost.d.ts +5 -0
  90. package/dist/lost.d.ts.map +1 -0
  91. package/dist/lost.js +50 -0
  92. package/dist/media.d.ts +1 -1
  93. package/dist/media.d.ts.map +1 -1
  94. package/dist/media.js +4 -4
  95. package/dist/memory.d.ts +4 -2
  96. package/dist/memory.d.ts.map +1 -1
  97. package/dist/memory.js +38 -20
  98. package/dist/messages.d.ts +1 -4
  99. package/dist/messages.d.ts.map +1 -1
  100. package/dist/messages.js +14 -32
  101. package/dist/model.d.ts +0 -1
  102. package/dist/model.d.ts.map +1 -1
  103. package/dist/model.js +0 -5
  104. package/dist/models.d.ts +10 -0
  105. package/dist/models.d.ts.map +1 -0
  106. package/dist/models.js +156 -0
  107. package/dist/observation.d.ts.map +1 -1
  108. package/dist/observation.js +12 -17
  109. package/dist/opened.d.ts +1 -1
  110. package/dist/opened.d.ts.map +1 -1
  111. package/dist/opened.js +5 -5
  112. package/dist/opening.d.ts +4 -0
  113. package/dist/opening.d.ts.map +1 -0
  114. package/dist/opening.js +59 -0
  115. package/dist/outcome.d.ts +4 -1
  116. package/dist/outcome.d.ts.map +1 -1
  117. package/dist/outcome.js +3 -0
  118. package/dist/overlay.d.ts +2 -1
  119. package/dist/overlay.d.ts.map +1 -1
  120. package/dist/overlay.js +32 -21
  121. package/dist/page-metadata.d.ts +8 -0
  122. package/dist/page-metadata.d.ts.map +1 -0
  123. package/dist/page-metadata.js +19 -0
  124. package/dist/parts.d.ts +3 -51
  125. package/dist/parts.d.ts.map +1 -1
  126. package/dist/parts.js +14 -111
  127. package/dist/paths.d.ts +1 -0
  128. package/dist/paths.d.ts.map +1 -1
  129. package/dist/paths.js +22 -0
  130. package/dist/preparation.d.ts +20 -0
  131. package/dist/preparation.d.ts.map +1 -0
  132. package/dist/preparation.js +233 -0
  133. package/dist/presence.d.ts +52 -0
  134. package/dist/presence.d.ts.map +1 -0
  135. package/dist/presence.js +220 -0
  136. package/dist/queries.d.ts +16 -0
  137. package/dist/queries.d.ts.map +1 -0
  138. package/dist/queries.js +270 -0
  139. package/dist/query.d.ts +10 -1
  140. package/dist/query.d.ts.map +1 -1
  141. package/dist/questions.d.ts +2 -0
  142. package/dist/questions.d.ts.map +1 -1
  143. package/dist/questions.js +5 -1
  144. package/dist/queue.d.ts +40 -0
  145. package/dist/queue.d.ts.map +1 -0
  146. package/dist/queue.js +455 -0
  147. package/dist/reach.d.ts +3 -1
  148. package/dist/reach.d.ts.map +1 -1
  149. package/dist/reach.js +38 -8
  150. package/dist/react.d.ts +18 -1
  151. package/dist/react.d.ts.map +1 -1
  152. package/dist/react.js +15 -1
  153. package/dist/readiness.d.ts +0 -1
  154. package/dist/readiness.d.ts.map +1 -1
  155. package/dist/reads.d.ts +37 -0
  156. package/dist/reads.d.ts.map +1 -0
  157. package/dist/reads.js +174 -0
  158. package/dist/refresh.js +2 -2
  159. package/dist/refusal.d.ts +5 -0
  160. package/dist/refusal.d.ts.map +1 -0
  161. package/dist/refusal.js +57 -0
  162. package/dist/replica.d.ts +5 -13
  163. package/dist/replica.d.ts.map +1 -1
  164. package/dist/replica.js +15 -16
  165. package/dist/room-draft.d.ts +4 -6
  166. package/dist/room-draft.d.ts.map +1 -1
  167. package/dist/room-draft.js +36 -52
  168. package/dist/room-drafts.d.ts +24 -0
  169. package/dist/room-drafts.d.ts.map +1 -0
  170. package/dist/room-drafts.js +217 -0
  171. package/dist/rows.d.ts.map +1 -1
  172. package/dist/rows.js +3 -4
  173. package/dist/runtime.d.ts +34 -0
  174. package/dist/runtime.d.ts.map +1 -0
  175. package/dist/runtime.js +1 -0
  176. package/dist/save.d.ts +41 -86
  177. package/dist/save.d.ts.map +1 -1
  178. package/dist/save.js +232 -112
  179. package/dist/saves.d.ts +32 -0
  180. package/dist/saves.d.ts.map +1 -0
  181. package/dist/saves.js +413 -0
  182. package/dist/seed.d.ts +11 -2
  183. package/dist/seed.d.ts.map +1 -1
  184. package/dist/seed.js +71 -1
  185. package/dist/shared.d.ts +1 -6
  186. package/dist/shared.d.ts.map +1 -1
  187. package/dist/shared.js +13 -95
  188. package/dist/shown.d.ts +32 -0
  189. package/dist/shown.d.ts.map +1 -0
  190. package/dist/shown.js +290 -0
  191. package/dist/socket/admission.d.ts +7 -0
  192. package/dist/socket/admission.d.ts.map +1 -0
  193. package/dist/socket/admission.js +39 -0
  194. package/dist/socket/answers.d.ts +6 -0
  195. package/dist/socket/answers.d.ts.map +1 -0
  196. package/dist/socket/answers.js +20 -0
  197. package/dist/socket/lanes.d.ts +20 -0
  198. package/dist/socket/lanes.d.ts.map +1 -0
  199. package/dist/socket/lanes.js +77 -0
  200. package/dist/socket/reads.d.ts +10 -0
  201. package/dist/socket/reads.d.ts.map +1 -0
  202. package/dist/socket/reads.js +31 -0
  203. package/dist/socket/session.d.ts +38 -0
  204. package/dist/socket/session.d.ts.map +1 -0
  205. package/dist/socket/session.js +23 -0
  206. package/dist/socket.d.ts +67 -0
  207. package/dist/socket.d.ts.map +1 -0
  208. package/dist/socket.js +170 -0
  209. package/dist/source.d.ts.map +1 -1
  210. package/dist/source.js +5 -4
  211. package/dist/store/installs.d.ts +30 -0
  212. package/dist/store/installs.d.ts.map +1 -0
  213. package/dist/store/installs.js +34 -0
  214. package/dist/store/readiness.d.ts +10 -0
  215. package/dist/store/readiness.d.ts.map +1 -0
  216. package/dist/store/readiness.js +52 -0
  217. package/dist/store/records.d.ts +212 -0
  218. package/dist/store/records.d.ts.map +1 -0
  219. package/dist/store/records.js +430 -0
  220. package/dist/store/room-held.d.ts +8 -0
  221. package/dist/store/room-held.d.ts.map +1 -0
  222. package/dist/store/room-held.js +17 -0
  223. package/dist/store/space.d.ts +11 -0
  224. package/dist/store/space.d.ts.map +1 -0
  225. package/dist/store/space.js +41 -0
  226. package/dist/store/watchers.d.ts +17 -0
  227. package/dist/store/watchers.d.ts.map +1 -0
  228. package/dist/store/watchers.js +56 -0
  229. package/dist/store/writes.d.ts +24 -0
  230. package/dist/store/writes.d.ts.map +1 -0
  231. package/dist/store/writes.js +125 -0
  232. package/dist/store.d.ts +112 -204
  233. package/dist/store.d.ts.map +1 -1
  234. package/dist/store.js +158 -394
  235. package/dist/stored.d.ts +1 -1
  236. package/dist/stored.d.ts.map +1 -1
  237. package/dist/stored.js +28 -14
  238. package/dist/surface.d.ts +88 -0
  239. package/dist/surface.d.ts.map +1 -0
  240. package/dist/surface.js +223 -0
  241. package/dist/sync.d.ts +19 -0
  242. package/dist/sync.d.ts.map +1 -0
  243. package/dist/sync.js +521 -0
  244. package/dist/tables.d.ts +32 -8
  245. package/dist/tables.d.ts.map +1 -1
  246. package/dist/tables.js +43 -12
  247. package/dist/tallies.d.ts +18 -0
  248. package/dist/tallies.d.ts.map +1 -0
  249. package/dist/tallies.js +129 -0
  250. package/dist/validation.d.ts.map +1 -1
  251. package/dist/validation.js +2 -2
  252. package/dist/wire.d.ts +48 -5
  253. package/dist/wire.d.ts.map +1 -1
  254. package/dist/wire.js +16 -3
  255. package/package.json +3 -2
  256. package/dist/attempt.d.ts +0 -16
  257. package/dist/attempt.d.ts.map +0 -1
  258. package/dist/attempt.js +0 -70
  259. package/dist/job.d.ts +0 -33
  260. package/dist/job.d.ts.map +0 -1
  261. package/dist/job.js +0 -54
package/dist/compile.js CHANGED
@@ -3,11 +3,11 @@ import { binaryRecord } from './binary.js';
3
3
  import { documentKey, pathOfKey, roomOfKey } from './rows.js';
4
4
  import { FROM_START, MAXIMUM_WINDOW } from './windows.js';
5
5
  const { all, any, exists, fragment, grouped, joined, listed } = sql;
6
- const VISIBLE = (alias) => `${alias}.visible = 1 AND ${alias}.present = 1 AND ${alias}.queried = 1`;
6
+ export const VISIBLE = (alias) => `${alias}.visible = 1 AND ${alias}.present = 1 AND ${alias}.queried = 1`;
7
7
  function located(alias) {
8
8
  return fragment(`(SELECT k.locator FROM replica_keys k WHERE k.key = ${alias}.key)`);
9
9
  }
10
- function within(alias, path) {
10
+ export function within(alias, path) {
11
11
  return fragment(`(${alias}.path = ? OR (${alias}.path >= ? AND ${alias}.path < ?))`, [
12
12
  path,
13
13
  `${path}/`,
@@ -116,7 +116,18 @@ const GROUP_TIES = {
116
116
  locale: undefined,
117
117
  localeOptions: undefined,
118
118
  };
119
- function keyTerm(key, ordering, index) {
119
+ const GREATEST = { ...GROUP_ORDER, direction: 'desc', nulls: 'last' };
120
+ const TIMES = {
121
+ created: { value: 'd.created', instant: 'd.created_instant' },
122
+ updated: { value: "(d.change ->> '$.time')", instant: 'd.changed_instant' },
123
+ };
124
+ function subfolderOf(column, prefix) {
125
+ const root = prefix ?? '';
126
+ const base = root === '' ? '' : `${root}/`;
127
+ const rest = `substr(${column}, length(?) + 1)`;
128
+ return fragment(`(CASE WHEN ${column} = ? THEN NULL WHEN instr(${rest}, '/') = 0 THEN ${column} ELSE ? || substr(${rest}, 1, instr(${rest}, '/') - 1) END)`, [root, base, base, base, base]);
129
+ }
130
+ function keyTerm(key, ordering, index, prefix) {
120
131
  if (key.of === 'field') {
121
132
  const alias = `o${index}`;
122
133
  return {
@@ -133,13 +144,37 @@ function keyTerm(key, ordering, index) {
133
144
  ], ''),
134
145
  };
135
146
  }
147
+ if (key.of === 'size') {
148
+ return {
149
+ term: {
150
+ ordering,
151
+ kind: fragment("(CASE WHEN d.bytes IS NULL THEN 'null' ELSE 'number' END)"),
152
+ value: fragment('d.bytes'),
153
+ },
154
+ join: null,
155
+ };
156
+ }
157
+ if (key.of === 'created' || key.of === 'updated') {
158
+ const { value, instant } = TIMES[key.of];
159
+ return {
160
+ term: {
161
+ ordering,
162
+ kind: fragment(`(CASE WHEN ${value} IS NULL THEN 'null' ELSE 'string' END)`),
163
+ value: fragment(value),
164
+ instant: fragment(instant),
165
+ },
166
+ join: null,
167
+ };
168
+ }
136
169
  const expression = key.of === 'room'
137
170
  ? located('d')
138
171
  : key.of === 'path'
139
172
  ? fragment('d.path')
140
173
  : key.of === 'type'
141
174
  ? fragment('d.type')
142
- : fragment('d.folder');
175
+ : key.of === 'subfolder'
176
+ ? subfolderOf('d.folder', prefix)
177
+ : fragment('d.folder');
143
178
  return {
144
179
  term: {
145
180
  ordering,
@@ -160,16 +195,17 @@ function decoded(kind, value) {
160
195
  return JSON.parse(value);
161
196
  return null;
162
197
  }
198
+ function sortedOf(kind, value, instant) {
199
+ return sql.sortValue(kind, decoded(kind, value), instant);
200
+ }
163
201
  function sortedValue(row, index) {
164
- const kind = row[`k${index}`];
165
- return sql.sortValue(kind, decoded(kind, row[`v${index}`]), row[`i${index}`]);
202
+ return sortedOf(row[`k${index}`], row[`v${index}`], row[`i${index}`]);
166
203
  }
167
204
  function decodedKey(key, row, index) {
168
- if (key.of === 'field') {
169
- const kind = row[`k${index}`];
170
- return kind === null || kind === undefined ? undefined : sortedValue(row, index);
171
- }
172
- return row[`v${index}`] ?? null;
205
+ const kind = row[`k${index}`];
206
+ if (key.of === 'field' && (kind === null || kind === undefined))
207
+ return undefined;
208
+ return sortedValue(row, index);
173
209
  }
174
210
  function instantOf(term) {
175
211
  return term.instant ?? fragment('NULL');
@@ -277,8 +313,8 @@ function sectionsOf(sections, names) {
277
313
  function documentOf(shape, room, row, linked) {
278
314
  const path = row.path;
279
315
  const type = row.type;
280
- const fileId = row.file_id ?? null;
281
- const revision = row.revision ?? null;
316
+ const fileId = row.file_id;
317
+ const revision = row.revision;
282
318
  if (type === null) {
283
319
  const binary = row.binary === null ? null : JSON.parse(row.binary);
284
320
  const content = row.content ?? null;
@@ -291,11 +327,13 @@ function documentOf(shape, room, row, linked) {
291
327
  binaryFile: binaryRecord(path, binary, revision ?? undefined),
292
328
  }),
293
329
  ...(shape.markdown && content !== null ? { markdown: content } : {}),
330
+ ...(shape.change ? { change: changeOf(row) } : {}),
294
331
  ...(shape.fileId ? { fileId } : {}),
295
332
  ...(shape.revision ? { revision } : {}),
333
+ ...heldFacts(shape, row),
296
334
  };
297
335
  }
298
- const read = bodied(shape) ? parse(row.content, path) : null;
336
+ const read = shape.sections !== null || shape.preamble ? parse(row.content, path) : null;
299
337
  const body = read?.ok === true ? read.document : null;
300
338
  const fields = JSON.parse(row.fields ?? '{}');
301
339
  return {
@@ -315,13 +353,19 @@ function documentOf(shape, room, row, linked) {
315
353
  ...(shape.preamble && body !== null ? { preamble: body.preamble } : {}),
316
354
  ...(shape.markdown ? { markdown: row.content } : {}),
317
355
  ...(shape.backlinks ? { backlinks: linked.get(documentKey(room, path)) ?? [] } : {}),
318
- ...(shape.change
319
- ? {
320
- change: row.change === null ? null : JSON.parse(row.change),
321
- }
322
- : {}),
356
+ ...(shape.change ? { change: changeOf(row) } : {}),
323
357
  ...(shape.fileId ? { fileId } : {}),
324
358
  ...(shape.revision ? { revision } : {}),
359
+ ...heldFacts(shape, row),
360
+ };
361
+ }
362
+ function changeOf(row) {
363
+ return row.change === null ? null : JSON.parse(row.change);
364
+ }
365
+ function heldFacts(shape, row) {
366
+ return {
367
+ ...(shape.size ? { size: row.bytes === null ? null : Number(row.bytes) } : {}),
368
+ ...(shape.created ? { created: row.created } : {}),
325
369
  };
326
370
  }
327
371
  function backlinksOf(connection, bound, rows) {
@@ -333,8 +377,8 @@ function backlinksOf(connection, bound, rows) {
333
377
  held.push(row.path);
334
378
  byKey.set(key, held);
335
379
  }
380
+ const reach = reached(bound, 's');
336
381
  for (const [key, targets] of byKey) {
337
- const reach = reached(bound, 's');
338
382
  const room = bound.rooms.find((one) => one.key === key).locator;
339
383
  const found = connection.rows(`SELECT target, path, type, field FROM (SELECT l.target, s.path, s.type, l.field, ROW_NUMBER() OVER (PARTITION BY l.target ORDER BY s.path, l.field) AS rank FROM (SELECT DISTINCT doc, target, field FROM replica_links WHERE key = ? AND kind = 'field' AND target IN (SELECT value FROM json_each(?))) l JOIN replica_entries s ON s.id = l.doc AND ${VISIBLE('s')} WHERE ${reach.sql}) WHERE rank <= ? ORDER BY target, path, field`, [key, JSON.stringify(targets), ...reach.bind, MAXIMUM_WINDOW]);
340
384
  for (const row of found) {
@@ -347,28 +391,25 @@ function backlinksOf(connection, bound, rows) {
347
391
  return linked;
348
392
  }
349
393
  function documents(connection, bound, plan, shape, budget) {
350
- const terms = shape.orderBy.map(({ key, options }, index) => keyTerm(key, orderingOf(options), index));
394
+ const terms = shape.orderBy.map(({ key, options }, index) => keyTerm(key, orderingOf(options), index, plan.root.pathPrefix));
351
395
  const filter = filtered(bound, plan);
352
396
  const cursor = plan.after?.values ?? null;
353
397
  const room = located('d');
354
- const tie = cursor === null
398
+ const after = cursor === null
355
399
  ? null
356
400
  : (() => {
357
401
  const key = cursor[shape.orderBy.length];
358
- return any([
402
+ return sql.following(terms.map(({ term }, index) => sql.beyond(bound.collate, term, cursor[index])), any([
359
403
  fragment(`${room.sql} > ?`, [...room.bind, roomOfKey(key)]),
360
404
  fragment(`${room.sql} = ? AND d.path > ?`, [
361
405
  ...room.bind,
362
406
  roomOfKey(key),
363
407
  pathOfKey(key),
364
408
  ]),
365
- ]);
409
+ ]));
366
410
  })();
367
- const after = cursor === null || tie === null
368
- ? null
369
- : sql.following(terms.map(({ term }, index) => sql.beyond(bound.collate, term, cursor[index])), tie);
370
411
  const selected = joined([
371
- fragment('SELECT d.id, d.key, d.path, d.type, d.binary, d.revision, d.fields, d.change, d.file_id'),
412
+ fragment('SELECT d.id, d.key, d.path, d.type, d.binary, d.revision, d.fields, d.change, d.file_id, d.bytes, d.created'),
372
413
  ...terms.map(({ term }, index) => joined([
373
414
  fragment(`, ${term.kind.sql} AS k${index}`, term.kind.bind),
374
415
  fragment(`, ${term.value.sql} AS v${index}`, term.value.bind),
@@ -437,16 +478,18 @@ function withContent(connection, rows, budget) {
437
478
  .map((row) => [row.id, row.content]));
438
479
  return kept.map((row) => ({ ...row, content: held.get(row.id) ?? null }));
439
480
  }
440
- function storedFolders(bound, plan) {
481
+ function storedFolders(bound, plan, subfolder) {
441
482
  if (plan.paths !== null || plan.fileIds !== null)
442
483
  return null;
443
484
  if (plan.hop !== null || plan.backlinks !== null)
444
485
  return null;
486
+ if (subfolder && plan.folder !== null)
487
+ return null;
445
488
  const whole = bound.rooms.filter(({ locator }) => bound.reach === null || bound.reach.rooms.includes(locator));
446
489
  if (whole.length === 0)
447
490
  return null;
448
491
  const keys = whole.map(({ key }) => key);
449
- const prefix = plan.root.pathPrefix;
492
+ const prefix = plan.root.pathPrefix ?? '';
450
493
  const outside = (bound.reach?.areas ?? []).flatMap((area) => {
451
494
  const key = bound.keys.get(area.room);
452
495
  if (key === undefined)
@@ -454,27 +497,51 @@ function storedFolders(bound, plan) {
454
497
  const fence = fenced('f', key, area, true);
455
498
  return [fragment(`NOT ${grouped(fence).sql}`, fence.bind)];
456
499
  });
500
+ const under = prefix === ''
501
+ ? subfolder
502
+ ? [fragment("f.path <> ''")]
503
+ : []
504
+ : [
505
+ subfolder
506
+ ? fragment('(f.path >= ? AND f.path < ?)', [`${prefix}/`, `${prefix}0`])
507
+ : within('f', prefix),
508
+ ];
457
509
  return all([
458
510
  fragment(`f.key IN ${listed(keys).sql} AND f.layer = 0 AND f.present = 1`, keys),
459
511
  ...outside,
460
- ...(prefix === null || prefix === ''
461
- ? []
462
- : [
463
- fragment('(f.path = ? OR (f.path >= ? AND f.path < ?))', [
464
- prefix,
465
- `${prefix}/`,
466
- `${prefix}0`,
467
- ]),
468
- ]),
512
+ ...under,
513
+ ...(plan.outside ?? []).map((folder) => fragment(`NOT ${within('f', folder).sql}`, within('f', folder).bind)),
469
514
  ...(plan.folder === null ? [] : [fragment('f.path = ?', [plan.folder])]),
470
515
  ]);
471
516
  }
517
+ const SIZES = [
518
+ 'CASE WHEN d.binary IS NULL THEN 1 ELSE 0 END AS dn',
519
+ 'CASE WHEN d.binary IS NULL THEN d.bytes ELSE 0 END AS ds',
520
+ 'CASE WHEN d.binary IS NULL THEN 0 ELSE 1 END AS fn',
521
+ 'CASE WHEN d.binary IS NULL THEN 0 ELSE d.bytes END AS fs',
522
+ ];
523
+ const LATEST = "d.changed_instant || ' ' || (d.change ->> '$.time') AS u";
524
+ function greatestTerm(ordering) {
525
+ return { ordering, kind: fragment('gk'), value: fragment('gv'), instant: fragment('gi') };
526
+ }
527
+ function latestOf(held) {
528
+ if (typeof held !== 'string')
529
+ return null;
530
+ return held.slice(held.indexOf(' ') + 1);
531
+ }
472
532
  function groups(connection, bound, plan, shape) {
533
+ const prefix = plan.root.pathPrefix;
473
534
  const keyed = shape.groupBy.map((key, index) => {
474
- const { term, join } = keyTerm(key, GROUP_ORDER, index);
535
+ const { term, join } = keyTerm(key, GROUP_ORDER, index, prefix);
475
536
  const kind = fragment(`COALESCE(${term.kind.sql}, 'null')`, term.kind.bind);
476
537
  return { term: { ...term, kind }, join };
477
538
  });
539
+ const ordering = shape.orderBy.map(({ by }) => by);
540
+ const sized = shape.size || ordering.includes('size');
541
+ const dated = shape.updated || ordering.includes('updated');
542
+ const greatest = shape.greatest === null
543
+ ? null
544
+ : keyTerm({ of: 'field', field: shape.greatest }, GREATEST, keyed.length, prefix);
478
545
  const filter = filtered(bound, plan);
479
546
  const inner = joined([
480
547
  fragment('SELECT '),
@@ -483,57 +550,107 @@ function groups(connection, bound, plan, shape) {
483
550
  fragment(`, ${term.value.sql} AS v${index}`, term.value.bind),
484
551
  fragment(`, ${instantOf(term).sql} AS i${index}`, instantOf(term).bind),
485
552
  ], '')), ', '),
486
- fragment(', 1 AS n FROM replica_entries d'),
487
- ...keyed.flatMap(({ join }) => (join === null ? [] : [fragment(' '), join])),
553
+ fragment(['', '1 AS n', ...(sized ? SIZES : []), ...(dated ? [LATEST] : [])].join(', ')),
554
+ ...(greatest === null
555
+ ? []
556
+ : [
557
+ fragment(`, ${greatest.term.kind.sql} AS gk`, greatest.term.kind.bind),
558
+ fragment(`, ${greatest.term.value.sql} AS gv`, greatest.term.value.bind),
559
+ fragment(`, ${instantOf(greatest.term).sql} AS gi`, instantOf(greatest.term).bind),
560
+ ]),
561
+ fragment(' FROM replica_entries d'),
562
+ ...[...keyed, ...(greatest === null ? [] : [greatest])].flatMap(({ join }) => join === null ? [] : [fragment(' '), join]),
488
563
  fragment(' WHERE '),
489
564
  filter,
490
565
  ], '');
491
- const folders = shape.groupBy.length === 1 && shape.groupBy[0].of === 'folder'
492
- ? storedFolders(bound, plan)
493
- : null;
566
+ const only = shape.groupBy.length === 1 ? shape.groupBy[0].of : null;
567
+ const subfolder = only === 'subfolder';
568
+ const folders = only === 'folder' || subfolder ? storedFolders(bound, plan, subfolder) : null;
569
+ const folderKey = subfolder ? subfolderOf('f.path', prefix) : fragment('f.path');
570
+ const zeros = [
571
+ ...(sized ? ['0', '0', '0', '0'] : []),
572
+ ...(dated ? ['NULL'] : []),
573
+ ...(greatest === null ? [] : ['NULL', 'NULL', 'NULL']),
574
+ ];
494
575
  const source = folders === null
495
576
  ? inner
496
577
  : joined([
497
578
  inner,
498
- fragment(" UNION ALL SELECT 'string' AS k0, f.path AS v0, NULL AS i0, 0 AS n FROM replica_folders f WHERE "),
579
+ fragment(` UNION ALL SELECT 'string' AS k0, ${folderKey.sql} AS v0, NULL AS i0, 0 AS n${zeros.map((one) => `, ${one}`).join('')} FROM replica_folders f WHERE `, folderKey.bind),
499
580
  folders,
500
581
  ], '');
501
- const columns = keyed
502
- .map((_, index) => `k${index}, min(v${index}) AS v${index}, i${index}`)
503
- .join(', ');
504
582
  const held = keyed
505
583
  .map((_, index) => `k${index}, i${index}, CASE WHEN i${index} IS NULL THEN v${index} END`)
506
584
  .join(', ');
507
- const counted = {
508
- ordering: { ...GROUP_ORDER },
509
- kind: fragment("'number'"),
510
- value: fragment('n'),
511
- };
512
- const outer = (index, ordering) => ({
513
- ordering,
585
+ const ranked = greatest === null
586
+ ? source
587
+ : joined([
588
+ fragment(`SELECT *, ROW_NUMBER() OVER (PARTITION BY ${held} ORDER BY `),
589
+ sql.sorted(bound.collate, greatestTerm(GREATEST)),
590
+ fragment(', gv) AS gr FROM ('),
591
+ source,
592
+ fragment(')'),
593
+ ], '');
594
+ const columns = [
595
+ ...keyed.map((_, index) => `k${index}, min(v${index}) AS v${index}, i${index}`),
596
+ 'sum(n) AS n',
597
+ ...(sized ? ['sum(dn) AS dn', 'sum(ds) AS ds', 'sum(fn) AS fn', 'sum(fs) AS fs'] : []),
598
+ ...(dated ? ['max(u) AS u'] : []),
599
+ ...(greatest === null
600
+ ? []
601
+ : ['gk', 'gv', 'gi'].map((column) => `min(CASE WHEN gr = 1 THEN ${column} END) AS ${column}`)),
602
+ ].join(', ');
603
+ const outer = (index, order) => ({
604
+ ordering: order,
514
605
  kind: fragment(`k${index}`),
515
606
  value: fragment(`v${index}`),
516
607
  });
517
- const ordered = shape.orderBy.map(({ by, direction }) => by === 'count'
518
- ? { ...counted, ordering: { ...GROUP_ORDER, direction } }
519
- : { ...outer(by, { ...GROUP_ORDER, direction }), instant: fragment(`i${by}`) });
608
+ const termOf = (by, order) => {
609
+ if (by === 'count')
610
+ return { ordering: order, kind: fragment("'number'"), value: fragment('n') };
611
+ if (by === 'size') {
612
+ return { ordering: order, kind: fragment("'number'"), value: fragment('(ds + fs)') };
613
+ }
614
+ if (by === 'updated') {
615
+ return {
616
+ ordering: order,
617
+ kind: fragment("(CASE WHEN u IS NULL THEN 'null' ELSE 'string' END)"),
618
+ value: fragment("substr(u, instr(u, ' ') + 1)"),
619
+ instant: fragment("substr(u, 1, instr(u, ' ') - 1)"),
620
+ };
621
+ }
622
+ if (by === 'greatest')
623
+ return greatestTerm(order);
624
+ return { ...outer(by, order), instant: fragment(`i${by}`) };
625
+ };
626
+ const valueOf = (row, by) => {
627
+ if (by === 'count')
628
+ return Number(row.n);
629
+ if (by === 'size')
630
+ return Number(row.ds) + Number(row.fs);
631
+ if (by === 'updated') {
632
+ const text = latestOf(row.u);
633
+ return text === null ? null : sql.sortValue('string', text, row.u.split(' ')[0]);
634
+ }
635
+ if (by === 'greatest')
636
+ return sortedOf(row.gk, row.gv, row.gi);
637
+ return sortedValue(row, by);
638
+ };
639
+ const ordered = shape.orderBy.map(({ by, direction, nulls }) => termOf(by, { ...GROUP_ORDER, direction, nulls: nulls ?? GROUP_ORDER.nulls }));
520
640
  const ties = keyed.flatMap((_, index) => [
521
641
  { ...outer(index, GROUP_TIES), total: true },
522
642
  { ordering: GROUP_TIES, kind: fragment("'string'"), value: fragment(`k${index}`) },
523
643
  ]);
524
644
  const cursor = plan.after?.values ?? null;
525
- const tieValues = cursor === null
645
+ const after = cursor === null
526
646
  ? null
527
- : cursor[shape.orderBy.length].flatMap((value) => [
528
- value,
529
- heldKind(value ?? null),
530
- ]);
531
- const after = cursor === null || tieValues === null
532
- ? null
533
- : sql.following(ordered.map((term, index) => sql.beyond(bound.collate, term, cursor[index])), sql.following(ties
534
- .slice(0, -1)
535
- .map((term, index) => sql.beyond(bound.collate, term, tieValues[index])), sql.beyond(bound.collate, ties.at(-1), tieValues.at(-1)).beyond));
536
- const grouping = joined([fragment(`SELECT ${columns}, sum(n) AS n FROM (`), source, fragment(`) GROUP BY ${held}`)], '');
647
+ : (() => {
648
+ const tieValues = cursor[shape.orderBy.length].flatMap((value) => [value, heldKind(value ?? null)]);
649
+ return sql.following(ordered.map((term, index) => sql.beyond(bound.collate, term, cursor[index])), sql.following(ties
650
+ .slice(0, -1)
651
+ .map((term, index) => sql.beyond(bound.collate, term, tieValues[index])), sql.beyond(bound.collate, ties.at(-1), tieValues.at(-1)).beyond));
652
+ })();
653
+ const grouping = joined([fragment(`SELECT ${columns} FROM (`), ranked, fragment(`) GROUP BY ${held}`)], '');
537
654
  const windowed = joined([
538
655
  fragment('SELECT * FROM ('),
539
656
  grouping,
@@ -546,16 +663,24 @@ function groups(connection, bound, plan, shape) {
546
663
  const rows = connection.rows(windowed.sql, windowed.bind);
547
664
  const kept = plan.limit === null ? rows : rows.slice(0, plan.limit);
548
665
  const keyOf = (row) => keyed.map((_, index) => decoded(row[`k${index}`], row[`v${index}`]));
549
- const found = kept.map((row) => ({ key: keyOf(row), count: Number(row.n) }));
666
+ const found = kept.map((row) => ({
667
+ key: keyOf(row),
668
+ count: Number(row.n),
669
+ ...(shape.size
670
+ ? {
671
+ documents: { count: Number(row.dn), size: Number(row.ds) },
672
+ files: { count: Number(row.fn), size: Number(row.fs) },
673
+ }
674
+ : {}),
675
+ ...(shape.updated ? { updated: latestOf(row.u) } : {}),
676
+ ...(shape.greatest === null ? {} : { greatest: decoded(row.gk, row.gv) }),
677
+ }));
550
678
  const last = kept.at(-1);
551
679
  const next = plan.limit === null || rows.length <= plan.limit
552
680
  ? undefined
553
681
  : last === undefined
554
682
  ? (plan.after?.text ?? FROM_START)
555
- : cursorOf([
556
- ...shape.orderBy.map(({ by }) => by === 'count' ? Number(last.n) : sortedValue(last, by)),
557
- keyOf(last),
558
- ]);
683
+ : cursorOf([...shape.orderBy.map(({ by }) => valueOf(last, by)), keyOf(last)]);
559
684
  const total = plan.total
560
685
  ? Number(connection.rows(joined([fragment('SELECT count(*) AS held FROM ('), grouping, fragment(')')], '').sql, grouping.bind)[0].held)
561
686
  : undefined;
@@ -1,53 +1,8 @@
1
- import { type DocumentQuery, type GroupQuery } from '@agentshouse/mdmodel';
2
- import { type TypesResult } from './model.js';
3
- import { type Observation } from './observation.js';
4
- import { type DocumentResult, type GroupResult, type PendingResult } from './query.js';
5
- import { type EntrySeed } from './seed.js';
6
- import { type SearchRequest, type SearchResult } from './search.js';
7
- import { type Adapter, type Authorization, type Member, type ProviderRefusal, type ServiceMode } from './adapter.js';
8
- import { type ChatDraftSurface, type ConversationAgent, type ConversationEntry, type ConversationOptions, type ConversationSurface, type ConversationView } from './conversation.js';
9
- import { type WrittenBy } from './change.js';
10
- import type { Open } from './open.js';
11
- import { type AttachAnswer, type BinaryLinkAnswer, type CallResult, type HeldBinaryAnswer, type HeldShownAnswer, type HistoryAnswer, type QueueEntry, type Resolution } from './outcome.js';
1
+ import type { Adapter, Authorization } from './adapter.js';
2
+ import { type RuntimeShell } from './durability.js';
12
3
  import { type Recovery } from './recovery.js';
13
- import { type SaveRefusal } from './save.js';
14
- import { type RoomDraft, type RoomDraftParts, type RoomDraftWrite } from './room-draft.js';
15
- import { type SyncStatus } from './status.js';
16
- import { type RuntimeShell, type UnsentWork } from './durability.js';
17
- import { type CodeAvailability, type Persistence, type Readiness } from './readiness.js';
18
- import type { RuntimeDatabase } from './tables.js';
19
- import { type NarrowedView, type PortReach, type RuntimeView } from './reach.js';
20
- export type AppTypedSelection = {
21
- roots: readonly string[];
22
- model: TypesResult;
23
- };
24
- export type AppRoom = {
25
- name: string;
26
- locator: string;
27
- handle: string;
28
- operations: import('./adapter.js').OperationScopes;
29
- replica: import('./adapter.js').ReplicaAdmission;
30
- model: TypesResult;
31
- typedSelection: AppTypedSelection | null;
32
- providerOwnedPaths: readonly string[];
33
- roomVersion: string | null;
34
- documents: number;
35
- synchronizationAvailable: boolean;
36
- refusal: ProviderRefusal | null;
37
- locked: boolean;
38
- };
39
- export type RoomSchemas = {
40
- collection: TypesResult;
41
- typedSelection: TypesResult | null;
42
- };
43
- type RefusalReason = 'missing-required-guarantee' | 'revoked-authorization';
44
- export type ConnectionRefusalCode = Open<RefusalReason>;
45
- export type ConnectionRefusal = {
46
- code: ConnectionRefusalCode;
47
- retryable: boolean;
48
- reauthorizationOffered: boolean;
49
- refusal: ProviderRefusal | null;
50
- };
4
+ import { type RuntimeDatabase } from './store.js';
5
+ import { type ComposedRuntime } from './surface.js';
51
6
  export type MdRuntimeOptions = {
52
7
  adapter: Adapter;
53
8
  shell: RuntimeShell;
@@ -56,100 +11,7 @@ export type MdRuntimeOptions = {
56
11
  signal?: AbortSignal;
57
12
  recovery?: Recovery;
58
13
  usableWhenHeld?: readonly string[];
59
- };
60
- export type SaveResult = {
61
- outcome: 'saved';
62
- identifier: string;
63
- } | ({
64
- outcome: 'refused';
65
- } & SaveRefusal);
66
- export type SavedRoomDraft = {
67
- readonly path: string;
68
- readonly revision: string;
69
- };
70
- export type SavedParts = {
71
- readonly path: string;
72
- readonly parts: RoomDraftParts;
73
- };
74
- export type RoomDraftSurface = {
75
- list(): Promise<readonly RoomDraft[]>;
76
- read(room: string, path: string): Promise<RoomDraft | null>;
77
- write(room: string, path: string, revision: string | null, parts: unknown, next?: string): Promise<RoomDraftWrite>;
78
- discard(room: string, path: string, revision: string): Promise<RoomDraftWrite>;
79
- };
80
- export type PresentationSurface = {
81
- read(app: string): Promise<unknown>;
82
- write(app: string, value: unknown): Promise<void>;
83
- edit(app: string, members: Readonly<Record<string, unknown>>): Promise<void>;
84
- };
85
- export type BinaryFileSurface = {
86
- read(room: string, path: string, revision?: string): Promise<HeldBinaryAnswer>;
87
- link(room: string, path: string, revision?: string): Promise<BinaryLinkAnswer>;
88
- show(room: string, path: string, revision?: string): Promise<HeldShownAnswer>;
89
- attach(room: string, file: File): Promise<AttachAnswer>;
90
- part(file: string, part: number): Promise<Uint8Array | null>;
91
- };
92
- export type HistoryQuery = {
93
- revision?: string;
94
- pageToken?: string;
95
- };
96
- export type MdRuntime = {
97
- loaded(): Promise<void>;
98
- rooms(): Promise<readonly AppRoom[]>;
99
- query: {
100
- (query: DocumentQuery): Promise<DocumentResult | PendingResult>;
101
- (query: GroupQuery): Promise<GroupResult | PendingResult>;
102
- };
103
- search(request: SearchRequest): Promise<SearchResult>;
104
- types(locator: string): Promise<RoomSchemas>;
105
- roomDraft: RoomDraftSurface;
106
- conversation: ConversationSurface;
107
- chatDraft: ChatDraftSurface;
108
- presentation: PresentationSurface;
109
- save(room: string, roomDrafts: readonly SavedRoomDraft[], writtenBy?: WrittenBy): Promise<SaveResult>;
110
- saveParts(room: string, parts: readonly SavedParts[], writtenBy?: WrittenBy): Promise<SaveResult>;
111
- history(locator: string, path: string, query?: HistoryQuery): Promise<HistoryAnswer>;
112
- resolve(room: string, path: string, destination: string): Promise<Resolution>;
113
- binaryFile: BinaryFileSurface;
114
- call(name: string, input: unknown): Promise<CallResult>;
115
- reached(locator: string, roomVersion: string, path?: string): Promise<boolean>;
116
- log(): string;
117
- persistence(): boolean;
118
- retry(): Promise<void>;
119
- cleanUp(): Promise<number>;
120
- unsent(): Promise<readonly UnsentWork[]>;
121
- reset(): Promise<void>;
122
- observe: {
123
- (topic: 'rooms'): Promise<Observation<readonly AppRoom[]>>;
124
- (topic: 'readiness'): Promise<Observation<Readiness>>;
125
- (topic: 'connection-refusal'): Promise<Observation<ConnectionRefusal | null>>;
126
- (topic: 'storage-loss'): Promise<Observation<string | null>>;
127
- (topic: 'sync-status'): Promise<Observation<SyncStatus>>;
128
- (topic: 'service-mode'): Promise<Observation<ServiceMode>>;
129
- (topic: 'member'): Promise<Observation<Member | null>>;
130
- (topic: 'authority-changes'): Promise<Observation<number>>;
131
- (topic: 'query', query: DocumentQuery): Promise<Observation<DocumentResult | PendingResult>>;
132
- (topic: 'query', query: GroupQuery): Promise<Observation<GroupResult | PendingResult>>;
133
- (topic: 'queue', locator: string): Promise<Observation<readonly QueueEntry[]>>;
134
- (topic: 'room-drafts'): Promise<Observation<readonly RoomDraft[]>>;
135
- (topic: 'presentation', app: string): Promise<Observation<unknown>>;
136
- (topic: 'conversation', conversation: string, options: ConversationOptions): Promise<Observation<ConversationView>>;
137
- (topic: 'conversations'): Promise<Observation<readonly ConversationEntry[]>>;
138
- (topic: 'agents'): Promise<Observation<readonly ConversationAgent[]>>;
139
- };
140
- reauthorize(): Promise<void>;
141
- };
142
- export type RuntimeTopic = 'rooms' | 'readiness' | 'connection-refusal' | 'storage-loss' | 'sync-status' | 'service-mode' | 'member' | 'authority-changes' | 'query' | 'queue' | 'room-drafts' | 'presentation' | 'conversation' | 'conversations' | 'agents';
143
- export type ReadinessPort = {
144
- readonly target: string;
145
- readonly code: CodeAvailability;
146
- };
147
- export type ComposedRuntime = RuntimeView & {
148
- seed(entry: EntrySeed): void;
149
- stop(): Promise<void>;
150
- persisted(answer: Persistence): void;
151
- within(reach: PortReach | null, port: ReadinessPort): NarrowedView;
14
+ build?: string;
152
15
  };
153
16
  export declare function composeRuntime(options: MdRuntimeOptions): ComposedRuntime;
154
- export {};
155
17
  //# sourceMappingURL=connection.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"connection.d.ts","sourceRoot":"","sources":["../src/connection.ts"],"names":[],"mappings":"AAAA,OAAO,EAOL,KAAK,aAAa,EAClB,KAAK,UAAU,EAGhB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAKL,KAAK,WAAW,EACjB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAoB,KAAK,WAAW,EAAqB,MAAM,kBAAkB,CAAC;AACzF,OAAO,EAEL,KAAK,cAAc,EACnB,KAAK,WAAW,EAChB,KAAK,aAAa,EAMnB,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAgB,KAAK,SAAS,EAAe,MAAM,WAAW,CAAC;AAEtE,OAAO,EAAgB,KAAK,aAAa,EAAE,KAAK,YAAY,EAAE,MAAM,aAAa,CAAC;AAElF,OAAO,EAEL,KAAK,OAAO,EAIZ,KAAK,aAAa,EAMlB,KAAK,MAAM,EAYX,KAAK,eAAe,EAGpB,KAAK,WAAW,EAEjB,MAAM,cAAc,CAAC;AAGtB,OAAO,EAEL,KAAK,gBAAgB,EACrB,KAAK,iBAAiB,EACtB,KAAK,iBAAiB,EACtB,KAAK,mBAAmB,EAExB,KAAK,mBAAmB,EACxB,KAAK,gBAAgB,EACtB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAML,KAAK,SAAS,EACf,MAAM,aAAa,CAAC;AAUrB,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAKtC,OAAO,EAeL,KAAK,YAAY,EACjB,KAAK,gBAAgB,EACrB,KAAK,UAAU,EAEf,KAAK,gBAAgB,EACrB,KAAK,eAAe,EACpB,KAAK,aAAa,EAClB,KAAK,UAAU,EACf,KAAK,UAAU,EAEhB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAuD,KAAK,QAAQ,EAAE,MAAM,eAAe,CAAC;AAEnG,OAAO,EAQL,KAAK,WAAW,EAEjB,MAAM,WAAW,CAAC;AAqBnB,OAAO,EAiBL,KAAK,SAAS,EAEd,KAAK,cAAc,EACnB,KAAK,cAAc,EAEpB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAKL,KAAK,UAAU,EAChB,MAAM,aAAa,CAAC;AACrB,OAAO,EAIL,KAAK,YAAY,EACjB,KAAK,UAAU,EAChB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAEL,KAAK,gBAAgB,EAMrB,KAAK,WAAW,EAChB,KAAK,SAAS,EAGf,MAAM,gBAAgB,CAAC;AAgBxB,OAAO,KAAK,EAIV,eAAe,EAIhB,MAAM,aAAa,CAAC;AAGrB,OAAO,EAOL,KAAK,YAAY,EACjB,KAAK,SAAS,EACd,KAAK,WAAW,EAEjB,MAAM,YAAY,CAAC;AAsBpB,MAAM,MAAM,iBAAiB,GAAG;IAC9B,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;IACzB,KAAK,EAAE,WAAW,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,OAAO,GAAG;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,OAAO,cAAc,EAAE,eAAe,CAAC;IACnD,OAAO,EAAE,OAAO,cAAc,EAAE,gBAAgB,CAAC;IACjD,KAAK,EAAE,WAAW,CAAC;IACnB,cAAc,EAAE,iBAAiB,GAAG,IAAI,CAAC;IACzC,kBAAkB,EAAE,SAAS,MAAM,EAAE,CAAC;IACtC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,wBAAwB,EAAE,OAAO,CAAC;IAClC,OAAO,EAAE,eAAe,GAAG,IAAI,CAAC;IAChC,MAAM,EAAE,OAAO,CAAC;CACjB,CAAC;AAIF,MAAM,MAAM,WAAW,GAAG;IACxB,UAAU,EAAE,WAAW,CAAC;IACxB,cAAc,EAAE,WAAW,GAAG,IAAI,CAAC;CACpC,CAAC;AAEF,KAAK,aAAa,GAAG,4BAA4B,GAAG,uBAAuB,CAAC;AAE5E,MAAM,MAAM,qBAAqB,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC;AAExD,MAAM,MAAM,iBAAiB,GAAG;IAC9B,IAAI,EAAE,qBAAqB,CAAC;IAC5B,SAAS,EAAE,OAAO,CAAC;IACnB,sBAAsB,EAAE,OAAO,CAAC;IAChC,OAAO,EAAE,eAAe,GAAG,IAAI,CAAC;CACjC,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,YAAY,CAAC;IACpB,QAAQ,EAAE,eAAe,CAAC;IAC1B,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,cAAc,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CACpC,CAAC;AAEF,MAAM,MAAM,UAAU,GAClB;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,GACxC,CAAC;IAAE,OAAO,EAAE,SAAS,CAAA;CAAE,GAAG,WAAW,CAAC,CAAC;AAE3C,MAAM,MAAM,cAAc,GAAG;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC;AAElF,MAAM,MAAM,UAAU,GAAG;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,cAAc,CAAA;CAAE,CAAC;AAEnF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,IAAI,IAAI,OAAO,CAAC,SAAS,SAAS,EAAE,CAAC,CAAC;IACtC,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,CAAC;IAC5D,KAAK,CACH,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,GAAG,IAAI,EACvB,KAAK,EAAE,OAAO,EACd,IAAI,CAAC,EAAE,MAAM,GACZ,OAAO,CAAC,cAAc,CAAC,CAAC;IAC3B,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;CAChF,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAChC,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACpC,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAClD,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC9E,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAC;IAC/E,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAC;IAC/E,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;IAC9E,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;IACxD,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,CAAC;CAC9D,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,SAAS,GAAG;IACtB,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACxB,KAAK,IAAI,OAAO,CAAC,SAAS,OAAO,EAAE,CAAC,CAAC;IACrC,KAAK,EAAE;QACL,CAAC,KAAK,EAAE,aAAa,GAAG,OAAO,CAAC,cAAc,GAAG,aAAa,CAAC,CAAC;QAChE,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,WAAW,GAAG,aAAa,CAAC,CAAC;KAC3D,CAAC;IACF,MAAM,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;IACtD,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IAC7C,SAAS,EAAE,gBAAgB,CAAC;IAC5B,YAAY,EAAE,mBAAmB,CAAC;IAClC,SAAS,EAAE,gBAAgB,CAAC;IAC5B,YAAY,EAAE,mBAAmB,CAAC;IAClC,IAAI,CACF,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,SAAS,cAAc,EAAE,EACrC,SAAS,CAAC,EAAE,SAAS,GACpB,OAAO,CAAC,UAAU,CAAC,CAAC;IACvB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,UAAU,EAAE,EAAE,SAAS,CAAC,EAAE,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;IAClG,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;IACrF,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;IAC9E,UAAU,EAAE,iBAAiB,CAAC;IAC9B,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;IACxD,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC/E,GAAG,IAAI,MAAM,CAAC;IACd,WAAW,IAAI,OAAO,CAAC;IACvB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACvB,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;IAC3B,MAAM,IAAI,OAAO,CAAC,SAAS,UAAU,EAAE,CAAC,CAAC;IACzC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACvB,OAAO,EAAE;QACP,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,WAAW,CAAC,SAAS,OAAO,EAAE,CAAC,CAAC,CAAC;QAC3D,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC;QACtD,CAAC,KAAK,EAAE,oBAAoB,GAAG,OAAO,CAAC,WAAW,CAAC,iBAAiB,GAAG,IAAI,CAAC,CAAC,CAAC;QAC9E,CAAC,KAAK,EAAE,cAAc,GAAG,OAAO,CAAC,WAAW,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC;QAC7D,CAAC,KAAK,EAAE,aAAa,GAAG,OAAO,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC,CAAC;QACzD,CAAC,KAAK,EAAE,cAAc,GAAG,OAAO,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,CAAC;QAC3D,CAAC,KAAK,EAAE,QAAQ,GAAG,OAAO,CAAC,WAAW,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC;QACvD,CAAC,KAAK,EAAE,mBAAmB,GAAG,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC;QAC3D,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,aAAa,GAAG,OAAO,CAAC,WAAW,CAAC,cAAc,GAAG,aAAa,CAAC,CAAC,CAAC;QAC7F,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,WAAW,CAAC,WAAW,GAAG,aAAa,CAAC,CAAC,CAAC;QACvF,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,SAAS,UAAU,EAAE,CAAC,CAAC,CAAC;QAC/E,CAAC,KAAK,EAAE,aAAa,GAAG,OAAO,CAAC,WAAW,CAAC,SAAS,SAAS,EAAE,CAAC,CAAC,CAAC;QACnE,CAAC,KAAK,EAAE,cAAc,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC;QACpE,CACE,KAAK,EAAE,cAAc,EACrB,YAAY,EAAE,MAAM,EACpB,OAAO,EAAE,mBAAmB,GAC3B,OAAO,CAAC,WAAW,CAAC,gBAAgB,CAAC,CAAC,CAAC;QAC1C,CAAC,KAAK,EAAE,eAAe,GAAG,OAAO,CAAC,WAAW,CAAC,SAAS,iBAAiB,EAAE,CAAC,CAAC,CAAC;QAC7E,CAAC,KAAK,EAAE,QAAQ,GAAG,OAAO,CAAC,WAAW,CAAC,SAAS,iBAAiB,EAAE,CAAC,CAAC,CAAC;KACvE,CAAC;IACF,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CAC9B,CAAC;AAEF,MAAM,MAAM,YAAY,GACpB,OAAO,GACP,WAAW,GACX,oBAAoB,GACpB,cAAc,GACd,aAAa,GACb,cAAc,GACd,QAAQ,GACR,mBAAmB,GACnB,OAAO,GACP,OAAO,GACP,aAAa,GACb,cAAc,GACd,cAAc,GACd,eAAe,GACf,QAAQ,CAAC;AAEb,MAAM,MAAM,aAAa,GAAG;IAC1B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,IAAI,EAAE,gBAAgB,CAAC;CACjC,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG,WAAW,GAAG;IAC1C,IAAI,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI,CAAC;IAC7B,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACtB,SAAS,CAAC,MAAM,EAAE,WAAW,GAAG,IAAI,CAAC;IACrC,MAAM,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI,EAAE,IAAI,EAAE,aAAa,GAAG,YAAY,CAAC;CACpE,CAAC;AAwJF,wBAAgB,cAAc,CAAC,OAAO,EAAE,gBAAgB,GAAG,eAAe,CAuzLzE"}
1
+ {"version":3,"file":"connection.d.ts","sourceRoot":"","sources":["../src/connection.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,aAAa,EAAsB,MAAM,cAAc,CAAC;AAI/E,OAAO,EAAmB,KAAK,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAWrE,OAAO,EAAkB,KAAK,QAAQ,EAAE,MAAM,eAAe,CAAC;AAI9D,OAAO,EAAe,KAAK,eAAe,EAAE,MAAM,YAAY,CAAC;AAC/D,OAAO,EAAmB,KAAK,eAAe,EAAE,MAAM,cAAc,CAAC;AAErE,MAAM,MAAM,gBAAgB,GAAG;IAC7B,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,YAAY,CAAC;IACpB,QAAQ,EAAE,eAAe,CAAC;IAC1B,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,cAAc,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACnC,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAIF,wBAAgB,cAAc,CAAC,OAAO,EAAE,gBAAgB,GAAG,eAAe,CAkGzE"}