@geekmidas/testkit 10.0.0-alpha.2 → 10.0.0-alpha.20

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 (262) hide show
  1. package/dist/Factory.cjs +51 -2
  2. package/dist/Factory.cjs.map +1 -0
  3. package/dist/Factory.d.cts +143 -3
  4. package/dist/Factory.d.cts.map +1 -0
  5. package/dist/Factory.d.mts +143 -3
  6. package/dist/Factory.d.mts.map +1 -0
  7. package/dist/Factory.mjs +50 -2
  8. package/dist/Factory.mjs.map +1 -0
  9. package/dist/KyselyFactory.cjs +237 -4
  10. package/dist/KyselyFactory.cjs.map +1 -0
  11. package/dist/KyselyFactory.d.cts +224 -4
  12. package/dist/KyselyFactory.d.cts.map +1 -0
  13. package/dist/KyselyFactory.d.mts +224 -4
  14. package/dist/KyselyFactory.d.mts.map +1 -0
  15. package/dist/KyselyFactory.mjs +236 -4
  16. package/dist/KyselyFactory.mjs.map +1 -0
  17. package/dist/ObjectionFactory.cjs +265 -4
  18. package/dist/ObjectionFactory.cjs.map +1 -0
  19. package/dist/ObjectionFactory.d.cts +237 -4
  20. package/dist/ObjectionFactory.d.cts.map +1 -0
  21. package/dist/ObjectionFactory.d.mts +237 -4
  22. package/dist/ObjectionFactory.d.mts.map +1 -0
  23. package/dist/ObjectionFactory.mjs +264 -4
  24. package/dist/ObjectionFactory.mjs.map +1 -0
  25. package/dist/PostgresKyselyMigrator.cjs +94 -3
  26. package/dist/PostgresKyselyMigrator.cjs.map +1 -0
  27. package/dist/PostgresKyselyMigrator.d.cts +80 -3
  28. package/dist/PostgresKyselyMigrator.d.cts.map +1 -0
  29. package/dist/PostgresKyselyMigrator.d.mts +80 -3
  30. package/dist/PostgresKyselyMigrator.d.mts.map +1 -0
  31. package/dist/PostgresKyselyMigrator.mjs +93 -3
  32. package/dist/PostgresKyselyMigrator.mjs.map +1 -0
  33. package/dist/{PostgresMigrator-C_QQ6q35.d.mts → PostgresMigrator-CDPnnwMJ.d.cts} +11 -5
  34. package/dist/PostgresMigrator-CDPnnwMJ.d.cts.map +1 -0
  35. package/dist/{PostgresMigrator-CeYy-eHF.d.cts → PostgresMigrator-CDPnnwMJ.d.mts} +11 -5
  36. package/dist/PostgresMigrator-CDPnnwMJ.d.mts.map +1 -0
  37. package/dist/PostgresMigrator.cjs +178 -2
  38. package/dist/PostgresMigrator.cjs.map +1 -0
  39. package/dist/PostgresMigrator.d.cts +1 -1
  40. package/dist/PostgresMigrator.d.mts +1 -1
  41. package/dist/PostgresMigrator.mjs +175 -2
  42. package/dist/PostgresMigrator.mjs.map +1 -0
  43. package/dist/PostgresObjectionMigrator.cjs +118 -3
  44. package/dist/PostgresObjectionMigrator.cjs.map +1 -0
  45. package/dist/PostgresObjectionMigrator.d.cts +75 -3
  46. package/dist/PostgresObjectionMigrator.d.cts.map +1 -0
  47. package/dist/PostgresObjectionMigrator.d.mts +75 -3
  48. package/dist/PostgresObjectionMigrator.d.mts.map +1 -0
  49. package/dist/PostgresObjectionMigrator.mjs +117 -3
  50. package/dist/PostgresObjectionMigrator.mjs.map +1 -0
  51. package/dist/VitestKyselyTransactionIsolator.cjs +66 -3
  52. package/dist/VitestKyselyTransactionIsolator.cjs.map +1 -0
  53. package/dist/VitestKyselyTransactionIsolator.d.cts +60 -3
  54. package/dist/VitestKyselyTransactionIsolator.d.cts.map +1 -0
  55. package/dist/VitestKyselyTransactionIsolator.d.mts +60 -3
  56. package/dist/VitestKyselyTransactionIsolator.d.mts.map +1 -0
  57. package/dist/VitestKyselyTransactionIsolator.mjs +65 -3
  58. package/dist/VitestKyselyTransactionIsolator.mjs.map +1 -0
  59. package/dist/VitestObjectionTransactionIsolator.cjs +62 -3
  60. package/dist/VitestObjectionTransactionIsolator.cjs.map +1 -0
  61. package/dist/VitestObjectionTransactionIsolator.d.cts +56 -3
  62. package/dist/VitestObjectionTransactionIsolator.d.cts.map +1 -0
  63. package/dist/VitestObjectionTransactionIsolator.d.mts +56 -3
  64. package/dist/VitestObjectionTransactionIsolator.d.mts.map +1 -0
  65. package/dist/VitestObjectionTransactionIsolator.mjs +61 -3
  66. package/dist/VitestObjectionTransactionIsolator.mjs.map +1 -0
  67. package/dist/VitestTransactionIsolator.cjs +187 -4
  68. package/dist/VitestTransactionIsolator.cjs.map +1 -0
  69. package/dist/VitestTransactionIsolator.d.cts +219 -2
  70. package/dist/VitestTransactionIsolator.d.cts.map +1 -0
  71. package/dist/VitestTransactionIsolator.d.mts +219 -2
  72. package/dist/VitestTransactionIsolator.d.mts.map +1 -0
  73. package/dist/VitestTransactionIsolator.mjs +184 -2
  74. package/dist/VitestTransactionIsolator.mjs.map +1 -0
  75. package/dist/aws.cjs +3 -4
  76. package/dist/aws.cjs.map +1 -1
  77. package/dist/aws.d.cts +3 -8
  78. package/dist/aws.d.cts.map +1 -1
  79. package/dist/aws.d.mts +3 -8
  80. package/dist/aws.d.mts.map +1 -1
  81. package/dist/aws.mjs +1 -2
  82. package/dist/aws.mjs.map +1 -1
  83. package/dist/benchmark.cjs +2 -2
  84. package/dist/benchmark.cjs.map +1 -1
  85. package/dist/benchmark.d.cts +4 -6
  86. package/dist/benchmark.d.cts.map +1 -1
  87. package/dist/benchmark.d.mts +4 -6
  88. package/dist/benchmark.d.mts.map +1 -1
  89. package/dist/benchmark.mjs +1 -1
  90. package/dist/benchmark.mjs.map +1 -1
  91. package/dist/better-auth.cjs +31 -15
  92. package/dist/better-auth.cjs.map +1 -1
  93. package/dist/better-auth.d.cts +13142 -4
  94. package/dist/better-auth.d.cts.map +1 -1
  95. package/dist/better-auth.d.mts +13142 -4
  96. package/dist/better-auth.d.mts.map +1 -1
  97. package/dist/better-auth.mjs +29 -13
  98. package/dist/better-auth.mjs.map +1 -1
  99. package/dist/faker.cjs +262 -8
  100. package/dist/faker.cjs.map +1 -0
  101. package/dist/faker.d.cts +162 -2
  102. package/dist/faker.d.cts.map +1 -0
  103. package/dist/faker.d.mts +162 -2
  104. package/dist/faker.d.mts.map +1 -0
  105. package/dist/faker.mjs +255 -2
  106. package/dist/faker.mjs.map +1 -0
  107. package/dist/helpers.cjs +6 -5
  108. package/dist/helpers.cjs.map +1 -1
  109. package/dist/helpers.d.cts +1 -5
  110. package/dist/helpers.d.cts.map +1 -1
  111. package/dist/helpers.d.mts +1 -5
  112. package/dist/helpers.d.mts.map +1 -1
  113. package/dist/helpers.mjs +1 -2
  114. package/dist/helpers.mjs.map +1 -1
  115. package/dist/initScript.cjs +15 -15
  116. package/dist/initScript.cjs.map +1 -1
  117. package/dist/initScript.d.cts +2 -4
  118. package/dist/initScript.d.cts.map +1 -1
  119. package/dist/initScript.d.mts +2 -4
  120. package/dist/initScript.d.mts.map +1 -1
  121. package/dist/initScript.mjs +10 -12
  122. package/dist/initScript.mjs.map +1 -1
  123. package/dist/kysely.cjs +10 -13
  124. package/dist/kysely.cjs.map +1 -1
  125. package/dist/kysely.d.cts +10 -14
  126. package/dist/kysely.d.cts.map +1 -1
  127. package/dist/kysely.d.mts +10 -14
  128. package/dist/kysely.d.mts.map +1 -1
  129. package/dist/kysely.mjs +10 -14
  130. package/dist/kysely.mjs.map +1 -1
  131. package/dist/logger.cjs +3 -4
  132. package/dist/logger.cjs.map +1 -1
  133. package/dist/logger.d.cts +1 -5
  134. package/dist/logger.d.cts.map +1 -1
  135. package/dist/logger.d.mts +1 -5
  136. package/dist/logger.d.mts.map +1 -1
  137. package/dist/logger.mjs +1 -2
  138. package/dist/logger.mjs.map +1 -1
  139. package/dist/objection.cjs +10 -13
  140. package/dist/objection.cjs.map +1 -1
  141. package/dist/objection.d.cts +10 -14
  142. package/dist/objection.d.cts.map +1 -1
  143. package/dist/objection.d.mts +10 -14
  144. package/dist/objection.d.mts.map +1 -1
  145. package/dist/objection.mjs +10 -14
  146. package/dist/objection.mjs.map +1 -1
  147. package/dist/os/directory.cjs +31 -2
  148. package/dist/os/directory.cjs.map +1 -0
  149. package/dist/os/directory.d.cts +9 -2
  150. package/dist/os/directory.d.cts.map +1 -0
  151. package/dist/os/directory.d.mts +9 -2
  152. package/dist/os/directory.d.mts.map +1 -0
  153. package/dist/os/directory.mjs +25 -2
  154. package/dist/os/directory.mjs.map +1 -0
  155. package/dist/os/index.cjs +3 -3
  156. package/dist/os/index.d.cts +1 -1
  157. package/dist/os/index.d.mts +1 -1
  158. package/dist/os/index.mjs +2 -3
  159. package/dist/requestContext.cjs +10 -11
  160. package/dist/requestContext.cjs.map +1 -1
  161. package/dist/requestContext.d.cts +4 -8
  162. package/dist/requestContext.d.cts.map +1 -1
  163. package/dist/requestContext.d.mts +4 -8
  164. package/dist/requestContext.d.mts.map +1 -1
  165. package/dist/requestContext.mjs +1 -2
  166. package/dist/requestContext.mjs.map +1 -1
  167. package/dist/{chunk-CUT6urMc.cjs → rolldown-runtime-VH7oDXx4.cjs} +8 -10
  168. package/dist/timer.cjs +2 -2
  169. package/dist/timer.cjs.map +1 -1
  170. package/dist/timer.d.cts +1 -4
  171. package/dist/timer.d.cts.map +1 -1
  172. package/dist/timer.d.mts +1 -4
  173. package/dist/timer.d.mts.map +1 -1
  174. package/dist/timer.mjs +1 -1
  175. package/dist/timer.mjs.map +1 -1
  176. package/package.json +18 -16
  177. package/dist/Factory-BFVnMMCC.mjs +0 -51
  178. package/dist/Factory-BFVnMMCC.mjs.map +0 -1
  179. package/dist/Factory-BhjUOBWN.cjs +0 -57
  180. package/dist/Factory-BhjUOBWN.cjs.map +0 -1
  181. package/dist/Factory-CVR3GdkW.d.mts +0 -147
  182. package/dist/Factory-CVR3GdkW.d.mts.map +0 -1
  183. package/dist/Factory-Cwzho3c8.d.cts +0 -147
  184. package/dist/Factory-Cwzho3c8.d.cts.map +0 -1
  185. package/dist/KyselyFactory-BFqVIn_0.cjs +0 -246
  186. package/dist/KyselyFactory-BFqVIn_0.cjs.map +0 -1
  187. package/dist/KyselyFactory-DMswpwji.mjs +0 -241
  188. package/dist/KyselyFactory-DMswpwji.mjs.map +0 -1
  189. package/dist/KyselyFactory-DRlMv-WT.d.mts +0 -228
  190. package/dist/KyselyFactory-DRlMv-WT.d.mts.map +0 -1
  191. package/dist/KyselyFactory-hMcVtvJq.d.cts +0 -228
  192. package/dist/KyselyFactory-hMcVtvJq.d.cts.map +0 -1
  193. package/dist/ObjectionFactory-BeFBYcan.cjs +0 -272
  194. package/dist/ObjectionFactory-BeFBYcan.cjs.map +0 -1
  195. package/dist/ObjectionFactory-DW-qwnqO.d.cts +0 -241
  196. package/dist/ObjectionFactory-DW-qwnqO.d.cts.map +0 -1
  197. package/dist/ObjectionFactory-DkJUf-uM.d.mts +0 -241
  198. package/dist/ObjectionFactory-DkJUf-uM.d.mts.map +0 -1
  199. package/dist/ObjectionFactory-QCJ7u0Ql.mjs +0 -267
  200. package/dist/ObjectionFactory-QCJ7u0Ql.mjs.map +0 -1
  201. package/dist/PostgresKyselyMigrator-B2M6Gjvv.d.cts +0 -84
  202. package/dist/PostgresKyselyMigrator-B2M6Gjvv.d.cts.map +0 -1
  203. package/dist/PostgresKyselyMigrator-BGBxjnFv.cjs +0 -101
  204. package/dist/PostgresKyselyMigrator-BGBxjnFv.cjs.map +0 -1
  205. package/dist/PostgresKyselyMigrator-CvwXycJE.d.mts +0 -84
  206. package/dist/PostgresKyselyMigrator-CvwXycJE.d.mts.map +0 -1
  207. package/dist/PostgresKyselyMigrator-PI0QhvB1.mjs +0 -95
  208. package/dist/PostgresKyselyMigrator-PI0QhvB1.mjs.map +0 -1
  209. package/dist/PostgresMigrator-C_QQ6q35.d.mts.map +0 -1
  210. package/dist/PostgresMigrator-CeYy-eHF.d.cts.map +0 -1
  211. package/dist/PostgresMigrator-DVAY04qN.mjs +0 -166
  212. package/dist/PostgresMigrator-DVAY04qN.mjs.map +0 -1
  213. package/dist/PostgresMigrator-M9jpzOvN.cjs +0 -172
  214. package/dist/PostgresMigrator-M9jpzOvN.cjs.map +0 -1
  215. package/dist/PostgresObjectionMigrator-1j6YIB1c.d.mts +0 -79
  216. package/dist/PostgresObjectionMigrator-1j6YIB1c.d.mts.map +0 -1
  217. package/dist/PostgresObjectionMigrator-DHVC9h_P.d.cts +0 -79
  218. package/dist/PostgresObjectionMigrator-DHVC9h_P.d.cts.map +0 -1
  219. package/dist/PostgresObjectionMigrator-DSaPhwjY.cjs +0 -123
  220. package/dist/PostgresObjectionMigrator-DSaPhwjY.cjs.map +0 -1
  221. package/dist/PostgresObjectionMigrator-DjPKdUbm.mjs +0 -118
  222. package/dist/PostgresObjectionMigrator-DjPKdUbm.mjs.map +0 -1
  223. package/dist/VitestKyselyTransactionIsolator-1Saieke7.mjs +0 -67
  224. package/dist/VitestKyselyTransactionIsolator-1Saieke7.mjs.map +0 -1
  225. package/dist/VitestKyselyTransactionIsolator-BjJSXryR.cjs +0 -72
  226. package/dist/VitestKyselyTransactionIsolator-BjJSXryR.cjs.map +0 -1
  227. package/dist/VitestKyselyTransactionIsolator-CwlTo6yf.d.mts +0 -64
  228. package/dist/VitestKyselyTransactionIsolator-CwlTo6yf.d.mts.map +0 -1
  229. package/dist/VitestKyselyTransactionIsolator-DJasVuIZ.d.cts +0 -64
  230. package/dist/VitestKyselyTransactionIsolator-DJasVuIZ.d.cts.map +0 -1
  231. package/dist/VitestObjectionTransactionIsolator-B_VSWFum.mjs +0 -63
  232. package/dist/VitestObjectionTransactionIsolator-B_VSWFum.mjs.map +0 -1
  233. package/dist/VitestObjectionTransactionIsolator-CTTjvTPO.d.cts +0 -60
  234. package/dist/VitestObjectionTransactionIsolator-CTTjvTPO.d.cts.map +0 -1
  235. package/dist/VitestObjectionTransactionIsolator-CyZG6nq4.d.mts +0 -60
  236. package/dist/VitestObjectionTransactionIsolator-CyZG6nq4.d.mts.map +0 -1
  237. package/dist/VitestObjectionTransactionIsolator-DDoJTu7e.cjs +0 -68
  238. package/dist/VitestObjectionTransactionIsolator-DDoJTu7e.cjs.map +0 -1
  239. package/dist/VitestTransactionIsolator-BLaw80cx.d.mts +0 -223
  240. package/dist/VitestTransactionIsolator-BLaw80cx.d.mts.map +0 -1
  241. package/dist/VitestTransactionIsolator-CvwPecpl.mjs +0 -188
  242. package/dist/VitestTransactionIsolator-CvwPecpl.mjs.map +0 -1
  243. package/dist/VitestTransactionIsolator-DyiX-QtK.cjs +0 -206
  244. package/dist/VitestTransactionIsolator-DyiX-QtK.cjs.map +0 -1
  245. package/dist/VitestTransactionIsolator-glcxyS_R.d.cts +0 -223
  246. package/dist/VitestTransactionIsolator-glcxyS_R.d.cts.map +0 -1
  247. package/dist/directory-BxjqmtCT.mjs +0 -27
  248. package/dist/directory-BxjqmtCT.mjs.map +0 -1
  249. package/dist/directory-C6DuuNyc.d.cts +0 -13
  250. package/dist/directory-C6DuuNyc.d.cts.map +0 -1
  251. package/dist/directory-DD_xQoSh.cjs +0 -33
  252. package/dist/directory-DD_xQoSh.cjs.map +0 -1
  253. package/dist/directory-DiQ_DkaF.d.mts +0 -13
  254. package/dist/directory-DiQ_DkaF.d.mts.map +0 -1
  255. package/dist/faker-B14IEMIN.cjs +0 -304
  256. package/dist/faker-B14IEMIN.cjs.map +0 -1
  257. package/dist/faker-BGKYFoCT.mjs +0 -262
  258. package/dist/faker-BGKYFoCT.mjs.map +0 -1
  259. package/dist/faker-Dg3trU4a.d.cts +0 -166
  260. package/dist/faker-Dg3trU4a.d.cts.map +0 -1
  261. package/dist/faker-DsYCplsG.d.mts +0 -166
  262. package/dist/faker-DsYCplsG.d.mts.map +0 -1
@@ -1,228 +0,0 @@
1
- import { FakerFactory } from "./faker-DsYCplsG.mjs";
2
- import { ExtractSeedAttrs, Factory, FactorySeed } from "./Factory-CVR3GdkW.mjs";
3
- import { ControlledTransaction, Insertable, Kysely, Selectable } from "kysely";
4
-
5
- //#region src/KyselyFactory.d.ts
6
-
7
- /**
8
- * Factory implementation for Kysely ORM, providing test data creation utilities.
9
- * Extends the base Factory class with Kysely-specific database operations.
10
- *
11
- * @template DB - The database schema type
12
- * @template Builders - Record of builder functions for creating entities
13
- * @template Seeds - Record of seed functions for complex test scenarios
14
- *
15
- * @example
16
- * ```typescript
17
- * // Define your database schema
18
- * interface Database {
19
- * users: UsersTable;
20
- * posts: PostsTable;
21
- * }
22
- *
23
- * // Create builders
24
- * const builders = {
25
- * user: KyselyFactory.createBuilder<Database, 'users'>('users', ({ attrs, faker }) => ({
26
- * id: faker.string.uuid(),
27
- * name: faker.person.fullName(),
28
- * email: faker.internet.email(),
29
- * ...attrs
30
- * })),
31
- * post: KyselyFactory.createBuilder<Database, 'posts'>('posts', ({ attrs }) => ({
32
- * title: 'Test Post',
33
- * content: 'Test content',
34
- * ...attrs
35
- * }))
36
- * };
37
- *
38
- * // Create factory instance
39
- * const factory = new KyselyFactory(builders, seeds, db);
40
- *
41
- * // Use in tests
42
- * const user = await factory.insert('user', { name: 'John Doe' });
43
- * ```
44
- */
45
- declare class KyselyFactory<DB, Builders extends Record<string, any>, Seeds extends Record<string, any>> extends Factory<Builders, Seeds> {
46
- private builders;
47
- private seeds;
48
- private db;
49
- /**
50
- * Creates a typed seed function with proper type inference.
51
- * Inherits from the base Factory class implementation.
52
- *
53
- * @template Seed - The seed function type
54
- * @param seedFn - The seed function to wrap (receives { attrs, factory, db } object)
55
- * @returns The same seed function with proper typing
56
- *
57
- * @example
58
- * ```typescript
59
- * const seeds = {
60
- * userWithPosts: KyselyFactory.createSeed(
61
- * async ({ attrs, factory }) => {
62
- * const user = await factory.insert('user', attrs);
63
- * await factory.insertMany(3, 'post', { userId: user.id });
64
- * return user;
65
- * },
66
- * ),
67
- * };
68
- * ```
69
- */
70
- static createSeed<Seed extends FactorySeed>(seedFn: Seed): Seed;
71
- /**
72
- * Creates a new KyselyFactory instance.
73
- *
74
- * @param builders - Record of builder functions for creating individual entities
75
- * @param seeds - Record of seed functions for creating complex test scenarios
76
- * @param db - Kysely database instance or controlled transaction
77
- */
78
- constructor(builders: Builders, seeds: Seeds, db: Kysely<DB> | ControlledTransaction<DB, []>);
79
- /**
80
- * Creates a typed builder function for a specific database table.
81
- * This is a utility method that helps create builders with proper type inference for Kysely.
82
- *
83
- * @template DB - The database schema type
84
- * @template TableName - The name of the table (must be a key of DB)
85
- * @template Attrs - The attributes type for the builder (defaults to Partial<Insertable>)
86
- * @template Factory - The factory instance type
87
- * @template Result - The result type (defaults to Selectable of the table)
88
- *
89
- * @param table - The name of the database table
90
- * @param defaults - Optional function to provide default values (receives destructured context)
91
- * @param autoInsert - Whether to automatically insert the record (default: true)
92
- * @returns A builder function that creates and optionally inserts records
93
- *
94
- * @example
95
- * ```typescript
96
- * // Create a simple builder with defaults - destructure only what you need
97
- * const userBuilder = KyselyFactory.createBuilder<DB, 'users'>('users',
98
- * ({ attrs, faker }) => ({
99
- * id: faker.string.uuid(),
100
- * name: faker.person.fullName(),
101
- * email: faker.internet.email(),
102
- * createdAt: new Date(),
103
- * ...attrs
104
- * })
105
- * );
106
- *
107
- * // Only need faker? Just destructure that
108
- * const leaveTypeBuilder = KyselyFactory.createBuilder<DB, 'leaveTypes'>('leaveTypes',
109
- * ({ faker }) => ({
110
- * name: faker.helpers.arrayElement(['Annual', 'Sick', 'Maternity']),
111
- * code: faker.string.alpha({ length: 3, casing: 'upper' }),
112
- * })
113
- * );
114
- *
115
- * // Create a builder that doesn't auto-insert (useful for nested inserts)
116
- * const addressBuilder = KyselyFactory.createBuilder<DB, 'addresses'>('addresses',
117
- * ({ attrs }) => ({
118
- * street: '123 Main St',
119
- * city: 'Anytown',
120
- * ...attrs
121
- * }),
122
- * false // Don't auto-insert
123
- * );
124
- * ```
125
- */
126
- static createBuilder<DB, TableName extends keyof DB & string, Attrs extends Partial<Insertable<DB[TableName]>> = Partial<Insertable<DB[TableName]>>, Factory = any, Result = Selectable<DB[TableName]>>(table: TableName, defaults?: (context: {
127
- attrs: Attrs;
128
- factory: Factory;
129
- db: Kysely<DB>;
130
- faker: FakerFactory;
131
- }) => Partial<Insertable<DB[TableName]>> | Promise<Partial<Insertable<DB[TableName]>>>, autoInsert?: boolean): (attrs: Attrs, factory: Factory, db: Kysely<DB>, faker: FakerFactory) => Promise<Result>;
132
- /**
133
- * Inserts a single record into the database using the specified builder.
134
- * The builder function is responsible for generating the record data with defaults
135
- * and the factory handles the actual database insertion.
136
- *
137
- * @template K - The builder name (must be a key of Builders)
138
- * @param builderName - The name of the builder to use
139
- * @param attrs - Optional attributes to override builder defaults
140
- * @returns A promise resolving to the inserted record
141
- * @throws Error if the specified builder doesn't exist
142
- *
143
- * @example
144
- * ```typescript
145
- * // Insert with defaults
146
- * const user = await factory.insert('user');
147
- *
148
- * // Insert with overrides
149
- * const adminUser = await factory.insert('user', {
150
- * email: 'admin@example.com',
151
- * role: 'admin'
152
- * });
153
- *
154
- * // Use the inserted record
155
- * const post = await factory.insert('post', {
156
- * userId: user.id,
157
- * title: 'My First Post'
158
- * });
159
- * ```
160
- */
161
- insert<K extends keyof Builders>(builderName: K, attrs?: Parameters<Builders[K]>[0]): Promise<Awaited<ReturnType<Builders[K]>>>;
162
- /**
163
- * Inserts multiple records into the database using the specified builder.
164
- * Supports both static attributes and dynamic attribute generation via a function.
165
- *
166
- * @template K - The builder name (must be a key of Builders)
167
- * @param count - The number of records to insert
168
- * @param builderName - The name of the builder to use
169
- * @param attrs - Static attributes or a function that generates attributes for each record
170
- * @returns A promise resolving to an array of inserted records
171
- * @throws Error if the specified builder doesn't exist
172
- *
173
- * @example
174
- * ```typescript
175
- * // Insert multiple with same attributes
176
- * const users = await factory.insertMany(5, 'user', { role: 'member' });
177
- *
178
- * // Insert multiple with dynamic attributes
179
- * const posts = await factory.insertMany(10, 'post', (idx, faker) => ({
180
- * title: `Post ${idx + 1}`,
181
- * content: faker.lorem.paragraph(),
182
- * publishedAt: faker.date.past()
183
- * }));
184
- *
185
- * // Create users with sequential emails
186
- * const admins = await factory.insertMany(3, 'user', (idx) => ({
187
- * email: `admin${idx + 1}@example.com`,
188
- * role: 'admin'
189
- * }));
190
- * ```
191
- */
192
- insertMany<K extends keyof Builders>(count: number, builderName: K, attrs?: Parameters<Builders[K]>[0]): Promise<Awaited<ReturnType<Builders[K]>>[]>;
193
- insertMany<K extends keyof Builders>(count: number, builderName: K, attrs: (idx: number, faker: FakerFactory) => Parameters<Builders[K]>[0] | Promise<Parameters<Builders[K]>[0]>): Promise<Awaited<ReturnType<Builders[K]>>[]>;
194
- /**
195
- * Executes a seed function to create complex test scenarios with multiple related records.
196
- * Seeds are useful for setting up complete test environments with realistic data relationships.
197
- *
198
- * @template K - The seed name (must be a key of Seeds)
199
- * @param seedName - The name of the seed to execute
200
- * @param attrs - Optional configuration attributes for the seed
201
- * @returns The result of the seed function (typically the primary record created)
202
- * @throws Error if the specified seed doesn't exist
203
- *
204
- * @example
205
- * ```typescript
206
- * // Execute a simple seed
207
- * const user = await factory.seed('userWithProfile');
208
- *
209
- * // Execute a seed with configuration
210
- * const author = await factory.seed('authorWithBooks', {
211
- * bookCount: 5,
212
- * includeReviews: true
213
- * });
214
- *
215
- * // Use seed result in tests
216
- * const company = await factory.seed('companyWithDepartments', {
217
- * departmentCount: 3,
218
- * employeesPerDepartment: 10
219
- * });
220
- * expect(company.departments).toHaveLength(3);
221
- * ```
222
- */
223
- seed<K extends keyof Seeds>(seedName: K, attrs?: ExtractSeedAttrs<Seeds[K]>): ReturnType<Seeds[K]>;
224
- }
225
- //# sourceMappingURL=KyselyFactory.d.ts.map
226
- //#endregion
227
- export { KyselyFactory };
228
- //# sourceMappingURL=KyselyFactory-DRlMv-WT.d.mts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"KyselyFactory-DRlMv-WT.d.mts","names":[],"sources":["../src/KyselyFactory.ts"],"sourcesContent":[],"mappings":";;;;;;;;AA+CA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA4GK,cA5GQ,aA4GR,CAAA,EAAA,EAAA,iBA1Ga,MA0Gb,CAAA,MAAA,EAAA,GAAA,CAAA,EAAA,cAzGU,MAyGV,CAAA,MAAA,EAAA,GAAA,CAAA,CAAA,SAxGK,OAwGL,CAxGa,QAwGb,EAxGuB,KAwGvB,CAAA,CAAA;EAAO,QACoB,QAAA;EAAE,QAAC,KAAA;EAAS,QAAvB,EAAA;EAAU;;;;;;;;;;;;;;;;;;;;;EAwJf,OACK,UAAA,CAAA,aA5OoB,WA4OpB,CAAA,CAAA,MAAA,EA5OyC,IA4OzC,CAAA,EA5OgD,IA4OhD;EAAQ;;;;;;;EAClB,WACuB,CAAA,QAAA,EAlOd,QAkOc,EAAA,KAAA,EAjOjB,KAiOiB,EAAA,EAAA,EAhOpB,MAgOoB,CAhOb,EAgOa,CAAA,GAhOP,qBAgOO,CAhOe,EAgOf,EAAA,EAAA,CAAA;EAAQ;;;;;;;;;;;;;;;;;;;;;;;AApQzB;;;;;;;;;;;;;;;;;;;;;;;;mDA0FS,2BACV,QAAQ,WAAW,GAAG,eAAe,QAClD,WAAW,GAAG,sCAGN,WAAW,GAAG,oBAEhB;WAEC;aACE;QACL,OAAO;WACJ;QAEL,QAAQ,WAAW,GAAG,eACtB,QAAQ,QAAQ,WAAW,GAAG,8CAG1B,gBACE,aACL,OAAO,YACJ,iBACH,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;yBAuEgB,uBACf,WACL,WAAW,SAAS,SAC1B,QAAQ,QAAQ,WAAW,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6BAqEN,sCAEnB,WACL,WAAW,SAAS,SAC1B,QAAQ,QAAQ,WAAW,SAAS;6BACN,sCAEnB,+BAGL,iBACH,WAAW,SAAS,SAAS,QAAQ,WAAW,SAAS,UAC5D,QAAQ,QAAQ,WAAW,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;uBAsDlB,iBACV,WACF,iBAAiB,MAAM,MAC7B,WAAW,MAAM"}
@@ -1,228 +0,0 @@
1
- import { FakerFactory } from "./faker-Dg3trU4a.cjs";
2
- import { ExtractSeedAttrs, Factory, FactorySeed } from "./Factory-Cwzho3c8.cjs";
3
- import { ControlledTransaction, Insertable, Kysely, Selectable } from "kysely";
4
-
5
- //#region src/KyselyFactory.d.ts
6
-
7
- /**
8
- * Factory implementation for Kysely ORM, providing test data creation utilities.
9
- * Extends the base Factory class with Kysely-specific database operations.
10
- *
11
- * @template DB - The database schema type
12
- * @template Builders - Record of builder functions for creating entities
13
- * @template Seeds - Record of seed functions for complex test scenarios
14
- *
15
- * @example
16
- * ```typescript
17
- * // Define your database schema
18
- * interface Database {
19
- * users: UsersTable;
20
- * posts: PostsTable;
21
- * }
22
- *
23
- * // Create builders
24
- * const builders = {
25
- * user: KyselyFactory.createBuilder<Database, 'users'>('users', ({ attrs, faker }) => ({
26
- * id: faker.string.uuid(),
27
- * name: faker.person.fullName(),
28
- * email: faker.internet.email(),
29
- * ...attrs
30
- * })),
31
- * post: KyselyFactory.createBuilder<Database, 'posts'>('posts', ({ attrs }) => ({
32
- * title: 'Test Post',
33
- * content: 'Test content',
34
- * ...attrs
35
- * }))
36
- * };
37
- *
38
- * // Create factory instance
39
- * const factory = new KyselyFactory(builders, seeds, db);
40
- *
41
- * // Use in tests
42
- * const user = await factory.insert('user', { name: 'John Doe' });
43
- * ```
44
- */
45
- declare class KyselyFactory<DB, Builders extends Record<string, any>, Seeds extends Record<string, any>> extends Factory<Builders, Seeds> {
46
- private builders;
47
- private seeds;
48
- private db;
49
- /**
50
- * Creates a typed seed function with proper type inference.
51
- * Inherits from the base Factory class implementation.
52
- *
53
- * @template Seed - The seed function type
54
- * @param seedFn - The seed function to wrap (receives { attrs, factory, db } object)
55
- * @returns The same seed function with proper typing
56
- *
57
- * @example
58
- * ```typescript
59
- * const seeds = {
60
- * userWithPosts: KyselyFactory.createSeed(
61
- * async ({ attrs, factory }) => {
62
- * const user = await factory.insert('user', attrs);
63
- * await factory.insertMany(3, 'post', { userId: user.id });
64
- * return user;
65
- * },
66
- * ),
67
- * };
68
- * ```
69
- */
70
- static createSeed<Seed extends FactorySeed>(seedFn: Seed): Seed;
71
- /**
72
- * Creates a new KyselyFactory instance.
73
- *
74
- * @param builders - Record of builder functions for creating individual entities
75
- * @param seeds - Record of seed functions for creating complex test scenarios
76
- * @param db - Kysely database instance or controlled transaction
77
- */
78
- constructor(builders: Builders, seeds: Seeds, db: Kysely<DB> | ControlledTransaction<DB, []>);
79
- /**
80
- * Creates a typed builder function for a specific database table.
81
- * This is a utility method that helps create builders with proper type inference for Kysely.
82
- *
83
- * @template DB - The database schema type
84
- * @template TableName - The name of the table (must be a key of DB)
85
- * @template Attrs - The attributes type for the builder (defaults to Partial<Insertable>)
86
- * @template Factory - The factory instance type
87
- * @template Result - The result type (defaults to Selectable of the table)
88
- *
89
- * @param table - The name of the database table
90
- * @param defaults - Optional function to provide default values (receives destructured context)
91
- * @param autoInsert - Whether to automatically insert the record (default: true)
92
- * @returns A builder function that creates and optionally inserts records
93
- *
94
- * @example
95
- * ```typescript
96
- * // Create a simple builder with defaults - destructure only what you need
97
- * const userBuilder = KyselyFactory.createBuilder<DB, 'users'>('users',
98
- * ({ attrs, faker }) => ({
99
- * id: faker.string.uuid(),
100
- * name: faker.person.fullName(),
101
- * email: faker.internet.email(),
102
- * createdAt: new Date(),
103
- * ...attrs
104
- * })
105
- * );
106
- *
107
- * // Only need faker? Just destructure that
108
- * const leaveTypeBuilder = KyselyFactory.createBuilder<DB, 'leaveTypes'>('leaveTypes',
109
- * ({ faker }) => ({
110
- * name: faker.helpers.arrayElement(['Annual', 'Sick', 'Maternity']),
111
- * code: faker.string.alpha({ length: 3, casing: 'upper' }),
112
- * })
113
- * );
114
- *
115
- * // Create a builder that doesn't auto-insert (useful for nested inserts)
116
- * const addressBuilder = KyselyFactory.createBuilder<DB, 'addresses'>('addresses',
117
- * ({ attrs }) => ({
118
- * street: '123 Main St',
119
- * city: 'Anytown',
120
- * ...attrs
121
- * }),
122
- * false // Don't auto-insert
123
- * );
124
- * ```
125
- */
126
- static createBuilder<DB, TableName extends keyof DB & string, Attrs extends Partial<Insertable<DB[TableName]>> = Partial<Insertable<DB[TableName]>>, Factory = any, Result = Selectable<DB[TableName]>>(table: TableName, defaults?: (context: {
127
- attrs: Attrs;
128
- factory: Factory;
129
- db: Kysely<DB>;
130
- faker: FakerFactory;
131
- }) => Partial<Insertable<DB[TableName]>> | Promise<Partial<Insertable<DB[TableName]>>>, autoInsert?: boolean): (attrs: Attrs, factory: Factory, db: Kysely<DB>, faker: FakerFactory) => Promise<Result>;
132
- /**
133
- * Inserts a single record into the database using the specified builder.
134
- * The builder function is responsible for generating the record data with defaults
135
- * and the factory handles the actual database insertion.
136
- *
137
- * @template K - The builder name (must be a key of Builders)
138
- * @param builderName - The name of the builder to use
139
- * @param attrs - Optional attributes to override builder defaults
140
- * @returns A promise resolving to the inserted record
141
- * @throws Error if the specified builder doesn't exist
142
- *
143
- * @example
144
- * ```typescript
145
- * // Insert with defaults
146
- * const user = await factory.insert('user');
147
- *
148
- * // Insert with overrides
149
- * const adminUser = await factory.insert('user', {
150
- * email: 'admin@example.com',
151
- * role: 'admin'
152
- * });
153
- *
154
- * // Use the inserted record
155
- * const post = await factory.insert('post', {
156
- * userId: user.id,
157
- * title: 'My First Post'
158
- * });
159
- * ```
160
- */
161
- insert<K extends keyof Builders>(builderName: K, attrs?: Parameters<Builders[K]>[0]): Promise<Awaited<ReturnType<Builders[K]>>>;
162
- /**
163
- * Inserts multiple records into the database using the specified builder.
164
- * Supports both static attributes and dynamic attribute generation via a function.
165
- *
166
- * @template K - The builder name (must be a key of Builders)
167
- * @param count - The number of records to insert
168
- * @param builderName - The name of the builder to use
169
- * @param attrs - Static attributes or a function that generates attributes for each record
170
- * @returns A promise resolving to an array of inserted records
171
- * @throws Error if the specified builder doesn't exist
172
- *
173
- * @example
174
- * ```typescript
175
- * // Insert multiple with same attributes
176
- * const users = await factory.insertMany(5, 'user', { role: 'member' });
177
- *
178
- * // Insert multiple with dynamic attributes
179
- * const posts = await factory.insertMany(10, 'post', (idx, faker) => ({
180
- * title: `Post ${idx + 1}`,
181
- * content: faker.lorem.paragraph(),
182
- * publishedAt: faker.date.past()
183
- * }));
184
- *
185
- * // Create users with sequential emails
186
- * const admins = await factory.insertMany(3, 'user', (idx) => ({
187
- * email: `admin${idx + 1}@example.com`,
188
- * role: 'admin'
189
- * }));
190
- * ```
191
- */
192
- insertMany<K extends keyof Builders>(count: number, builderName: K, attrs?: Parameters<Builders[K]>[0]): Promise<Awaited<ReturnType<Builders[K]>>[]>;
193
- insertMany<K extends keyof Builders>(count: number, builderName: K, attrs: (idx: number, faker: FakerFactory) => Parameters<Builders[K]>[0] | Promise<Parameters<Builders[K]>[0]>): Promise<Awaited<ReturnType<Builders[K]>>[]>;
194
- /**
195
- * Executes a seed function to create complex test scenarios with multiple related records.
196
- * Seeds are useful for setting up complete test environments with realistic data relationships.
197
- *
198
- * @template K - The seed name (must be a key of Seeds)
199
- * @param seedName - The name of the seed to execute
200
- * @param attrs - Optional configuration attributes for the seed
201
- * @returns The result of the seed function (typically the primary record created)
202
- * @throws Error if the specified seed doesn't exist
203
- *
204
- * @example
205
- * ```typescript
206
- * // Execute a simple seed
207
- * const user = await factory.seed('userWithProfile');
208
- *
209
- * // Execute a seed with configuration
210
- * const author = await factory.seed('authorWithBooks', {
211
- * bookCount: 5,
212
- * includeReviews: true
213
- * });
214
- *
215
- * // Use seed result in tests
216
- * const company = await factory.seed('companyWithDepartments', {
217
- * departmentCount: 3,
218
- * employeesPerDepartment: 10
219
- * });
220
- * expect(company.departments).toHaveLength(3);
221
- * ```
222
- */
223
- seed<K extends keyof Seeds>(seedName: K, attrs?: ExtractSeedAttrs<Seeds[K]>): ReturnType<Seeds[K]>;
224
- }
225
- //# sourceMappingURL=KyselyFactory.d.ts.map
226
- //#endregion
227
- export { KyselyFactory };
228
- //# sourceMappingURL=KyselyFactory-hMcVtvJq.d.cts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"KyselyFactory-hMcVtvJq.d.cts","names":[],"sources":["../src/KyselyFactory.ts"],"sourcesContent":[],"mappings":";;;;;;;;AA+CA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA4GK,cA5GQ,aA4GR,CAAA,EAAA,EAAA,iBA1Ga,MA0Gb,CAAA,MAAA,EAAA,GAAA,CAAA,EAAA,cAzGU,MAyGV,CAAA,MAAA,EAAA,GAAA,CAAA,CAAA,SAxGK,OAwGL,CAxGa,QAwGb,EAxGuB,KAwGvB,CAAA,CAAA;EAAO,QACoB,QAAA;EAAE,QAAC,KAAA;EAAS,QAAvB,EAAA;EAAU;;;;;;;;;;;;;;;;;;;;;EAwJf,OACK,UAAA,CAAA,aA5OoB,WA4OpB,CAAA,CAAA,MAAA,EA5OyC,IA4OzC,CAAA,EA5OgD,IA4OhD;EAAQ;;;;;;;EAClB,WACuB,CAAA,QAAA,EAlOd,QAkOc,EAAA,KAAA,EAjOjB,KAiOiB,EAAA,EAAA,EAhOpB,MAgOoB,CAhOb,EAgOa,CAAA,GAhOP,qBAgOO,CAhOe,EAgOf,EAAA,EAAA,CAAA;EAAQ;;;;;;;;;;;;;;;;;;;;;;;AApQzB;;;;;;;;;;;;;;;;;;;;;;;;mDA0FS,2BACV,QAAQ,WAAW,GAAG,eAAe,QAClD,WAAW,GAAG,sCAGN,WAAW,GAAG,oBAEhB;WAEC;aACE;QACL,OAAO;WACJ;QAEL,QAAQ,WAAW,GAAG,eACtB,QAAQ,QAAQ,WAAW,GAAG,8CAG1B,gBACE,aACL,OAAO,YACJ,iBACH,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;yBAuEgB,uBACf,WACL,WAAW,SAAS,SAC1B,QAAQ,QAAQ,WAAW,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6BAqEN,sCAEnB,WACL,WAAW,SAAS,SAC1B,QAAQ,QAAQ,WAAW,SAAS;6BACN,sCAEnB,+BAGL,iBACH,WAAW,SAAS,SAAS,QAAQ,WAAW,SAAS,UAC5D,QAAQ,QAAQ,WAAW,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;uBAsDlB,iBACV,WACF,iBAAiB,MAAM,MAC7B,WAAW,MAAM"}