@justwant/db 0.2.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 (248) hide show
  1. package/README.md +111 -0
  2. package/dist/adapter.d.ts +11 -0
  3. package/dist/adapter.d.ts.map +1 -0
  4. package/dist/adapter.js +2 -0
  5. package/dist/adapter.js.map +1 -0
  6. package/dist/base/adapter.d.ts +11 -0
  7. package/dist/base/adapter.d.ts.map +1 -0
  8. package/dist/base/adapter.js +2 -0
  9. package/dist/base/adapter.js.map +1 -0
  10. package/dist/base/conforms.d.ts +12 -0
  11. package/dist/base/conforms.d.ts.map +1 -0
  12. package/dist/base/conforms.js +13 -0
  13. package/dist/base/conforms.js.map +1 -0
  14. package/dist/base/contract.d.ts +6 -0
  15. package/dist/base/contract.d.ts.map +1 -0
  16. package/dist/base/contract.js +6 -0
  17. package/dist/base/contract.js.map +1 -0
  18. package/dist/base/errors.d.ts +75 -0
  19. package/dist/base/errors.d.ts.map +1 -0
  20. package/dist/base/errors.js +100 -0
  21. package/dist/base/errors.js.map +1 -0
  22. package/dist/base/fields.d.ts +5 -0
  23. package/dist/base/fields.d.ts.map +1 -0
  24. package/dist/base/fields.js +5 -0
  25. package/dist/base/fields.js.map +1 -0
  26. package/dist/base/index.d.ts +5 -0
  27. package/dist/base/index.d.ts.map +1 -0
  28. package/dist/base/index.js +3 -0
  29. package/dist/base/index.js.map +1 -0
  30. package/dist/base/table.d.ts +61 -0
  31. package/dist/base/table.d.ts.map +1 -0
  32. package/dist/base/table.js +2 -0
  33. package/dist/base/table.js.map +1 -0
  34. package/dist/base/validate.d.ts +5 -0
  35. package/dist/base/validate.d.ts.map +1 -0
  36. package/dist/base/validate.js +5 -0
  37. package/dist/base/validate.js.map +1 -0
  38. package/dist/contract.d.ts +27 -0
  39. package/dist/contract.d.ts.map +1 -0
  40. package/dist/contract.js +14 -0
  41. package/dist/contract.js.map +1 -0
  42. package/dist/contract.type-test.d.ts +2 -0
  43. package/dist/contract.type-test.d.ts.map +1 -0
  44. package/dist/contract.type-test.js +34 -0
  45. package/dist/contract.type-test.js.map +1 -0
  46. package/dist/ddl/drop.d.ts +6 -0
  47. package/dist/ddl/drop.d.ts.map +1 -0
  48. package/dist/ddl/drop.js +14 -0
  49. package/dist/ddl/drop.js.map +1 -0
  50. package/dist/ddl/exist.d.ts +6 -0
  51. package/dist/ddl/exist.d.ts.map +1 -0
  52. package/dist/ddl/exist.js +24 -0
  53. package/dist/ddl/exist.js.map +1 -0
  54. package/dist/ddl/index.d.ts +17 -0
  55. package/dist/ddl/index.d.ts.map +1 -0
  56. package/dist/ddl/index.js +58 -0
  57. package/dist/ddl/index.js.map +1 -0
  58. package/dist/drizzle/buildOrderBy.d.ts +11 -0
  59. package/dist/drizzle/buildOrderBy.d.ts.map +1 -0
  60. package/dist/drizzle/buildOrderBy.js +19 -0
  61. package/dist/drizzle/buildOrderBy.js.map +1 -0
  62. package/dist/drizzle/buildPagination.d.ts +15 -0
  63. package/dist/drizzle/buildPagination.d.ts.map +1 -0
  64. package/dist/drizzle/buildPagination.js +13 -0
  65. package/dist/drizzle/buildPagination.js.map +1 -0
  66. package/dist/drizzle/buildWhere.d.ts +11 -0
  67. package/dist/drizzle/buildWhere.d.ts.map +1 -0
  68. package/dist/drizzle/buildWhere.js +21 -0
  69. package/dist/drizzle/buildWhere.js.map +1 -0
  70. package/dist/drizzle/bulkInsert.d.ts +9 -0
  71. package/dist/drizzle/bulkInsert.d.ts.map +1 -0
  72. package/dist/drizzle/bulkInsert.js +16 -0
  73. package/dist/drizzle/bulkInsert.js.map +1 -0
  74. package/dist/drizzle/collectSchemas.d.ts +11 -0
  75. package/dist/drizzle/collectSchemas.d.ts.map +1 -0
  76. package/dist/drizzle/collectSchemas.js +12 -0
  77. package/dist/drizzle/collectSchemas.js.map +1 -0
  78. package/dist/drizzle/createAdapter.d.ts +15 -0
  79. package/dist/drizzle/createAdapter.d.ts.map +1 -0
  80. package/dist/drizzle/createAdapter.js +163 -0
  81. package/dist/drizzle/createAdapter.js.map +1 -0
  82. package/dist/drizzle/defineMappedTable.d.ts +19 -0
  83. package/dist/drizzle/defineMappedTable.d.ts.map +1 -0
  84. package/dist/drizzle/defineMappedTable.js +66 -0
  85. package/dist/drizzle/defineMappedTable.js.map +1 -0
  86. package/dist/drizzle/drizzle-types.d.ts +16 -0
  87. package/dist/drizzle/drizzle-types.d.ts.map +1 -0
  88. package/dist/drizzle/drizzle-types.js +11 -0
  89. package/dist/drizzle/drizzle-types.js.map +1 -0
  90. package/dist/drizzle/errors.d.ts +10 -0
  91. package/dist/drizzle/errors.d.ts.map +1 -0
  92. package/dist/drizzle/errors.js +61 -0
  93. package/dist/drizzle/errors.js.map +1 -0
  94. package/dist/drizzle/index.d.ts +14 -0
  95. package/dist/drizzle/index.d.ts.map +1 -0
  96. package/dist/drizzle/index.js +12 -0
  97. package/dist/drizzle/index.js.map +1 -0
  98. package/dist/drizzle/mapping.d.ts +34 -0
  99. package/dist/drizzle/mapping.d.ts.map +1 -0
  100. package/dist/drizzle/mapping.js +24 -0
  101. package/dist/drizzle/mapping.js.map +1 -0
  102. package/dist/drizzle/types.d.ts +38 -0
  103. package/dist/drizzle/types.d.ts.map +1 -0
  104. package/dist/drizzle/types.js +6 -0
  105. package/dist/drizzle/types.js.map +1 -0
  106. package/dist/drizzle/upsert.d.ts +11 -0
  107. package/dist/drizzle/upsert.d.ts.map +1 -0
  108. package/dist/drizzle/upsert.js +28 -0
  109. package/dist/drizzle/upsert.js.map +1 -0
  110. package/dist/errors.d.ts +75 -0
  111. package/dist/errors.d.ts.map +1 -0
  112. package/dist/errors.js +100 -0
  113. package/dist/errors.js.map +1 -0
  114. package/dist/index.d.ts +2 -0
  115. package/dist/index.d.ts.map +1 -0
  116. package/dist/index.js +2 -0
  117. package/dist/index.js.map +1 -0
  118. package/dist/prisma/buildWhere.d.ts +18 -0
  119. package/dist/prisma/buildWhere.d.ts.map +1 -0
  120. package/dist/prisma/buildWhere.js +27 -0
  121. package/dist/prisma/buildWhere.js.map +1 -0
  122. package/dist/prisma/bulkInsert.d.ts +19 -0
  123. package/dist/prisma/bulkInsert.d.ts.map +1 -0
  124. package/dist/prisma/bulkInsert.js +13 -0
  125. package/dist/prisma/bulkInsert.js.map +1 -0
  126. package/dist/prisma/createAdapter.d.ts +13 -0
  127. package/dist/prisma/createAdapter.d.ts.map +1 -0
  128. package/dist/prisma/createAdapter.js +154 -0
  129. package/dist/prisma/createAdapter.js.map +1 -0
  130. package/dist/prisma/errors.d.ts +12 -0
  131. package/dist/prisma/errors.d.ts.map +1 -0
  132. package/dist/prisma/errors.js +133 -0
  133. package/dist/prisma/errors.js.map +1 -0
  134. package/dist/prisma/index.d.ts +9 -0
  135. package/dist/prisma/index.d.ts.map +1 -0
  136. package/dist/prisma/index.js +7 -0
  137. package/dist/prisma/index.js.map +1 -0
  138. package/dist/prisma/mapping.d.ts +15 -0
  139. package/dist/prisma/mapping.d.ts.map +1 -0
  140. package/dist/prisma/mapping.js +23 -0
  141. package/dist/prisma/mapping.js.map +1 -0
  142. package/dist/prisma/types.d.ts +61 -0
  143. package/dist/prisma/types.d.ts.map +1 -0
  144. package/dist/prisma/types.js +6 -0
  145. package/dist/prisma/types.js.map +1 -0
  146. package/dist/prisma/upsert.d.ts +17 -0
  147. package/dist/prisma/upsert.d.ts.map +1 -0
  148. package/dist/prisma/upsert.js +11 -0
  149. package/dist/prisma/upsert.js.map +1 -0
  150. package/dist/table.d.ts +36 -0
  151. package/dist/table.d.ts.map +1 -0
  152. package/dist/table.js +2 -0
  153. package/dist/table.js.map +1 -0
  154. package/dist/waddler/better-sqlite3/index.d.ts +17 -0
  155. package/dist/waddler/better-sqlite3/index.d.ts.map +1 -0
  156. package/dist/waddler/better-sqlite3/index.js +20 -0
  157. package/dist/waddler/better-sqlite3/index.js.map +1 -0
  158. package/dist/waddler/buildOrderBy.d.ts +10 -0
  159. package/dist/waddler/buildOrderBy.d.ts.map +1 -0
  160. package/dist/waddler/buildOrderBy.js +22 -0
  161. package/dist/waddler/buildOrderBy.js.map +1 -0
  162. package/dist/waddler/buildWhere.d.ts +13 -0
  163. package/dist/waddler/buildWhere.d.ts.map +1 -0
  164. package/dist/waddler/buildWhere.js +26 -0
  165. package/dist/waddler/buildWhere.js.map +1 -0
  166. package/dist/waddler/bun-sql/index.d.ts +17 -0
  167. package/dist/waddler/bun-sql/index.d.ts.map +1 -0
  168. package/dist/waddler/bun-sql/index.js +25 -0
  169. package/dist/waddler/bun-sql/index.js.map +1 -0
  170. package/dist/waddler/bun-sqlite/index.d.ts +17 -0
  171. package/dist/waddler/bun-sqlite/index.d.ts.map +1 -0
  172. package/dist/waddler/bun-sqlite/index.js +20 -0
  173. package/dist/waddler/bun-sqlite/index.js.map +1 -0
  174. package/dist/waddler/core.d.ts +14 -0
  175. package/dist/waddler/core.d.ts.map +1 -0
  176. package/dist/waddler/core.js +340 -0
  177. package/dist/waddler/core.js.map +1 -0
  178. package/dist/waddler/d1/index.d.ts +16 -0
  179. package/dist/waddler/d1/index.d.ts.map +1 -0
  180. package/dist/waddler/d1/index.js +18 -0
  181. package/dist/waddler/d1/index.js.map +1 -0
  182. package/dist/waddler/durable-objects/index.d.ts +16 -0
  183. package/dist/waddler/durable-objects/index.d.ts.map +1 -0
  184. package/dist/waddler/durable-objects/index.js +18 -0
  185. package/dist/waddler/durable-objects/index.js.map +1 -0
  186. package/dist/waddler/errors.d.ts +10 -0
  187. package/dist/waddler/errors.d.ts.map +1 -0
  188. package/dist/waddler/errors.js +65 -0
  189. package/dist/waddler/errors.js.map +1 -0
  190. package/dist/waddler/index.d.ts +10 -0
  191. package/dist/waddler/index.d.ts.map +1 -0
  192. package/dist/waddler/index.js +6 -0
  193. package/dist/waddler/index.js.map +1 -0
  194. package/dist/waddler/mapping.d.ts +14 -0
  195. package/dist/waddler/mapping.d.ts.map +1 -0
  196. package/dist/waddler/mapping.js +23 -0
  197. package/dist/waddler/mapping.js.map +1 -0
  198. package/dist/waddler/mysql/index.d.ts +17 -0
  199. package/dist/waddler/mysql/index.d.ts.map +1 -0
  200. package/dist/waddler/mysql/index.js +29 -0
  201. package/dist/waddler/mysql/index.js.map +1 -0
  202. package/dist/waddler/neon/index.d.ts +17 -0
  203. package/dist/waddler/neon/index.d.ts.map +1 -0
  204. package/dist/waddler/neon/index.js +25 -0
  205. package/dist/waddler/neon/index.js.map +1 -0
  206. package/dist/waddler/pg/index.d.ts +17 -0
  207. package/dist/waddler/pg/index.d.ts.map +1 -0
  208. package/dist/waddler/pg/index.js +25 -0
  209. package/dist/waddler/pg/index.js.map +1 -0
  210. package/dist/waddler/pglite/index.d.ts +17 -0
  211. package/dist/waddler/pglite/index.d.ts.map +1 -0
  212. package/dist/waddler/pglite/index.js +25 -0
  213. package/dist/waddler/pglite/index.js.map +1 -0
  214. package/dist/waddler/planetscale/index.d.ts +17 -0
  215. package/dist/waddler/planetscale/index.d.ts.map +1 -0
  216. package/dist/waddler/planetscale/index.js +29 -0
  217. package/dist/waddler/planetscale/index.js.map +1 -0
  218. package/dist/waddler/postgres-js/index.d.ts +17 -0
  219. package/dist/waddler/postgres-js/index.d.ts.map +1 -0
  220. package/dist/waddler/postgres-js/index.js +25 -0
  221. package/dist/waddler/postgres-js/index.js.map +1 -0
  222. package/dist/waddler/tidb/index.d.ts +17 -0
  223. package/dist/waddler/tidb/index.d.ts.map +1 -0
  224. package/dist/waddler/tidb/index.js +29 -0
  225. package/dist/waddler/tidb/index.js.map +1 -0
  226. package/dist/waddler/turso/index.d.ts +17 -0
  227. package/dist/waddler/turso/index.d.ts.map +1 -0
  228. package/dist/waddler/turso/index.js +29 -0
  229. package/dist/waddler/turso/index.js.map +1 -0
  230. package/dist/waddler/types.d.ts +91 -0
  231. package/dist/waddler/types.d.ts.map +1 -0
  232. package/dist/waddler/types.js +6 -0
  233. package/dist/waddler/types.js.map +1 -0
  234. package/dist/waddler/vercel-postgres/index.d.ts +17 -0
  235. package/dist/waddler/vercel-postgres/index.d.ts.map +1 -0
  236. package/dist/waddler/vercel-postgres/index.js +25 -0
  237. package/dist/waddler/vercel-postgres/index.js.map +1 -0
  238. package/dist/waddler/xata/index.d.ts +17 -0
  239. package/dist/waddler/xata/index.d.ts.map +1 -0
  240. package/dist/waddler/xata/index.js +25 -0
  241. package/dist/waddler/xata/index.js.map +1 -0
  242. package/docs/CONTRACT.md +36 -0
  243. package/docs/COVERAGE.md +59 -0
  244. package/docs/DRIVERS.md +62 -0
  245. package/docs/drizzle/DIALECTS.md +62 -0
  246. package/docs/drizzle/LIMITS.md +39 -0
  247. package/package.json +232 -0
  248. package/prisma/schema.prisma +15 -0
package/README.md ADDED
@@ -0,0 +1,111 @@
1
+ # @justwant/db
2
+
3
+ [![npm version](https://img.shields.io/npm/v/@justwant/db.svg)](https://www.npmjs.com/package/@justwant/db)
4
+ [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
5
+
6
+ Data Access Layer for transactional databases. Define contracts once, plug any backend (Drizzle, Prisma, Waddler).
7
+
8
+ ## Installation
9
+
10
+ ```bash
11
+ bun add @justwant/db
12
+ # or
13
+ npm install @justwant/db
14
+ # or
15
+ pnpm add @justwant/db
16
+ ```
17
+
18
+ ## Usage
19
+
20
+ ### defineContract, field, InferContract
21
+
22
+ ```ts
23
+ import { defineContract, field, type InferContract } from "@justwant/contract";
24
+
25
+ const UserContract = defineContract({
26
+ id: field<string>().required(),
27
+ email: field<string>().required(),
28
+ emailVerified: field<boolean>().required(),
29
+ createdAt: field<Date>().required(),
30
+ name: field<string>().optional(),
31
+ });
32
+
33
+ type User = InferContract<typeof UserContract>;
34
+ // { id: string; email: string; emailVerified: boolean; createdAt: Date; name?: string }
35
+ ```
36
+
37
+ ### AdapterError
38
+
39
+ ```ts
40
+ import { AdapterError } from "@justwant/db";
41
+
42
+ throw new AdapterError("User not found", "NOT_FOUND");
43
+ ```
44
+
45
+ ### Hierarchy
46
+
47
+ ```
48
+ @justwant/db ← base (contracts, types)
49
+ @justwant/db/drizzle ← Drizzle ORM implementation
50
+ @justwant/db/prisma ← Prisma implementation
51
+ @justwant/db/waddler ← Waddler core (createDb, createWaddlerAdapter)
52
+ @justwant/db/bun-sqlite ← Bun SQLite (createBunSqliteAdapter)
53
+ @justwant/db/pg ← PostgreSQL (createPgAdapter)
54
+ ... ← other backends (neon, mysql, turso, etc.)
55
+ ↓ consumed by
56
+ @justwant/auth, @justwant/audit, @justwant/keys...
57
+ → see only MappedTable<TContract>, never Drizzle/Prisma types
58
+ ```
59
+
60
+ ## Exports
61
+
62
+ | Entry | Content |
63
+ |-------|---------|
64
+ | `@justwant/db` | Base: table types, errors, tableConforms |
65
+ | `@justwant/db/base` | Same as main |
66
+ | `@justwant/contract` | field, defineContract, InferContract, uuid, string, etc. (import from @justwant/contract) |
67
+ | `@justwant/db/table` | MappedTable, MappedTableInternal, BoundQuery, CreateInput |
68
+ | `@justwant/db/adapter` | BaseAdapter, PackageAdapter |
69
+ | `@justwant/db/errors` | AdapterError hierarchy |
70
+ | `@justwant/db/conforms` | tableConforms |
71
+ | `@justwant/db/drizzle` | createDrizzleAdapter, defineMappedTable, helpers |
72
+ | `@justwant/db/prisma` | createPrismaAdapter, helpers |
73
+ | `@justwant/db/waddler` | createDb, createWaddlerAdapter (core) |
74
+ | `@justwant/db/bun-sqlite` | createBunSqliteAdapter |
75
+ | `@justwant/db/pg` | createPgAdapter |
76
+ | `@justwant/db/neon` | createNeonAdapter |
77
+ | ... | other backends: vercel-postgres, xata, pglite, bun-sql, postgres-js, mysql, planetscale, tidb, turso, d1, durable-objects, better-sqlite3 |
78
+
79
+ ### Table-centric DDL (Waddler)
80
+
81
+ ```ts
82
+ import { defineContract, uuid, email, string } from "@justwant/contract";
83
+ import { createDb } from "@justwant/db/waddler";
84
+ import { createBunSqliteAdapter } from "@justwant/db/bun-sqlite";
85
+
86
+ const UserContract = defineContract("users", {
87
+ id: uuid().required().primaryKey(),
88
+ email: email().required(),
89
+ name: string().optional(),
90
+ });
91
+
92
+ const db = createDb(createBunSqliteAdapter({ connection: ":memory:" }));
93
+ const users = db.table(UserContract);
94
+
95
+ await users.createTable();
96
+ const exists = await users.exist(); // true
97
+ // ... create, findById, etc.
98
+ await users.drop();
99
+ ```
100
+
101
+ ## Docs
102
+
103
+ - [Drivers](docs/DRIVERS.md) — config per driver, mapping
104
+
105
+ ## Invariants
106
+
107
+ See [docs/CONTRACT.md](./docs/CONTRACT.md) for detailed invariants and implementation guidance.
108
+
109
+ ## License
110
+
111
+ MIT © [elydelva](https://github.com/elydelva)
@@ -0,0 +1,11 @@
1
+ import type { AnyContract } from "./contract.js";
2
+ import type { MappedTable } from "./table.js";
3
+ export interface BaseAdapter {
4
+ readonly dialect: "pg" | "mysql" | "sqlite";
5
+ defineTable<TSource, TContract extends AnyContract>(source: TSource, contract: TContract, mapping: unknown): MappedTable<TContract>;
6
+ transaction<T>(fn: (tx: this) => Promise<T>): Promise<T>;
7
+ }
8
+ export interface PackageAdapter<TContract extends AnyContract> {
9
+ table: MappedTable<TContract>;
10
+ }
11
+ //# sourceMappingURL=adapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../src/adapter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE9C,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,OAAO,EAAE,IAAI,GAAG,OAAO,GAAG,QAAQ,CAAC;IAE5C,WAAW,CAAC,OAAO,EAAE,SAAS,SAAS,WAAW,EAChD,MAAM,EAAE,OAAO,EACf,QAAQ,EAAE,SAAS,EACnB,OAAO,EAAE,OAAO,GACf,WAAW,CAAC,SAAS,CAAC,CAAC;IAE1B,WAAW,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;CAC1D;AAED,MAAM,WAAW,cAAc,CAAC,SAAS,SAAS,WAAW;IAC3D,KAAK,EAAE,WAAW,CAAC,SAAS,CAAC,CAAC;CAC/B"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=adapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"adapter.js","sourceRoot":"","sources":["../src/adapter.ts"],"names":[],"mappings":""}
@@ -0,0 +1,11 @@
1
+ import type { AnyContract } from "@justwant/contract";
2
+ import type { MappedTable } from "./table.js";
3
+ export interface BaseAdapter {
4
+ readonly dialect: "pg" | "mysql" | "sqlite";
5
+ defineTable<TSource, TContract extends AnyContract>(source: TSource, contract: TContract, mapping: unknown): MappedTable<TContract>;
6
+ transaction<T>(fn: (tx: this) => Promise<T>): Promise<T>;
7
+ }
8
+ export interface PackageAdapter<TContract extends AnyContract> {
9
+ table: MappedTable<TContract>;
10
+ }
11
+ //# sourceMappingURL=adapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../../src/base/adapter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE9C,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,OAAO,EAAE,IAAI,GAAG,OAAO,GAAG,QAAQ,CAAC;IAE5C,WAAW,CAAC,OAAO,EAAE,SAAS,SAAS,WAAW,EAChD,MAAM,EAAE,OAAO,EACf,QAAQ,EAAE,SAAS,EACnB,OAAO,EAAE,OAAO,GACf,WAAW,CAAC,SAAS,CAAC,CAAC;IAE1B,WAAW,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;CAC1D;AAED,MAAM,WAAW,cAAc,CAAC,SAAS,SAAS,WAAW;IAC3D,KAAK,EAAE,WAAW,CAAC,SAAS,CAAC,CAAC;CAC/B"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=adapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"adapter.js","sourceRoot":"","sources":["../../src/base/adapter.ts"],"names":[],"mappings":""}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * MappedTable-specific conformity check.
3
+ */
4
+ import type { AnyContract } from "@justwant/contract";
5
+ import type { TableContract } from "@justwant/contract";
6
+ import type { MappedTable } from "./table.js";
7
+ /**
8
+ * Runtime assertion + cast: verifies table conforms to expected contract,
9
+ * then returns table typed as MappedTable<T["fields"]>.
10
+ */
11
+ export declare function tableConforms<T extends TableContract<AnyContract>>(table: MappedTable<AnyContract>, expected: T): MappedTable<T["fields"]>;
12
+ //# sourceMappingURL=conforms.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"conforms.d.ts","sourceRoot":"","sources":["../../src/base/conforms.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAExD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE9C;;;GAGG;AACH,wBAAgB,aAAa,CAAC,CAAC,SAAS,aAAa,CAAC,WAAW,CAAC,EAChE,KAAK,EAAE,WAAW,CAAC,WAAW,CAAC,EAC/B,QAAQ,EAAE,CAAC,GACV,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAG1B"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * MappedTable-specific conformity check.
3
+ */
4
+ import { assertTableConforms as _assertTableConforms } from "@justwant/contract/conforms";
5
+ /**
6
+ * Runtime assertion + cast: verifies table conforms to expected contract,
7
+ * then returns table typed as MappedTable<T["fields"]>.
8
+ */
9
+ export function tableConforms(table, expected) {
10
+ _assertTableConforms(table, expected);
11
+ return table;
12
+ }
13
+ //# sourceMappingURL=conforms.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"conforms.js","sourceRoot":"","sources":["../../src/base/conforms.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,EAAE,mBAAmB,IAAI,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AAG1F;;;GAGG;AACH,MAAM,UAAU,aAAa,CAC3B,KAA+B,EAC/B,QAAW;IAEX,oBAAoB,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IACtC,OAAO,KAAiC,CAAC;AAC3C,CAAC"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Contract - re-exports from @justwant/contract.
3
+ */
4
+ export { field, type AnyContract, type FieldDef, type InferContract, type Infer, type TableFields, } from "@justwant/contract";
5
+ export { defineContract, type TableContract, type StringMapping, type DefineContractOptions, } from "@justwant/contract";
6
+ //# sourceMappingURL=contract.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contract.d.ts","sourceRoot":"","sources":["../../src/base/contract.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EACL,KAAK,EACL,KAAK,WAAW,EAChB,KAAK,QAAQ,EACb,KAAK,aAAa,EAClB,KAAK,KAAK,EACV,KAAK,WAAW,GACjB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,cAAc,EACd,KAAK,aAAa,EAClB,KAAK,aAAa,EAClB,KAAK,qBAAqB,GAC3B,MAAM,oBAAoB,CAAC"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Contract - re-exports from @justwant/contract.
3
+ */
4
+ export { field, } from "@justwant/contract";
5
+ export { defineContract, } from "@justwant/contract";
6
+ //# sourceMappingURL=contract.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contract.js","sourceRoot":"","sources":["../../src/base/contract.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EACL,KAAK,GAMN,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,cAAc,GAIf,MAAM,oBAAoB,CAAC"}
@@ -0,0 +1,75 @@
1
+ /**
2
+ * Normalized error hierarchy for all adapters.
3
+ * Agnostic of the underlying implementation (Drizzle, Prisma, custom).
4
+ *
5
+ * @see docs/CONTRACT.md for usage and error codes.
6
+ */
7
+ export type ConstraintType = "FOREIGN_KEY" | "UNIQUE" | "NOT_NULL" | "CHECK" | "OTHER";
8
+ export declare class AdapterError extends Error {
9
+ readonly code: string;
10
+ readonly metadata?: Record<string, unknown> | undefined;
11
+ constructor(message: string, code: string, metadata?: Record<string, unknown> | undefined);
12
+ }
13
+ export declare class AdapterNotFoundError extends AdapterError {
14
+ constructor(message: string, metadata?: {
15
+ table?: string;
16
+ id?: string;
17
+ });
18
+ }
19
+ export declare class AdapterConstraintError extends AdapterError {
20
+ readonly constraintType: ConstraintType;
21
+ constructor(message: string, constraintType: ConstraintType, metadata?: {
22
+ table?: string;
23
+ column?: string;
24
+ constraint?: string;
25
+ });
26
+ }
27
+ export declare class AdapterForeignKeyViolationError extends AdapterConstraintError {
28
+ constructor(message: string, metadata?: {
29
+ table?: string;
30
+ column?: string;
31
+ referencedTable?: string;
32
+ });
33
+ }
34
+ export declare class AdapterUniqueViolationError extends AdapterConstraintError {
35
+ constructor(message: string, metadata?: {
36
+ table?: string;
37
+ column?: string;
38
+ constraint?: string;
39
+ });
40
+ }
41
+ export declare class AdapterNotNullViolationError extends AdapterConstraintError {
42
+ constructor(message: string, metadata?: {
43
+ table?: string;
44
+ column?: string;
45
+ });
46
+ }
47
+ export declare class AdapterCheckViolationError extends AdapterConstraintError {
48
+ constructor(message: string, metadata?: {
49
+ table?: string;
50
+ constraint?: string;
51
+ });
52
+ }
53
+ export declare class AdapterMappingError extends AdapterError {
54
+ constructor(message: string, metadata?: {
55
+ field?: string;
56
+ column?: string;
57
+ });
58
+ }
59
+ export declare class AdapterUnsupportedError extends AdapterError {
60
+ constructor(message: string, metadata?: {
61
+ operation?: string;
62
+ dialect?: string;
63
+ });
64
+ }
65
+ export declare class AdapterConnectionError extends AdapterError {
66
+ constructor(message: string, metadata?: Record<string, unknown>);
67
+ }
68
+ export declare class AdapterTransactionError extends AdapterError {
69
+ constructor(message: string, metadata?: Record<string, unknown>);
70
+ }
71
+ export declare class AdapterTimeoutError extends AdapterError {
72
+ constructor(message: string, metadata?: Record<string, unknown>);
73
+ }
74
+ export declare function isAdapterError(err: unknown): err is AdapterError;
75
+ //# sourceMappingURL=errors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/base/errors.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,MAAM,cAAc,GAAG,aAAa,GAAG,QAAQ,GAAG,UAAU,GAAG,OAAO,GAAG,OAAO,CAAC;AAEvF,qBAAa,YAAa,SAAQ,KAAK;aAGnB,IAAI,EAAE,MAAM;aACZ,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;gBAFlD,OAAO,EAAE,MAAM,EACC,IAAI,EAAE,MAAM,EACZ,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,YAAA;CAMrD;AAED,qBAAa,oBAAqB,SAAQ,YAAY;gBACxC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,EAAE,CAAC,EAAE,MAAM,CAAA;KAAE;CAKxE;AAED,qBAAa,sBAAuB,SAAQ,YAAY;aAGpC,cAAc,EAAE,cAAc;gBAD9C,OAAO,EAAE,MAAM,EACC,cAAc,EAAE,cAAc,EAC9C,QAAQ,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE;CAMtE;AAED,qBAAa,+BAAgC,SAAQ,sBAAsB;gBAEvE,OAAO,EAAE,MAAM,EACf,QAAQ,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,eAAe,CAAC,EAAE,MAAM,CAAA;KAAE;CAM3E;AAED,qBAAa,2BAA4B,SAAQ,sBAAsB;gBAEnE,OAAO,EAAE,MAAM,EACf,QAAQ,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE;CAMtE;AAED,qBAAa,4BAA6B,SAAQ,sBAAsB;gBAC1D,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE;CAK5E;AAED,qBAAa,0BAA2B,SAAQ,sBAAsB;gBACxD,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE;CAKhF;AAED,qBAAa,mBAAoB,SAAQ,YAAY;gBACvC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE;CAK5E;AAED,qBAAa,uBAAwB,SAAQ,YAAY;gBAC3C,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE;CAKjF;AAED,qBAAa,sBAAuB,SAAQ,YAAY;gBAC1C,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;CAKhE;AAED,qBAAa,uBAAwB,SAAQ,YAAY;gBAC3C,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;CAKhE;AAED,qBAAa,mBAAoB,SAAQ,YAAY;gBACvC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;CAKhE;AAED,wBAAgB,cAAc,CAAC,GAAG,EAAE,OAAO,GAAG,GAAG,IAAI,YAAY,CAEhE"}
@@ -0,0 +1,100 @@
1
+ /**
2
+ * Normalized error hierarchy for all adapters.
3
+ * Agnostic of the underlying implementation (Drizzle, Prisma, custom).
4
+ *
5
+ * @see docs/CONTRACT.md for usage and error codes.
6
+ */
7
+ export class AdapterError extends Error {
8
+ code;
9
+ metadata;
10
+ constructor(message, code, metadata) {
11
+ super(message);
12
+ this.code = code;
13
+ this.metadata = metadata;
14
+ this.name = "AdapterError";
15
+ Object.setPrototypeOf(this, AdapterError.prototype);
16
+ }
17
+ }
18
+ export class AdapterNotFoundError extends AdapterError {
19
+ constructor(message, metadata) {
20
+ super(message, "NOT_FOUND", metadata);
21
+ this.name = "AdapterNotFoundError";
22
+ Object.setPrototypeOf(this, AdapterNotFoundError.prototype);
23
+ }
24
+ }
25
+ export class AdapterConstraintError extends AdapterError {
26
+ constraintType;
27
+ constructor(message, constraintType, metadata) {
28
+ super(message, constraintType, metadata);
29
+ this.constraintType = constraintType;
30
+ this.name = "AdapterConstraintError";
31
+ Object.setPrototypeOf(this, AdapterConstraintError.prototype);
32
+ }
33
+ }
34
+ export class AdapterForeignKeyViolationError extends AdapterConstraintError {
35
+ constructor(message, metadata) {
36
+ super(message, "FOREIGN_KEY", metadata);
37
+ this.name = "AdapterForeignKeyViolationError";
38
+ Object.setPrototypeOf(this, AdapterForeignKeyViolationError.prototype);
39
+ }
40
+ }
41
+ export class AdapterUniqueViolationError extends AdapterConstraintError {
42
+ constructor(message, metadata) {
43
+ super(message, "UNIQUE", metadata);
44
+ this.name = "AdapterUniqueViolationError";
45
+ Object.setPrototypeOf(this, AdapterUniqueViolationError.prototype);
46
+ }
47
+ }
48
+ export class AdapterNotNullViolationError extends AdapterConstraintError {
49
+ constructor(message, metadata) {
50
+ super(message, "NOT_NULL", metadata);
51
+ this.name = "AdapterNotNullViolationError";
52
+ Object.setPrototypeOf(this, AdapterNotNullViolationError.prototype);
53
+ }
54
+ }
55
+ export class AdapterCheckViolationError extends AdapterConstraintError {
56
+ constructor(message, metadata) {
57
+ super(message, "CHECK", metadata);
58
+ this.name = "AdapterCheckViolationError";
59
+ Object.setPrototypeOf(this, AdapterCheckViolationError.prototype);
60
+ }
61
+ }
62
+ export class AdapterMappingError extends AdapterError {
63
+ constructor(message, metadata) {
64
+ super(message, "MAPPING_ERROR", metadata);
65
+ this.name = "AdapterMappingError";
66
+ Object.setPrototypeOf(this, AdapterMappingError.prototype);
67
+ }
68
+ }
69
+ export class AdapterUnsupportedError extends AdapterError {
70
+ constructor(message, metadata) {
71
+ super(message, "UNSUPPORTED", metadata);
72
+ this.name = "AdapterUnsupportedError";
73
+ Object.setPrototypeOf(this, AdapterUnsupportedError.prototype);
74
+ }
75
+ }
76
+ export class AdapterConnectionError extends AdapterError {
77
+ constructor(message, metadata) {
78
+ super(message, "CONNECTION", metadata);
79
+ this.name = "AdapterConnectionError";
80
+ Object.setPrototypeOf(this, AdapterConnectionError.prototype);
81
+ }
82
+ }
83
+ export class AdapterTransactionError extends AdapterError {
84
+ constructor(message, metadata) {
85
+ super(message, "TRANSACTION", metadata);
86
+ this.name = "AdapterTransactionError";
87
+ Object.setPrototypeOf(this, AdapterTransactionError.prototype);
88
+ }
89
+ }
90
+ export class AdapterTimeoutError extends AdapterError {
91
+ constructor(message, metadata) {
92
+ super(message, "TIMEOUT", metadata);
93
+ this.name = "AdapterTimeoutError";
94
+ Object.setPrototypeOf(this, AdapterTimeoutError.prototype);
95
+ }
96
+ }
97
+ export function isAdapterError(err) {
98
+ return err instanceof AdapterError;
99
+ }
100
+ //# sourceMappingURL=errors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/base/errors.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Fields - re-exports from @justwant/contract/fields.
3
+ */
4
+ export { uuid, string, number, integer, boolean, date, json, email, url, ip, ipv4, ipv6, hostname, slug, uuidSchema, emailSchema, urlSchema, ipSchema, ipv4Schema, ipv6Schema, hostnameSchema, slugSchema, type FieldBuilder, type FieldBuilderState, } from "@justwant/contract/fields";
5
+ //# sourceMappingURL=fields.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fields.d.ts","sourceRoot":"","sources":["../../src/base/fields.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EACL,IAAI,EACJ,MAAM,EACN,MAAM,EACN,OAAO,EACP,OAAO,EACP,IAAI,EACJ,IAAI,EACJ,KAAK,EACL,GAAG,EACH,EAAE,EACF,IAAI,EACJ,IAAI,EACJ,QAAQ,EACR,IAAI,EACJ,UAAU,EACV,WAAW,EACX,SAAS,EACT,QAAQ,EACR,UAAU,EACV,UAAU,EACV,cAAc,EACd,UAAU,EACV,KAAK,YAAY,EACjB,KAAK,iBAAiB,GACvB,MAAM,2BAA2B,CAAC"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Fields - re-exports from @justwant/contract/fields.
3
+ */
4
+ export { uuid, string, number, integer, boolean, date, json, email, url, ip, ipv4, ipv6, hostname, slug, uuidSchema, emailSchema, urlSchema, ipSchema, ipv4Schema, ipv6Schema, hostnameSchema, slugSchema, } from "@justwant/contract/fields";
5
+ //# sourceMappingURL=fields.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fields.js","sourceRoot":"","sources":["../../src/base/fields.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EACL,IAAI,EACJ,MAAM,EACN,MAAM,EACN,OAAO,EACP,OAAO,EACP,IAAI,EACJ,IAAI,EACJ,KAAK,EACL,GAAG,EACH,EAAE,EACF,IAAI,EACJ,IAAI,EACJ,QAAQ,EACR,IAAI,EACJ,UAAU,EACV,WAAW,EACX,SAAS,EACT,QAAQ,EACR,UAAU,EACV,UAAU,EACV,cAAc,EACd,UAAU,GAGX,MAAM,2BAA2B,CAAC"}
@@ -0,0 +1,5 @@
1
+ export type { BoundQuery, CreateInput, MappedTable, MappedTableInternal, } from "./table.js";
2
+ export { AdapterError, AdapterNotFoundError, AdapterConstraintError, AdapterForeignKeyViolationError, AdapterUniqueViolationError, AdapterNotNullViolationError, AdapterCheckViolationError, AdapterMappingError, AdapterUnsupportedError, AdapterConnectionError, AdapterTransactionError, AdapterTimeoutError, isAdapterError, type ConstraintType, } from "./errors.js";
3
+ export type { BaseAdapter, PackageAdapter } from "./adapter.js";
4
+ export { tableConforms } from "./conforms.js";
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/base/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,UAAU,EACV,WAAW,EACX,WAAW,EACX,mBAAmB,GACpB,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,YAAY,EACZ,oBAAoB,EACpB,sBAAsB,EACtB,+BAA+B,EAC/B,2BAA2B,EAC3B,4BAA4B,EAC5B,0BAA0B,EAC1B,mBAAmB,EACnB,uBAAuB,EACvB,sBAAsB,EACtB,uBAAuB,EACvB,mBAAmB,EACnB,cAAc,EACd,KAAK,cAAc,GACpB,MAAM,aAAa,CAAC;AACrB,YAAY,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAChE,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC"}
@@ -0,0 +1,3 @@
1
+ export { AdapterError, AdapterNotFoundError, AdapterConstraintError, AdapterForeignKeyViolationError, AdapterUniqueViolationError, AdapterNotNullViolationError, AdapterCheckViolationError, AdapterMappingError, AdapterUnsupportedError, AdapterConnectionError, AdapterTransactionError, AdapterTimeoutError, isAdapterError, } from "./errors.js";
2
+ export { tableConforms } from "./conforms.js";
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/base/index.ts"],"names":[],"mappings":"AAMA,OAAO,EACL,YAAY,EACZ,oBAAoB,EACpB,sBAAsB,EACtB,+BAA+B,EAC/B,2BAA2B,EAC3B,4BAA4B,EAC5B,0BAA0B,EAC1B,mBAAmB,EACnB,uBAAuB,EACvB,sBAAsB,EACtB,uBAAuB,EACvB,mBAAmB,EACnB,cAAc,GAEf,MAAM,aAAa,CAAC;AAErB,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC"}
@@ -0,0 +1,61 @@
1
+ import type { AnyContract, InferContract } from "@justwant/contract";
2
+ import type { ValidateResult } from "@justwant/contract/validate";
3
+ /**
4
+ * Represents a deferred query. Execution is lazy — call execute() to run.
5
+ * Implementations (e.g. adapter-drizzle) construct these; no factory in this package.
6
+ *
7
+ * @see docs/CONTRACT.md for construction guidance.
8
+ */
9
+ export interface BoundQuery<TResult> {
10
+ readonly _result: TResult;
11
+ execute(): Promise<TResult>;
12
+ }
13
+ /**
14
+ * Input for create operations. Excludes common auto-generated fields.
15
+ * Override the excluded keys if your schema uses different names.
16
+ */
17
+ export type CreateInput<TContract extends AnyContract> = Omit<InferContract<TContract>, "id" | "createdAt" | "updatedAt">;
18
+ export interface MappedTableInternal<TContract extends AnyContract> {
19
+ readonly contract: TContract;
20
+ readonly sql: {
21
+ findById(id: string): BoundQuery<InferContract<TContract> | null>;
22
+ findOne(where: Partial<InferContract<TContract>>): BoundQuery<InferContract<TContract> | null>;
23
+ findMany(where: Partial<InferContract<TContract>>): BoundQuery<InferContract<TContract>[]>;
24
+ create(data: CreateInput<TContract>): BoundQuery<InferContract<TContract>>;
25
+ update(id: string, data: Partial<InferContract<TContract>>): BoundQuery<InferContract<TContract>>;
26
+ /** Soft delete — marks as deleted, preserves row. */
27
+ delete(id: string): BoundQuery<void>;
28
+ /** Hard delete — removes row permanently. */
29
+ hardDelete(id: string): BoundQuery<void>;
30
+ };
31
+ }
32
+ export interface MappedTable<TContract extends AnyContract> {
33
+ readonly infer: InferContract<TContract>;
34
+ readonly contract: TContract;
35
+ readonly _internal: MappedTableInternal<TContract>;
36
+ /** Create a new row. */
37
+ create(data: CreateInput<TContract>): Promise<InferContract<TContract>>;
38
+ /** Find by primary key. */
39
+ findById(id: string): Promise<InferContract<TContract> | null>;
40
+ /** Find first match. */
41
+ findOne(where: Partial<InferContract<TContract>>): Promise<InferContract<TContract> | null>;
42
+ /** Find all matches. */
43
+ findMany(where: Partial<InferContract<TContract>>): Promise<InferContract<TContract>[]>;
44
+ /** Update by id. */
45
+ update(id: string, data: Partial<InferContract<TContract>>): Promise<InferContract<TContract>>;
46
+ /** Soft delete (or hard if no soft delete column). */
47
+ delete(id: string): Promise<void>;
48
+ /** Hard delete. */
49
+ hardDelete(id: string): Promise<void>;
50
+ /** Create with validation; returns Result instead of throwing on validation error. */
51
+ createSafe?(data: CreateInput<TContract>): Promise<ValidateResult<InferContract<TContract>>>;
52
+ /** Update with validation; returns Result instead of throwing on validation error. */
53
+ updateSafe?(id: string, data: Partial<InferContract<TContract>>): Promise<ValidateResult<InferContract<TContract>>>;
54
+ /** Create table (DDL). Waddler only. */
55
+ createTable?(): Promise<void>;
56
+ /** Check if table exists. Waddler only. */
57
+ exist?(): Promise<boolean>;
58
+ /** Drop table. Waddler only. */
59
+ drop?(): Promise<void>;
60
+ }
61
+ //# sourceMappingURL=table.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"table.d.ts","sourceRoot":"","sources":["../../src/base/table.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACrE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAElE;;;;;GAKG;AACH,MAAM,WAAW,UAAU,CAAC,OAAO;IACjC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;CAC7B;AAED;;;GAGG;AACH,MAAM,MAAM,WAAW,CAAC,SAAS,SAAS,WAAW,IAAI,IAAI,CAC3D,aAAa,CAAC,SAAS,CAAC,EACxB,IAAI,GAAG,WAAW,GAAG,WAAW,CACjC,CAAC;AAEF,MAAM,WAAW,mBAAmB,CAAC,SAAS,SAAS,WAAW;IAChE,QAAQ,CAAC,QAAQ,EAAE,SAAS,CAAC;IAC7B,QAAQ,CAAC,GAAG,EAAE;QACZ,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,UAAU,CAAC,aAAa,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,CAAC;QAClE,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,GAAG,UAAU,CAAC,aAAa,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,CAAC;QAC/F,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,GAAG,UAAU,CAAC,aAAa,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;QAC3F,MAAM,CAAC,IAAI,EAAE,WAAW,CAAC,SAAS,CAAC,GAAG,UAAU,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,CAAC;QAC3E,MAAM,CACJ,EAAE,EAAE,MAAM,EACV,IAAI,EAAE,OAAO,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,GACtC,UAAU,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,CAAC;QACxC,qDAAqD;QACrD,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;QACrC,6CAA6C;QAC7C,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;KAC1C,CAAC;CACH;AAED,MAAM,WAAW,WAAW,CAAC,SAAS,SAAS,WAAW;IACxD,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC,SAAS,CAAC,CAAC;IACzC,QAAQ,CAAC,QAAQ,EAAE,SAAS,CAAC;IAC7B,QAAQ,CAAC,SAAS,EAAE,mBAAmB,CAAC,SAAS,CAAC,CAAC;IAEnD,wBAAwB;IACxB,MAAM,CAAC,IAAI,EAAE,WAAW,CAAC,SAAS,CAAC,GAAG,OAAO,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,CAAC;IACxE,2BAA2B;IAC3B,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,CAAC;IAC/D,wBAAwB;IACxB,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,GAAG,OAAO,CAAC,aAAa,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,CAAC;IAC5F,wBAAwB;IACxB,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,GAAG,OAAO,CAAC,aAAa,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;IACxF,oBAAoB;IACpB,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,GAAG,OAAO,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,CAAC;IAC/F,sDAAsD;IACtD,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAClC,mBAAmB;IACnB,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEtC,sFAAsF;IACtF,UAAU,CAAC,CAAC,IAAI,EAAE,WAAW,CAAC,SAAS,CAAC,GAAG,OAAO,CAAC,cAAc,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;IAC7F,sFAAsF;IACtF,UAAU,CAAC,CACT,EAAE,EAAE,MAAM,EACV,IAAI,EAAE,OAAO,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,GACtC,OAAO,CAAC,cAAc,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;IAErD,wCAAwC;IACxC,WAAW,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9B,2CAA2C;IAC3C,KAAK,CAAC,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;IAC3B,gCAAgC;IAChC,IAAI,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACxB"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=table.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"table.js","sourceRoot":"","sources":["../../src/base/table.ts"],"names":[],"mappings":""}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Validation - re-exports from @justwant/contract/validate.
3
+ */
4
+ export { validateContractData, ContractValidationError, type ValidationIssue, type ValidationResult, type ValidationError, type ValidateResult, type ValidateOptions, } from "@justwant/contract/validate";
5
+ //# sourceMappingURL=validate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../../src/base/validate.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EACL,oBAAoB,EACpB,uBAAuB,EACvB,KAAK,eAAe,EACpB,KAAK,gBAAgB,EACrB,KAAK,eAAe,EACpB,KAAK,cAAc,EACnB,KAAK,eAAe,GACrB,MAAM,6BAA6B,CAAC"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Validation - re-exports from @justwant/contract/validate.
3
+ */
4
+ export { validateContractData, ContractValidationError, } from "@justwant/contract/validate";
5
+ //# sourceMappingURL=validate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validate.js","sourceRoot":"","sources":["../../src/base/validate.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EACL,oBAAoB,EACpB,uBAAuB,GAMxB,MAAM,6BAA6B,CAAC"}
@@ -0,0 +1,27 @@
1
+ /**
2
+ * Pure contract definitions for adapter mapping.
3
+ * Zero runtime dependencies — types only flow through InferContract.
4
+ *
5
+ * @see docs/CONTRACT.md for invariants and edge cases.
6
+ */
7
+ /**
8
+ * Generic contract type. All contracts must be Record<string, FieldDef<unknown, boolean>>.
9
+ * Edge cases: empty contract `{}` is valid; index signatures are not supported.
10
+ */
11
+ export type AnyContract = Record<string, FieldDef<unknown, boolean>>;
12
+ export type FieldDef<T, Req extends boolean> = {
13
+ readonly _type: T;
14
+ readonly _required: Req;
15
+ readonly _nullable: boolean;
16
+ };
17
+ export declare const field: <T>() => {
18
+ required: () => FieldDef<T, true>;
19
+ optional: () => FieldDef<T, false>;
20
+ };
21
+ export type InferContract<TContract extends AnyContract> = {
22
+ [K in keyof TContract as TContract[K]["_required"] extends true ? K : never]: TContract[K]["_type"];
23
+ } & {
24
+ [K in keyof TContract as TContract[K]["_required"] extends false ? K : never]?: TContract[K]["_type"];
25
+ };
26
+ export declare function defineContract<T extends AnyContract>(contract: T): T;
27
+ //# sourceMappingURL=contract.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contract.d.ts","sourceRoot":"","sources":["../src/contract.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;;GAGG;AACH,MAAM,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;AAErE,MAAM,MAAM,QAAQ,CAAC,CAAC,EAAE,GAAG,SAAS,OAAO,IAAI;IAC7C,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC;IAClB,QAAQ,CAAC,SAAS,EAAE,GAAG,CAAC;IACxB,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;CAC7B,CAAC;AAEF,eAAO,MAAM,KAAK,GAAI,CAAC;oBACP,QAAQ,CAAC,CAAC,EAAE,IAAI,CAAC;oBAEjB,QAAQ,CAAC,CAAC,EAAE,KAAK,CAAC;CAEhC,CAAC;AAEH,MAAM,MAAM,aAAa,CAAC,SAAS,SAAS,WAAW,IAAI;KACxD,CAAC,IAAI,MAAM,SAAS,IAAI,SAAS,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,SAAS,IAAI,GAC3D,CAAC,GACD,KAAK,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;CAClC,GAAG;KACD,CAAC,IAAI,MAAM,SAAS,IAAI,SAAS,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,SAAS,KAAK,GAC5D,CAAC,GACD,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;CACnC,CAAC;AAEF,wBAAgB,cAAc,CAAC,CAAC,SAAS,WAAW,EAAE,QAAQ,EAAE,CAAC,GAAG,CAAC,CAEpE"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Pure contract definitions for adapter mapping.
3
+ * Zero runtime dependencies — types only flow through InferContract.
4
+ *
5
+ * @see docs/CONTRACT.md for invariants and edge cases.
6
+ */
7
+ export const field = () => ({
8
+ required: () => ({ _type: undefined, _required: true, _nullable: false }),
9
+ optional: () => ({ _type: undefined, _required: false, _nullable: true }),
10
+ });
11
+ export function defineContract(contract) {
12
+ return contract;
13
+ }
14
+ //# sourceMappingURL=contract.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contract.js","sourceRoot":"","sources":["../src/contract.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAcH,MAAM,CAAC,MAAM,KAAK,GAAG,GAAM,EAAE,CAAC,CAAC;IAC7B,QAAQ,EAAE,GAAsB,EAAE,CAChC,CAAC,EAAE,KAAK,EAAE,SAAc,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,CAAsB;IACrF,QAAQ,EAAE,GAAuB,EAAE,CACjC,CAAC,EAAE,KAAK,EAAE,SAAc,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,CAAuB;CACvF,CAAC,CAAC;AAYH,MAAM,UAAU,cAAc,CAAwB,QAAW;IAC/D,OAAO,QAAQ,CAAC;AAClB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=contract.type-test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contract.type-test.d.ts","sourceRoot":"","sources":["../src/contract.type-test.ts"],"names":[],"mappings":""}