@digitaldefiance/suite-core-lib 3.6.5 → 3.6.7
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.
- package/LICENSE +21 -0
- package/README.md +87 -43
- package/package.json +10 -6
- package/src/backup-code-string.ts +96 -0
- package/src/builders/{index.d.ts → index.ts} +1 -1
- package/src/builders/role-builder.ts +63 -0
- package/src/builders/user-builder.ts +72 -0
- package/src/constants.ts +220 -0
- package/src/core/{errors.d.ts → errors.ts} +4 -1
- package/src/core/{index.d.ts → index.ts} +1 -1
- package/src/core/result.ts +36 -0
- package/src/core/{types.d.ts → types.ts} +6 -1
- package/src/defaults.ts +110 -0
- package/src/enumerations/account-status.ts +17 -0
- package/src/enumerations/email-token-type.ts +24 -0
- package/src/enumerations/fec-error-type.ts +13 -0
- package/src/enumerations/{index.d.ts → index.ts} +1 -2
- package/src/enumerations/pbkdf2-error-type.ts +4 -0
- package/src/enumerations/role.ts +5 -0
- package/src/enumerations/suite-core-string-key.ts +495 -0
- package/src/errors/account-locked.ts +9 -0
- package/src/errors/account-status.ts +33 -0
- package/src/errors/admin-role-not-found.ts +10 -0
- package/src/errors/core-typed-handleable.ts +69 -0
- package/src/errors/direct-challenge-not-enabled.ts +12 -0
- package/src/errors/direct-token-used.ts +9 -0
- package/src/errors/email-in-use.ts +11 -0
- package/src/errors/email-token-expired.ts +12 -0
- package/src/errors/email-token-failed-to-send.ts +20 -0
- package/src/errors/email-token-sent-too-recently.ts +29 -0
- package/src/errors/email-token-used-or-invalid.ts +12 -0
- package/src/errors/email-verified.ts +11 -0
- package/src/errors/failed-to-use-direct-token.ts +9 -0
- package/src/errors/fec-error.ts +33 -0
- package/src/errors/generic-validation.ts +11 -0
- package/src/errors/{index.d.ts → index.ts} +0 -1
- package/src/errors/invalid-backup-code.ts +6 -0
- package/src/errors/invalid-challenge-response.ts +12 -0
- package/src/errors/invalid-challenge.ts +9 -0
- package/src/errors/invalid-credentials.ts +14 -0
- package/src/errors/invalid-email.ts +22 -0
- package/src/errors/invalid-expired-token.ts +11 -0
- package/src/errors/invalid-token.ts +13 -0
- package/src/errors/invalid-userid.ts +21 -0
- package/src/errors/invalid-username.ts +14 -0
- package/src/errors/last-admin-error.ts +12 -0
- package/src/errors/login-challenge-expired.ts +12 -0
- package/src/errors/member-role-not-found.ts +10 -0
- package/src/errors/password-login-not-enabled.ts +12 -0
- package/src/errors/password-login-not-setup.ts +12 -0
- package/src/errors/pbkdf2-error.ts +19 -0
- package/src/errors/pending-email-verification.ts +9 -0
- package/src/errors/private-key-required.ts +13 -0
- package/src/errors/system-role-not-found.ts +10 -0
- package/src/errors/token-not-found.ts +26 -0
- package/src/errors/translatable-suite-handleable.ts +27 -0
- package/src/errors/translatable-suite.ts +34 -0
- package/src/errors/user-not-found.ts +14 -0
- package/src/errors/username-email-required.ts +20 -0
- package/src/errors/username-in-use.ts +14 -0
- package/src/i18n-setup.ts +141 -0
- package/src/{index.d.ts → index.ts} +0 -1
- package/src/interfaces/backup-code-consts.ts +15 -0
- package/src/interfaces/backup-code.ts +6 -0
- package/src/interfaces/bases/email-token.ts +38 -0
- package/src/interfaces/bases/{index.d.ts → index.ts} +0 -1
- package/src/interfaces/bases/{mnemonic.d.ts → mnemonic.ts} +5 -5
- package/src/interfaces/bases/role.ts +40 -0
- package/src/interfaces/bases/token-role.ts +9 -0
- package/src/interfaces/bases/{used-direct-login-token.d.ts → used-direct-login-token.ts} +3 -3
- package/src/interfaces/bases/user-role.ts +21 -0
- package/src/interfaces/bases/user.ts +88 -0
- package/src/interfaces/combined-role-privileges.ts +6 -0
- package/src/interfaces/constants.ts +56 -0
- package/src/interfaces/core-consts.ts +130 -0
- package/src/interfaces/deep-partial.ts +3 -0
- package/src/interfaces/dto/{email-token.d.ts → email-token.ts} +1 -1
- package/src/interfaces/dto/{index.d.ts → index.ts} +1 -2
- package/src/interfaces/dto/{mnemonic.d.ts → mnemonic.ts} +1 -1
- package/src/interfaces/dto/request-user.ts +19 -0
- package/src/interfaces/dto/{role.d.ts → role.ts} +1 -1
- package/src/interfaces/dto/{token-role.d.ts → token-role.ts} +9 -3
- package/src/interfaces/dto/{user-role.d.ts → user-role.ts} +1 -1
- package/src/interfaces/dto/{user-settings.d.ts → user-settings.ts} +1 -2
- package/src/interfaces/dto/{user.d.ts → user.ts} +1 -1
- package/src/interfaces/failable-result.ts +6 -0
- package/src/interfaces/frontend-objects/email-token.ts +8 -0
- package/src/interfaces/frontend-objects/{index.d.ts → index.ts} +1 -2
- package/src/interfaces/frontend-objects/request-user.ts +17 -0
- package/src/interfaces/frontend-objects/{role.d.ts → role.ts} +1 -1
- package/src/interfaces/frontend-objects/{user-role.d.ts → user-role.ts} +1 -1
- package/src/interfaces/frontend-objects/user.ts +9 -0
- package/src/interfaces/has-creation.ts +6 -0
- package/src/interfaces/has-creator.ts +6 -0
- package/src/interfaces/has-id.ts +3 -0
- package/src/interfaces/has-soft-delete.ts +6 -0
- package/src/interfaces/has-soft-deleter.ts +6 -0
- package/src/interfaces/has-timestamp-owners.ts +6 -0
- package/src/interfaces/has-timestamps.ts +7 -0
- package/src/interfaces/has-updater.ts +6 -0
- package/src/interfaces/has-updates.ts +3 -0
- package/src/interfaces/{index.d.ts → index.ts} +1 -3
- package/src/interfaces/success-message.ts +4 -0
- package/src/interfaces/{token-user.d.ts → token-user.ts} +3 -3
- package/src/interfaces/{user-settings.d.ts → user-settings.ts} +2 -2
- package/src/lib/flags.ts +286 -0
- package/src/lib/formatters.ts +28 -0
- package/src/lib/hydrate-dehydrate.ts +27 -0
- package/src/lib/{index.d.ts → index.ts} +2 -2
- package/src/lib/validators-with-constants.ts +72 -0
- package/src/lib/validators.ts +72 -0
- package/src/local-storage-manager.ts +69 -0
- package/src/strings/de.ts +689 -0
- package/src/strings/en-GB.ts +626 -0
- package/src/strings/en-US.ts +628 -0
- package/src/strings/es.ts +688 -0
- package/src/strings/fr.ts +685 -0
- package/src/strings/ja.ts +654 -0
- package/src/strings/uk.ts +667 -0
- package/src/strings/zh-CN.ts +566 -0
- package/src/backup-code-string.d.ts +0 -29
- package/src/backup-code-string.d.ts.map +0 -1
- package/src/backup-code-string.js +0 -81
- package/src/backup-code-string.js.map +0 -1
- package/src/builders/index.d.ts.map +0 -1
- package/src/builders/index.js +0 -9
- package/src/builders/index.js.map +0 -1
- package/src/builders/role-builder.d.ts +0 -19
- package/src/builders/role-builder.d.ts.map +0 -1
- package/src/builders/role-builder.js +0 -57
- package/src/builders/role-builder.js.map +0 -1
- package/src/builders/user-builder.d.ts +0 -23
- package/src/builders/user-builder.d.ts.map +0 -1
- package/src/builders/user-builder.js +0 -63
- package/src/builders/user-builder.js.map +0 -1
- package/src/constants.d.ts +0 -7
- package/src/constants.d.ts.map +0 -1
- package/src/constants.js +0 -209
- package/src/constants.js.map +0 -1
- package/src/core/errors.d.ts.map +0 -1
- package/src/core/errors.js +0 -29
- package/src/core/errors.js.map +0 -1
- package/src/core/index.d.ts.map +0 -1
- package/src/core/index.js +0 -10
- package/src/core/index.js.map +0 -1
- package/src/core/result.d.ts +0 -34
- package/src/core/result.d.ts.map +0 -1
- package/src/core/result.js +0 -35
- package/src/core/result.js.map +0 -1
- package/src/core/types.d.ts.map +0 -1
- package/src/core/types.js +0 -6
- package/src/core/types.js.map +0 -1
- package/src/defaults.d.ts +0 -7
- package/src/defaults.d.ts.map +0 -1
- package/src/defaults.js +0 -66
- package/src/defaults.js.map +0 -1
- package/src/enumerations/account-status.d.ts +0 -18
- package/src/enumerations/account-status.d.ts.map +0 -1
- package/src/enumerations/account-status.js +0 -22
- package/src/enumerations/account-status.js.map +0 -1
- package/src/enumerations/email-token-type.d.ts +0 -25
- package/src/enumerations/email-token-type.d.ts.map +0 -1
- package/src/enumerations/email-token-type.js +0 -29
- package/src/enumerations/email-token-type.js.map +0 -1
- package/src/enumerations/fec-error-type.d.ts +0 -14
- package/src/enumerations/fec-error-type.d.ts.map +0 -1
- package/src/enumerations/fec-error-type.js +0 -18
- package/src/enumerations/fec-error-type.js.map +0 -1
- package/src/enumerations/index.d.ts.map +0 -1
- package/src/enumerations/index.js +0 -10
- package/src/enumerations/index.js.map +0 -1
- package/src/enumerations/pbkdf2-error-type.d.ts +0 -5
- package/src/enumerations/pbkdf2-error-type.d.ts.map +0 -1
- package/src/enumerations/pbkdf2-error-type.js +0 -9
- package/src/enumerations/pbkdf2-error-type.js.map +0 -1
- package/src/enumerations/role.d.ts +0 -6
- package/src/enumerations/role.d.ts.map +0 -1
- package/src/enumerations/role.js +0 -10
- package/src/enumerations/role.js.map +0 -1
- package/src/enumerations/suite-core-string-key.d.ts +0 -482
- package/src/enumerations/suite-core-string-key.d.ts.map +0 -1
- package/src/enumerations/suite-core-string-key.js +0 -493
- package/src/enumerations/suite-core-string-key.js.map +0 -1
- package/src/errors/account-locked.d.ts +0 -5
- package/src/errors/account-locked.d.ts.map +0 -1
- package/src/errors/account-locked.js +0 -13
- package/src/errors/account-locked.js.map +0 -1
- package/src/errors/account-status.d.ts +0 -7
- package/src/errors/account-status.d.ts.map +0 -1
- package/src/errors/account-status.js +0 -31
- package/src/errors/account-status.js.map +0 -1
- package/src/errors/admin-role-not-found.d.ts +0 -6
- package/src/errors/admin-role-not-found.d.ts.map +0 -1
- package/src/errors/admin-role-not-found.js +0 -13
- package/src/errors/admin-role-not-found.js.map +0 -1
- package/src/errors/core-typed-handleable.d.ts +0 -12
- package/src/errors/core-typed-handleable.d.ts.map +0 -1
- package/src/errors/core-typed-handleable.js +0 -51
- package/src/errors/core-typed-handleable.js.map +0 -1
- package/src/errors/direct-challenge-not-enabled.d.ts +0 -5
- package/src/errors/direct-challenge-not-enabled.d.ts.map +0 -1
- package/src/errors/direct-challenge-not-enabled.js +0 -16
- package/src/errors/direct-challenge-not-enabled.js.map +0 -1
- package/src/errors/direct-token-used.d.ts +0 -5
- package/src/errors/direct-token-used.d.ts.map +0 -1
- package/src/errors/direct-token-used.js +0 -13
- package/src/errors/direct-token-used.js.map +0 -1
- package/src/errors/email-in-use.d.ts +0 -5
- package/src/errors/email-in-use.d.ts.map +0 -1
- package/src/errors/email-in-use.js +0 -15
- package/src/errors/email-in-use.js.map +0 -1
- package/src/errors/email-token-expired.d.ts +0 -5
- package/src/errors/email-token-expired.d.ts.map +0 -1
- package/src/errors/email-token-expired.js +0 -15
- package/src/errors/email-token-expired.js.map +0 -1
- package/src/errors/email-token-failed-to-send.d.ts +0 -6
- package/src/errors/email-token-failed-to-send.d.ts.map +0 -1
- package/src/errors/email-token-failed-to-send.js +0 -22
- package/src/errors/email-token-failed-to-send.js.map +0 -1
- package/src/errors/email-token-sent-too-recently.d.ts +0 -7
- package/src/errors/email-token-sent-too-recently.d.ts.map +0 -1
- package/src/errors/email-token-sent-too-recently.js +0 -21
- package/src/errors/email-token-sent-too-recently.js.map +0 -1
- package/src/errors/email-token-used-or-invalid.d.ts +0 -5
- package/src/errors/email-token-used-or-invalid.d.ts.map +0 -1
- package/src/errors/email-token-used-or-invalid.js +0 -15
- package/src/errors/email-token-used-or-invalid.js.map +0 -1
- package/src/errors/email-verified.d.ts +0 -5
- package/src/errors/email-verified.d.ts.map +0 -1
- package/src/errors/email-verified.js +0 -15
- package/src/errors/email-verified.js.map +0 -1
- package/src/errors/failed-to-use-direct-token.d.ts +0 -5
- package/src/errors/failed-to-use-direct-token.d.ts.map +0 -1
- package/src/errors/failed-to-use-direct-token.js +0 -13
- package/src/errors/failed-to-use-direct-token.js.map +0 -1
- package/src/errors/fec-error.d.ts +0 -6
- package/src/errors/fec-error.d.ts.map +0 -1
- package/src/errors/fec-error.js +0 -26
- package/src/errors/fec-error.js.map +0 -1
- package/src/errors/generic-validation.d.ts +0 -5
- package/src/errors/generic-validation.d.ts.map +0 -1
- package/src/errors/generic-validation.js +0 -12
- package/src/errors/generic-validation.js.map +0 -1
- package/src/errors/index.d.ts.map +0 -1
- package/src/errors/index.js +0 -43
- package/src/errors/index.js.map +0 -1
- package/src/errors/invalid-backup-code.d.ts +0 -4
- package/src/errors/invalid-backup-code.d.ts.map +0 -1
- package/src/errors/invalid-backup-code.js +0 -11
- package/src/errors/invalid-backup-code.js.map +0 -1
- package/src/errors/invalid-challenge-response.d.ts +0 -5
- package/src/errors/invalid-challenge-response.d.ts.map +0 -1
- package/src/errors/invalid-challenge-response.js +0 -16
- package/src/errors/invalid-challenge-response.js.map +0 -1
- package/src/errors/invalid-challenge.d.ts +0 -5
- package/src/errors/invalid-challenge.d.ts.map +0 -1
- package/src/errors/invalid-challenge.js +0 -13
- package/src/errors/invalid-challenge.js.map +0 -1
- package/src/errors/invalid-credentials.d.ts +0 -5
- package/src/errors/invalid-credentials.d.ts.map +0 -1
- package/src/errors/invalid-credentials.js +0 -15
- package/src/errors/invalid-credentials.js.map +0 -1
- package/src/errors/invalid-email.d.ts +0 -8
- package/src/errors/invalid-email.d.ts.map +0 -1
- package/src/errors/invalid-email.js +0 -25
- package/src/errors/invalid-email.js.map +0 -1
- package/src/errors/invalid-expired-token.d.ts +0 -7
- package/src/errors/invalid-expired-token.d.ts.map +0 -1
- package/src/errors/invalid-expired-token.js +0 -13
- package/src/errors/invalid-expired-token.js.map +0 -1
- package/src/errors/invalid-token.d.ts +0 -5
- package/src/errors/invalid-token.d.ts.map +0 -1
- package/src/errors/invalid-token.js +0 -16
- package/src/errors/invalid-token.js.map +0 -1
- package/src/errors/invalid-userid.d.ts +0 -6
- package/src/errors/invalid-userid.d.ts.map +0 -1
- package/src/errors/invalid-userid.js +0 -18
- package/src/errors/invalid-userid.js.map +0 -1
- package/src/errors/invalid-username.d.ts +0 -5
- package/src/errors/invalid-username.d.ts.map +0 -1
- package/src/errors/invalid-username.js +0 -13
- package/src/errors/invalid-username.js.map +0 -1
- package/src/errors/last-admin-error.d.ts +0 -6
- package/src/errors/last-admin-error.d.ts.map +0 -1
- package/src/errors/last-admin-error.js +0 -15
- package/src/errors/last-admin-error.js.map +0 -1
- package/src/errors/login-challenge-expired.d.ts +0 -5
- package/src/errors/login-challenge-expired.d.ts.map +0 -1
- package/src/errors/login-challenge-expired.js +0 -16
- package/src/errors/login-challenge-expired.js.map +0 -1
- package/src/errors/member-role-not-found.d.ts +0 -6
- package/src/errors/member-role-not-found.d.ts.map +0 -1
- package/src/errors/member-role-not-found.js +0 -13
- package/src/errors/member-role-not-found.js.map +0 -1
- package/src/errors/password-login-not-enabled.d.ts +0 -5
- package/src/errors/password-login-not-enabled.d.ts.map +0 -1
- package/src/errors/password-login-not-enabled.js +0 -16
- package/src/errors/password-login-not-enabled.js.map +0 -1
- package/src/errors/password-login-not-setup.d.ts +0 -5
- package/src/errors/password-login-not-setup.d.ts.map +0 -1
- package/src/errors/password-login-not-setup.js +0 -16
- package/src/errors/password-login-not-setup.js.map +0 -1
- package/src/errors/pbkdf2-error.d.ts +0 -7
- package/src/errors/pbkdf2-error.d.ts.map +0 -1
- package/src/errors/pbkdf2-error.js +0 -20
- package/src/errors/pbkdf2-error.js.map +0 -1
- package/src/errors/pending-email-verification.d.ts +0 -5
- package/src/errors/pending-email-verification.d.ts.map +0 -1
- package/src/errors/pending-email-verification.js +0 -13
- package/src/errors/pending-email-verification.js.map +0 -1
- package/src/errors/private-key-required.d.ts +0 -5
- package/src/errors/private-key-required.d.ts.map +0 -1
- package/src/errors/private-key-required.js +0 -13
- package/src/errors/private-key-required.js.map +0 -1
- package/src/errors/system-role-not-found.d.ts +0 -6
- package/src/errors/system-role-not-found.d.ts.map +0 -1
- package/src/errors/system-role-not-found.js +0 -13
- package/src/errors/system-role-not-found.js.map +0 -1
- package/src/errors/token-not-found.d.ts +0 -7
- package/src/errors/token-not-found.d.ts.map +0 -1
- package/src/errors/token-not-found.js +0 -19
- package/src/errors/token-not-found.js.map +0 -1
- package/src/errors/translatable-suite-handleable.d.ts +0 -10
- package/src/errors/translatable-suite-handleable.d.ts.map +0 -1
- package/src/errors/translatable-suite-handleable.js +0 -15
- package/src/errors/translatable-suite-handleable.js.map +0 -1
- package/src/errors/translatable-suite.d.ts +0 -13
- package/src/errors/translatable-suite.d.ts.map +0 -1
- package/src/errors/translatable-suite.js +0 -29
- package/src/errors/translatable-suite.js.map +0 -1
- package/src/errors/user-not-found.d.ts +0 -5
- package/src/errors/user-not-found.d.ts.map +0 -1
- package/src/errors/user-not-found.js +0 -13
- package/src/errors/user-not-found.js.map +0 -1
- package/src/errors/username-email-required.d.ts +0 -6
- package/src/errors/username-email-required.d.ts.map +0 -1
- package/src/errors/username-email-required.js +0 -16
- package/src/errors/username-email-required.js.map +0 -1
- package/src/errors/username-in-use.d.ts +0 -5
- package/src/errors/username-in-use.d.ts.map +0 -1
- package/src/errors/username-in-use.js +0 -13
- package/src/errors/username-in-use.js.map +0 -1
- package/src/i18n-setup.d.ts +0 -13
- package/src/i18n-setup.d.ts.map +0 -1
- package/src/i18n-setup.js +0 -116
- package/src/i18n-setup.js.map +0 -1
- package/src/index.d.ts.map +0 -1
- package/src/index.js +0 -15
- package/src/index.js.map +0 -1
- package/src/interfaces/backup-code-consts.d.ts +0 -16
- package/src/interfaces/backup-code-consts.d.ts.map +0 -1
- package/src/interfaces/backup-code-consts.js +0 -3
- package/src/interfaces/backup-code-consts.js.map +0 -1
- package/src/interfaces/backup-code.d.ts +0 -7
- package/src/interfaces/backup-code.d.ts.map +0 -1
- package/src/interfaces/backup-code.js +0 -3
- package/src/interfaces/backup-code.js.map +0 -1
- package/src/interfaces/bases/email-token.d.ts +0 -33
- package/src/interfaces/bases/email-token.d.ts.map +0 -1
- package/src/interfaces/bases/email-token.js +0 -3
- package/src/interfaces/bases/email-token.js.map +0 -1
- package/src/interfaces/bases/index.d.ts.map +0 -1
- package/src/interfaces/bases/index.js +0 -11
- package/src/interfaces/bases/index.js.map +0 -1
- package/src/interfaces/bases/mnemonic.d.ts.map +0 -1
- package/src/interfaces/bases/mnemonic.js +0 -3
- package/src/interfaces/bases/mnemonic.js.map +0 -1
- package/src/interfaces/bases/role.d.ts +0 -32
- package/src/interfaces/bases/role.d.ts.map +0 -1
- package/src/interfaces/bases/role.js +0 -3
- package/src/interfaces/bases/role.js.map +0 -1
- package/src/interfaces/bases/token-role.d.ts +0 -8
- package/src/interfaces/bases/token-role.d.ts.map +0 -1
- package/src/interfaces/bases/token-role.js +0 -3
- package/src/interfaces/bases/token-role.js.map +0 -1
- package/src/interfaces/bases/used-direct-login-token.d.ts.map +0 -1
- package/src/interfaces/bases/used-direct-login-token.js +0 -3
- package/src/interfaces/bases/used-direct-login-token.js.map +0 -1
- package/src/interfaces/bases/user-role.d.ts +0 -16
- package/src/interfaces/bases/user-role.d.ts.map +0 -1
- package/src/interfaces/bases/user-role.js +0 -3
- package/src/interfaces/bases/user-role.js.map +0 -1
- package/src/interfaces/bases/user.d.ts +0 -79
- package/src/interfaces/bases/user.d.ts.map +0 -1
- package/src/interfaces/bases/user.js +0 -3
- package/src/interfaces/bases/user.js.map +0 -1
- package/src/interfaces/combined-role-privileges.d.ts +0 -7
- package/src/interfaces/combined-role-privileges.d.ts.map +0 -1
- package/src/interfaces/combined-role-privileges.js +0 -3
- package/src/interfaces/combined-role-privileges.js.map +0 -1
- package/src/interfaces/constants.d.ts +0 -56
- package/src/interfaces/constants.d.ts.map +0 -1
- package/src/interfaces/constants.js +0 -3
- package/src/interfaces/constants.js.map +0 -1
- package/src/interfaces/core-consts.d.ts +0 -130
- package/src/interfaces/core-consts.d.ts.map +0 -1
- package/src/interfaces/core-consts.js +0 -3
- package/src/interfaces/core-consts.js.map +0 -1
- package/src/interfaces/deep-partial.d.ts +0 -4
- package/src/interfaces/deep-partial.d.ts.map +0 -1
- package/src/interfaces/deep-partial.js +0 -3
- package/src/interfaces/deep-partial.js.map +0 -1
- package/src/interfaces/dto/email-token.d.ts.map +0 -1
- package/src/interfaces/dto/email-token.js +0 -3
- package/src/interfaces/dto/email-token.js.map +0 -1
- package/src/interfaces/dto/index.d.ts.map +0 -1
- package/src/interfaces/dto/index.js +0 -12
- package/src/interfaces/dto/index.js.map +0 -1
- package/src/interfaces/dto/mnemonic.d.ts.map +0 -1
- package/src/interfaces/dto/mnemonic.js +0 -3
- package/src/interfaces/dto/mnemonic.js.map +0 -1
- package/src/interfaces/dto/request-user.d.ts +0 -17
- package/src/interfaces/dto/request-user.d.ts.map +0 -1
- package/src/interfaces/dto/request-user.js +0 -3
- package/src/interfaces/dto/request-user.js.map +0 -1
- package/src/interfaces/dto/role.d.ts.map +0 -1
- package/src/interfaces/dto/role.js +0 -3
- package/src/interfaces/dto/role.js.map +0 -1
- package/src/interfaces/dto/token-role.d.ts.map +0 -1
- package/src/interfaces/dto/token-role.js +0 -3
- package/src/interfaces/dto/token-role.js.map +0 -1
- package/src/interfaces/dto/user-role.d.ts.map +0 -1
- package/src/interfaces/dto/user-role.js +0 -3
- package/src/interfaces/dto/user-role.js.map +0 -1
- package/src/interfaces/dto/user-settings.d.ts.map +0 -1
- package/src/interfaces/dto/user-settings.js +0 -3
- package/src/interfaces/dto/user-settings.js.map +0 -1
- package/src/interfaces/dto/user.d.ts.map +0 -1
- package/src/interfaces/dto/user.js +0 -3
- package/src/interfaces/dto/user.js.map +0 -1
- package/src/interfaces/failable-result.d.ts +0 -7
- package/src/interfaces/failable-result.d.ts.map +0 -1
- package/src/interfaces/failable-result.js +0 -3
- package/src/interfaces/failable-result.js.map +0 -1
- package/src/interfaces/frontend-objects/email-token.d.ts +0 -4
- package/src/interfaces/frontend-objects/email-token.d.ts.map +0 -1
- package/src/interfaces/frontend-objects/email-token.js +0 -3
- package/src/interfaces/frontend-objects/email-token.js.map +0 -1
- package/src/interfaces/frontend-objects/index.d.ts.map +0 -1
- package/src/interfaces/frontend-objects/index.js +0 -9
- package/src/interfaces/frontend-objects/index.js.map +0 -1
- package/src/interfaces/frontend-objects/request-user.d.ts +0 -17
- package/src/interfaces/frontend-objects/request-user.d.ts.map +0 -1
- package/src/interfaces/frontend-objects/request-user.js +0 -3
- package/src/interfaces/frontend-objects/request-user.js.map +0 -1
- package/src/interfaces/frontend-objects/role.d.ts.map +0 -1
- package/src/interfaces/frontend-objects/role.js +0 -3
- package/src/interfaces/frontend-objects/role.js.map +0 -1
- package/src/interfaces/frontend-objects/user-role.d.ts.map +0 -1
- package/src/interfaces/frontend-objects/user-role.js +0 -3
- package/src/interfaces/frontend-objects/user-role.js.map +0 -1
- package/src/interfaces/frontend-objects/user.d.ts +0 -4
- package/src/interfaces/frontend-objects/user.d.ts.map +0 -1
- package/src/interfaces/frontend-objects/user.js +0 -3
- package/src/interfaces/frontend-objects/user.js.map +0 -1
- package/src/interfaces/has-creation.d.ts +0 -7
- package/src/interfaces/has-creation.d.ts.map +0 -1
- package/src/interfaces/has-creation.js +0 -3
- package/src/interfaces/has-creation.js.map +0 -1
- package/src/interfaces/has-creator.d.ts +0 -7
- package/src/interfaces/has-creator.d.ts.map +0 -1
- package/src/interfaces/has-creator.js +0 -3
- package/src/interfaces/has-creator.js.map +0 -1
- package/src/interfaces/has-id.d.ts +0 -4
- package/src/interfaces/has-id.d.ts.map +0 -1
- package/src/interfaces/has-id.js +0 -3
- package/src/interfaces/has-id.js.map +0 -1
- package/src/interfaces/has-soft-delete.d.ts +0 -7
- package/src/interfaces/has-soft-delete.d.ts.map +0 -1
- package/src/interfaces/has-soft-delete.js +0 -3
- package/src/interfaces/has-soft-delete.js.map +0 -1
- package/src/interfaces/has-soft-deleter.d.ts +0 -7
- package/src/interfaces/has-soft-deleter.d.ts.map +0 -1
- package/src/interfaces/has-soft-deleter.js +0 -3
- package/src/interfaces/has-soft-deleter.js.map +0 -1
- package/src/interfaces/has-timestamp-owners.d.ts +0 -5
- package/src/interfaces/has-timestamp-owners.d.ts.map +0 -1
- package/src/interfaces/has-timestamp-owners.js +0 -3
- package/src/interfaces/has-timestamp-owners.js.map +0 -1
- package/src/interfaces/has-timestamps.d.ts +0 -6
- package/src/interfaces/has-timestamps.d.ts.map +0 -1
- package/src/interfaces/has-timestamps.js +0 -3
- package/src/interfaces/has-timestamps.js.map +0 -1
- package/src/interfaces/has-updater.d.ts +0 -7
- package/src/interfaces/has-updater.d.ts.map +0 -1
- package/src/interfaces/has-updater.js +0 -3
- package/src/interfaces/has-updater.js.map +0 -1
- package/src/interfaces/has-updates.d.ts +0 -4
- package/src/interfaces/has-updates.d.ts.map +0 -1
- package/src/interfaces/has-updates.js +0 -3
- package/src/interfaces/has-updates.js.map +0 -1
- package/src/interfaces/index.d.ts.map +0 -1
- package/src/interfaces/index.js +0 -27
- package/src/interfaces/index.js.map +0 -1
- package/src/interfaces/models/email-token.d.ts +0 -6
- package/src/interfaces/models/email-token.d.ts.map +0 -1
- package/src/interfaces/models/email-token.js +0 -3
- package/src/interfaces/models/email-token.js.map +0 -1
- package/src/interfaces/models/index.d.ts +0 -9
- package/src/interfaces/models/index.d.ts.map +0 -1
- package/src/interfaces/models/index.js +0 -12
- package/src/interfaces/models/index.js.map +0 -1
- package/src/interfaces/models/mnemonic.d.ts +0 -6
- package/src/interfaces/models/mnemonic.d.ts.map +0 -1
- package/src/interfaces/models/mnemonic.js +0 -3
- package/src/interfaces/models/mnemonic.js.map +0 -1
- package/src/interfaces/models/role.d.ts +0 -6
- package/src/interfaces/models/role.d.ts.map +0 -1
- package/src/interfaces/models/role.js +0 -3
- package/src/interfaces/models/role.js.map +0 -1
- package/src/interfaces/models/token-role.d.ts +0 -11
- package/src/interfaces/models/token-role.d.ts.map +0 -1
- package/src/interfaces/models/token-role.js +0 -3
- package/src/interfaces/models/token-role.js.map +0 -1
- package/src/interfaces/models/used-direct-login-token.d.ts +0 -11
- package/src/interfaces/models/used-direct-login-token.d.ts.map +0 -1
- package/src/interfaces/models/used-direct-login-token.js +0 -3
- package/src/interfaces/models/used-direct-login-token.js.map +0 -1
- package/src/interfaces/models/user-role.d.ts +0 -11
- package/src/interfaces/models/user-role.d.ts.map +0 -1
- package/src/interfaces/models/user-role.js +0 -3
- package/src/interfaces/models/user-role.js.map +0 -1
- package/src/interfaces/models/user.d.ts +0 -12
- package/src/interfaces/models/user.d.ts.map +0 -1
- package/src/interfaces/models/user.js +0 -3
- package/src/interfaces/models/user.js.map +0 -1
- package/src/interfaces/success-message.d.ts +0 -5
- package/src/interfaces/success-message.d.ts.map +0 -1
- package/src/interfaces/success-message.js +0 -3
- package/src/interfaces/success-message.js.map +0 -1
- package/src/interfaces/token-user.d.ts.map +0 -1
- package/src/interfaces/token-user.js +0 -3
- package/src/interfaces/token-user.js.map +0 -1
- package/src/interfaces/user-settings.d.ts.map +0 -1
- package/src/interfaces/user-settings.js +0 -3
- package/src/interfaces/user-settings.js.map +0 -1
- package/src/lib/flags.d.ts +0 -10
- package/src/lib/flags.d.ts.map +0 -1
- package/src/lib/flags.js +0 -288
- package/src/lib/flags.js.map +0 -1
- package/src/lib/formatters.d.ts +0 -16
- package/src/lib/formatters.d.ts.map +0 -1
- package/src/lib/formatters.js +0 -29
- package/src/lib/formatters.js.map +0 -1
- package/src/lib/hydrate-dehydrate.d.ts +0 -4
- package/src/lib/hydrate-dehydrate.d.ts.map +0 -1
- package/src/lib/hydrate-dehydrate.js +0 -27
- package/src/lib/hydrate-dehydrate.js.map +0 -1
- package/src/lib/index.d.ts.map +0 -1
- package/src/lib/index.js +0 -12
- package/src/lib/index.js.map +0 -1
- package/src/lib/validators-with-constants.d.ts +0 -73
- package/src/lib/validators-with-constants.d.ts.map +0 -1
- package/src/lib/validators-with-constants.js +0 -64
- package/src/lib/validators-with-constants.js.map +0 -1
- package/src/lib/validators.d.ts +0 -37
- package/src/lib/validators.d.ts.map +0 -1
- package/src/lib/validators.js +0 -74
- package/src/lib/validators.js.map +0 -1
- package/src/local-storage-manager.d.ts +0 -22
- package/src/local-storage-manager.d.ts.map +0 -1
- package/src/local-storage-manager.js +0 -74
- package/src/local-storage-manager.js.map +0 -1
- package/src/strings/de.d.ts +0 -3
- package/src/strings/de.d.ts.map +0 -1
- package/src/strings/de.js +0 -486
- package/src/strings/de.js.map +0 -1
- package/src/strings/en-GB.d.ts +0 -3
- package/src/strings/en-GB.d.ts.map +0 -1
- package/src/strings/en-GB.js +0 -486
- package/src/strings/en-GB.js.map +0 -1
- package/src/strings/en-US.d.ts +0 -3
- package/src/strings/en-US.d.ts.map +0 -1
- package/src/strings/en-US.js +0 -486
- package/src/strings/en-US.js.map +0 -1
- package/src/strings/es.d.ts +0 -3
- package/src/strings/es.d.ts.map +0 -1
- package/src/strings/es.js +0 -486
- package/src/strings/es.js.map +0 -1
- package/src/strings/fr.d.ts +0 -3
- package/src/strings/fr.d.ts.map +0 -1
- package/src/strings/fr.js +0 -486
- package/src/strings/fr.js.map +0 -1
- package/src/strings/ja.d.ts +0 -3
- package/src/strings/ja.d.ts.map +0 -1
- package/src/strings/ja.js +0 -486
- package/src/strings/ja.js.map +0 -1
- package/src/strings/uk.d.ts +0 -3
- package/src/strings/uk.d.ts.map +0 -1
- package/src/strings/uk.js +0 -486
- package/src/strings/uk.js.map +0 -1
- package/src/strings/zh-CN.d.ts +0 -3
- package/src/strings/zh-CN.d.ts.map +0 -1
- package/src/strings/zh-CN.js +0 -486
- package/src/strings/zh-CN.js.map +0 -1
package/src/constants.ts
ADDED
|
@@ -0,0 +1,220 @@
|
|
|
1
|
+
import { ObjectIdProvider } from '@digitaldefiance/ecies-lib';
|
|
2
|
+
import { Role } from './enumerations/role';
|
|
3
|
+
import { IBackupCodeConstants, ICoreConstants } from './interfaces';
|
|
4
|
+
import { IConstants } from './interfaces/constants';
|
|
5
|
+
|
|
6
|
+
export const BACKUP_CODES: IBackupCodeConstants = Object.freeze({
|
|
7
|
+
/**
|
|
8
|
+
* How many backup codes to generate for users
|
|
9
|
+
*/
|
|
10
|
+
Count: 10 as const,
|
|
11
|
+
NormalizedHexRegex: /^[a-z0-9]{32}$/, // exactly 32 lowercase alphanumeric chars
|
|
12
|
+
DisplayRegex: /^([a-z0-9]{4}-){7}[a-z0-9]{4}$/, // xxxx-xxxx-xxxx-xxxx-xxxx-xxxx-xxxx-xxxx
|
|
13
|
+
} as const);
|
|
14
|
+
|
|
15
|
+
export const CORE: ICoreConstants = Object.freeze({
|
|
16
|
+
/**
|
|
17
|
+
* The ID provider to use for generating and parsing IDs
|
|
18
|
+
*/
|
|
19
|
+
idProvider: new ObjectIdProvider(),
|
|
20
|
+
/**
|
|
21
|
+
* Default duration in seconds for which a mnemonic is kept in memory
|
|
22
|
+
*/
|
|
23
|
+
DefaultExpireMemoryMnemonicSeconds: 300 as const, // 5 minutes
|
|
24
|
+
/**
|
|
25
|
+
* Default duration in seconds for which a wallet is kept in memory
|
|
26
|
+
*/
|
|
27
|
+
DefaultExpireMemoryWalletSeconds: 300 as const, // 5 minutes
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* Duration in milliseconds for which a login challenge is valid.
|
|
31
|
+
*/
|
|
32
|
+
LoginChallengeExpiration: 60000 as const, // 60 seconds
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
* The expected length of a direct login challenge in bytes
|
|
36
|
+
*/
|
|
37
|
+
DirectLoginChallengeLength: 104 as const,
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* Backup code system configuration
|
|
41
|
+
*/
|
|
42
|
+
BACKUP_CODES: BACKUP_CODES,
|
|
43
|
+
|
|
44
|
+
/**
|
|
45
|
+
* Duration in milliseconds for which an email token is valid.
|
|
46
|
+
*/
|
|
47
|
+
EmailTokenExpiration: 86400000 as const, // 24 * 60 * 60 * 1000
|
|
48
|
+
/**
|
|
49
|
+
* Length in bytes of the email token generated (is represented as a hex string of twice as many)
|
|
50
|
+
*/
|
|
51
|
+
EmailTokenLength: 32 as const,
|
|
52
|
+
/**
|
|
53
|
+
* Number of rounds for bcrypt hashing. Higher values increase security but also consume more CPU resources.
|
|
54
|
+
*/
|
|
55
|
+
BcryptRounds: 10 as const,
|
|
56
|
+
/**
|
|
57
|
+
* The username of the administrator user.
|
|
58
|
+
*/
|
|
59
|
+
AdministratorUser: 'admin' as const,
|
|
60
|
+
/**
|
|
61
|
+
* The name of the administrator role.
|
|
62
|
+
*/
|
|
63
|
+
AdministratorRole: Role.Admin as const,
|
|
64
|
+
/**
|
|
65
|
+
* The name of the member role.
|
|
66
|
+
*/
|
|
67
|
+
MemberRole: Role.Member as const,
|
|
68
|
+
/**
|
|
69
|
+
* The username of the test user.
|
|
70
|
+
*/
|
|
71
|
+
MemberUser: 'test' as const,
|
|
72
|
+
/**
|
|
73
|
+
* The name of the system role.
|
|
74
|
+
*/
|
|
75
|
+
SystemRole: Role.System as const,
|
|
76
|
+
/**
|
|
77
|
+
* The username of the system user.
|
|
78
|
+
*/
|
|
79
|
+
SystemUser: 'system' as const,
|
|
80
|
+
/**
|
|
81
|
+
* Minimum username length
|
|
82
|
+
*/
|
|
83
|
+
UsernameMinLength: 3 as const,
|
|
84
|
+
/**
|
|
85
|
+
* Maximum username length
|
|
86
|
+
*/
|
|
87
|
+
UsernameMaxLength: 30 as const,
|
|
88
|
+
/**
|
|
89
|
+
* The regular expression for valid usernames.
|
|
90
|
+
*/
|
|
91
|
+
UsernameRegex: /^[A-Za-z0-9]{3,30}$/,
|
|
92
|
+
/**
|
|
93
|
+
* Minimum password length
|
|
94
|
+
*/
|
|
95
|
+
PasswordMinLength: 8 as const,
|
|
96
|
+
/**
|
|
97
|
+
* The regular expression for valid passwords.
|
|
98
|
+
*/
|
|
99
|
+
PasswordRegex:
|
|
100
|
+
/^(?=.*[A-Za-z])(?=.*\d)(?=.*[!@#$%^&*()_+\-=[\]{};':"\\|,.<>/?])[A-Za-z\d!@#$%^&*()_+\-=[\]{};':"\\|,.<>/?]{8,}$/,
|
|
101
|
+
/**
|
|
102
|
+
* The regular expression for valid JWT tokens.
|
|
103
|
+
*/
|
|
104
|
+
JwtSecretRegex: /^[0-9a-f]{64}$/i,
|
|
105
|
+
/**
|
|
106
|
+
* The regular expression for valid mnemonic phrases.
|
|
107
|
+
* BIP39 - supports 12, 15, 18, 21, or 24 word mnemonics
|
|
108
|
+
*/
|
|
109
|
+
MnemonicRegex:
|
|
110
|
+
/^(?:\w+\s){11}\w+$|^(?:\w+\s){14}\w+$|^(?:\w+\s){17}\w+$|^(?:\w+\s){20}\w+$|^(?:\w+\s){23}\w+$/i,
|
|
111
|
+
/**
|
|
112
|
+
* Matches a 64-character hexadecimal string (SHA-256).
|
|
113
|
+
*/
|
|
114
|
+
MnemonicHmacRegex: /^[a-f0-9]{64}$/,
|
|
115
|
+
/**
|
|
116
|
+
* The regular expression for valid encryption keys.
|
|
117
|
+
*/
|
|
118
|
+
MnemonicEncryptionKeyRegex: /^[a-f0-9]{64}$/,
|
|
119
|
+
/**
|
|
120
|
+
* The amount of time in milliseconds after which an email token can be resent.
|
|
121
|
+
*/
|
|
122
|
+
EmailTokenResendInterval: 300000 as const, // 5 * 60 * 1000 = 5 minutes
|
|
123
|
+
/**
|
|
124
|
+
* The interval in minutes after which an email token can be resent.
|
|
125
|
+
*/
|
|
126
|
+
EmailTokenResendIntervalMinutes: 5 as const,
|
|
127
|
+
/**
|
|
128
|
+
* The site name. Overridden by specific site constants.
|
|
129
|
+
*/
|
|
130
|
+
Site: 'New Site' as const,
|
|
131
|
+
/**
|
|
132
|
+
* The site tagline. Overridden by specific site constants.
|
|
133
|
+
*/
|
|
134
|
+
SiteTagline: 'New Site Tagline' as const,
|
|
135
|
+
/**
|
|
136
|
+
* The site description. Overridden by specific site constants.
|
|
137
|
+
*/
|
|
138
|
+
SiteDescription: 'Description of the new site' as const,
|
|
139
|
+
/**
|
|
140
|
+
* Email domain of usernames on the site. Overridden by specific site constants.
|
|
141
|
+
*/
|
|
142
|
+
SiteEmailDomain: 'localhost' as const,
|
|
143
|
+
/**
|
|
144
|
+
* The hostname of the site. Overridden by specific site constants.
|
|
145
|
+
*/
|
|
146
|
+
SiteHostname: 'localhost' as const,
|
|
147
|
+
} as const);
|
|
148
|
+
|
|
149
|
+
export const createConstants: (
|
|
150
|
+
siteDomain: string,
|
|
151
|
+
siteHostname: string,
|
|
152
|
+
overrides?: Partial<IConstants>,
|
|
153
|
+
) => IConstants = (siteDomain: string, siteHostname: string, overrides?: Partial<IConstants>) => {
|
|
154
|
+
return Object.freeze({
|
|
155
|
+
...CORE,
|
|
156
|
+
/**
|
|
157
|
+
* The email of the administrator user/admin contact
|
|
158
|
+
*/
|
|
159
|
+
AdministratorEmail: `admin@${siteDomain}` as const,
|
|
160
|
+
/**
|
|
161
|
+
* The email of the test user.
|
|
162
|
+
*/
|
|
163
|
+
MemberEmail: `test@${siteDomain}` as const,
|
|
164
|
+
/**
|
|
165
|
+
* The email of the system user.
|
|
166
|
+
*/
|
|
167
|
+
SystemEmail: `system@${siteDomain}` as const,
|
|
168
|
+
/**
|
|
169
|
+
* The email domain of usernames on the site.
|
|
170
|
+
*/
|
|
171
|
+
SiteEmailDomain: siteDomain,
|
|
172
|
+
/**
|
|
173
|
+
* The hostname of the site.
|
|
174
|
+
*/
|
|
175
|
+
SiteHostname: siteHostname,
|
|
176
|
+
/**
|
|
177
|
+
* The color used to indicate success states.
|
|
178
|
+
*/
|
|
179
|
+
success_color: '#4CAF50',
|
|
180
|
+
/**
|
|
181
|
+
* The color used to indicate failure states.
|
|
182
|
+
*/
|
|
183
|
+
failure_color: '#F44336',
|
|
184
|
+
/**
|
|
185
|
+
* The color used to indicate warning states.
|
|
186
|
+
*/
|
|
187
|
+
warning_color: '#FF9800',
|
|
188
|
+
/**
|
|
189
|
+
* The light variant of the primary text color.
|
|
190
|
+
*/
|
|
191
|
+
primary_text_light: '#ffffff',
|
|
192
|
+
/**
|
|
193
|
+
* The dark variant of the primary text color.
|
|
194
|
+
*/
|
|
195
|
+
primary_text_dark: '#000000',
|
|
196
|
+
/**
|
|
197
|
+
* The light variant of the secondary text color.
|
|
198
|
+
*/
|
|
199
|
+
secondary_text_light: '#ffffff',
|
|
200
|
+
/**
|
|
201
|
+
* The dark variant of the secondary text color.
|
|
202
|
+
*/
|
|
203
|
+
secondary_text_dark: '#000000',
|
|
204
|
+
/**
|
|
205
|
+
* The primary brand color (used for primary theme color)
|
|
206
|
+
*/
|
|
207
|
+
logo_primary_color: '#050505ff',
|
|
208
|
+
/**
|
|
209
|
+
* The primary text color (used for logo and text)
|
|
210
|
+
*/
|
|
211
|
+
logo_primary_text: '#212121',
|
|
212
|
+
/**
|
|
213
|
+
* The secondary text color (used for logo and accents)
|
|
214
|
+
*/
|
|
215
|
+
logo_secondary_text: '#757575',
|
|
216
|
+
...(overrides ?? {}),
|
|
217
|
+
} as const);
|
|
218
|
+
};
|
|
219
|
+
|
|
220
|
+
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 { TranslatableSuiteError } from '../errors/translatable-suite';
|
|
5
7
|
export { TranslatableSuiteHandleableError } from '../errors/translatable-suite-handleable';
|
|
6
8
|
export { CoreTypedHandleableError } from '../errors/core-typed-handleable';
|
|
9
|
+
|
|
10
|
+
// Common error classes
|
|
7
11
|
export { UserNotFoundError } from '../errors/user-not-found';
|
|
8
12
|
export { InvalidCredentialsError } from '../errors/invalid-credentials';
|
|
9
13
|
export { InvalidEmailError } from '../errors/invalid-email';
|
|
@@ -11,4 +15,3 @@ export { InvalidUsernameError } from '../errors/invalid-username';
|
|
|
11
15
|
export { EmailInUseError } from '../errors/email-in-use';
|
|
12
16
|
export { UsernameInUseError } from '../errors/username-in-use';
|
|
13
17
|
export { GenericValidationError } from '../errors/generic-validation';
|
|
14
|
-
//# sourceMappingURL=errors.d.ts.map
|
|
@@ -0,0 +1,36 @@
|
|
|
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, E = Error> =
|
|
7
|
+
| { success: true; data: T }
|
|
8
|
+
| { success: false; error: E };
|
|
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>(result: Result<T, E>): result is { success: true; data: T } {
|
|
28
|
+
return result.success;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* Check if result is a failure
|
|
33
|
+
*/
|
|
34
|
+
export function isFailure<T, E>(result: Result<T, E>): result is { success: false; error: E } {
|
|
35
|
+
return !result.success;
|
|
36
|
+
}
|
|
@@ -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 { IFailableResult } from '../interfaces/failable-result';
|
|
5
7
|
export type { DeepPartial } from '../interfaces/deep-partial';
|
|
8
|
+
|
|
9
|
+
// Base interface types
|
|
6
10
|
export type { IHasId } from '../interfaces/has-id';
|
|
7
11
|
export type { IHasTimestamps } from '../interfaces/has-timestamps';
|
|
8
12
|
export type { IHasCreation } from '../interfaces/has-creation';
|
|
@@ -12,6 +16,7 @@ export type { IHasCreator } from '../interfaces/has-creator';
|
|
|
12
16
|
export type { IHasUpdater } from '../interfaces/has-updater';
|
|
13
17
|
export type { IHasSoftDeleter } from '../interfaces/has-soft-deleter';
|
|
14
18
|
export type { IHasTimestampOwners } from '../interfaces/has-timestamp-owners';
|
|
19
|
+
|
|
20
|
+
// User and auth types
|
|
15
21
|
export type { ITokenUser } from '../interfaces/token-user';
|
|
16
22
|
export type { BackupCodeString } from '../backup-code-string';
|
|
17
|
-
//# sourceMappingURL=types.d.ts.map
|
package/src/defaults.ts
ADDED
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
import { createConstants } from './constants';
|
|
2
|
+
import { IConstants } from './interfaces/constants';
|
|
3
|
+
import { DeepPartial } from './interfaces/deep-partial';
|
|
4
|
+
|
|
5
|
+
export type ConfigurationKey = string | symbol;
|
|
6
|
+
|
|
7
|
+
const DEFAULT_CONFIGURATION_KEY: ConfigurationKey = Symbol.for(
|
|
8
|
+
'digitaldefiance.suite-core.defaults.default'
|
|
9
|
+
);
|
|
10
|
+
|
|
11
|
+
const registry: Map<ConfigurationKey, IConstants> = new Map();
|
|
12
|
+
|
|
13
|
+
// Define cloneable types to improve type safety
|
|
14
|
+
type Cloneable =
|
|
15
|
+
| string
|
|
16
|
+
| number
|
|
17
|
+
| boolean
|
|
18
|
+
| null
|
|
19
|
+
| undefined
|
|
20
|
+
| Date
|
|
21
|
+
| RegExp
|
|
22
|
+
| Cloneable[]
|
|
23
|
+
| { [key: string]: Cloneable };
|
|
24
|
+
|
|
25
|
+
function deepClone<T extends Cloneable>(input: T): T {
|
|
26
|
+
if (input === null || typeof input !== 'object') {
|
|
27
|
+
return input;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
if (Array.isArray(input)) {
|
|
31
|
+
return input.map((item) => deepClone(item)) as T;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
if (input instanceof RegExp) {
|
|
35
|
+
return new RegExp(input.source, input.flags) as T;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
if (input instanceof Date) {
|
|
39
|
+
return new Date(input.getTime()) as T;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
const result: Record<string, Cloneable> = {};
|
|
43
|
+
for (const [key, value] of Object.entries(input)) {
|
|
44
|
+
result[key] = deepClone(value as Cloneable);
|
|
45
|
+
}
|
|
46
|
+
return result as T;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
function deepFreeze<T>(obj: T): T {
|
|
50
|
+
Object.freeze(obj);
|
|
51
|
+
if (obj && typeof obj === 'object') {
|
|
52
|
+
Object.getOwnPropertyNames(obj).forEach((prop) => {
|
|
53
|
+
const value = (obj as Record<string, unknown>)[prop];
|
|
54
|
+
if (value && typeof value === 'object' && !Object.isFrozen(value)) {
|
|
55
|
+
deepFreeze(value);
|
|
56
|
+
}
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
return obj;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
function applyOverrides<T extends object>(
|
|
63
|
+
target: T,
|
|
64
|
+
overrides?: DeepPartial<T>
|
|
65
|
+
): T {
|
|
66
|
+
if (!overrides) return target;
|
|
67
|
+
const result = deepClone(target as Cloneable) as unknown as T;
|
|
68
|
+
for (const [key, value] of Object.entries(overrides)) {
|
|
69
|
+
if (value !== undefined && key in result) {
|
|
70
|
+
(result as Record<string, unknown>)[key] = value;
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
return result;
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
export function createSuiteCoreRuntimeConfiguration(
|
|
77
|
+
siteDomain: string = 'localhost',
|
|
78
|
+
siteHostname: string = 'localhost',
|
|
79
|
+
overrides?: DeepPartial<IConstants>
|
|
80
|
+
): IConstants {
|
|
81
|
+
const config = applyOverrides(
|
|
82
|
+
createConstants(siteDomain, siteHostname),
|
|
83
|
+
overrides
|
|
84
|
+
);
|
|
85
|
+
return deepFreeze(config);
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
export function registerSuiteCoreRuntimeConfiguration(
|
|
89
|
+
key: ConfigurationKey = DEFAULT_CONFIGURATION_KEY,
|
|
90
|
+
siteDomain: string = 'localhost',
|
|
91
|
+
siteHostname: string = 'localhost',
|
|
92
|
+
overrides?: DeepPartial<IConstants>
|
|
93
|
+
): IConstants {
|
|
94
|
+
const config = createSuiteCoreRuntimeConfiguration(
|
|
95
|
+
siteDomain,
|
|
96
|
+
siteHostname,
|
|
97
|
+
overrides
|
|
98
|
+
);
|
|
99
|
+
registry.set(key, config);
|
|
100
|
+
return config;
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
export function getSuiteCoreRuntimeConfiguration(
|
|
104
|
+
key: ConfigurationKey = DEFAULT_CONFIGURATION_KEY
|
|
105
|
+
): IConstants {
|
|
106
|
+
if (!registry.has(key)) {
|
|
107
|
+
registry.set(key, createSuiteCoreRuntimeConfiguration());
|
|
108
|
+
}
|
|
109
|
+
return registry.get(key)!;
|
|
110
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Values for the status of an account.
|
|
3
|
+
*/
|
|
4
|
+
export enum AccountStatus {
|
|
5
|
+
/**
|
|
6
|
+
* The user has not verified their email address
|
|
7
|
+
*/
|
|
8
|
+
PendingEmailVerification = 'PendingEmailVerification',
|
|
9
|
+
/**
|
|
10
|
+
* The user has verified their email address
|
|
11
|
+
*/
|
|
12
|
+
Active = 'Active',
|
|
13
|
+
/**
|
|
14
|
+
* The user has been locked by an admin
|
|
15
|
+
*/
|
|
16
|
+
AdminLock = 'AdminLock',
|
|
17
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
export enum EmailTokenType {
|
|
2
|
+
/**
|
|
3
|
+
* A token for verifying an account
|
|
4
|
+
*/
|
|
5
|
+
AccountVerification = 'AccountVerification',
|
|
6
|
+
/**
|
|
7
|
+
* A token for resetting a password
|
|
8
|
+
*/
|
|
9
|
+
PasswordReset = 'PasswordReset',
|
|
10
|
+
/**
|
|
11
|
+
* Requests a login link
|
|
12
|
+
*/
|
|
13
|
+
LoginRequest = 'LoginRequest',
|
|
14
|
+
/**
|
|
15
|
+
* Request encrypted private key blob for a user
|
|
16
|
+
* (requires username/email)
|
|
17
|
+
*/
|
|
18
|
+
PrivateKeyRequest = 'PrivateKeyRequest',
|
|
19
|
+
/**
|
|
20
|
+
* Request encrypted mnemonic blob for a user
|
|
21
|
+
* (requires private key)
|
|
22
|
+
*/
|
|
23
|
+
MnemonicRecoveryRequest = 'MnemonicRecoveryRequest',
|
|
24
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export enum FecErrorType {
|
|
2
|
+
DataRequired = 'DataRequired',
|
|
3
|
+
InputDataMustBeUint8Array = 'InputDataMustBeUint8Array',
|
|
4
|
+
InvalidShardCounts = 'InvalidShardCounts',
|
|
5
|
+
InvalidShardsAvailableArray = 'InvalidShardsAvailableArray',
|
|
6
|
+
ParityDataCountMustBePositive = 'ParityDataCountMustBePositive',
|
|
7
|
+
ParityDataRequired = 'ParityDataRequired',
|
|
8
|
+
InvalidDataLength = 'InvalidDataLength',
|
|
9
|
+
ShardSizeExceedsMaximum = 'ShardSizeExceedsMaximum',
|
|
10
|
+
NotEnoughShardsAvailable = 'NotEnoughShardsAvailable',
|
|
11
|
+
FecEncodingFailed = 'FecEncodingFailed',
|
|
12
|
+
FecDecodingFailed = 'FecDecodingFailed',
|
|
13
|
+
}
|