@temboplus/afloat 0.1.57 → 0.1.59

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 (466) hide show
  1. package/LICENSE +7 -0
  2. package/README.md +42 -246
  3. package/esm/_dnt.test_shims.d.ts.map +1 -0
  4. package/esm/deps/jsr.io/@std/assert/1.0.10/almost_equals.d.ts.map +1 -0
  5. package/esm/deps/jsr.io/@std/assert/1.0.10/array_includes.d.ts.map +1 -0
  6. package/esm/deps/jsr.io/@std/assert/1.0.10/assert.d.ts.map +1 -0
  7. package/esm/deps/jsr.io/@std/assert/1.0.10/assertion_error.d.ts.map +1 -0
  8. package/esm/deps/jsr.io/@std/assert/1.0.10/equal.d.ts.map +1 -0
  9. package/esm/deps/jsr.io/@std/assert/1.0.10/equals.d.ts.map +1 -0
  10. package/esm/deps/jsr.io/@std/assert/1.0.10/exists.d.ts.map +1 -0
  11. package/esm/deps/jsr.io/@std/assert/1.0.10/fail.d.ts.map +1 -0
  12. package/esm/deps/jsr.io/@std/assert/1.0.10/false.d.ts.map +1 -0
  13. package/esm/deps/jsr.io/@std/assert/1.0.10/greater.d.ts.map +1 -0
  14. package/esm/deps/jsr.io/@std/assert/1.0.10/greater_or_equal.d.ts.map +1 -0
  15. package/esm/deps/jsr.io/@std/assert/1.0.10/instance_of.d.ts.map +1 -0
  16. package/esm/deps/jsr.io/@std/assert/1.0.10/is_error.d.ts.map +1 -0
  17. package/esm/deps/jsr.io/@std/assert/1.0.10/less.d.ts.map +1 -0
  18. package/esm/deps/jsr.io/@std/assert/1.0.10/less_or_equal.d.ts.map +1 -0
  19. package/esm/deps/jsr.io/@std/assert/1.0.10/match.d.ts.map +1 -0
  20. package/esm/deps/jsr.io/@std/assert/1.0.10/mod.d.ts.map +1 -0
  21. package/esm/deps/jsr.io/@std/assert/1.0.10/not_equals.d.ts.map +1 -0
  22. package/esm/deps/jsr.io/@std/assert/1.0.10/not_instance_of.d.ts.map +1 -0
  23. package/esm/deps/jsr.io/@std/assert/1.0.10/not_match.d.ts.map +1 -0
  24. package/esm/deps/jsr.io/@std/assert/1.0.10/not_strict_equals.d.ts.map +1 -0
  25. package/esm/deps/jsr.io/@std/assert/1.0.10/object_match.d.ts.map +1 -0
  26. package/esm/deps/jsr.io/@std/assert/1.0.10/rejects.d.ts.map +1 -0
  27. package/esm/deps/jsr.io/@std/assert/1.0.10/strict_equals.d.ts.map +1 -0
  28. package/esm/deps/jsr.io/@std/assert/1.0.10/string_includes.d.ts.map +1 -0
  29. package/esm/deps/jsr.io/@std/assert/1.0.10/throws.d.ts.map +1 -0
  30. package/esm/deps/jsr.io/@std/assert/1.0.10/unimplemented.d.ts.map +1 -0
  31. package/esm/deps/jsr.io/@std/assert/1.0.10/unreachable.d.ts.map +1 -0
  32. package/esm/deps/jsr.io/@std/internal/1.0.5/build_message.d.ts.map +1 -0
  33. package/esm/deps/jsr.io/@std/internal/1.0.5/diff.d.ts.map +1 -0
  34. package/esm/deps/jsr.io/@std/internal/1.0.5/diff_str.d.ts.map +1 -0
  35. package/esm/deps/jsr.io/@std/internal/1.0.5/format.d.ts.map +1 -0
  36. package/esm/deps/jsr.io/@std/internal/1.0.5/styles.d.ts.map +1 -0
  37. package/esm/deps/jsr.io/@std/internal/1.0.5/types.d.ts.map +1 -0
  38. package/esm/mod.d.ts +8 -0
  39. package/esm/mod.d.ts.map +1 -0
  40. package/esm/mod.js +7 -0
  41. package/esm/package.json +3 -0
  42. package/{dist/lib/error/error.api.d.ts → esm/src/errors/api_error.d.ts} +1 -0
  43. package/esm/src/errors/api_error.d.ts.map +1 -0
  44. package/esm/src/errors/api_error.js +90 -0
  45. package/esm/src/errors/index.d.ts +3 -0
  46. package/esm/src/errors/index.d.ts.map +1 -0
  47. package/esm/src/errors/index.js +2 -0
  48. package/{dist/lib/error/error.permission.d.ts → esm/src/errors/permission_error.d.ts} +2 -1
  49. package/esm/src/errors/permission_error.d.ts.map +1 -0
  50. package/esm/src/errors/permission_error.js +70 -0
  51. package/{dist/features/admin/admin.contract.d.ts → esm/src/features/admin/contract.d.ts} +77 -41
  52. package/esm/src/features/admin/contract.d.ts.map +1 -0
  53. package/esm/src/features/admin/contract.js +210 -0
  54. package/esm/src/features/admin/index.d.ts +4 -0
  55. package/esm/src/features/admin/index.d.ts.map +1 -0
  56. package/esm/src/features/admin/index.js +3 -0
  57. package/esm/src/features/admin/repository.d.ts +114 -0
  58. package/esm/src/features/admin/repository.d.ts.map +1 -0
  59. package/esm/src/features/admin/repository.js +248 -0
  60. package/{dist/features/admin/admin.dtos.d.ts → esm/src/features/admin/schemas.d.ts} +9 -8
  61. package/esm/src/features/admin/schemas.d.ts.map +1 -0
  62. package/esm/src/features/admin/schemas.js +206 -0
  63. package/{dist/features/auth/access/access.api-contract.d.ts → esm/src/features/auth/access/contract.d.ts} +1 -0
  64. package/esm/src/features/auth/access/contract.d.ts.map +1 -0
  65. package/esm/src/features/auth/access/contract.js +14 -0
  66. package/esm/src/features/auth/access/repository.d.ts +11 -0
  67. package/esm/src/features/auth/access/repository.d.ts.map +1 -0
  68. package/esm/src/features/auth/access/repository.js +25 -0
  69. package/{dist/features/auth/auth.contract.d.ts → esm/src/features/auth/contract.d.ts} +8 -12
  70. package/esm/src/features/auth/contract.d.ts.map +1 -0
  71. package/esm/src/features/auth/contract.js +43 -0
  72. package/{dist/features/auth/identity/identity.api-contract.d.ts → esm/src/features/auth/identity/contract.d.ts} +1 -0
  73. package/esm/src/features/auth/identity/contract.d.ts.map +1 -0
  74. package/esm/src/features/auth/identity/contract.js +17 -0
  75. package/esm/src/features/auth/identity/repository.d.ts +22 -0
  76. package/esm/src/features/auth/identity/repository.d.ts.map +1 -0
  77. package/esm/src/features/auth/identity/repository.js +30 -0
  78. package/esm/src/features/auth/index.d.ts +6 -0
  79. package/esm/src/features/auth/index.d.ts.map +1 -0
  80. package/esm/src/features/auth/index.js +5 -0
  81. package/esm/src/features/auth/manager.d.ts +105 -0
  82. package/esm/src/features/auth/manager.d.ts.map +1 -0
  83. package/esm/src/features/auth/manager.js +181 -0
  84. package/{dist/features/auth/profile/profile.api-contract.d.ts → esm/src/features/auth/profile/contract.d.ts} +6 -8
  85. package/esm/src/features/auth/profile/contract.d.ts.map +1 -0
  86. package/esm/src/features/auth/profile/contract.js +14 -0
  87. package/esm/src/features/auth/profile/repository.d.ts +11 -0
  88. package/esm/src/features/auth/profile/repository.d.ts.map +1 -0
  89. package/esm/src/features/auth/profile/repository.js +25 -0
  90. package/esm/src/features/auth/repository.d.ts +30 -0
  91. package/esm/src/features/auth/repository.d.ts.map +1 -0
  92. package/esm/src/features/auth/repository.js +69 -0
  93. package/{dist/features/auth/storage/client-store.d.ts → esm/src/features/auth/storage/client_store.d.ts} +3 -2
  94. package/esm/src/features/auth/storage/client_store.d.ts.map +1 -0
  95. package/esm/src/features/auth/storage/client_store.js +46 -0
  96. package/{dist/features/auth/storage/client-token-handler.d.ts → esm/src/features/auth/storage/client_token_handler.d.ts} +2 -1
  97. package/esm/src/features/auth/storage/client_token_handler.d.ts.map +1 -0
  98. package/esm/src/features/auth/storage/client_token_handler.js +36 -0
  99. package/esm/src/features/auth/storage/server_store.d.ts +24 -0
  100. package/esm/src/features/auth/storage/server_store.d.ts.map +1 -0
  101. package/esm/src/features/auth/storage/server_store.js +34 -0
  102. package/esm/src/features/auth/storage/server_token_handler.d.ts +36 -0
  103. package/esm/src/features/auth/storage/server_token_handler.d.ts.map +1 -0
  104. package/esm/src/features/auth/storage/server_token_handler.js +115 -0
  105. package/{dist → esm/src}/features/auth/storage/types.d.ts +2 -1
  106. package/esm/src/features/auth/storage/types.d.ts.map +1 -0
  107. package/esm/src/features/auth/storage/types.js +1 -0
  108. package/{dist/features/contact/contact.api-contract.d.ts → esm/src/features/contact/contract.d.ts} +45 -101
  109. package/esm/src/features/contact/contract.d.ts.map +1 -0
  110. package/esm/src/features/contact/contract.js +49 -0
  111. package/esm/src/features/contact/index.d.ts +2 -0
  112. package/esm/src/features/contact/index.d.ts.map +1 -0
  113. package/esm/src/features/contact/index.js +1 -0
  114. package/esm/src/features/contact/repository.d.ts +58 -0
  115. package/esm/src/features/contact/repository.d.ts.map +1 -0
  116. package/esm/src/features/contact/repository.js +108 -0
  117. package/{dist/features/payout/payout.api-contract.d.ts → esm/src/features/payout/contract.d.ts} +187 -351
  118. package/esm/src/features/payout/contract.d.ts.map +1 -0
  119. package/esm/src/features/payout/contract.js +75 -0
  120. package/esm/src/features/payout/index.d.ts +2 -0
  121. package/esm/src/features/payout/index.d.ts.map +1 -0
  122. package/esm/src/features/payout/index.js +1 -0
  123. package/esm/src/features/payout/repository.d.ts +67 -0
  124. package/esm/src/features/payout/repository.d.ts.map +1 -0
  125. package/esm/src/features/payout/repository.js +163 -0
  126. package/{dist/features/wallet/wallet.contract.d.ts → esm/src/features/wallet/contract.d.ts} +7 -9
  127. package/esm/src/features/wallet/contract.d.ts.map +1 -0
  128. package/esm/src/features/wallet/contract.js +38 -0
  129. package/esm/src/features/wallet/index.d.ts +2 -0
  130. package/esm/src/features/wallet/index.d.ts.map +1 -0
  131. package/esm/src/features/wallet/index.js +1 -0
  132. package/esm/src/features/wallet/repository.d.ts +57 -0
  133. package/esm/src/features/wallet/repository.d.ts.map +1 -0
  134. package/esm/src/features/wallet/repository.js +93 -0
  135. package/{dist/models/contact.model.d.ts → esm/src/models/contact/derivatives/contact.d.ts} +16 -23
  136. package/esm/src/models/contact/derivatives/contact.d.ts.map +1 -0
  137. package/esm/src/models/contact/derivatives/contact.js +266 -0
  138. package/esm/src/models/contact/derivatives/contact.test.d.ts.map +1 -0
  139. package/esm/src/models/contact/derivatives/contact_info.d.ts +188 -0
  140. package/esm/src/models/contact/derivatives/contact_info.d.ts.map +1 -0
  141. package/esm/src/models/contact/derivatives/contact_info.js +255 -0
  142. package/esm/src/models/contact/derivatives/contact_info.test.d.ts.map +1 -0
  143. package/esm/src/models/contact/index.d.ts +5 -0
  144. package/esm/src/models/contact/index.d.ts.map +1 -0
  145. package/esm/src/models/contact/index.js +4 -0
  146. package/esm/src/models/contact/schemas.d.ts +66 -0
  147. package/esm/src/models/contact/schemas.d.ts.map +1 -0
  148. package/esm/src/models/contact/schemas.js +64 -0
  149. package/esm/src/models/contact/validation.d.ts +37 -0
  150. package/esm/src/models/contact/validation.d.ts.map +1 -0
  151. package/esm/src/models/contact/validation.js +146 -0
  152. package/esm/src/models/contact/validation.test.d.ts.map +1 -0
  153. package/esm/src/models/index.d.ts +7 -0
  154. package/esm/src/models/index.d.ts.map +1 -0
  155. package/esm/src/models/index.js +6 -0
  156. package/esm/src/models/payout/api.d.ts +29 -0
  157. package/esm/src/models/payout/api.d.ts.map +1 -0
  158. package/esm/src/models/payout/api.js +1 -0
  159. package/esm/src/models/payout/channel.d.ts +58 -0
  160. package/esm/src/models/payout/channel.d.ts.map +1 -0
  161. package/esm/src/models/payout/channel.js +53 -0
  162. package/{dist/models/payout.model.d.ts → esm/src/models/payout/derivatives/payout.d.ts} +17 -13
  163. package/esm/src/models/payout/derivatives/payout.d.ts.map +1 -0
  164. package/esm/src/models/payout/derivatives/payout.js +265 -0
  165. package/esm/src/models/payout/derivatives/payout.test.d.ts.map +1 -0
  166. package/esm/src/models/payout/index.d.ts +6 -0
  167. package/esm/src/models/payout/index.d.ts.map +1 -0
  168. package/esm/src/models/payout/index.js +5 -0
  169. package/esm/src/models/payout/schemas.d.ts +156 -0
  170. package/esm/src/models/payout/schemas.d.ts.map +1 -0
  171. package/esm/src/models/payout/schemas.js +105 -0
  172. package/esm/src/models/payout/status.d.ts +33 -0
  173. package/esm/src/models/payout/status.d.ts.map +1 -0
  174. package/esm/src/models/payout/status.js +34 -0
  175. package/{dist → esm/src}/models/permission.d.ts +2 -1
  176. package/esm/src/models/permission.d.ts.map +1 -0
  177. package/esm/src/models/permission.js +50 -0
  178. package/{dist/models/role.model.d.ts → esm/src/models/role.d.ts} +10 -2
  179. package/esm/src/models/role.d.ts.map +1 -0
  180. package/esm/src/models/role.js +73 -0
  181. package/esm/src/models/user/authenticated-user.d.ts +77 -0
  182. package/esm/src/models/user/authenticated-user.d.ts.map +1 -0
  183. package/esm/src/models/user/authenticated-user.js +226 -0
  184. package/esm/src/models/user/index.d.ts +4 -0
  185. package/esm/src/models/user/index.d.ts.map +1 -0
  186. package/esm/src/models/user/index.js +3 -0
  187. package/{dist/models/managed-user.model.d.ts → esm/src/models/user/managed-user.d.ts} +3 -3
  188. package/esm/src/models/user/managed-user.d.ts.map +1 -0
  189. package/esm/src/models/user/managed-user.js +255 -0
  190. package/{dist/models/profile.model.d.ts → esm/src/models/user/profile.d.ts} +43 -37
  191. package/esm/src/models/user/profile.d.ts.map +1 -0
  192. package/esm/src/models/user/profile.js +334 -0
  193. package/esm/src/models/wallet/index.d.ts +4 -0
  194. package/esm/src/models/wallet/index.d.ts.map +1 -0
  195. package/esm/src/models/wallet/index.js +3 -0
  196. package/esm/src/models/wallet/schemas.d.ts +95 -0
  197. package/esm/src/models/wallet/schemas.d.ts.map +1 -0
  198. package/esm/src/models/wallet/schemas.js +35 -0
  199. package/esm/src/models/wallet/statement_entry.d.ts +160 -0
  200. package/esm/src/models/wallet/statement_entry.d.ts.map +1 -0
  201. package/esm/src/models/wallet/statement_entry.js +255 -0
  202. package/{dist/models/wallet.model.d.ts → esm/src/models/wallet/wallet.d.ts} +46 -3
  203. package/esm/src/models/wallet/wallet.d.ts.map +1 -0
  204. package/esm/src/models/wallet/wallet.js +279 -0
  205. package/{dist/lib/api/base-repository.d.ts → esm/src/shared/base_repository.d.ts} +42 -137
  206. package/esm/src/shared/base_repository.d.ts.map +1 -0
  207. package/esm/src/shared/base_repository.js +153 -0
  208. package/{dist/lib/api/common-responses.d.ts → esm/src/shared/common_responses.d.ts} +1 -0
  209. package/esm/src/shared/common_responses.d.ts.map +1 -0
  210. package/esm/src/shared/common_responses.js +10 -0
  211. package/esm/src/shared/index.d.ts +3 -0
  212. package/esm/src/shared/index.d.ts.map +1 -0
  213. package/esm/src/shared/index.js +2 -0
  214. package/esm/src/shared/token_required_repository.d.ts +78 -0
  215. package/esm/src/shared/token_required_repository.d.ts.map +1 -0
  216. package/esm/src/shared/token_required_repository.js +128 -0
  217. package/package.json +25 -47
  218. package/script/_dnt.test_shims.d.ts.map +1 -0
  219. package/script/deps/jsr.io/@std/assert/1.0.10/almost_equals.d.ts.map +1 -0
  220. package/script/deps/jsr.io/@std/assert/1.0.10/array_includes.d.ts.map +1 -0
  221. package/script/deps/jsr.io/@std/assert/1.0.10/assert.d.ts.map +1 -0
  222. package/script/deps/jsr.io/@std/assert/1.0.10/assertion_error.d.ts.map +1 -0
  223. package/script/deps/jsr.io/@std/assert/1.0.10/equal.d.ts.map +1 -0
  224. package/script/deps/jsr.io/@std/assert/1.0.10/equals.d.ts.map +1 -0
  225. package/script/deps/jsr.io/@std/assert/1.0.10/exists.d.ts.map +1 -0
  226. package/script/deps/jsr.io/@std/assert/1.0.10/fail.d.ts.map +1 -0
  227. package/script/deps/jsr.io/@std/assert/1.0.10/false.d.ts.map +1 -0
  228. package/script/deps/jsr.io/@std/assert/1.0.10/greater.d.ts.map +1 -0
  229. package/script/deps/jsr.io/@std/assert/1.0.10/greater_or_equal.d.ts.map +1 -0
  230. package/script/deps/jsr.io/@std/assert/1.0.10/instance_of.d.ts.map +1 -0
  231. package/script/deps/jsr.io/@std/assert/1.0.10/is_error.d.ts.map +1 -0
  232. package/script/deps/jsr.io/@std/assert/1.0.10/less.d.ts.map +1 -0
  233. package/script/deps/jsr.io/@std/assert/1.0.10/less_or_equal.d.ts.map +1 -0
  234. package/script/deps/jsr.io/@std/assert/1.0.10/match.d.ts.map +1 -0
  235. package/script/deps/jsr.io/@std/assert/1.0.10/mod.d.ts.map +1 -0
  236. package/script/deps/jsr.io/@std/assert/1.0.10/not_equals.d.ts.map +1 -0
  237. package/script/deps/jsr.io/@std/assert/1.0.10/not_instance_of.d.ts.map +1 -0
  238. package/script/deps/jsr.io/@std/assert/1.0.10/not_match.d.ts.map +1 -0
  239. package/script/deps/jsr.io/@std/assert/1.0.10/not_strict_equals.d.ts.map +1 -0
  240. package/script/deps/jsr.io/@std/assert/1.0.10/object_match.d.ts.map +1 -0
  241. package/script/deps/jsr.io/@std/assert/1.0.10/rejects.d.ts.map +1 -0
  242. package/script/deps/jsr.io/@std/assert/1.0.10/strict_equals.d.ts.map +1 -0
  243. package/script/deps/jsr.io/@std/assert/1.0.10/string_includes.d.ts.map +1 -0
  244. package/script/deps/jsr.io/@std/assert/1.0.10/throws.d.ts.map +1 -0
  245. package/script/deps/jsr.io/@std/assert/1.0.10/unimplemented.d.ts.map +1 -0
  246. package/script/deps/jsr.io/@std/assert/1.0.10/unreachable.d.ts.map +1 -0
  247. package/script/deps/jsr.io/@std/internal/1.0.5/build_message.d.ts.map +1 -0
  248. package/script/deps/jsr.io/@std/internal/1.0.5/diff.d.ts.map +1 -0
  249. package/script/deps/jsr.io/@std/internal/1.0.5/diff_str.d.ts.map +1 -0
  250. package/script/deps/jsr.io/@std/internal/1.0.5/format.d.ts.map +1 -0
  251. package/script/deps/jsr.io/@std/internal/1.0.5/styles.d.ts.map +1 -0
  252. package/script/deps/jsr.io/@std/internal/1.0.5/types.d.ts.map +1 -0
  253. package/script/mod.d.ts +8 -0
  254. package/script/mod.d.ts.map +1 -0
  255. package/script/mod.js +23 -0
  256. package/script/package.json +3 -0
  257. package/script/src/errors/api_error.d.ts +63 -0
  258. package/script/src/errors/api_error.d.ts.map +1 -0
  259. package/script/src/errors/api_error.js +94 -0
  260. package/script/src/errors/index.d.ts +3 -0
  261. package/script/src/errors/index.d.ts.map +1 -0
  262. package/script/src/errors/index.js +18 -0
  263. package/script/src/errors/permission_error.d.ts +48 -0
  264. package/script/src/errors/permission_error.d.ts.map +1 -0
  265. package/script/src/errors/permission_error.js +74 -0
  266. package/script/src/features/admin/contract.d.ts +842 -0
  267. package/script/src/features/admin/contract.d.ts.map +1 -0
  268. package/script/src/features/admin/contract.js +213 -0
  269. package/script/src/features/admin/index.d.ts +4 -0
  270. package/script/src/features/admin/index.d.ts.map +1 -0
  271. package/script/src/features/admin/index.js +19 -0
  272. package/script/src/features/admin/repository.d.ts +114 -0
  273. package/script/src/features/admin/repository.d.ts.map +1 -0
  274. package/script/src/features/admin/repository.js +252 -0
  275. package/script/src/features/admin/schemas.d.ts +146 -0
  276. package/script/src/features/admin/schemas.d.ts.map +1 -0
  277. package/script/src/features/admin/schemas.js +209 -0
  278. package/script/src/features/auth/access/contract.d.ts +14 -0
  279. package/script/src/features/auth/access/contract.d.ts.map +1 -0
  280. package/script/src/features/auth/access/contract.js +17 -0
  281. package/script/src/features/auth/access/repository.d.ts +11 -0
  282. package/script/src/features/auth/access/repository.d.ts.map +1 -0
  283. package/script/src/features/auth/access/repository.js +29 -0
  284. package/script/src/features/auth/contract.d.ts +112 -0
  285. package/script/src/features/auth/contract.d.ts.map +1 -0
  286. package/script/src/features/auth/contract.js +46 -0
  287. package/script/src/features/auth/identity/contract.d.ts +23 -0
  288. package/script/src/features/auth/identity/contract.d.ts.map +1 -0
  289. package/script/src/features/auth/identity/contract.js +20 -0
  290. package/script/src/features/auth/identity/repository.d.ts +22 -0
  291. package/script/src/features/auth/identity/repository.d.ts.map +1 -0
  292. package/script/src/features/auth/identity/repository.js +34 -0
  293. package/script/src/features/auth/index.d.ts +6 -0
  294. package/script/src/features/auth/index.d.ts.map +1 -0
  295. package/script/src/features/auth/index.js +21 -0
  296. package/script/src/features/auth/manager.d.ts +105 -0
  297. package/script/src/features/auth/manager.d.ts.map +1 -0
  298. package/script/src/features/auth/manager.js +185 -0
  299. package/script/src/features/auth/profile/contract.d.ts +37 -0
  300. package/script/src/features/auth/profile/contract.d.ts.map +1 -0
  301. package/script/src/features/auth/profile/contract.js +17 -0
  302. package/script/src/features/auth/profile/repository.d.ts +11 -0
  303. package/script/src/features/auth/profile/repository.d.ts.map +1 -0
  304. package/script/src/features/auth/profile/repository.js +29 -0
  305. package/script/src/features/auth/repository.d.ts +30 -0
  306. package/script/src/features/auth/repository.d.ts.map +1 -0
  307. package/script/src/features/auth/repository.js +73 -0
  308. package/script/src/features/auth/storage/client_store.d.ts +30 -0
  309. package/script/src/features/auth/storage/client_store.d.ts.map +1 -0
  310. package/script/src/features/auth/storage/client_store.js +51 -0
  311. package/script/src/features/auth/storage/client_token_handler.d.ts +32 -0
  312. package/script/src/features/auth/storage/client_token_handler.d.ts.map +1 -0
  313. package/script/src/features/auth/storage/client_token_handler.js +40 -0
  314. package/script/src/features/auth/storage/server_store.d.ts +24 -0
  315. package/script/src/features/auth/storage/server_store.d.ts.map +1 -0
  316. package/script/src/features/auth/storage/server_store.js +38 -0
  317. package/script/src/features/auth/storage/server_token_handler.d.ts +36 -0
  318. package/script/src/features/auth/storage/server_token_handler.d.ts.map +1 -0
  319. package/script/src/features/auth/storage/server_token_handler.js +119 -0
  320. package/script/src/features/auth/storage/types.d.ts +42 -0
  321. package/script/src/features/auth/storage/types.d.ts.map +1 -0
  322. package/script/src/features/auth/storage/types.js +2 -0
  323. package/script/src/features/contact/contract.d.ts +170 -0
  324. package/script/src/features/contact/contract.d.ts.map +1 -0
  325. package/script/src/features/contact/contract.js +52 -0
  326. package/script/src/features/contact/index.d.ts +2 -0
  327. package/script/src/features/contact/index.d.ts.map +1 -0
  328. package/script/src/features/contact/index.js +17 -0
  329. package/script/src/features/contact/repository.d.ts +58 -0
  330. package/script/src/features/contact/repository.d.ts.map +1 -0
  331. package/script/src/features/contact/repository.js +112 -0
  332. package/script/src/features/payout/contract.d.ts +623 -0
  333. package/script/src/features/payout/contract.d.ts.map +1 -0
  334. package/script/src/features/payout/contract.js +78 -0
  335. package/script/src/features/payout/index.d.ts +2 -0
  336. package/script/src/features/payout/index.d.ts.map +1 -0
  337. package/script/src/features/payout/index.js +17 -0
  338. package/script/src/features/payout/repository.d.ts +67 -0
  339. package/script/src/features/payout/repository.d.ts.map +1 -0
  340. package/script/src/features/payout/repository.js +167 -0
  341. package/script/src/features/wallet/contract.d.ts +137 -0
  342. package/script/src/features/wallet/contract.d.ts.map +1 -0
  343. package/script/src/features/wallet/contract.js +41 -0
  344. package/script/src/features/wallet/index.d.ts +2 -0
  345. package/script/src/features/wallet/index.d.ts.map +1 -0
  346. package/script/src/features/wallet/index.js +17 -0
  347. package/script/src/features/wallet/repository.d.ts +57 -0
  348. package/script/src/features/wallet/repository.d.ts.map +1 -0
  349. package/script/src/features/wallet/repository.js +97 -0
  350. package/script/src/models/contact/derivatives/contact.d.ts +172 -0
  351. package/script/src/models/contact/derivatives/contact.d.ts.map +1 -0
  352. package/script/src/models/contact/derivatives/contact.js +270 -0
  353. package/script/src/models/contact/derivatives/contact.test.d.ts.map +1 -0
  354. package/script/src/models/contact/derivatives/contact_info.d.ts +188 -0
  355. package/script/src/models/contact/derivatives/contact_info.d.ts.map +1 -0
  356. package/script/src/models/contact/derivatives/contact_info.js +260 -0
  357. package/script/src/models/contact/derivatives/contact_info.test.d.ts.map +1 -0
  358. package/script/src/models/contact/index.d.ts +5 -0
  359. package/script/src/models/contact/index.d.ts.map +1 -0
  360. package/script/src/models/contact/index.js +20 -0
  361. package/script/src/models/contact/schemas.d.ts +66 -0
  362. package/script/src/models/contact/schemas.d.ts.map +1 -0
  363. package/script/src/models/contact/schemas.js +67 -0
  364. package/script/src/models/contact/validation.d.ts +37 -0
  365. package/script/src/models/contact/validation.d.ts.map +1 -0
  366. package/script/src/models/contact/validation.js +153 -0
  367. package/script/src/models/contact/validation.test.d.ts.map +1 -0
  368. package/script/src/models/index.d.ts +7 -0
  369. package/script/src/models/index.d.ts.map +1 -0
  370. package/script/src/models/index.js +22 -0
  371. package/script/src/models/payout/api.d.ts +29 -0
  372. package/script/src/models/payout/api.d.ts.map +1 -0
  373. package/script/src/models/payout/api.js +2 -0
  374. package/script/src/models/payout/channel.d.ts +58 -0
  375. package/script/src/models/payout/channel.d.ts.map +1 -0
  376. package/script/src/models/payout/channel.js +56 -0
  377. package/script/src/models/payout/derivatives/payout.d.ts +158 -0
  378. package/script/src/models/payout/derivatives/payout.d.ts.map +1 -0
  379. package/script/src/models/payout/derivatives/payout.js +269 -0
  380. package/script/src/models/payout/derivatives/payout.test.d.ts.map +1 -0
  381. package/script/src/models/payout/index.d.ts +6 -0
  382. package/script/src/models/payout/index.d.ts.map +1 -0
  383. package/script/src/models/payout/index.js +21 -0
  384. package/script/src/models/payout/schemas.d.ts +156 -0
  385. package/script/src/models/payout/schemas.d.ts.map +1 -0
  386. package/script/src/models/payout/schemas.js +108 -0
  387. package/script/src/models/payout/status.d.ts +33 -0
  388. package/script/src/models/payout/status.d.ts.map +1 -0
  389. package/script/src/models/payout/status.js +37 -0
  390. package/script/src/models/permission.d.ts +55 -0
  391. package/script/src/models/permission.d.ts.map +1 -0
  392. package/script/src/models/permission.js +53 -0
  393. package/script/src/models/role.d.ts +21 -0
  394. package/script/src/models/role.d.ts.map +1 -0
  395. package/script/src/models/role.js +77 -0
  396. package/script/src/models/user/authenticated-user.d.ts +77 -0
  397. package/script/src/models/user/authenticated-user.d.ts.map +1 -0
  398. package/script/src/models/user/authenticated-user.js +230 -0
  399. package/script/src/models/user/index.d.ts +4 -0
  400. package/script/src/models/user/index.d.ts.map +1 -0
  401. package/script/src/models/user/index.js +19 -0
  402. package/script/src/models/user/managed-user.d.ts +108 -0
  403. package/script/src/models/user/managed-user.d.ts.map +1 -0
  404. package/script/src/models/user/managed-user.js +260 -0
  405. package/script/src/models/user/profile.d.ts +161 -0
  406. package/script/src/models/user/profile.d.ts.map +1 -0
  407. package/script/src/models/user/profile.js +338 -0
  408. package/script/src/models/wallet/index.d.ts +4 -0
  409. package/script/src/models/wallet/index.d.ts.map +1 -0
  410. package/script/src/models/wallet/index.js +19 -0
  411. package/script/src/models/wallet/schemas.d.ts +95 -0
  412. package/script/src/models/wallet/schemas.d.ts.map +1 -0
  413. package/script/src/models/wallet/schemas.js +38 -0
  414. package/script/src/models/wallet/statement_entry.d.ts +160 -0
  415. package/script/src/models/wallet/statement_entry.d.ts.map +1 -0
  416. package/script/src/models/wallet/statement_entry.js +259 -0
  417. package/script/src/models/wallet/wallet.d.ts +147 -0
  418. package/script/src/models/wallet/wallet.d.ts.map +1 -0
  419. package/script/src/models/wallet/wallet.js +283 -0
  420. package/script/src/shared/base_repository.d.ts +80 -0
  421. package/script/src/shared/base_repository.d.ts.map +1 -0
  422. package/script/src/shared/base_repository.js +157 -0
  423. package/script/src/shared/common_responses.d.ts +13 -0
  424. package/script/src/shared/common_responses.d.ts.map +1 -0
  425. package/script/src/shared/common_responses.js +13 -0
  426. package/script/src/shared/index.d.ts +3 -0
  427. package/script/src/shared/index.d.ts.map +1 -0
  428. package/script/src/shared/index.js +18 -0
  429. package/script/src/shared/token_required_repository.d.ts +78 -0
  430. package/script/src/shared/token_required_repository.d.ts.map +1 -0
  431. package/script/src/shared/token_required_repository.js +132 -0
  432. package/dist/features/admin/admin.repository.d.ts +0 -179
  433. package/dist/features/admin/index.d.ts +0 -2
  434. package/dist/features/auth/access/access.repository.d.ts +0 -55
  435. package/dist/features/auth/auth.manager.d.ts +0 -249
  436. package/dist/features/auth/auth.repository.d.ts +0 -66
  437. package/dist/features/auth/auth.store.d.ts +0 -139
  438. package/dist/features/auth/identity/identity.repository.d.ts +0 -58
  439. package/dist/features/auth/index.d.ts +0 -5
  440. package/dist/features/auth/profile/profile.dtos.d.ts +0 -80
  441. package/dist/features/auth/profile/profile.repository.d.ts +0 -56
  442. package/dist/features/contact/contact-input-handler.d.ts +0 -16
  443. package/dist/features/contact/contact.dtos.d.ts +0 -90
  444. package/dist/features/contact/contact.repository.d.ts +0 -116
  445. package/dist/features/contact/index.d.ts +0 -2
  446. package/dist/features/payout/index.d.ts +0 -3
  447. package/dist/features/payout/payout-channel-handler.d.ts +0 -108
  448. package/dist/features/payout/payout.dtos.d.ts +0 -365
  449. package/dist/features/payout/payout.repository.d.ts +0 -193
  450. package/dist/features/wallet/index.d.ts +0 -4
  451. package/dist/features/wallet/wallet-manager.session.d.ts +0 -143
  452. package/dist/features/wallet/wallet.dtos.d.ts +0 -204
  453. package/dist/features/wallet/wallet.repository.d.ts +0 -120
  454. package/dist/features/wallet/wallet.utils.d.ts +0 -17
  455. package/dist/index.cjs.js +0 -2
  456. package/dist/index.cjs.js.map +0 -1
  457. package/dist/index.d.ts +0 -7
  458. package/dist/index.esm.js +0 -2
  459. package/dist/index.esm.js.map +0 -1
  460. package/dist/lib/api/index.d.ts +0 -2
  461. package/dist/lib/error/error.utils.d.ts +0 -22
  462. package/dist/lib/error/index.d.ts +0 -3
  463. package/dist/models/contact-info.model.d.ts +0 -817
  464. package/dist/models/index.d.ts +0 -10
  465. package/dist/models/statement-entry.model.d.ts +0 -195
  466. package/dist/models/user.model.d.ts +0 -65
@@ -0,0 +1,210 @@
1
+ import { initContract } from "@ts-rest/core";
2
+ import { z } from "zod";
3
+ import { UserManagementSchemas } from "./schemas.js";
4
+ // ====================== API Contract ====================== //
5
+ const c = initContract();
6
+ export const userManagementContract = c.router({
7
+ // List all users
8
+ getUsers: {
9
+ method: "GET",
10
+ path: "/login",
11
+ query: UserManagementSchemas.managedUserQueryParams,
12
+ responses: {
13
+ 200: z.array(UserManagementSchemas.managedUser),
14
+ 401: z.object({
15
+ message: z.string().optional(),
16
+ }),
17
+ 403: z.object({
18
+ message: z.string().optional(),
19
+ }),
20
+ },
21
+ summary: "List all user accounts",
22
+ description: "Retrieve a list of all user accounts in the system",
23
+ },
24
+ // Get user by ID
25
+ getUser: {
26
+ method: "GET",
27
+ path: "/login/:id",
28
+ pathParams: z.object({
29
+ id: z.string(),
30
+ }),
31
+ query: UserManagementSchemas.managedUserQueryParams,
32
+ responses: {
33
+ 200: UserManagementSchemas.managedUser,
34
+ 401: z.object({
35
+ message: z.string().optional(),
36
+ }),
37
+ 403: z.object({
38
+ message: z.string().optional(),
39
+ }),
40
+ 404: z.object({
41
+ message: z.string().optional(),
42
+ }),
43
+ },
44
+ summary: "Get user account details",
45
+ description: "Retrieve detailed information about a specific user account",
46
+ },
47
+ // Create new user
48
+ createUser: {
49
+ method: "POST",
50
+ path: "/login",
51
+ body: UserManagementSchemas.createUserRequest,
52
+ responses: {
53
+ 201: UserManagementSchemas.createUserResponse,
54
+ 400: z.object({
55
+ message: z.string().optional(),
56
+ errors: z.array(z.string()).optional(),
57
+ }),
58
+ 401: z.object({
59
+ message: z.string().optional(),
60
+ }),
61
+ 403: z.object({
62
+ message: z.string().optional(),
63
+ }),
64
+ 409: z.object({
65
+ message: z.string().optional(),
66
+ }),
67
+ },
68
+ summary: "Create new user account",
69
+ description: "Create a new user account with specified role and permissions",
70
+ },
71
+ // Update user
72
+ updateUser: {
73
+ method: "PATCH",
74
+ path: "/login/:id",
75
+ pathParams: z.object({
76
+ id: z.string(),
77
+ }),
78
+ body: UserManagementSchemas.updateUserRequest,
79
+ responses: {
80
+ 200: UserManagementSchemas.managedUser,
81
+ 400: z.object({
82
+ message: z.string().optional(),
83
+ errors: z.array(z.string()).optional(),
84
+ }),
85
+ 401: z.object({
86
+ message: z.string().optional(),
87
+ }),
88
+ 403: z.object({
89
+ message: z.string().optional(),
90
+ }),
91
+ 404: z.object({
92
+ message: z.string().optional(),
93
+ }),
94
+ },
95
+ summary: "Update user account",
96
+ description: "Update user account information, role, status, or force password reset",
97
+ },
98
+ // Archive user (soft delete)
99
+ archiveUser: {
100
+ method: "POST",
101
+ path: "/login/:id/archive",
102
+ pathParams: z.object({
103
+ id: z.string(),
104
+ }),
105
+ body: z.object({}),
106
+ responses: {
107
+ 200: UserManagementSchemas.managedUser,
108
+ 401: z.object({
109
+ message: z.string().optional(),
110
+ }),
111
+ 403: z.object({
112
+ message: z.string().optional(),
113
+ }),
114
+ 404: z.object({
115
+ message: z.string().optional(),
116
+ }),
117
+ },
118
+ summary: "Archive user account",
119
+ description: "Archive (soft delete) a user account",
120
+ },
121
+ // Archive user (soft delete)
122
+ unArchiveUser: {
123
+ method: "POST",
124
+ path: "/login/:id/unarchive",
125
+ pathParams: z.object({
126
+ id: z.string(),
127
+ }),
128
+ body: z.object({}),
129
+ responses: {
130
+ 200: UserManagementSchemas.managedUser,
131
+ 401: z.object({
132
+ message: z.string().optional(),
133
+ }),
134
+ 403: z.object({
135
+ message: z.string().optional(),
136
+ }),
137
+ 404: z.object({
138
+ message: z.string().optional(),
139
+ }),
140
+ },
141
+ summary: "Un-archive user account",
142
+ description: "Un-archive (soft delete) a user account",
143
+ },
144
+ // Reset user password
145
+ resetPassword: {
146
+ method: "POST",
147
+ path: "/login/:id/reset-password",
148
+ pathParams: z.object({
149
+ id: z.string(),
150
+ }),
151
+ body: UserManagementSchemas.resetPasswordRequest,
152
+ responses: {
153
+ 200: z.object({
154
+ success: z.boolean(),
155
+ }),
156
+ 400: z.object({
157
+ message: z.string().optional(),
158
+ }),
159
+ 401: z.object({
160
+ message: z.string().optional(),
161
+ }),
162
+ 403: z.object({
163
+ message: z.string().optional(),
164
+ }),
165
+ 404: z.object({
166
+ message: z.string().optional(),
167
+ }),
168
+ },
169
+ summary: "Reset user password",
170
+ description: "Reset a user's password and optionally send notification",
171
+ },
172
+ // Get all roles
173
+ getRoles: {
174
+ method: "GET",
175
+ path: "/role",
176
+ responses: {
177
+ 200: z.array(UserManagementSchemas.role),
178
+ 401: z.object({
179
+ message: z.string().optional(),
180
+ }),
181
+ 403: z.object({
182
+ message: z.string().optional(),
183
+ }),
184
+ },
185
+ summary: "List all roles",
186
+ description: "Retrieve a list of all available roles in the system",
187
+ },
188
+ // Get role by ID
189
+ getRole: {
190
+ method: "GET",
191
+ path: "/role/:id",
192
+ pathParams: z.object({
193
+ id: z.string(),
194
+ }),
195
+ responses: {
196
+ 200: UserManagementSchemas.role,
197
+ 401: z.object({
198
+ message: z.string().optional(),
199
+ }),
200
+ 403: z.object({
201
+ message: z.string().optional(),
202
+ }),
203
+ 404: z.object({
204
+ message: z.string().optional(),
205
+ }),
206
+ },
207
+ summary: "Get role details",
208
+ description: "Retrieve detailed information about a specific role",
209
+ },
210
+ });
@@ -0,0 +1,4 @@
1
+ export * from "./contract.js";
2
+ export * from "./repository.js";
3
+ export * from "./schemas.js";
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/src/features/admin/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAA;AAC7B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,cAAc,CAAA"}
@@ -0,0 +1,3 @@
1
+ export * from "./contract.js";
2
+ export * from "./repository.js";
3
+ export * from "./schemas.js";
@@ -0,0 +1,114 @@
1
+ import { BaseRepository } from "../../shared/base_repository.js";
2
+ import { userManagementContract } from "./contract.js";
3
+ import type { CreateUserRequest, CreateUserResponse, ManagedUserQueryParams, ResetPasswordRequest, UpdateUserRequest } from "./schemas.js";
4
+ import type { AfloatAuth } from "../auth/manager.js";
5
+ import { ManagedUser } from "../../models/index.js";
6
+ import { Role } from "../../models/role.js";
7
+ /**
8
+ * Repository class for managing user accounts through API interactions.
9
+ * Extends the `BaseRepository` to leverage shared functionality.
10
+ */
11
+ export declare class UserManagementRepository extends BaseRepository<typeof userManagementContract> {
12
+ /**
13
+ * Creates an instance of `UserManagementRepository` using the user management contract.
14
+ * @param {Object} [props] - Optional constructor properties
15
+ * @param {AfloatAuth} [props.auth] - Optional auth instance to use
16
+ * @param {string} [props.root] - Optional API root URL
17
+ */
18
+ constructor(props?: {
19
+ auth?: AfloatAuth;
20
+ root?: string;
21
+ });
22
+ /**
23
+ * Creates a new user account.
24
+ * @param {CreateUserRequest} input - The data required to create a new user account.
25
+ * @returns {Promise<CreateUserResponse>} A promise that resolves to the newly created user response.
26
+ * @throws {PermissionError} If the user lacks required permissions
27
+ * @throws {APIError} If the response status code is not 201.
28
+ */
29
+ createUser(input: CreateUserRequest): Promise<CreateUserResponse>;
30
+ /**
31
+ * Updates an existing user account by ID.
32
+ * @param {string} id - The unique identifier of the user account to update.
33
+ * @param {UpdateUserRequest} input - The data to update the user account with.
34
+ * @returns {Promise<ManagedUser>} A promise that resolves to the updated user account.
35
+ * @throws {PermissionError} If the user lacks required permissions
36
+ * @throws {APIError} If the response status code is not 200.
37
+ */
38
+ updateUser(id: string, input: UpdateUserRequest): Promise<ManagedUser>;
39
+ /**
40
+ * Archives (soft deletes) a user account by ID.
41
+ * @param {string} id - The unique identifier of the user account to archive.
42
+ * @returns {Promise<ManagedUser>} A promise with the updated user object.
43
+ * @throws {PermissionError} If the user lacks required permissions
44
+ * @throws {APIError} If the response status code is not 200.
45
+ */
46
+ archiveUser(id: string): Promise<ManagedUser>;
47
+ /**
48
+ * Archives (soft deletes) a user account by ID.
49
+ * @param {string} id - The unique identifier of the user account to archive.
50
+ * @returns {Promise<ManagedUser>} A promise with the updated user object.
51
+ * @throws {PermissionError} If the user lacks required permissions
52
+ * @throws {APIError} If the response status code is not 200.
53
+ */
54
+ unArchiveUser(id: string): Promise<ManagedUser>;
55
+ /**
56
+ * Resets a user's password.
57
+ * @param {string} id - The unique identifier of the user account.
58
+ * @param {ResetPasswordRequest} [input] - Optional password reset configuration.
59
+ * @returns {Promise<void>} A promise that resolves when the password reset is complete.
60
+ * @throws {PermissionError} If the user lacks required permissions
61
+ * @throws {APIError} If the response status code is not 200.
62
+ */
63
+ resetUserPassword(id: string, input?: ResetPasswordRequest): Promise<{
64
+ success: boolean;
65
+ }>;
66
+ /**
67
+ * Retrieves all user accounts.
68
+ * Results are ordered in descending order by creation date by default.
69
+ *
70
+ * @returns {Promise<ManagedUser[]>} A promise that resolves to an array of managed users.
71
+ * @throws {PermissionError} If the user lacks required permissions
72
+ * @throws {APIError} If the response status code is not 200.
73
+ * @example
74
+ * const repository = new UserManagementRepository();
75
+ * repository.getAllUsers().then(users => console.log(users));
76
+ */
77
+ getAllUsers(query?: ManagedUserQueryParams): Promise<ManagedUser[]>;
78
+ /**
79
+ * Retrieves a specific user account by ID.
80
+ *
81
+ * @param {string} id - The unique identifier of the user account to retrieve.
82
+ * @returns {Promise<ManagedUser>} A promise that resolves to the managed user.
83
+ * @throws {PermissionError} If the user lacks required permissions
84
+ * @throws {APIError} If the response status code is not 200 or user not found.
85
+ * @example
86
+ * const repository = new UserManagementRepository();
87
+ * repository.getUser('user-id').then(user => console.log(user));
88
+ */
89
+ getUser(id: string, query?: ManagedUserQueryParams): Promise<ManagedUser>;
90
+ /**
91
+ * Retrieves all available roles in the system.
92
+ *
93
+ * @returns {Promise<Role[]>} A promise that resolves to an array of roles.
94
+ * @throws {PermissionError} If the user lacks required permissions
95
+ * @throws {APIError} If the response status code is not 200.
96
+ * @example
97
+ * const repository = new UserManagementRepository();
98
+ * repository.getAllRoles().then(roles => console.log(roles));
99
+ */
100
+ getAllRoles(): Promise<Role[]>;
101
+ /**
102
+ * Retrieves a specific role by ID.
103
+ *
104
+ * @param {string} id - The unique identifier of the role to retrieve.
105
+ * @returns {Promise<Role>} A promise that resolves to the role.
106
+ * @throws {PermissionError} If the user lacks required permissions
107
+ * @throws {APIError} If the response status code is not 200 or role not found.
108
+ * @example
109
+ * const repository = new UserManagementRepository();
110
+ * repository.getRole('role-id').then(role => console.log(role));
111
+ */
112
+ getRole(id: string): Promise<Role>;
113
+ }
114
+ //# sourceMappingURL=repository.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"repository.d.ts","sourceRoot":"","sources":["../../../../src/src/features/admin/repository.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AACjE,OAAO,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAC;AACvD,OAAO,KAAK,EACV,iBAAiB,EACjB,kBAAkB,EAClB,sBAAsB,EACtB,oBAAoB,EACpB,iBAAiB,EAClB,MAAM,cAAc,CAAC;AACtB,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EACL,WAAW,EAGZ,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAAE,IAAI,EAAiB,MAAM,sBAAsB,CAAC;AAE3D;;;GAGG;AACH,qBAAa,wBACX,SAAQ,cAAc,CAAC,OAAO,sBAAsB,CAAC;IACrD;;;;;OAKG;gBACS,KAAK,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,UAAU,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE;IAIxD;;;;;;OAMG;IACG,UAAU,CAAC,KAAK,EAAE,iBAAiB,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAgBvE;;;;;;;OAOG;IACG,UAAU,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,iBAAiB,GAAG,OAAO,CAAC,WAAW,CAAC;IAuB5E;;;;;;OAMG;IACG,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAoBnD;;;;;;OAMG;IACG,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAoBrD;;;;;;;OAOG;IACG,iBAAiB,CACrB,EAAE,EAAE,MAAM,EACV,KAAK,GAAE,oBAAyB,GAC/B,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAA;KAAE,CAAC;IAkBhC;;;;;;;;;;OAUG;IACG,WAAW,CACf,KAAK,GAAE,sBAA0C,GAChD,OAAO,CAAC,WAAW,EAAE,CAAC;IAgBzB;;;;;;;;;;OAUG;IACG,OAAO,CACX,EAAE,EAAE,MAAM,EACV,KAAK,GAAE,sBAA0C,GAChD,OAAO,CAAC,WAAW,CAAC;IAoBvB;;;;;;;;;OASG;IACG,WAAW,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;IAsBpC;;;;;;;;;;OAUG;IACG,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAmBzC"}
@@ -0,0 +1,248 @@
1
+ import { BaseRepository } from "../../shared/base_repository.js";
2
+ import { userManagementContract } from "./contract.js";
3
+ import { ManagedUser, Permissions, } from "../../models/index.js";
4
+ import { PermissionError } from "../../errors/index.js";
5
+ import { Role } from "../../models/role.js";
6
+ /**
7
+ * Repository class for managing user accounts through API interactions.
8
+ * Extends the `BaseRepository` to leverage shared functionality.
9
+ */
10
+ export class UserManagementRepository extends BaseRepository {
11
+ /**
12
+ * Creates an instance of `UserManagementRepository` using the user management contract.
13
+ * @param {Object} [props] - Optional constructor properties
14
+ * @param {AfloatAuth} [props.auth] - Optional auth instance to use
15
+ * @param {string} [props.root] - Optional API root URL
16
+ */
17
+ constructor(props) {
18
+ super("admin", userManagementContract, props);
19
+ }
20
+ /**
21
+ * Creates a new user account.
22
+ * @param {CreateUserRequest} input - The data required to create a new user account.
23
+ * @returns {Promise<CreateUserResponse>} A promise that resolves to the newly created user response.
24
+ * @throws {PermissionError} If the user lacks required permissions
25
+ * @throws {APIError} If the response status code is not 201.
26
+ */
27
+ async createUser(input) {
28
+ const auth = this.getAuthForPermissionCheck();
29
+ const requiredPerm = Permissions.UserManagement.CreateUser;
30
+ if (!auth.checkPermission(requiredPerm)) {
31
+ throw new PermissionError({
32
+ message: "You are not authorized to create user accounts.",
33
+ requiredPermissions: [requiredPerm],
34
+ });
35
+ }
36
+ const result = await this.client.createUser({ body: input });
37
+ const data = this.handleResponse(result, 201);
38
+ return data;
39
+ }
40
+ /**
41
+ * Updates an existing user account by ID.
42
+ * @param {string} id - The unique identifier of the user account to update.
43
+ * @param {UpdateUserRequest} input - The data to update the user account with.
44
+ * @returns {Promise<ManagedUser>} A promise that resolves to the updated user account.
45
+ * @throws {PermissionError} If the user lacks required permissions
46
+ * @throws {APIError} If the response status code is not 200.
47
+ */
48
+ async updateUser(id, input) {
49
+ const auth = this.getAuthForPermissionCheck();
50
+ const requiredPerm = Permissions.UserManagement.UpdateUser;
51
+ if (!auth.checkPermission(requiredPerm)) {
52
+ throw new PermissionError({
53
+ message: "You are not authorized to update user accounts.",
54
+ requiredPermissions: [requiredPerm],
55
+ });
56
+ }
57
+ const result = await this.client.updateUser({
58
+ params: { id },
59
+ body: input,
60
+ });
61
+ const data = this.handleResponse(result, 200);
62
+ const managedUser = ManagedUser.from(data);
63
+ if (!managedUser) {
64
+ throw new Error("Invalid user data received from server");
65
+ }
66
+ return managedUser;
67
+ }
68
+ /**
69
+ * Archives (soft deletes) a user account by ID.
70
+ * @param {string} id - The unique identifier of the user account to archive.
71
+ * @returns {Promise<ManagedUser>} A promise with the updated user object.
72
+ * @throws {PermissionError} If the user lacks required permissions
73
+ * @throws {APIError} If the response status code is not 200.
74
+ */
75
+ async archiveUser(id) {
76
+ const auth = this.getAuthForPermissionCheck();
77
+ const requiredPerm = Permissions.UserManagement.ArchiveUser;
78
+ if (!auth.checkPermission(requiredPerm)) {
79
+ throw new PermissionError({
80
+ message: "You are not authorized to archive users.",
81
+ requiredPermissions: [requiredPerm],
82
+ });
83
+ }
84
+ const result = await this.client.archiveUser({ params: { id } });
85
+ const data = this.handleResponse(result, 201);
86
+ const managedUser = ManagedUser.from(data);
87
+ if (!managedUser) {
88
+ throw new Error("Invalid user data received from server");
89
+ }
90
+ return managedUser;
91
+ }
92
+ /**
93
+ * Archives (soft deletes) a user account by ID.
94
+ * @param {string} id - The unique identifier of the user account to archive.
95
+ * @returns {Promise<ManagedUser>} A promise with the updated user object.
96
+ * @throws {PermissionError} If the user lacks required permissions
97
+ * @throws {APIError} If the response status code is not 200.
98
+ */
99
+ async unArchiveUser(id) {
100
+ const auth = this.getAuthForPermissionCheck();
101
+ const requiredPerm = Permissions.UserManagement.UnArchiveUser;
102
+ if (!auth.checkPermission(requiredPerm)) {
103
+ throw new PermissionError({
104
+ message: "You are not authorized to un-archive users.",
105
+ requiredPermissions: [requiredPerm],
106
+ });
107
+ }
108
+ const result = await this.client.unArchiveUser({ params: { id } });
109
+ const data = this.handleResponse(result, 201);
110
+ const managedUser = ManagedUser.from(data);
111
+ if (!managedUser) {
112
+ throw new Error("Invalid user data received from server");
113
+ }
114
+ return managedUser;
115
+ }
116
+ /**
117
+ * Resets a user's password.
118
+ * @param {string} id - The unique identifier of the user account.
119
+ * @param {ResetPasswordRequest} [input] - Optional password reset configuration.
120
+ * @returns {Promise<void>} A promise that resolves when the password reset is complete.
121
+ * @throws {PermissionError} If the user lacks required permissions
122
+ * @throws {APIError} If the response status code is not 200.
123
+ */
124
+ async resetUserPassword(id, input = {}) {
125
+ const auth = this.getAuthForPermissionCheck();
126
+ const requiredPerm = Permissions.UserManagement.ResetPassword;
127
+ if (!auth.checkPermission(requiredPerm)) {
128
+ throw new PermissionError({
129
+ message: "You are not authorized to reset user passwords.",
130
+ requiredPermissions: [requiredPerm],
131
+ });
132
+ }
133
+ const result = await this.client.resetPassword({
134
+ params: { id },
135
+ body: input,
136
+ });
137
+ return this.handleResponse(result, 201);
138
+ }
139
+ /**
140
+ * Retrieves all user accounts.
141
+ * Results are ordered in descending order by creation date by default.
142
+ *
143
+ * @returns {Promise<ManagedUser[]>} A promise that resolves to an array of managed users.
144
+ * @throws {PermissionError} If the user lacks required permissions
145
+ * @throws {APIError} If the response status code is not 200.
146
+ * @example
147
+ * const repository = new UserManagementRepository();
148
+ * repository.getAllUsers().then(users => console.log(users));
149
+ */
150
+ async getAllUsers(query = { eager: "role" }) {
151
+ const auth = this.getAuthForPermissionCheck();
152
+ const requiredPerm = Permissions.UserManagement.ViewUsers;
153
+ if (!auth.checkPermission(requiredPerm)) {
154
+ throw new PermissionError({
155
+ message: "You are not authorized to view user accounts.",
156
+ requiredPermissions: [requiredPerm],
157
+ });
158
+ }
159
+ const result = await this.client.getUsers({ query });
160
+ const data = this.handleResponse(result, 200);
161
+ return ManagedUser.createMany(data);
162
+ }
163
+ /**
164
+ * Retrieves a specific user account by ID.
165
+ *
166
+ * @param {string} id - The unique identifier of the user account to retrieve.
167
+ * @returns {Promise<ManagedUser>} A promise that resolves to the managed user.
168
+ * @throws {PermissionError} If the user lacks required permissions
169
+ * @throws {APIError} If the response status code is not 200 or user not found.
170
+ * @example
171
+ * const repository = new UserManagementRepository();
172
+ * repository.getUser('user-id').then(user => console.log(user));
173
+ */
174
+ async getUser(id, query = { eager: "role" }) {
175
+ const auth = this.getAuthForPermissionCheck();
176
+ const requiredPerm = Permissions.UserManagement.ViewUser;
177
+ if (!auth.checkPermission(requiredPerm)) {
178
+ throw new PermissionError({
179
+ message: "You are not authorized to view user account details.",
180
+ requiredPermissions: [requiredPerm],
181
+ });
182
+ }
183
+ const result = await this.client.getUser({ params: { id }, query });
184
+ const data = this.handleResponse(result, 200);
185
+ const managedUser = ManagedUser.from(data);
186
+ if (!managedUser) {
187
+ throw new Error("Invalid user data received from server");
188
+ }
189
+ return managedUser;
190
+ }
191
+ /**
192
+ * Retrieves all available roles in the system.
193
+ *
194
+ * @returns {Promise<Role[]>} A promise that resolves to an array of roles.
195
+ * @throws {PermissionError} If the user lacks required permissions
196
+ * @throws {APIError} If the response status code is not 200.
197
+ * @example
198
+ * const repository = new UserManagementRepository();
199
+ * repository.getAllRoles().then(roles => console.log(roles));
200
+ */
201
+ async getAllRoles() {
202
+ const auth = this.getAuthForPermissionCheck();
203
+ const requiredPerm = Permissions.Role.ViewRoles;
204
+ if (!auth.checkPermission(requiredPerm)) {
205
+ throw new PermissionError({
206
+ message: "You are not authorized to view system roles.",
207
+ requiredPermissions: [requiredPerm],
208
+ });
209
+ }
210
+ const result = await this.client.getRoles();
211
+ const data = this.handleResponse(result, 200);
212
+ return data.map((roleData) => {
213
+ const role = Role.from(roleData);
214
+ if (!role) {
215
+ throw new Error("Invalid role data received from server");
216
+ }
217
+ return role;
218
+ });
219
+ }
220
+ /**
221
+ * Retrieves a specific role by ID.
222
+ *
223
+ * @param {string} id - The unique identifier of the role to retrieve.
224
+ * @returns {Promise<Role>} A promise that resolves to the role.
225
+ * @throws {PermissionError} If the user lacks required permissions
226
+ * @throws {APIError} If the response status code is not 200 or role not found.
227
+ * @example
228
+ * const repository = new UserManagementRepository();
229
+ * repository.getRole('role-id').then(role => console.log(role));
230
+ */
231
+ async getRole(id) {
232
+ const auth = this.getAuthForPermissionCheck();
233
+ const requiredPerm = Permissions.Role.ViewRole;
234
+ if (!auth.checkPermission(requiredPerm)) {
235
+ throw new PermissionError({
236
+ message: "You are not authorized to view role details.",
237
+ requiredPermissions: [requiredPerm],
238
+ });
239
+ }
240
+ const result = await this.client.getRole({ params: { id } });
241
+ const data = this.handleResponse(result, 200);
242
+ const role = Role.from(data);
243
+ if (!role) {
244
+ throw new Error("Invalid role data received from server");
245
+ }
246
+ return role;
247
+ }
248
+ }
@@ -30,7 +30,7 @@ type _ManagedUserType = z.ZodObject<{
30
30
  resetPassword: z.ZodBoolean;
31
31
  isActive: z.ZodBoolean;
32
32
  isArchived: z.ZodBoolean;
33
- role: z.ZodOptional<z.ZodType<RoleDTO>>;
33
+ role: z.ZodOptional<z.ZodType<Role>>;
34
34
  createdAt: z.ZodString;
35
35
  updatedAt: z.ZodString;
36
36
  }>;
@@ -101,7 +101,7 @@ type _ManagedUserQueryParamsType = z.ZodObject<{
101
101
  * Collection of user management schemas for export.
102
102
  * Provides access to all user and role validation schemas.
103
103
  */
104
- export declare const UserManagementDTOSchemas: {
104
+ export declare const UserManagementSchemas: {
105
105
  role: _RoleType;
106
106
  managedUser: _ManagedUserType;
107
107
  managedUserQueryParams: _ManagedUserQueryParamsType;
@@ -115,31 +115,32 @@ export declare const UserManagementDTOSchemas: {
115
115
  * TypeScript type for a validated role object.
116
116
  * Use this type for role instances that have been validated against the schema.
117
117
  */
118
- export type RoleDTO = z.infer<typeof UserManagementDTOSchemas.role>;
118
+ type Role = z.infer<typeof UserManagementSchemas.role>;
119
119
  /**
120
120
  * TypeScript type for a create user request object.
121
121
  * Use this type for user creation requests that have been validated against the schema.
122
122
  */
123
- export type CreateUserRequestDTO = z.infer<typeof UserManagementDTOSchemas.createUserRequest>;
123
+ export type CreateUserRequest = z.infer<typeof UserManagementSchemas.createUserRequest>;
124
124
  /**
125
125
  * TypeScript type for an update user request object.
126
126
  * Use this type for user update requests that have been validated against the schema.
127
127
  */
128
- export type UpdateUserRequestDTO = z.infer<typeof UserManagementDTOSchemas.updateUserRequest>;
128
+ export type UpdateUserRequest = z.infer<typeof UserManagementSchemas.updateUserRequest>;
129
129
  /**
130
130
  * TypeScript type for a reset password request object.
131
131
  * Use this type for password reset requests that have been validated against the schema.
132
132
  */
133
- export type ResetPasswordRequestDTO = z.infer<typeof UserManagementDTOSchemas.resetPasswordRequest>;
133
+ export type ResetPasswordRequest = z.infer<typeof UserManagementSchemas.resetPasswordRequest>;
134
134
  /**
135
135
  * TypeScript type for a create user response object.
136
136
  * Use this type for user creation responses that have been validated against the schema.
137
137
  */
138
- export type CreateUserResponseDTO = z.infer<typeof UserManagementDTOSchemas.createUserResponse>;
138
+ export type CreateUserResponse = z.infer<typeof UserManagementSchemas.createUserResponse>;
139
139
  /**
140
140
  * TypeScript type for managed user query parameters.
141
141
  * Use this type for query parameter objects that have been validated against the schema.
142
142
  * All fields are optional to allow flexible filtering and searching.
143
143
  */
144
- export type ManagedUserQueryParamsDTO = z.infer<typeof UserManagementDTOSchemas.managedUserQueryParams>;
144
+ export type ManagedUserQueryParams = z.infer<typeof UserManagementSchemas.managedUserQueryParams>;
145
145
  export {};
146
+ //# sourceMappingURL=schemas.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schemas.d.ts","sourceRoot":"","sources":["../../../../src/src/features/admin/schemas.ts"],"names":[],"mappings":"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"}