@digitaldefiance/node-express-suite-mongo 4.23.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 (390) hide show
  1. package/README.md +152 -0
  2. package/package.json +51 -0
  3. package/src/__tests__/fixtures/index.d.ts +2 -0
  4. package/src/__tests__/fixtures/index.d.ts.map +1 -0
  5. package/src/__tests__/fixtures/index.js +5 -0
  6. package/src/__tests__/fixtures/index.js.map +1 -0
  7. package/src/__tests__/fixtures/model-mocks.mock.d.ts +12 -0
  8. package/src/__tests__/fixtures/model-mocks.mock.d.ts.map +1 -0
  9. package/src/__tests__/fixtures/model-mocks.mock.js +102 -0
  10. package/src/__tests__/fixtures/model-mocks.mock.js.map +1 -0
  11. package/src/__tests__/helpers/application.mock.d.ts +4 -0
  12. package/src/__tests__/helpers/application.mock.d.ts.map +1 -0
  13. package/src/__tests__/helpers/application.mock.js +35 -0
  14. package/src/__tests__/helpers/application.mock.js.map +1 -0
  15. package/src/__tests__/helpers/index.d.ts +5 -0
  16. package/src/__tests__/helpers/index.d.ts.map +1 -0
  17. package/src/__tests__/helpers/index.js +8 -0
  18. package/src/__tests__/helpers/index.js.map +1 -0
  19. package/src/__tests__/helpers/mongoose-memory.d.ts +14 -0
  20. package/src/__tests__/helpers/mongoose-memory.d.ts.map +1 -0
  21. package/src/__tests__/helpers/mongoose-memory.js +49 -0
  22. package/src/__tests__/helpers/mongoose-memory.js.map +1 -0
  23. package/src/__tests__/helpers/setup-test-env.d.ts +13 -0
  24. package/src/__tests__/helpers/setup-test-env.d.ts.map +1 -0
  25. package/src/__tests__/helpers/setup-test-env.js +131 -0
  26. package/src/__tests__/helpers/setup-test-env.js.map +1 -0
  27. package/src/__tests__/index.d.ts +3 -0
  28. package/src/__tests__/index.d.ts.map +1 -0
  29. package/src/__tests__/index.js +6 -0
  30. package/src/__tests__/index.js.map +1 -0
  31. package/src/builders/application-builder.d.ts +38 -0
  32. package/src/builders/application-builder.d.ts.map +1 -0
  33. package/src/builders/application-builder.js +82 -0
  34. package/src/builders/application-builder.js.map +1 -0
  35. package/src/builders/index.d.ts +2 -0
  36. package/src/builders/index.d.ts.map +1 -0
  37. package/src/builders/index.js +5 -0
  38. package/src/builders/index.js.map +1 -0
  39. package/src/controllers/index.d.ts +3 -0
  40. package/src/controllers/index.d.ts.map +1 -0
  41. package/src/controllers/index.js +6 -0
  42. package/src/controllers/index.js.map +1 -0
  43. package/src/controllers/mongo-base.d.ts +55 -0
  44. package/src/controllers/mongo-base.d.ts.map +1 -0
  45. package/src/controllers/mongo-base.js +108 -0
  46. package/src/controllers/mongo-base.js.map +1 -0
  47. package/src/controllers/user.d.ts +61 -0
  48. package/src/controllers/user.d.ts.map +1 -0
  49. package/src/controllers/user.js +944 -0
  50. package/src/controllers/user.js.map +1 -0
  51. package/src/documents/base.d.ts +15 -0
  52. package/src/documents/base.d.ts.map +1 -0
  53. package/src/documents/base.js +8 -0
  54. package/src/documents/base.js.map +1 -0
  55. package/src/documents/email-token.d.ts +15 -0
  56. package/src/documents/email-token.d.ts.map +1 -0
  57. package/src/documents/email-token.js +8 -0
  58. package/src/documents/email-token.js.map +1 -0
  59. package/src/documents/index.d.ts +8 -0
  60. package/src/documents/index.d.ts.map +1 -0
  61. package/src/documents/index.js +3 -0
  62. package/src/documents/index.js.map +1 -0
  63. package/src/documents/mnemonic.d.ts +16 -0
  64. package/src/documents/mnemonic.d.ts.map +1 -0
  65. package/src/documents/mnemonic.js +8 -0
  66. package/src/documents/mnemonic.js.map +1 -0
  67. package/src/documents/role.d.ts +15 -0
  68. package/src/documents/role.d.ts.map +1 -0
  69. package/src/documents/role.js +8 -0
  70. package/src/documents/role.js.map +1 -0
  71. package/src/documents/used-direct-login-token.d.ts +16 -0
  72. package/src/documents/used-direct-login-token.d.ts.map +1 -0
  73. package/src/documents/used-direct-login-token.js +8 -0
  74. package/src/documents/used-direct-login-token.js.map +1 -0
  75. package/src/documents/user-role.d.ts +16 -0
  76. package/src/documents/user-role.d.ts.map +1 -0
  77. package/src/documents/user-role.js +8 -0
  78. package/src/documents/user-role.js.map +1 -0
  79. package/src/documents/user.d.ts +16 -0
  80. package/src/documents/user.d.ts.map +1 -0
  81. package/src/documents/user.js +8 -0
  82. package/src/documents/user.js.map +1 -0
  83. package/src/enumerations/base-model-name.d.ts +43 -0
  84. package/src/enumerations/base-model-name.d.ts.map +1 -0
  85. package/src/enumerations/base-model-name.js +39 -0
  86. package/src/enumerations/base-model-name.js.map +1 -0
  87. package/src/enumerations/index.d.ts +3 -0
  88. package/src/enumerations/index.d.ts.map +1 -0
  89. package/src/enumerations/index.js +6 -0
  90. package/src/enumerations/index.js.map +1 -0
  91. package/src/enumerations/schema-collection.d.ts +39 -0
  92. package/src/enumerations/schema-collection.d.ts.map +1 -0
  93. package/src/enumerations/schema-collection.js +43 -0
  94. package/src/enumerations/schema-collection.js.map +1 -0
  95. package/src/errors/index.d.ts +5 -0
  96. package/src/errors/index.d.ts.map +1 -0
  97. package/src/errors/index.js +8 -0
  98. package/src/errors/index.js.map +1 -0
  99. package/src/errors/invalid-backup-code-version.d.ts +5 -0
  100. package/src/errors/invalid-backup-code-version.d.ts.map +1 -0
  101. package/src/errors/invalid-backup-code-version.js +14 -0
  102. package/src/errors/invalid-backup-code-version.js.map +1 -0
  103. package/src/errors/invalid-model.d.ts +18 -0
  104. package/src/errors/invalid-model.d.ts.map +1 -0
  105. package/src/errors/invalid-model.js +26 -0
  106. package/src/errors/invalid-model.js.map +1 -0
  107. package/src/errors/model-not-registered.d.ts +18 -0
  108. package/src/errors/model-not-registered.d.ts.map +1 -0
  109. package/src/errors/model-not-registered.js +26 -0
  110. package/src/errors/model-not-registered.js.map +1 -0
  111. package/src/errors/mongoose-validation.d.ts +28 -0
  112. package/src/errors/mongoose-validation.d.ts.map +1 -0
  113. package/src/errors/mongoose-validation.js +33 -0
  114. package/src/errors/mongoose-validation.js.map +1 -0
  115. package/src/index.d.ts +19 -0
  116. package/src/index.d.ts.map +1 -0
  117. package/src/index.js +31 -0
  118. package/src/index.js.map +1 -0
  119. package/src/interfaces/api-mongo-validation-error-response.d.ts +16 -0
  120. package/src/interfaces/api-mongo-validation-error-response.d.ts.map +1 -0
  121. package/src/interfaces/api-mongo-validation-error-response.js +8 -0
  122. package/src/interfaces/api-mongo-validation-error-response.js.map +1 -0
  123. package/src/interfaces/database-init-result-tx.d.ts +27 -0
  124. package/src/interfaces/database-init-result-tx.d.ts.map +1 -0
  125. package/src/interfaces/database-init-result-tx.js +3 -0
  126. package/src/interfaces/database-init-result-tx.js.map +1 -0
  127. package/src/interfaces/db-init-result.d.ts +16 -0
  128. package/src/interfaces/db-init-result.d.ts.map +1 -0
  129. package/src/interfaces/db-init-result.js +8 -0
  130. package/src/interfaces/db-init-result.js.map +1 -0
  131. package/src/interfaces/discriminator-collections.d.ts +17 -0
  132. package/src/interfaces/discriminator-collections.d.ts.map +1 -0
  133. package/src/interfaces/discriminator-collections.js +8 -0
  134. package/src/interfaces/discriminator-collections.js.map +1 -0
  135. package/src/interfaces/environment-mongo.d.ts +88 -0
  136. package/src/interfaces/environment-mongo.d.ts.map +1 -0
  137. package/src/interfaces/environment-mongo.js +8 -0
  138. package/src/interfaces/environment-mongo.js.map +1 -0
  139. package/src/interfaces/index.d.ts +13 -0
  140. package/src/interfaces/index.d.ts.map +1 -0
  141. package/src/interfaces/index.js +16 -0
  142. package/src/interfaces/index.js.map +1 -0
  143. package/src/interfaces/models/email-token.d.ts +12 -0
  144. package/src/interfaces/models/email-token.d.ts.map +1 -0
  145. package/src/interfaces/models/email-token.js +8 -0
  146. package/src/interfaces/models/email-token.js.map +1 -0
  147. package/src/interfaces/models/index.d.ts +8 -0
  148. package/src/interfaces/models/index.d.ts.map +1 -0
  149. package/src/interfaces/models/index.js +11 -0
  150. package/src/interfaces/models/index.js.map +1 -0
  151. package/src/interfaces/models/mnemonic.d.ts +13 -0
  152. package/src/interfaces/models/mnemonic.d.ts.map +1 -0
  153. package/src/interfaces/models/mnemonic.js +8 -0
  154. package/src/interfaces/models/mnemonic.js.map +1 -0
  155. package/src/interfaces/models/role.d.ts +12 -0
  156. package/src/interfaces/models/role.d.ts.map +1 -0
  157. package/src/interfaces/models/role.js +8 -0
  158. package/src/interfaces/models/role.js.map +1 -0
  159. package/src/interfaces/models/token-role.d.ts +19 -0
  160. package/src/interfaces/models/token-role.d.ts.map +1 -0
  161. package/src/interfaces/models/token-role.js +8 -0
  162. package/src/interfaces/models/token-role.js.map +1 -0
  163. package/src/interfaces/models/used-direct-login-token.d.ts +19 -0
  164. package/src/interfaces/models/used-direct-login-token.d.ts.map +1 -0
  165. package/src/interfaces/models/used-direct-login-token.js +8 -0
  166. package/src/interfaces/models/used-direct-login-token.js.map +1 -0
  167. package/src/interfaces/models/user-role.d.ts +19 -0
  168. package/src/interfaces/models/user-role.d.ts.map +1 -0
  169. package/src/interfaces/models/user-role.js +8 -0
  170. package/src/interfaces/models/user-role.js.map +1 -0
  171. package/src/interfaces/models/user.d.ts +21 -0
  172. package/src/interfaces/models/user.d.ts.map +1 -0
  173. package/src/interfaces/models/user.js +8 -0
  174. package/src/interfaces/models/user.js.map +1 -0
  175. package/src/interfaces/mongo-application.d.ts +47 -0
  176. package/src/interfaces/mongo-application.d.ts.map +1 -0
  177. package/src/interfaces/mongo-application.js +10 -0
  178. package/src/interfaces/mongo-application.js.map +1 -0
  179. package/src/interfaces/mongo-errors.d.ts +13 -0
  180. package/src/interfaces/mongo-errors.d.ts.map +1 -0
  181. package/src/interfaces/mongo-errors.js +8 -0
  182. package/src/interfaces/mongo-errors.js.map +1 -0
  183. package/src/interfaces/mongoose-document-store.d.ts +42 -0
  184. package/src/interfaces/mongoose-document-store.d.ts.map +1 -0
  185. package/src/interfaces/mongoose-document-store.js +10 -0
  186. package/src/interfaces/mongoose-document-store.js.map +1 -0
  187. package/src/interfaces/schema.d.ts +37 -0
  188. package/src/interfaces/schema.d.ts.map +1 -0
  189. package/src/interfaces/schema.js +8 -0
  190. package/src/interfaces/schema.js.map +1 -0
  191. package/src/interfaces/server-init-result.d.ts +45 -0
  192. package/src/interfaces/server-init-result.d.ts.map +1 -0
  193. package/src/interfaces/server-init-result.js +8 -0
  194. package/src/interfaces/server-init-result.js.map +1 -0
  195. package/src/interfaces/test-environment.d.ts +22 -0
  196. package/src/interfaces/test-environment.d.ts.map +1 -0
  197. package/src/interfaces/test-environment.js +8 -0
  198. package/src/interfaces/test-environment.js.map +1 -0
  199. package/src/model-registry.d.ts +79 -0
  200. package/src/model-registry.d.ts.map +1 -0
  201. package/src/model-registry.js +97 -0
  202. package/src/model-registry.js.map +1 -0
  203. package/src/models/email-token.d.ts +24 -0
  204. package/src/models/email-token.d.ts.map +1 -0
  205. package/src/models/email-token.js +16 -0
  206. package/src/models/email-token.js.map +1 -0
  207. package/src/models/index.d.ts +7 -0
  208. package/src/models/index.d.ts.map +1 -0
  209. package/src/models/index.js +10 -0
  210. package/src/models/index.js.map +1 -0
  211. package/src/models/mnemonic.d.ts +24 -0
  212. package/src/models/mnemonic.d.ts.map +1 -0
  213. package/src/models/mnemonic.js +27 -0
  214. package/src/models/mnemonic.js.map +1 -0
  215. package/src/models/role.d.ts +24 -0
  216. package/src/models/role.d.ts.map +1 -0
  217. package/src/models/role.js +27 -0
  218. package/src/models/role.js.map +1 -0
  219. package/src/models/used-direct-login-token.d.ts +24 -0
  220. package/src/models/used-direct-login-token.d.ts.map +1 -0
  221. package/src/models/used-direct-login-token.js +16 -0
  222. package/src/models/used-direct-login-token.js.map +1 -0
  223. package/src/models/user-role.d.ts +23 -0
  224. package/src/models/user-role.d.ts.map +1 -0
  225. package/src/models/user-role.js +26 -0
  226. package/src/models/user-role.js.map +1 -0
  227. package/src/models/user.d.ts +24 -0
  228. package/src/models/user.d.ts.map +1 -0
  229. package/src/models/user.js +27 -0
  230. package/src/models/user.js.map +1 -0
  231. package/src/mongo-application-concrete.d.ts +30 -0
  232. package/src/mongo-application-concrete.d.ts.map +1 -0
  233. package/src/mongo-application-concrete.js +46 -0
  234. package/src/mongo-application-concrete.js.map +1 -0
  235. package/src/plugins/index.d.ts +2 -0
  236. package/src/plugins/index.d.ts.map +1 -0
  237. package/src/plugins/index.js +5 -0
  238. package/src/plugins/index.js.map +1 -0
  239. package/src/plugins/mongo-database-plugin.d.ts +116 -0
  240. package/src/plugins/mongo-database-plugin.d.ts.map +1 -0
  241. package/src/plugins/mongo-database-plugin.js +230 -0
  242. package/src/plugins/mongo-database-plugin.js.map +1 -0
  243. package/src/routers/api.d.ts +29 -0
  244. package/src/routers/api.d.ts.map +1 -0
  245. package/src/routers/api.js +84 -0
  246. package/src/routers/api.js.map +1 -0
  247. package/src/routers/index.d.ts +2 -0
  248. package/src/routers/index.d.ts.map +1 -0
  249. package/src/routers/index.js +5 -0
  250. package/src/routers/index.js.map +1 -0
  251. package/src/schemas/email-token.d.ts +65 -0
  252. package/src/schemas/email-token.d.ts.map +1 -0
  253. package/src/schemas/email-token.js +68 -0
  254. package/src/schemas/email-token.js.map +1 -0
  255. package/src/schemas/index.d.ts +8 -0
  256. package/src/schemas/index.d.ts.map +1 -0
  257. package/src/schemas/index.js +11 -0
  258. package/src/schemas/index.js.map +1 -0
  259. package/src/schemas/mnemonic.d.ts +37 -0
  260. package/src/schemas/mnemonic.d.ts.map +1 -0
  261. package/src/schemas/mnemonic.js +41 -0
  262. package/src/schemas/mnemonic.js.map +1 -0
  263. package/src/schemas/role.d.ts +57 -0
  264. package/src/schemas/role.d.ts.map +1 -0
  265. package/src/schemas/role.js +102 -0
  266. package/src/schemas/role.js.map +1 -0
  267. package/src/schemas/schema.d.ts +62 -0
  268. package/src/schemas/schema.d.ts.map +1 -0
  269. package/src/schemas/schema.js +81 -0
  270. package/src/schemas/schema.js.map +1 -0
  271. package/src/schemas/used-direct-login-token.d.ts +49 -0
  272. package/src/schemas/used-direct-login-token.d.ts.map +1 -0
  273. package/src/schemas/used-direct-login-token.js +35 -0
  274. package/src/schemas/used-direct-login-token.js.map +1 -0
  275. package/src/schemas/user-role.d.ts +52 -0
  276. package/src/schemas/user-role.d.ts.map +1 -0
  277. package/src/schemas/user-role.js +67 -0
  278. package/src/schemas/user-role.js.map +1 -0
  279. package/src/schemas/user.d.ts +43 -0
  280. package/src/schemas/user.d.ts.map +1 -0
  281. package/src/schemas/user.js +214 -0
  282. package/src/schemas/user.js.map +1 -0
  283. package/src/services/backup-code.d.ts +118 -0
  284. package/src/services/backup-code.d.ts.map +1 -0
  285. package/src/services/backup-code.js +320 -0
  286. package/src/services/backup-code.js.map +1 -0
  287. package/src/services/database-initialization.d.ts +137 -0
  288. package/src/services/database-initialization.d.ts.map +1 -0
  289. package/src/services/database-initialization.js +911 -0
  290. package/src/services/database-initialization.js.map +1 -0
  291. package/src/services/db-init-cache.d.ts +18 -0
  292. package/src/services/db-init-cache.d.ts.map +1 -0
  293. package/src/services/db-init-cache.js +7 -0
  294. package/src/services/db-init-cache.js.map +1 -0
  295. package/src/services/direct-login-token.d.ts +28 -0
  296. package/src/services/direct-login-token.d.ts.map +1 -0
  297. package/src/services/direct-login-token.js +62 -0
  298. package/src/services/direct-login-token.js.map +1 -0
  299. package/src/services/index.d.ts +17 -0
  300. package/src/services/index.d.ts.map +1 -0
  301. package/src/services/index.js +20 -0
  302. package/src/services/index.js.map +1 -0
  303. package/src/services/jwt.d.ts +20 -0
  304. package/src/services/jwt.d.ts.map +1 -0
  305. package/src/services/jwt.js +79 -0
  306. package/src/services/jwt.js.map +1 -0
  307. package/src/services/mnemonic.d.ts +30 -0
  308. package/src/services/mnemonic.d.ts.map +1 -0
  309. package/src/services/mnemonic.js +80 -0
  310. package/src/services/mnemonic.js.map +1 -0
  311. package/src/services/mongo-authentication-provider.d.ts +27 -0
  312. package/src/services/mongo-authentication-provider.d.ts.map +1 -0
  313. package/src/services/mongo-authentication-provider.js +97 -0
  314. package/src/services/mongo-authentication-provider.js.map +1 -0
  315. package/src/services/mongo-backup-code-store.d.ts +40 -0
  316. package/src/services/mongo-backup-code-store.d.ts.map +1 -0
  317. package/src/services/mongo-backup-code-store.js +104 -0
  318. package/src/services/mongo-backup-code-store.js.map +1 -0
  319. package/src/services/mongo-base.d.ts +24 -0
  320. package/src/services/mongo-base.d.ts.map +1 -0
  321. package/src/services/mongo-base.js +28 -0
  322. package/src/services/mongo-base.js.map +1 -0
  323. package/src/services/mongoose-collection.d.ts +52 -0
  324. package/src/services/mongoose-collection.d.ts.map +1 -0
  325. package/src/services/mongoose-collection.js +326 -0
  326. package/src/services/mongoose-collection.js.map +1 -0
  327. package/src/services/mongoose-database.d.ts +64 -0
  328. package/src/services/mongoose-database.d.ts.map +1 -0
  329. package/src/services/mongoose-database.js +121 -0
  330. package/src/services/mongoose-database.js.map +1 -0
  331. package/src/services/mongoose-document-store.d.ts +108 -0
  332. package/src/services/mongoose-document-store.d.ts.map +1 -0
  333. package/src/services/mongoose-document-store.js +265 -0
  334. package/src/services/mongoose-document-store.js.map +1 -0
  335. package/src/services/mongoose-session-adapter.d.ts +39 -0
  336. package/src/services/mongoose-session-adapter.d.ts.map +1 -0
  337. package/src/services/mongoose-session-adapter.js +63 -0
  338. package/src/services/mongoose-session-adapter.js.map +1 -0
  339. package/src/services/request-user.d.ts +22 -0
  340. package/src/services/request-user.d.ts.map +1 -0
  341. package/src/services/request-user.js +66 -0
  342. package/src/services/request-user.js.map +1 -0
  343. package/src/services/role.d.ts +97 -0
  344. package/src/services/role.d.ts.map +1 -0
  345. package/src/services/role.js +288 -0
  346. package/src/services/role.js.map +1 -0
  347. package/src/services/user.d.ts +362 -0
  348. package/src/services/user.d.ts.map +1 -0
  349. package/src/services/user.js +1504 -0
  350. package/src/services/user.js.map +1 -0
  351. package/src/testing.d.ts +9 -0
  352. package/src/testing.d.ts.map +1 -0
  353. package/src/testing.js +12 -0
  354. package/src/testing.js.map +1 -0
  355. package/src/transactions/index.d.ts +2 -0
  356. package/src/transactions/index.d.ts.map +1 -0
  357. package/src/transactions/index.js +5 -0
  358. package/src/transactions/index.js.map +1 -0
  359. package/src/transactions/transaction-manager.d.ts +37 -0
  360. package/src/transactions/transaction-manager.d.ts.map +1 -0
  361. package/src/transactions/transaction-manager.js +50 -0
  362. package/src/transactions/transaction-manager.js.map +1 -0
  363. package/src/types/index.d.ts +26 -0
  364. package/src/types/index.d.ts.map +1 -0
  365. package/src/types/index.js +9 -0
  366. package/src/types/index.js.map +1 -0
  367. package/src/types/mongoose-helpers.d.ts +16 -0
  368. package/src/types/mongoose-helpers.d.ts.map +1 -0
  369. package/src/types/mongoose-helpers.js +8 -0
  370. package/src/types/mongoose-helpers.js.map +1 -0
  371. package/src/utils/default-mongo-uri-validator.d.ts +15 -0
  372. package/src/utils/default-mongo-uri-validator.d.ts.map +1 -0
  373. package/src/utils/default-mongo-uri-validator.js +46 -0
  374. package/src/utils/default-mongo-uri-validator.js.map +1 -0
  375. package/src/utils/index.d.ts +5 -0
  376. package/src/utils/index.d.ts.map +1 -0
  377. package/src/utils/index.js +8 -0
  378. package/src/utils/index.js.map +1 -0
  379. package/src/utils/mongo-error-response.d.ts +17 -0
  380. package/src/utils/mongo-error-response.d.ts.map +1 -0
  381. package/src/utils/mongo-error-response.js +21 -0
  382. package/src/utils/mongo-error-response.js.map +1 -0
  383. package/src/utils/mongo-transaction.d.ts +39 -0
  384. package/src/utils/mongo-transaction.d.ts.map +1 -0
  385. package/src/utils/mongo-transaction.js +131 -0
  386. package/src/utils/mongo-transaction.js.map +1 -0
  387. package/src/utils/object-id.d.ts +11 -0
  388. package/src/utils/object-id.d.ts.map +1 -0
  389. package/src/utils/object-id.js +17 -0
  390. package/src/utils/object-id.js.map +1 -0
@@ -0,0 +1,131 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.setupTestEnvironment = setupTestEnvironment;
4
+ const i18n_lib_1 = require("@digitaldefiance/i18n-lib");
5
+ const node_express_suite_1 = require("@digitaldefiance/node-express-suite");
6
+ const services_1 = require("../../services");
7
+ const mongo_database_plugin_1 = require("../../plugins/mongo-database-plugin");
8
+ async function setupTestEnvironment(constants, apiRouterFactory, schemaMapFactory, appRouterFactory = (apiRouter) => new node_express_suite_1.AppRouter(apiRouter), customInitMiddleware = node_express_suite_1.initMiddleware, envLocation, databaseInitFunction, initResultHashFunction, cspConfig = {
9
+ corsWhitelist: [],
10
+ csp: {
11
+ defaultSrc: [],
12
+ imgSrc: [],
13
+ connectSrc: [],
14
+ scriptSrc: [],
15
+ styleSrc: [],
16
+ fontSrc: [],
17
+ frameSrc: [],
18
+ },
19
+ }) {
20
+ // Make runtime deterministic for tests
21
+ process.env.NODE_ENV = 'test';
22
+ process.env['DEV_DATABASE'] = 'test';
23
+ // Increase libuv threadpool for concurrent pbkdf2 work
24
+ if (!process.env['UV_THREADPOOL_SIZE']) {
25
+ process.env['UV_THREADPOOL_SIZE'] = '16';
26
+ }
27
+ // Optimize MongoDB settings for test performance while maintaining reliability
28
+ if (!process.env['MONGO_MAX_POOL_SIZE']) {
29
+ process.env['MONGO_MAX_POOL_SIZE'] = '5';
30
+ }
31
+ if (!process.env['MONGO_MIN_POOL_SIZE']) {
32
+ process.env['MONGO_MIN_POOL_SIZE'] = '2';
33
+ }
34
+ if (!process.env['MONGO_SERVER_SELECTION_TIMEOUT_MS']) {
35
+ process.env['MONGO_SERVER_SELECTION_TIMEOUT_MS'] = '5000';
36
+ }
37
+ if (!process.env['MONGO_SOCKET_TIMEOUT_MS']) {
38
+ process.env['MONGO_SOCKET_TIMEOUT_MS'] = '15000';
39
+ }
40
+ if (!process.env['MONGO_TRANSACTION_TIMEOUT']) {
41
+ process.env['MONGO_TRANSACTION_TIMEOUT'] = '15000';
42
+ }
43
+ if (!process.env['MONGO_TRANSACTION_LOCK_REQUEST_TIMEOUT']) {
44
+ process.env['MONGO_TRANSACTION_LOCK_REQUEST_TIMEOUT'] = '8000';
45
+ }
46
+ if (!process.env['MONGO_TRANSACTION_RETRY_BASE_DELAY']) {
47
+ process.env['MONGO_TRANSACTION_RETRY_BASE_DELAY'] = '100';
48
+ }
49
+ // Disable transactions in test environment for better reliability
50
+ if (!process.env['MONGO_USE_TRANSACTIONS']) {
51
+ process.env['MONGO_USE_TRANSACTIONS'] = 'false';
52
+ }
53
+ // Ensure language is set to English for consistent test behavior
54
+ process.env.LANGUAGE = 'English (US)';
55
+ // Use a random high port to avoid conflicts
56
+ process.env['PORT'] = String(Math.floor(Math.random() * 10000) + 50000);
57
+ // Use unique database name for each test to avoid conflicts
58
+ const uniqueDbName = `test_${Date.now()}_${Math.floor(Math.random() * 10000)}`;
59
+ process.env['DEV_DATABASE'] = uniqueDbName;
60
+ // Reset global language context to English
61
+ const setAdminLanguage = (language) => {
62
+ const context = i18n_lib_1.GlobalActiveContext.getInstance();
63
+ context.setAdminLanguage(language);
64
+ };
65
+ setAdminLanguage('en-US');
66
+ const env = new node_express_suite_1.Environment(envLocation, true);
67
+ // Create the Application with MongoDatabasePlugin
68
+ const application = new node_express_suite_1.Application(env, apiRouterFactory, cspConfig, constants, appRouterFactory, customInitMiddleware);
69
+ const mongoPlugin = new mongo_database_plugin_1.MongoDatabasePlugin({
70
+ schemaMapFactory,
71
+ databaseInitFunction: databaseInitFunction ??
72
+ services_1.DatabaseInitializationService.initUserDb.bind(services_1.DatabaseInitializationService),
73
+ initResultHashFunction: initResultHashFunction ??
74
+ services_1.DatabaseInitializationService.serverInitResultHash.bind(services_1.DatabaseInitializationService),
75
+ environment: env,
76
+ constants,
77
+ });
78
+ application.useDatabasePlugin(mongoPlugin);
79
+ // Create and start your app — this connects the DB, inits plugins,
80
+ // and runs initializeDevStore (which calls initUserDb) via the plugin.
81
+ try {
82
+ await application.start();
83
+ if (mongoPlugin.db.connection.db) {
84
+ const command = {
85
+ ...(application.environment.mongo.setParameterSupported
86
+ ? { setParameter: 1 }
87
+ : {}),
88
+ ...(application.environment.mongo.useTransactions &&
89
+ application.environment.mongo.transactionLifetimeLimitSecondsSupported
90
+ ? {
91
+ transactionLifetimeLimitSeconds: application.environment.mongo.transactionTimeout,
92
+ }
93
+ : {}),
94
+ ...(application.environment.mongo.useTransactions &&
95
+ application.environment.mongo
96
+ .maxTransactionLockRequestTimeoutMillisSupported
97
+ ? {
98
+ maxTransactionLockRequestTimeoutMillis: application.environment.mongo.transactionLockRequestTimeout,
99
+ }
100
+ : {}),
101
+ };
102
+ if (Object.keys(command).length > 0) {
103
+ await mongoPlugin.db.connection.db
104
+ .admin()
105
+ .command(command)
106
+ .catch(() => undefined);
107
+ }
108
+ }
109
+ }
110
+ catch (error) {
111
+ console.error('Failed to start application with MongoDB URI:', application.environment.mongo.uri);
112
+ console.error('Connection error:', error);
113
+ throw error;
114
+ }
115
+ // Ensure the test process uses the same JWT secret as the application
116
+ process.env.JWT_SECRET = application.environment.jwtSecret;
117
+ // Get the init result from the plugin (populated during start() → initializeDevStore)
118
+ const accountData = mongoPlugin.lastInitResult;
119
+ if (!accountData) {
120
+ throw new Error('Failed to initialize database for tests — no init result from plugin');
121
+ }
122
+ return {
123
+ application: application,
124
+ mongoServer: mongoPlugin.devDatabase,
125
+ mongoUri: application.environment.mongo
126
+ .uri,
127
+ accountData,
128
+ dbName: application.environment.devDatabase,
129
+ };
130
+ }
131
+ //# sourceMappingURL=setup-test-env.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setup-test-env.js","sourceRoot":"","sources":["../../../../../../packages/digitaldefiance-node-express-suite-mongo/src/__tests__/helpers/setup-test-env.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export * from './fixtures';
2
+ export * from './helpers';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-node-express-suite-mongo/src/__tests__/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC"}
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ tslib_1.__exportStar(require("./fixtures"), exports);
5
+ tslib_1.__exportStar(require("./helpers"), exports);
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-node-express-suite-mongo/src/__tests__/index.ts"],"names":[],"mappings":";;;AAAA,qDAA2B;AAC3B,oDAA0B"}
@@ -0,0 +1,38 @@
1
+ /**
2
+ * @fileoverview Application builder for fluent application construction.
3
+ * Provides builder pattern for creating Application instances with MongoDatabasePlugin.
4
+ * @module builders/application-builder
5
+ */
6
+ import mongoose from '@digitaldefiance/mongoose-types';
7
+ import { IFailableResult } from '@digitaldefiance/suite-core-lib';
8
+ import { HelmetOptions } from 'helmet';
9
+ import { Application, Environment, IApplication, ICSPConfig, IConstants, IFlexibleCSP, initMiddleware, AppRouter, BaseRouter } from '@digitaldefiance/node-express-suite';
10
+ import { BaseDocument } from '../documents';
11
+ import { IMongoApplication } from '../interfaces/mongo-application';
12
+ import { IServerInitResult } from '../interfaces/server-init-result';
13
+ import { SchemaMap } from '../types';
14
+ import type { PlatformID } from '@digitaldefiance/node-ecies-lib';
15
+ /**
16
+ * Builder for constructing Application instances with MongoDatabasePlugin using a fluent API.
17
+ */
18
+ export declare class ApplicationBuilder<TID extends PlatformID, TModelDocs extends Record<string, BaseDocument<never, TID>>, TInitResults extends IServerInitResult<TID>, TConstants extends IConstants = IConstants> {
19
+ private environment?;
20
+ private apiRouterFactory?;
21
+ private appRouterFactory?;
22
+ private schemaMapFactory?;
23
+ private databaseInitFunction?;
24
+ private initResultHashFunction?;
25
+ private cspConfig?;
26
+ private constants?;
27
+ private customInitMiddleware?;
28
+ withEnvironment(env: Environment<TID>): this;
29
+ withApiRouter(factory: (app: IApplication<TID>) => BaseRouter<TID>): this;
30
+ withAppRouter(factory: (apiRouter: BaseRouter<TID>) => AppRouter<TID>): this;
31
+ withSchemaMap(factory: (connection: mongoose.Connection) => SchemaMap<TID, TModelDocs>): this;
32
+ withDatabaseInit(initFn: (app: IMongoApplication<TID>) => Promise<IFailableResult<TInitResults>>, hashFn: (results: TInitResults) => string): this;
33
+ withCSP(config: ICSPConfig | HelmetOptions | IFlexibleCSP): this;
34
+ withConstants(constants: TConstants): this;
35
+ withMiddleware(middleware: typeof initMiddleware): this;
36
+ build(): Application<TID, Environment<TID>, TConstants, AppRouter<TID>>;
37
+ }
38
+ //# sourceMappingURL=application-builder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"application-builder.d.ts","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-node-express-suite-mongo/src/builders/application-builder.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,QAAQ,MAAM,iCAAiC,CAAC;AACvD,OAAO,EACL,eAAe,EAGhB,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AACvC,OAAO,EACL,WAAW,EACX,WAAW,EACX,YAAY,EACZ,UAAU,EACV,UAAU,EACV,YAAY,EACZ,cAAc,EACd,SAAS,EACT,UAAU,EACX,MAAM,qCAAqC,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AACpE,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AAErE,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AACrC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAElE;;GAEG;AACH,qBAAa,kBAAkB,CAC7B,GAAG,SAAS,UAAU,EACtB,UAAU,SAAS,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,EAC3D,YAAY,SAAS,iBAAiB,CAAC,GAAG,CAAC,EAC3C,UAAU,SAAS,UAAU,GAAG,UAAU;IAE1C,OAAO,CAAC,WAAW,CAAC,CAAmB;IACvC,OAAO,CAAC,gBAAgB,CAAC,CAA8C;IACvE,OAAO,CAAC,gBAAgB,CAAC,CAAiD;IAC1E,OAAO,CAAC,gBAAgB,CAAC,CAEO;IAChC,OAAO,CAAC,oBAAoB,CAAC,CAEe;IAC5C,OAAO,CAAC,sBAAsB,CAAC,CAAoC;IACnE,OAAO,CAAC,SAAS,CAAC,CAA4C;IAC9D,OAAO,CAAC,SAAS,CAAC,CAAa;IAC/B,OAAO,CAAC,oBAAoB,CAAC,CAAwB;IAErD,eAAe,CAAC,GAAG,EAAE,WAAW,CAAC,GAAG,CAAC,GAAG,IAAI;IAK5C,aAAa,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,YAAY,CAAC,GAAG,CAAC,KAAK,UAAU,CAAC,GAAG,CAAC,GAAG,IAAI;IAKzE,aAAa,CAAC,OAAO,EAAE,CAAC,SAAS,EAAE,UAAU,CAAC,GAAG,CAAC,KAAK,SAAS,CAAC,GAAG,CAAC,GAAG,IAAI;IAK5E,aAAa,CACX,OAAO,EAAE,CAAC,UAAU,EAAE,QAAQ,CAAC,UAAU,KAAK,SAAS,CAAC,GAAG,EAAE,UAAU,CAAC,GACvE,IAAI;IAKP,gBAAgB,CACd,MAAM,EAAE,CACN,GAAG,EAAE,iBAAiB,CAAC,GAAG,CAAC,KACxB,OAAO,CAAC,eAAe,CAAC,YAAY,CAAC,CAAC,EAC3C,MAAM,EAAE,CAAC,OAAO,EAAE,YAAY,KAAK,MAAM,GACxC,IAAI;IAMP,OAAO,CAAC,MAAM,EAAE,UAAU,GAAG,aAAa,GAAG,YAAY,GAAG,IAAI;IAKhE,aAAa,CAAC,SAAS,EAAE,UAAU,GAAG,IAAI;IAK1C,cAAc,CAAC,UAAU,EAAE,OAAO,cAAc,GAAG,IAAI;IAKvD,KAAK,IAAI,WAAW,CAAC,GAAG,EAAE,WAAW,CAAC,GAAG,CAAC,EAAE,UAAU,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC;CAqDxE"}
@@ -0,0 +1,82 @@
1
+ "use strict";
2
+ /**
3
+ * @fileoverview Application builder for fluent application construction.
4
+ * Provides builder pattern for creating Application instances with MongoDatabasePlugin.
5
+ * @module builders/application-builder
6
+ */
7
+ Object.defineProperty(exports, "__esModule", { value: true });
8
+ exports.ApplicationBuilder = void 0;
9
+ const suite_core_lib_1 = require("@digitaldefiance/suite-core-lib");
10
+ const node_express_suite_1 = require("@digitaldefiance/node-express-suite");
11
+ const mongo_database_plugin_1 = require("../plugins/mongo-database-plugin");
12
+ /**
13
+ * Builder for constructing Application instances with MongoDatabasePlugin using a fluent API.
14
+ */
15
+ class ApplicationBuilder {
16
+ environment;
17
+ apiRouterFactory;
18
+ appRouterFactory;
19
+ schemaMapFactory;
20
+ databaseInitFunction;
21
+ initResultHashFunction;
22
+ cspConfig;
23
+ constants;
24
+ customInitMiddleware;
25
+ withEnvironment(env) {
26
+ this.environment = env;
27
+ return this;
28
+ }
29
+ withApiRouter(factory) {
30
+ this.apiRouterFactory = factory;
31
+ return this;
32
+ }
33
+ withAppRouter(factory) {
34
+ this.appRouterFactory = factory;
35
+ return this;
36
+ }
37
+ withSchemaMap(factory) {
38
+ this.schemaMapFactory = factory;
39
+ return this;
40
+ }
41
+ withDatabaseInit(initFn, hashFn) {
42
+ this.databaseInitFunction = initFn;
43
+ this.initResultHashFunction = hashFn;
44
+ return this;
45
+ }
46
+ withCSP(config) {
47
+ this.cspConfig = config;
48
+ return this;
49
+ }
50
+ withConstants(constants) {
51
+ this.constants = constants;
52
+ return this;
53
+ }
54
+ withMiddleware(middleware) {
55
+ this.customInitMiddleware = middleware;
56
+ return this;
57
+ }
58
+ build() {
59
+ if (!this.environment)
60
+ throw new suite_core_lib_1.TranslatableSuiteError(suite_core_lib_1.SuiteCoreStringKey.Error_EnvironmentIsRequired);
61
+ if (!this.apiRouterFactory)
62
+ throw new suite_core_lib_1.TranslatableSuiteError(suite_core_lib_1.SuiteCoreStringKey.Error_ApiRouterFactoryIsRequired);
63
+ if (!this.schemaMapFactory)
64
+ throw new suite_core_lib_1.TranslatableSuiteError(suite_core_lib_1.SuiteCoreStringKey.Error_SchemaMapFactoryIsRequired);
65
+ if (!this.databaseInitFunction)
66
+ throw new suite_core_lib_1.TranslatableSuiteError(suite_core_lib_1.SuiteCoreStringKey.Error_DatabaseInitFunctionIsRequired);
67
+ if (!this.initResultHashFunction)
68
+ throw new suite_core_lib_1.TranslatableSuiteError(suite_core_lib_1.SuiteCoreStringKey.Error_InitResultHashFunctionIsRequired);
69
+ const app = new node_express_suite_1.Application(this.environment, this.apiRouterFactory, this.cspConfig, this.constants, this.appRouterFactory, this.customInitMiddleware);
70
+ const mongoPlugin = new mongo_database_plugin_1.MongoDatabasePlugin({
71
+ schemaMapFactory: this.schemaMapFactory,
72
+ databaseInitFunction: this.databaseInitFunction,
73
+ initResultHashFunction: this.initResultHashFunction,
74
+ environment: this.environment,
75
+ constants: this.constants,
76
+ });
77
+ app.useDatabasePlugin(mongoPlugin);
78
+ return app;
79
+ }
80
+ }
81
+ exports.ApplicationBuilder = ApplicationBuilder;
82
+ //# sourceMappingURL=application-builder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"application-builder.js","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-node-express-suite-mongo/src/builders/application-builder.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AAGH,oEAIyC;AAEzC,4EAU6C;AAI7C,4EAAuE;AAIvE;;GAEG;AACH,MAAa,kBAAkB;IAMrB,WAAW,CAAoB;IAC/B,gBAAgB,CAA+C;IAC/D,gBAAgB,CAAkD;IAClE,gBAAgB,CAEQ;IACxB,oBAAoB,CAEgB;IACpC,sBAAsB,CAAqC;IAC3D,SAAS,CAA6C;IACtD,SAAS,CAAc;IACvB,oBAAoB,CAAyB;IAErD,eAAe,CAAC,GAAqB;QACnC,IAAI,CAAC,WAAW,GAAG,GAAG,CAAC;QACvB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,aAAa,CAAC,OAAoD;QAChE,IAAI,CAAC,gBAAgB,GAAG,OAAO,CAAC;QAChC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,aAAa,CAAC,OAAuD;QACnE,IAAI,CAAC,gBAAgB,GAAG,OAAO,CAAC;QAChC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,aAAa,CACX,OAAwE;QAExE,IAAI,CAAC,gBAAgB,GAAG,OAAO,CAAC;QAChC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,gBAAgB,CACd,MAE2C,EAC3C,MAAyC;QAEzC,IAAI,CAAC,oBAAoB,GAAG,MAAM,CAAC;QACnC,IAAI,CAAC,sBAAsB,GAAG,MAAM,CAAC;QACrC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,CAAC,MAAiD;QACvD,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC;QACxB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,aAAa,CAAC,SAAqB;QACjC,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,cAAc,CAAC,UAAiC;QAC9C,IAAI,CAAC,oBAAoB,GAAG,UAAU,CAAC;QACvC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK;QACH,IAAI,CAAC,IAAI,CAAC,WAAW;YACnB,MAAM,IAAI,uCAAsB,CAC9B,mCAAkB,CAAC,2BAA2B,CAC/C,CAAC;QACJ,IAAI,CAAC,IAAI,CAAC,gBAAgB;YACxB,MAAM,IAAI,uCAAsB,CAC9B,mCAAkB,CAAC,gCAAgC,CACpD,CAAC;QACJ,IAAI,CAAC,IAAI,CAAC,gBAAgB;YACxB,MAAM,IAAI,uCAAsB,CAC9B,mCAAkB,CAAC,gCAAgC,CACpD,CAAC;QACJ,IAAI,CAAC,IAAI,CAAC,oBAAoB;YAC5B,MAAM,IAAI,uCAAsB,CAC9B,mCAAkB,CAAC,oCAAoC,CACxD,CAAC;QACJ,IAAI,CAAC,IAAI,CAAC,sBAAsB;YAC9B,MAAM,IAAI,uCAAsB,CAC9B,mCAAkB,CAAC,sCAAsC,CAC1D,CAAC;QAEJ,MAAM,GAAG,GAAG,IAAI,gCAAW,CAMzB,IAAI,CAAC,WAAW,EAChB,IAAI,CAAC,gBAAgB,EACrB,IAAI,CAAC,SAAS,EACd,IAAI,CAAC,SAAS,EACd,IAAI,CAAC,gBAAgB,EACrB,IAAI,CAAC,oBAAoB,CAC1B,CAAC;QAEF,MAAM,WAAW,GAAG,IAAI,2CAAmB,CAKzC;YACA,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;YACvC,oBAAoB,EAAE,IAAI,CAAC,oBAAoB;YAC/C,sBAAsB,EAAE,IAAI,CAAC,sBAAsB;YACnD,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,SAAS,EAAE,IAAI,CAAC,SAAS;SAC1B,CAAC,CAAC;QAEH,GAAG,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC;QAEnC,OAAO,GAAG,CAAC;IACb,CAAC;CACF;AAzHD,gDAyHC"}
@@ -0,0 +1,2 @@
1
+ export * from './application-builder';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-node-express-suite-mongo/src/builders/index.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAC"}
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ tslib_1.__exportStar(require("./application-builder"), exports);
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-node-express-suite-mongo/src/builders/index.ts"],"names":[],"mappings":";;;AAAA,gEAAsC"}
@@ -0,0 +1,3 @@
1
+ export * from './mongo-base';
2
+ export * from './user';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-node-express-suite-mongo/src/controllers/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,QAAQ,CAAC"}
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ tslib_1.__exportStar(require("./mongo-base"), exports);
5
+ tslib_1.__exportStar(require("./user"), exports);
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-node-express-suite-mongo/src/controllers/index.ts"],"names":[],"mappings":";;;AAAA,uDAA6B;AAC7B,iDAAuB"}
@@ -0,0 +1,55 @@
1
+ /**
2
+ * @fileoverview Mongo-specific base controller extending the database-agnostic BaseController.
3
+ * Restores Mongoose-specific functionality: isMongoApplication(), mongoApplication,
4
+ * transactionManager, validateAndFetchRequestUser(), and Mongoose-specific withTransaction().
5
+ * @module controllers/mongo-base
6
+ */
7
+ import { ClientSession } from '@digitaldefiance/mongoose-types';
8
+ import type { PlatformID } from '@digitaldefiance/node-ecies-lib';
9
+ import type { Request } from 'express';
10
+ import { BaseController, type ApiResponse, type TransactionCallback } from '@digitaldefiance/node-express-suite';
11
+ import type { IApplication } from '@digitaldefiance/node-express-suite';
12
+ import type { IMongoApplication } from '../interfaces/mongo-application';
13
+ import type { UserDocument } from '../documents/user';
14
+ import { TransactionManager } from '../transactions';
15
+ import { type MongoTransactionOptions } from '../utils/mongo-transaction';
16
+ /**
17
+ * Abstract Mongo-specific base controller.
18
+ * Extends the database-agnostic BaseController with Mongoose transaction management,
19
+ * Mongo application type guards, and user validation via Mongoose models.
20
+ *
21
+ * @template T API response type
22
+ * @template THandler Handler object type
23
+ * @template TLanguage Language code type
24
+ * @template TID Platform ID type
25
+ * @template TApplication Application interface type
26
+ */
27
+ export declare abstract class MongoBaseController<T extends ApiResponse, THandler extends object, TLanguage extends string, TID extends PlatformID = Buffer, TApplication extends IApplication<TID> = IApplication<TID>> extends BaseController<T, THandler, TLanguage, TID, TApplication> {
28
+ protected transactionManager: TransactionManager | undefined;
29
+ constructor(application: TApplication);
30
+ /**
31
+ * Type guard: does the application expose a Mongoose connection?
32
+ * Uses try/catch to safely handle cases where the db getter throws
33
+ * (e.g. when no MongoDatabasePlugin is registered).
34
+ */
35
+ protected isMongoApplication(): boolean;
36
+ /**
37
+ * Returns the application typed as IMongoApplication, or undefined if not Mongo-backed.
38
+ */
39
+ protected get mongoApplication(): IMongoApplication<TID> | undefined;
40
+ /**
41
+ * Validates the request has a user and fetches the full UserDocument from Mongoose.
42
+ * @param req The Express request object
43
+ * @returns The UserDocument for the authenticated user
44
+ * @throws Error if the application is not Mongo-backed
45
+ * @throws HandleableError if no user is on the request
46
+ * @throws UserNotFoundError if the user is not found in the database
47
+ */
48
+ protected validateAndFetchRequestUser(req: Request): Promise<UserDocument<TLanguage, TID>>;
49
+ /**
50
+ * Wraps a callback in a Mongoose transaction with full retry/timeout support.
51
+ * Falls back to IDatabase.withTransaction or direct execution when Mongoose is unavailable.
52
+ */
53
+ withTransaction<TResult>(callback: TransactionCallback<TResult>, session?: ClientSession, options?: MongoTransactionOptions<TID>, ...args: any): Promise<TResult>;
54
+ }
55
+ //# sourceMappingURL=mongo-base.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mongo-base.d.ts","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-node-express-suite-mongo/src/controllers/mongo-base.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AAChE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAOlE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EACL,cAAc,EACd,KAAK,WAAW,EAChB,KAAK,mBAAmB,EACzB,MAAM,qCAAqC,CAAC;AAC7C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qCAAqC,CAAC;AACxE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AACzE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAGtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,EAEL,KAAK,uBAAuB,EAC7B,MAAM,4BAA4B,CAAC;AAEpC;;;;;;;;;;GAUG;AACH,8BAAsB,mBAAmB,CACvC,CAAC,SAAS,WAAW,EACrB,QAAQ,SAAS,MAAM,EACvB,SAAS,SAAS,MAAM,EACxB,GAAG,SAAS,UAAU,GAAG,MAAM,EAC/B,YAAY,SAAS,YAAY,CAAC,GAAG,CAAC,GAAG,YAAY,CAAC,GAAG,CAAC,CAC1D,SAAQ,cAAc,CAAC,CAAC,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,EAAE,YAAY,CAAC;IACjE,SAAS,CAAC,kBAAkB,EAAE,kBAAkB,GAAG,SAAS,CAAC;gBAE1C,WAAW,EAAE,YAAY;IAY5C;;;;OAIG;IACH,SAAS,CAAC,kBAAkB,IAAI,OAAO;IAWvC;;OAEG;IACH,SAAS,KAAK,gBAAgB,IAAI,iBAAiB,CAAC,GAAG,CAAC,GAAG,SAAS,CAKnE;IAED;;;;;;;OAOG;cACa,2BAA2B,CACzC,GAAG,EAAE,OAAO,GACX,OAAO,CAAC,YAAY,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;IAgCxC;;;OAGG;IACU,eAAe,CAAC,OAAO,EAClC,QAAQ,EAAE,mBAAmB,CAAC,OAAO,CAAC,EACtC,OAAO,CAAC,EAAE,aAAa,EACvB,OAAO,CAAC,EAAE,uBAAuB,CAAC,GAAG,CAAC,EACtC,GAAG,IAAI,EAAE,GAAG;CA0Bf"}
@@ -0,0 +1,108 @@
1
+ "use strict";
2
+ /**
3
+ * @fileoverview Mongo-specific base controller extending the database-agnostic BaseController.
4
+ * Restores Mongoose-specific functionality: isMongoApplication(), mongoApplication,
5
+ * transactionManager, validateAndFetchRequestUser(), and Mongoose-specific withTransaction().
6
+ * @module controllers/mongo-base
7
+ */
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.MongoBaseController = void 0;
10
+ const suite_core_lib_1 = require("@digitaldefiance/suite-core-lib");
11
+ const i18n_lib_1 = require("@digitaldefiance/i18n-lib");
12
+ const node_express_suite_1 = require("@digitaldefiance/node-express-suite");
13
+ const base_model_name_1 = require("../enumerations/base-model-name");
14
+ const model_registry_1 = require("../model-registry");
15
+ const transactions_1 = require("../transactions");
16
+ const mongo_transaction_1 = require("../utils/mongo-transaction");
17
+ /**
18
+ * Abstract Mongo-specific base controller.
19
+ * Extends the database-agnostic BaseController with Mongoose transaction management,
20
+ * Mongo application type guards, and user validation via Mongoose models.
21
+ *
22
+ * @template T API response type
23
+ * @template THandler Handler object type
24
+ * @template TLanguage Language code type
25
+ * @template TID Platform ID type
26
+ * @template TApplication Application interface type
27
+ */
28
+ class MongoBaseController extends node_express_suite_1.BaseController {
29
+ transactionManager;
30
+ constructor(application) {
31
+ super(application);
32
+ // Only create TransactionManager when the app has a Mongoose connection
33
+ const mongoApp = this.mongoApplication;
34
+ if (mongoApp) {
35
+ this.transactionManager = new transactions_1.TransactionManager(mongoApp.db.connection, mongoApp.environment.mongo.useTransactions);
36
+ }
37
+ }
38
+ /**
39
+ * Type guard: does the application expose a Mongoose connection?
40
+ * Uses try/catch to safely handle cases where the db getter throws
41
+ * (e.g. when no MongoDatabasePlugin is registered).
42
+ */
43
+ isMongoApplication() {
44
+ try {
45
+ return ('db' in this.application &&
46
+ this.application.db !== undefined);
47
+ }
48
+ catch {
49
+ return false;
50
+ }
51
+ }
52
+ /**
53
+ * Returns the application typed as IMongoApplication, or undefined if not Mongo-backed.
54
+ */
55
+ get mongoApplication() {
56
+ if (this.isMongoApplication()) {
57
+ return this.application;
58
+ }
59
+ return undefined;
60
+ }
61
+ /**
62
+ * Validates the request has a user and fetches the full UserDocument from Mongoose.
63
+ * @param req The Express request object
64
+ * @returns The UserDocument for the authenticated user
65
+ * @throws Error if the application is not Mongo-backed
66
+ * @throws HandleableError if no user is on the request
67
+ * @throws UserNotFoundError if the user is not found in the database
68
+ */
69
+ async validateAndFetchRequestUser(req) {
70
+ if (!this.isMongoApplication()) {
71
+ throw new Error('validateAndFetchRequestUser requires a Mongo-backed application. ' +
72
+ 'Override this method for non-Mongo storage backends.');
73
+ }
74
+ const UserModel = model_registry_1.ModelRegistry.instance.getTypedModel(base_model_name_1.BaseModelName.User);
75
+ if (!req.user) {
76
+ throw new i18n_lib_1.HandleableError(new Error((0, suite_core_lib_1.getSuiteCoreTranslation)(suite_core_lib_1.SuiteCoreStringKey.Common_Unauthorized, undefined, undefined, { constants: this.application.constants })), {
77
+ statusCode: 401,
78
+ });
79
+ }
80
+ const user = await UserModel.findById(req.user.id);
81
+ if (!user) {
82
+ throw new suite_core_lib_1.UserNotFoundError();
83
+ }
84
+ return user;
85
+ }
86
+ /**
87
+ * Wraps a callback in a Mongoose transaction with full retry/timeout support.
88
+ * Falls back to IDatabase.withTransaction or direct execution when Mongoose is unavailable.
89
+ */
90
+ async withTransaction(callback, session, options, ...args) {
91
+ // Mongoose path — full retry/timeout support
92
+ if (this.isMongoApplication()) {
93
+ const mongoApp = this.mongoApplication;
94
+ return await (0, mongo_transaction_1.withMongoTransaction)(mongoApp.db.connection, mongoApp.environment.mongo.useTransactions, session, callback, { application: this.application, ...options }, ...args);
95
+ }
96
+ // IDatabase path — delegate to IDatabase.withTransaction
97
+ const db = this.application.database;
98
+ if (db) {
99
+ return await db.withTransaction(async () => {
100
+ return await callback(session, ...args);
101
+ });
102
+ }
103
+ // No database — run callback directly without transaction
104
+ return await callback(session, ...args);
105
+ }
106
+ }
107
+ exports.MongoBaseController = MongoBaseController;
108
+ //# sourceMappingURL=mongo-base.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mongo-base.js","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-node-express-suite-mongo/src/controllers/mongo-base.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AAIH,oEAIyC;AACzC,wDAA4D;AAE5D,4EAI6C;AAI7C,qEAAgE;AAChE,sDAAkD;AAClD,kDAAqD;AACrD,kEAGoC;AAEpC;;;;;;;;;;GAUG;AACH,MAAsB,mBAMpB,SAAQ,mCAAyD;IACvD,kBAAkB,CAAiC;IAE7D,YAAmB,WAAyB;QAC1C,KAAK,CAAC,WAAW,CAAC,CAAC;QACnB,wEAAwE;QACxE,MAAM,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC;QACvC,IAAI,QAAQ,EAAE,CAAC;YACb,IAAI,CAAC,kBAAkB,GAAG,IAAI,iCAAkB,CAC9C,QAAQ,CAAC,EAAE,CAAC,UAAU,EACtB,QAAQ,CAAC,WAAW,CAAC,KAAK,CAAC,eAAe,CAC3C,CAAC;QACJ,CAAC;IACH,CAAC;IAED;;;;OAIG;IACO,kBAAkB;QAC1B,IAAI,CAAC;YACH,OAAO,CACL,IAAI,IAAI,IAAI,CAAC,WAAW;gBACvB,IAAI,CAAC,WAAiD,CAAC,EAAE,KAAK,SAAS,CACzE,CAAC;QACJ,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED;;OAEG;IACH,IAAc,gBAAgB;QAC5B,IAAI,IAAI,CAAC,kBAAkB,EAAE,EAAE,CAAC;YAC9B,OAAO,IAAI,CAAC,WAAgD,CAAC;QAC/D,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAED;;;;;;;OAOG;IACO,KAAK,CAAC,2BAA2B,CACzC,GAAY;QAEZ,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,EAAE,CAAC;YAC/B,MAAM,IAAI,KAAK,CACb,mEAAmE;gBACjE,sDAAsD,CACzD,CAAC;QACJ,CAAC;QACD,MAAM,SAAS,GAAG,8BAAa,CAAC,QAAQ,CAAC,aAAa,CAEpD,+BAAa,CAAC,IAAI,CAAC,CAAC;QACtB,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;YACd,MAAM,IAAI,0BAAe,CACvB,IAAI,KAAK,CACP,IAAA,wCAAuB,EACrB,mCAAkB,CAAC,mBAAmB,EACtC,SAAS,EACT,SAAS,EACT,EAAE,SAAS,EAAE,IAAI,CAAC,WAAW,CAAC,SAAS,EAAE,CAC1C,CACF,EACD;gBACE,UAAU,EAAE,GAAG;aAChB,CACF,CAAC;QACJ,CAAC;QACD,MAAM,IAAI,GAAG,MAAM,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACnD,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,MAAM,IAAI,kCAAiB,EAAE,CAAC;QAChC,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;OAGG;IACI,KAAK,CAAC,eAAe,CAC1B,QAAsC,EACtC,OAAuB,EACvB,OAAsC,EACtC,GAAG,IAAS;QAEZ,6CAA6C;QAC7C,IAAI,IAAI,CAAC,kBAAkB,EAAE,EAAE,CAAC;YAC9B,MAAM,QAAQ,GAAG,IAAI,CAAC,gBAAiB,CAAC;YACxC,OAAO,MAAM,IAAA,wCAAoB,EAC/B,QAAQ,CAAC,EAAE,CAAC,UAAU,EACtB,QAAQ,CAAC,WAAW,CAAC,KAAK,CAAC,eAAe,EAC1C,OAAO,EACP,QAAQ,EACR,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,GAAG,OAAO,EAAE,EAC7C,GAAG,IAAI,CACR,CAAC;QACJ,CAAC;QAED,yDAAyD;QACzD,MAAM,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC;QACrC,IAAI,EAAE,EAAE,CAAC;YACP,OAAO,MAAM,EAAE,CAAC,eAAe,CAAC,KAAK,IAAI,EAAE;gBACzC,OAAO,MAAM,QAAQ,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,CAAC;YAC1C,CAAC,CAAC,CAAC;QACL,CAAC;QAED,0DAA0D;QAC1D,OAAO,MAAM,QAAQ,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,CAAC;IAC1C,CAAC;CACF;AA3HD,kDA2HC"}
@@ -0,0 +1,61 @@
1
+ /**
2
+ * @fileoverview User controller handling authentication, registration, and user management endpoints.
3
+ * Provides comprehensive user operations including login, password management, and settings.
4
+ * @module controllers/user
5
+ */
6
+ import { CoreLanguageCode } from '@digitaldefiance/i18n-lib';
7
+ import { Member as BackendMember, ECIESService, PlatformID } from '@digitaldefiance/node-ecies-lib';
8
+ import { ITokenRole, ITokenUser, IUserBase } from '@digitaldefiance/suite-core-lib';
9
+ import type { NextFunction, Request, Response } from 'express';
10
+ import { DecoratorBaseController, Environment, IApiChallengeResponse, IApiCodeCountResponse, IApiLoginResponse, IApiMessageResponse, IApiMnemonicResponse, IApiRegistrationResponse, IApiRequestUserResponse, IApiUserSettingsResponse, IApiBackupCodesResponse, IConstants, IStatusCodeResponse } from '@digitaldefiance/node-express-suite';
11
+ import type { ApiErrorResponse } from '@digitaldefiance/node-express-suite';
12
+ import { JwtService } from '../services/jwt';
13
+ import { BaseDocument } from '../documents';
14
+ import { UserDocument } from '../documents/user';
15
+ import type { IMongoApplication } from '../interfaces/mongo-application';
16
+ import { BackupCodeService } from '../services/backup-code';
17
+ import { RoleService } from '../services/role';
18
+ import { UserService } from '../services/user';
19
+ /**
20
+ * User controller handling all user-related API endpoints.
21
+ * Manages authentication, registration, password operations, settings, and backup codes.
22
+ * @template TID Platform ID type
23
+ * @template TDate Date type
24
+ * @template TLanguage Site language string type
25
+ * @template TAccountStatus Account status string type
26
+ * @template TUser User base type
27
+ * @template TTokenRole Token role type
28
+ * @template TTokenUser Token user type
29
+ * @template TApplication Application type
30
+ */
31
+ export declare class UserController<TID extends PlatformID = Buffer, TDate extends Date = Date, TLanguage extends CoreLanguageCode = CoreLanguageCode, TAccountStatus extends string = string, TUser extends IUserBase<TID, TDate, TLanguage, TAccountStatus> = IUserBase<TID, TDate, TLanguage, TAccountStatus>, TTokenRole extends ITokenRole<TID, TDate> = ITokenRole<TID, TDate>, TTokenUser extends ITokenUser = ITokenUser, TApplication extends IMongoApplication<TID> = IMongoApplication<TID>> extends DecoratorBaseController<TLanguage, TID, TApplication> {
32
+ protected readonly userService: UserService<UserDocument, TID, TDate, TLanguage, TAccountStatus, Environment<TID>, IConstants, BaseDocument<UserDocument, TID>, TUser, TTokenRole, TApplication>;
33
+ protected readonly jwtService: JwtService<TID, TDate, TTokenRole, TTokenUser, TApplication>;
34
+ protected readonly backupCodeService: BackupCodeService<TID, TDate, TTokenRole, TApplication>;
35
+ protected readonly roleService: RoleService<TID, TDate, TTokenRole>;
36
+ protected readonly eciesService: ECIESService<TID>;
37
+ protected readonly systemUser: BackendMember<TID>;
38
+ constructor(application: TApplication, jwtService: JwtService<TID, TDate, TTokenRole, TTokenUser, TApplication>, userService: UserService<any, TID, TDate, TLanguage, TAccountStatus, any, any, any, TUser, TTokenRole, TApplication>, backupCodeService: BackupCodeService<TID, TDate, TTokenRole, TApplication>, roleService: RoleService<TID, TDate, TTokenRole>, eciesService: ECIESService<TID>);
39
+ tokenVerifiedResponse(req: Request, _res: Response, _next: NextFunction): Promise<IStatusCodeResponse<IApiRequestUserResponse | ApiErrorResponse>>;
40
+ refreshToken(req: Request, _res: Response, _next: NextFunction): Promise<IStatusCodeResponse<IApiLoginResponse | ApiErrorResponse>>;
41
+ register(req: Request, _res: Response, _next: NextFunction): Promise<IStatusCodeResponse<IApiRegistrationResponse | ApiErrorResponse>>;
42
+ completeAccountVerification(_req: Request, _res: Response, _next: NextFunction): Promise<IStatusCodeResponse<IApiMessageResponse | ApiErrorResponse>>;
43
+ setLanguage(req: Request, _res: Response, _next: NextFunction): Promise<IStatusCodeResponse<IApiRequestUserResponse | ApiErrorResponse>>;
44
+ setDarkMode(req: Request, _res: Response, _next: NextFunction): Promise<IStatusCodeResponse<IApiRequestUserResponse | ApiErrorResponse>>;
45
+ getSettings(req: Request, _res: Response, _next: NextFunction): Promise<IStatusCodeResponse<IApiUserSettingsResponse | ApiErrorResponse>>;
46
+ updateSettings(req: Request, _res: Response, _next: NextFunction): Promise<IStatusCodeResponse<IApiRequestUserResponse | ApiErrorResponse>>;
47
+ getBackupCodeCount(req: Request, _res: Response, _next: NextFunction): Promise<IStatusCodeResponse<IApiCodeCountResponse | ApiErrorResponse>>;
48
+ resetBackupCodes(req: Request, _res: Response, _next: NextFunction): Promise<IStatusCodeResponse<IApiBackupCodesResponse | ApiErrorResponse>>;
49
+ recoverMnemonic(req: Request, _res: Response, _next: NextFunction): Promise<IStatusCodeResponse<IApiMnemonicResponse | ApiErrorResponse>>;
50
+ changePassword(req: Request, _res: Response, _next: NextFunction): Promise<IStatusCodeResponse<IApiMessageResponse | ApiErrorResponse>>;
51
+ requestDirectLogin(_req: Request, _res: Response, _next: NextFunction): Promise<IStatusCodeResponse<IApiChallengeResponse | ApiErrorResponse>>;
52
+ directLoginChallenge(req: Request, _res: Response, _next: NextFunction): Promise<IStatusCodeResponse<IApiLoginResponse | ApiErrorResponse>>;
53
+ requestEmailLogin(_req: Request, _res: Response, _next: NextFunction): Promise<IStatusCodeResponse<IApiMessageResponse | ApiErrorResponse>>;
54
+ emailLoginChallenge(req: Request, _res: Response, _next: NextFunction): Promise<IStatusCodeResponse<IApiLoginResponse | ApiErrorResponse>>;
55
+ resendVerification(_req: Request, _res: Response, _next: NextFunction): Promise<IStatusCodeResponse<IApiMessageResponse | ApiErrorResponse>>;
56
+ useBackupCodeLogin(_req: Request, _res: Response, _next: NextFunction): Promise<IStatusCodeResponse<IApiLoginResponse | ApiErrorResponse>>;
57
+ forgotPassword(_req: Request, _res: Response, _next: NextFunction): Promise<IStatusCodeResponse<IApiMessageResponse | ApiErrorResponse>>;
58
+ verifyResetToken(req: Request, _res: Response, _next: NextFunction): Promise<IStatusCodeResponse<IApiMessageResponse | ApiErrorResponse>>;
59
+ resetPassword(_req: Request, _res: Response, _next: NextFunction): Promise<IStatusCodeResponse<IApiMessageResponse | ApiErrorResponse>>;
60
+ }
61
+ //# sourceMappingURL=user.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"user.d.ts","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-node-express-suite-mongo/src/controllers/user.ts"],"names":[],"mappings":"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"}