@digitaldefiance/suite-core-lib 3.6.47 → 3.6.48

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 (573) hide show
  1. package/LICENSE +21 -0
  2. package/package.json +3 -4
  3. package/src/backup-code-string.ts +102 -0
  4. package/src/builders/{index.d.ts → index.ts} +1 -1
  5. package/src/builders/role-builder.ts +67 -0
  6. package/src/builders/user-builder.ts +81 -0
  7. package/src/constants.ts +229 -0
  8. package/src/core/{errors.d.ts → errors.ts} +4 -1
  9. package/src/core/{index.d.ts → index.ts} +1 -1
  10. package/src/core/result.ts +40 -0
  11. package/src/core/{types.d.ts → types.ts} +6 -1
  12. package/src/defaults.ts +114 -0
  13. package/src/enumerations/account-status.ts +17 -0
  14. package/src/enumerations/email-token-type.ts +27 -0
  15. package/src/enumerations/fec-error-type.ts +16 -0
  16. package/src/enumerations/{index.d.ts → index.ts} +3 -1
  17. package/src/enumerations/pbkdf2-error-type.ts +7 -0
  18. package/src/enumerations/role.ts +8 -0
  19. package/src/enumerations/suite-core-string-key.ts +500 -0
  20. package/src/errors/account-locked.ts +12 -0
  21. package/src/errors/account-status.ts +38 -0
  22. package/src/errors/admin-role-not-found.ts +15 -0
  23. package/src/errors/core-typed-handleable.ts +72 -0
  24. package/src/errors/direct-challenge-not-enabled.ts +22 -0
  25. package/src/errors/direct-token-used.ts +17 -0
  26. package/src/errors/email-in-use.ts +14 -0
  27. package/src/errors/email-token-expired.ts +14 -0
  28. package/src/errors/email-token-failed-to-send.ts +46 -0
  29. package/src/errors/email-token-sent-too-recently.ts +32 -0
  30. package/src/errors/email-token-used-or-invalid.ts +14 -0
  31. package/src/errors/email-verified.ts +19 -0
  32. package/src/errors/failed-to-use-direct-token.ts +17 -0
  33. package/src/errors/fec-error.ts +49 -0
  34. package/src/errors/generic-validation.ts +14 -0
  35. package/src/errors/{index.d.ts → index.ts} +3 -1
  36. package/src/errors/invalid-backup-code.ts +9 -0
  37. package/src/errors/invalid-challenge-response.ts +22 -0
  38. package/src/errors/invalid-challenge.ts +12 -0
  39. package/src/errors/invalid-credentials.ts +19 -0
  40. package/src/errors/invalid-email.ts +46 -0
  41. package/src/errors/invalid-expired-token.ts +21 -0
  42. package/src/errors/invalid-token.ts +22 -0
  43. package/src/errors/invalid-userid.ts +38 -0
  44. package/src/errors/invalid-username.ts +17 -0
  45. package/src/errors/last-admin-error.ts +15 -0
  46. package/src/errors/login-challenge-expired.ts +22 -0
  47. package/src/errors/member-role-not-found.ts +15 -0
  48. package/src/errors/password-login-not-enabled.ts +22 -0
  49. package/src/errors/password-login-not-setup.ts +22 -0
  50. package/src/errors/pbkdf2-error.ts +26 -0
  51. package/src/errors/pending-email-verification.ts +12 -0
  52. package/src/errors/private-key-required.ts +16 -0
  53. package/src/errors/system-role-not-found.ts +15 -0
  54. package/src/errors/token-not-found.ts +24 -0
  55. package/src/errors/translatable-suite-handleable.ts +30 -0
  56. package/src/errors/translatable-suite.ts +37 -0
  57. package/src/errors/user-not-found.ts +14 -0
  58. package/src/errors/username-email-required.ts +23 -0
  59. package/src/errors/username-in-use.ts +14 -0
  60. package/src/i18n-setup.ts +150 -0
  61. package/src/{index.d.ts → index.ts} +4 -1
  62. package/src/interfaces/backup-code-consts.ts +18 -0
  63. package/src/interfaces/backup-code.ts +9 -0
  64. package/src/interfaces/bases/email-token.ts +39 -0
  65. package/src/interfaces/bases/{index.d.ts → index.ts} +3 -1
  66. package/src/interfaces/bases/mnemonic.ts +12 -0
  67. package/src/interfaces/bases/role.ts +43 -0
  68. package/src/interfaces/bases/token-role.ts +16 -0
  69. package/src/interfaces/bases/used-direct-login-token.ts +17 -0
  70. package/src/interfaces/bases/user-role.ts +23 -0
  71. package/src/interfaces/bases/user.ts +91 -0
  72. package/src/interfaces/combined-role-privileges.ts +9 -0
  73. package/src/interfaces/constants.ts +59 -0
  74. package/src/interfaces/core-consts.ts +133 -0
  75. package/src/interfaces/deep-partial.ts +6 -0
  76. package/src/interfaces/dto/email-token.ts +7 -0
  77. package/src/interfaces/dto/{index.d.ts → index.ts} +3 -1
  78. package/src/interfaces/dto/mnemonic.ts +7 -0
  79. package/src/interfaces/dto/request-user.ts +23 -0
  80. package/src/interfaces/dto/role.ts +7 -0
  81. package/src/interfaces/dto/token-role.ts +21 -0
  82. package/src/interfaces/dto/user-role.ts +7 -0
  83. package/src/interfaces/dto/user-settings.ts +12 -0
  84. package/src/interfaces/dto/user.ts +7 -0
  85. package/src/interfaces/failable-result.ts +9 -0
  86. package/src/interfaces/frontend-objects/email-token.ts +12 -0
  87. package/src/interfaces/frontend-objects/{index.d.ts → index.ts} +3 -1
  88. package/src/interfaces/frontend-objects/request-user.ts +21 -0
  89. package/src/interfaces/frontend-objects/{role.d.ts → role.ts} +5 -1
  90. package/src/interfaces/frontend-objects/user-role.ts +7 -0
  91. package/src/interfaces/frontend-objects/user.ts +13 -0
  92. package/src/interfaces/has-creation.ts +9 -0
  93. package/src/interfaces/has-creator.ts +11 -0
  94. package/src/interfaces/has-id.ts +8 -0
  95. package/src/interfaces/has-soft-delete.ts +9 -0
  96. package/src/interfaces/has-soft-deleter.ts +11 -0
  97. package/src/interfaces/has-timestamp-owners.ts +9 -0
  98. package/src/interfaces/has-timestamps.ts +11 -0
  99. package/src/interfaces/has-updater.ts +11 -0
  100. package/src/interfaces/has-updates.ts +6 -0
  101. package/src/interfaces/{index.d.ts → index.ts} +3 -1
  102. package/src/interfaces/success-message.ts +7 -0
  103. package/src/interfaces/{token-user.d.ts → token-user.ts} +3 -3
  104. package/src/interfaces/user-settings.ts +14 -0
  105. package/src/lib/flags.ts +286 -0
  106. package/src/lib/formatters.ts +26 -0
  107. package/src/lib/hydrate-dehydrate.ts +43 -0
  108. package/src/lib/{index.d.ts → index.ts} +1 -1
  109. package/src/lib/validators-with-constants.ts +74 -0
  110. package/src/lib/validators.ts +72 -0
  111. package/src/local-storage-manager.ts +69 -0
  112. package/src/strings/de.ts +793 -0
  113. package/src/strings/en-GB.ts +743 -0
  114. package/src/strings/en-US.ts +746 -0
  115. package/src/strings/es.ts +799 -0
  116. package/src/strings/fr.ts +804 -0
  117. package/src/strings/ja.ts +766 -0
  118. package/src/strings/uk.ts +783 -0
  119. package/src/strings/zh-CN.ts +650 -0
  120. package/src/backup-code-string.d.ts +0 -29
  121. package/src/backup-code-string.d.ts.map +0 -1
  122. package/src/backup-code-string.js +0 -81
  123. package/src/backup-code-string.js.map +0 -1
  124. package/src/builders/index.d.ts.map +0 -1
  125. package/src/builders/index.js +0 -9
  126. package/src/builders/index.js.map +0 -1
  127. package/src/builders/role-builder.d.ts +0 -19
  128. package/src/builders/role-builder.d.ts.map +0 -1
  129. package/src/builders/role-builder.js +0 -57
  130. package/src/builders/role-builder.js.map +0 -1
  131. package/src/builders/user-builder.d.ts +0 -23
  132. package/src/builders/user-builder.d.ts.map +0 -1
  133. package/src/builders/user-builder.js +0 -63
  134. package/src/builders/user-builder.js.map +0 -1
  135. package/src/constants.d.ts +0 -7
  136. package/src/constants.d.ts.map +0 -1
  137. package/src/constants.js +0 -209
  138. package/src/constants.js.map +0 -1
  139. package/src/core/errors.d.ts.map +0 -1
  140. package/src/core/errors.js +0 -29
  141. package/src/core/errors.js.map +0 -1
  142. package/src/core/index.d.ts.map +0 -1
  143. package/src/core/index.js +0 -10
  144. package/src/core/index.js.map +0 -1
  145. package/src/core/result.d.ts +0 -34
  146. package/src/core/result.d.ts.map +0 -1
  147. package/src/core/result.js +0 -35
  148. package/src/core/result.js.map +0 -1
  149. package/src/core/types.d.ts.map +0 -1
  150. package/src/core/types.js +0 -6
  151. package/src/core/types.js.map +0 -1
  152. package/src/defaults.d.ts +0 -7
  153. package/src/defaults.d.ts.map +0 -1
  154. package/src/defaults.js +0 -66
  155. package/src/defaults.js.map +0 -1
  156. package/src/enumerations/account-status.d.ts +0 -18
  157. package/src/enumerations/account-status.d.ts.map +0 -1
  158. package/src/enumerations/account-status.js +0 -22
  159. package/src/enumerations/account-status.js.map +0 -1
  160. package/src/enumerations/email-token-type.d.ts +0 -25
  161. package/src/enumerations/email-token-type.d.ts.map +0 -1
  162. package/src/enumerations/email-token-type.js +0 -29
  163. package/src/enumerations/email-token-type.js.map +0 -1
  164. package/src/enumerations/fec-error-type.d.ts +0 -14
  165. package/src/enumerations/fec-error-type.d.ts.map +0 -1
  166. package/src/enumerations/fec-error-type.js +0 -18
  167. package/src/enumerations/fec-error-type.js.map +0 -1
  168. package/src/enumerations/index.d.ts.map +0 -1
  169. package/src/enumerations/index.js +0 -10
  170. package/src/enumerations/index.js.map +0 -1
  171. package/src/enumerations/pbkdf2-error-type.d.ts +0 -5
  172. package/src/enumerations/pbkdf2-error-type.d.ts.map +0 -1
  173. package/src/enumerations/pbkdf2-error-type.js +0 -9
  174. package/src/enumerations/pbkdf2-error-type.js.map +0 -1
  175. package/src/enumerations/role.d.ts +0 -6
  176. package/src/enumerations/role.d.ts.map +0 -1
  177. package/src/enumerations/role.js +0 -10
  178. package/src/enumerations/role.js.map +0 -1
  179. package/src/enumerations/suite-core-string-key.d.ts +0 -483
  180. package/src/enumerations/suite-core-string-key.d.ts.map +0 -1
  181. package/src/enumerations/suite-core-string-key.js +0 -494
  182. package/src/enumerations/suite-core-string-key.js.map +0 -1
  183. package/src/errors/account-locked.d.ts +0 -5
  184. package/src/errors/account-locked.d.ts.map +0 -1
  185. package/src/errors/account-locked.js +0 -13
  186. package/src/errors/account-locked.js.map +0 -1
  187. package/src/errors/account-status.d.ts +0 -7
  188. package/src/errors/account-status.d.ts.map +0 -1
  189. package/src/errors/account-status.js +0 -33
  190. package/src/errors/account-status.js.map +0 -1
  191. package/src/errors/admin-role-not-found.d.ts +0 -6
  192. package/src/errors/admin-role-not-found.d.ts.map +0 -1
  193. package/src/errors/admin-role-not-found.js +0 -15
  194. package/src/errors/admin-role-not-found.js.map +0 -1
  195. package/src/errors/core-typed-handleable.d.ts +0 -12
  196. package/src/errors/core-typed-handleable.d.ts.map +0 -1
  197. package/src/errors/core-typed-handleable.js +0 -51
  198. package/src/errors/core-typed-handleable.js.map +0 -1
  199. package/src/errors/direct-challenge-not-enabled.d.ts +0 -5
  200. package/src/errors/direct-challenge-not-enabled.d.ts.map +0 -1
  201. package/src/errors/direct-challenge-not-enabled.js +0 -16
  202. package/src/errors/direct-challenge-not-enabled.js.map +0 -1
  203. package/src/errors/direct-token-used.d.ts +0 -5
  204. package/src/errors/direct-token-used.d.ts.map +0 -1
  205. package/src/errors/direct-token-used.js +0 -13
  206. package/src/errors/direct-token-used.js.map +0 -1
  207. package/src/errors/email-in-use.d.ts +0 -5
  208. package/src/errors/email-in-use.d.ts.map +0 -1
  209. package/src/errors/email-in-use.js +0 -15
  210. package/src/errors/email-in-use.js.map +0 -1
  211. package/src/errors/email-token-expired.d.ts +0 -5
  212. package/src/errors/email-token-expired.d.ts.map +0 -1
  213. package/src/errors/email-token-expired.js +0 -15
  214. package/src/errors/email-token-expired.js.map +0 -1
  215. package/src/errors/email-token-failed-to-send.d.ts +0 -6
  216. package/src/errors/email-token-failed-to-send.d.ts.map +0 -1
  217. package/src/errors/email-token-failed-to-send.js +0 -22
  218. package/src/errors/email-token-failed-to-send.js.map +0 -1
  219. package/src/errors/email-token-sent-too-recently.d.ts +0 -7
  220. package/src/errors/email-token-sent-too-recently.d.ts.map +0 -1
  221. package/src/errors/email-token-sent-too-recently.js +0 -21
  222. package/src/errors/email-token-sent-too-recently.js.map +0 -1
  223. package/src/errors/email-token-used-or-invalid.d.ts +0 -5
  224. package/src/errors/email-token-used-or-invalid.d.ts.map +0 -1
  225. package/src/errors/email-token-used-or-invalid.js +0 -15
  226. package/src/errors/email-token-used-or-invalid.js.map +0 -1
  227. package/src/errors/email-verified.d.ts +0 -5
  228. package/src/errors/email-verified.d.ts.map +0 -1
  229. package/src/errors/email-verified.js +0 -15
  230. package/src/errors/email-verified.js.map +0 -1
  231. package/src/errors/failed-to-use-direct-token.d.ts +0 -5
  232. package/src/errors/failed-to-use-direct-token.d.ts.map +0 -1
  233. package/src/errors/failed-to-use-direct-token.js +0 -13
  234. package/src/errors/failed-to-use-direct-token.js.map +0 -1
  235. package/src/errors/fec-error.d.ts +0 -6
  236. package/src/errors/fec-error.d.ts.map +0 -1
  237. package/src/errors/fec-error.js +0 -26
  238. package/src/errors/fec-error.js.map +0 -1
  239. package/src/errors/generic-validation.d.ts +0 -5
  240. package/src/errors/generic-validation.d.ts.map +0 -1
  241. package/src/errors/generic-validation.js +0 -12
  242. package/src/errors/generic-validation.js.map +0 -1
  243. package/src/errors/index.d.ts.map +0 -1
  244. package/src/errors/index.js +0 -43
  245. package/src/errors/index.js.map +0 -1
  246. package/src/errors/invalid-backup-code.d.ts +0 -4
  247. package/src/errors/invalid-backup-code.d.ts.map +0 -1
  248. package/src/errors/invalid-backup-code.js +0 -11
  249. package/src/errors/invalid-backup-code.js.map +0 -1
  250. package/src/errors/invalid-challenge-response.d.ts +0 -5
  251. package/src/errors/invalid-challenge-response.d.ts.map +0 -1
  252. package/src/errors/invalid-challenge-response.js +0 -16
  253. package/src/errors/invalid-challenge-response.js.map +0 -1
  254. package/src/errors/invalid-challenge.d.ts +0 -5
  255. package/src/errors/invalid-challenge.d.ts.map +0 -1
  256. package/src/errors/invalid-challenge.js +0 -13
  257. package/src/errors/invalid-challenge.js.map +0 -1
  258. package/src/errors/invalid-credentials.d.ts +0 -5
  259. package/src/errors/invalid-credentials.d.ts.map +0 -1
  260. package/src/errors/invalid-credentials.js +0 -15
  261. package/src/errors/invalid-credentials.js.map +0 -1
  262. package/src/errors/invalid-email.d.ts +0 -8
  263. package/src/errors/invalid-email.d.ts.map +0 -1
  264. package/src/errors/invalid-email.js +0 -25
  265. package/src/errors/invalid-email.js.map +0 -1
  266. package/src/errors/invalid-expired-token.d.ts +0 -6
  267. package/src/errors/invalid-expired-token.d.ts.map +0 -1
  268. package/src/errors/invalid-expired-token.js +0 -13
  269. package/src/errors/invalid-expired-token.js.map +0 -1
  270. package/src/errors/invalid-token.d.ts +0 -5
  271. package/src/errors/invalid-token.d.ts.map +0 -1
  272. package/src/errors/invalid-token.js +0 -16
  273. package/src/errors/invalid-token.js.map +0 -1
  274. package/src/errors/invalid-userid.d.ts +0 -6
  275. package/src/errors/invalid-userid.d.ts.map +0 -1
  276. package/src/errors/invalid-userid.js +0 -20
  277. package/src/errors/invalid-userid.js.map +0 -1
  278. package/src/errors/invalid-username.d.ts +0 -5
  279. package/src/errors/invalid-username.d.ts.map +0 -1
  280. package/src/errors/invalid-username.js +0 -13
  281. package/src/errors/invalid-username.js.map +0 -1
  282. package/src/errors/last-admin-error.d.ts +0 -6
  283. package/src/errors/last-admin-error.d.ts.map +0 -1
  284. package/src/errors/last-admin-error.js +0 -15
  285. package/src/errors/last-admin-error.js.map +0 -1
  286. package/src/errors/login-challenge-expired.d.ts +0 -5
  287. package/src/errors/login-challenge-expired.d.ts.map +0 -1
  288. package/src/errors/login-challenge-expired.js +0 -16
  289. package/src/errors/login-challenge-expired.js.map +0 -1
  290. package/src/errors/member-role-not-found.d.ts +0 -6
  291. package/src/errors/member-role-not-found.d.ts.map +0 -1
  292. package/src/errors/member-role-not-found.js +0 -15
  293. package/src/errors/member-role-not-found.js.map +0 -1
  294. package/src/errors/password-login-not-enabled.d.ts +0 -5
  295. package/src/errors/password-login-not-enabled.d.ts.map +0 -1
  296. package/src/errors/password-login-not-enabled.js +0 -16
  297. package/src/errors/password-login-not-enabled.js.map +0 -1
  298. package/src/errors/password-login-not-setup.d.ts +0 -5
  299. package/src/errors/password-login-not-setup.d.ts.map +0 -1
  300. package/src/errors/password-login-not-setup.js +0 -16
  301. package/src/errors/password-login-not-setup.js.map +0 -1
  302. package/src/errors/pbkdf2-error.d.ts +0 -7
  303. package/src/errors/pbkdf2-error.d.ts.map +0 -1
  304. package/src/errors/pbkdf2-error.js +0 -19
  305. package/src/errors/pbkdf2-error.js.map +0 -1
  306. package/src/errors/pending-email-verification.d.ts +0 -5
  307. package/src/errors/pending-email-verification.d.ts.map +0 -1
  308. package/src/errors/pending-email-verification.js +0 -13
  309. package/src/errors/pending-email-verification.js.map +0 -1
  310. package/src/errors/private-key-required.d.ts +0 -5
  311. package/src/errors/private-key-required.d.ts.map +0 -1
  312. package/src/errors/private-key-required.js +0 -13
  313. package/src/errors/private-key-required.js.map +0 -1
  314. package/src/errors/system-role-not-found.d.ts +0 -6
  315. package/src/errors/system-role-not-found.d.ts.map +0 -1
  316. package/src/errors/system-role-not-found.js +0 -15
  317. package/src/errors/system-role-not-found.js.map +0 -1
  318. package/src/errors/token-not-found.d.ts +0 -7
  319. package/src/errors/token-not-found.d.ts.map +0 -1
  320. package/src/errors/token-not-found.js +0 -19
  321. package/src/errors/token-not-found.js.map +0 -1
  322. package/src/errors/translatable-suite-handleable.d.ts +0 -10
  323. package/src/errors/translatable-suite-handleable.d.ts.map +0 -1
  324. package/src/errors/translatable-suite-handleable.js +0 -15
  325. package/src/errors/translatable-suite-handleable.js.map +0 -1
  326. package/src/errors/translatable-suite.d.ts +0 -13
  327. package/src/errors/translatable-suite.d.ts.map +0 -1
  328. package/src/errors/translatable-suite.js +0 -29
  329. package/src/errors/translatable-suite.js.map +0 -1
  330. package/src/errors/user-not-found.d.ts +0 -5
  331. package/src/errors/user-not-found.d.ts.map +0 -1
  332. package/src/errors/user-not-found.js +0 -15
  333. package/src/errors/user-not-found.js.map +0 -1
  334. package/src/errors/username-email-required.d.ts +0 -6
  335. package/src/errors/username-email-required.d.ts.map +0 -1
  336. package/src/errors/username-email-required.js +0 -16
  337. package/src/errors/username-email-required.js.map +0 -1
  338. package/src/errors/username-in-use.d.ts +0 -5
  339. package/src/errors/username-in-use.d.ts.map +0 -1
  340. package/src/errors/username-in-use.js +0 -15
  341. package/src/errors/username-in-use.js.map +0 -1
  342. package/src/i18n-setup.d.ts +0 -13
  343. package/src/i18n-setup.d.ts.map +0 -1
  344. package/src/i18n-setup.js +0 -116
  345. package/src/i18n-setup.js.map +0 -1
  346. package/src/index.d.ts.map +0 -1
  347. package/src/index.js +0 -15
  348. package/src/index.js.map +0 -1
  349. package/src/interfaces/backup-code-consts.d.ts +0 -16
  350. package/src/interfaces/backup-code-consts.d.ts.map +0 -1
  351. package/src/interfaces/backup-code-consts.js +0 -3
  352. package/src/interfaces/backup-code-consts.js.map +0 -1
  353. package/src/interfaces/backup-code.d.ts +0 -7
  354. package/src/interfaces/backup-code.d.ts.map +0 -1
  355. package/src/interfaces/backup-code.js +0 -3
  356. package/src/interfaces/backup-code.js.map +0 -1
  357. package/src/interfaces/bases/email-token.d.ts +0 -33
  358. package/src/interfaces/bases/email-token.d.ts.map +0 -1
  359. package/src/interfaces/bases/email-token.js +0 -3
  360. package/src/interfaces/bases/email-token.js.map +0 -1
  361. package/src/interfaces/bases/index.d.ts.map +0 -1
  362. package/src/interfaces/bases/index.js +0 -11
  363. package/src/interfaces/bases/index.js.map +0 -1
  364. package/src/interfaces/bases/mnemonic.d.ts +0 -11
  365. package/src/interfaces/bases/mnemonic.d.ts.map +0 -1
  366. package/src/interfaces/bases/mnemonic.js +0 -3
  367. package/src/interfaces/bases/mnemonic.js.map +0 -1
  368. package/src/interfaces/bases/role.d.ts +0 -32
  369. package/src/interfaces/bases/role.d.ts.map +0 -1
  370. package/src/interfaces/bases/role.js +0 -3
  371. package/src/interfaces/bases/role.js.map +0 -1
  372. package/src/interfaces/bases/token-role.d.ts +0 -8
  373. package/src/interfaces/bases/token-role.d.ts.map +0 -1
  374. package/src/interfaces/bases/token-role.js +0 -3
  375. package/src/interfaces/bases/token-role.js.map +0 -1
  376. package/src/interfaces/bases/used-direct-login-token.d.ts +0 -6
  377. package/src/interfaces/bases/used-direct-login-token.d.ts.map +0 -1
  378. package/src/interfaces/bases/used-direct-login-token.js +0 -3
  379. package/src/interfaces/bases/used-direct-login-token.js.map +0 -1
  380. package/src/interfaces/bases/user-role.d.ts +0 -16
  381. package/src/interfaces/bases/user-role.d.ts.map +0 -1
  382. package/src/interfaces/bases/user-role.js +0 -3
  383. package/src/interfaces/bases/user-role.js.map +0 -1
  384. package/src/interfaces/bases/user.d.ts +0 -79
  385. package/src/interfaces/bases/user.d.ts.map +0 -1
  386. package/src/interfaces/bases/user.js +0 -3
  387. package/src/interfaces/bases/user.js.map +0 -1
  388. package/src/interfaces/combined-role-privileges.d.ts +0 -7
  389. package/src/interfaces/combined-role-privileges.d.ts.map +0 -1
  390. package/src/interfaces/combined-role-privileges.js +0 -3
  391. package/src/interfaces/combined-role-privileges.js.map +0 -1
  392. package/src/interfaces/constants.d.ts +0 -56
  393. package/src/interfaces/constants.d.ts.map +0 -1
  394. package/src/interfaces/constants.js +0 -3
  395. package/src/interfaces/constants.js.map +0 -1
  396. package/src/interfaces/core-consts.d.ts +0 -130
  397. package/src/interfaces/core-consts.d.ts.map +0 -1
  398. package/src/interfaces/core-consts.js +0 -3
  399. package/src/interfaces/core-consts.js.map +0 -1
  400. package/src/interfaces/deep-partial.d.ts +0 -4
  401. package/src/interfaces/deep-partial.d.ts.map +0 -1
  402. package/src/interfaces/deep-partial.js +0 -3
  403. package/src/interfaces/deep-partial.js.map +0 -1
  404. package/src/interfaces/dto/email-token.d.ts +0 -3
  405. package/src/interfaces/dto/email-token.d.ts.map +0 -1
  406. package/src/interfaces/dto/email-token.js +0 -3
  407. package/src/interfaces/dto/email-token.js.map +0 -1
  408. package/src/interfaces/dto/index.d.ts.map +0 -1
  409. package/src/interfaces/dto/index.js +0 -12
  410. package/src/interfaces/dto/index.js.map +0 -1
  411. package/src/interfaces/dto/mnemonic.d.ts +0 -3
  412. package/src/interfaces/dto/mnemonic.d.ts.map +0 -1
  413. package/src/interfaces/dto/mnemonic.js +0 -3
  414. package/src/interfaces/dto/mnemonic.js.map +0 -1
  415. package/src/interfaces/dto/request-user.d.ts +0 -17
  416. package/src/interfaces/dto/request-user.d.ts.map +0 -1
  417. package/src/interfaces/dto/request-user.js +0 -3
  418. package/src/interfaces/dto/request-user.js.map +0 -1
  419. package/src/interfaces/dto/role.d.ts +0 -3
  420. package/src/interfaces/dto/role.d.ts.map +0 -1
  421. package/src/interfaces/dto/role.js +0 -3
  422. package/src/interfaces/dto/role.js.map +0 -1
  423. package/src/interfaces/dto/token-role.d.ts +0 -10
  424. package/src/interfaces/dto/token-role.d.ts.map +0 -1
  425. package/src/interfaces/dto/token-role.js +0 -3
  426. package/src/interfaces/dto/token-role.js.map +0 -1
  427. package/src/interfaces/dto/user-role.d.ts +0 -3
  428. package/src/interfaces/dto/user-role.d.ts.map +0 -1
  429. package/src/interfaces/dto/user-role.js +0 -3
  430. package/src/interfaces/dto/user-role.js.map +0 -1
  431. package/src/interfaces/dto/user-settings.d.ts +0 -9
  432. package/src/interfaces/dto/user-settings.d.ts.map +0 -1
  433. package/src/interfaces/dto/user-settings.js +0 -3
  434. package/src/interfaces/dto/user-settings.js.map +0 -1
  435. package/src/interfaces/dto/user.d.ts +0 -3
  436. package/src/interfaces/dto/user.d.ts.map +0 -1
  437. package/src/interfaces/dto/user.js +0 -3
  438. package/src/interfaces/dto/user.js.map +0 -1
  439. package/src/interfaces/failable-result.d.ts +0 -7
  440. package/src/interfaces/failable-result.d.ts.map +0 -1
  441. package/src/interfaces/failable-result.js +0 -3
  442. package/src/interfaces/failable-result.js.map +0 -1
  443. package/src/interfaces/frontend-objects/email-token.d.ts +0 -4
  444. package/src/interfaces/frontend-objects/email-token.d.ts.map +0 -1
  445. package/src/interfaces/frontend-objects/email-token.js +0 -3
  446. package/src/interfaces/frontend-objects/email-token.js.map +0 -1
  447. package/src/interfaces/frontend-objects/index.d.ts.map +0 -1
  448. package/src/interfaces/frontend-objects/index.js +0 -9
  449. package/src/interfaces/frontend-objects/index.js.map +0 -1
  450. package/src/interfaces/frontend-objects/request-user.d.ts +0 -17
  451. package/src/interfaces/frontend-objects/request-user.d.ts.map +0 -1
  452. package/src/interfaces/frontend-objects/request-user.js +0 -3
  453. package/src/interfaces/frontend-objects/request-user.js.map +0 -1
  454. package/src/interfaces/frontend-objects/role.d.ts.map +0 -1
  455. package/src/interfaces/frontend-objects/role.js +0 -3
  456. package/src/interfaces/frontend-objects/role.js.map +0 -1
  457. package/src/interfaces/frontend-objects/user-role.d.ts +0 -3
  458. package/src/interfaces/frontend-objects/user-role.d.ts.map +0 -1
  459. package/src/interfaces/frontend-objects/user-role.js +0 -3
  460. package/src/interfaces/frontend-objects/user-role.js.map +0 -1
  461. package/src/interfaces/frontend-objects/user.d.ts +0 -4
  462. package/src/interfaces/frontend-objects/user.d.ts.map +0 -1
  463. package/src/interfaces/frontend-objects/user.js +0 -3
  464. package/src/interfaces/frontend-objects/user.js.map +0 -1
  465. package/src/interfaces/has-creation.d.ts +0 -7
  466. package/src/interfaces/has-creation.d.ts.map +0 -1
  467. package/src/interfaces/has-creation.js +0 -3
  468. package/src/interfaces/has-creation.js.map +0 -1
  469. package/src/interfaces/has-creator.d.ts +0 -7
  470. package/src/interfaces/has-creator.d.ts.map +0 -1
  471. package/src/interfaces/has-creator.js +0 -3
  472. package/src/interfaces/has-creator.js.map +0 -1
  473. package/src/interfaces/has-id.d.ts +0 -4
  474. package/src/interfaces/has-id.d.ts.map +0 -1
  475. package/src/interfaces/has-id.js +0 -3
  476. package/src/interfaces/has-id.js.map +0 -1
  477. package/src/interfaces/has-soft-delete.d.ts +0 -7
  478. package/src/interfaces/has-soft-delete.d.ts.map +0 -1
  479. package/src/interfaces/has-soft-delete.js +0 -3
  480. package/src/interfaces/has-soft-delete.js.map +0 -1
  481. package/src/interfaces/has-soft-deleter.d.ts +0 -7
  482. package/src/interfaces/has-soft-deleter.d.ts.map +0 -1
  483. package/src/interfaces/has-soft-deleter.js +0 -3
  484. package/src/interfaces/has-soft-deleter.js.map +0 -1
  485. package/src/interfaces/has-timestamp-owners.d.ts +0 -5
  486. package/src/interfaces/has-timestamp-owners.d.ts.map +0 -1
  487. package/src/interfaces/has-timestamp-owners.js +0 -3
  488. package/src/interfaces/has-timestamp-owners.js.map +0 -1
  489. package/src/interfaces/has-timestamps.d.ts +0 -6
  490. package/src/interfaces/has-timestamps.d.ts.map +0 -1
  491. package/src/interfaces/has-timestamps.js +0 -3
  492. package/src/interfaces/has-timestamps.js.map +0 -1
  493. package/src/interfaces/has-updater.d.ts +0 -7
  494. package/src/interfaces/has-updater.d.ts.map +0 -1
  495. package/src/interfaces/has-updater.js +0 -3
  496. package/src/interfaces/has-updater.js.map +0 -1
  497. package/src/interfaces/has-updates.d.ts +0 -4
  498. package/src/interfaces/has-updates.d.ts.map +0 -1
  499. package/src/interfaces/has-updates.js +0 -3
  500. package/src/interfaces/has-updates.js.map +0 -1
  501. package/src/interfaces/index.d.ts.map +0 -1
  502. package/src/interfaces/index.js +0 -26
  503. package/src/interfaces/index.js.map +0 -1
  504. package/src/interfaces/success-message.d.ts +0 -5
  505. package/src/interfaces/success-message.d.ts.map +0 -1
  506. package/src/interfaces/success-message.js +0 -3
  507. package/src/interfaces/success-message.js.map +0 -1
  508. package/src/interfaces/token-user.d.ts.map +0 -1
  509. package/src/interfaces/token-user.js +0 -3
  510. package/src/interfaces/token-user.js.map +0 -1
  511. package/src/interfaces/user-settings.d.ts +0 -11
  512. package/src/interfaces/user-settings.d.ts.map +0 -1
  513. package/src/interfaces/user-settings.js +0 -3
  514. package/src/interfaces/user-settings.js.map +0 -1
  515. package/src/lib/flags.d.ts +0 -10
  516. package/src/lib/flags.d.ts.map +0 -1
  517. package/src/lib/flags.js +0 -288
  518. package/src/lib/flags.js.map +0 -1
  519. package/src/lib/formatters.d.ts +0 -16
  520. package/src/lib/formatters.d.ts.map +0 -1
  521. package/src/lib/formatters.js +0 -29
  522. package/src/lib/formatters.js.map +0 -1
  523. package/src/lib/hydrate-dehydrate.d.ts +0 -4
  524. package/src/lib/hydrate-dehydrate.d.ts.map +0 -1
  525. package/src/lib/hydrate-dehydrate.js +0 -27
  526. package/src/lib/hydrate-dehydrate.js.map +0 -1
  527. package/src/lib/index.d.ts.map +0 -1
  528. package/src/lib/index.js +0 -12
  529. package/src/lib/index.js.map +0 -1
  530. package/src/lib/validators-with-constants.d.ts +0 -73
  531. package/src/lib/validators-with-constants.d.ts.map +0 -1
  532. package/src/lib/validators-with-constants.js +0 -64
  533. package/src/lib/validators-with-constants.js.map +0 -1
  534. package/src/lib/validators.d.ts +0 -37
  535. package/src/lib/validators.d.ts.map +0 -1
  536. package/src/lib/validators.js +0 -74
  537. package/src/lib/validators.js.map +0 -1
  538. package/src/local-storage-manager.d.ts +0 -22
  539. package/src/local-storage-manager.d.ts.map +0 -1
  540. package/src/local-storage-manager.js +0 -74
  541. package/src/local-storage-manager.js.map +0 -1
  542. package/src/strings/de.d.ts +0 -3
  543. package/src/strings/de.d.ts.map +0 -1
  544. package/src/strings/de.js +0 -487
  545. package/src/strings/de.js.map +0 -1
  546. package/src/strings/en-GB.d.ts +0 -3
  547. package/src/strings/en-GB.d.ts.map +0 -1
  548. package/src/strings/en-GB.js +0 -487
  549. package/src/strings/en-GB.js.map +0 -1
  550. package/src/strings/en-US.d.ts +0 -3
  551. package/src/strings/en-US.d.ts.map +0 -1
  552. package/src/strings/en-US.js +0 -487
  553. package/src/strings/en-US.js.map +0 -1
  554. package/src/strings/es.d.ts +0 -3
  555. package/src/strings/es.d.ts.map +0 -1
  556. package/src/strings/es.js +0 -487
  557. package/src/strings/es.js.map +0 -1
  558. package/src/strings/fr.d.ts +0 -3
  559. package/src/strings/fr.d.ts.map +0 -1
  560. package/src/strings/fr.js +0 -487
  561. package/src/strings/fr.js.map +0 -1
  562. package/src/strings/ja.d.ts +0 -3
  563. package/src/strings/ja.d.ts.map +0 -1
  564. package/src/strings/ja.js +0 -487
  565. package/src/strings/ja.js.map +0 -1
  566. package/src/strings/uk.d.ts +0 -3
  567. package/src/strings/uk.d.ts.map +0 -1
  568. package/src/strings/uk.js +0 -487
  569. package/src/strings/uk.js.map +0 -1
  570. package/src/strings/zh-CN.d.ts +0 -3
  571. package/src/strings/zh-CN.d.ts.map +0 -1
  572. package/src/strings/zh-CN.js +0 -487
  573. package/src/strings/zh-CN.js.map +0 -1
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2025 Digital Defiance
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@digitaldefiance/suite-core-lib",
3
- "version": "3.6.47",
3
+ "version": "3.6.48",
4
4
  "homepage": "https://github.com/Digital-Defiance/suite-core-lib",
5
5
  "repository": {
6
6
  "type": "git",
@@ -46,6 +46,5 @@
46
46
  "@typescript-eslint/parser": "^8.52.0",
47
47
  "eslint-plugin-import": "^2.32.0",
48
48
  "eslint-plugin-prettier": "^5.5.4"
49
- },
50
- "type": "commonjs"
51
- }
49
+ }
50
+ }
@@ -0,0 +1,102 @@
1
+ /**
2
+ * Backup code string class for generating, validating, and formatting backup codes.
3
+ * Provides type-safe handling of backup codes with multiple output formats.
4
+ */
5
+ import { Constants } from './constants';
6
+ import { InvalidBackupCodeError } from './errors/invalid-backup-code';
7
+ import { IConstants } from './interfaces';
8
+
9
+ export class BackupCodeString {
10
+ private readonly _normalizedCode: string;
11
+
12
+ constructor(code: string) {
13
+ const normalizedCode = BackupCodeString.normalizeCode(code);
14
+ if (!Constants.BACKUP_CODES.NormalizedHexRegex.test(normalizedCode)) {
15
+ throw new InvalidBackupCodeError();
16
+ }
17
+ this._normalizedCode = normalizedCode;
18
+ }
19
+
20
+ public get value(): string {
21
+ return BackupCodeString.formatBackupCode(this._normalizedCode);
22
+ }
23
+
24
+ public get notNullValue(): string {
25
+ return BackupCodeString.formatBackupCode(this._normalizedCode);
26
+ }
27
+
28
+ public get valueAsHexString(): string {
29
+ const formattedValue = BackupCodeString.formatBackupCode(
30
+ this._normalizedCode,
31
+ );
32
+ return new TextEncoder().encode(formattedValue).reduce((str, byte) => {
33
+ return str + byte.toString(16).padStart(2, '0');
34
+ }, '');
35
+ }
36
+
37
+ public get valueAsBase64String(): string {
38
+ const formattedValue = BackupCodeString.formatBackupCode(
39
+ this._normalizedCode,
40
+ );
41
+ return btoa(formattedValue);
42
+ }
43
+
44
+ public get valueAsUint8Array(): Uint8Array {
45
+ const formattedValue = BackupCodeString.formatBackupCode(
46
+ this._normalizedCode,
47
+ );
48
+ return new TextEncoder().encode(formattedValue);
49
+ }
50
+
51
+ public get hasValue(): boolean {
52
+ return this._normalizedCode.length > 0;
53
+ }
54
+
55
+ public get length(): number {
56
+ return this._normalizedCode.length;
57
+ }
58
+
59
+ public dispose(): void {
60
+ // Backup codes are not sensitive enough to require secure disposal
61
+ // They're already encrypted when stored in the database
62
+ }
63
+
64
+ /**
65
+ * Format a 32-char normalized code into display form (8 groups of 4).
66
+ * Does not restrict characters beyond grouping.
67
+ */
68
+ public static formatBackupCode(code: string): string {
69
+ const groups = code.match(/.{1,4}/g) ?? [code];
70
+ return groups.join('-');
71
+ }
72
+ /**
73
+ * Normalize user-entered code: remove spaces and hyphens, lowercase, and trim.
74
+ */
75
+ public static normalizeCode(input: string): string {
76
+ return input.replace(/[\s-]/g, '').toLowerCase().trim();
77
+ }
78
+
79
+ public static generateBackupCode(): string {
80
+ const alphabet = 'abcdefghijklmnopqrstuvwxyz0123456789';
81
+ const rnd = crypto.getRandomValues(new Uint8Array(32));
82
+ let raw = '';
83
+ for (let j = 0; j < 32; j++) {
84
+ raw += alphabet[rnd[j] % alphabet.length];
85
+ }
86
+ return raw;
87
+ }
88
+
89
+ /**
90
+ * Generate the configured number of backup codes.
91
+ * Note: If generation alphabet/length is controlled elsewhere, prefer that path.
92
+ */
93
+ public static generateBackupCodes(
94
+ constants: IConstants = Constants,
95
+ ): Array<BackupCodeString> {
96
+ const codes: Array<BackupCodeString> = [];
97
+ for (let i = 0; i < constants.BACKUP_CODES.Count; i++) {
98
+ codes.push(new BackupCodeString(BackupCodeString.generateBackupCode()));
99
+ }
100
+ return codes;
101
+ }
102
+ }
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * Builders module - fluent builders for common objects
3
3
  */
4
+
4
5
  export * from './role-builder';
5
6
  export * from './user-builder';
6
- //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1,67 @@
1
+ /**
2
+ * Fluent builder for creating role objects
3
+ */
4
+
5
+ import type { PlatformID } from '@digitaldefiance/ecies-lib';
6
+ import { Role } from '../enumerations/role';
7
+ import { IRoleBase } from '../interfaces/bases/role';
8
+
9
+ /**
10
+ * Builder for creating role objects with fluent API
11
+ */
12
+ export class RoleBuilder<TID extends PlatformID = PlatformID, TDate extends Date | string = Date> {
13
+ private data: Partial<IRoleBase<TID, TDate, Role>> = {
14
+ admin: false,
15
+ member: false,
16
+ child: false,
17
+ system: false,
18
+ };
19
+
20
+ static create<TID extends PlatformID = PlatformID, TDate extends Date | string = Date>(): RoleBuilder<
21
+ TID,
22
+ TDate
23
+ > {
24
+ return new RoleBuilder<TID, TDate>();
25
+ }
26
+
27
+ withName(name: Role): this {
28
+ this.data.name = name;
29
+ return this;
30
+ }
31
+
32
+ asAdmin(): this {
33
+ this.data.admin = true;
34
+ this.data.member = false;
35
+ this.data.child = false;
36
+ this.data.system = false;
37
+ return this;
38
+ }
39
+
40
+ asMember(): this {
41
+ this.data.admin = false;
42
+ this.data.member = true;
43
+ this.data.child = false;
44
+ this.data.system = false;
45
+ return this;
46
+ }
47
+
48
+ asChild(): this {
49
+ this.data.admin = false;
50
+ this.data.member = false;
51
+ this.data.child = true;
52
+ this.data.system = false;
53
+ return this;
54
+ }
55
+
56
+ asSystem(): this {
57
+ this.data.admin = false;
58
+ this.data.member = false;
59
+ this.data.child = false;
60
+ this.data.system = true;
61
+ return this;
62
+ }
63
+
64
+ build(): Partial<IRoleBase<TID, TDate, Role>> {
65
+ return { ...this.data };
66
+ }
67
+ }
@@ -0,0 +1,81 @@
1
+ /**
2
+ * Fluent builder for creating user objects
3
+ */
4
+
5
+ import type { PlatformID } from '@digitaldefiance/ecies-lib';
6
+ import { AccountStatus } from '../enumerations/account-status';
7
+ import { IUserBase } from '../interfaces/bases/user';
8
+
9
+ /**
10
+ * Builder for creating user objects with fluent API
11
+ */
12
+ export class UserBuilder<
13
+ TID extends PlatformID = PlatformID,
14
+ TDate extends Date | string = Date,
15
+ TLanguage extends string = string,
16
+ > {
17
+ private data: Partial<IUserBase<TID, TDate, TLanguage, AccountStatus>> = {
18
+ emailVerified: false,
19
+ accountStatus: AccountStatus.Active,
20
+ directChallenge: false,
21
+ backupCodes: [],
22
+ timezone: 'UTC',
23
+ };
24
+
25
+ static create<
26
+ TID extends PlatformID = PlatformID,
27
+ TDate extends Date | string = Date,
28
+ TLanguage extends string = string,
29
+ >(): UserBuilder<TID, TDate, TLanguage> {
30
+ return new UserBuilder<TID, TDate, TLanguage>();
31
+ }
32
+
33
+ withUsername(username: string): this {
34
+ this.data.username = username;
35
+ return this;
36
+ }
37
+
38
+ withEmail(email: string): this {
39
+ this.data.email = email;
40
+ return this;
41
+ }
42
+
43
+ withPublicKey(publicKey: string): this {
44
+ this.data.publicKey = publicKey;
45
+ return this;
46
+ }
47
+
48
+ withTimezone(timezone: string): this {
49
+ this.data.timezone = timezone;
50
+ return this;
51
+ }
52
+
53
+ withSiteLanguage(siteLanguage: TLanguage): this {
54
+ this.data.siteLanguage = siteLanguage;
55
+ return this;
56
+ }
57
+
58
+ withEmailVerified(verified: boolean): this {
59
+ this.data.emailVerified = verified;
60
+ return this;
61
+ }
62
+
63
+ withAccountStatus(status: AccountStatus): this {
64
+ this.data.accountStatus = status;
65
+ return this;
66
+ }
67
+
68
+ withDirectChallenge(enabled: boolean): this {
69
+ this.data.directChallenge = enabled;
70
+ return this;
71
+ }
72
+
73
+ withMnemonicRecovery(recovery: string): this {
74
+ this.data.mnemonicRecovery = recovery;
75
+ return this;
76
+ }
77
+
78
+ build(): Partial<IUserBase<TID, TDate, TLanguage, AccountStatus>> {
79
+ return { ...this.data };
80
+ }
81
+ }
@@ -0,0 +1,229 @@
1
+ /**
2
+ * Constants and configuration for the suite-core library.
3
+ * Provides runtime configuration including backup codes, authentication settings,
4
+ * validation rules, and site-specific constants.
5
+ */
6
+ import { ObjectIdProvider } from '@digitaldefiance/ecies-lib';
7
+ import { Role } from './enumerations/role';
8
+ import { IBackupCodeConstants, ICoreConstants } from './interfaces';
9
+ import { IConstants } from './interfaces/constants';
10
+
11
+ export const BACKUP_CODES: IBackupCodeConstants = Object.freeze({
12
+ /**
13
+ * How many backup codes to generate for users
14
+ */
15
+ Count: 10 as const,
16
+ NormalizedHexRegex: /^[a-z0-9]{32}$/, // exactly 32 lowercase alphanumeric chars
17
+ DisplayRegex: /^([a-z0-9]{4}-){7}[a-z0-9]{4}$/, // xxxx-xxxx-xxxx-xxxx-xxxx-xxxx-xxxx-xxxx
18
+ } as const);
19
+
20
+ export const CORE: ICoreConstants = Object.freeze({
21
+ /**
22
+ * The ID provider to use for generating and parsing IDs
23
+ */
24
+ idProvider: new ObjectIdProvider(),
25
+ /**
26
+ * Default duration in seconds for which a mnemonic is kept in memory
27
+ */
28
+ DefaultExpireMemoryMnemonicSeconds: 300 as const, // 5 minutes
29
+ /**
30
+ * Default duration in seconds for which a wallet is kept in memory
31
+ */
32
+ DefaultExpireMemoryWalletSeconds: 300 as const, // 5 minutes
33
+
34
+ /**
35
+ * Duration in milliseconds for which a login challenge is valid.
36
+ */
37
+ LoginChallengeExpiration: 60000 as const, // 60 seconds
38
+
39
+ /**
40
+ * The expected length of a direct login challenge in bytes
41
+ */
42
+ DirectLoginChallengeLength: 104 as const,
43
+
44
+ /**
45
+ * Backup code system configuration
46
+ */
47
+ BACKUP_CODES: BACKUP_CODES,
48
+
49
+ /**
50
+ * Duration in milliseconds for which an email token is valid.
51
+ */
52
+ EmailTokenExpiration: 86400000 as const, // 24 * 60 * 60 * 1000
53
+ /**
54
+ * Length in bytes of the email token generated (is represented as a hex string of twice as many)
55
+ */
56
+ EmailTokenLength: 32 as const,
57
+ /**
58
+ * Number of rounds for bcrypt hashing. Higher values increase security but also consume more CPU resources.
59
+ */
60
+ BcryptRounds: 10 as const,
61
+ /**
62
+ * The username of the administrator user.
63
+ */
64
+ AdministratorUser: 'admin' as const,
65
+ /**
66
+ * The name of the administrator role.
67
+ */
68
+ AdministratorRole: Role.Admin as const,
69
+ /**
70
+ * The name of the member role.
71
+ */
72
+ MemberRole: Role.Member as const,
73
+ /**
74
+ * The username of the test user.
75
+ */
76
+ MemberUser: 'test' as const,
77
+ /**
78
+ * The name of the system role.
79
+ */
80
+ SystemRole: Role.System as const,
81
+ /**
82
+ * The username of the system user.
83
+ */
84
+ SystemUser: 'system' as const,
85
+ /**
86
+ * Minimum username length
87
+ */
88
+ UsernameMinLength: 3 as const,
89
+ /**
90
+ * Maximum username length
91
+ */
92
+ UsernameMaxLength: 30 as const,
93
+ /**
94
+ * The regular expression for valid usernames.
95
+ */
96
+ UsernameRegex: /^[A-Za-z0-9]{3,30}$/,
97
+ /**
98
+ * Minimum password length
99
+ */
100
+ PasswordMinLength: 8 as const,
101
+ /**
102
+ * The regular expression for valid passwords.
103
+ */
104
+ PasswordRegex:
105
+ /^(?=.*[A-Za-z])(?=.*\d)(?=.*[!@#$%^&*()_+\-=[\]{};':"\\|,.<>/?])[A-Za-z\d!@#$%^&*()_+\-=[\]{};':"\\|,.<>/?]{8,}$/,
106
+ /**
107
+ * The regular expression for valid JWT tokens.
108
+ */
109
+ JwtSecretRegex: /^[0-9a-f]{64}$/i,
110
+ /**
111
+ * The regular expression for valid mnemonic phrases.
112
+ * BIP39 - supports 12, 15, 18, 21, or 24 word mnemonics
113
+ */
114
+ MnemonicRegex:
115
+ /^(?:\w+\s){11}\w+$|^(?:\w+\s){14}\w+$|^(?:\w+\s){17}\w+$|^(?:\w+\s){20}\w+$|^(?:\w+\s){23}\w+$/i,
116
+ /**
117
+ * Matches a 64-character hexadecimal string (SHA-256).
118
+ */
119
+ MnemonicHmacRegex: /^[a-f0-9]{64}$/,
120
+ /**
121
+ * The regular expression for valid encryption keys.
122
+ */
123
+ MnemonicEncryptionKeyRegex: /^[a-f0-9]{64}$/,
124
+ /**
125
+ * The amount of time in milliseconds after which an email token can be resent.
126
+ */
127
+ EmailTokenResendInterval: 300000 as const, // 5 * 60 * 1000 = 5 minutes
128
+ /**
129
+ * The interval in minutes after which an email token can be resent.
130
+ */
131
+ EmailTokenResendIntervalMinutes: 5 as const,
132
+ /**
133
+ * The site name. Overridden by specific site constants.
134
+ */
135
+ Site: 'New Site' as const,
136
+ /**
137
+ * The site tagline. Overridden by specific site constants.
138
+ */
139
+ SiteTagline: 'New Site Tagline' as const,
140
+ /**
141
+ * The site description. Overridden by specific site constants.
142
+ */
143
+ SiteDescription: 'Description of the new site' as const,
144
+ /**
145
+ * Email domain of usernames on the site. Overridden by specific site constants.
146
+ */
147
+ SiteEmailDomain: 'localhost' as const,
148
+ /**
149
+ * The hostname of the site. Overridden by specific site constants.
150
+ */
151
+ SiteHostname: 'localhost' as const,
152
+ } as const);
153
+
154
+ export const createConstants: (
155
+ siteDomain: string,
156
+ siteHostname: string,
157
+ overrides?: Partial<IConstants>,
158
+ ) => IConstants = (
159
+ siteDomain: string,
160
+ siteHostname: string,
161
+ overrides?: Partial<IConstants>,
162
+ ) => {
163
+ return Object.freeze({
164
+ ...CORE,
165
+ /**
166
+ * The email of the administrator user/admin contact
167
+ */
168
+ AdministratorEmail: `admin@${siteDomain}` as const,
169
+ /**
170
+ * The email of the test user.
171
+ */
172
+ MemberEmail: `test@${siteDomain}` as const,
173
+ /**
174
+ * The email of the system user.
175
+ */
176
+ SystemEmail: `system@${siteDomain}` as const,
177
+ /**
178
+ * The email domain of usernames on the site.
179
+ */
180
+ SiteEmailDomain: siteDomain,
181
+ /**
182
+ * The hostname of the site.
183
+ */
184
+ SiteHostname: siteHostname,
185
+ /**
186
+ * The color used to indicate success states.
187
+ */
188
+ success_color: '#4CAF50',
189
+ /**
190
+ * The color used to indicate failure states.
191
+ */
192
+ failure_color: '#F44336',
193
+ /**
194
+ * The color used to indicate warning states.
195
+ */
196
+ warning_color: '#FF9800',
197
+ /**
198
+ * The light variant of the primary text color.
199
+ */
200
+ primary_text_light: '#ffffff',
201
+ /**
202
+ * The dark variant of the primary text color.
203
+ */
204
+ primary_text_dark: '#000000',
205
+ /**
206
+ * The light variant of the secondary text color.
207
+ */
208
+ secondary_text_light: '#ffffff',
209
+ /**
210
+ * The dark variant of the secondary text color.
211
+ */
212
+ secondary_text_dark: '#000000',
213
+ /**
214
+ * The primary brand color (used for primary theme color)
215
+ */
216
+ logo_primary_color: '#050505ff',
217
+ /**
218
+ * The primary text color (used for logo and text)
219
+ */
220
+ logo_primary_text: '#212121',
221
+ /**
222
+ * The secondary text color (used for logo and accents)
223
+ */
224
+ logo_secondary_text: '#757575',
225
+ ...(overrides ?? {}),
226
+ } as const);
227
+ };
228
+
229
+ export const Constants = createConstants('localhost', 'localhost');
@@ -1,9 +1,13 @@
1
1
  /**
2
2
  * Core error class exports for suite-core-lib
3
3
  */
4
+
5
+ // Base error classes
4
6
  export { CoreTypedHandleableError } from '../errors/core-typed-handleable';
5
7
  export { TranslatableSuiteError } from '../errors/translatable-suite';
6
8
  export { TranslatableSuiteHandleableError } from '../errors/translatable-suite-handleable';
9
+
10
+ // Common error classes
7
11
  export { EmailInUseError } from '../errors/email-in-use';
8
12
  export { GenericValidationError } from '../errors/generic-validation';
9
13
  export { InvalidCredentialsError } from '../errors/invalid-credentials';
@@ -11,4 +15,3 @@ export { InvalidEmailError } from '../errors/invalid-email';
11
15
  export { InvalidUsernameError } from '../errors/invalid-username';
12
16
  export { UserNotFoundError } from '../errors/user-not-found';
13
17
  export { UsernameInUseError } from '../errors/username-in-use';
14
- //# sourceMappingURL=errors.d.ts.map
@@ -3,5 +3,5 @@
3
3
  * Note: Most types are already exported from the main index.ts
4
4
  * This module provides convenient grouped exports for commonly used items
5
5
  */
6
+
6
7
  export * from './result';
7
- //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1,40 @@
1
+ /**
2
+ * Result type pattern for better error handling
3
+ * Provides type-safe success/failure handling without exceptions
4
+ */
5
+
6
+ export type Result<T, TError = Error> =
7
+ | { success: true; data: T }
8
+ | { success: false; error: TError };
9
+
10
+ /**
11
+ * Create a successful result
12
+ */
13
+ export function success<T>(data: T): Result<T, never> {
14
+ return { success: true, data };
15
+ }
16
+
17
+ /**
18
+ * Create a failed result
19
+ */
20
+ export function failure<E>(error: E): Result<never, E> {
21
+ return { success: false, error };
22
+ }
23
+
24
+ /**
25
+ * Check if result is successful
26
+ */
27
+ export function isSuccess<T, E>(
28
+ result: Result<T, E>,
29
+ ): result is { success: true; data: T } {
30
+ return result.success;
31
+ }
32
+
33
+ /**
34
+ * Check if result is a failure
35
+ */
36
+ export function isFailure<T, E>(
37
+ result: Result<T, E>,
38
+ ): result is { success: false; error: E } {
39
+ return !result.success;
40
+ }
@@ -1,8 +1,12 @@
1
1
  /**
2
2
  * Core type exports for suite-core-lib
3
3
  */
4
+
5
+ // Common utility types
4
6
  export type { DeepPartial } from '../interfaces/deep-partial';
5
7
  export type { IFailableResult } from '../interfaces/failable-result';
8
+
9
+ // Base interface types
6
10
  export type { IHasCreation } from '../interfaces/has-creation';
7
11
  export type { IHasCreator } from '../interfaces/has-creator';
8
12
  export type { IHasId } from '../interfaces/has-id';
@@ -12,6 +16,7 @@ export type { IHasTimestampOwners } from '../interfaces/has-timestamp-owners';
12
16
  export type { IHasTimestamps } from '../interfaces/has-timestamps';
13
17
  export type { IHasUpdater } from '../interfaces/has-updater';
14
18
  export type { IHasUpdates } from '../interfaces/has-updates';
19
+
20
+ // User and auth types
15
21
  export type { BackupCodeString } from '../backup-code-string';
16
22
  export type { ITokenUser } from '../interfaces/token-user';
17
- //# sourceMappingURL=types.d.ts.map