@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,97 @@
1
+ "use strict";
2
+ /**
3
+ * @fileoverview Mongoose-backed implementation of IAuthenticationProvider.
4
+ * Delegates user lookup, role resolution, and credential verification
5
+ * to the existing Mongoose models and services.
6
+ * @module services/mongo-authentication-provider
7
+ */
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.MongoAuthenticationProvider = void 0;
10
+ const suite_core_lib_1 = require("@digitaldefiance/suite-core-lib");
11
+ const base_model_name_1 = require("../enumerations/base-model-name");
12
+ const model_registry_1 = require("../model-registry");
13
+ const jwt_1 = require("./jwt");
14
+ const request_user_1 = require("./request-user");
15
+ const role_1 = require("./role");
16
+ const mongo_transaction_1 = require("../utils/mongo-transaction");
17
+ const node_express_suite_1 = require("@digitaldefiance/node-express-suite");
18
+ /**
19
+ * Mongoose-backed authentication provider.
20
+ * Uses ModelRegistry, JwtService, RoleService, and UserService
21
+ * to implement the storage-agnostic IAuthenticationProvider interface.
22
+ */
23
+ class MongoAuthenticationProvider {
24
+ application;
25
+ constructor(application) {
26
+ this.application = application;
27
+ }
28
+ async findUserById(userId) {
29
+ const UserModel = model_registry_1.ModelRegistry.instance.getTypedModel(base_model_name_1.BaseModelName.User);
30
+ const userDoc = await UserModel.findById(userId).select('-password').exec();
31
+ if (!userDoc)
32
+ return null;
33
+ return {
34
+ id: String(userDoc._id),
35
+ accountStatus: userDoc.accountStatus,
36
+ email: userDoc.email,
37
+ siteLanguage: userDoc.siteLanguage,
38
+ timezone: userDoc.timezone,
39
+ lastLogin: userDoc.lastLogin?.toString(),
40
+ };
41
+ }
42
+ async buildRequestUserDTO(userId) {
43
+ const UserModel = model_registry_1.ModelRegistry.instance.getTypedModel(base_model_name_1.BaseModelName.User);
44
+ return await (0, mongo_transaction_1.withMongoTransaction)(this.application.db.connection, this.application.environment.mongo.useTransactions, undefined, async (_sess) => {
45
+ const sess = _sess;
46
+ const userDoc = await UserModel.findById(userId)
47
+ .select('-password')
48
+ .session(sess ?? null)
49
+ .exec();
50
+ if (!userDoc || userDoc.accountStatus !== suite_core_lib_1.AccountStatus.Active) {
51
+ return null;
52
+ }
53
+ const roleService = new role_1.RoleService(this
54
+ .application);
55
+ const roles = await roleService.getUserRoles(userDoc._id, sess);
56
+ const tokenRoles = roleService.rolesToTokenRoles(roles);
57
+ return request_user_1.RequestUserService.makeRequestUserDTO(userDoc, tokenRoles);
58
+ }, {
59
+ timeoutMs: this.application.environment.mongo
60
+ .transactionTimeout,
61
+ });
62
+ }
63
+ async verifyToken(token) {
64
+ const jwtService = new jwt_1.JwtService(this.application);
65
+ return (await jwtService.verifyToken(token));
66
+ }
67
+ async authenticateWithMnemonic(email, mnemonic) {
68
+ const userService = this.application.services.get(node_express_suite_1.ServiceKeys.USER);
69
+ const result = await (0, mongo_transaction_1.withMongoTransaction)(this.application.db.connection, this.application.environment.mongo.useTransactions, undefined, async (_sess) => {
70
+ const sess = _sess;
71
+ return await userService.loginWithMnemonic(email, mnemonic, sess);
72
+ }, {
73
+ timeoutMs: this.application.environment.mongo
74
+ .transactionTimeout,
75
+ });
76
+ return {
77
+ userId: String(result.userDoc._id),
78
+ userMember: result.userMember,
79
+ };
80
+ }
81
+ async authenticateWithPassword(email, password) {
82
+ const userService = this.application.services.get(node_express_suite_1.ServiceKeys.USER);
83
+ const result = await (0, mongo_transaction_1.withMongoTransaction)(this.application.db.connection, this.application.environment.mongo.useTransactions, undefined, async (_sess) => {
84
+ const sess = _sess;
85
+ return await userService.loginWithPassword(email, password, sess);
86
+ }, {
87
+ timeoutMs: this.application.environment.mongo
88
+ .transactionTimeout,
89
+ });
90
+ return {
91
+ userId: String(result.userDoc._id),
92
+ userMember: result.userMember,
93
+ };
94
+ }
95
+ }
96
+ exports.MongoAuthenticationProvider = MongoAuthenticationProvider;
97
+ //# sourceMappingURL=mongo-authentication-provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mongo-authentication-provider.js","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-node-express-suite-mongo/src/services/mongo-authentication-provider.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,40 @@
1
+ /**
2
+ * @fileoverview Mongoose/MongoDB implementation of IBackupCodeStore.
3
+ * Provides backward-compatible storage for the BackupCodeService using
4
+ * Mongoose UserDocument and ModelRegistry.
5
+ * @module services/mongo-backup-code-store
6
+ */
7
+ import type { MemberType } from '@digitaldefiance/ecies-lib';
8
+ import type { ClientSession } from '@digitaldefiance/mongoose-types';
9
+ import type { PlatformID } from '@digitaldefiance/node-ecies-lib';
10
+ import type { ITokenRole } from '@digitaldefiance/suite-core-lib';
11
+ import type { IBackupCodeStore, IBackupCodeUserRecord, IBackupCodeUserUpdate } from '@digitaldefiance/node-express-suite';
12
+ import type { IMongoApplication } from '../interfaces/mongo-application';
13
+ import { RoleService } from './role';
14
+ /**
15
+ * Mongoose-backed implementation of IBackupCodeStore.
16
+ *
17
+ * Delegates all persistence to the Mongoose UserModel and uses
18
+ * RoleService for member type resolution. This is the default store
19
+ * used when no custom store is provided to BackupCodeService.
20
+ *
21
+ * @template TID - Platform ID type
22
+ * @template TDate - Date type
23
+ * @template TTokenRole - Token role interface type
24
+ */
25
+ export declare class MongoBackupCodeStore<TID extends PlatformID = Buffer, TDate extends Date = Date, TTokenRole extends ITokenRole<TID, TDate> = ITokenRole<TID, TDate>> implements IBackupCodeStore<TID> {
26
+ private readonly application;
27
+ private readonly roleService;
28
+ private readonly session?;
29
+ constructor(application: IMongoApplication<TID>, roleService: RoleService<TID, TDate, TTokenRole>, session?: ClientSession);
30
+ /**
31
+ * Create a new MongoBackupCodeStore bound to a specific session.
32
+ * Useful for transactional operations.
33
+ */
34
+ withSession(session: ClientSession): MongoBackupCodeStore<TID, TDate, TTokenRole>;
35
+ getUserRecord(userId: TID): Promise<IBackupCodeUserRecord<TID> | null>;
36
+ updateUserRecord(userId: TID, updates: IBackupCodeUserUpdate): Promise<void>;
37
+ getMemberType(userId: TID): Promise<MemberType>;
38
+ fetchBatch(afterId?: string, limit?: number): Promise<Array<IBackupCodeUserRecord<TID>>>;
39
+ }
40
+ //# sourceMappingURL=mongo-backup-code-store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mongo-backup-code-store.d.ts","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-node-express-suite-mongo/src/services/mongo-backup-code-store.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAC7D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AACrE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAClE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAElE,OAAO,KAAK,EACV,gBAAgB,EAChB,qBAAqB,EACrB,qBAAqB,EACtB,MAAM,qCAAqC,CAAC;AAC7C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AAGzE,OAAO,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AAErC;;;;;;;;;;GAUG;AACH,qBAAa,oBAAoB,CAC/B,GAAG,SAAS,UAAU,GAAG,MAAM,EAC/B,KAAK,SAAS,IAAI,GAAG,IAAI,EACzB,UAAU,SAAS,UAAU,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,UAAU,CAAC,GAAG,EAAE,KAAK,CAAC,CAClE,YAAW,gBAAgB,CAAC,GAAG,CAAC;IAChC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAyB;IACrD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAsC;IAClE,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAgB;gBAGvC,WAAW,EAAE,iBAAiB,CAAC,GAAG,CAAC,EACnC,WAAW,EAAE,WAAW,CAAC,GAAG,EAAE,KAAK,EAAE,UAAU,CAAC,EAChD,OAAO,CAAC,EAAE,aAAa;IAOzB;;;OAGG;IACI,WAAW,CAChB,OAAO,EAAE,aAAa,GACrB,oBAAoB,CAAC,GAAG,EAAE,KAAK,EAAE,UAAU,CAAC;IAQlC,aAAa,CACxB,MAAM,EAAE,GAAG,GACV,OAAO,CAAC,qBAAqB,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;IAqBhC,gBAAgB,CAC3B,MAAM,EAAE,GAAG,EACX,OAAO,EAAE,qBAAqB,GAC7B,OAAO,CAAC,IAAI,CAAC;IAsBH,aAAa,CAAC,MAAM,EAAE,GAAG,GAAG,OAAO,CAAC,UAAU,CAAC;IAa/C,UAAU,CACrB,OAAO,CAAC,EAAE,MAAM,EAChB,KAAK,SAAM,GACV,OAAO,CAAC,KAAK,CAAC,qBAAqB,CAAC,GAAG,CAAC,CAAC,CAAC;CA2B9C"}
@@ -0,0 +1,104 @@
1
+ "use strict";
2
+ /**
3
+ * @fileoverview Mongoose/MongoDB implementation of IBackupCodeStore.
4
+ * Provides backward-compatible storage for the BackupCodeService using
5
+ * Mongoose UserDocument and ModelRegistry.
6
+ * @module services/mongo-backup-code-store
7
+ */
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.MongoBackupCodeStore = void 0;
10
+ const base_model_name_1 = require("../enumerations/base-model-name");
11
+ const model_registry_1 = require("../model-registry");
12
+ /**
13
+ * Mongoose-backed implementation of IBackupCodeStore.
14
+ *
15
+ * Delegates all persistence to the Mongoose UserModel and uses
16
+ * RoleService for member type resolution. This is the default store
17
+ * used when no custom store is provided to BackupCodeService.
18
+ *
19
+ * @template TID - Platform ID type
20
+ * @template TDate - Date type
21
+ * @template TTokenRole - Token role interface type
22
+ */
23
+ class MongoBackupCodeStore {
24
+ application;
25
+ roleService;
26
+ session;
27
+ constructor(application, roleService, session) {
28
+ this.application = application;
29
+ this.roleService = roleService;
30
+ this.session = session;
31
+ }
32
+ /**
33
+ * Create a new MongoBackupCodeStore bound to a specific session.
34
+ * Useful for transactional operations.
35
+ */
36
+ withSession(session) {
37
+ return new MongoBackupCodeStore(this.application, this.roleService, session);
38
+ }
39
+ async getUserRecord(userId) {
40
+ const UserModel = model_registry_1.ModelRegistry.instance.getTypedModel(base_model_name_1.BaseModelName.User);
41
+ const doc = await UserModel.findById(userId)
42
+ .session(this.session ?? null)
43
+ .exec();
44
+ if (!doc)
45
+ return null;
46
+ return {
47
+ _id: doc._id,
48
+ username: doc.username,
49
+ email: doc.email,
50
+ publicKey: doc.publicKey,
51
+ backupCodes: doc.backupCodes ?? [],
52
+ passwordWrappedPrivateKey: doc.passwordWrappedPrivateKey,
53
+ createdAt: doc.createdAt,
54
+ updatedAt: doc.updatedAt,
55
+ };
56
+ }
57
+ async updateUserRecord(userId, updates) {
58
+ const UserModel = model_registry_1.ModelRegistry.instance.getTypedModel(base_model_name_1.BaseModelName.User);
59
+ const $set = {};
60
+ if (updates.backupCodes !== undefined) {
61
+ $set['backupCodes'] = updates.backupCodes;
62
+ }
63
+ if (updates.passwordWrappedPrivateKey !== undefined) {
64
+ $set['passwordWrappedPrivateKey'] = updates.passwordWrappedPrivateKey;
65
+ }
66
+ if (Object.keys($set).length > 0) {
67
+ await UserModel.updateOne({ _id: userId }, { $set }, { session: this.session });
68
+ }
69
+ }
70
+ async getMemberType(userId) {
71
+ const UserModel = model_registry_1.ModelRegistry.instance.getTypedModel(base_model_name_1.BaseModelName.User);
72
+ const doc = await UserModel.findById(userId)
73
+ .session(this.session ?? null)
74
+ .exec();
75
+ if (!doc) {
76
+ throw new Error(`User not found: ${userId}`);
77
+ }
78
+ return await this.roleService.getMemberType(doc, this.session);
79
+ }
80
+ async fetchBatch(afterId, limit = 500) {
81
+ const UserModel = model_registry_1.ModelRegistry.instance.getTypedModel(base_model_name_1.BaseModelName.User);
82
+ const query = {};
83
+ if (afterId) {
84
+ query['_id'] = { $gt: afterId };
85
+ }
86
+ const docs = await UserModel.find(query)
87
+ .sort({ _id: 1 })
88
+ .limit(limit)
89
+ .session(this.session ?? null)
90
+ .exec();
91
+ return docs.map((doc) => ({
92
+ _id: doc._id,
93
+ username: doc.username,
94
+ email: doc.email,
95
+ publicKey: doc.publicKey,
96
+ backupCodes: doc.backupCodes ?? [],
97
+ passwordWrappedPrivateKey: doc.passwordWrappedPrivateKey,
98
+ createdAt: doc.createdAt,
99
+ updatedAt: doc.updatedAt,
100
+ }));
101
+ }
102
+ }
103
+ exports.MongoBackupCodeStore = MongoBackupCodeStore;
104
+ //# sourceMappingURL=mongo-backup-code-store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mongo-backup-code-store.js","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-node-express-suite-mongo/src/services/mongo-backup-code-store.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ /**
2
+ * @fileoverview Mongoose-specific base service extending the database-agnostic BaseService.
3
+ * Constrains TApplication to IMongoApplication so subclasses get type-safe
4
+ * access to .db, .getModel(), and .environment.mongo.
5
+ * @module services/mongo-base
6
+ */
7
+ import { IMongoApplication } from '../interfaces/mongo-application';
8
+ import { BaseService } from '@digitaldefiance/node-express-suite';
9
+ import type { PlatformID } from '@digitaldefiance/node-ecies-lib';
10
+ /**
11
+ * Mongoose-specific base service.
12
+ * Extends BaseService with TApplication constrained to IMongoApplication.
13
+ *
14
+ * Use this for services that need Mongoose-specific access (application.db,
15
+ * application.getModel, application.environment.mongo). Services that are
16
+ * database-agnostic should extend BaseService directly.
17
+ *
18
+ * @template TID - Platform ID type (defaults to Buffer)
19
+ * @template TApplication - Must extend IMongoApplication
20
+ */
21
+ export declare class MongoBaseService<TID extends PlatformID = Buffer, TApplication extends IMongoApplication<TID> = IMongoApplication<TID>> extends BaseService<TID, TApplication> {
22
+ constructor(application: TApplication);
23
+ }
24
+ //# 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/services/mongo-base.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AACpE,OAAO,EAAE,WAAW,EAAE,MAAM,qCAAqC,CAAC;AAClE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAElE;;;;;;;;;;GAUG;AACH,qBAAa,gBAAgB,CAC3B,GAAG,SAAS,UAAU,GAAG,MAAM,EAC/B,YAAY,SAAS,iBAAiB,CAAC,GAAG,CAAC,GAAG,iBAAiB,CAAC,GAAG,CAAC,CACpE,SAAQ,WAAW,CAAC,GAAG,EAAE,YAAY,CAAC;gBAC1B,WAAW,EAAE,YAAY;CAGtC"}
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+ /**
3
+ * @fileoverview Mongoose-specific base service extending the database-agnostic BaseService.
4
+ * Constrains TApplication to IMongoApplication so subclasses get type-safe
5
+ * access to .db, .getModel(), and .environment.mongo.
6
+ * @module services/mongo-base
7
+ */
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.MongoBaseService = void 0;
10
+ const node_express_suite_1 = require("@digitaldefiance/node-express-suite");
11
+ /**
12
+ * Mongoose-specific base service.
13
+ * Extends BaseService with TApplication constrained to IMongoApplication.
14
+ *
15
+ * Use this for services that need Mongoose-specific access (application.db,
16
+ * application.getModel, application.environment.mongo). Services that are
17
+ * database-agnostic should extend BaseService directly.
18
+ *
19
+ * @template TID - Platform ID type (defaults to Buffer)
20
+ * @template TApplication - Must extend IMongoApplication
21
+ */
22
+ class MongoBaseService extends node_express_suite_1.BaseService {
23
+ constructor(application) {
24
+ super(application);
25
+ }
26
+ }
27
+ exports.MongoBaseService = MongoBaseService;
28
+ //# sourceMappingURL=mongo-base.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mongo-base.js","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-node-express-suite-mongo/src/services/mongo-base.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AAGH,4EAAkE;AAGlE;;;;;;;;;;GAUG;AACH,MAAa,gBAGX,SAAQ,gCAA8B;IACtC,YAAY,WAAyB;QACnC,KAAK,CAAC,WAAW,CAAC,CAAC;IACrB,CAAC;CACF;AAPD,4CAOC"}
@@ -0,0 +1,52 @@
1
+ /**
2
+ * @fileoverview Mongoose collection adapter implementing ICollection.
3
+ * Wraps a mongoose Model to conform to the shared ICollection interface
4
+ * from brightchain-lib.
5
+ * @module services/mongoose-collection
6
+ */
7
+ import type { AggregationStage, BsonDocument, BulkWriteOperation, BulkWriteOptions, BulkWriteResult, ChangeListener, CollectionSchema, DeleteResult, DocumentId, FilterQuery, FindOptions, ICollection, IndexOptions, IndexSpec, InsertManyResult, InsertOneResult, ReadPreference, ReplaceResult, TextIndexOptions, UpdateOptions, UpdateQuery, UpdateResult, ValidationFieldError, WriteConcern, WriteOptions } from '@digitaldefiance/suite-core-lib';
8
+ import type { Connection } from '@digitaldefiance/mongoose-types';
9
+ /**
10
+ * Adapts a mongoose Model to the ICollection<T> interface.
11
+ * Delegates CRUD, query, index, and bulk operations to the underlying
12
+ * mongoose model. Schema validation methods are no-ops since mongoose
13
+ * handles schema validation internally.
14
+ */
15
+ export declare class MongooseCollection<T extends BsonDocument = BsonDocument> implements ICollection<T> {
16
+ private _model;
17
+ private _writeConcern;
18
+ private _readPreference;
19
+ constructor(connection: Connection, collectionName: string);
20
+ insertOne(doc: T, options?: WriteOptions): Promise<InsertOneResult>;
21
+ insertMany(docs: T[], options?: WriteOptions): Promise<InsertManyResult>;
22
+ findOne(filter?: FilterQuery<T>, options?: FindOptions<T>): Promise<T | null>;
23
+ find(filter?: FilterQuery<T>, options?: FindOptions<T>): Promise<T[]>;
24
+ findById(id: DocumentId): Promise<T | null>;
25
+ updateOne(filter: FilterQuery<T>, update: UpdateQuery<T>, options?: UpdateOptions): Promise<UpdateResult>;
26
+ updateMany(filter: FilterQuery<T>, update: UpdateQuery<T>, options?: UpdateOptions): Promise<UpdateResult>;
27
+ deleteOne(filter: FilterQuery<T>, options?: WriteOptions): Promise<DeleteResult>;
28
+ deleteMany(filter: FilterQuery<T>, options?: WriteOptions): Promise<DeleteResult>;
29
+ replaceOne(filter: FilterQuery<T>, doc: T, options?: UpdateOptions): Promise<ReplaceResult>;
30
+ countDocuments(filter?: FilterQuery<T>): Promise<number>;
31
+ estimatedDocumentCount(): Promise<number>;
32
+ distinct<K extends keyof T>(field: K, filter?: FilterQuery<T>): Promise<Array<T[K]>>;
33
+ aggregate(pipeline: AggregationStage[]): Promise<BsonDocument[]>;
34
+ createIndex(spec: IndexSpec, options?: IndexOptions): Promise<string>;
35
+ dropIndex(name: string): Promise<void>;
36
+ listIndexes(): string[];
37
+ bulkWrite(operations: BulkWriteOperation<T>[], options?: BulkWriteOptions): Promise<BulkWriteResult>;
38
+ watch(listener: ChangeListener<T>): () => void;
39
+ setSchema(_schema: CollectionSchema): void;
40
+ getSchema(): CollectionSchema | undefined;
41
+ removeSchema(): void;
42
+ validateDoc(_doc: T): ValidationFieldError[];
43
+ getWriteConcern(): WriteConcern;
44
+ setWriteConcern(wc: WriteConcern): void;
45
+ getReadPreference(): ReadPreference;
46
+ setReadPreference(rp: ReadPreference): void;
47
+ createTextIndex(options: TextIndexOptions): string;
48
+ dropTextIndex(): void;
49
+ hasTextIndex(): boolean;
50
+ drop(): Promise<void>;
51
+ }
52
+ //# sourceMappingURL=mongoose-collection.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mongoose-collection.d.ts","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-node-express-suite-mongo/src/services/mongoose-collection.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EACV,gBAAgB,EAChB,YAAY,EACZ,kBAAkB,EAClB,gBAAgB,EAChB,eAAe,EACf,cAAc,EACd,gBAAgB,EAChB,YAAY,EACZ,UAAU,EACV,WAAW,EACX,WAAW,EACX,WAAW,EACX,YAAY,EACZ,SAAS,EACT,gBAAgB,EAChB,eAAe,EACf,cAAc,EACd,aAAa,EACb,gBAAgB,EAChB,aAAa,EACb,WAAW,EACX,YAAY,EACZ,oBAAoB,EACpB,YAAY,EACZ,YAAY,EACb,MAAM,iCAAiC,CAAC;AACzC,OAAO,KAAK,EAAE,UAAU,EAAS,MAAM,iCAAiC,CAAC;AAoBzE;;;;;GAKG;AACH,qBAAa,kBAAkB,CAC7B,CAAC,SAAS,YAAY,GAAG,YAAY,CACrC,YAAW,WAAW,CAAC,CAAC,CAAC;IACzB,OAAO,CAAC,MAAM,CAAW;IACzB,OAAO,CAAC,aAAa,CAA0B;IAC/C,OAAO,CAAC,eAAe,CAA6B;gBAExC,UAAU,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM;IAapD,SAAS,CAAC,GAAG,EAAE,CAAC,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,eAAe,CAAC;IAUnE,UAAU,CACd,IAAI,EAAE,CAAC,EAAE,EACT,OAAO,CAAC,EAAE,YAAY,GACrB,OAAO,CAAC,gBAAgB,CAAC;IActB,OAAO,CACX,MAAM,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,EACvB,OAAO,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,GACvB,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC;IAcd,IAAI,CAAC,MAAM,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC;IAoBrE,QAAQ,CAAC,EAAE,EAAE,UAAU,GAAG,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC;IAK3C,SAAS,CACb,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC,EACtB,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC,EACtB,OAAO,CAAC,EAAE,aAAa,GACtB,OAAO,CAAC,YAAY,CAAC;IAgBlB,UAAU,CACd,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC,EACtB,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC,EACtB,OAAO,CAAC,EAAE,aAAa,GACtB,OAAO,CAAC,YAAY,CAAC;IAgBlB,SAAS,CACb,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC,EACtB,OAAO,CAAC,EAAE,YAAY,GACrB,OAAO,CAAC,YAAY,CAAC;IAYlB,UAAU,CACd,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC,EACtB,OAAO,CAAC,EAAE,YAAY,GACrB,OAAO,CAAC,YAAY,CAAC;IAYlB,UAAU,CACd,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC,EACtB,GAAG,EAAE,CAAC,EACN,OAAO,CAAC,EAAE,aAAa,GACtB,OAAO,CAAC,aAAa,CAAC;IAkBnB,cAAc,CAAC,MAAM,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC;IAMxD,sBAAsB,IAAI,OAAO,CAAC,MAAM,CAAC;IAIzC,QAAQ,CAAC,CAAC,SAAS,MAAM,CAAC,EAC9B,KAAK,EAAE,CAAC,EACR,MAAM,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,GACtB,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAOjB,SAAS,CAAC,QAAQ,EAAE,gBAAgB,EAAE,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IAWhE,WAAW,CAAC,IAAI,EAAE,SAAS,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC;IAWrE,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAI5C,WAAW,IAAI,MAAM,EAAE;IASjB,SAAS,CACb,UAAU,EAAE,kBAAkB,CAAC,CAAC,CAAC,EAAE,EACnC,OAAO,CAAC,EAAE,gBAAgB,GACzB,OAAO,CAAC,eAAe,CAAC;IAsE3B,KAAK,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC,CAAC,GAAG,MAAM,IAAI;IAyB9C,SAAS,CAAC,OAAO,EAAE,gBAAgB,GAAG,IAAI;IAI1C,SAAS,IAAI,gBAAgB,GAAG,SAAS;IAKzC,YAAY,IAAI,IAAI;IAIpB,WAAW,CAAC,IAAI,EAAE,CAAC,GAAG,oBAAoB,EAAE;IAO5C,eAAe,IAAI,YAAY;IAI/B,eAAe,CAAC,EAAE,EAAE,YAAY,GAAG,IAAI;IAIvC,iBAAiB,IAAI,cAAc;IAInC,iBAAiB,CAAC,EAAE,EAAE,cAAc,GAAG,IAAI;IAM3C,eAAe,CAAC,OAAO,EAAE,gBAAgB,GAAG,MAAM;IAiBlD,aAAa,IAAI,IAAI;IAOrB,YAAY,IAAI,OAAO;IAQjB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;CAG5B"}