@bjornpagen/bumbledb 1.3.1 → 2.0.0-rc.1

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 (290) hide show
  1. package/COOKBOOK.md +153 -77
  2. package/README.md +107 -41
  3. package/dist/alternatives.d.ts +5 -6
  4. package/dist/alternatives.d.ts.map +1 -1
  5. package/dist/alternatives.js +5 -6
  6. package/dist/alternatives.js.map +1 -1
  7. package/dist/bin.d.ts +3 -0
  8. package/dist/bin.d.ts.map +1 -0
  9. package/dist/bin.js +85 -0
  10. package/dist/bin.js.map +1 -0
  11. package/dist/capacity.d.ts +14 -17
  12. package/dist/capacity.d.ts.map +1 -1
  13. package/dist/capacity.js +7 -7
  14. package/dist/capacity.js.map +1 -1
  15. package/dist/changes.d.ts +32 -40
  16. package/dist/changes.d.ts.map +1 -1
  17. package/dist/changes.js +86 -104
  18. package/dist/changes.js.map +1 -1
  19. package/dist/closed.d.ts +2 -2
  20. package/dist/closed.d.ts.map +1 -1
  21. package/dist/closed.js +5 -5
  22. package/dist/closed.js.map +1 -1
  23. package/dist/codec.d.ts +13 -27
  24. package/dist/codec.d.ts.map +1 -1
  25. package/dist/codec.js +20 -21
  26. package/dist/codec.js.map +1 -1
  27. package/dist/compile.d.ts +26 -50
  28. package/dist/compile.d.ts.map +1 -1
  29. package/dist/compile.js +75 -64
  30. package/dist/compile.js.map +1 -1
  31. package/dist/database/database.d.ts +98 -0
  32. package/dist/database/database.d.ts.map +1 -0
  33. package/dist/database/database.js +249 -0
  34. package/dist/database/database.js.map +1 -0
  35. package/dist/database/driver.d.ts +40 -0
  36. package/dist/database/driver.d.ts.map +1 -0
  37. package/dist/database/driver.js +68 -0
  38. package/dist/database/driver.js.map +1 -0
  39. package/dist/database/fs.d.ts +12 -0
  40. package/dist/database/fs.d.ts.map +1 -0
  41. package/dist/database/fs.js +120 -0
  42. package/dist/database/fs.js.map +1 -0
  43. package/dist/database/generate.d.ts +26 -0
  44. package/dist/database/generate.d.ts.map +1 -0
  45. package/dist/database/generate.js +102 -0
  46. package/dist/database/generate.js.map +1 -0
  47. package/dist/database/hosted.d.ts +32 -0
  48. package/dist/database/hosted.d.ts.map +1 -0
  49. package/dist/database/hosted.js +44 -0
  50. package/dist/database/hosted.js.map +1 -0
  51. package/dist/database/io.d.ts +94 -0
  52. package/dist/database/io.d.ts.map +1 -0
  53. package/dist/database/io.js +35 -0
  54. package/dist/database/io.js.map +1 -0
  55. package/dist/database/mem.d.ts +26 -0
  56. package/dist/database/mem.d.ts.map +1 -0
  57. package/dist/database/mem.js +67 -0
  58. package/dist/database/mem.js.map +1 -0
  59. package/dist/database/migration.d.ts +55 -0
  60. package/dist/database/migration.d.ts.map +1 -0
  61. package/dist/database/migration.js +46 -0
  62. package/dist/database/migration.js.map +1 -0
  63. package/dist/database/s3.d.ts +36 -0
  64. package/dist/database/s3.d.ts.map +1 -0
  65. package/dist/database/s3.js +141 -0
  66. package/dist/database/s3.js.map +1 -0
  67. package/dist/db.d.ts +44 -128
  68. package/dist/db.d.ts.map +1 -1
  69. package/dist/db.js +163 -287
  70. package/dist/db.js.map +1 -1
  71. package/dist/engine.d.ts +7 -0
  72. package/dist/engine.d.ts.map +1 -0
  73. package/dist/engine.js +2 -0
  74. package/dist/engine.js.map +1 -0
  75. package/dist/errors.d.ts +152 -46
  76. package/dist/errors.d.ts.map +1 -1
  77. package/dist/errors.js +107 -19
  78. package/dist/errors.js.map +1 -1
  79. package/dist/face.d.ts +5 -5
  80. package/dist/face.d.ts.map +1 -1
  81. package/dist/face.js +6 -6
  82. package/dist/face.js.map +1 -1
  83. package/dist/fields.d.ts +4 -5
  84. package/dist/fields.d.ts.map +1 -1
  85. package/dist/fields.js +3 -3
  86. package/dist/fields.js.map +1 -1
  87. package/dist/index.d.ts +60 -57
  88. package/dist/index.d.ts.map +1 -1
  89. package/dist/index.js +27 -28
  90. package/dist/index.js.map +1 -1
  91. package/dist/judgment.d.ts +1 -1
  92. package/dist/judgment.js +1 -1
  93. package/dist/law.d.ts +16 -68
  94. package/dist/law.d.ts.map +1 -1
  95. package/dist/law.js +3 -3
  96. package/dist/law.js.map +1 -1
  97. package/dist/lower.d.ts +3 -3
  98. package/dist/lower.d.ts.map +1 -1
  99. package/dist/lower.js +35 -39
  100. package/dist/lower.js.map +1 -1
  101. package/dist/native/addon.d.ts +23 -0
  102. package/dist/native/addon.d.ts.map +1 -0
  103. package/dist/native/addon.js +15 -0
  104. package/dist/native/addon.js.map +1 -0
  105. package/dist/native/binding.d.ts +996 -0
  106. package/dist/native/json.d.ts +14 -0
  107. package/dist/native/json.d.ts.map +1 -0
  108. package/dist/native/json.js +73 -0
  109. package/dist/native/json.js.map +1 -0
  110. package/dist/native/load.d.ts +9 -0
  111. package/dist/native/load.d.ts.map +1 -0
  112. package/dist/native/load.js +30 -0
  113. package/dist/native/load.js.map +1 -0
  114. package/dist/native/op.d.ts +29 -0
  115. package/dist/native/op.d.ts.map +1 -0
  116. package/dist/native/op.js +50 -0
  117. package/dist/native/op.js.map +1 -0
  118. package/dist/query/atom.d.ts +13 -14
  119. package/dist/query/atom.d.ts.map +1 -1
  120. package/dist/query/atom.js +2 -2
  121. package/dist/query/atom.js.map +1 -1
  122. package/dist/query/compute.d.ts +4 -4
  123. package/dist/query/compute.d.ts.map +1 -1
  124. package/dist/query/compute.js +4 -4
  125. package/dist/query/compute.js.map +1 -1
  126. package/dist/query/find.d.ts +8 -8
  127. package/dist/query/find.d.ts.map +1 -1
  128. package/dist/query/find.js +1 -1
  129. package/dist/query/lower.d.ts +22 -17
  130. package/dist/query/lower.d.ts.map +1 -1
  131. package/dist/query/lower.js +230 -343
  132. package/dist/query/lower.js.map +1 -1
  133. package/dist/query/run.d.ts +5 -5
  134. package/dist/query/run.d.ts.map +1 -1
  135. package/dist/query/run.js +32 -15
  136. package/dist/query/run.js.map +1 -1
  137. package/dist/query/scope.d.ts +20 -28
  138. package/dist/query/scope.d.ts.map +1 -1
  139. package/dist/query/scope.js +7 -7
  140. package/dist/query/scope.js.map +1 -1
  141. package/dist/query/segments.d.ts +2 -2
  142. package/dist/query/segments.d.ts.map +1 -1
  143. package/dist/query/segments.js +3 -3
  144. package/dist/query/segments.js.map +1 -1
  145. package/dist/relation.d.ts +1 -1
  146. package/dist/relation.d.ts.map +1 -1
  147. package/dist/relation.js +4 -4
  148. package/dist/relation.js.map +1 -1
  149. package/dist/result.d.ts +15 -22
  150. package/dist/result.d.ts.map +1 -1
  151. package/dist/result.js +30 -39
  152. package/dist/result.js.map +1 -1
  153. package/dist/rows.d.ts +9 -33
  154. package/dist/rows.d.ts.map +1 -1
  155. package/dist/rows.js +8 -12
  156. package/dist/rows.js.map +1 -1
  157. package/dist/runtime.d.ts +17 -20
  158. package/dist/runtime.d.ts.map +1 -1
  159. package/dist/runtime.js +41 -205
  160. package/dist/runtime.js.map +1 -1
  161. package/dist/scalar.d.ts +4 -4
  162. package/dist/scalar.d.ts.map +1 -1
  163. package/dist/scalar.js +24 -8
  164. package/dist/scalar.js.map +1 -1
  165. package/dist/schema.d.ts +7 -18
  166. package/dist/schema.d.ts.map +1 -1
  167. package/dist/schema.js +18 -228
  168. package/dist/schema.js.map +1 -1
  169. package/dist/selection.d.ts +4 -4
  170. package/dist/selection.d.ts.map +1 -1
  171. package/dist/selection.js +5 -5
  172. package/dist/selection.js.map +1 -1
  173. package/dist/shape.d.ts +5 -5
  174. package/dist/shape.d.ts.map +1 -1
  175. package/dist/spec.d.ts +7 -79
  176. package/dist/spec.d.ts.map +1 -1
  177. package/dist/spec.js.map +1 -1
  178. package/dist/statements.d.ts +3 -3
  179. package/dist/statements.d.ts.map +1 -1
  180. package/dist/statements.js +10 -10
  181. package/dist/statements.js.map +1 -1
  182. package/dist/uuid.d.ts +1 -1
  183. package/dist/uuid.d.ts.map +1 -1
  184. package/dist/uuid.js +1 -1
  185. package/dist/uuid.js.map +1 -1
  186. package/dist/values.d.ts +2 -2
  187. package/dist/values.d.ts.map +1 -1
  188. package/dist/values.js +2 -2
  189. package/dist/values.js.map +1 -1
  190. package/package.json +18 -18
  191. package/src/alternatives.ts +7 -8
  192. package/src/bin.ts +82 -0
  193. package/src/capacity.ts +20 -23
  194. package/src/changes.ts +134 -191
  195. package/src/closed.ts +5 -5
  196. package/src/codec.ts +35 -49
  197. package/src/compile.ts +91 -113
  198. package/src/database/database.ts +413 -0
  199. package/src/database/driver.ts +134 -0
  200. package/src/database/fs.ts +119 -0
  201. package/src/database/generate.ts +116 -0
  202. package/src/database/hosted.ts +102 -0
  203. package/src/database/io.ts +134 -0
  204. package/src/database/mem.ts +113 -0
  205. package/src/database/migration.ts +107 -0
  206. package/src/database/s3.ts +231 -0
  207. package/src/db.ts +290 -547
  208. package/src/engine.ts +14 -0
  209. package/src/errors.ts +118 -39
  210. package/src/face.ts +9 -9
  211. package/src/fields.ts +6 -7
  212. package/src/index.ts +92 -105
  213. package/src/judgment.ts +1 -1
  214. package/src/law.ts +18 -70
  215. package/src/lower.ts +61 -72
  216. package/src/native/addon.ts +54 -0
  217. package/src/native/binding.d.ts +996 -0
  218. package/src/native/json.ts +100 -0
  219. package/src/native/load.ts +31 -0
  220. package/src/native/op.ts +73 -0
  221. package/src/query/atom.ts +15 -16
  222. package/src/query/compute.ts +7 -7
  223. package/src/query/find.ts +8 -8
  224. package/src/query/lower.ts +270 -392
  225. package/src/query/run.ts +42 -21
  226. package/src/query/scope.ts +29 -37
  227. package/src/query/segments.ts +4 -4
  228. package/src/relation.ts +4 -4
  229. package/src/result.ts +53 -80
  230. package/src/rows.ts +18 -46
  231. package/src/runtime.ts +50 -277
  232. package/src/scalar.ts +32 -12
  233. package/src/schema.ts +23 -284
  234. package/src/selection.ts +6 -6
  235. package/src/shape.ts +5 -5
  236. package/src/spec.ts +7 -85
  237. package/src/statements.ts +11 -11
  238. package/src/uuid.ts +1 -1
  239. package/src/values.ts +4 -4
  240. package/dist/close.d.ts +0 -24
  241. package/dist/close.d.ts.map +0 -1
  242. package/dist/close.js +0 -34
  243. package/dist/close.js.map +0 -1
  244. package/dist/db-native.d.ts +0 -189
  245. package/dist/db-native.d.ts.map +0 -1
  246. package/dist/db-native.js +0 -13
  247. package/dist/db-native.js.map +0 -1
  248. package/dist/internal/log.d.ts +0 -26
  249. package/dist/internal/log.d.ts.map +0 -1
  250. package/dist/internal/log.js +0 -12
  251. package/dist/internal/log.js.map +0 -1
  252. package/dist/native.d.ts +0 -562
  253. package/dist/native.d.ts.map +0 -1
  254. package/dist/native.js +0 -123
  255. package/dist/native.js.map +0 -1
  256. package/dist/query/description.d.ts +0 -41
  257. package/dist/query/description.d.ts.map +0 -1
  258. package/dist/query/description.js +0 -311
  259. package/dist/query/description.js.map +0 -1
  260. package/dist/query/parse-ir.d.ts +0 -10
  261. package/dist/query/parse-ir.d.ts.map +0 -1
  262. package/dist/query/parse-ir.js +0 -280
  263. package/dist/query/parse-ir.js.map +0 -1
  264. package/dist/runtime-codes.d.ts +0 -2
  265. package/dist/runtime-codes.d.ts.map +0 -1
  266. package/dist/runtime-codes.js +0 -19
  267. package/dist/runtime-codes.js.map +0 -1
  268. package/dist/runtime-errors.d.ts +0 -138
  269. package/dist/runtime-errors.d.ts.map +0 -1
  270. package/dist/runtime-errors.js +0 -111
  271. package/dist/runtime-errors.js.map +0 -1
  272. package/dist/runtime-native.d.ts +0 -136
  273. package/dist/runtime-native.d.ts.map +0 -1
  274. package/dist/runtime-native.js +0 -5
  275. package/dist/runtime-native.js.map +0 -1
  276. package/dist/schema-file.d.ts +0 -7
  277. package/dist/schema-file.d.ts.map +0 -1
  278. package/dist/schema-file.js +0 -24
  279. package/dist/schema-file.js.map +0 -1
  280. package/pack-provenance.json +0 -7
  281. package/src/close.ts +0 -53
  282. package/src/db-native.ts +0 -235
  283. package/src/internal/log.ts +0 -46
  284. package/src/native.ts +0 -736
  285. package/src/query/description.ts +0 -424
  286. package/src/query/parse-ir.ts +0 -293
  287. package/src/runtime-codes.ts +0 -18
  288. package/src/runtime-errors.ts +0 -122
  289. package/src/runtime-native.ts +0 -181
  290. package/src/schema-file.ts +0 -38
package/dist/codec.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"codec.js","sourceRoot":"","sources":["../src/codec.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"codec.js","sourceRoot":"","sources":["../src/codec.ts"],"names":[],"mappings":"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"}
package/dist/compile.d.ts CHANGED
@@ -1,66 +1,42 @@
1
- import { Effect } from "effect";
2
- import type { SchemaClasses } from "./law.js";
3
- import type { SealedDescriptor } from "./native.js";
4
- import type { AnyRelation } from "./relation.js";
5
- import type { AnySchema, Schema as SchemaDeclaration, SchemaRelations } from "./schema.js";
6
- import { type KeyStatement, type Statement } from "./statements.js";
7
1
  /**
8
- * `SchemaId` — the engine's canonical schema fingerprint as lowercase hex.
9
- * Independent of database identity; ordinary structural text. Native
10
- * boundaries verify the fingerprint wherever it grants admission.
2
+ * A schema is compiled by the engine when it is defined. The compiled handle, descriptor and
3
+ * fingerprint ride with the schema value; the engine's diagnostics come back as authoring errors
4
+ * that name the schema's own relations and statements.
11
5
  */
12
- type SchemaId = string;
13
- /**
14
- * `CompiledSchema<S>` — bounded detached immutable descriptor data plus the
15
- * canonical `schemaId`. NOT a tenant handle or a second
16
- * user-authored schema: it needs no native finalizer, holds no native
17
- * resource, and open/create/build compile through the same implementation —
18
- * prior compilation is optional, never a mandatory prepare ceremony.
19
- */
20
- interface CompiledSchema<S extends AnySchema> {
21
- readonly schema: S;
6
+ import { Schema as EffectSchema } from "effect";
7
+ import type { SchemaRef } from "./native/addon.ts";
8
+ import type { SchemaDescriptorOut } from "./native/binding.d.ts";
9
+ import type { AnyRelation } from "./relation.ts";
10
+ import type { AnySchema } from "./schema.ts";
11
+ import { type KeyStatement, type Statement } from "./statements.ts";
12
+ /** The engine's schema fingerprint: 64 lowercase hex digits, independent of any database. */
13
+ declare const SchemaId: EffectSchema.brand<EffectSchema.String, "SchemaId">;
14
+ type SchemaId = typeof SchemaId.Type;
15
+ interface Compiled {
16
+ readonly handle: SchemaRef;
17
+ readonly descriptor: SchemaDescriptorOut;
22
18
  readonly schemaId: SchemaId;
23
- readonly descriptor: SealedDescriptor;
24
19
  }
25
20
  /**
26
- * Pure declaration-order tables shared by the whole core surface: relation
27
- * ids (declaration order = ids), materialized statement ids (closed
28
- * relations' auto-handle keys FIRST in relation-declaration order, then
29
- * declared statements in declaration order with `mirrors` occupying two
30
- * consecutive slots, source-first — the theory's `StatementId` law).
31
- * Every declared statement retains its own native identity; no key is
32
- * privileged by its position in the declaration.
21
+ * Declaration-order tables: relation ids, and each declared statement's first materialized
22
+ * statement id (closed relations' id keys come first; `mirrors` takes two consecutive ids).
33
23
  */
34
24
  interface SchemaTables {
35
25
  readonly relationIds: ReadonlyMap<string, number>;
36
26
  readonly statementIds: ReadonlyMap<Statement, number>;
37
27
  }
38
- /** Memoized pure tables (per schema value identity; no native work). */
39
28
  declare function schemaTables(theory: AnySchema): SchemaTables;
40
- /** Resolve a logical key declaration, never an opaque constructor token. */
29
+ /** Resolves a key declaration to the schema's own statement and its statement id. */
41
30
  declare function declaredKey<R extends AnyRelation>(theory: AnySchema, input: KeyStatement<R>): {
42
31
  readonly key: KeyStatement<R>;
43
32
  readonly statementId: number;
44
33
  } | undefined;
45
- /**
46
- * The declaration-tier `Schema<Rels, Classes>` TYPE (from `#schema.ts`),
47
- * re-aliased LOCALLY so the one name carries both meanings through a
48
- * SINGLE export specifier below — a local `type` + `const` merge is the
49
- * plain TypeScript type/value merge, with no same-name pair of export
50
- * declarations for any checker to refuse (the earlier
51
- * `export type { Schema } from "./schema.js"` beside `export { Schema }`
52
- * spelled the type meaning twice at the barrel; this spelling cannot).
53
- */
54
- type Schema<Rels extends SchemaRelations, Classes extends SchemaClasses = SchemaClasses> = SchemaDeclaration<Rels, Classes>;
55
- /**
56
- * The core `Schema` namespace (import as `BumbleSchema` when Effect Schema
57
- * is also in scope). The `Schema<Rels>` type remains the pure
58
- * declaration from `#schema.ts` (the local alias above); this value owns
59
- * the effectful half. One exported name, two meanings.
60
- */
61
- declare const Schema: Readonly<{
62
- compile: <S extends AnySchema>(schema: S) => Effect.Effect<CompiledSchema<S>, import("./runtime-errors.js").DbError, import("./runtime.js").NativeRuntime>;
63
- }>;
64
- export type { CompiledSchema, SchemaId, SchemaTables };
65
- export { declaredKey, Schema, schemaTables };
34
+ /** Records the compiled form of a schema value `schema()` produced. */
35
+ declare function registerCompiled(theory: AnySchema): void;
36
+ /** Whether `value` is a schema value `schema()` produced (and so has a compiled form). */
37
+ declare function isCompiledSchema(value: unknown): value is AnySchema;
38
+ /** The engine's compiled form of `theory`; every schema value `schema()` produced has one. */
39
+ declare function compiledOf(theory: AnySchema): Compiled;
40
+ export type { Compiled, SchemaTables };
41
+ export { compiledOf, declaredKey, isCompiledSchema, registerCompiled, SchemaId, schemaTables };
66
42
  //# sourceMappingURL=compile.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"compile.d.ts","sourceRoot":"","sources":["../src/compile.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAK/B,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;AAE5C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA;AAClD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAG/C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,IAAI,iBAAiB,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAEzF,OAAO,EAAE,KAAK,YAAY,EAAE,KAAK,SAAS,EAAuB,MAAM,gBAAgB,CAAA;AAEvF;;;;GAIG;AACH,KAAK,QAAQ,GAAG,MAAM,CAAA;AAEtB;;;;;;GAMG;AACH,UAAU,cAAc,CAAC,CAAC,SAAS,SAAS;IAC3C,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAA;IAClB,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAA;IAC3B,QAAQ,CAAC,UAAU,EAAE,gBAAgB,CAAA;CACrC;AAED;;;;;;;;GAQG;AACH,UAAU,YAAY;IACrB,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IACjD,QAAQ,CAAC,YAAY,EAAE,WAAW,CAAC,SAAS,EAAE,MAAM,CAAC,CAAA;CACrD;AA0BD,wEAAwE;AACxE,iBAAS,YAAY,CAAC,MAAM,EAAE,SAAS,GAAG,YAAY,CAQrD;AAED,4EAA4E;AAC5E,iBAAS,WAAW,CAAC,CAAC,SAAS,WAAW,EACzC,MAAM,EAAE,SAAS,EACjB,KAAK,EAAE,YAAY,CAAC,CAAC,CAAC,GACpB;IAAE,QAAQ,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC;IAAC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,CAAA;AA2D9E;;;;;;;;GAQG;AACH,KAAK,MAAM,CAAC,IAAI,SAAS,eAAe,EAAE,OAAO,SAAS,aAAa,GAAG,aAAa,IAAI,iBAAiB,CAC3G,IAAI,EACJ,OAAO,CACP,CAAA;AAED;;;;;GAKG;AACH,QAAA,MAAM,MAAM;cA9C2C,CAAC,SAAS,SAAS;EA8CjC,CAAA;AAEzC,YAAY,EAAE,cAAc,EAAE,QAAQ,EAAE,YAAY,EAAE,CAAA;AACtD,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,YAAY,EAAE,CAAA"}
1
+ {"version":3,"file":"compile.d.ts","sourceRoot":"","sources":["../src/compile.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,MAAM,IAAI,YAAY,EAAE,MAAM,QAAQ,CAAA;AAK/C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAA;AAElD,OAAO,KAAK,EAAE,mBAAmB,EAAoB,MAAM,uBAAuB,CAAA;AAClF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAChD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAC5C,OAAO,EAAE,KAAK,YAAY,EAAmB,KAAK,SAAS,EAAuB,MAAM,iBAAiB,CAAA;AAEzG,6FAA6F;AAC7F,QAAA,MAAM,QAAQ,qDAEb,CAAA;AACD,KAAK,QAAQ,GAAG,OAAO,QAAQ,CAAC,IAAI,CAAA;AAEpC,UAAU,QAAQ;IACjB,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAA;IAC1B,QAAQ,CAAC,UAAU,EAAE,mBAAmB,CAAA;IACxC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAA;CAC3B;AAED;;;GAGG;AACH,UAAU,YAAY;IACrB,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IACjD,QAAQ,CAAC,YAAY,EAAE,WAAW,CAAC,SAAS,EAAE,MAAM,CAAC,CAAA;CACrD;AAmBD,iBAAS,YAAY,CAAC,MAAM,EAAE,SAAS,GAAG,YAAY,CAMrD;AAED,qFAAqF;AACrF,iBAAS,WAAW,CAAC,CAAC,SAAS,WAAW,EACzC,MAAM,EAAE,SAAS,EACjB,KAAK,EAAE,YAAY,CAAC,CAAC,CAAC,GACpB;IAAE,QAAQ,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC;IAAC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,CAAA;AA+D9E,uEAAuE;AACvE,iBAAS,gBAAgB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAEjD;AAED,0FAA0F;AAC1F,iBAAS,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,SAAS,CAE5D;AAED,8FAA8F;AAC9F,iBAAS,UAAU,CAAC,MAAM,EAAE,SAAS,GAAG,QAAQ,CAI/C;AAED,YAAY,EAAE,QAAQ,EAAE,YAAY,EAAE,CAAA;AACtC,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,QAAQ,EAAE,YAAY,EAAE,CAAA"}
package/dist/compile.js CHANGED
@@ -1,43 +1,40 @@
1
- import { Effect } from "effect";
2
- import { isClosedMember, membersAgree } from "#closed.ts";
3
- import { dbNative } from "#db-native.ts";
4
- import { SdkInvariantError } from "#errors.ts";
5
- import { isImmutable, snapshotData } from "#immutable.ts";
6
- import { lower } from "#lower.ts";
7
- import { nativeOperationWith, runtimeHandle } from "#runtime.ts";
8
- import { argumentError } from "#runtime-errors.ts";
9
- import { schemaDescriptor } from "#schema.ts";
10
- import { statementDescriptor } from "#statements.ts";
11
- function declaredWidth(statement) {
12
- return statement.kind === "mirrors" ? 2 : 1;
13
- }
1
+ /**
2
+ * A schema is compiled by the engine when it is defined. The compiled handle, descriptor and
3
+ * fingerprint ride with the schema value; the engine's diagnostics come back as authoring errors
4
+ * that name the schema's own relations and statements.
5
+ */
6
+ import { Schema as EffectSchema } from "effect";
7
+ import { isClosedMember, membersAgree } from "./closed.js";
8
+ import { AuthoringError, internalError } from "./errors.js";
9
+ import { isImmutable } from "./immutable.js";
10
+ import { lower } from "./lower.js";
11
+ import { addon } from "./native/addon.js";
12
+ import { renderStatement, statementDescriptor } from "./statements.js";
13
+ /** The engine's schema fingerprint: 64 lowercase hex digits, independent of any database. */
14
+ const SchemaId = EffectSchema.String.check(EffectSchema.isPattern(/^[0-9a-f]{64}$/)).pipe(EffectSchema.brand("SchemaId"));
14
15
  function tablesOf(theory) {
15
16
  const relationIds = new Map();
16
17
  const statementIds = new Map();
17
- let autoKeys = 0;
18
- Object.entries(theory.relations).forEach(function assignRelation([name, member], ordinal) {
18
+ let offset = 0;
19
+ Object.entries(theory.relations).forEach(([name, member], ordinal) => {
19
20
  relationIds.set(name, ordinal);
20
- if (isClosedMember(member)) {
21
- autoKeys += 1;
22
- }
21
+ if (isClosedMember(member))
22
+ offset += 1;
23
23
  });
24
- let offset = autoKeys;
25
24
  for (const statement of theory.statements) {
26
25
  statementIds.set(statement, offset);
27
- offset += declaredWidth(statement);
26
+ offset += statement.kind === "mirrors" ? 2 : 1;
28
27
  }
29
28
  return Object.freeze({ relationIds, statementIds });
30
29
  }
31
- const compiledCache = new WeakMap();
32
- /** Memoized pure tables (per schema value identity; no native work). */
30
+ const tablesCache = new WeakMap();
33
31
  function schemaTables(theory) {
34
- const cached = compiledCache.get(theory);
35
- if (cached !== undefined) {
32
+ const cached = tablesCache.get(theory);
33
+ if (cached !== undefined)
36
34
  return cached;
37
- }
38
35
  const built = tablesOf(theory);
39
36
  if (isImmutable(theory))
40
- compiledCache.set(theory, built);
37
+ tablesCache.set(theory, built);
41
38
  return built;
42
39
  }
43
40
  function declaredKey(theory, input) {
@@ -51,46 +48,60 @@ function declaredKey(theory, input) {
51
48
  }
52
49
  return undefined;
53
50
  }
54
- function admitSchemaId(fingerprint) {
55
- if (typeof fingerprint !== "string" || !/^[0-9a-f]{64}$/.test(fingerprint)) {
56
- throw new SdkInvariantError({ message: "Schema.compile: the engine returned no canonical fingerprint" });
51
+ function explain(theory, diagnostic) {
52
+ if (diagnostic._tag === "Schema") {
53
+ const cited = [diagnostic.statement, diagnostic.conflict].flatMap((cite) => cite === undefined ? [] : [cite.spelling]);
54
+ return cited.length === 0 ? diagnostic.message : `${diagnostic.message} — ${cited.join("; ")}`;
57
55
  }
58
- return fingerprint;
56
+ const relations = Object.keys(theory.relations);
57
+ return diagnostic.issues
58
+ .map((issue) => {
59
+ const at = [
60
+ issue.relation === undefined ? undefined : `relation ${relations[issue.relation] ?? issue.relation}`,
61
+ issue.row === undefined ? undefined : `row ${issue.row}`,
62
+ issue.statement === undefined
63
+ ? undefined
64
+ : (() => {
65
+ const statement = theory.statements[issue.statement];
66
+ return statement === undefined ? `statement ${issue.statement}` : renderStatement(statement);
67
+ })()
68
+ ].filter((part) => part !== undefined);
69
+ return at.length === 0 ? issue.message : `${issue.message} — ${at.join(", ")}`;
70
+ })
71
+ .join("; ");
59
72
  }
60
- /**
61
- * Effectful native schema admission/compilation: a
62
- * schema declaration is pure metadata and never a claim its theory has been
63
- * admitted. Runs on the shared executor, requires the
64
- * acquired {@link NativeRuntime}, and yields detached immutable descriptor
65
- * data plus the canonical schema identity. No database is opened and no
66
- * native finalizer is created.
67
- */
68
- const compile = Effect.fn("Schema.compile")(function* (schema) {
69
- const owned = yield* Effect.try({
70
- try: () => schemaDescriptor(schema),
71
- catch: (cause) => argumentError("Schema.compile", cause)
72
- });
73
- const spec = yield* Effect.try({ try: () => lower(owned), catch: (cause) => argumentError("Schema.compile", cause) });
74
- const handle = yield* runtimeHandle();
75
- const descriptor = yield* nativeOperationWith("Schema.compile", (callback) => dbNative.runtimeSchemaCompile(handle, spec, callback), dbNative.runtimeSchemaTake, (value) => value);
76
- const ownedDescriptor = snapshotData(descriptor);
77
- const compiled = Object.freeze({
78
- get schema() {
79
- return snapshotData(owned);
80
- },
81
- schemaId: admitSchemaId(descriptor.fingerprint),
82
- get descriptor() {
83
- return snapshotData(ownedDescriptor);
73
+ const decodeSchemaId = EffectSchema.decodeUnknownOption(SchemaId);
74
+ /** Compiles `theory` with the engine; an engine refusal throws `AuthoringError`. */
75
+ function compileSchema(theory) {
76
+ const compiled = addon.compileSchema(JSON.stringify(lower(theory)));
77
+ switch (compiled._tag) {
78
+ case "Compiled": {
79
+ const schemaId = decodeSchemaId(compiled.descriptor.fingerprint);
80
+ if (schemaId._tag === "None")
81
+ throw internalError("compileSchema: the engine returned no fingerprint");
82
+ return Object.freeze({ handle: compiled.schema, descriptor: compiled.descriptor, schemaId: schemaId.value });
84
83
  }
85
- });
84
+ case "Invalid":
85
+ throw new AuthoringError({ message: `schema ${theory.name}: ${explain(theory, compiled.diagnostic)}` });
86
+ case "Malformed":
87
+ throw internalError(`compileSchema: ${compiled.path}: ${compiled.message}`);
88
+ }
89
+ }
90
+ const compiledSchemas = new WeakMap();
91
+ /** Records the compiled form of a schema value `schema()` produced. */
92
+ function registerCompiled(theory) {
93
+ compiledSchemas.set(theory, compileSchema(theory));
94
+ }
95
+ /** Whether `value` is a schema value `schema()` produced (and so has a compiled form). */
96
+ function isCompiledSchema(value) {
97
+ return typeof value === "object" && value !== null && compiledSchemas.has(value);
98
+ }
99
+ /** The engine's compiled form of `theory`; every schema value `schema()` produced has one. */
100
+ function compiledOf(theory) {
101
+ const compiled = compiledSchemas.get(theory);
102
+ if (compiled === undefined)
103
+ throw internalError("compiledOf: the schema was not produced by schema()");
86
104
  return compiled;
87
- });
88
- /**
89
- * The core `Schema` namespace (import as `BumbleSchema` when Effect Schema
90
- * is also in scope). The `Schema<Rels>` type remains the pure
91
- * declaration from `#schema.ts` (the local alias above); this value owns
92
- * the effectful half. One exported name, two meanings.
93
- */
94
- const Schema = Object.freeze({ compile });
95
- export { declaredKey, Schema, schemaTables };
105
+ }
106
+ export { compiledOf, declaredKey, isCompiledSchema, registerCompiled, SchemaId, schemaTables };
96
107
  //# sourceMappingURL=compile.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"compile.js","sourceRoot":"","sources":["../src/compile.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAC/B,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AACzD,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AACxC,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;AAC9C,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,eAAe,CAAA;AAEzD,OAAO,EAAE,KAAK,EAAE,MAAM,WAAW,CAAA;AAGjC,OAAO,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAChE,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAElD,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA;AAC7C,OAAO,EAAqC,mBAAmB,EAAE,MAAM,gBAAgB,CAAA;AAoCvF,SAAS,aAAa,CAAC,SAAoB;IAC1C,OAAO,SAAS,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;AAC5C,CAAC;AAED,SAAS,QAAQ,CAAC,MAAiB;IAClC,MAAM,WAAW,GAAG,IAAI,GAAG,EAAkB,CAAA;IAC7C,MAAM,YAAY,GAAG,IAAI,GAAG,EAAqB,CAAA;IACjD,IAAI,QAAQ,GAAG,CAAC,CAAA;IAChB,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,SAAS,cAAc,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,OAAO;QACvF,WAAW,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;QAC9B,IAAI,cAAc,CAAC,MAAM,CAAC,EAAE,CAAC;YAC5B,QAAQ,IAAI,CAAC,CAAA;QACd,CAAC;IACF,CAAC,CAAC,CAAA;IACF,IAAI,MAAM,GAAG,QAAQ,CAAA;IACrB,KAAK,MAAM,SAAS,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;QAC3C,YAAY,CAAC,GAAG,CAAC,SAAS,EAAE,MAAM,CAAC,CAAA;QACnC,MAAM,IAAI,aAAa,CAAC,SAAS,CAAC,CAAA;IACnC,CAAC;IACD,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,YAAY,EAAE,CAAC,CAAA;AACpD,CAAC;AAED,MAAM,aAAa,GAAG,IAAI,OAAO,EAA2B,CAAA;AAE5D,wEAAwE;AACxE,SAAS,YAAY,CAAC,MAAiB;IACtC,MAAM,MAAM,GAAG,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;IACxC,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QAC1B,OAAO,MAAM,CAAA;IACd,CAAC;IACD,MAAM,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAA;IAC9B,IAAI,WAAW,CAAC,MAAM,CAAC;QAAE,aAAa,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,CAAA;IACzD,OAAO,KAAK,CAAA;AACb,CAAC;AAOD,SAAS,WAAW,CACnB,MAAiB,EACjB,KAAmB;IAEnB,MAAM,GAAG,GAAG,mBAAmB,CAAC,KAAK,CAAC,CAAA;IACtC,KAAK,MAAM,CAAC,SAAS,EAAE,WAAW,CAAC,IAAI,YAAY,CAAC,MAAM,CAAC,CAAC,YAAY,EAAE,CAAC;QAC1E,IACC,SAAS,CAAC,IAAI,KAAK,KAAK;YACxB,YAAY,CAAC,SAAS,CAAC,KAAK,EAAE,GAAG,CAAC,KAAK,CAAC;YACxC,SAAS,CAAC,UAAU,CAAC,MAAM,KAAK,GAAG,CAAC,UAAU,CAAC,MAAM;YACrD,SAAS,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;YAErE,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,WAAW,EAAE,CAAA;IACxC,CAAC;IACD,OAAO,SAAS,CAAA;AACjB,CAAC;AAED,SAAS,aAAa,CAAC,WAAmB;IACzC,IAAI,OAAO,WAAW,KAAK,QAAQ,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC;QAC5E,MAAM,IAAI,iBAAiB,CAAC,EAAE,OAAO,EAAE,8DAA8D,EAAE,CAAC,CAAA;IACzG,CAAC;IACD,OAAO,WAAW,CAAA;AACnB,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,OAAO,GAAG,MAAM,CAAC,EAAE,CAAC,gBAAgB,CAAC,CAAC,QAAQ,CAAC,EAAuB,MAAS;IACpF,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;QAC/B,GAAG,EAAE,GAAG,EAAE,CAAC,gBAAgB,CAAC,MAAM,CAAC;QACnC,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,aAAa,CAAC,gBAAgB,EAAE,KAAK,CAAC;KACxD,CAAC,CAAA;IACF,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,aAAa,CAAC,gBAAgB,EAAE,KAAK,CAAC,EAAE,CAAC,CAAA;IACrH,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,aAAa,EAAE,CAAA;IACrC,MAAM,UAAU,GAAG,KAAK,CAAC,CAAC,mBAAmB,CAC5C,gBAAgB,EAChB,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,oBAAoB,CAAC,MAAM,EAAE,IAAI,EAAE,QAAQ,CAAC,EACnE,QAAQ,CAAC,iBAAiB,EAC1B,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAChB,CAAA;IACD,MAAM,eAAe,GAAG,YAAY,CAAC,UAAU,CAAC,CAAA;IAChD,MAAM,QAAQ,GAAsB,MAAM,CAAC,MAAM,CAAC;QACjD,IAAI,MAAM;YACT,OAAO,YAAY,CAAC,KAAK,CAAC,CAAA;QAC3B,CAAC;QACD,QAAQ,EAAE,aAAa,CAAC,UAAU,CAAC,WAAW,CAAC;QAC/C,IAAI,UAAU;YACb,OAAO,YAAY,CAAC,eAAe,CAAC,CAAA;QACrC,CAAC;KACD,CAAC,CAAA;IACF,OAAO,QAAQ,CAAA;AAChB,CAAC,CAAC,CAAA;AAgBF;;;;;GAKG;AACH,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,CAAC,CAAA;AAGzC,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,YAAY,EAAE,CAAA"}
1
+ {"version":3,"file":"compile.js","sourceRoot":"","sources":["../src/compile.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,98 @@
1
+ import type { Scope } from "effect";
2
+ import { Context, Duration, Effect, Layer, Option, Schema } from "effect";
3
+ import type { ChangeSet } from "../changes.ts";
4
+ import type { QueryReader } from "../db.ts";
5
+ import { DbError } from "../errors.ts";
6
+ import type { HeadOut, ReceiptOut, SettledOut } from "../native/binding.d.ts";
7
+ import type { Bumble } from "../runtime.ts";
8
+ import type { AnySchema } from "../schema.ts";
9
+ import type { ExecutorOptions, ObjectStore } from "./io.ts";
10
+ import type { Migrations } from "./migration.ts";
11
+ /** A submission's idempotency key: 32 lowercase hex digits. */
12
+ declare const RequestId: Schema.brand<Schema.String, "RequestId">;
13
+ type RequestId = typeof RequestId.Type;
14
+ /** How fresh a read must be: the cache as it is, the log's tip, or at least a submitted `seq`. */
15
+ type Consistency = "cached" | "latest" | {
16
+ readonly atLeast: bigint;
17
+ };
18
+ /** A decided submission (its receipt), or a refusal. Every refusal but `Unknown` proves the log does not decide it. */
19
+ type SubmitOutcome = Extract<SettledOut, {
20
+ readonly _tag: "Decided" | "Refused";
21
+ }>;
22
+ interface SubmitOptions {
23
+ readonly requestId: RequestId;
24
+ /** Decide only if the database is exactly at this revision. */
25
+ readonly precondition?: bigint;
26
+ }
27
+ /** A snapshot reader, with the log position and revision the cache had reached when it was pinned. */
28
+ interface DatabaseReader<S extends AnySchema> extends QueryReader<S> {
29
+ readonly seq: bigint;
30
+ /** The committed revision; a submit can require it with `precondition`. */
31
+ readonly revision: bigint;
32
+ }
33
+ interface Database<S extends AnySchema> {
34
+ readonly schema: S;
35
+ /** The last decided state this process has seen. */
36
+ readonly head: Effect.Effect<HeadOut>;
37
+ submit(changes: ChangeSet<S>, options: SubmitOptions): Effect.Effect<SubmitOutcome, DbError>;
38
+ read(consistency?: Consistency): Effect.Effect<DatabaseReader<S>, DbError, Scope.Scope>;
39
+ /** The receipt of `requestId`, after catching up with the log. */
40
+ resolve(requestId: RequestId): Effect.Effect<Option.Option<ReceiptOut>, DbError>;
41
+ }
42
+ interface Tuning {
43
+ /** Parallel tail reads while catching up. */
44
+ readonly probeWindow: number;
45
+ /** Log entries between automatic checkpoints. */
46
+ readonly checkpointEvery: bigint;
47
+ readonly checkpointKeep: number;
48
+ readonly maxEntryBytes: number;
49
+ /** Store calls in flight at once. */
50
+ readonly concurrency: number;
51
+ readonly executor: ExecutorOptions;
52
+ /** Stale migration attempts before writers are frozen for one more attempt. */
53
+ readonly migrationAttempts: number;
54
+ readonly freezeLease: Duration.Input;
55
+ }
56
+ interface DatabaseOptions<S extends AnySchema> {
57
+ /** The schema the code reads and writes; the last migration's schema. */
58
+ readonly schema: S;
59
+ readonly migrations: Migrations;
60
+ readonly store: ObjectStore;
61
+ /** Where the disposable local cache lives. */
62
+ readonly cache: {
63
+ readonly directory: string;
64
+ };
65
+ /** `migrate` creates the database and runs pending migrations; `verify` refuses to open with any pending. */
66
+ readonly onOpen: "verify" | "migrate";
67
+ readonly tuning?: Partial<Tuning>;
68
+ }
69
+ /** A service key for one application's database. */
70
+ declare function tag<S extends AnySchema>(key: string): Context.Key<Database<S>, Database<S>>;
71
+ /** Provides `key` with a database opened from `options` for the layer's lifetime. */
72
+ declare function layer<S extends AnySchema>(key: Context.Key<Database<S>, Database<S>>, options: DatabaseOptions<S>): Layer.Layer<Database<S>, DbError, Bumble>;
73
+ interface PoolOptions<S extends AnySchema> extends Omit<DatabaseOptions<S>, "store" | "cache"> {
74
+ readonly store: (tenant: string) => ObjectStore;
75
+ readonly cache: (tenant: string) => {
76
+ readonly directory: string;
77
+ };
78
+ /** How long an unused tenant's database stays open. */
79
+ readonly idleTimeToLive?: Duration.Input;
80
+ }
81
+ /** Databases opened on demand per tenant and closed once idle. */
82
+ interface DatabasePool<S extends AnySchema> {
83
+ get(tenant: string): Effect.Effect<Database<S>, DbError, Scope.Scope>;
84
+ }
85
+ /** A fresh random request id. */
86
+ declare function requestId(): RequestId;
87
+ declare const Database: Readonly<{
88
+ make: <S extends AnySchema>(options: DatabaseOptions<S>) => Effect.Effect<Database<S>, DbError, Bumble | Scope.Scope>;
89
+ layer: typeof layer;
90
+ pool: <S extends AnySchema>(options: PoolOptions<S>) => Effect.Effect<{
91
+ get: (tenant: string) => Effect.Effect<Database<S>, DbError, Scope.Scope>;
92
+ }, never, Bumble | Scope.Scope>;
93
+ tag: typeof tag;
94
+ requestId: typeof requestId;
95
+ }>;
96
+ export type { Consistency, DatabaseOptions, DatabasePool, DatabaseReader, PoolOptions, SubmitOptions, SubmitOutcome, Tuning };
97
+ export { Database, RequestId };
98
+ //# sourceMappingURL=database.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"database.d.ts","sourceRoot":"","sources":["../../src/database/database.ts"],"names":[],"mappings":"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"}