@warlock.js/cascade 4.0.92 → 4.0.93

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 (269) hide show
  1. package/cjs/contracts/database-driver.contract.d.ts +118 -0
  2. package/cjs/contracts/database-driver.contract.d.ts.map +1 -1
  3. package/cjs/contracts/migration-driver.contract.d.ts +14 -0
  4. package/cjs/contracts/migration-driver.contract.d.ts.map +1 -1
  5. package/cjs/contracts/query-builder.contract.d.ts +410 -1
  6. package/cjs/contracts/query-builder.contract.d.ts.map +1 -1
  7. package/cjs/data-source/data-source-registry.d.ts +4 -0
  8. package/cjs/data-source/data-source-registry.d.ts.map +1 -1
  9. package/cjs/data-source/data-source-registry.js +7 -0
  10. package/cjs/data-source/data-source-registry.js.map +1 -1
  11. package/cjs/drivers/mongodb/mongodb-blueprint.d.ts.map +1 -0
  12. package/cjs/drivers/mongodb/mongodb-blueprint.js.map +1 -0
  13. package/{esm/drivers/mongo → cjs/drivers/mongodb}/mongodb-driver.d.ts +49 -0
  14. package/cjs/drivers/mongodb/mongodb-driver.d.ts.map +1 -0
  15. package/cjs/drivers/{mongo → mongodb}/mongodb-driver.js +125 -8
  16. package/cjs/drivers/mongodb/mongodb-driver.js.map +1 -0
  17. package/cjs/drivers/{mongo/mongo-id-generator.d.ts → mongodb/mongodb-id-generator.d.ts} +1 -1
  18. package/cjs/drivers/mongodb/mongodb-id-generator.d.ts.map +1 -0
  19. package/cjs/drivers/{mongo/mongo-id-generator.js → mongodb/mongodb-id-generator.js} +1 -1
  20. package/cjs/drivers/mongodb/mongodb-id-generator.js.map +1 -0
  21. package/cjs/drivers/{mongo/mongo-migration-driver.d.ts → mongodb/mongodb-migration-driver.d.ts} +10 -1
  22. package/cjs/drivers/mongodb/mongodb-migration-driver.d.ts.map +1 -0
  23. package/cjs/drivers/{mongo/mongo-migration-driver.js → mongodb/mongodb-migration-driver.js} +18 -1
  24. package/cjs/drivers/mongodb/mongodb-migration-driver.js.map +1 -0
  25. package/cjs/drivers/{mongo/mongo-query-builder.d.ts → mongodb/mongodb-query-builder.d.ts} +172 -4
  26. package/cjs/drivers/mongodb/mongodb-query-builder.d.ts.map +1 -0
  27. package/cjs/drivers/{mongo/mongo-query-builder.js → mongodb/mongodb-query-builder.js} +220 -14
  28. package/cjs/drivers/mongodb/mongodb-query-builder.js.map +1 -0
  29. package/{esm/drivers/mongo/mongo-query-operations.d.ts → cjs/drivers/mongodb/mongodb-query-operations.d.ts} +16 -16
  30. package/cjs/drivers/mongodb/mongodb-query-operations.d.ts.map +1 -0
  31. package/cjs/drivers/{mongo/mongo-query-operations.js → mongodb/mongodb-query-operations.js} +22 -22
  32. package/cjs/drivers/mongodb/mongodb-query-operations.js.map +1 -0
  33. package/cjs/drivers/{mongo/mongo-query-parser.d.ts → mongodb/mongodb-query-parser.d.ts} +2 -2
  34. package/cjs/drivers/mongodb/mongodb-query-parser.d.ts.map +1 -0
  35. package/cjs/drivers/{mongo/mongo-query-parser.js → mongodb/mongodb-query-parser.js} +87 -87
  36. package/cjs/drivers/mongodb/mongodb-query-parser.js.map +1 -0
  37. package/cjs/drivers/{mongo/mongo-sync-adapter.d.ts → mongodb/mongodb-sync-adapter.d.ts} +2 -2
  38. package/cjs/drivers/mongodb/mongodb-sync-adapter.d.ts.map +1 -0
  39. package/cjs/drivers/{mongo/mongo-sync-adapter.js → mongodb/mongodb-sync-adapter.js} +2 -2
  40. package/cjs/drivers/mongodb/mongodb-sync-adapter.js.map +1 -0
  41. package/{esm/drivers/mongo → cjs/drivers/mongodb}/types.d.ts +2 -2
  42. package/cjs/drivers/mongodb/types.d.ts.map +1 -0
  43. package/cjs/drivers/postgres/index.d.ts +16 -0
  44. package/cjs/drivers/postgres/index.d.ts.map +1 -0
  45. package/cjs/drivers/postgres/postgres-blueprint.d.ts +64 -0
  46. package/cjs/drivers/postgres/postgres-blueprint.d.ts.map +1 -0
  47. package/cjs/drivers/postgres/postgres-blueprint.js +121 -0
  48. package/cjs/drivers/postgres/postgres-blueprint.js.map +1 -0
  49. package/cjs/drivers/postgres/postgres-dialect.d.ts +135 -0
  50. package/cjs/drivers/postgres/postgres-dialect.d.ts.map +1 -0
  51. package/cjs/drivers/postgres/postgres-dialect.js +245 -0
  52. package/cjs/drivers/postgres/postgres-dialect.js.map +1 -0
  53. package/cjs/drivers/postgres/postgres-driver.d.ts +360 -0
  54. package/cjs/drivers/postgres/postgres-driver.d.ts.map +1 -0
  55. package/cjs/drivers/postgres/postgres-driver.js +763 -0
  56. package/cjs/drivers/postgres/postgres-driver.js.map +1 -0
  57. package/cjs/drivers/postgres/postgres-migration-driver.d.ts +297 -0
  58. package/cjs/drivers/postgres/postgres-migration-driver.d.ts.map +1 -0
  59. package/cjs/drivers/postgres/postgres-migration-driver.js +578 -0
  60. package/cjs/drivers/postgres/postgres-migration-driver.js.map +1 -0
  61. package/cjs/drivers/postgres/postgres-query-builder.d.ts +824 -0
  62. package/cjs/drivers/postgres/postgres-query-builder.d.ts.map +1 -0
  63. package/cjs/drivers/postgres/postgres-query-builder.js +1800 -0
  64. package/cjs/drivers/postgres/postgres-query-builder.js.map +1 -0
  65. package/cjs/drivers/postgres/postgres-query-parser.d.ts +308 -0
  66. package/cjs/drivers/postgres/postgres-query-parser.d.ts.map +1 -0
  67. package/cjs/drivers/postgres/postgres-query-parser.js +706 -0
  68. package/cjs/drivers/postgres/postgres-query-parser.js.map +1 -0
  69. package/cjs/drivers/postgres/postgres-sync-adapter.d.ts +83 -0
  70. package/cjs/drivers/postgres/postgres-sync-adapter.d.ts.map +1 -0
  71. package/cjs/drivers/postgres/postgres-sync-adapter.js +197 -0
  72. package/cjs/drivers/postgres/postgres-sync-adapter.js.map +1 -0
  73. package/cjs/drivers/postgres/types.d.ts +142 -0
  74. package/cjs/drivers/postgres/types.d.ts.map +1 -0
  75. package/cjs/drivers/sql/index.d.ts +10 -0
  76. package/cjs/drivers/sql/index.d.ts.map +1 -0
  77. package/cjs/drivers/sql/sql-dialect.contract.d.ts +203 -0
  78. package/cjs/drivers/sql/sql-dialect.contract.d.ts.map +1 -0
  79. package/cjs/drivers/sql/sql-types.d.ts +202 -0
  80. package/cjs/drivers/sql/sql-types.d.ts.map +1 -0
  81. package/cjs/index.d.ts +9 -6
  82. package/cjs/index.d.ts.map +1 -1
  83. package/cjs/index.js +1 -1
  84. package/cjs/migration/migration-runner.d.ts.map +1 -1
  85. package/cjs/migration/migration-runner.js +3 -0
  86. package/cjs/migration/migration-runner.js.map +1 -1
  87. package/cjs/model/model.d.ts +236 -1
  88. package/cjs/model/model.d.ts.map +1 -1
  89. package/cjs/model/model.js +203 -4
  90. package/cjs/model/model.js.map +1 -1
  91. package/cjs/relations/helpers.d.ts +156 -0
  92. package/cjs/relations/helpers.d.ts.map +1 -0
  93. package/cjs/relations/helpers.js +197 -0
  94. package/cjs/relations/helpers.js.map +1 -0
  95. package/cjs/relations/index.d.ts +33 -0
  96. package/cjs/relations/index.d.ts.map +1 -0
  97. package/cjs/relations/pivot-operations.d.ts +160 -0
  98. package/cjs/relations/pivot-operations.d.ts.map +1 -0
  99. package/cjs/relations/pivot-operations.js +293 -0
  100. package/cjs/relations/pivot-operations.js.map +1 -0
  101. package/cjs/relations/relation-loader.d.ts +194 -0
  102. package/cjs/relations/relation-loader.d.ts.map +1 -0
  103. package/cjs/relations/relation-loader.js +466 -0
  104. package/cjs/relations/relation-loader.js.map +1 -0
  105. package/cjs/relations/types.d.ts +280 -0
  106. package/cjs/relations/types.d.ts.map +1 -0
  107. package/cjs/sync/model-sync-operation.js +1 -1
  108. package/cjs/sync/model-sync-operation.js.map +1 -1
  109. package/cjs/utils/connect-to-database.d.ts.map +1 -1
  110. package/cjs/utils/connect-to-database.js +15 -3
  111. package/cjs/utils/connect-to-database.js.map +1 -1
  112. package/cjs/utils/define-model.d.ts +51 -29
  113. package/cjs/utils/define-model.d.ts.map +1 -1
  114. package/cjs/validation/rules/database-model-rule.js +1 -1
  115. package/cjs/validation/rules/database-model-rule.js.map +1 -1
  116. package/esm/contracts/database-driver.contract.d.ts +118 -0
  117. package/esm/contracts/database-driver.contract.d.ts.map +1 -1
  118. package/esm/contracts/migration-driver.contract.d.ts +14 -0
  119. package/esm/contracts/migration-driver.contract.d.ts.map +1 -1
  120. package/esm/contracts/query-builder.contract.d.ts +410 -1
  121. package/esm/contracts/query-builder.contract.d.ts.map +1 -1
  122. package/esm/data-source/data-source-registry.d.ts +4 -0
  123. package/esm/data-source/data-source-registry.d.ts.map +1 -1
  124. package/esm/data-source/data-source-registry.js +7 -0
  125. package/esm/data-source/data-source-registry.js.map +1 -1
  126. package/esm/drivers/mongodb/mongodb-blueprint.d.ts.map +1 -0
  127. package/esm/drivers/mongodb/mongodb-blueprint.js.map +1 -0
  128. package/{cjs/drivers/mongo → esm/drivers/mongodb}/mongodb-driver.d.ts +49 -0
  129. package/esm/drivers/mongodb/mongodb-driver.d.ts.map +1 -0
  130. package/esm/drivers/{mongo → mongodb}/mongodb-driver.js +121 -4
  131. package/esm/drivers/mongodb/mongodb-driver.js.map +1 -0
  132. package/esm/drivers/{mongo/mongo-id-generator.d.ts → mongodb/mongodb-id-generator.d.ts} +1 -1
  133. package/esm/drivers/mongodb/mongodb-id-generator.d.ts.map +1 -0
  134. package/esm/drivers/{mongo/mongo-id-generator.js → mongodb/mongodb-id-generator.js} +1 -1
  135. package/esm/drivers/mongodb/mongodb-id-generator.js.map +1 -0
  136. package/esm/drivers/{mongo/mongo-migration-driver.d.ts → mongodb/mongodb-migration-driver.d.ts} +10 -1
  137. package/esm/drivers/mongodb/mongodb-migration-driver.d.ts.map +1 -0
  138. package/esm/drivers/{mongo/mongo-migration-driver.js → mongodb/mongodb-migration-driver.js} +18 -1
  139. package/esm/drivers/mongodb/mongodb-migration-driver.js.map +1 -0
  140. package/esm/drivers/{mongo/mongo-query-builder.d.ts → mongodb/mongodb-query-builder.d.ts} +172 -4
  141. package/esm/drivers/mongodb/mongodb-query-builder.d.ts.map +1 -0
  142. package/esm/drivers/{mongo/mongo-query-builder.js → mongodb/mongodb-query-builder.js} +218 -12
  143. package/esm/drivers/mongodb/mongodb-query-builder.js.map +1 -0
  144. package/{cjs/drivers/mongo/mongo-query-operations.d.ts → esm/drivers/mongodb/mongodb-query-operations.d.ts} +16 -16
  145. package/esm/drivers/mongodb/mongodb-query-operations.d.ts.map +1 -0
  146. package/esm/drivers/{mongo/mongo-query-operations.js → mongodb/mongodb-query-operations.js} +22 -22
  147. package/esm/drivers/mongodb/mongodb-query-operations.js.map +1 -0
  148. package/esm/drivers/{mongo/mongo-query-parser.d.ts → mongodb/mongodb-query-parser.d.ts} +2 -2
  149. package/esm/drivers/mongodb/mongodb-query-parser.d.ts.map +1 -0
  150. package/esm/drivers/{mongo/mongo-query-parser.js → mongodb/mongodb-query-parser.js} +87 -87
  151. package/esm/drivers/mongodb/mongodb-query-parser.js.map +1 -0
  152. package/esm/drivers/{mongo/mongo-sync-adapter.d.ts → mongodb/mongodb-sync-adapter.d.ts} +2 -2
  153. package/esm/drivers/mongodb/mongodb-sync-adapter.d.ts.map +1 -0
  154. package/esm/drivers/{mongo/mongo-sync-adapter.js → mongodb/mongodb-sync-adapter.js} +2 -2
  155. package/esm/drivers/mongodb/mongodb-sync-adapter.js.map +1 -0
  156. package/{cjs/drivers/mongo → esm/drivers/mongodb}/types.d.ts +2 -2
  157. package/esm/drivers/mongodb/types.d.ts.map +1 -0
  158. package/esm/drivers/postgres/index.d.ts +16 -0
  159. package/esm/drivers/postgres/index.d.ts.map +1 -0
  160. package/esm/drivers/postgres/postgres-blueprint.d.ts +64 -0
  161. package/esm/drivers/postgres/postgres-blueprint.d.ts.map +1 -0
  162. package/esm/drivers/postgres/postgres-blueprint.js +121 -0
  163. package/esm/drivers/postgres/postgres-blueprint.js.map +1 -0
  164. package/esm/drivers/postgres/postgres-dialect.d.ts +135 -0
  165. package/esm/drivers/postgres/postgres-dialect.d.ts.map +1 -0
  166. package/esm/drivers/postgres/postgres-dialect.js +245 -0
  167. package/esm/drivers/postgres/postgres-dialect.js.map +1 -0
  168. package/esm/drivers/postgres/postgres-driver.d.ts +360 -0
  169. package/esm/drivers/postgres/postgres-driver.d.ts.map +1 -0
  170. package/esm/drivers/postgres/postgres-driver.js +763 -0
  171. package/esm/drivers/postgres/postgres-driver.js.map +1 -0
  172. package/esm/drivers/postgres/postgres-migration-driver.d.ts +297 -0
  173. package/esm/drivers/postgres/postgres-migration-driver.d.ts.map +1 -0
  174. package/esm/drivers/postgres/postgres-migration-driver.js +578 -0
  175. package/esm/drivers/postgres/postgres-migration-driver.js.map +1 -0
  176. package/esm/drivers/postgres/postgres-query-builder.d.ts +824 -0
  177. package/esm/drivers/postgres/postgres-query-builder.d.ts.map +1 -0
  178. package/esm/drivers/postgres/postgres-query-builder.js +1800 -0
  179. package/esm/drivers/postgres/postgres-query-builder.js.map +1 -0
  180. package/esm/drivers/postgres/postgres-query-parser.d.ts +308 -0
  181. package/esm/drivers/postgres/postgres-query-parser.d.ts.map +1 -0
  182. package/esm/drivers/postgres/postgres-query-parser.js +706 -0
  183. package/esm/drivers/postgres/postgres-query-parser.js.map +1 -0
  184. package/esm/drivers/postgres/postgres-sync-adapter.d.ts +83 -0
  185. package/esm/drivers/postgres/postgres-sync-adapter.d.ts.map +1 -0
  186. package/esm/drivers/postgres/postgres-sync-adapter.js +197 -0
  187. package/esm/drivers/postgres/postgres-sync-adapter.js.map +1 -0
  188. package/esm/drivers/postgres/types.d.ts +142 -0
  189. package/esm/drivers/postgres/types.d.ts.map +1 -0
  190. package/esm/drivers/sql/index.d.ts +10 -0
  191. package/esm/drivers/sql/index.d.ts.map +1 -0
  192. package/esm/drivers/sql/sql-dialect.contract.d.ts +203 -0
  193. package/esm/drivers/sql/sql-dialect.contract.d.ts.map +1 -0
  194. package/esm/drivers/sql/sql-types.d.ts +202 -0
  195. package/esm/drivers/sql/sql-types.d.ts.map +1 -0
  196. package/esm/index.d.ts +9 -6
  197. package/esm/index.d.ts.map +1 -1
  198. package/esm/index.js +1 -1
  199. package/esm/migration/migration-runner.d.ts.map +1 -1
  200. package/esm/migration/migration-runner.js +3 -0
  201. package/esm/migration/migration-runner.js.map +1 -1
  202. package/esm/model/model.d.ts +236 -1
  203. package/esm/model/model.d.ts.map +1 -1
  204. package/esm/model/model.js +203 -4
  205. package/esm/model/model.js.map +1 -1
  206. package/esm/relations/helpers.d.ts +156 -0
  207. package/esm/relations/helpers.d.ts.map +1 -0
  208. package/esm/relations/helpers.js +197 -0
  209. package/esm/relations/helpers.js.map +1 -0
  210. package/esm/relations/index.d.ts +33 -0
  211. package/esm/relations/index.d.ts.map +1 -0
  212. package/esm/relations/pivot-operations.d.ts +160 -0
  213. package/esm/relations/pivot-operations.d.ts.map +1 -0
  214. package/esm/relations/pivot-operations.js +293 -0
  215. package/esm/relations/pivot-operations.js.map +1 -0
  216. package/esm/relations/relation-loader.d.ts +194 -0
  217. package/esm/relations/relation-loader.d.ts.map +1 -0
  218. package/esm/relations/relation-loader.js +466 -0
  219. package/esm/relations/relation-loader.js.map +1 -0
  220. package/esm/relations/types.d.ts +280 -0
  221. package/esm/relations/types.d.ts.map +1 -0
  222. package/esm/sync/model-sync-operation.js +1 -1
  223. package/esm/sync/model-sync-operation.js.map +1 -1
  224. package/esm/utils/connect-to-database.d.ts.map +1 -1
  225. package/esm/utils/connect-to-database.js +15 -3
  226. package/esm/utils/connect-to-database.js.map +1 -1
  227. package/esm/utils/define-model.d.ts +51 -29
  228. package/esm/utils/define-model.d.ts.map +1 -1
  229. package/esm/validation/rules/database-model-rule.js +1 -1
  230. package/esm/validation/rules/database-model-rule.js.map +1 -1
  231. package/package.json +4 -4
  232. package/cjs/drivers/mongo/mongo-id-generator.d.ts.map +0 -1
  233. package/cjs/drivers/mongo/mongo-id-generator.js.map +0 -1
  234. package/cjs/drivers/mongo/mongo-migration-driver.d.ts.map +0 -1
  235. package/cjs/drivers/mongo/mongo-migration-driver.js.map +0 -1
  236. package/cjs/drivers/mongo/mongo-query-builder.d.ts.map +0 -1
  237. package/cjs/drivers/mongo/mongo-query-builder.js.map +0 -1
  238. package/cjs/drivers/mongo/mongo-query-operations.d.ts.map +0 -1
  239. package/cjs/drivers/mongo/mongo-query-operations.js.map +0 -1
  240. package/cjs/drivers/mongo/mongo-query-parser.d.ts.map +0 -1
  241. package/cjs/drivers/mongo/mongo-query-parser.js.map +0 -1
  242. package/cjs/drivers/mongo/mongo-sync-adapter.d.ts.map +0 -1
  243. package/cjs/drivers/mongo/mongo-sync-adapter.js.map +0 -1
  244. package/cjs/drivers/mongo/mongodb-blueprint.d.ts.map +0 -1
  245. package/cjs/drivers/mongo/mongodb-blueprint.js.map +0 -1
  246. package/cjs/drivers/mongo/mongodb-driver.d.ts.map +0 -1
  247. package/cjs/drivers/mongo/mongodb-driver.js.map +0 -1
  248. package/cjs/drivers/mongo/types.d.ts.map +0 -1
  249. package/esm/drivers/mongo/mongo-id-generator.d.ts.map +0 -1
  250. package/esm/drivers/mongo/mongo-id-generator.js.map +0 -1
  251. package/esm/drivers/mongo/mongo-migration-driver.d.ts.map +0 -1
  252. package/esm/drivers/mongo/mongo-migration-driver.js.map +0 -1
  253. package/esm/drivers/mongo/mongo-query-builder.d.ts.map +0 -1
  254. package/esm/drivers/mongo/mongo-query-builder.js.map +0 -1
  255. package/esm/drivers/mongo/mongo-query-operations.d.ts.map +0 -1
  256. package/esm/drivers/mongo/mongo-query-operations.js.map +0 -1
  257. package/esm/drivers/mongo/mongo-query-parser.d.ts.map +0 -1
  258. package/esm/drivers/mongo/mongo-query-parser.js.map +0 -1
  259. package/esm/drivers/mongo/mongo-sync-adapter.d.ts.map +0 -1
  260. package/esm/drivers/mongo/mongo-sync-adapter.js.map +0 -1
  261. package/esm/drivers/mongo/mongodb-blueprint.d.ts.map +0 -1
  262. package/esm/drivers/mongo/mongodb-blueprint.js.map +0 -1
  263. package/esm/drivers/mongo/mongodb-driver.d.ts.map +0 -1
  264. package/esm/drivers/mongo/mongodb-driver.js.map +0 -1
  265. package/esm/drivers/mongo/types.d.ts.map +0 -1
  266. /package/cjs/drivers/{mongo → mongodb}/mongodb-blueprint.d.ts +0 -0
  267. /package/cjs/drivers/{mongo → mongodb}/mongodb-blueprint.js +0 -0
  268. /package/esm/drivers/{mongo → mongodb}/mongodb-blueprint.d.ts +0 -0
  269. /package/esm/drivers/{mongo → mongodb}/mongodb-blueprint.js +0 -0
@@ -28,7 +28,7 @@ export type LocalScopeCallback = (query: QueryBuilderContract) => void;
28
28
  export type GlobalScopeOptions = {
29
29
  timing?: ScopeTiming;
30
30
  };
31
- export type ChildModel<TModel extends Model> = (new (...args: any[]) => TModel) & Pick<typeof Model, "table" | "primaryKey" | "dataSource" | "schema" | "strictMode" | "autoGenerateId" | "initialId" | "randomInitialId" | "incrementIdBy" | "resource" | "resourceColumns" | "toJsonColumns" | "randomIncrement" | "getDataSource" | "query" | "find" | "first" | "last" | "all" | "latest" | "count" | "where" | "increase" | "decrease" | "atomic" | "events" | "on" | "once" | "off" | "globalEvents" | "delete" | "deleteOne" | "deleteStrategy" | "trashTable" | "restore" | "restoreAll" | "deletedAtColumn" | "createdAtColumn" | "updatedAtColumn" | "create" | "createMany" | "sync" | "embed" | "deserialize" | "syncMany" | "addGlobalScope" | "removeGlobalScope" | "addScope" | "removeScope" | "localScopes" | "globalScopes" | "newQueryBuilder" | "builder">;
31
+ export type ChildModel<TModel extends Model> = (new (...args: any[]) => TModel) & Pick<typeof Model, "table" | "primaryKey" | "dataSource" | "schema" | "strictMode" | "autoGenerateId" | "initialId" | "randomInitialId" | "incrementIdBy" | "resource" | "resourceColumns" | "toJsonColumns" | "randomIncrement" | "getDataSource" | "query" | "find" | "first" | "last" | "all" | "latest" | "count" | "where" | "increase" | "decrease" | "atomic" | "events" | "on" | "once" | "off" | "globalEvents" | "delete" | "deleteOne" | "deleteStrategy" | "trashTable" | "restore" | "restoreAll" | "deletedAtColumn" | "createdAtColumn" | "updatedAtColumn" | "create" | "createMany" | "sync" | "embed" | "deserialize" | "syncMany" | "addGlobalScope" | "removeGlobalScope" | "addScope" | "removeScope" | "localScopes" | "globalScopes" | "relations" | "newQueryBuilder" | "builder">;
32
32
  /**
33
33
  * Generic schema type representing the structure of model data.
34
34
  */
@@ -351,6 +351,36 @@ export declare abstract class Model<TSchema extends ModelSchema = ModelSchema> {
351
351
  * These are reusable query snippets that developers opt into.
352
352
  */
353
353
  static localScopes: Map<string, LocalScopeCallback>;
354
+ /**
355
+ * Relation definitions for this model.
356
+ *
357
+ * Define relationships to other models using helper functions:
358
+ * - `hasMany()` - One-to-many (User has many Posts)
359
+ * - `hasOne()` - One-to-one (User has one Profile)
360
+ * - `belongsTo()` - Inverse of hasMany/hasOne (Post belongs to User)
361
+ * - `belongsToMany()` - Many-to-many with pivot table (User has many Roles)
362
+ *
363
+ * @example
364
+ * ```typescript
365
+ * import { hasMany, belongsTo, belongsToMany, hasOne } from "@warlock.js/cascade";
366
+ *
367
+ * class User extends Model {
368
+ * public posts?: Post[]; // Optional: for TypeScript autocomplete
369
+ *
370
+ * static relations = {
371
+ * posts: hasMany("Post"),
372
+ * profile: hasOne("Profile"),
373
+ * organization: belongsTo("Organization"),
374
+ * roles: belongsToMany("Role", { pivot: "user_roles" }),
375
+ * };
376
+ * }
377
+ *
378
+ * // Usage:
379
+ * const users = await User.query().with("posts").get();
380
+ * console.log(users[0].posts); // Post[]
381
+ * ```
382
+ */
383
+ static relations: Record<string, any>;
354
384
  /**
355
385
  * Flag indicating whether this model instance represents a new (unsaved) record.
356
386
  *
@@ -377,6 +407,85 @@ export declare abstract class Model<TSchema extends ModelSchema = ModelSchema> {
377
407
  * Used by the writer to generate efficient partial update payloads.
378
408
  */
379
409
  readonly dirtyTracker: DatabaseDirtyTracker;
410
+ /**
411
+ * Model instance events.
412
+ * Allows registering listeners for lifecycle events on this specific instance.
413
+ */
414
+ events: ModelEvents<any>;
415
+ /**
416
+ * Map of loaded relations for this model instance.
417
+ *
418
+ * Populated automatically when using `with()` for eager loading,
419
+ * or when calling `load()` for lazy loading.
420
+ *
421
+ * @example
422
+ * ```typescript
423
+ * const user = await User.query().with("posts").first();
424
+ * console.log(user.loadedRelations.get("posts")); // Post[]
425
+ *
426
+ * // Also accessible as direct properties:
427
+ * console.log(user.posts); // Post[]\n * ```
428
+ */
429
+ loadedRelations: Map<string, any>;
430
+ /**
431
+ * Lazily load one or more relations for this model instance.
432
+ *
433
+ * This method loads relations on-demand after the model has been fetched.
434
+ * The loaded relations are attached directly to the model instance and
435
+ * also stored in `loadedRelations` map.
436
+ *
437
+ * @param relations - Relation name(s) to load
438
+ * @returns This model instance for chaining
439
+ *
440
+ * @example
441
+ * ```typescript
442
+ * const user = await User.first();
443
+ *
444
+ * // Load single relation
445
+ * await user.load("posts");
446
+ * console.log(user.posts); // Post[]
447
+ *
448
+ * // Load multiple relations
449
+ * await user.load("posts", "organization");
450
+ *
451
+ * // Chain with other operations
452
+ * const posts = await user.load("posts").then(() => user.posts);
453
+ * ```
454
+ */
455
+ load(...relations: string[]): Promise<this>;
456
+ /**
457
+ * Check if a relation has been loaded.
458
+ *
459
+ * @param relationName - Name of the relation to check
460
+ * @returns True if the relation has been loaded
461
+ *
462
+ * @example
463
+ * ```typescript
464
+ * const user = await User.first();
465
+ *
466
+ * console.log(user.isLoaded("posts")); // false
467
+ * await user.load("posts");
468
+ * console.log(user.isLoaded("posts")); // true
469
+ * ```
470
+ */
471
+ isLoaded(relationName: string): boolean;
472
+ /**
473
+ * Get a loaded relation by name.
474
+ *
475
+ * Returns undefined if the relation has not been loaded.
476
+ *
477
+ * @param relationName - Name of the relation to get
478
+ * @returns The loaded relation data, or undefined
479
+ *
480
+ * @example
481
+ * ```typescript
482
+ * const user = await User.query().with("posts").first();
483
+ *
484
+ * const posts = user.getRelation<Post[]>("posts");
485
+ * console.log(posts?.length);
486
+ * ```
487
+ */
488
+ getRelation<TRelation = any>(relationName: string): TRelation | undefined;
380
489
  /**
381
490
  * Constructs a new model instance with optional initial data.
382
491
  *
@@ -655,6 +764,29 @@ export declare abstract class Model<TSchema extends ModelSchema = ModelSchema> {
655
764
  * ```
656
765
  */
657
766
  emitEvent<TContext = unknown>(event: ModelEventName, context?: TContext): Promise<void>;
767
+ /**
768
+ * Register a listener for a model lifecycle event on this instance.
769
+ *
770
+ * @param event - Event name (e.g., "saving", "updated")
771
+ * @param listener - Callback function
772
+ * @returns Unsubscribe function
773
+ */
774
+ on<TContext = unknown>(event: ModelEventName, listener: ModelEventListener<this, TContext>): () => void;
775
+ /**
776
+ * Register a one-time listener for a model lifecycle event on this instance.
777
+ *
778
+ * @param event - Event name
779
+ * @param listener - Callback function
780
+ * @returns Unsubscribe function
781
+ */
782
+ once<TContext = unknown>(event: ModelEventName, listener: ModelEventListener<this, TContext>): () => void;
783
+ /**
784
+ * Remove a listener from this instance.
785
+ *
786
+ * @param event - Event name
787
+ * @param listener - Callback function to remove
788
+ */
789
+ off<TContext = unknown>(event: ModelEventName, listener: ModelEventListener<this, TContext>): void;
658
790
  /**
659
791
  * Resolves the data source associated with this model.
660
792
  *
@@ -762,6 +894,109 @@ export declare abstract class Model<TSchema extends ModelSchema = ModelSchema> {
762
894
  * Create a new query builder for this model
763
895
  */
764
896
  static query<TModel extends Model = Model>(this: ChildModel<TModel>): QueryBuilderContract<TModel>;
897
+ /**
898
+ * Short hand for the query builder method with
899
+ */
900
+ /**
901
+ * Eagerly load one or more relations with the query results.
902
+ *
903
+ * Relations are loaded in separate optimized queries to prevent N+1 problems.
904
+ * The loaded relations are attached to each model instance.
905
+ *
906
+ * @param relation - Single relation name to load
907
+ * @returns Query builder for chaining
908
+ *
909
+ * @example
910
+ * ```typescript
911
+ * // Load single relation
912
+ * const user = await User.query().with("posts").find(1);
913
+ * console.log(user.posts); // Post[]
914
+ *
915
+ * // Load multiple relations
916
+ * const user = await User.query().with("posts", "organization").find(1);
917
+ *
918
+ * // Load nested relations
919
+ * const user = await User.query().with("posts.comments.author").find(1);
920
+ * ```
921
+ */
922
+ static with<TModel extends Model = Model>(this: ChildModel<TModel>, relation: string): QueryBuilderContract<TModel>;
923
+ /**
924
+ * Eagerly load multiple relations.
925
+ *
926
+ * @param relations - Relation names to load
927
+ * @returns Query builder for chaining
928
+ */
929
+ static with<TModel extends Model = Model>(this: ChildModel<TModel>, ...relations: string[]): QueryBuilderContract<TModel>;
930
+ /**
931
+ * Eagerly load a relation with a constraint callback.
932
+ *
933
+ * The callback receives the relation query builder, allowing you to
934
+ * add conditions, ordering, or limits to the related query.
935
+ *
936
+ * @param relation - Relation name to load
937
+ * @param constraint - Callback to configure the relation query
938
+ * @returns Query builder for chaining
939
+ *
940
+ * @example
941
+ * ```typescript
942
+ * const user = await User.query()
943
+ * .with("posts", (query) => {
944
+ * query.where("isPublished", true)
945
+ * .orderBy("createdAt", "desc")
946
+ * .limit(5);
947
+ * })
948
+ * .find(1);
949
+ * ```
950
+ */
951
+ static with<TModel extends Model = Model>(this: ChildModel<TModel>, relation: string, constraint: (query: QueryBuilderContract) => void): QueryBuilderContract<TModel>;
952
+ /**
953
+ * Eagerly load multiple relations with constraints.
954
+ *
955
+ * Pass an object where keys are relation names and values are either:
956
+ * - `true` to load without constraints
957
+ * - A callback function to configure the relation query
958
+ *
959
+ * @param relations - Object mapping relation names to constraints
960
+ * @returns Query builder for chaining
961
+ *
962
+ * @example
963
+ * ```typescript
964
+ * const user = await User.query()
965
+ * .with({
966
+ * posts: (query) => query.where("isPublished", true),
967
+ * organization: true,
968
+ * roles: (query) => query.orderBy("priority"),
969
+ * })
970
+ * .find(1);
971
+ * ```
972
+ */
973
+ static with<TModel extends Model = Model>(this: ChildModel<TModel>, relations: Record<string, boolean | ((query: QueryBuilderContract) => void)>): QueryBuilderContract<TModel>;
974
+ /**
975
+ * Load relations using database JOINs in a single query.
976
+ *
977
+ * Unlike `with()` which uses separate queries, `joinWith()` uses
978
+ * LEFT JOIN (SQL) or $lookup (MongoDB) to fetch related data
979
+ * in a single query. The related data is hydrated into proper
980
+ * model instances and attached to the main model.
981
+ *
982
+ * Best for: belongsTo and hasOne relations where you need
983
+ * efficient single-query loading.
984
+ *
985
+ * @param relations - Relation names to load via JOIN
986
+ * @returns Query builder for chaining
987
+ *
988
+ * @example
989
+ * ```typescript
990
+ * // Single relation
991
+ * const post = await Post.joinWith("author").first();
992
+ * console.log(post.author); // User model instance
993
+ * console.log(post.data); // { id, title, authorId } - no author data
994
+ *
995
+ * // Multiple relations
996
+ * const post = await Post.joinWith("author", "category").first();
997
+ * ```
998
+ */
999
+ static joinWith<TModel extends Model = Model>(this: ChildModel<TModel>, ...relations: string[]): QueryBuilderContract<TModel>;
765
1000
  /**
766
1001
  * Create new query builder.
767
1002
  *
@@ -1 +1 @@
1
- {"version":3,"file":"model.d.ts","sourceRoot":"","sources":["../../src/model/model.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"model.d.ts","sourceRoot":"","sources":["../../src/model/model.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import {get,only,set,unset,merge}from'@mongez/reinforcements';import {dataSourceRegistry}from'../data-source/data-source-registry.js';import {DatabaseDirtyTracker}from'../database-dirty-tracker.js';import {globalModelEvents,ModelEvents}from'../events/model-events.js';import {DatabaseRemover}from'../remover/database-remover.js';import {DatabaseRestorer}from'../restorer/database-restorer.js';import {modelSync}from'../sync/model-sync.js';import {DatabaseWriter}from'../writer/database-writer.js';import {getModelFromRegistry,getAllModelsFromRegistry,removeModelFromRegistery}from'./register-model.js';/**
1
+ import {get,only,set,unset,merge}from'@mongez/reinforcements';import {dataSourceRegistry}from'../data-source/data-source-registry.js';import {DatabaseDirtyTracker}from'../database-dirty-tracker.js';import {ModelEvents,globalModelEvents}from'../events/model-events.js';import {RelationLoader}from'../relations/relation-loader.js';import {DatabaseRemover}from'../remover/database-remover.js';import {DatabaseRestorer}from'../restorer/database-restorer.js';import {modelSync}from'../sync/model-sync.js';import {DatabaseWriter}from'../writer/database-writer.js';import {getModelFromRegistry,getAllModelsFromRegistry,removeModelFromRegistery}from'./register-model.js';/**
2
2
  * Sentinel value used to distinguish between undefined and missing fields.
3
3
  */
4
4
  const MISSING_VALUE = Symbol("missing");
@@ -324,6 +324,36 @@ class Model {
324
324
  * These are reusable query snippets that developers opt into.
325
325
  */
326
326
  static localScopes = new Map();
327
+ /**
328
+ * Relation definitions for this model.
329
+ *
330
+ * Define relationships to other models using helper functions:
331
+ * - `hasMany()` - One-to-many (User has many Posts)
332
+ * - `hasOne()` - One-to-one (User has one Profile)
333
+ * - `belongsTo()` - Inverse of hasMany/hasOne (Post belongs to User)
334
+ * - `belongsToMany()` - Many-to-many with pivot table (User has many Roles)
335
+ *
336
+ * @example
337
+ * ```typescript
338
+ * import { hasMany, belongsTo, belongsToMany, hasOne } from "@warlock.js/cascade";
339
+ *
340
+ * class User extends Model {
341
+ * public posts?: Post[]; // Optional: for TypeScript autocomplete
342
+ *
343
+ * static relations = {
344
+ * posts: hasMany("Post"),
345
+ * profile: hasOne("Profile"),
346
+ * organization: belongsTo("Organization"),
347
+ * roles: belongsToMany("Role", { pivot: "user_roles" }),
348
+ * };
349
+ * }
350
+ *
351
+ * // Usage:
352
+ * const users = await User.query().with("posts").get();
353
+ * console.log(users[0].posts); // Post[]
354
+ * ```
355
+ */
356
+ static relations = {};
327
357
  /**
328
358
  * Flag indicating whether this model instance represents a new (unsaved) record.
329
359
  *
@@ -350,6 +380,94 @@ class Model {
350
380
  * Used by the writer to generate efficient partial update payloads.
351
381
  */
352
382
  dirtyTracker;
383
+ /**
384
+ * Model instance events.
385
+ * Allows registering listeners for lifecycle events on this specific instance.
386
+ */
387
+ events = new ModelEvents();
388
+ /**
389
+ * Map of loaded relations for this model instance.
390
+ *
391
+ * Populated automatically when using `with()` for eager loading,
392
+ * or when calling `load()` for lazy loading.
393
+ *
394
+ * @example
395
+ * ```typescript
396
+ * const user = await User.query().with("posts").first();
397
+ * console.log(user.loadedRelations.get("posts")); // Post[]
398
+ *
399
+ * // Also accessible as direct properties:
400
+ * console.log(user.posts); // Post[]\n * ```
401
+ */
402
+ loadedRelations = new Map();
403
+ /**
404
+ * Lazily load one or more relations for this model instance.
405
+ *
406
+ * This method loads relations on-demand after the model has been fetched.
407
+ * The loaded relations are attached directly to the model instance and
408
+ * also stored in `loadedRelations` map.
409
+ *
410
+ * @param relations - Relation name(s) to load
411
+ * @returns This model instance for chaining
412
+ *
413
+ * @example
414
+ * ```typescript
415
+ * const user = await User.first();
416
+ *
417
+ * // Load single relation
418
+ * await user.load("posts");
419
+ * console.log(user.posts); // Post[]
420
+ *
421
+ * // Load multiple relations
422
+ * await user.load("posts", "organization");
423
+ *
424
+ * // Chain with other operations
425
+ * const posts = await user.load("posts").then(() => user.posts);
426
+ * ```
427
+ */
428
+ async load(...relations) {
429
+ const ModelClass = this.constructor;
430
+ const loader = new RelationLoader([this], ModelClass);
431
+ await loader.load(relations);
432
+ return this;
433
+ }
434
+ /**
435
+ * Check if a relation has been loaded.
436
+ *
437
+ * @param relationName - Name of the relation to check
438
+ * @returns True if the relation has been loaded
439
+ *
440
+ * @example
441
+ * ```typescript
442
+ * const user = await User.first();
443
+ *
444
+ * console.log(user.isLoaded("posts")); // false
445
+ * await user.load("posts");
446
+ * console.log(user.isLoaded("posts")); // true
447
+ * ```
448
+ */
449
+ isLoaded(relationName) {
450
+ return this.loadedRelations.has(relationName);
451
+ }
452
+ /**
453
+ * Get a loaded relation by name.
454
+ *
455
+ * Returns undefined if the relation has not been loaded.
456
+ *
457
+ * @param relationName - Name of the relation to get
458
+ * @returns The loaded relation data, or undefined
459
+ *
460
+ * @example
461
+ * ```typescript
462
+ * const user = await User.query().with("posts").first();
463
+ *
464
+ * const posts = user.getRelation<Post[]>("posts");
465
+ * console.log(posts?.length);
466
+ * ```
467
+ */
468
+ getRelation(relationName) {
469
+ return this.loadedRelations.get(relationName);
470
+ }
353
471
  /**
354
472
  * Constructs a new model instance with optional initial data.
355
473
  *
@@ -596,9 +714,42 @@ class Model {
596
714
  */
597
715
  async emitEvent(event, context) {
598
716
  const ctor = this.constructor;
717
+ // Trigger instance events
718
+ await this.events.emit(event, this, context);
719
+ // Trigger static events
599
720
  await ctor.events().emit(event, this, context);
721
+ // Trigger global events
600
722
  await globalModelEvents.emit(event, this, context);
601
723
  }
724
+ /**
725
+ * Register a listener for a model lifecycle event on this instance.
726
+ *
727
+ * @param event - Event name (e.g., "saving", "updated")
728
+ * @param listener - Callback function
729
+ * @returns Unsubscribe function
730
+ */
731
+ on(event, listener) {
732
+ return this.events.on(event, listener);
733
+ }
734
+ /**
735
+ * Register a one-time listener for a model lifecycle event on this instance.
736
+ *
737
+ * @param event - Event name
738
+ * @param listener - Callback function
739
+ * @returns Unsubscribe function
740
+ */
741
+ once(event, listener) {
742
+ return this.events.once(event, listener);
743
+ }
744
+ /**
745
+ * Remove a listener from this instance.
746
+ *
747
+ * @param event - Event name
748
+ * @param listener - Callback function to remove
749
+ */
750
+ off(event, listener) {
751
+ this.events.off(event, listener);
752
+ }
602
753
  /**
603
754
  * Resolves the data source associated with this model.
604
755
  *
@@ -759,6 +910,7 @@ class Model {
759
910
  // Call newQueryBuilder as a static method (may be overridden in child classes)
760
911
  const queryBuilder = this.newQueryBuilder();
761
912
  const ModelClass = this;
913
+ const qb = queryBuilder; // Capture for closure access
762
914
  // Collect global scopes from base Model and child model
763
915
  const allGlobalScopes = new Map([
764
916
  ...Model.globalScopes,
@@ -768,6 +920,9 @@ class Model {
768
920
  queryBuilder.pendingGlobalScopes = allGlobalScopes;
769
921
  queryBuilder.availableLocalScopes = this.localScopes;
770
922
  queryBuilder.disabledGlobalScopes = new Set();
923
+ // Pass relation definitions for joinWith() support
924
+ queryBuilder.relationDefinitions = this.relations;
925
+ queryBuilder.modelClass = ModelClass;
771
926
  // Emit fetching event
772
927
  this.events().emitFetching(queryBuilder, { table: this.table, modelClass: this });
773
928
  queryBuilder.hydrate((data) => {
@@ -775,12 +930,56 @@ class Model {
775
930
  model.isNew = false;
776
931
  return model;
777
932
  });
778
- // Wire up onFetched callback to emit model-level event
779
- queryBuilder.onFetched(async (models, context) => {
780
- await this.events().emit("fetched", models, context);
933
+ // Wire up onFetched callback to load relations and emit model-level event
934
+ queryBuilder.onFetched(async (models) => {
935
+ // Load eager relations if any were requested
936
+ const eagerRelations = qb.eagerLoadRelations;
937
+ if (eagerRelations && eagerRelations.size > 0 && models.length > 0) {
938
+ // Build constraints object from the Map
939
+ const constraints = {};
940
+ for (const [name, constraint] of eagerRelations) {
941
+ if (typeof constraint === "function") {
942
+ constraints[name] = constraint;
943
+ }
944
+ }
945
+ const loader = new RelationLoader(models, ModelClass);
946
+ await loader.load([...eagerRelations.keys()], constraints);
947
+ }
948
+ await this.events().emit("fetched", models, {});
781
949
  });
782
950
  return queryBuilder;
783
951
  }
952
+ static with(...args) {
953
+ return this.query().with(...args);
954
+ }
955
+ /**
956
+ * Load relations using database JOINs in a single query.
957
+ *
958
+ * Unlike `with()` which uses separate queries, `joinWith()` uses
959
+ * LEFT JOIN (SQL) or $lookup (MongoDB) to fetch related data
960
+ * in a single query. The related data is hydrated into proper
961
+ * model instances and attached to the main model.
962
+ *
963
+ * Best for: belongsTo and hasOne relations where you need
964
+ * efficient single-query loading.
965
+ *
966
+ * @param relations - Relation names to load via JOIN
967
+ * @returns Query builder for chaining
968
+ *
969
+ * @example
970
+ * ```typescript
971
+ * // Single relation
972
+ * const post = await Post.joinWith("author").first();
973
+ * console.log(post.author); // User model instance
974
+ * console.log(post.data); // { id, title, authorId } - no author data
975
+ *
976
+ * // Multiple relations
977
+ * const post = await Post.joinWith("author", "category").first();
978
+ * ```
979
+ */
980
+ static joinWith(...relations) {
981
+ return this.query().joinWith(...relations);
982
+ }
784
983
  /**
785
984
  * Create new query builder.
786
985
  *