@rx-ted/packages-honest-plugins 1.0.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 (266) hide show
  1. package/CHANGELOG.md +13 -0
  2. package/README.md +45 -0
  3. package/api-doc/.turbo/turbo-build.log +1 -0
  4. package/api-doc/.turbo/turbo-test.log +11 -0
  5. package/api-doc/.turbo/turbo-typecheck.log +1 -0
  6. package/api-doc/CHANGELOG.md +22 -0
  7. package/api-doc/README.md +80 -0
  8. package/api-doc/dist/api-doc.plugin.d.ts +53 -0
  9. package/api-doc/dist/api-doc.plugin.js +452 -0
  10. package/api-doc/dist/index.d.ts +5 -0
  11. package/api-doc/dist/index.js +3 -0
  12. package/api-doc/dist/interfaces/renderer.interface.d.ts +7 -0
  13. package/api-doc/dist/interfaces/renderer.interface.js +1 -0
  14. package/api-doc/dist/renderers/scalar.renderer.d.ts +10 -0
  15. package/api-doc/dist/renderers/scalar.renderer.js +76 -0
  16. package/api-doc/dist/renderers/swagger.renderer.d.ts +10 -0
  17. package/api-doc/dist/renderers/swagger.renderer.js +83 -0
  18. package/api-doc/node_modules/.bin/esbuild +22 -0
  19. package/api-doc/node_modules/.bin/jiti +22 -0
  20. package/api-doc/node_modules/.bin/sass +22 -0
  21. package/api-doc/node_modules/.bin/tsx +22 -0
  22. package/api-doc/node_modules/.bin/vite +22 -0
  23. package/api-doc/node_modules/.bin/vitest +22 -0
  24. package/api-doc/node_modules/.bin/yaml +22 -0
  25. package/api-doc/node_modules/.vite/vitest/da39a3ee5e6b4b0d3255bfef95601890afd80709/results.json +1 -0
  26. package/api-doc/package.json +48 -0
  27. package/api-doc/src/api-doc.plugin.ts +554 -0
  28. package/api-doc/src/index.ts +5 -0
  29. package/api-doc/src/interfaces/renderer.interface.ts +5 -0
  30. package/api-doc/src/plugin.test.ts +740 -0
  31. package/api-doc/src/renderers/scalar.renderer.ts +82 -0
  32. package/api-doc/src/renderers/swagger.renderer.ts +89 -0
  33. package/api-doc/tsconfig.json +21 -0
  34. package/api-doc/vitest.config.ts +13 -0
  35. package/cache/.turbo/turbo-build.log +1 -0
  36. package/cache/.turbo/turbo-test.log +16 -0
  37. package/cache/CHANGELOG.md +23 -0
  38. package/cache/README.md +79 -0
  39. package/cache/dist/cache-service.d.ts +8 -0
  40. package/cache/dist/cache-service.js +21 -0
  41. package/cache/dist/cacheable.d.ts +2 -0
  42. package/cache/dist/cacheable.js +10 -0
  43. package/cache/dist/cloudflare/driver.d.ts +23 -0
  44. package/cache/dist/cloudflare/driver.js +102 -0
  45. package/cache/dist/cloudflare/index.d.ts +3 -0
  46. package/cache/dist/cloudflare/index.js +2 -0
  47. package/cache/dist/cloudflare/plugin.d.ts +19 -0
  48. package/cache/dist/cloudflare/plugin.js +58 -0
  49. package/cache/dist/index.d.ts +11 -0
  50. package/cache/dist/index.js +14 -0
  51. package/cache/dist/local/driver.d.ts +2 -0
  52. package/cache/dist/local/driver.js +98 -0
  53. package/cache/dist/local/index.d.ts +2 -0
  54. package/cache/dist/local/index.js +2 -0
  55. package/cache/dist/local/plugin.d.ts +14 -0
  56. package/cache/dist/local/plugin.js +24 -0
  57. package/cache/dist/redis/driver.d.ts +10 -0
  58. package/cache/dist/redis/driver.js +102 -0
  59. package/cache/dist/redis/index.d.ts +4 -0
  60. package/cache/dist/redis/index.js +2 -0
  61. package/cache/dist/redis/plugin.d.ts +25 -0
  62. package/cache/dist/redis/plugin.js +61 -0
  63. package/cache/dist/resolve.d.ts +24 -0
  64. package/cache/dist/resolve.js +114 -0
  65. package/cache/dist/types.d.ts +18 -0
  66. package/cache/dist/types.js +1 -0
  67. package/cache/node_modules/.bin/esbuild +22 -0
  68. package/cache/node_modules/.bin/jiti +22 -0
  69. package/cache/node_modules/.bin/sass +22 -0
  70. package/cache/node_modules/.bin/tsx +22 -0
  71. package/cache/node_modules/.bin/vite +22 -0
  72. package/cache/node_modules/.bin/vitest +22 -0
  73. package/cache/node_modules/.bin/yaml +22 -0
  74. package/cache/node_modules/.vite/vitest/da39a3ee5e6b4b0d3255bfef95601890afd80709/results.json +1 -0
  75. package/cache/package.json +46 -0
  76. package/cache/src/cache-service.test.ts +16 -0
  77. package/cache/src/cache-service.ts +15 -0
  78. package/cache/src/cacheable.test.ts +78 -0
  79. package/cache/src/cacheable.ts +16 -0
  80. package/cache/src/cloudflare/driver.test.ts +188 -0
  81. package/cache/src/cloudflare/driver.ts +118 -0
  82. package/cache/src/cloudflare/index.ts +3 -0
  83. package/cache/src/cloudflare/plugin.ts +71 -0
  84. package/cache/src/index.test.ts +68 -0
  85. package/cache/src/index.ts +20 -0
  86. package/cache/src/local/driver.ts +117 -0
  87. package/cache/src/local/index.ts +2 -0
  88. package/cache/src/local/plugin.ts +34 -0
  89. package/cache/src/redis/driver.test.ts +71 -0
  90. package/cache/src/redis/driver.ts +124 -0
  91. package/cache/src/redis/index.ts +4 -0
  92. package/cache/src/redis/plugin.ts +84 -0
  93. package/cache/src/resolve.test.ts +257 -0
  94. package/cache/src/resolve.ts +140 -0
  95. package/cache/src/types.ts +14 -0
  96. package/cache/tsconfig.json +21 -0
  97. package/cache/vitest.config.ts +13 -0
  98. package/db/.turbo/turbo-build.log +1 -0
  99. package/db/.turbo/turbo-test.log +21 -0
  100. package/db/CHANGELOG.md +26 -0
  101. package/db/README.md +99 -0
  102. package/db/dist/constants.d.ts +1 -0
  103. package/db/dist/constants.js +1 -0
  104. package/db/dist/d1/index.d.ts +3 -0
  105. package/db/dist/d1/index.js +2 -0
  106. package/db/dist/d1/plugin.d.ts +18 -0
  107. package/db/dist/d1/plugin.js +104 -0
  108. package/db/dist/db-service.d.ts +7 -0
  109. package/db/dist/db-service.js +21 -0
  110. package/db/dist/index.d.ts +15 -0
  111. package/db/dist/index.js +20 -0
  112. package/db/dist/mysql/client.d.ts +36 -0
  113. package/db/dist/mysql/client.js +84 -0
  114. package/db/dist/mysql/driver.d.ts +18 -0
  115. package/db/dist/mysql/driver.js +107 -0
  116. package/db/dist/mysql/index.d.ts +11 -0
  117. package/db/dist/mysql/index.js +11 -0
  118. package/db/dist/mysql/plugin.d.ts +51 -0
  119. package/db/dist/mysql/plugin.js +94 -0
  120. package/db/dist/mysql/types.d.ts +38 -0
  121. package/db/dist/mysql/types.js +1 -0
  122. package/db/dist/postgres/index.d.ts +2 -0
  123. package/db/dist/postgres/index.js +3 -0
  124. package/db/dist/repository.d.ts +14 -0
  125. package/db/dist/repository.js +79 -0
  126. package/db/dist/resolve.d.ts +6 -0
  127. package/db/dist/resolve.js +81 -0
  128. package/db/dist/schema-builder/column-builder.d.ts +26 -0
  129. package/db/dist/schema-builder/column-builder.js +53 -0
  130. package/db/dist/schema-builder/compile-d1.d.ts +5 -0
  131. package/db/dist/schema-builder/compile-d1.js +67 -0
  132. package/db/dist/schema-builder/compile-mysql.d.ts +12 -0
  133. package/db/dist/schema-builder/compile-mysql.js +78 -0
  134. package/db/dist/schema-builder/index.d.ts +8 -0
  135. package/db/dist/schema-builder/index.js +22 -0
  136. package/db/dist/schema-builder/table-builder.d.ts +16 -0
  137. package/db/dist/schema-builder/table-builder.js +38 -0
  138. package/db/dist/schema-builder/types.d.ts +26 -0
  139. package/db/dist/schema-builder/types.js +1 -0
  140. package/db/dist/schema-builder/zod-bridge.d.ts +24 -0
  141. package/db/dist/schema-builder/zod-bridge.js +53 -0
  142. package/db/dist/sqlite/index.d.ts +4 -0
  143. package/db/dist/sqlite/index.js +2 -0
  144. package/db/dist/sqlite/plugin.d.ts +17 -0
  145. package/db/dist/sqlite/plugin.js +33 -0
  146. package/db/dist/types.d.ts +42 -0
  147. package/db/dist/types.js +1 -0
  148. package/db/node_modules/.bin/esbuild +22 -0
  149. package/db/node_modules/.bin/jiti +22 -0
  150. package/db/node_modules/.bin/sass +22 -0
  151. package/db/node_modules/.bin/tsx +22 -0
  152. package/db/node_modules/.bin/vite +22 -0
  153. package/db/node_modules/.bin/vitest +22 -0
  154. package/db/node_modules/.bin/yaml +22 -0
  155. package/db/node_modules/.vite/vitest/da39a3ee5e6b4b0d3255bfef95601890afd80709/results.json +1 -0
  156. package/db/package.json +59 -0
  157. package/db/src/constants.test.ts +8 -0
  158. package/db/src/constants.ts +1 -0
  159. package/db/src/d1/index.ts +13 -0
  160. package/db/src/d1/plugin.ts +135 -0
  161. package/db/src/db-service.ts +14 -0
  162. package/db/src/index.test.ts +63 -0
  163. package/db/src/index.ts +57 -0
  164. package/db/src/mysql/client.ts +112 -0
  165. package/db/src/mysql/driver.test.ts +190 -0
  166. package/db/src/mysql/driver.ts +116 -0
  167. package/db/src/mysql/index.ts +51 -0
  168. package/db/src/mysql/plugin.test.ts +228 -0
  169. package/db/src/mysql/plugin.ts +128 -0
  170. package/db/src/mysql/types.ts +32 -0
  171. package/db/src/postgres/index.ts +15 -0
  172. package/db/src/repository.test.ts +195 -0
  173. package/db/src/repository.ts +95 -0
  174. package/db/src/resolve.ts +105 -0
  175. package/db/src/schema-builder/column-builder.test.ts +55 -0
  176. package/db/src/schema-builder/column-builder.ts +87 -0
  177. package/db/src/schema-builder/compile-d1.test.ts +60 -0
  178. package/db/src/schema-builder/compile-d1.ts +70 -0
  179. package/db/src/schema-builder/compile-mysql.test.ts +64 -0
  180. package/db/src/schema-builder/compile-mysql.ts +102 -0
  181. package/db/src/schema-builder/index.test.ts +36 -0
  182. package/db/src/schema-builder/index.ts +41 -0
  183. package/db/src/schema-builder/table-builder.test.ts +55 -0
  184. package/db/src/schema-builder/table-builder.ts +50 -0
  185. package/db/src/schema-builder/types.test.ts +68 -0
  186. package/db/src/schema-builder/types.ts +30 -0
  187. package/db/src/schema-builder/zod-bridge.ts +89 -0
  188. package/db/src/sqlite/index.ts +14 -0
  189. package/db/src/sqlite/plugin.ts +46 -0
  190. package/db/src/types.ts +45 -0
  191. package/db/tsconfig.json +21 -0
  192. package/db/vitest.config.ts +13 -0
  193. package/mail/.turbo/turbo-build.log +1 -0
  194. package/mail/.turbo/turbo-test.log +12 -0
  195. package/mail/.turbo/turbo-typecheck.log +1 -0
  196. package/mail/CHANGELOG.md +25 -0
  197. package/mail/README.md +214 -0
  198. package/mail/dist/index.d.ts +4 -0
  199. package/mail/dist/index.js +2 -0
  200. package/mail/dist/plugin.d.ts +64 -0
  201. package/mail/dist/plugin.js +232 -0
  202. package/mail/dist/providers/brevo.provider.d.ts +15 -0
  203. package/mail/dist/providers/brevo.provider.js +75 -0
  204. package/mail/dist/providers/custom.provider.d.ts +9 -0
  205. package/mail/dist/providers/custom.provider.js +22 -0
  206. package/mail/dist/providers/resend.provider.d.ts +16 -0
  207. package/mail/dist/providers/resend.provider.js +77 -0
  208. package/mail/dist/providers/smtp.provider.d.ts +21 -0
  209. package/mail/dist/providers/smtp.provider.js +86 -0
  210. package/mail/dist/rate-limiter.d.ts +16 -0
  211. package/mail/dist/rate-limiter.js +49 -0
  212. package/mail/dist/types.d.ts +68 -0
  213. package/mail/dist/types.js +6 -0
  214. package/mail/node_modules/.bin/esbuild +22 -0
  215. package/mail/node_modules/.bin/jiti +22 -0
  216. package/mail/node_modules/.bin/sass +22 -0
  217. package/mail/node_modules/.bin/tsx +22 -0
  218. package/mail/node_modules/.bin/vite +22 -0
  219. package/mail/node_modules/.bin/vitest +22 -0
  220. package/mail/node_modules/.bin/yaml +22 -0
  221. package/mail/node_modules/.vite/vitest/da39a3ee5e6b4b0d3255bfef95601890afd80709/results.json +1 -0
  222. package/mail/package.json +52 -0
  223. package/mail/src/index.ts +4 -0
  224. package/mail/src/plugin.test.ts +219 -0
  225. package/mail/src/plugin.ts +313 -0
  226. package/mail/src/providers/brevo.provider.ts +78 -0
  227. package/mail/src/providers/custom.provider.ts +29 -0
  228. package/mail/src/providers/resend.provider.ts +74 -0
  229. package/mail/src/providers/smtp.provider.ts +85 -0
  230. package/mail/src/rate-limiter.test.ts +81 -0
  231. package/mail/src/rate-limiter.ts +54 -0
  232. package/mail/src/types.ts +81 -0
  233. package/mail/tsconfig.json +21 -0
  234. package/mail/vitest.config.ts +13 -0
  235. package/package.json +36 -0
  236. package/s3/.turbo/turbo-build.log +1 -0
  237. package/s3/.turbo/turbo-test.log +11 -0
  238. package/s3/CHANGELOG.md +20 -0
  239. package/s3/README.md +90 -0
  240. package/s3/dist/index.d.ts +6 -0
  241. package/s3/dist/index.js +4 -0
  242. package/s3/dist/s3-service.d.ts +7 -0
  243. package/s3/dist/s3-service.js +21 -0
  244. package/s3/dist/s3.driver.d.ts +6 -0
  245. package/s3/dist/s3.driver.js +221 -0
  246. package/s3/dist/s3.plugin.d.ts +24 -0
  247. package/s3/dist/s3.plugin.js +58 -0
  248. package/s3/dist/types.d.ts +30 -0
  249. package/s3/dist/types.js +1 -0
  250. package/s3/node_modules/.bin/esbuild +22 -0
  251. package/s3/node_modules/.bin/jiti +22 -0
  252. package/s3/node_modules/.bin/sass +22 -0
  253. package/s3/node_modules/.bin/tsx +22 -0
  254. package/s3/node_modules/.bin/vite +22 -0
  255. package/s3/node_modules/.bin/vitest +22 -0
  256. package/s3/node_modules/.bin/yaml +22 -0
  257. package/s3/node_modules/.vite/vitest/da39a3ee5e6b4b0d3255bfef95601890afd80709/results.json +1 -0
  258. package/s3/package.json +47 -0
  259. package/s3/src/index.test.ts +20 -0
  260. package/s3/src/index.ts +13 -0
  261. package/s3/src/s3-service.ts +14 -0
  262. package/s3/src/s3.driver.ts +259 -0
  263. package/s3/src/s3.plugin.ts +80 -0
  264. package/s3/src/types.ts +37 -0
  265. package/s3/tsconfig.json +21 -0
  266. package/s3/vitest.config.ts +13 -0
@@ -0,0 +1,67 @@
1
+ import { sqliteTable, text, integer, real } from 'drizzle-orm/sqlite-core';
2
+ export function compileD1(schema) {
3
+ const compiled = {};
4
+ const dbNameToKey = {};
5
+ for (const key of Object.keys(schema)) {
6
+ dbNameToKey[schema[key].name] = key;
7
+ }
8
+ for (const tableName of Object.keys(schema)) {
9
+ const tableDef = schema[tableName];
10
+ const builders = {};
11
+ for (const [colName, colDef] of Object.entries(tableDef.columns)) {
12
+ let col = toD1Column(colDef.name, colDef);
13
+ if (colDef.references) {
14
+ const refKey = dbNameToKey[colDef.references.table] ?? colDef.references.table;
15
+ col = col.references(() => compiled[refKey]?.[colDef.references.column], {
16
+ onDelete: colDef.references.onDelete,
17
+ });
18
+ }
19
+ builders[colName] = col;
20
+ }
21
+ compiled[tableName] = sqliteTable(tableDef.name, builders);
22
+ }
23
+ return compiled;
24
+ }
25
+ function toD1Column(name, def) {
26
+ let col;
27
+ switch (def.type) {
28
+ case 'varchar':
29
+ case 'char':
30
+ case 'text':
31
+ case 'enum':
32
+ col = text(name);
33
+ break;
34
+ case 'json':
35
+ col = text(name, { mode: 'json' });
36
+ break;
37
+ case 'bigint':
38
+ case 'integer':
39
+ col = integer(name);
40
+ break;
41
+ case 'boolean':
42
+ col = integer(name, { mode: 'boolean' });
43
+ break;
44
+ case 'timestamp':
45
+ case 'date':
46
+ col = integer(name, { mode: 'timestamp' });
47
+ break;
48
+ case 'decimal':
49
+ col = real(name);
50
+ break;
51
+ default:
52
+ col = text(name);
53
+ }
54
+ if (def.autoIncrement) {
55
+ col = col.primaryKey({ autoIncrement: true });
56
+ }
57
+ else if (def.primaryKey) {
58
+ col = col.primaryKey();
59
+ }
60
+ if (def.notNull)
61
+ col = col.notNull();
62
+ if (def.unique)
63
+ col = col.unique();
64
+ if (def.default !== undefined)
65
+ col = col.default(def.default);
66
+ return col;
67
+ }
@@ -0,0 +1,12 @@
1
+ import type { MySqlTableWithColumns } from 'drizzle-orm/mysql-core';
2
+ import type { TableDefinition } from './types';
3
+ type AnyMySqlTable<N extends string = string> = MySqlTableWithColumns<{
4
+ name: N;
5
+ columns: Record<string, any>;
6
+ dialect: string;
7
+ schema: string | undefined;
8
+ }>;
9
+ export declare function compileMysql<T extends Record<string, TableDefinition>>(schema: T): {
10
+ [K in keyof T]: T[K] extends TableDefinition<infer N> ? AnyMySqlTable<N & string> : never;
11
+ };
12
+ export {};
@@ -0,0 +1,78 @@
1
+ import { mysqlTable, varchar, char, text, int, bigint, boolean, datetime, date, mysqlEnum, json, decimal, } from 'drizzle-orm/mysql-core';
2
+ export function compileMysql(schema) {
3
+ const compiled = {};
4
+ const dbNameToKey = {};
5
+ for (const key of Object.keys(schema)) {
6
+ dbNameToKey[schema[key].name] = key;
7
+ }
8
+ for (const tableName of Object.keys(schema)) {
9
+ const tableDef = schema[tableName];
10
+ const builders = {};
11
+ for (const [colName, colDef] of Object.entries(tableDef.columns)) {
12
+ let col = toMysqlColumn(colDef.name, colDef);
13
+ if (colDef.references) {
14
+ const refKey = dbNameToKey[colDef.references.table] ?? colDef.references.table;
15
+ col = col.references(() => compiled[refKey]?.[colDef.references.column], {
16
+ onDelete: colDef.references.onDelete,
17
+ });
18
+ }
19
+ builders[colName] = col;
20
+ }
21
+ compiled[tableName] = mysqlTable(tableDef.name, builders);
22
+ }
23
+ return compiled;
24
+ }
25
+ function toMysqlColumn(name, def) {
26
+ let col;
27
+ switch (def.type) {
28
+ case 'varchar':
29
+ col = varchar(name, { length: def.length ?? 255 });
30
+ break;
31
+ case 'char':
32
+ col = char(name, { length: def.length ?? 1 });
33
+ break;
34
+ case 'text':
35
+ col = text(name);
36
+ break;
37
+ case 'bigint':
38
+ col = bigint(name, { mode: 'number', unsigned: true });
39
+ break;
40
+ case 'integer':
41
+ col = int(name);
42
+ break;
43
+ case 'boolean':
44
+ col = boolean(name);
45
+ break;
46
+ case 'timestamp':
47
+ col = datetime(name);
48
+ break;
49
+ case 'date':
50
+ col = date(name);
51
+ break;
52
+ case 'enum':
53
+ col =
54
+ def.values && def.values.length > 0
55
+ ? mysqlEnum(name, def.values)
56
+ : text(name);
57
+ break;
58
+ case 'json':
59
+ col = json(name);
60
+ break;
61
+ case 'decimal':
62
+ col = decimal(name, { precision: def.precision, scale: def.scale });
63
+ break;
64
+ default:
65
+ col = text(name);
66
+ }
67
+ if (def.primaryKey)
68
+ col = col.primaryKey();
69
+ if (def.autoIncrement)
70
+ col = col.autoincrement();
71
+ if (def.notNull)
72
+ col = col.notNull();
73
+ if (def.unique)
74
+ col = col.unique();
75
+ if (def.default !== undefined)
76
+ col = col.default(def.default);
77
+ return col;
78
+ }
@@ -0,0 +1,8 @@
1
+ export { t, table } from './table-builder';
2
+ export type { Dialect, ColumnDefinition, TableDefinition, SchemaDefinition, ReferenceDef, } from './types';
3
+ export { compileMysql } from './compile-mysql';
4
+ export { compileD1 } from './compile-d1';
5
+ export { zdb, getZodDbMeta, isZodObject, toTableDefinition, toColumnDefinition, } from './zod-bridge';
6
+ export type { ZodDbMeta } from './zod-bridge';
7
+ import type { Dialect } from './types';
8
+ export declare function compileSchema<T extends Record<string, any>>(dialect: Dialect, schema: T): Record<string, any>;
@@ -0,0 +1,22 @@
1
+ export { t, table } from './table-builder';
2
+ export { compileMysql } from './compile-mysql';
3
+ export { compileD1 } from './compile-d1';
4
+ export { zdb, getZodDbMeta, isZodObject, toTableDefinition, toColumnDefinition, } from './zod-bridge';
5
+ import { isZodObject, toTableDefinition } from './zod-bridge';
6
+ import { compileMysql } from './compile-mysql';
7
+ import { compileD1 } from './compile-d1';
8
+ export function compileSchema(dialect, schema) {
9
+ const definitions = {};
10
+ for (const [name, def] of Object.entries(schema)) {
11
+ definitions[name] = isZodObject(def) ? toTableDefinition(name, def) : def;
12
+ }
13
+ switch (dialect) {
14
+ case 'mysql':
15
+ return compileMysql(definitions);
16
+ case 'd1':
17
+ case 'sqlite':
18
+ return compileD1(definitions);
19
+ default:
20
+ throw new Error(`Unknown dialect: ${dialect}`);
21
+ }
22
+ }
@@ -0,0 +1,16 @@
1
+ import { ColumnBuilder } from './column-builder';
2
+ import type { TableDefinition } from './types';
3
+ export declare const t: {
4
+ varchar: (length: number) => ColumnBuilder;
5
+ char: (length: number) => ColumnBuilder;
6
+ text: () => ColumnBuilder;
7
+ bigint: () => ColumnBuilder;
8
+ integer: () => ColumnBuilder;
9
+ boolean: () => ColumnBuilder;
10
+ timestamp: () => ColumnBuilder;
11
+ date: () => ColumnBuilder;
12
+ enum: (values: string[]) => ColumnBuilder;
13
+ json: () => ColumnBuilder;
14
+ decimal: (p: number, s: number) => ColumnBuilder;
15
+ };
16
+ export declare function table<N extends string>(name: N, columns: Record<string, ColumnBuilder>): TableDefinition<N>;
@@ -0,0 +1,38 @@
1
+ import { ColumnBuilder } from './column-builder';
2
+ function c(type, opts) {
3
+ return new ColumnBuilder(type, opts);
4
+ }
5
+ export const t = {
6
+ varchar: (length) => c('varchar', { length }),
7
+ char: (length) => c('char', { length }),
8
+ text: () => c('text'),
9
+ bigint: () => c('bigint'),
10
+ integer: () => c('integer'),
11
+ boolean: () => c('boolean'),
12
+ timestamp: () => c('timestamp'),
13
+ date: () => c('date'),
14
+ enum: (values) => c('enum', { values }),
15
+ json: () => c('json'),
16
+ decimal: (p, s) => c('decimal', { precision: p, scale: s }),
17
+ };
18
+ export function table(name, columns) {
19
+ const defs = {};
20
+ for (const [colName, builder] of Object.entries(columns)) {
21
+ builder.__tableName = name;
22
+ builder.__columnName = colName;
23
+ defs[colName] = builder.build(colName);
24
+ }
25
+ const tbl = { name, columns: defs };
26
+ return proxyTable(tbl, columns);
27
+ }
28
+ function proxyTable(tbl, columns) {
29
+ return new Proxy(tbl, {
30
+ get(target, prop) {
31
+ if (prop in target)
32
+ return target[prop];
33
+ if (typeof prop === 'string' && prop in columns)
34
+ return columns[prop];
35
+ return undefined;
36
+ },
37
+ });
38
+ }
@@ -0,0 +1,26 @@
1
+ export type Dialect = 'mysql' | 'd1' | 'sqlite';
2
+ export interface ReferenceDef {
3
+ table: string;
4
+ column: string;
5
+ onDelete?: 'cascade' | 'set null' | 'restrict' | 'no action';
6
+ }
7
+ export interface ColumnDefinition {
8
+ type: string;
9
+ /** DB column name (distinct from the Record key which is the JS property name) */
10
+ name: string;
11
+ primaryKey?: boolean;
12
+ autoIncrement?: boolean;
13
+ notNull?: boolean;
14
+ unique?: boolean;
15
+ default?: unknown;
16
+ length?: number;
17
+ values?: string[];
18
+ precision?: number;
19
+ scale?: number;
20
+ references?: ReferenceDef;
21
+ }
22
+ export interface TableDefinition<N extends string = string> {
23
+ name: N;
24
+ columns: Record<string, ColumnDefinition>;
25
+ }
26
+ export type SchemaDefinition = Record<string, TableDefinition>;
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,24 @@
1
+ import { z } from 'zod';
2
+ import type { ColumnDefinition, ReferenceDef } from './types';
3
+ export interface ZodDbMeta {
4
+ type: 'varchar' | 'char' | 'text' | 'bigint' | 'integer' | 'boolean' | 'timestamp' | 'date' | 'enum' | 'json' | 'decimal';
5
+ dbName?: string;
6
+ primaryKey?: boolean;
7
+ autoIncrement?: boolean;
8
+ notNull?: boolean;
9
+ unique?: boolean;
10
+ default?: unknown;
11
+ length?: number;
12
+ values?: string[];
13
+ precision?: number;
14
+ scale?: number;
15
+ references?: ReferenceDef;
16
+ }
17
+ export declare function zdb<T extends z.ZodType>(zod: T, meta: ZodDbMeta): T;
18
+ export declare function getZodDbMeta(zod: z.ZodType): ZodDbMeta | undefined;
19
+ export declare function isZodObject(schema: unknown): schema is z.ZodObject<any>;
20
+ export declare function toColumnDefinition(jsName: string, zod: z.ZodType): ColumnDefinition;
21
+ export declare function toTableDefinition(name: string, schema: z.ZodObject<any>): {
22
+ name: string;
23
+ columns: Record<string, ColumnDefinition>;
24
+ };
@@ -0,0 +1,53 @@
1
+ import { z } from 'zod';
2
+ const DB_COL = Symbol('zod:db-col');
3
+ export function zdb(zod, meta) {
4
+ Object.defineProperty(zod, DB_COL, {
5
+ value: meta,
6
+ writable: true,
7
+ configurable: true,
8
+ });
9
+ return zod;
10
+ }
11
+ export function getZodDbMeta(zod) {
12
+ return zod[DB_COL];
13
+ }
14
+ export function isZodObject(schema) {
15
+ return typeof schema === 'object' && schema !== null && 'shape' in schema;
16
+ }
17
+ export function toColumnDefinition(jsName, zod) {
18
+ const meta = getZodDbMeta(zod);
19
+ if (!meta) {
20
+ const inner = zod._def?.innerType;
21
+ if (zod instanceof z.ZodDefault && inner) {
22
+ return toColumnDefinition(jsName, inner);
23
+ }
24
+ if (zod instanceof z.ZodNullable && inner) {
25
+ return toColumnDefinition(jsName, inner);
26
+ }
27
+ if (zod instanceof z.ZodOptional && inner) {
28
+ return toColumnDefinition(jsName, inner);
29
+ }
30
+ throw new Error(`Column "${jsName}" has no db metadata. Use zdb() to attach metadata.`);
31
+ }
32
+ return {
33
+ name: meta.dbName ?? jsName,
34
+ type: meta.type,
35
+ primaryKey: meta.primaryKey,
36
+ autoIncrement: meta.autoIncrement,
37
+ notNull: meta.notNull,
38
+ unique: meta.unique,
39
+ default: meta.default,
40
+ length: meta.length,
41
+ values: meta.values,
42
+ precision: meta.precision,
43
+ scale: meta.scale,
44
+ references: meta.references,
45
+ };
46
+ }
47
+ export function toTableDefinition(name, schema) {
48
+ const columns = {};
49
+ for (const [key, zod] of Object.entries(schema.shape)) {
50
+ columns[key] = toColumnDefinition(key, zod);
51
+ }
52
+ return { name, columns };
53
+ }
@@ -0,0 +1,4 @@
1
+ export { sqliteTable, text, integer, real, blob, uniqueIndex, index, primaryKey, foreignKey, } from 'drizzle-orm/sqlite-core';
2
+ export type { BaseSQLiteDatabase } from 'drizzle-orm/sqlite-core';
3
+ export { SqlitePlugin } from './plugin';
4
+ export type { SqlitePluginOptions } from './plugin';
@@ -0,0 +1,2 @@
1
+ export { sqliteTable, text, integer, real, blob, uniqueIndex, index, primaryKey, foreignKey, } from 'drizzle-orm/sqlite-core';
2
+ export { SqlitePlugin } from './plugin';
@@ -0,0 +1,17 @@
1
+ import type { Hono } from 'hono';
2
+ import type { IPlugin, Application } from '@rx-ted/packages-honest';
3
+ import { type ILogger } from '@rx-ted/packages-core';
4
+ export interface SqlitePluginOptions {
5
+ dbPath: string;
6
+ schema: Record<string, any>;
7
+ }
8
+ export declare class SqlitePlugin implements IPlugin {
9
+ private options;
10
+ readonly name = "sqlite-plugin";
11
+ readonly version = "0.0.1";
12
+ logger?: ILogger;
13
+ private db;
14
+ constructor(options: SqlitePluginOptions);
15
+ beforeModulesRegistered(_app: Application, _hono: Hono): Promise<void>;
16
+ close(): Promise<void>;
17
+ }
@@ -0,0 +1,33 @@
1
+ import { ComponentManager, resolvePluginLogger } from '@rx-ted/packages-honest';
2
+ import { ENV_SYMBOL } from '@rx-ted/packages-core';
3
+ import { createClient } from '@libsql/client';
4
+ import { drizzle } from 'drizzle-orm/libsql';
5
+ import { DB_GLOBAL_KEY } from '../constants';
6
+ import { assertRuntimeSupport } from '../resolve';
7
+ export class SqlitePlugin {
8
+ options;
9
+ name = 'sqlite-plugin';
10
+ version = '0.0.1';
11
+ logger;
12
+ db = null;
13
+ constructor(options) {
14
+ this.options = options;
15
+ }
16
+ async beforeModulesRegistered(_app, _hono) {
17
+ this.logger ??= resolvePluginLogger(this.name);
18
+ const env = ComponentManager.getPlugin(ENV_SYMBOL);
19
+ assertRuntimeSupport(env.platform, 'sqlite');
20
+ this.logger.info(`connecting to SQLite: ${this.options.dbPath}`);
21
+ const client = createClient({ url: `file:${this.options.dbPath}` });
22
+ const raw = drizzle(client, { schema: this.options.schema });
23
+ this.db = raw;
24
+ ComponentManager.registerPlugin(DB_GLOBAL_KEY, this.db);
25
+ this.logger.info(`SQLite connected: ${this.options.dbPath}`);
26
+ }
27
+ async close() {
28
+ if (this.db?.$client) {
29
+ this.db.$client.close();
30
+ this.logger?.info('SQLite connection closed');
31
+ }
32
+ }
33
+ }
@@ -0,0 +1,42 @@
1
+ export interface PreparedStatement {
2
+ execute(params?: unknown[]): Promise<QueryResult>;
3
+ release(): void;
4
+ }
5
+ export interface DatabaseConnection {
6
+ prepare(sql: string): PreparedStatement;
7
+ query<T>(sql: string, params?: unknown[]): Promise<T[]>;
8
+ execute(sql: string, params?: unknown[]): Promise<QueryResult>;
9
+ release(): void;
10
+ }
11
+ export interface DatabaseClient {
12
+ prepare(sql: string): PreparedStatement;
13
+ getConnection(): Promise<DatabaseConnection>;
14
+ close(): Promise<void>;
15
+ }
16
+ export interface QueryResult {
17
+ affectedRows: number;
18
+ insertId?: number;
19
+ }
20
+ export interface DatabaseDriver {
21
+ query<T = unknown>(sql: string, params?: unknown[]): Promise<T[]>;
22
+ execute(sql: string, params?: unknown[]): Promise<QueryResult>;
23
+ transaction<T>(fn: (driver: DatabaseDriver) => Promise<T>): Promise<T>;
24
+ close(): Promise<void>;
25
+ healthCheck(): Promise<boolean>;
26
+ }
27
+ export interface QueryOptions {
28
+ where?: Record<string, any>;
29
+ orderBy?: Record<string, 'asc' | 'desc'>;
30
+ pagination?: {
31
+ page: number;
32
+ pageSize: number;
33
+ };
34
+ include?: string[];
35
+ }
36
+ export interface PaginationResult<T> {
37
+ data: T[];
38
+ total: number;
39
+ page: number;
40
+ pageSize: number;
41
+ totalPages: number;
42
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,22 @@
1
+ #!/bin/sh
2
+ basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
3
+
4
+ case `uname` in
5
+ *CYGWIN*|*MINGW*|*MSYS*)
6
+ if command -v cygpath > /dev/null 2>&1; then
7
+ basedir=`cygpath -w "$basedir"`
8
+ fi
9
+ ;;
10
+ esac
11
+
12
+ if [ -z "$NODE_PATH" ]; then
13
+ export NODE_PATH="/Users/ben/projects/app/node_modules/.pnpm/esbuild@0.28.1/node_modules/esbuild/node_modules:/Users/ben/projects/app/node_modules/.pnpm/esbuild@0.28.1/node_modules:/Users/ben/projects/app/node_modules/.pnpm/node_modules"
14
+ else
15
+ export NODE_PATH="/Users/ben/projects/app/node_modules/.pnpm/esbuild@0.28.1/node_modules/esbuild/node_modules:/Users/ben/projects/app/node_modules/.pnpm/esbuild@0.28.1/node_modules:/Users/ben/projects/app/node_modules/.pnpm/node_modules:$NODE_PATH"
16
+ fi
17
+ if [ -x "$basedir/node" ]; then
18
+ exec "$basedir/node" "$basedir/../../../../../node_modules/.pnpm/esbuild@0.28.1/node_modules/esbuild/bin/esbuild" "$@"
19
+ else
20
+ exec node "$basedir/../../../../../node_modules/.pnpm/esbuild@0.28.1/node_modules/esbuild/bin/esbuild" "$@"
21
+ fi
22
+ # cmd-shim-target=/Users/ben/projects/app/node_modules/.pnpm/esbuild@0.28.1/node_modules/esbuild/bin/esbuild
@@ -0,0 +1,22 @@
1
+ #!/bin/sh
2
+ basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
3
+
4
+ case `uname` in
5
+ *CYGWIN*|*MINGW*|*MSYS*)
6
+ if command -v cygpath > /dev/null 2>&1; then
7
+ basedir=`cygpath -w "$basedir"`
8
+ fi
9
+ ;;
10
+ esac
11
+
12
+ if [ -z "$NODE_PATH" ]; then
13
+ export NODE_PATH="/Users/ben/projects/app/node_modules/.pnpm/jiti@2.6.1/node_modules/jiti/node_modules:/Users/ben/projects/app/node_modules/.pnpm/jiti@2.6.1/node_modules:/Users/ben/projects/app/node_modules/.pnpm/node_modules"
14
+ else
15
+ export NODE_PATH="/Users/ben/projects/app/node_modules/.pnpm/jiti@2.6.1/node_modules/jiti/node_modules:/Users/ben/projects/app/node_modules/.pnpm/jiti@2.6.1/node_modules:/Users/ben/projects/app/node_modules/.pnpm/node_modules:$NODE_PATH"
16
+ fi
17
+ if [ -x "$basedir/node" ]; then
18
+ exec "$basedir/node" "$basedir/../../../../../node_modules/.pnpm/jiti@2.6.1/node_modules/jiti/lib/jiti-cli.mjs" "$@"
19
+ else
20
+ exec node "$basedir/../../../../../node_modules/.pnpm/jiti@2.6.1/node_modules/jiti/lib/jiti-cli.mjs" "$@"
21
+ fi
22
+ # cmd-shim-target=/Users/ben/projects/app/node_modules/.pnpm/jiti@2.6.1/node_modules/jiti/lib/jiti-cli.mjs
@@ -0,0 +1,22 @@
1
+ #!/bin/sh
2
+ basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
3
+
4
+ case `uname` in
5
+ *CYGWIN*|*MINGW*|*MSYS*)
6
+ if command -v cygpath > /dev/null 2>&1; then
7
+ basedir=`cygpath -w "$basedir"`
8
+ fi
9
+ ;;
10
+ esac
11
+
12
+ if [ -z "$NODE_PATH" ]; then
13
+ export NODE_PATH="/Users/ben/projects/app/node_modules/.pnpm/sass@1.100.0/node_modules/sass/node_modules:/Users/ben/projects/app/node_modules/.pnpm/sass@1.100.0/node_modules:/Users/ben/projects/app/node_modules/.pnpm/node_modules"
14
+ else
15
+ export NODE_PATH="/Users/ben/projects/app/node_modules/.pnpm/sass@1.100.0/node_modules/sass/node_modules:/Users/ben/projects/app/node_modules/.pnpm/sass@1.100.0/node_modules:/Users/ben/projects/app/node_modules/.pnpm/node_modules:$NODE_PATH"
16
+ fi
17
+ if [ -x "$basedir/node" ]; then
18
+ exec "$basedir/node" "$basedir/../../../../../node_modules/.pnpm/sass@1.100.0/node_modules/sass/sass.js" "$@"
19
+ else
20
+ exec node "$basedir/../../../../../node_modules/.pnpm/sass@1.100.0/node_modules/sass/sass.js" "$@"
21
+ fi
22
+ # cmd-shim-target=/Users/ben/projects/app/node_modules/.pnpm/sass@1.100.0/node_modules/sass/sass.js
@@ -0,0 +1,22 @@
1
+ #!/bin/sh
2
+ basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
3
+
4
+ case `uname` in
5
+ *CYGWIN*|*MINGW*|*MSYS*)
6
+ if command -v cygpath > /dev/null 2>&1; then
7
+ basedir=`cygpath -w "$basedir"`
8
+ fi
9
+ ;;
10
+ esac
11
+
12
+ if [ -z "$NODE_PATH" ]; then
13
+ export NODE_PATH="/Users/ben/projects/app/node_modules/.pnpm/tsx@4.23.0/node_modules/tsx/node_modules:/Users/ben/projects/app/node_modules/.pnpm/tsx@4.23.0/node_modules:/Users/ben/projects/app/node_modules/.pnpm/node_modules"
14
+ else
15
+ export NODE_PATH="/Users/ben/projects/app/node_modules/.pnpm/tsx@4.23.0/node_modules/tsx/node_modules:/Users/ben/projects/app/node_modules/.pnpm/tsx@4.23.0/node_modules:/Users/ben/projects/app/node_modules/.pnpm/node_modules:$NODE_PATH"
16
+ fi
17
+ if [ -x "$basedir/node" ]; then
18
+ exec "$basedir/node" "$basedir/../../../../../node_modules/.pnpm/tsx@4.23.0/node_modules/tsx/dist/cli.mjs" "$@"
19
+ else
20
+ exec node "$basedir/../../../../../node_modules/.pnpm/tsx@4.23.0/node_modules/tsx/dist/cli.mjs" "$@"
21
+ fi
22
+ # cmd-shim-target=/Users/ben/projects/app/node_modules/.pnpm/tsx@4.23.0/node_modules/tsx/dist/cli.mjs
@@ -0,0 +1,22 @@
1
+ #!/bin/sh
2
+ basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
3
+
4
+ case `uname` in
5
+ *CYGWIN*|*MINGW*|*MSYS*)
6
+ if command -v cygpath > /dev/null 2>&1; then
7
+ basedir=`cygpath -w "$basedir"`
8
+ fi
9
+ ;;
10
+ esac
11
+
12
+ if [ -z "$NODE_PATH" ]; then
13
+ export NODE_PATH="/Users/ben/projects/app/node_modules/.pnpm/vite@8.0.16_@types+node@22.20.0_esbuild@0.28.1_jiti@2.6.1_sass@1.100.0_tsx@4.23.0_yaml@2.9.0/node_modules/vite/node_modules:/Users/ben/projects/app/node_modules/.pnpm/vite@8.0.16_@types+node@22.20.0_esbuild@0.28.1_jiti@2.6.1_sass@1.100.0_tsx@4.23.0_yaml@2.9.0/node_modules:/Users/ben/projects/app/node_modules/.pnpm/node_modules"
14
+ else
15
+ export NODE_PATH="/Users/ben/projects/app/node_modules/.pnpm/vite@8.0.16_@types+node@22.20.0_esbuild@0.28.1_jiti@2.6.1_sass@1.100.0_tsx@4.23.0_yaml@2.9.0/node_modules/vite/node_modules:/Users/ben/projects/app/node_modules/.pnpm/vite@8.0.16_@types+node@22.20.0_esbuild@0.28.1_jiti@2.6.1_sass@1.100.0_tsx@4.23.0_yaml@2.9.0/node_modules:/Users/ben/projects/app/node_modules/.pnpm/node_modules:$NODE_PATH"
16
+ fi
17
+ if [ -x "$basedir/node" ]; then
18
+ exec "$basedir/node" "$basedir/../../../../../node_modules/.pnpm/vite@8.0.16_@types+node@22.20.0_esbuild@0.28.1_jiti@2.6.1_sass@1.100.0_tsx@4.23.0_yaml@2.9.0/node_modules/vite/bin/vite.js" "$@"
19
+ else
20
+ exec node "$basedir/../../../../../node_modules/.pnpm/vite@8.0.16_@types+node@22.20.0_esbuild@0.28.1_jiti@2.6.1_sass@1.100.0_tsx@4.23.0_yaml@2.9.0/node_modules/vite/bin/vite.js" "$@"
21
+ fi
22
+ # cmd-shim-target=/Users/ben/projects/app/node_modules/.pnpm/vite@8.0.16_@types+node@22.20.0_esbuild@0.28.1_jiti@2.6.1_sass@1.100.0_tsx@4.23.0_yaml@2.9.0/node_modules/vite/bin/vite.js
@@ -0,0 +1,22 @@
1
+ #!/bin/sh
2
+ basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
3
+
4
+ case `uname` in
5
+ *CYGWIN*|*MINGW*|*MSYS*)
6
+ if command -v cygpath > /dev/null 2>&1; then
7
+ basedir=`cygpath -w "$basedir"`
8
+ fi
9
+ ;;
10
+ esac
11
+
12
+ if [ -z "$NODE_PATH" ]; then
13
+ export NODE_PATH="/Users/ben/projects/app/node_modules/.pnpm/vitest@4.1.8_@types+node@22.20.0_jsdom@29.1.1_@noble+hashes@1.8.0__vite@8.0.16_@types+n_00428d692ba30ea818d9bef8a0ebfc48/node_modules/vitest/node_modules:/Users/ben/projects/app/node_modules/.pnpm/vitest@4.1.8_@types+node@22.20.0_jsdom@29.1.1_@noble+hashes@1.8.0__vite@8.0.16_@types+n_00428d692ba30ea818d9bef8a0ebfc48/node_modules:/Users/ben/projects/app/node_modules/.pnpm/node_modules"
14
+ else
15
+ export NODE_PATH="/Users/ben/projects/app/node_modules/.pnpm/vitest@4.1.8_@types+node@22.20.0_jsdom@29.1.1_@noble+hashes@1.8.0__vite@8.0.16_@types+n_00428d692ba30ea818d9bef8a0ebfc48/node_modules/vitest/node_modules:/Users/ben/projects/app/node_modules/.pnpm/vitest@4.1.8_@types+node@22.20.0_jsdom@29.1.1_@noble+hashes@1.8.0__vite@8.0.16_@types+n_00428d692ba30ea818d9bef8a0ebfc48/node_modules:/Users/ben/projects/app/node_modules/.pnpm/node_modules:$NODE_PATH"
16
+ fi
17
+ if [ -x "$basedir/node" ]; then
18
+ exec "$basedir/node" "$basedir/../vitest/vitest.mjs" "$@"
19
+ else
20
+ exec node "$basedir/../vitest/vitest.mjs" "$@"
21
+ fi
22
+ # cmd-shim-target=/Users/ben/projects/app/packages/honest-plugins/db/node_modules/vitest/vitest.mjs
@@ -0,0 +1,22 @@
1
+ #!/bin/sh
2
+ basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
3
+
4
+ case `uname` in
5
+ *CYGWIN*|*MINGW*|*MSYS*)
6
+ if command -v cygpath > /dev/null 2>&1; then
7
+ basedir=`cygpath -w "$basedir"`
8
+ fi
9
+ ;;
10
+ esac
11
+
12
+ if [ -z "$NODE_PATH" ]; then
13
+ export NODE_PATH="/Users/ben/projects/app/node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/node_modules:/Users/ben/projects/app/node_modules/.pnpm/yaml@2.9.0/node_modules:/Users/ben/projects/app/node_modules/.pnpm/node_modules"
14
+ else
15
+ export NODE_PATH="/Users/ben/projects/app/node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/node_modules:/Users/ben/projects/app/node_modules/.pnpm/yaml@2.9.0/node_modules:/Users/ben/projects/app/node_modules/.pnpm/node_modules:$NODE_PATH"
16
+ fi
17
+ if [ -x "$basedir/node" ]; then
18
+ exec "$basedir/node" "$basedir/../../../../../node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/bin.mjs" "$@"
19
+ else
20
+ exec node "$basedir/../../../../../node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/bin.mjs" "$@"
21
+ fi
22
+ # cmd-shim-target=/Users/ben/projects/app/node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/bin.mjs
@@ -0,0 +1 @@
1
+ {"version":"4.1.8","results":[[":src/schema-builder/column-builder.test.ts",{"duration":2.6967920000000163,"failed":false}],[":src/schema-builder/table-builder.test.ts",{"duration":2.1784580000000062,"failed":false}],[":src/mysql/driver.test.ts",{"duration":6.58612500000001,"failed":false}],[":src/repository.test.ts",{"duration":4.9656250000000455,"failed":false}],[":src/mysql/plugin.test.ts",{"duration":10.834833000000003,"failed":false}],[":src/schema-builder/compile-d1.test.ts",{"duration":2.1357080000000224,"failed":false}],[":src/index.test.ts",{"duration":1.7949170000001686,"failed":false}],[":src/schema-builder/compile-mysql.test.ts",{"duration":2.222582999999986,"failed":false}],[":src/schema-builder/types.test.ts",{"duration":2.004084000000006,"failed":false}],[":src/constants.test.ts",{"duration":2.9622499999999974,"failed":false}],[":src/schema-builder/index.test.ts",{"duration":3.2766249999999673,"failed":false}]]}