@warlock.js/cascade 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (506) hide show
  1. package/README.md +97 -0
  2. package/cjs/aggregate/DeselectPipeline.d.ts +10 -0
  3. package/cjs/aggregate/DeselectPipeline.d.ts.map +1 -0
  4. package/cjs/aggregate/DeselectPipeline.js +17 -0
  5. package/cjs/aggregate/DeselectPipeline.js.map +1 -0
  6. package/cjs/aggregate/GeoNearPipeline.d.ts +34 -0
  7. package/cjs/aggregate/GeoNearPipeline.d.ts.map +1 -0
  8. package/cjs/aggregate/GeoNearPipeline.js +44 -0
  9. package/cjs/aggregate/GeoNearPipeline.js.map +1 -0
  10. package/cjs/aggregate/GroupByPipeline.d.ts +12 -0
  11. package/cjs/aggregate/GroupByPipeline.d.ts.map +1 -0
  12. package/cjs/aggregate/GroupByPipeline.js +28 -0
  13. package/cjs/aggregate/GroupByPipeline.js.map +1 -0
  14. package/cjs/aggregate/LimitPipeline.d.ts +10 -0
  15. package/cjs/aggregate/LimitPipeline.d.ts.map +1 -0
  16. package/cjs/aggregate/LimitPipeline.js +14 -0
  17. package/cjs/aggregate/LimitPipeline.js.map +1 -0
  18. package/cjs/aggregate/LookupPipeline.d.ts +19 -0
  19. package/cjs/aggregate/LookupPipeline.d.ts.map +1 -0
  20. package/cjs/aggregate/LookupPipeline.js +19 -0
  21. package/cjs/aggregate/LookupPipeline.js.map +1 -0
  22. package/cjs/aggregate/OrWherePipeline.d.ts +23 -0
  23. package/cjs/aggregate/OrWherePipeline.d.ts.map +1 -0
  24. package/cjs/aggregate/OrWherePipeline.js +42 -0
  25. package/cjs/aggregate/OrWherePipeline.js.map +1 -0
  26. package/cjs/aggregate/SelectPipeline.d.ts +10 -0
  27. package/cjs/aggregate/SelectPipeline.d.ts.map +1 -0
  28. package/cjs/aggregate/SelectPipeline.js +26 -0
  29. package/cjs/aggregate/SelectPipeline.js.map +1 -0
  30. package/cjs/aggregate/SkipPipeline.d.ts +10 -0
  31. package/cjs/aggregate/SkipPipeline.d.ts.map +1 -0
  32. package/cjs/aggregate/SkipPipeline.js +14 -0
  33. package/cjs/aggregate/SkipPipeline.js.map +1 -0
  34. package/cjs/aggregate/SortByPipeline.d.ts +10 -0
  35. package/cjs/aggregate/SortByPipeline.d.ts.map +1 -0
  36. package/cjs/aggregate/SortByPipeline.js +18 -0
  37. package/cjs/aggregate/SortByPipeline.js.map +1 -0
  38. package/cjs/aggregate/SortPipeline.d.ts +11 -0
  39. package/cjs/aggregate/SortPipeline.d.ts.map +1 -0
  40. package/cjs/aggregate/SortPipeline.js +18 -0
  41. package/cjs/aggregate/SortPipeline.js.map +1 -0
  42. package/cjs/aggregate/SortRandomPipeline.d.ts +10 -0
  43. package/cjs/aggregate/SortRandomPipeline.d.ts.map +1 -0
  44. package/cjs/aggregate/SortRandomPipeline.js +16 -0
  45. package/cjs/aggregate/SortRandomPipeline.js.map +1 -0
  46. package/cjs/aggregate/UnwindPipeline.d.ts +14 -0
  47. package/cjs/aggregate/UnwindPipeline.d.ts.map +1 -0
  48. package/cjs/aggregate/UnwindPipeline.js +19 -0
  49. package/cjs/aggregate/UnwindPipeline.js.map +1 -0
  50. package/cjs/aggregate/WhereExpression.d.ts +17 -0
  51. package/cjs/aggregate/WhereExpression.d.ts.map +1 -0
  52. package/cjs/aggregate/WhereExpression.js +149 -0
  53. package/cjs/aggregate/WhereExpression.js.map +1 -0
  54. package/cjs/aggregate/WhereExpressionPipeline.d.ts +10 -0
  55. package/cjs/aggregate/WhereExpressionPipeline.d.ts.map +1 -0
  56. package/cjs/aggregate/WhereExpressionPipeline.js +15 -0
  57. package/cjs/aggregate/WhereExpressionPipeline.js.map +1 -0
  58. package/cjs/aggregate/WherePipeline.d.ts +13 -0
  59. package/cjs/aggregate/WherePipeline.d.ts.map +1 -0
  60. package/cjs/aggregate/WherePipeline.js +12 -0
  61. package/cjs/aggregate/WherePipeline.js.map +1 -0
  62. package/cjs/aggregate/aggregate.d.ts +346 -0
  63. package/cjs/aggregate/aggregate.d.ts.map +1 -0
  64. package/cjs/aggregate/aggregate.js +656 -0
  65. package/cjs/aggregate/aggregate.js.map +1 -0
  66. package/cjs/aggregate/expressions.d.ts +361 -0
  67. package/cjs/aggregate/expressions.d.ts.map +1 -0
  68. package/cjs/aggregate/expressions.js +536 -0
  69. package/cjs/aggregate/expressions.js.map +1 -0
  70. package/cjs/aggregate/index.d.ts +21 -0
  71. package/cjs/aggregate/index.d.ts.map +1 -0
  72. package/cjs/aggregate/parsePipelines.d.ts +5 -0
  73. package/cjs/aggregate/parsePipelines.d.ts.map +1 -0
  74. package/cjs/aggregate/parsePipelines.js +6 -0
  75. package/cjs/aggregate/parsePipelines.js.map +1 -0
  76. package/cjs/aggregate/pipeline.d.ts +31 -0
  77. package/cjs/aggregate/pipeline.d.ts.map +1 -0
  78. package/cjs/aggregate/pipeline.js +42 -0
  79. package/cjs/aggregate/pipeline.js.map +1 -0
  80. package/cjs/aggregate/types.d.ts +8 -0
  81. package/cjs/aggregate/types.d.ts.map +1 -0
  82. package/cjs/aggregate/types.js +31 -0
  83. package/cjs/aggregate/types.js.map +1 -0
  84. package/cjs/blueprint/blueprint.d.ts +154 -0
  85. package/cjs/blueprint/blueprint.d.ts.map +1 -0
  86. package/cjs/blueprint/blueprint.js +328 -0
  87. package/cjs/blueprint/blueprint.js.map +1 -0
  88. package/cjs/blueprint/index.d.ts +3 -0
  89. package/cjs/blueprint/index.d.ts.map +1 -0
  90. package/cjs/blueprint/model-blueprint.d.ts +15 -0
  91. package/cjs/blueprint/model-blueprint.d.ts.map +1 -0
  92. package/cjs/blueprint/model-blueprint.js +16 -0
  93. package/cjs/blueprint/model-blueprint.js.map +1 -0
  94. package/cjs/casts/arrayOf.d.ts +5 -0
  95. package/cjs/casts/arrayOf.d.ts.map +1 -0
  96. package/cjs/casts/arrayOf.js +18 -0
  97. package/cjs/casts/arrayOf.js.map +1 -0
  98. package/cjs/casts/cast-email.d.ts +2 -0
  99. package/cjs/casts/cast-email.d.ts.map +1 -0
  100. package/cjs/casts/cast-email.js +5 -0
  101. package/cjs/casts/cast-email.js.map +1 -0
  102. package/cjs/casts/castModel.d.ts +3 -0
  103. package/cjs/casts/castModel.d.ts.map +1 -0
  104. package/cjs/casts/castModel.js +49 -0
  105. package/cjs/casts/castModel.js.map +1 -0
  106. package/cjs/casts/expiresAfter.d.ts +3 -0
  107. package/cjs/casts/expiresAfter.d.ts.map +1 -0
  108. package/cjs/casts/expiresAfter.js +5 -0
  109. package/cjs/casts/expiresAfter.js.map +1 -0
  110. package/cjs/casts/index.d.ts +9 -0
  111. package/cjs/casts/index.d.ts.map +1 -0
  112. package/cjs/casts/oneOf.d.ts +3 -0
  113. package/cjs/casts/oneOf.d.ts.map +1 -0
  114. package/cjs/casts/oneOf.js +22 -0
  115. package/cjs/casts/oneOf.js.map +1 -0
  116. package/cjs/casts/random-string.d.ts +2 -0
  117. package/cjs/casts/random-string.d.ts.map +1 -0
  118. package/cjs/casts/random-string.js +5 -0
  119. package/cjs/casts/random-string.js.map +1 -0
  120. package/cjs/casts/randomInteger.d.ts +2 -0
  121. package/cjs/casts/randomInteger.d.ts.map +1 -0
  122. package/cjs/casts/randomInteger.js +7 -0
  123. package/cjs/casts/randomInteger.js.map +1 -0
  124. package/cjs/casts/shapedArray.d.ts +26 -0
  125. package/cjs/casts/shapedArray.d.ts.map +1 -0
  126. package/cjs/casts/shapedArray.js +100 -0
  127. package/cjs/casts/shapedArray.js.map +1 -0
  128. package/cjs/config.d.ts +4 -0
  129. package/cjs/config.d.ts.map +1 -0
  130. package/cjs/config.js +10 -0
  131. package/cjs/config.js.map +1 -0
  132. package/cjs/connection.d.ts +44 -0
  133. package/cjs/connection.d.ts.map +1 -0
  134. package/cjs/connection.js +98 -0
  135. package/cjs/connection.js.map +1 -0
  136. package/cjs/console/db-indexes-command.d.ts +3 -0
  137. package/cjs/console/db-indexes-command.d.ts.map +1 -0
  138. package/cjs/console/db-indexes-command.js +18 -0
  139. package/cjs/console/db-indexes-command.js.map +1 -0
  140. package/cjs/console/index.d.ts +4 -0
  141. package/cjs/console/index.d.ts.map +1 -0
  142. package/cjs/console/migrate-command.d.ts +3 -0
  143. package/cjs/console/migrate-command.d.ts.map +1 -0
  144. package/cjs/console/migrate-command.js +14 -0
  145. package/cjs/console/migrate-command.js.map +1 -0
  146. package/cjs/console/register-blueprint-command.d.ts +4 -0
  147. package/cjs/console/register-blueprint-command.d.ts.map +1 -0
  148. package/cjs/console/register-blueprint-command.js +27 -0
  149. package/cjs/console/register-blueprint-command.js.map +1 -0
  150. package/cjs/database.d.ts +49 -0
  151. package/cjs/database.d.ts.map +1 -0
  152. package/cjs/database.js +85 -0
  153. package/cjs/database.js.map +1 -0
  154. package/cjs/index.d.ts +14 -0
  155. package/cjs/index.d.ts.map +1 -0
  156. package/cjs/index.js +1 -0
  157. package/cjs/index.js.map +1 -0
  158. package/cjs/migrate.d.ts +8 -0
  159. package/cjs/migrate.d.ts.map +1 -0
  160. package/cjs/migrate.js +89 -0
  161. package/cjs/migrate.js.map +1 -0
  162. package/cjs/model/ModelAggregate.d.ts +71 -0
  163. package/cjs/model/ModelAggregate.d.ts.map +1 -0
  164. package/cjs/model/ModelAggregate.js +147 -0
  165. package/cjs/model/ModelAggregate.js.map +1 -0
  166. package/cjs/model/ModelSync.d.ts +74 -0
  167. package/cjs/model/ModelSync.d.ts.map +1 -0
  168. package/cjs/model/ModelSync.js +215 -0
  169. package/cjs/model/ModelSync.js.map +1 -0
  170. package/cjs/model/RelationshipWithMany.d.ts +29 -0
  171. package/cjs/model/RelationshipWithMany.d.ts.map +1 -0
  172. package/cjs/model/RelationshipWithMany.js +52 -0
  173. package/cjs/model/RelationshipWithMany.js.map +1 -0
  174. package/cjs/model/base-model.d.ts +148 -0
  175. package/cjs/model/base-model.d.ts.map +1 -0
  176. package/cjs/model/base-model.js +212 -0
  177. package/cjs/model/base-model.js.map +1 -0
  178. package/cjs/model/crud-model.d.ts +117 -0
  179. package/cjs/model/crud-model.d.ts.map +1 -0
  180. package/cjs/model/crud-model.js +346 -0
  181. package/cjs/model/crud-model.js.map +1 -0
  182. package/cjs/model/index.d.ts +11 -0
  183. package/cjs/model/index.d.ts.map +1 -0
  184. package/cjs/model/joinable.d.ts +86 -0
  185. package/cjs/model/joinable.d.ts.map +1 -0
  186. package/cjs/model/joinable.js +155 -0
  187. package/cjs/model/joinable.js.map +1 -0
  188. package/cjs/model/master-mind.d.ts +44 -0
  189. package/cjs/model/master-mind.d.ts.map +1 -0
  190. package/cjs/model/master-mind.js +129 -0
  191. package/cjs/model/master-mind.js.map +1 -0
  192. package/cjs/model/migration-office.d.ts +33 -0
  193. package/cjs/model/migration-office.d.ts.map +1 -0
  194. package/cjs/model/migration-office.js +55 -0
  195. package/cjs/model/migration-office.js.map +1 -0
  196. package/cjs/model/model-events.d.ts +57 -0
  197. package/cjs/model/model-events.d.ts.map +1 -0
  198. package/cjs/model/model-events.js +102 -0
  199. package/cjs/model/model-events.js.map +1 -0
  200. package/cjs/model/model.d.ts +323 -0
  201. package/cjs/model/model.d.ts.map +1 -0
  202. package/cjs/model/model.js +843 -0
  203. package/cjs/model/model.js.map +1 -0
  204. package/cjs/model/relationships.d.ts +69 -0
  205. package/cjs/model/relationships.d.ts.map +1 -0
  206. package/cjs/model/relationships.js +144 -0
  207. package/cjs/model/relationships.js.map +1 -0
  208. package/cjs/model/types.d.ts +113 -0
  209. package/cjs/model/types.d.ts.map +1 -0
  210. package/cjs/model/types.js +11 -0
  211. package/cjs/model/types.js.map +1 -0
  212. package/cjs/models/Log.d.ts +12 -0
  213. package/cjs/models/Log.d.ts.map +1 -0
  214. package/cjs/models/Log.js +16 -0
  215. package/cjs/models/Log.js.map +1 -0
  216. package/cjs/models/index.d.ts +2 -0
  217. package/cjs/models/index.d.ts.map +1 -0
  218. package/cjs/query/index.d.ts +2 -0
  219. package/cjs/query/index.d.ts.map +1 -0
  220. package/cjs/query/query.d.ts +228 -0
  221. package/cjs/query/query.d.ts.map +1 -0
  222. package/cjs/query/query.js +675 -0
  223. package/cjs/query/query.js.map +1 -0
  224. package/cjs/query/types.d.ts +56 -0
  225. package/cjs/query/types.d.ts.map +1 -0
  226. package/cjs/types.d.ts +46 -0
  227. package/cjs/types.d.ts.map +1 -0
  228. package/cjs/utils/DatabaseLog.d.ts +25 -0
  229. package/cjs/utils/DatabaseLog.d.ts.map +1 -0
  230. package/cjs/utils/DatabaseLog.js +41 -0
  231. package/cjs/utils/DatabaseLog.js.map +1 -0
  232. package/cjs/utils/connectToDatabase.d.ts +3 -0
  233. package/cjs/utils/connectToDatabase.d.ts.map +1 -0
  234. package/cjs/utils/connectToDatabase.js +3 -0
  235. package/cjs/utils/connectToDatabase.js.map +1 -0
  236. package/cjs/utils/dropAllDatabaseIndexes.d.ts +2 -0
  237. package/cjs/utils/dropAllDatabaseIndexes.d.ts.map +1 -0
  238. package/cjs/utils/dropAllDatabaseIndexes.js +10 -0
  239. package/cjs/utils/dropAllDatabaseIndexes.js.map +1 -0
  240. package/cjs/utils/index.d.ts +6 -0
  241. package/cjs/utils/index.d.ts.map +1 -0
  242. package/cjs/utils/joinable-proxy.d.ts +3 -0
  243. package/cjs/utils/joinable-proxy.d.ts.map +1 -0
  244. package/cjs/utils/joinable-proxy.js +14 -0
  245. package/cjs/utils/joinable-proxy.js.map +1 -0
  246. package/cjs/utils/listDatabaseIndexes.d.ts +4 -0
  247. package/cjs/utils/listDatabaseIndexes.d.ts.map +1 -0
  248. package/cjs/utils/listDatabaseIndexes.js +101 -0
  249. package/cjs/utils/listDatabaseIndexes.js.map +1 -0
  250. package/cjs/utils/onceConnected.d.ts +2 -0
  251. package/cjs/utils/onceConnected.d.ts.map +1 -0
  252. package/cjs/utils/onceConnected.js +8 -0
  253. package/cjs/utils/onceConnected.js.map +1 -0
  254. package/esm/aggregate/DeselectPipeline.d.ts +10 -0
  255. package/esm/aggregate/DeselectPipeline.d.ts.map +1 -0
  256. package/esm/aggregate/DeselectPipeline.js +17 -0
  257. package/esm/aggregate/DeselectPipeline.js.map +1 -0
  258. package/esm/aggregate/GeoNearPipeline.d.ts +34 -0
  259. package/esm/aggregate/GeoNearPipeline.d.ts.map +1 -0
  260. package/esm/aggregate/GeoNearPipeline.js +44 -0
  261. package/esm/aggregate/GeoNearPipeline.js.map +1 -0
  262. package/esm/aggregate/GroupByPipeline.d.ts +12 -0
  263. package/esm/aggregate/GroupByPipeline.d.ts.map +1 -0
  264. package/esm/aggregate/GroupByPipeline.js +28 -0
  265. package/esm/aggregate/GroupByPipeline.js.map +1 -0
  266. package/esm/aggregate/LimitPipeline.d.ts +10 -0
  267. package/esm/aggregate/LimitPipeline.d.ts.map +1 -0
  268. package/esm/aggregate/LimitPipeline.js +14 -0
  269. package/esm/aggregate/LimitPipeline.js.map +1 -0
  270. package/esm/aggregate/LookupPipeline.d.ts +19 -0
  271. package/esm/aggregate/LookupPipeline.d.ts.map +1 -0
  272. package/esm/aggregate/LookupPipeline.js +19 -0
  273. package/esm/aggregate/LookupPipeline.js.map +1 -0
  274. package/esm/aggregate/OrWherePipeline.d.ts +23 -0
  275. package/esm/aggregate/OrWherePipeline.d.ts.map +1 -0
  276. package/esm/aggregate/OrWherePipeline.js +42 -0
  277. package/esm/aggregate/OrWherePipeline.js.map +1 -0
  278. package/esm/aggregate/SelectPipeline.d.ts +10 -0
  279. package/esm/aggregate/SelectPipeline.d.ts.map +1 -0
  280. package/esm/aggregate/SelectPipeline.js +26 -0
  281. package/esm/aggregate/SelectPipeline.js.map +1 -0
  282. package/esm/aggregate/SkipPipeline.d.ts +10 -0
  283. package/esm/aggregate/SkipPipeline.d.ts.map +1 -0
  284. package/esm/aggregate/SkipPipeline.js +14 -0
  285. package/esm/aggregate/SkipPipeline.js.map +1 -0
  286. package/esm/aggregate/SortByPipeline.d.ts +10 -0
  287. package/esm/aggregate/SortByPipeline.d.ts.map +1 -0
  288. package/esm/aggregate/SortByPipeline.js +18 -0
  289. package/esm/aggregate/SortByPipeline.js.map +1 -0
  290. package/esm/aggregate/SortPipeline.d.ts +11 -0
  291. package/esm/aggregate/SortPipeline.d.ts.map +1 -0
  292. package/esm/aggregate/SortPipeline.js +18 -0
  293. package/esm/aggregate/SortPipeline.js.map +1 -0
  294. package/esm/aggregate/SortRandomPipeline.d.ts +10 -0
  295. package/esm/aggregate/SortRandomPipeline.d.ts.map +1 -0
  296. package/esm/aggregate/SortRandomPipeline.js +16 -0
  297. package/esm/aggregate/SortRandomPipeline.js.map +1 -0
  298. package/esm/aggregate/UnwindPipeline.d.ts +14 -0
  299. package/esm/aggregate/UnwindPipeline.d.ts.map +1 -0
  300. package/esm/aggregate/UnwindPipeline.js +19 -0
  301. package/esm/aggregate/UnwindPipeline.js.map +1 -0
  302. package/esm/aggregate/WhereExpression.d.ts +17 -0
  303. package/esm/aggregate/WhereExpression.d.ts.map +1 -0
  304. package/esm/aggregate/WhereExpression.js +149 -0
  305. package/esm/aggregate/WhereExpression.js.map +1 -0
  306. package/esm/aggregate/WhereExpressionPipeline.d.ts +10 -0
  307. package/esm/aggregate/WhereExpressionPipeline.d.ts.map +1 -0
  308. package/esm/aggregate/WhereExpressionPipeline.js +15 -0
  309. package/esm/aggregate/WhereExpressionPipeline.js.map +1 -0
  310. package/esm/aggregate/WherePipeline.d.ts +13 -0
  311. package/esm/aggregate/WherePipeline.d.ts.map +1 -0
  312. package/esm/aggregate/WherePipeline.js +12 -0
  313. package/esm/aggregate/WherePipeline.js.map +1 -0
  314. package/esm/aggregate/aggregate.d.ts +346 -0
  315. package/esm/aggregate/aggregate.d.ts.map +1 -0
  316. package/esm/aggregate/aggregate.js +656 -0
  317. package/esm/aggregate/aggregate.js.map +1 -0
  318. package/esm/aggregate/expressions.d.ts +361 -0
  319. package/esm/aggregate/expressions.d.ts.map +1 -0
  320. package/esm/aggregate/expressions.js +536 -0
  321. package/esm/aggregate/expressions.js.map +1 -0
  322. package/esm/aggregate/index.d.ts +21 -0
  323. package/esm/aggregate/index.d.ts.map +1 -0
  324. package/esm/aggregate/parsePipelines.d.ts +5 -0
  325. package/esm/aggregate/parsePipelines.d.ts.map +1 -0
  326. package/esm/aggregate/parsePipelines.js +6 -0
  327. package/esm/aggregate/parsePipelines.js.map +1 -0
  328. package/esm/aggregate/pipeline.d.ts +31 -0
  329. package/esm/aggregate/pipeline.d.ts.map +1 -0
  330. package/esm/aggregate/pipeline.js +42 -0
  331. package/esm/aggregate/pipeline.js.map +1 -0
  332. package/esm/aggregate/types.d.ts +8 -0
  333. package/esm/aggregate/types.d.ts.map +1 -0
  334. package/esm/aggregate/types.js +31 -0
  335. package/esm/aggregate/types.js.map +1 -0
  336. package/esm/blueprint/blueprint.d.ts +154 -0
  337. package/esm/blueprint/blueprint.d.ts.map +1 -0
  338. package/esm/blueprint/blueprint.js +328 -0
  339. package/esm/blueprint/blueprint.js.map +1 -0
  340. package/esm/blueprint/index.d.ts +3 -0
  341. package/esm/blueprint/index.d.ts.map +1 -0
  342. package/esm/blueprint/model-blueprint.d.ts +15 -0
  343. package/esm/blueprint/model-blueprint.d.ts.map +1 -0
  344. package/esm/blueprint/model-blueprint.js +16 -0
  345. package/esm/blueprint/model-blueprint.js.map +1 -0
  346. package/esm/casts/arrayOf.d.ts +5 -0
  347. package/esm/casts/arrayOf.d.ts.map +1 -0
  348. package/esm/casts/arrayOf.js +18 -0
  349. package/esm/casts/arrayOf.js.map +1 -0
  350. package/esm/casts/cast-email.d.ts +2 -0
  351. package/esm/casts/cast-email.d.ts.map +1 -0
  352. package/esm/casts/cast-email.js +5 -0
  353. package/esm/casts/cast-email.js.map +1 -0
  354. package/esm/casts/castModel.d.ts +3 -0
  355. package/esm/casts/castModel.d.ts.map +1 -0
  356. package/esm/casts/castModel.js +49 -0
  357. package/esm/casts/castModel.js.map +1 -0
  358. package/esm/casts/expiresAfter.d.ts +3 -0
  359. package/esm/casts/expiresAfter.d.ts.map +1 -0
  360. package/esm/casts/expiresAfter.js +5 -0
  361. package/esm/casts/expiresAfter.js.map +1 -0
  362. package/esm/casts/index.d.ts +9 -0
  363. package/esm/casts/index.d.ts.map +1 -0
  364. package/esm/casts/oneOf.d.ts +3 -0
  365. package/esm/casts/oneOf.d.ts.map +1 -0
  366. package/esm/casts/oneOf.js +22 -0
  367. package/esm/casts/oneOf.js.map +1 -0
  368. package/esm/casts/random-string.d.ts +2 -0
  369. package/esm/casts/random-string.d.ts.map +1 -0
  370. package/esm/casts/random-string.js +5 -0
  371. package/esm/casts/random-string.js.map +1 -0
  372. package/esm/casts/randomInteger.d.ts +2 -0
  373. package/esm/casts/randomInteger.d.ts.map +1 -0
  374. package/esm/casts/randomInteger.js +7 -0
  375. package/esm/casts/randomInteger.js.map +1 -0
  376. package/esm/casts/shapedArray.d.ts +26 -0
  377. package/esm/casts/shapedArray.d.ts.map +1 -0
  378. package/esm/casts/shapedArray.js +100 -0
  379. package/esm/casts/shapedArray.js.map +1 -0
  380. package/esm/config.d.ts +4 -0
  381. package/esm/config.d.ts.map +1 -0
  382. package/esm/config.js +10 -0
  383. package/esm/config.js.map +1 -0
  384. package/esm/connection.d.ts +44 -0
  385. package/esm/connection.d.ts.map +1 -0
  386. package/esm/connection.js +98 -0
  387. package/esm/connection.js.map +1 -0
  388. package/esm/console/db-indexes-command.d.ts +3 -0
  389. package/esm/console/db-indexes-command.d.ts.map +1 -0
  390. package/esm/console/db-indexes-command.js +18 -0
  391. package/esm/console/db-indexes-command.js.map +1 -0
  392. package/esm/console/index.d.ts +4 -0
  393. package/esm/console/index.d.ts.map +1 -0
  394. package/esm/console/migrate-command.d.ts +3 -0
  395. package/esm/console/migrate-command.d.ts.map +1 -0
  396. package/esm/console/migrate-command.js +14 -0
  397. package/esm/console/migrate-command.js.map +1 -0
  398. package/esm/console/register-blueprint-command.d.ts +4 -0
  399. package/esm/console/register-blueprint-command.d.ts.map +1 -0
  400. package/esm/console/register-blueprint-command.js +27 -0
  401. package/esm/console/register-blueprint-command.js.map +1 -0
  402. package/esm/database.d.ts +49 -0
  403. package/esm/database.d.ts.map +1 -0
  404. package/esm/database.js +85 -0
  405. package/esm/database.js.map +1 -0
  406. package/esm/index.d.ts +14 -0
  407. package/esm/index.d.ts.map +1 -0
  408. package/esm/index.js +1 -0
  409. package/esm/index.js.map +1 -0
  410. package/esm/migrate.d.ts +8 -0
  411. package/esm/migrate.d.ts.map +1 -0
  412. package/esm/migrate.js +89 -0
  413. package/esm/migrate.js.map +1 -0
  414. package/esm/model/ModelAggregate.d.ts +71 -0
  415. package/esm/model/ModelAggregate.d.ts.map +1 -0
  416. package/esm/model/ModelAggregate.js +147 -0
  417. package/esm/model/ModelAggregate.js.map +1 -0
  418. package/esm/model/ModelSync.d.ts +74 -0
  419. package/esm/model/ModelSync.d.ts.map +1 -0
  420. package/esm/model/ModelSync.js +215 -0
  421. package/esm/model/ModelSync.js.map +1 -0
  422. package/esm/model/RelationshipWithMany.d.ts +29 -0
  423. package/esm/model/RelationshipWithMany.d.ts.map +1 -0
  424. package/esm/model/RelationshipWithMany.js +52 -0
  425. package/esm/model/RelationshipWithMany.js.map +1 -0
  426. package/esm/model/base-model.d.ts +148 -0
  427. package/esm/model/base-model.d.ts.map +1 -0
  428. package/esm/model/base-model.js +212 -0
  429. package/esm/model/base-model.js.map +1 -0
  430. package/esm/model/crud-model.d.ts +117 -0
  431. package/esm/model/crud-model.d.ts.map +1 -0
  432. package/esm/model/crud-model.js +346 -0
  433. package/esm/model/crud-model.js.map +1 -0
  434. package/esm/model/index.d.ts +11 -0
  435. package/esm/model/index.d.ts.map +1 -0
  436. package/esm/model/joinable.d.ts +86 -0
  437. package/esm/model/joinable.d.ts.map +1 -0
  438. package/esm/model/joinable.js +155 -0
  439. package/esm/model/joinable.js.map +1 -0
  440. package/esm/model/master-mind.d.ts +44 -0
  441. package/esm/model/master-mind.d.ts.map +1 -0
  442. package/esm/model/master-mind.js +129 -0
  443. package/esm/model/master-mind.js.map +1 -0
  444. package/esm/model/migration-office.d.ts +33 -0
  445. package/esm/model/migration-office.d.ts.map +1 -0
  446. package/esm/model/migration-office.js +55 -0
  447. package/esm/model/migration-office.js.map +1 -0
  448. package/esm/model/model-events.d.ts +57 -0
  449. package/esm/model/model-events.d.ts.map +1 -0
  450. package/esm/model/model-events.js +102 -0
  451. package/esm/model/model-events.js.map +1 -0
  452. package/esm/model/model.d.ts +323 -0
  453. package/esm/model/model.d.ts.map +1 -0
  454. package/esm/model/model.js +843 -0
  455. package/esm/model/model.js.map +1 -0
  456. package/esm/model/relationships.d.ts +69 -0
  457. package/esm/model/relationships.d.ts.map +1 -0
  458. package/esm/model/relationships.js +144 -0
  459. package/esm/model/relationships.js.map +1 -0
  460. package/esm/model/types.d.ts +113 -0
  461. package/esm/model/types.d.ts.map +1 -0
  462. package/esm/model/types.js +11 -0
  463. package/esm/model/types.js.map +1 -0
  464. package/esm/models/Log.d.ts +12 -0
  465. package/esm/models/Log.d.ts.map +1 -0
  466. package/esm/models/Log.js +16 -0
  467. package/esm/models/Log.js.map +1 -0
  468. package/esm/models/index.d.ts +2 -0
  469. package/esm/models/index.d.ts.map +1 -0
  470. package/esm/query/index.d.ts +2 -0
  471. package/esm/query/index.d.ts.map +1 -0
  472. package/esm/query/query.d.ts +228 -0
  473. package/esm/query/query.d.ts.map +1 -0
  474. package/esm/query/query.js +675 -0
  475. package/esm/query/query.js.map +1 -0
  476. package/esm/query/types.d.ts +56 -0
  477. package/esm/query/types.d.ts.map +1 -0
  478. package/esm/types.d.ts +46 -0
  479. package/esm/types.d.ts.map +1 -0
  480. package/esm/utils/DatabaseLog.d.ts +25 -0
  481. package/esm/utils/DatabaseLog.d.ts.map +1 -0
  482. package/esm/utils/DatabaseLog.js +41 -0
  483. package/esm/utils/DatabaseLog.js.map +1 -0
  484. package/esm/utils/connectToDatabase.d.ts +3 -0
  485. package/esm/utils/connectToDatabase.d.ts.map +1 -0
  486. package/esm/utils/connectToDatabase.js +3 -0
  487. package/esm/utils/connectToDatabase.js.map +1 -0
  488. package/esm/utils/dropAllDatabaseIndexes.d.ts +2 -0
  489. package/esm/utils/dropAllDatabaseIndexes.d.ts.map +1 -0
  490. package/esm/utils/dropAllDatabaseIndexes.js +10 -0
  491. package/esm/utils/dropAllDatabaseIndexes.js.map +1 -0
  492. package/esm/utils/index.d.ts +6 -0
  493. package/esm/utils/index.d.ts.map +1 -0
  494. package/esm/utils/joinable-proxy.d.ts +3 -0
  495. package/esm/utils/joinable-proxy.d.ts.map +1 -0
  496. package/esm/utils/joinable-proxy.js +14 -0
  497. package/esm/utils/joinable-proxy.js.map +1 -0
  498. package/esm/utils/listDatabaseIndexes.d.ts +4 -0
  499. package/esm/utils/listDatabaseIndexes.d.ts.map +1 -0
  500. package/esm/utils/listDatabaseIndexes.js +101 -0
  501. package/esm/utils/listDatabaseIndexes.js.map +1 -0
  502. package/esm/utils/onceConnected.d.ts +2 -0
  503. package/esm/utils/onceConnected.d.ts.map +1 -0
  504. package/esm/utils/onceConnected.js +8 -0
  505. package/esm/utils/onceConnected.js.map +1 -0
  506. package/package.json +61 -0
@@ -0,0 +1,117 @@
1
+ import { BaseModel } from "./base-model";
2
+ import { ChildModel, ChunkCallback, Document, Filter, FindOrCreateOptions, PaginationListing, PrimaryIdType } from "./types";
3
+ export declare abstract class CrudModel extends BaseModel {
4
+ /**
5
+ * Create a new record in the database for the current model (child class of this one)
6
+ * and return a new instance of it with the created data and the new generated id
7
+ */
8
+ static create<T>(this: ChildModel<T>, data: Document): Promise<T>;
9
+ /**
10
+ * Called before creating a new record
11
+ */
12
+ protected beforeCreating<T>(this: ChildModel<T>, _data: Document): Promise<void>;
13
+ /**
14
+ * Called after creating a new record
15
+ */
16
+ protected onCreate<T>(this: ChildModel<T>): Promise<void>;
17
+ /**
18
+ * Update model by the given id
19
+ */
20
+ static update<T>(this: ChildModel<T>, id: PrimaryIdType, data: Document): Promise<T | null>;
21
+ /**
22
+ * Replace the entire document for the given document id with the given new data
23
+ */
24
+ static replace<T>(this: ChildModel<T>, id: PrimaryIdType, data: Document): Promise<T | null>;
25
+ /**
26
+ * Restore the document from trash
27
+ */
28
+ static restore<T>(this: ChildModel<T>, id: PrimaryIdType): Promise<T | null>;
29
+ /**
30
+ * Restore all documents from trash or by the given filter
31
+ */
32
+ static restoreAll<T>(this: ChildModel<T>, filter?: Filter): Promise<any>;
33
+ /**
34
+ * Get deleted document by id
35
+ */
36
+ static getDeleted<T>(this: ChildModel<T>, id: PrimaryIdType): Promise<T | null>;
37
+ /**
38
+ * Get all deleted documents
39
+ */
40
+ static getAllDeleted<T>(this: ChildModel<T>, filter?: Filter): Promise<any>;
41
+ /**
42
+ * Find and update the document for the given filter with the given data or create a new document/record
43
+ * if filter has no matching
44
+ */
45
+ static upsert<T>(this: ChildModel<T>, filter: Filter, data: Document): Promise<T>;
46
+ /**
47
+ * Find document by id
48
+ */
49
+ static find<T>(this: ChildModel<T>, id: PrimaryIdType): Promise<T>;
50
+ /**
51
+ * Find document by the given column and value
52
+ */
53
+ static findBy<T>(this: ChildModel<T>, column: string, value: any): Promise<T | null>;
54
+ /**
55
+ * Create an explain plan for the given filter
56
+ */
57
+ static explain<T>(this: ChildModel<T>, filter?: Filter): Promise<any>;
58
+ /**
59
+ * List multiple documents based on the given filter
60
+ */
61
+ static list<T>(this: ChildModel<T>, filter?: Filter): Promise<T[]>;
62
+ /**
63
+ * Paginate records based on the given filter
64
+ */
65
+ static paginate<T>(this: ChildModel<T>, filter: Filter, page?: number, limit?: number): Promise<PaginationListing<T>>;
66
+ /**
67
+ * Find or create a new document based on the given filter and data
68
+ * If the document is not found, it will be created
69
+ * otherwise, just return the found document
70
+ */
71
+ static findOrCreate<T>(this: ChildModel<T>, filter: Filter, data: Document, { merge }?: FindOrCreateOptions): Promise<T>;
72
+ /**
73
+ * Update or create a new document based on the given filter and data
74
+ */
75
+ static updateOrCreate<T>(this: ChildModel<T>, filter: Filter, data: Document): Promise<T>;
76
+ /**
77
+ * Count total documents based on the given filter
78
+ */
79
+ static count(filter?: Filter): Promise<any>;
80
+ /**
81
+ * Get first model for the given filter
82
+ */
83
+ static first<T>(this: ChildModel<T>, filter?: Filter): Promise<T | null>;
84
+ /**
85
+ * Get last model for the given filter
86
+ */
87
+ static last<T>(this: ChildModel<T>, filter?: Filter): Promise<T | null>;
88
+ /**
89
+ * Get latest documents
90
+ */
91
+ static latest<T>(this: ChildModel<T>, filter?: Filter): Promise<T[]>;
92
+ /**
93
+ * Delete single document if the given filter is an ObjectId of mongodb
94
+ * Otherwise, delete multiple documents based on the given filter object
95
+ */
96
+ static delete<T>(this: ChildModel<T>, filter?: PrimaryIdType | Filter): Promise<number>;
97
+ /**
98
+ * Chunk the documents
99
+ */
100
+ static chunk<T>(this: ChildModel<T>, limit: number, callback: ChunkCallback<T>): Promise<void>;
101
+ static chunk<T>(this: ChildModel<T>, filter: Filter & {
102
+ limit: number;
103
+ }, callback: ChunkCallback<T>): Promise<void>;
104
+ /**
105
+ * Check if document exists for the given filter
106
+ */
107
+ static exists<T>(this: ChildModel<T>, filter?: Filter): Promise<boolean>;
108
+ /**
109
+ * Get distinct values for the given column
110
+ */
111
+ static distinct<T>(this: ChildModel<T>, column: string, filter?: Filter): Promise<any[]>;
112
+ /**
113
+ * Prepare filters
114
+ */
115
+ protected static prepareFilters(filters?: Filter): Promise<Filter>;
116
+ }
117
+ //# sourceMappingURL=crud-model.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"crud-model.d.ts","sourceRoot":"","sources":["../../src/model/crud-model.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,346 @@
1
+ 'use strict';var mongodb=require('mongodb'),baseModel=require('./base-model.js'),types=require('./types.js');class CrudModel extends baseModel.BaseModel {
2
+ /**
3
+ * Create a new record in the database for the current model (child class of this one)
4
+ * and return a new instance of it with the created data and the new generated id
5
+ */
6
+ static async create(data) {
7
+ const model = this.self(data); // get new instance of model
8
+ // save the model, and generate the proper columns needed
9
+ await model.beforeCreating(data);
10
+ await model.save();
11
+ await model.onCreate();
12
+ return model;
13
+ }
14
+ /**
15
+ * Called before creating a new record
16
+ */
17
+ async beforeCreating(_data) {
18
+ //
19
+ }
20
+ /**
21
+ * Called after creating a new record
22
+ */
23
+ async onCreate() {
24
+ //
25
+ }
26
+ /**
27
+ * Update model by the given id
28
+ */
29
+ static async update(id, data) {
30
+ const model = (await this.find(id));
31
+ // execute the update operation
32
+ if (!model)
33
+ return null;
34
+ await model.save(data);
35
+ return model;
36
+ }
37
+ /**
38
+ * Replace the entire document for the given document id with the given new data
39
+ */
40
+ static async replace(id, data) {
41
+ const model = (await this.find(id));
42
+ if (!model)
43
+ return null;
44
+ model.replaceWith(data);
45
+ await model.save();
46
+ return model;
47
+ }
48
+ /**
49
+ * Restore the document from trash
50
+ */
51
+ static async restore(id) {
52
+ const deleteStrategy = this.deleteStrategy;
53
+ if (deleteStrategy === types.ModelDeleteStrategy.softDelete) {
54
+ const model = await this.query.first(this.collection, {
55
+ id,
56
+ });
57
+ if (!model)
58
+ return null;
59
+ model.unset("deletedAt");
60
+ await model.save();
61
+ return model;
62
+ }
63
+ // retrieve the document from trash collection
64
+ const result = await this.query.first(this.collection + "Trash", await this.prepareFilters({
65
+ [this.primaryIdColumn]: id,
66
+ }));
67
+ if (!result)
68
+ return null;
69
+ const document = result.document;
70
+ // otherwise, create a new model with it
71
+ document.restoredAt = new Date();
72
+ const model = this.self(document);
73
+ model.unset("deletedAt");
74
+ model.markAsRestored();
75
+ await model.save(); // save again in the same collection
76
+ return model;
77
+ }
78
+ /**
79
+ * Restore all documents from trash or by the given filter
80
+ */
81
+ static async restoreAll(filter) {
82
+ const deleteStrategy = this.deleteStrategy;
83
+ if (deleteStrategy === types.ModelDeleteStrategy.softDelete) {
84
+ const models = await this.query.list(this.collection, filter);
85
+ for (const model of models) {
86
+ model.unset("deletedAt");
87
+ if (model.id) {
88
+ model.set("id", Number(model.id));
89
+ }
90
+ await model.save();
91
+ }
92
+ return models;
93
+ }
94
+ if (filter) {
95
+ for (const key in filter) {
96
+ filter[`document.` + key] = filter[key];
97
+ delete filter[key];
98
+ }
99
+ }
100
+ const documents = await this.query.list(this.collection + "Trash", filter);
101
+ const models = [];
102
+ for (const document of documents) {
103
+ const model = this.self(document.document);
104
+ if (model.id) {
105
+ model.set("id", Number(model.id));
106
+ }
107
+ model.unset("deletedAt");
108
+ model.markAsRestored();
109
+ await model.save();
110
+ models.push(model);
111
+ }
112
+ return models;
113
+ }
114
+ /**
115
+ * Get deleted document by id
116
+ */
117
+ static async getDeleted(id) {
118
+ const deleteStrategy = this.deleteStrategy;
119
+ if (deleteStrategy === types.ModelDeleteStrategy.softDelete) {
120
+ const model = await this.query.first(this.collection, {
121
+ id,
122
+ });
123
+ if (!model)
124
+ return null;
125
+ return model;
126
+ }
127
+ const result = await this.query.first(this.collection + "Trash", await this.prepareFilters({
128
+ [this.primaryIdColumn]: id,
129
+ }));
130
+ if (!result)
131
+ return null;
132
+ const document = result.document;
133
+ // otherwise, create a new model with it
134
+ const model = this.self(document);
135
+ return model;
136
+ }
137
+ /**
138
+ * Get all deleted documents
139
+ */
140
+ static async getAllDeleted(filter) {
141
+ const deleteStrategy = this.deleteStrategy;
142
+ if (deleteStrategy === types.ModelDeleteStrategy.softDelete) {
143
+ return await this.query.list(this.collection, filter);
144
+ }
145
+ if (filter) {
146
+ for (const key in filter) {
147
+ filter[`document.` + key] = filter[key];
148
+ delete filter[key];
149
+ }
150
+ }
151
+ const documents = await this.query.list(this.collection + "Trash", filter);
152
+ const models = [];
153
+ for (const document of documents) {
154
+ const model = this.self(document.document);
155
+ models.push(model);
156
+ }
157
+ return models;
158
+ }
159
+ /**
160
+ * Find and update the document for the given filter with the given data or create a new document/record
161
+ * if filter has no matching
162
+ */
163
+ static async upsert(filter, data) {
164
+ filter = await this.prepareFilters(filter);
165
+ let model = (await this.first(filter));
166
+ if (!model) {
167
+ model = this.self(data);
168
+ }
169
+ else {
170
+ model.merge(data);
171
+ }
172
+ await model.save();
173
+ return model;
174
+ }
175
+ /**
176
+ * Find document by id
177
+ */
178
+ static async find(id) {
179
+ return this.findBy(this.primaryIdColumn, Number(id));
180
+ }
181
+ /**
182
+ * Find document by the given column and value
183
+ */
184
+ static async findBy(column, value) {
185
+ const result = await this.query.first(this.collection, await this.prepareFilters({
186
+ [column]: value,
187
+ }));
188
+ return result ? this.self(result) : null;
189
+ }
190
+ /**
191
+ * Create an explain plan for the given filter
192
+ */
193
+ static async explain(filter = {}) {
194
+ return await this.query.explain(this.collection, await this.prepareFilters(filter));
195
+ }
196
+ /**
197
+ * List multiple documents based on the given filter
198
+ */
199
+ static async list(filter = {}) {
200
+ const documents = await this.query.list(this.collection, await this.prepareFilters(filter));
201
+ return documents.map(document => this.self(document));
202
+ }
203
+ /**
204
+ * Paginate records based on the given filter
205
+ */
206
+ static async paginate(filter, page = 1, limit = 15) {
207
+ filter = await this.prepareFilters(filter);
208
+ const documents = await this.query.list(this.collection, filter, query => {
209
+ query.skip((page - 1) * limit).limit(limit);
210
+ });
211
+ const totalDocumentsOfFilter = await this.query.count(this.collection, filter);
212
+ const result = {
213
+ documents: documents.map(document => this.self(document)),
214
+ paginationInfo: {
215
+ limit,
216
+ page,
217
+ result: documents.length,
218
+ total: totalDocumentsOfFilter,
219
+ pages: Math.ceil(totalDocumentsOfFilter / limit),
220
+ },
221
+ };
222
+ return result;
223
+ }
224
+ /**
225
+ * Find or create a new document based on the given filter and data
226
+ * If the document is not found, it will be created
227
+ * otherwise, just return the found document
228
+ */
229
+ static async findOrCreate(filter, data, { merge = true } = {}) {
230
+ filter = await this.prepareFilters(filter);
231
+ let model = (await this.first(filter));
232
+ if (!model) {
233
+ model = this.self({
234
+ ...(merge ? filter : {}),
235
+ ...data,
236
+ });
237
+ await model.save();
238
+ }
239
+ return model;
240
+ }
241
+ /**
242
+ * Update or create a new document based on the given filter and data
243
+ */
244
+ static async updateOrCreate(filter, data) {
245
+ filter = await this.prepareFilters(filter);
246
+ let model = (await this.first(filter));
247
+ if (!model) {
248
+ model = this.self(data);
249
+ }
250
+ else {
251
+ model.merge(data);
252
+ }
253
+ await model.save();
254
+ return model;
255
+ }
256
+ /**
257
+ * Count total documents based on the given filter
258
+ */
259
+ static async count(filter = {}) {
260
+ return await this.query.count(this.collection, await this.prepareFilters(filter));
261
+ }
262
+ /**
263
+ * Get first model for the given filter
264
+ */
265
+ static async first(filter = {}) {
266
+ const result = await this.query.first(this.collection, await this.prepareFilters(filter));
267
+ return result ? this.self(result) : null;
268
+ }
269
+ /**
270
+ * Get last model for the given filter
271
+ */
272
+ static async last(filter = {}) {
273
+ const result = await this.query.last(this.collection, await this.prepareFilters(filter));
274
+ return result ? this.self(result) : null;
275
+ }
276
+ /**
277
+ * Get latest documents
278
+ */
279
+ static async latest(filter = {}) {
280
+ const documents = await this.query.latest(this.collection, await this.prepareFilters(filter));
281
+ return documents.map(document => this.self(document));
282
+ }
283
+ /**
284
+ * Delete single document if the given filter is an ObjectId of mongodb
285
+ * Otherwise, delete multiple documents based on the given filter object
286
+ */
287
+ static async delete(filter = {}) {
288
+ if (filter instanceof mongodb.ObjectId ||
289
+ typeof filter === "string" ||
290
+ typeof filter === "number") {
291
+ return (await this.query.deleteOne(this.collection, await this.prepareFilters({
292
+ [this.primaryIdColumn]: filter,
293
+ })))
294
+ ? 1
295
+ : 0;
296
+ }
297
+ filter = await this.prepareFilters(filter);
298
+ return await this.query.delete(this.collection, filter);
299
+ }
300
+ static async chunk(limitOrFilter, callback) {
301
+ let limit = limitOrFilter;
302
+ let filter = {};
303
+ if (typeof limitOrFilter === "object") {
304
+ limit = limitOrFilter.limit;
305
+ delete limitOrFilter.limit;
306
+ filter = limitOrFilter;
307
+ }
308
+ const totalDocumentsOfFilter = await this.query.count(this.collection, filter);
309
+ const totalPages = Math.ceil(totalDocumentsOfFilter / limit);
310
+ for (let page = 1; page <= totalPages; page++) {
311
+ const result = await this.paginate(filter, page, limit);
312
+ const output = await callback(result.documents, result.paginationInfo);
313
+ if (output === false)
314
+ return;
315
+ }
316
+ }
317
+ /**
318
+ * Check if document exists for the given filter
319
+ */
320
+ static async exists(filter = {}) {
321
+ return await this.query.exists(this.collection, await this.prepareFilters(filter));
322
+ }
323
+ /**
324
+ * Get distinct values for the given column
325
+ */
326
+ static async distinct(column, filter = {}) {
327
+ return await this.query.distinct(this.collection, column, await this.prepareFilters(filter));
328
+ }
329
+ /**
330
+ * Prepare filters
331
+ */
332
+ static async prepareFilters(filters = {}) {
333
+ // if filter contains _id and it is a string, convert it to ObjectId
334
+ if (filters._id && typeof filters._id === "string") {
335
+ filters._id = new mongodb.ObjectId(filters._id);
336
+ }
337
+ const deleteStrategy = this.deleteStrategy;
338
+ if (deleteStrategy === types.ModelDeleteStrategy.softDelete &&
339
+ !filters.withDeleted) {
340
+ filters.deletedAt = null;
341
+ }
342
+ await this.events().trigger("fetching", this, filters);
343
+ await baseModel.BaseModel.events().trigger("fetching", this, filters);
344
+ return filters;
345
+ }
346
+ }exports.CrudModel=CrudModel;//# sourceMappingURL=crud-model.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"crud-model.js","sources":["../../src/model/crud-model.ts"],"sourcesContent":[null],"names":["BaseModel","ModelDeleteStrategy","ObjectId"],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ export * from "./ModelAggregate";
2
+ export * from "./ModelSync";
3
+ export * from "./base-model";
4
+ export * from "./crud-model";
5
+ export * from "./joinable";
6
+ export * from "./master-mind";
7
+ export * from "./migration-office";
8
+ export * from "./model";
9
+ export * from "./relationships";
10
+ export * from "./types";
11
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/model/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC;AACjC,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,oBAAoB,CAAC;AACnC,cAAc,SAAS,CAAC;AACxB,cAAc,iBAAiB,CAAC;AAChC,cAAc,SAAS,CAAC"}
@@ -0,0 +1,86 @@
1
+ import { GenericObject } from "@mongez/reinforcements";
2
+ import { Aggregate, LookupPipelineOptions, Pipeline } from "../aggregate";
3
+ import { Model } from "../model";
4
+ export type JoinableProxy = Joinable & Aggregate;
5
+ export type ReturnAsCallback = (data: any | any[]) => any;
6
+ export declare class Joinable {
7
+ model: typeof Model;
8
+ /**
9
+ * Lookup data
10
+ */
11
+ protected lookupData: LookupPipelineOptions;
12
+ /**
13
+ * Whether to return the data in model
14
+ */
15
+ isInModel: boolean;
16
+ /**
17
+ * Return data as callback
18
+ */
19
+ protected returnAsCallback: ReturnAsCallback;
20
+ /**
21
+ * Aggregate instance
22
+ */
23
+ query: Aggregate;
24
+ /**
25
+ * Constructor
26
+ * The Joined Model
27
+ */
28
+ constructor(model: typeof Model);
29
+ /**
30
+ * Set the return as callback
31
+ */
32
+ returnAs(callback: ReturnAsCallback): this;
33
+ /**
34
+ * Get return as callback
35
+ */
36
+ getReturnAs(): ReturnAsCallback;
37
+ /**
38
+ * Return data in model
39
+ */
40
+ inModel(inModel?: boolean): this;
41
+ /**
42
+ * Set the local field
43
+ */
44
+ localField(localField: string): this;
45
+ /**
46
+ * Get value from lookup data
47
+ */
48
+ get(key: keyof LookupPipelineOptions, defaultValue?: any): any;
49
+ /**
50
+ * Set the foreign field
51
+ */
52
+ foreignField(foreignField: string): this;
53
+ /**
54
+ * Set the as field
55
+ */
56
+ as(as: string): this;
57
+ /**
58
+ * Wether to return a single document or an array
59
+ */
60
+ single(single?: boolean): this;
61
+ /**
62
+ * Set the pipeline
63
+ */
64
+ addPipeline(pipeline: (Pipeline | GenericObject)[]): this;
65
+ /**
66
+ * Add let
67
+ */
68
+ let(letData: LookupPipelineOptions["let"]): this;
69
+ /**
70
+ * Set all lookup data
71
+ */
72
+ set(data: LookupPipelineOptions): this;
73
+ /**
74
+ * Parse the lookup data
75
+ */
76
+ parse(): Required<LookupPipelineOptions>;
77
+ /**
78
+ * Reset the pipelines
79
+ */
80
+ reset(): void;
81
+ /**
82
+ * Clone the current instance
83
+ */
84
+ clone(): Joinable;
85
+ }
86
+ //# sourceMappingURL=joinable.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"joinable.d.ts","sourceRoot":"","sources":["../../src/model/joinable.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAEvD,OAAO,EAAE,SAAS,EAAE,qBAAqB,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAC1E,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AAEjC,MAAM,MAAM,aAAa,GAAG,QAAQ,GAAG,SAAS,CAAC;AAEjD,MAAM,MAAM,gBAAgB,GAAG,CAAC,IAAI,EAAE,GAAG,GAAG,GAAG,EAAE,KAAK,GAAG,CAAC;AAE1D,qBAAa,QAAQ;IAuCO,KAAK,EAAE,OAAO,KAAK;IAtC7C;;OAEG;IACH,SAAS,CAAC,UAAU,EAAE,qBAAqB,CAMzC;IAEF;;OAEG;IACI,SAAS,UAAS;IAEzB;;OAEG;IACH,SAAS,CAAC,gBAAgB,EAAE,gBAAgB,CAQ1C;IAEF;;OAEG;IACI,KAAK,EAAE,SAAS,CAAC;IAExB;;;OAGG;gBACuB,KAAK,EAAE,OAAO,KAAK;IAK7C;;OAEG;IACI,QAAQ,CAAC,QAAQ,EAAE,gBAAgB;IAM1C;;OAEG;IACI,WAAW;IAIlB;;OAEG;IACI,OAAO,CAAC,OAAO,UAAO;IAM7B;;OAEG;IACI,UAAU,CAAC,UAAU,EAAE,MAAM;IAMpC;;OAEG;IACI,GAAG,CAAC,GAAG,EAAE,MAAM,qBAAqB,EAAE,YAAY,CAAC,EAAE,GAAG;IAI/D;;OAEG;IACI,YAAY,CAAC,YAAY,EAAE,MAAM;IAMxC;;OAEG;IACI,EAAE,CAAC,EAAE,EAAE,MAAM;IAMpB;;OAEG;IACI,MAAM,CAAC,MAAM,UAAO;IAM3B;;OAEG;IACI,WAAW,CAAC,QAAQ,EAAE,CAAC,QAAQ,GAAG,aAAa,CAAC,EAAE;IAKzD;;OAEG;IACI,GAAG,CAAC,OAAO,EAAE,qBAAqB,CAAC,KAAK,CAAC;IAMhD;;OAEG;IACI,GAAG,CAAC,IAAI,EAAE,qBAAqB;IAUtC;;OAEG;IACI,KAAK;IAuBZ;;OAEG;IACI,KAAK;IAIZ;;OAEG;IACI,KAAK;CAab"}