@oxyhq/services 5.16.44 → 5.17.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +29 -10
- package/lib/commonjs/core/OxyServices.js +1 -1
- package/lib/commonjs/core/index.js +20 -15
- package/lib/commonjs/core/index.js.map +1 -1
- package/lib/commonjs/core/mixins/OxyServices.auth.js +36 -53
- package/lib/commonjs/core/mixins/OxyServices.auth.js.map +1 -1
- package/lib/commonjs/core/mixins/OxyServices.user.js +10 -17
- package/lib/commonjs/core/mixins/OxyServices.user.js.map +1 -1
- package/lib/commonjs/core/services/TokenService.js +27 -13
- package/lib/commonjs/core/services/TokenService.js.map +1 -1
- package/lib/commonjs/crypto/index.js +0 -16
- package/lib/commonjs/crypto/index.js.map +1 -1
- package/lib/commonjs/crypto/keyManager.js +21 -22
- package/lib/commonjs/crypto/keyManager.js.map +1 -1
- package/lib/commonjs/crypto/polyfill.js +1 -10
- package/lib/commonjs/crypto/polyfill.js.map +1 -1
- package/lib/commonjs/crypto/signatureService.js +18 -32
- package/lib/commonjs/crypto/signatureService.js.map +1 -1
- package/lib/commonjs/index.js +13 -134
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/models/interfaces.js +0 -7
- package/lib/commonjs/models/interfaces.js.map +1 -1
- package/lib/commonjs/node/index.js +1 -10
- package/lib/commonjs/node/index.js.map +1 -1
- package/lib/commonjs/ui/components/BottomSheetRouter.js +1 -9
- package/lib/commonjs/ui/components/BottomSheetRouter.js.map +1 -1
- package/lib/commonjs/ui/context/OxyContext.js +779 -450
- package/lib/commonjs/ui/context/OxyContext.js.map +1 -1
- package/lib/commonjs/ui/context/hooks/useAuthOperations.js +551 -0
- package/lib/commonjs/ui/context/hooks/useAuthOperations.js.map +1 -0
- package/lib/commonjs/ui/context/hooks/useDeviceManagement.js +73 -0
- package/lib/commonjs/ui/context/hooks/useDeviceManagement.js.map +1 -0
- package/lib/commonjs/ui/context/hooks/useStorage.js +79 -0
- package/lib/commonjs/ui/context/hooks/useStorage.js.map +1 -0
- package/lib/commonjs/ui/hooks/index.js +0 -20
- package/lib/commonjs/ui/hooks/index.js.map +1 -1
- package/lib/commonjs/ui/hooks/mutations/index.js +0 -12
- package/lib/commonjs/ui/hooks/mutations/index.js.map +1 -1
- package/lib/commonjs/ui/hooks/mutations/useAccountMutations.js +23 -74
- package/lib/commonjs/ui/hooks/mutations/useAccountMutations.js.map +1 -1
- package/lib/commonjs/ui/hooks/queries/index.js +0 -12
- package/lib/commonjs/ui/hooks/queries/index.js.map +1 -1
- package/lib/commonjs/ui/hooks/queries/queryKeys.js +1 -3
- package/lib/commonjs/ui/hooks/queries/queryKeys.js.map +1 -1
- package/lib/commonjs/ui/hooks/queries/useAccountQueries.js +28 -64
- package/lib/commonjs/ui/hooks/queries/useAccountQueries.js.map +1 -1
- package/lib/commonjs/ui/hooks/queries/useServicesQueries.js +6 -4
- package/lib/commonjs/ui/hooks/queries/useServicesQueries.js.map +1 -1
- package/lib/commonjs/ui/hooks/useDeviceManagement.js +73 -0
- package/lib/commonjs/ui/hooks/useDeviceManagement.js.map +1 -0
- package/lib/commonjs/ui/hooks/useProfileEditing.js +5 -3
- package/lib/commonjs/ui/hooks/useProfileEditing.js.map +1 -1
- package/lib/commonjs/ui/hooks/useSessionManagement.js +284 -0
- package/lib/commonjs/ui/hooks/useSessionManagement.js.map +1 -0
- package/lib/commonjs/ui/index.js +2 -10
- package/lib/commonjs/ui/index.js.map +1 -1
- package/lib/commonjs/ui/navigation/routes.js +1 -5
- package/lib/commonjs/ui/navigation/routes.js.map +1 -1
- package/lib/commonjs/ui/screens/AccountCenterScreen.js +4 -9
- package/lib/commonjs/ui/screens/AccountCenterScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/AccountSettingsScreen.js +19 -37
- package/lib/commonjs/ui/screens/AccountSettingsScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/AccountSwitcherScreen.js +5 -5
- package/lib/commonjs/ui/screens/AccountSwitcherScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/OxyAuthScreen.js +15 -2
- package/lib/commonjs/ui/screens/OxyAuthScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/PrivacySettingsScreen.js +97 -76
- package/lib/commonjs/ui/screens/PrivacySettingsScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/ProfileScreen.js +6 -6
- package/lib/commonjs/ui/screens/ProfileScreen.js.map +1 -1
- package/lib/commonjs/ui/stores/authStore.js +6 -54
- package/lib/commonjs/ui/stores/authStore.js.map +1 -1
- package/lib/commonjs/ui/styles/spacing.js +2 -54
- package/lib/commonjs/ui/styles/spacing.js.map +1 -1
- package/lib/commonjs/ui/utils/avatarUtils.js +12 -9
- package/lib/commonjs/ui/utils/avatarUtils.js.map +1 -1
- package/lib/commonjs/ui/utils/sessionHelpers.js +1 -7
- package/lib/commonjs/ui/utils/sessionHelpers.js.map +1 -1
- package/lib/commonjs/utils/deviceManager.js +177 -0
- package/lib/commonjs/utils/deviceManager.js.map +1 -0
- package/lib/commonjs/utils/errorUtils.js +0 -13
- package/lib/commonjs/utils/errorUtils.js.map +1 -1
- package/lib/commonjs/utils/index.js +7 -0
- package/lib/commonjs/utils/index.js.map +1 -1
- package/lib/commonjs/utils/sessionUtils.js +1 -8
- package/lib/commonjs/utils/sessionUtils.js.map +1 -1
- package/lib/commonjs/utils/validationUtils.js +1 -15
- package/lib/commonjs/utils/validationUtils.js.map +1 -1
- package/lib/module/core/OxyServices.js +1 -1
- package/lib/module/core/index.js +4 -6
- package/lib/module/core/index.js.map +1 -1
- package/lib/module/core/mixins/OxyServices.auth.js +36 -53
- package/lib/module/core/mixins/OxyServices.auth.js.map +1 -1
- package/lib/module/core/mixins/OxyServices.user.js +10 -17
- package/lib/module/core/mixins/OxyServices.user.js.map +1 -1
- package/lib/module/core/services/TokenService.js +27 -13
- package/lib/module/core/services/TokenService.js.map +1 -1
- package/lib/module/crypto/index.js +0 -3
- package/lib/module/crypto/index.js.map +1 -1
- package/lib/module/crypto/keyManager.js +21 -22
- package/lib/module/crypto/keyManager.js.map +1 -1
- package/lib/module/crypto/polyfill.js +1 -2
- package/lib/module/crypto/polyfill.js.map +1 -1
- package/lib/module/crypto/signatureService.js +18 -32
- package/lib/module/crypto/signatureService.js.map +1 -1
- package/lib/module/index.js +7 -19
- package/lib/module/index.js.map +1 -1
- package/lib/module/models/interfaces.js +0 -7
- package/lib/module/models/interfaces.js.map +1 -1
- package/lib/module/node/index.js +0 -3
- package/lib/module/node/index.js.map +1 -1
- package/lib/module/ui/components/BottomSheetRouter.js +2 -6
- package/lib/module/ui/components/BottomSheetRouter.js.map +1 -1
- package/lib/module/ui/context/OxyContext.js +779 -450
- package/lib/module/ui/context/OxyContext.js.map +1 -1
- package/lib/module/ui/context/hooks/useAuthOperations.js +545 -0
- package/lib/module/ui/context/hooks/useAuthOperations.js.map +1 -0
- package/lib/module/ui/context/hooks/useDeviceManagement.js +68 -0
- package/lib/module/ui/context/hooks/useDeviceManagement.js.map +1 -0
- package/lib/module/ui/context/hooks/useStorage.js +74 -0
- package/lib/module/ui/context/hooks/useStorage.js.map +1 -0
- package/lib/module/ui/hooks/index.js +0 -1
- package/lib/module/ui/hooks/index.js.map +1 -1
- package/lib/module/ui/hooks/mutations/index.js +1 -1
- package/lib/module/ui/hooks/mutations/index.js.map +1 -1
- package/lib/module/ui/hooks/mutations/useAccountMutations.js +21 -71
- package/lib/module/ui/hooks/mutations/useAccountMutations.js.map +1 -1
- package/lib/module/ui/hooks/queries/index.js +1 -1
- package/lib/module/ui/hooks/queries/index.js.map +1 -1
- package/lib/module/ui/hooks/queries/queryKeys.js +1 -3
- package/lib/module/ui/hooks/queries/queryKeys.js.map +1 -1
- package/lib/module/ui/hooks/queries/useAccountQueries.js +27 -61
- package/lib/module/ui/hooks/queries/useAccountQueries.js.map +1 -1
- package/lib/module/ui/hooks/queries/useServicesQueries.js +6 -4
- package/lib/module/ui/hooks/queries/useServicesQueries.js.map +1 -1
- package/lib/module/ui/hooks/useDeviceManagement.js +68 -0
- package/lib/module/ui/hooks/useDeviceManagement.js.map +1 -0
- package/lib/module/ui/hooks/useProfileEditing.js +5 -3
- package/lib/module/ui/hooks/useProfileEditing.js.map +1 -1
- package/lib/module/ui/hooks/useSessionManagement.js +279 -0
- package/lib/module/ui/hooks/useSessionManagement.js.map +1 -0
- package/lib/module/ui/index.js +1 -2
- package/lib/module/ui/index.js.map +1 -1
- package/lib/module/ui/navigation/routes.js +1 -5
- package/lib/module/ui/navigation/routes.js.map +1 -1
- package/lib/module/ui/screens/AccountCenterScreen.js +4 -9
- package/lib/module/ui/screens/AccountCenterScreen.js.map +1 -1
- package/lib/module/ui/screens/AccountSettingsScreen.js +19 -37
- package/lib/module/ui/screens/AccountSettingsScreen.js.map +1 -1
- package/lib/module/ui/screens/AccountSwitcherScreen.js +5 -5
- package/lib/module/ui/screens/AccountSwitcherScreen.js.map +1 -1
- package/lib/module/ui/screens/OxyAuthScreen.js +15 -2
- package/lib/module/ui/screens/OxyAuthScreen.js.map +1 -1
- package/lib/module/ui/screens/PrivacySettingsScreen.js +98 -77
- package/lib/module/ui/screens/PrivacySettingsScreen.js.map +1 -1
- package/lib/module/ui/screens/ProfileScreen.js +6 -6
- package/lib/module/ui/screens/ProfileScreen.js.map +1 -1
- package/lib/module/ui/stores/authStore.js +6 -54
- package/lib/module/ui/stores/authStore.js.map +1 -1
- package/lib/module/ui/styles/spacing.js +2 -6
- package/lib/module/ui/styles/spacing.js.map +1 -1
- package/lib/module/ui/utils/avatarUtils.js +12 -9
- package/lib/module/ui/utils/avatarUtils.js.map +1 -1
- package/lib/module/ui/utils/sessionHelpers.js +1 -7
- package/lib/module/ui/utils/sessionHelpers.js.map +1 -1
- package/lib/module/utils/deviceManager.js +171 -0
- package/lib/module/utils/deviceManager.js.map +1 -0
- package/lib/module/utils/errorUtils.js +0 -7
- package/lib/module/utils/errorUtils.js.map +1 -1
- package/lib/module/utils/index.js +1 -2
- package/lib/module/utils/index.js.map +1 -1
- package/lib/module/utils/sessionUtils.js +1 -8
- package/lib/module/utils/sessionUtils.js.map +1 -1
- package/lib/module/utils/validationUtils.js +0 -13
- package/lib/module/utils/validationUtils.js.map +1 -1
- package/lib/typescript/core/OxyServices.d.ts +1 -1
- package/lib/typescript/core/index.d.ts +3 -3
- package/lib/typescript/core/index.d.ts.map +1 -1
- package/lib/typescript/core/mixins/OxyServices.auth.d.ts +21 -44
- package/lib/typescript/core/mixins/OxyServices.auth.d.ts.map +1 -1
- package/lib/typescript/core/mixins/OxyServices.user.d.ts +1 -0
- package/lib/typescript/core/mixins/OxyServices.user.d.ts.map +1 -1
- package/lib/typescript/core/mixins/index.d.ts +8 -15
- package/lib/typescript/core/mixins/index.d.ts.map +1 -1
- package/lib/typescript/core/services/TokenService.d.ts.map +1 -1
- package/lib/typescript/crypto/index.d.ts +0 -1
- package/lib/typescript/crypto/index.d.ts.map +1 -1
- package/lib/typescript/crypto/keyManager.d.ts +2 -15
- package/lib/typescript/crypto/keyManager.d.ts.map +1 -1
- package/lib/typescript/crypto/polyfill.d.ts +1 -2
- package/lib/typescript/crypto/polyfill.d.ts.map +1 -1
- package/lib/typescript/crypto/signatureService.d.ts +0 -13
- package/lib/typescript/crypto/signatureService.d.ts.map +1 -1
- package/lib/typescript/index.d.ts +7 -12
- package/lib/typescript/index.d.ts.map +1 -1
- package/lib/typescript/models/interfaces.d.ts +36 -5
- package/lib/typescript/models/interfaces.d.ts.map +1 -1
- package/lib/typescript/models/session.d.ts +18 -3
- package/lib/typescript/models/session.d.ts.map +1 -1
- package/lib/typescript/node/index.d.ts +0 -1
- package/lib/typescript/node/index.d.ts.map +1 -1
- package/lib/typescript/ui/components/BottomSheetRouter.d.ts +0 -5
- package/lib/typescript/ui/components/BottomSheetRouter.d.ts.map +1 -1
- package/lib/typescript/ui/components/TextField/Addons/Outline.d.ts +2 -2
- package/lib/typescript/ui/components/TextField/helpers.d.ts +2 -2
- package/lib/typescript/ui/components/TextField/types.d.ts +0 -1
- package/lib/typescript/ui/components/TextField/types.d.ts.map +1 -1
- package/lib/typescript/ui/context/OxyContext.d.ts +28 -5
- package/lib/typescript/ui/context/OxyContext.d.ts.map +1 -1
- package/lib/typescript/ui/context/hooks/useAuthOperations.d.ts +59 -0
- package/lib/typescript/ui/context/hooks/useAuthOperations.d.ts.map +1 -0
- package/lib/typescript/ui/context/hooks/useDeviceManagement.d.ts +27 -0
- package/lib/typescript/ui/context/hooks/useDeviceManagement.d.ts.map +1 -0
- package/lib/typescript/ui/context/hooks/useStorage.d.ts +22 -0
- package/lib/typescript/ui/context/hooks/useStorage.d.ts.map +1 -0
- package/lib/typescript/ui/hooks/index.d.ts +0 -1
- package/lib/typescript/ui/hooks/index.d.ts.map +1 -1
- package/lib/typescript/ui/hooks/mutations/index.d.ts +1 -1
- package/lib/typescript/ui/hooks/mutations/index.d.ts.map +1 -1
- package/lib/typescript/ui/hooks/mutations/useAccountMutations.d.ts +8 -19
- package/lib/typescript/ui/hooks/mutations/useAccountMutations.d.ts.map +1 -1
- package/lib/typescript/ui/hooks/mutations/useServicesMutations.d.ts +1 -1
- package/lib/typescript/ui/hooks/mutations/useServicesMutations.d.ts.map +1 -1
- package/lib/typescript/ui/hooks/queries/index.d.ts +1 -1
- package/lib/typescript/ui/hooks/queries/index.d.ts.map +1 -1
- package/lib/typescript/ui/hooks/queries/queryKeys.d.ts +0 -2
- package/lib/typescript/ui/hooks/queries/queryKeys.d.ts.map +1 -1
- package/lib/typescript/ui/hooks/queries/useAccountQueries.d.ts +5 -17
- package/lib/typescript/ui/hooks/queries/useAccountQueries.d.ts.map +1 -1
- package/lib/typescript/ui/hooks/queries/useServicesQueries.d.ts.map +1 -1
- package/lib/typescript/ui/hooks/useDeviceManagement.d.ts +27 -0
- package/lib/typescript/ui/hooks/useDeviceManagement.d.ts.map +1 -0
- package/lib/typescript/ui/hooks/useProfileEditing.d.ts.map +1 -1
- package/lib/typescript/ui/hooks/useSessionManagement.d.ts +41 -0
- package/lib/typescript/ui/hooks/useSessionManagement.d.ts.map +1 -0
- package/lib/typescript/ui/index.d.ts +0 -1
- package/lib/typescript/ui/index.d.ts.map +1 -1
- package/lib/typescript/ui/navigation/routes.d.ts +1 -1
- package/lib/typescript/ui/navigation/routes.d.ts.map +1 -1
- package/lib/typescript/ui/screens/AccountCenterScreen.d.ts.map +1 -1
- package/lib/typescript/ui/screens/AccountSettingsScreen.d.ts.map +1 -1
- package/lib/typescript/ui/screens/OxyAuthScreen.d.ts.map +1 -1
- package/lib/typescript/ui/screens/PrivacySettingsScreen.d.ts.map +1 -1
- package/lib/typescript/ui/stores/authStore.d.ts +1 -8
- package/lib/typescript/ui/stores/authStore.d.ts.map +1 -1
- package/lib/typescript/ui/styles/spacing.d.ts +0 -5
- package/lib/typescript/ui/styles/spacing.d.ts.map +1 -1
- package/lib/typescript/ui/utils/avatarUtils.d.ts +4 -1
- package/lib/typescript/ui/utils/avatarUtils.d.ts.map +1 -1
- package/lib/typescript/ui/utils/sessionHelpers.d.ts +0 -1
- package/lib/typescript/ui/utils/sessionHelpers.d.ts.map +1 -1
- package/lib/typescript/utils/deviceManager.d.ts +66 -0
- package/lib/typescript/utils/deviceManager.d.ts.map +1 -0
- package/lib/typescript/utils/errorUtils.d.ts +0 -6
- package/lib/typescript/utils/errorUtils.d.ts.map +1 -1
- package/lib/typescript/utils/index.d.ts +2 -0
- package/lib/typescript/utils/index.d.ts.map +1 -1
- package/lib/typescript/utils/sessionUtils.d.ts.map +1 -1
- package/lib/typescript/utils/validationUtils.d.ts +0 -8
- package/lib/typescript/utils/validationUtils.d.ts.map +1 -1
- package/package.json +1 -6
- package/src/core/OxyServices.ts +1 -1
- package/src/core/index.ts +5 -8
- package/src/core/mixins/OxyServices.auth.ts +44 -87
- package/src/core/mixins/OxyServices.user.ts +10 -18
- package/src/core/services/TokenService.ts +27 -16
- package/src/crypto/index.ts +1 -3
- package/src/crypto/keyManager.ts +21 -30
- package/src/crypto/polyfill.ts +1 -2
- package/src/crypto/signatureService.ts +19 -43
- package/src/index.ts +6 -41
- package/src/models/interfaces.ts +39 -12
- package/src/models/session.ts +19 -7
- package/src/node/index.ts +0 -3
- package/src/ui/components/BottomSheetRouter.tsx +1 -6
- package/src/ui/components/TextField/Addons/Outline.tsx +2 -2
- package/src/ui/components/TextField/helpers.tsx +2 -2
- package/src/ui/components/TextField/types.tsx +1 -1
- package/src/ui/context/OxyContext.tsx +831 -463
- package/src/ui/context/hooks/useAuthOperations.ts +620 -0
- package/src/ui/context/hooks/useDeviceManagement.ts +108 -0
- package/src/ui/context/hooks/useStorage.ts +104 -0
- package/src/ui/hooks/index.ts +1 -2
- package/src/ui/hooks/mutations/index.ts +0 -2
- package/src/ui/hooks/mutations/useAccountMutations.ts +20 -66
- package/src/ui/hooks/queries/index.ts +0 -2
- package/src/ui/hooks/queries/queryKeys.ts +0 -2
- package/src/ui/hooks/queries/useAccountQueries.ts +19 -53
- package/src/ui/hooks/queries/useServicesQueries.ts +5 -5
- package/src/ui/hooks/useDeviceManagement.ts +108 -0
- package/src/ui/hooks/useProfileEditing.ts +3 -3
- package/src/ui/hooks/useSessionManagement.ts +405 -0
- package/src/ui/index.ts +1 -2
- package/src/ui/navigation/routes.ts +2 -6
- package/src/ui/screens/AccountCenterScreen.tsx +4 -9
- package/src/ui/screens/AccountSettingsScreen.tsx +31 -49
- package/src/ui/screens/AccountSwitcherScreen.tsx +5 -5
- package/src/ui/screens/OxyAuthScreen.tsx +19 -4
- package/src/ui/screens/PrivacySettingsScreen.tsx +101 -67
- package/src/ui/screens/ProfileScreen.tsx +10 -10
- package/src/ui/stores/authStore.ts +8 -48
- package/src/ui/styles/spacing.ts +2 -15
- package/src/ui/utils/avatarUtils.ts +21 -19
- package/src/ui/utils/sessionHelpers.ts +0 -7
- package/src/utils/__tests__/validationUtils.test.ts +1 -16
- package/src/utils/deviceManager.ts +198 -0
- package/src/utils/errorUtils.ts +1 -8
- package/src/utils/index.ts +2 -1
- package/src/utils/sessionUtils.ts +0 -8
- package/src/utils/validationUtils.ts +0 -12
- package/lib/commonjs/adapters/expo/crypto.js +0 -56
- package/lib/commonjs/adapters/expo/crypto.js.map +0 -1
- package/lib/commonjs/adapters/expo/fetch.js +0 -30
- package/lib/commonjs/adapters/expo/fetch.js.map +0 -1
- package/lib/commonjs/adapters/expo/index.js +0 -48
- package/lib/commonjs/adapters/expo/index.js.map +0 -1
- package/lib/commonjs/adapters/expo/storage.js +0 -201
- package/lib/commonjs/adapters/expo/storage.js.map +0 -1
- package/lib/commonjs/adapters/index.js +0 -48
- package/lib/commonjs/adapters/index.js.map +0 -1
- package/lib/commonjs/adapters/node/crypto.js +0 -40
- package/lib/commonjs/adapters/node/crypto.js.map +0 -1
- package/lib/commonjs/adapters/node/fetch.js +0 -62
- package/lib/commonjs/adapters/node/fetch.js.map +0 -1
- package/lib/commonjs/adapters/node/index.js +0 -34
- package/lib/commonjs/adapters/node/index.js.map +0 -1
- package/lib/commonjs/adapters/node/storage.js +0 -163
- package/lib/commonjs/adapters/node/storage.js.map +0 -1
- package/lib/commonjs/core/identity-session/DeviceManager.js +0 -237
- package/lib/commonjs/core/identity-session/DeviceManager.js.map +0 -1
- package/lib/commonjs/core/identity-session/INTEGRATION_GUIDE.md +0 -287
- package/lib/commonjs/core/identity-session/IdentityManager.js +0 -400
- package/lib/commonjs/core/identity-session/IdentityManager.js.map +0 -1
- package/lib/commonjs/core/identity-session/IdentitySessionCore.js +0 -394
- package/lib/commonjs/core/identity-session/IdentitySessionCore.js.map +0 -1
- package/lib/commonjs/core/identity-session/RefreshManager.js +0 -137
- package/lib/commonjs/core/identity-session/RefreshManager.js.map +0 -1
- package/lib/commonjs/core/identity-session/SessionManager.js +0 -427
- package/lib/commonjs/core/identity-session/SessionManager.js.map +0 -1
- package/lib/commonjs/core/identity-session/createIdentitySessionCore.js +0 -24
- package/lib/commonjs/core/identity-session/createIdentitySessionCore.js.map +0 -1
- package/lib/commonjs/core/identity-session/errors.js +0 -176
- package/lib/commonjs/core/identity-session/errors.js.map +0 -1
- package/lib/commonjs/core/identity-session/index.js +0 -80
- package/lib/commonjs/core/identity-session/index.js.map +0 -1
- package/lib/commonjs/core/identity-session/types.js +0 -2
- package/lib/commonjs/core/identity-session/types.js.map +0 -1
- package/lib/commonjs/crypto/README.md +0 -142
- package/lib/commonjs/crypto/core.js +0 -147
- package/lib/commonjs/crypto/core.js.map +0 -1
- package/lib/commonjs/node/signatureService.js +0 -107
- package/lib/commonjs/node/signatureService.js.map +0 -1
- package/lib/commonjs/ui/hooks/auth/index.js +0 -37
- package/lib/commonjs/ui/hooks/auth/index.js.map +0 -1
- package/lib/commonjs/ui/hooks/auth/useUsernameValidation.js +0 -171
- package/lib/commonjs/ui/hooks/auth/useUsernameValidation.js.map +0 -1
- package/lib/commonjs/ui/hooks/useAvatarPicker.js +0 -52
- package/lib/commonjs/ui/hooks/useAvatarPicker.js.map +0 -1
- package/lib/commonjs/ui/hooks/useIdentityTransfer.js +0 -125
- package/lib/commonjs/ui/hooks/useIdentityTransfer.js.map +0 -1
- package/lib/commonjs/ui/hooks/useTransferCodesPersistence.js +0 -81
- package/lib/commonjs/ui/hooks/useTransferCodesPersistence.js.map +0 -1
- package/lib/commonjs/ui/hooks/useTransferQueries.js +0 -85
- package/lib/commonjs/ui/hooks/useTransferQueries.js.map +0 -1
- package/lib/commonjs/ui/stores/transferStore.js +0 -157
- package/lib/commonjs/ui/stores/transferStore.js.map +0 -1
- package/lib/module/adapters/expo/crypto.js +0 -51
- package/lib/module/adapters/expo/crypto.js.map +0 -1
- package/lib/module/adapters/expo/fetch.js +0 -26
- package/lib/module/adapters/expo/fetch.js.map +0 -1
- package/lib/module/adapters/expo/index.js +0 -45
- package/lib/module/adapters/expo/index.js.map +0 -1
- package/lib/module/adapters/expo/storage.js +0 -198
- package/lib/module/adapters/expo/storage.js.map +0 -1
- package/lib/module/adapters/index.js +0 -45
- package/lib/module/adapters/index.js.map +0 -1
- package/lib/module/adapters/node/crypto.js +0 -36
- package/lib/module/adapters/node/crypto.js.map +0 -1
- package/lib/module/adapters/node/fetch.js +0 -57
- package/lib/module/adapters/node/fetch.js.map +0 -1
- package/lib/module/adapters/node/index.js +0 -31
- package/lib/module/adapters/node/index.js.map +0 -1
- package/lib/module/adapters/node/storage.js +0 -159
- package/lib/module/adapters/node/storage.js.map +0 -1
- package/lib/module/core/identity-session/DeviceManager.js +0 -232
- package/lib/module/core/identity-session/DeviceManager.js.map +0 -1
- package/lib/module/core/identity-session/INTEGRATION_GUIDE.md +0 -287
- package/lib/module/core/identity-session/IdentityManager.js +0 -395
- package/lib/module/core/identity-session/IdentityManager.js.map +0 -1
- package/lib/module/core/identity-session/IdentitySessionCore.js +0 -390
- package/lib/module/core/identity-session/IdentitySessionCore.js.map +0 -1
- package/lib/module/core/identity-session/RefreshManager.js +0 -132
- package/lib/module/core/identity-session/RefreshManager.js.map +0 -1
- package/lib/module/core/identity-session/SessionManager.js +0 -422
- package/lib/module/core/identity-session/SessionManager.js.map +0 -1
- package/lib/module/core/identity-session/createIdentitySessionCore.js +0 -21
- package/lib/module/core/identity-session/createIdentitySessionCore.js.map +0 -1
- package/lib/module/core/identity-session/errors.js +0 -170
- package/lib/module/core/identity-session/errors.js.map +0 -1
- package/lib/module/core/identity-session/index.js +0 -17
- package/lib/module/core/identity-session/index.js.map +0 -1
- package/lib/module/core/identity-session/types.js +0 -2
- package/lib/module/core/identity-session/types.js.map +0 -1
- package/lib/module/crypto/README.md +0 -142
- package/lib/module/crypto/core.js +0 -133
- package/lib/module/crypto/core.js.map +0 -1
- package/lib/module/node/signatureService.js +0 -101
- package/lib/module/node/signatureService.js.map +0 -1
- package/lib/module/ui/hooks/auth/index.js +0 -7
- package/lib/module/ui/hooks/auth/index.js.map +0 -1
- package/lib/module/ui/hooks/auth/useUsernameValidation.js +0 -167
- package/lib/module/ui/hooks/auth/useUsernameValidation.js.map +0 -1
- package/lib/module/ui/hooks/useAvatarPicker.js +0 -48
- package/lib/module/ui/hooks/useAvatarPicker.js.map +0 -1
- package/lib/module/ui/hooks/useIdentityTransfer.js +0 -121
- package/lib/module/ui/hooks/useIdentityTransfer.js.map +0 -1
- package/lib/module/ui/hooks/useTransferCodesPersistence.js +0 -77
- package/lib/module/ui/hooks/useTransferCodesPersistence.js.map +0 -1
- package/lib/module/ui/hooks/useTransferQueries.js +0 -80
- package/lib/module/ui/hooks/useTransferQueries.js.map +0 -1
- package/lib/module/ui/stores/transferStore.js +0 -152
- package/lib/module/ui/stores/transferStore.js.map +0 -1
- package/lib/typescript/adapters/expo/crypto.d.ts +0 -17
- package/lib/typescript/adapters/expo/crypto.d.ts.map +0 -1
- package/lib/typescript/adapters/expo/fetch.d.ts +0 -16
- package/lib/typescript/adapters/expo/fetch.d.ts.map +0 -1
- package/lib/typescript/adapters/expo/index.d.ts +0 -23
- package/lib/typescript/adapters/expo/index.d.ts.map +0 -1
- package/lib/typescript/adapters/expo/storage.d.ts +0 -23
- package/lib/typescript/adapters/expo/storage.d.ts.map +0 -1
- package/lib/typescript/adapters/index.d.ts +0 -17
- package/lib/typescript/adapters/index.d.ts.map +0 -1
- package/lib/typescript/adapters/node/crypto.d.ts +0 -17
- package/lib/typescript/adapters/node/crypto.d.ts.map +0 -1
- package/lib/typescript/adapters/node/fetch.d.ts +0 -16
- package/lib/typescript/adapters/node/fetch.d.ts.map +0 -1
- package/lib/typescript/adapters/node/index.d.ts +0 -23
- package/lib/typescript/adapters/node/index.d.ts.map +0 -1
- package/lib/typescript/adapters/node/storage.d.ts +0 -23
- package/lib/typescript/adapters/node/storage.d.ts.map +0 -1
- package/lib/typescript/core/identity-session/DeviceManager.d.ts +0 -64
- package/lib/typescript/core/identity-session/DeviceManager.d.ts.map +0 -1
- package/lib/typescript/core/identity-session/IdentityManager.d.ts +0 -88
- package/lib/typescript/core/identity-session/IdentityManager.d.ts.map +0 -1
- package/lib/typescript/core/identity-session/IdentitySessionCore.d.ts +0 -141
- package/lib/typescript/core/identity-session/IdentitySessionCore.d.ts.map +0 -1
- package/lib/typescript/core/identity-session/RefreshManager.d.ts +0 -36
- package/lib/typescript/core/identity-session/RefreshManager.d.ts.map +0 -1
- package/lib/typescript/core/identity-session/SessionManager.d.ts +0 -104
- package/lib/typescript/core/identity-session/SessionManager.d.ts.map +0 -1
- package/lib/typescript/core/identity-session/createIdentitySessionCore.d.ts +0 -11
- package/lib/typescript/core/identity-session/createIdentitySessionCore.d.ts.map +0 -1
- package/lib/typescript/core/identity-session/errors.d.ts +0 -63
- package/lib/typescript/core/identity-session/errors.d.ts.map +0 -1
- package/lib/typescript/core/identity-session/index.d.ts +0 -14
- package/lib/typescript/core/identity-session/index.d.ts.map +0 -1
- package/lib/typescript/core/identity-session/types.d.ts +0 -196
- package/lib/typescript/core/identity-session/types.d.ts.map +0 -1
- package/lib/typescript/crypto/core.d.ts +0 -56
- package/lib/typescript/crypto/core.d.ts.map +0 -1
- package/lib/typescript/node/signatureService.d.ts +0 -55
- package/lib/typescript/node/signatureService.d.ts.map +0 -1
- package/lib/typescript/ui/hooks/auth/index.d.ts +0 -6
- package/lib/typescript/ui/hooks/auth/index.d.ts.map +0 -1
- package/lib/typescript/ui/hooks/auth/useUsernameValidation.d.ts +0 -32
- package/lib/typescript/ui/hooks/auth/useUsernameValidation.d.ts.map +0 -1
- package/lib/typescript/ui/hooks/useAvatarPicker.d.ts +0 -18
- package/lib/typescript/ui/hooks/useAvatarPicker.d.ts.map +0 -1
- package/lib/typescript/ui/hooks/useIdentityTransfer.d.ts +0 -24
- package/lib/typescript/ui/hooks/useIdentityTransfer.d.ts.map +0 -1
- package/lib/typescript/ui/hooks/useTransferCodesPersistence.d.ts +0 -6
- package/lib/typescript/ui/hooks/useTransferCodesPersistence.d.ts.map +0 -1
- package/lib/typescript/ui/hooks/useTransferQueries.d.ts +0 -26
- package/lib/typescript/ui/hooks/useTransferQueries.d.ts.map +0 -1
- package/lib/typescript/ui/stores/transferStore.d.ts +0 -36
- package/lib/typescript/ui/stores/transferStore.d.ts.map +0 -1
- package/src/adapters/expo/crypto.ts +0 -55
- package/src/adapters/expo/fetch.ts +0 -28
- package/src/adapters/expo/index.ts +0 -51
- package/src/adapters/expo/storage.ts +0 -228
- package/src/adapters/index.ts +0 -48
- package/src/adapters/node/crypto.ts +0 -39
- package/src/adapters/node/fetch.ts +0 -59
- package/src/adapters/node/index.ts +0 -37
- package/src/adapters/node/storage.ts +0 -170
- package/src/core/identity-session/DeviceManager.ts +0 -273
- package/src/core/identity-session/INTEGRATION_GUIDE.md +0 -287
- package/src/core/identity-session/IdentityManager.ts +0 -474
- package/src/core/identity-session/IdentitySessionCore.ts +0 -464
- package/src/core/identity-session/RefreshManager.ts +0 -189
- package/src/core/identity-session/SessionManager.ts +0 -500
- package/src/core/identity-session/createIdentitySessionCore.ts +0 -19
- package/src/core/identity-session/errors.ts +0 -197
- package/src/core/identity-session/index.ts +0 -15
- package/src/core/identity-session/types.ts +0 -188
- package/src/crypto/README.md +0 -142
- package/src/crypto/__tests__/core.test.ts +0 -203
- package/src/crypto/core.ts +0 -142
- package/src/node/signatureService.ts +0 -126
- package/src/ui/hooks/auth/index.ts +0 -9
- package/src/ui/hooks/auth/useUsernameValidation.ts +0 -177
- package/src/ui/hooks/useAvatarPicker.ts +0 -62
- package/src/ui/hooks/useIdentityTransfer.ts +0 -135
- package/src/ui/hooks/useTransferCodesPersistence.ts +0 -80
- package/src/ui/hooks/useTransferQueries.ts +0 -102
- package/src/ui/stores/transferStore.ts +0 -201
|
@@ -1,197 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Identity and Session Error Codes
|
|
3
|
-
*
|
|
4
|
-
* Aligned with backend error codes for consistency across the ecosystem
|
|
5
|
-
*/
|
|
6
|
-
|
|
7
|
-
export const IdentitySessionErrorCodes = {
|
|
8
|
-
// Authentication errors
|
|
9
|
-
UNAUTHORIZED: 'UNAUTHORIZED',
|
|
10
|
-
FORBIDDEN: 'FORBIDDEN',
|
|
11
|
-
INVALID_TOKEN: 'INVALID_TOKEN',
|
|
12
|
-
MISSING_TOKEN: 'MISSING_TOKEN',
|
|
13
|
-
TOKEN_EXPIRED: 'TOKEN_EXPIRED',
|
|
14
|
-
TOKEN_NOT_YET_VALID: 'TOKEN_NOT_YET_VALID',
|
|
15
|
-
INVALID_SIGNATURE: 'INVALID_SIGNATURE',
|
|
16
|
-
MALFORMED_TOKEN: 'MALFORMED_TOKEN',
|
|
17
|
-
INVALID_SESSION: 'INVALID_SESSION',
|
|
18
|
-
|
|
19
|
-
// Identity errors
|
|
20
|
-
IDENTITY_NOT_FOUND: 'IDENTITY_NOT_FOUND',
|
|
21
|
-
IDENTITY_ALREADY_EXISTS: 'IDENTITY_ALREADY_EXISTS',
|
|
22
|
-
IDENTITY_NOT_AVAILABLE_ON_WEB: 'IDENTITY_NOT_AVAILABLE_ON_WEB',
|
|
23
|
-
IDENTITY_NOT_SYNCED: 'IDENTITY_NOT_SYNCED',
|
|
24
|
-
INVALID_PUBLIC_KEY: 'INVALID_PUBLIC_KEY',
|
|
25
|
-
INVALID_PRIVATE_KEY: 'INVALID_PRIVATE_KEY',
|
|
26
|
-
IDENTITY_CREATION_FAILED: 'IDENTITY_CREATION_FAILED',
|
|
27
|
-
IDENTITY_IMPORT_FAILED: 'IDENTITY_IMPORT_FAILED',
|
|
28
|
-
IDENTITY_DELETE_FAILED: 'IDENTITY_DELETE_FAILED',
|
|
29
|
-
BACKUP_DECRYPTION_FAILED: 'BACKUP_DECRYPTION_FAILED',
|
|
30
|
-
|
|
31
|
-
// Session errors
|
|
32
|
-
SESSION_NOT_FOUND: 'SESSION_NOT_FOUND',
|
|
33
|
-
SESSION_EXPIRED: 'SESSION_EXPIRED',
|
|
34
|
-
SESSION_INVALID: 'SESSION_INVALID',
|
|
35
|
-
SESSION_CREATION_FAILED: 'SESSION_CREATION_FAILED',
|
|
36
|
-
SESSION_REFRESH_FAILED: 'SESSION_REFRESH_FAILED',
|
|
37
|
-
|
|
38
|
-
// Device errors
|
|
39
|
-
DEVICE_NOT_FOUND: 'DEVICE_NOT_FOUND',
|
|
40
|
-
DEVICE_CREATION_FAILED: 'DEVICE_CREATION_FAILED',
|
|
41
|
-
|
|
42
|
-
// Validation errors
|
|
43
|
-
VALIDATION_ERROR: 'VALIDATION_ERROR',
|
|
44
|
-
BAD_REQUEST: 'BAD_REQUEST',
|
|
45
|
-
MISSING_PARAMETER: 'MISSING_PARAMETER',
|
|
46
|
-
INVALID_FORMAT: 'INVALID_FORMAT',
|
|
47
|
-
|
|
48
|
-
// Resource errors
|
|
49
|
-
NOT_FOUND: 'NOT_FOUND',
|
|
50
|
-
ALREADY_EXISTS: 'ALREADY_EXISTS',
|
|
51
|
-
CONFLICT: 'CONFLICT',
|
|
52
|
-
|
|
53
|
-
// Server errors
|
|
54
|
-
INTERNAL_ERROR: 'INTERNAL_ERROR',
|
|
55
|
-
SERVICE_UNAVAILABLE: 'SERVICE_UNAVAILABLE',
|
|
56
|
-
TIMEOUT: 'TIMEOUT',
|
|
57
|
-
|
|
58
|
-
// Network errors
|
|
59
|
-
NETWORK_ERROR: 'NETWORK_ERROR',
|
|
60
|
-
CONNECTION_FAILED: 'CONNECTION_FAILED',
|
|
61
|
-
|
|
62
|
-
// Storage errors
|
|
63
|
-
STORAGE_ERROR: 'STORAGE_ERROR',
|
|
64
|
-
STORAGE_NOT_AVAILABLE: 'STORAGE_NOT_AVAILABLE',
|
|
65
|
-
SECURE_STORAGE_NOT_AVAILABLE: 'SECURE_STORAGE_NOT_AVAILABLE',
|
|
66
|
-
|
|
67
|
-
// Unknown
|
|
68
|
-
UNKNOWN_ERROR: 'UNKNOWN_ERROR',
|
|
69
|
-
} as const;
|
|
70
|
-
|
|
71
|
-
export type IdentitySessionErrorCode = typeof IdentitySessionErrorCodes[keyof typeof IdentitySessionErrorCodes];
|
|
72
|
-
|
|
73
|
-
/**
|
|
74
|
-
* IdentitySessionError - Custom error class for identity and session operations
|
|
75
|
-
*/
|
|
76
|
-
export class IdentitySessionError extends Error {
|
|
77
|
-
public readonly code: IdentitySessionErrorCode;
|
|
78
|
-
public readonly statusCode: number;
|
|
79
|
-
|
|
80
|
-
constructor(
|
|
81
|
-
message: string,
|
|
82
|
-
code: IdentitySessionErrorCode = IdentitySessionErrorCodes.UNKNOWN_ERROR,
|
|
83
|
-
statusCode: number = 500
|
|
84
|
-
) {
|
|
85
|
-
super(message);
|
|
86
|
-
this.name = 'IdentitySessionError';
|
|
87
|
-
this.code = code;
|
|
88
|
-
this.statusCode = statusCode;
|
|
89
|
-
Object.setPrototypeOf(this, IdentitySessionError.prototype);
|
|
90
|
-
}
|
|
91
|
-
}
|
|
92
|
-
|
|
93
|
-
/**
|
|
94
|
-
* Create error from code
|
|
95
|
-
*/
|
|
96
|
-
export function createIdentitySessionError(
|
|
97
|
-
code: IdentitySessionErrorCode,
|
|
98
|
-
message?: string,
|
|
99
|
-
statusCode?: number
|
|
100
|
-
): IdentitySessionError {
|
|
101
|
-
const defaultMessages: Record<IdentitySessionErrorCode, string> = {
|
|
102
|
-
[IdentitySessionErrorCodes.UNAUTHORIZED]: 'Unauthorized',
|
|
103
|
-
[IdentitySessionErrorCodes.FORBIDDEN]: 'Forbidden',
|
|
104
|
-
[IdentitySessionErrorCodes.INVALID_TOKEN]: 'Invalid token',
|
|
105
|
-
[IdentitySessionErrorCodes.MISSING_TOKEN]: 'Missing token',
|
|
106
|
-
[IdentitySessionErrorCodes.TOKEN_EXPIRED]: 'Token has expired',
|
|
107
|
-
[IdentitySessionErrorCodes.TOKEN_NOT_YET_VALID]: 'Token not yet valid',
|
|
108
|
-
[IdentitySessionErrorCodes.INVALID_SIGNATURE]: 'Token signature is invalid',
|
|
109
|
-
[IdentitySessionErrorCodes.MALFORMED_TOKEN]: 'Token format is invalid',
|
|
110
|
-
[IdentitySessionErrorCodes.INVALID_SESSION]: 'Invalid session',
|
|
111
|
-
[IdentitySessionErrorCodes.IDENTITY_NOT_FOUND]: 'Identity not found',
|
|
112
|
-
[IdentitySessionErrorCodes.IDENTITY_ALREADY_EXISTS]: 'Identity already exists',
|
|
113
|
-
[IdentitySessionErrorCodes.IDENTITY_NOT_AVAILABLE_ON_WEB]: 'Identity operations are only available on native platforms',
|
|
114
|
-
[IdentitySessionErrorCodes.IDENTITY_NOT_SYNCED]: 'Identity not synced with server',
|
|
115
|
-
[IdentitySessionErrorCodes.INVALID_PUBLIC_KEY]: 'Invalid public key',
|
|
116
|
-
[IdentitySessionErrorCodes.INVALID_PRIVATE_KEY]: 'Invalid private key',
|
|
117
|
-
[IdentitySessionErrorCodes.IDENTITY_CREATION_FAILED]: 'Failed to create identity',
|
|
118
|
-
[IdentitySessionErrorCodes.IDENTITY_IMPORT_FAILED]: 'Failed to import identity',
|
|
119
|
-
[IdentitySessionErrorCodes.IDENTITY_DELETE_FAILED]: 'Failed to delete identity',
|
|
120
|
-
[IdentitySessionErrorCodes.BACKUP_DECRYPTION_FAILED]: 'Failed to decrypt backup',
|
|
121
|
-
[IdentitySessionErrorCodes.SESSION_NOT_FOUND]: 'Session not found',
|
|
122
|
-
[IdentitySessionErrorCodes.SESSION_EXPIRED]: 'Session expired',
|
|
123
|
-
[IdentitySessionErrorCodes.SESSION_INVALID]: 'Session invalid',
|
|
124
|
-
[IdentitySessionErrorCodes.SESSION_CREATION_FAILED]: 'Failed to create session',
|
|
125
|
-
[IdentitySessionErrorCodes.SESSION_REFRESH_FAILED]: 'Failed to refresh session',
|
|
126
|
-
[IdentitySessionErrorCodes.DEVICE_NOT_FOUND]: 'Device not found',
|
|
127
|
-
[IdentitySessionErrorCodes.DEVICE_CREATION_FAILED]: 'Failed to create device',
|
|
128
|
-
[IdentitySessionErrorCodes.VALIDATION_ERROR]: 'Validation error',
|
|
129
|
-
[IdentitySessionErrorCodes.BAD_REQUEST]: 'Bad request',
|
|
130
|
-
[IdentitySessionErrorCodes.MISSING_PARAMETER]: 'Missing required parameter',
|
|
131
|
-
[IdentitySessionErrorCodes.INVALID_FORMAT]: 'Invalid format',
|
|
132
|
-
[IdentitySessionErrorCodes.NOT_FOUND]: 'Resource not found',
|
|
133
|
-
[IdentitySessionErrorCodes.ALREADY_EXISTS]: 'Resource already exists',
|
|
134
|
-
[IdentitySessionErrorCodes.CONFLICT]: 'Conflict',
|
|
135
|
-
[IdentitySessionErrorCodes.INTERNAL_ERROR]: 'Internal server error',
|
|
136
|
-
[IdentitySessionErrorCodes.SERVICE_UNAVAILABLE]: 'Service unavailable',
|
|
137
|
-
[IdentitySessionErrorCodes.TIMEOUT]: 'Request timeout',
|
|
138
|
-
[IdentitySessionErrorCodes.NETWORK_ERROR]: 'Network error',
|
|
139
|
-
[IdentitySessionErrorCodes.CONNECTION_FAILED]: 'Connection failed',
|
|
140
|
-
[IdentitySessionErrorCodes.STORAGE_ERROR]: 'Storage error',
|
|
141
|
-
[IdentitySessionErrorCodes.STORAGE_NOT_AVAILABLE]: 'Storage not available',
|
|
142
|
-
[IdentitySessionErrorCodes.SECURE_STORAGE_NOT_AVAILABLE]: 'Secure storage not available',
|
|
143
|
-
[IdentitySessionErrorCodes.UNKNOWN_ERROR]: 'Unknown error',
|
|
144
|
-
};
|
|
145
|
-
|
|
146
|
-
const defaultStatusCodes: Record<IdentitySessionErrorCode, number> = {
|
|
147
|
-
[IdentitySessionErrorCodes.UNAUTHORIZED]: 401,
|
|
148
|
-
[IdentitySessionErrorCodes.FORBIDDEN]: 403,
|
|
149
|
-
[IdentitySessionErrorCodes.INVALID_TOKEN]: 401,
|
|
150
|
-
[IdentitySessionErrorCodes.MISSING_TOKEN]: 401,
|
|
151
|
-
[IdentitySessionErrorCodes.TOKEN_EXPIRED]: 401,
|
|
152
|
-
[IdentitySessionErrorCodes.TOKEN_NOT_YET_VALID]: 401,
|
|
153
|
-
[IdentitySessionErrorCodes.INVALID_SIGNATURE]: 401,
|
|
154
|
-
[IdentitySessionErrorCodes.MALFORMED_TOKEN]: 401,
|
|
155
|
-
[IdentitySessionErrorCodes.INVALID_SESSION]: 401,
|
|
156
|
-
[IdentitySessionErrorCodes.IDENTITY_NOT_FOUND]: 404,
|
|
157
|
-
[IdentitySessionErrorCodes.IDENTITY_ALREADY_EXISTS]: 409,
|
|
158
|
-
[IdentitySessionErrorCodes.IDENTITY_NOT_AVAILABLE_ON_WEB]: 400,
|
|
159
|
-
[IdentitySessionErrorCodes.IDENTITY_NOT_SYNCED]: 400,
|
|
160
|
-
[IdentitySessionErrorCodes.INVALID_PUBLIC_KEY]: 400,
|
|
161
|
-
[IdentitySessionErrorCodes.INVALID_PRIVATE_KEY]: 400,
|
|
162
|
-
[IdentitySessionErrorCodes.IDENTITY_CREATION_FAILED]: 500,
|
|
163
|
-
[IdentitySessionErrorCodes.IDENTITY_IMPORT_FAILED]: 500,
|
|
164
|
-
[IdentitySessionErrorCodes.IDENTITY_DELETE_FAILED]: 500,
|
|
165
|
-
[IdentitySessionErrorCodes.BACKUP_DECRYPTION_FAILED]: 400,
|
|
166
|
-
[IdentitySessionErrorCodes.SESSION_NOT_FOUND]: 404,
|
|
167
|
-
[IdentitySessionErrorCodes.SESSION_EXPIRED]: 401,
|
|
168
|
-
[IdentitySessionErrorCodes.SESSION_INVALID]: 401,
|
|
169
|
-
[IdentitySessionErrorCodes.SESSION_CREATION_FAILED]: 500,
|
|
170
|
-
[IdentitySessionErrorCodes.SESSION_REFRESH_FAILED]: 500,
|
|
171
|
-
[IdentitySessionErrorCodes.DEVICE_NOT_FOUND]: 404,
|
|
172
|
-
[IdentitySessionErrorCodes.DEVICE_CREATION_FAILED]: 500,
|
|
173
|
-
[IdentitySessionErrorCodes.VALIDATION_ERROR]: 400,
|
|
174
|
-
[IdentitySessionErrorCodes.BAD_REQUEST]: 400,
|
|
175
|
-
[IdentitySessionErrorCodes.MISSING_PARAMETER]: 400,
|
|
176
|
-
[IdentitySessionErrorCodes.INVALID_FORMAT]: 400,
|
|
177
|
-
[IdentitySessionErrorCodes.NOT_FOUND]: 404,
|
|
178
|
-
[IdentitySessionErrorCodes.ALREADY_EXISTS]: 409,
|
|
179
|
-
[IdentitySessionErrorCodes.CONFLICT]: 409,
|
|
180
|
-
[IdentitySessionErrorCodes.INTERNAL_ERROR]: 500,
|
|
181
|
-
[IdentitySessionErrorCodes.SERVICE_UNAVAILABLE]: 503,
|
|
182
|
-
[IdentitySessionErrorCodes.TIMEOUT]: 408,
|
|
183
|
-
[IdentitySessionErrorCodes.NETWORK_ERROR]: 503,
|
|
184
|
-
[IdentitySessionErrorCodes.CONNECTION_FAILED]: 503,
|
|
185
|
-
[IdentitySessionErrorCodes.STORAGE_ERROR]: 500,
|
|
186
|
-
[IdentitySessionErrorCodes.STORAGE_NOT_AVAILABLE]: 503,
|
|
187
|
-
[IdentitySessionErrorCodes.SECURE_STORAGE_NOT_AVAILABLE]: 503,
|
|
188
|
-
[IdentitySessionErrorCodes.UNKNOWN_ERROR]: 500,
|
|
189
|
-
};
|
|
190
|
-
|
|
191
|
-
return new IdentitySessionError(
|
|
192
|
-
message || defaultMessages[code],
|
|
193
|
-
code,
|
|
194
|
-
statusCode || defaultStatusCodes[code]
|
|
195
|
-
);
|
|
196
|
-
}
|
|
197
|
-
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Identity Session Core
|
|
3
|
-
*
|
|
4
|
-
* Main entry point for identity and session management
|
|
5
|
-
*/
|
|
6
|
-
|
|
7
|
-
export { IdentitySessionCore } from './IdentitySessionCore';
|
|
8
|
-
export { IdentityManager } from './IdentityManager';
|
|
9
|
-
export { SessionManager } from './SessionManager';
|
|
10
|
-
export { DeviceManager } from './DeviceManager';
|
|
11
|
-
export { RefreshManager } from './RefreshManager';
|
|
12
|
-
export { createIdentitySessionCore } from './createIdentitySessionCore';
|
|
13
|
-
export * from './types';
|
|
14
|
-
export * from './errors';
|
|
15
|
-
|
|
@@ -1,188 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Core Identity and Session Types
|
|
3
|
-
*
|
|
4
|
-
* These types are aligned with backend models (IUser, ISession) to ensure
|
|
5
|
-
* consistency across the entire ecosystem.
|
|
6
|
-
*/
|
|
7
|
-
|
|
8
|
-
/**
|
|
9
|
-
* Identity - Aligned with IUser from backend
|
|
10
|
-
* Represents a user's cryptographic identity
|
|
11
|
-
*/
|
|
12
|
-
export interface Identity {
|
|
13
|
-
id: string; // MongoDB ObjectId (24 hex chars) - PRIMARY IDENTIFIER
|
|
14
|
-
publicKey: string; // ECDSA secp256k1 public key (130 hex chars) - LOOKUP KEY
|
|
15
|
-
username?: string;
|
|
16
|
-
email?: string;
|
|
17
|
-
avatar?: string; // file id
|
|
18
|
-
verified?: boolean;
|
|
19
|
-
language?: string;
|
|
20
|
-
privacySettings?: {
|
|
21
|
-
isPrivateAccount?: boolean;
|
|
22
|
-
hideOnlineStatus?: boolean;
|
|
23
|
-
hideLastSeen?: boolean;
|
|
24
|
-
profileVisibility?: boolean;
|
|
25
|
-
loginAlerts?: boolean;
|
|
26
|
-
blockScreenshots?: boolean;
|
|
27
|
-
login?: boolean;
|
|
28
|
-
biometricLogin?: boolean;
|
|
29
|
-
showActivity?: boolean;
|
|
30
|
-
allowTagging?: boolean;
|
|
31
|
-
allowMentions?: boolean;
|
|
32
|
-
hideReadReceipts?: boolean;
|
|
33
|
-
allowDirectMessages?: boolean;
|
|
34
|
-
dataSharing?: boolean;
|
|
35
|
-
locationSharing?: boolean;
|
|
36
|
-
analyticsSharing?: boolean;
|
|
37
|
-
sensitiveContent?: boolean;
|
|
38
|
-
autoFilter?: boolean;
|
|
39
|
-
muteKeywords?: boolean;
|
|
40
|
-
[key: string]: unknown;
|
|
41
|
-
};
|
|
42
|
-
name?: {
|
|
43
|
-
first?: string;
|
|
44
|
-
last?: string;
|
|
45
|
-
full?: string; // virtual, not stored in DB
|
|
46
|
-
[key: string]: unknown;
|
|
47
|
-
};
|
|
48
|
-
bio?: string;
|
|
49
|
-
description?: string;
|
|
50
|
-
locations?: Array<{
|
|
51
|
-
id: string;
|
|
52
|
-
name: string;
|
|
53
|
-
label?: string;
|
|
54
|
-
type?: 'home' | 'work' | 'school' | 'other';
|
|
55
|
-
address?: {
|
|
56
|
-
street?: string;
|
|
57
|
-
streetNumber?: string;
|
|
58
|
-
streetDetails?: string;
|
|
59
|
-
postalCode?: string;
|
|
60
|
-
city?: string;
|
|
61
|
-
state?: string;
|
|
62
|
-
country?: string;
|
|
63
|
-
formattedAddress?: string;
|
|
64
|
-
};
|
|
65
|
-
coordinates?: {
|
|
66
|
-
lat: number;
|
|
67
|
-
lon: number;
|
|
68
|
-
};
|
|
69
|
-
metadata?: {
|
|
70
|
-
placeId?: string;
|
|
71
|
-
osmId?: string;
|
|
72
|
-
osmType?: string;
|
|
73
|
-
countryCode?: string;
|
|
74
|
-
timezone?: string;
|
|
75
|
-
};
|
|
76
|
-
createdAt?: string;
|
|
77
|
-
updatedAt?: string;
|
|
78
|
-
}>;
|
|
79
|
-
links?: string[];
|
|
80
|
-
linksMetadata?: Array<{
|
|
81
|
-
url: string;
|
|
82
|
-
title: string;
|
|
83
|
-
description: string;
|
|
84
|
-
image?: string;
|
|
85
|
-
}>;
|
|
86
|
-
_count?: {
|
|
87
|
-
followers?: number;
|
|
88
|
-
following?: number;
|
|
89
|
-
};
|
|
90
|
-
accountExpiresAfterInactivityDays?: number | null;
|
|
91
|
-
createdAt?: string;
|
|
92
|
-
updatedAt?: string;
|
|
93
|
-
[key: string]: unknown;
|
|
94
|
-
}
|
|
95
|
-
|
|
96
|
-
/**
|
|
97
|
-
* Session - Aligned with ISession from backend
|
|
98
|
-
* Represents an active user session
|
|
99
|
-
*/
|
|
100
|
-
export interface Session {
|
|
101
|
-
sessionId: string; // UUID
|
|
102
|
-
userId: string; // MongoDB ObjectId (never publicKey)
|
|
103
|
-
deviceId: string;
|
|
104
|
-
expiresAt: string; // ISO date string
|
|
105
|
-
lastActive: string; // ISO date string
|
|
106
|
-
deviceInfo: DeviceInfo;
|
|
107
|
-
isActive?: boolean;
|
|
108
|
-
accessToken?: string;
|
|
109
|
-
refreshToken?: string;
|
|
110
|
-
isCurrent?: boolean;
|
|
111
|
-
}
|
|
112
|
-
|
|
113
|
-
/**
|
|
114
|
-
* DeviceInfo - Aligned with ISession.deviceInfo
|
|
115
|
-
*/
|
|
116
|
-
export interface DeviceInfo {
|
|
117
|
-
deviceName?: string;
|
|
118
|
-
deviceType: string; // mobile, desktop, tablet, etc.
|
|
119
|
-
platform: string; // ios, android, web, etc.
|
|
120
|
-
browser?: string;
|
|
121
|
-
os?: string;
|
|
122
|
-
lastActive: string; // ISO date string
|
|
123
|
-
ipAddress?: string;
|
|
124
|
-
userAgent?: string;
|
|
125
|
-
location?: string;
|
|
126
|
-
fingerprint?: string;
|
|
127
|
-
}
|
|
128
|
-
|
|
129
|
-
/**
|
|
130
|
-
* Device - Represents device information
|
|
131
|
-
*/
|
|
132
|
-
export interface Device {
|
|
133
|
-
deviceId: string;
|
|
134
|
-
deviceName?: string;
|
|
135
|
-
deviceType: string;
|
|
136
|
-
platform: string;
|
|
137
|
-
browser?: string;
|
|
138
|
-
os?: string;
|
|
139
|
-
fingerprint?: string;
|
|
140
|
-
createdAt?: string;
|
|
141
|
-
updatedAt?: string;
|
|
142
|
-
}
|
|
143
|
-
|
|
144
|
-
/**
|
|
145
|
-
* DeviceSession - Aligned with backend device session model
|
|
146
|
-
*/
|
|
147
|
-
export interface DeviceSession {
|
|
148
|
-
deviceId: string;
|
|
149
|
-
deviceName?: string;
|
|
150
|
-
deviceType: string;
|
|
151
|
-
platform: string;
|
|
152
|
-
browser?: string;
|
|
153
|
-
os?: string;
|
|
154
|
-
lastActive: string;
|
|
155
|
-
fingerprint?: string;
|
|
156
|
-
createdAt?: string;
|
|
157
|
-
updatedAt?: string;
|
|
158
|
-
}
|
|
159
|
-
|
|
160
|
-
/**
|
|
161
|
-
* BackupData - Encrypted backup data for identity
|
|
162
|
-
*/
|
|
163
|
-
export interface BackupData {
|
|
164
|
-
encrypted: string; // Base64-encoded encrypted private key
|
|
165
|
-
salt: string; // Hex-encoded salt used for key derivation
|
|
166
|
-
iv: string; // Hex-encoded initialization vector
|
|
167
|
-
publicKey: string; // Public key associated with the encrypted private key
|
|
168
|
-
}
|
|
169
|
-
|
|
170
|
-
/**
|
|
171
|
-
* IdentitySessionEvent - Events emitted by the core
|
|
172
|
-
*/
|
|
173
|
-
export type IdentitySessionEvent =
|
|
174
|
-
| { type: 'identity:created'; identity: Identity }
|
|
175
|
-
| { type: 'identity:imported'; identity: Identity }
|
|
176
|
-
| { type: 'identity:deleted' }
|
|
177
|
-
| { type: 'identity:synced'; identity: Identity }
|
|
178
|
-
| { type: 'session:created'; session: Session }
|
|
179
|
-
| { type: 'session:refreshed'; session: Session }
|
|
180
|
-
| { type: 'session:invalidated'; sessionId: string }
|
|
181
|
-
| { type: 'session:all-invalidated' }
|
|
182
|
-
| { type: 'device:changed'; device: Device };
|
|
183
|
-
|
|
184
|
-
/**
|
|
185
|
-
* Platform type
|
|
186
|
-
*/
|
|
187
|
-
export type Platform = 'native' | 'web' | 'node';
|
|
188
|
-
|
package/src/crypto/README.md
DELETED
|
@@ -1,142 +0,0 @@
|
|
|
1
|
-
# Oxy Crypto Module
|
|
2
|
-
|
|
3
|
-
This module provides cryptographic operations for the Oxy ecosystem, supporting both React Native and Node.js environments.
|
|
4
|
-
|
|
5
|
-
## Architecture
|
|
6
|
-
|
|
7
|
-
The crypto module is organized into several layers:
|
|
8
|
-
|
|
9
|
-
### Core Layer (`core.ts`)
|
|
10
|
-
Platform-agnostic cryptographic functions that work everywhere:
|
|
11
|
-
- Signature verification using elliptic curve cryptography
|
|
12
|
-
- Public/private key validation
|
|
13
|
-
- Message formatting (auth, registration, requests)
|
|
14
|
-
- Utility functions (shortenPublicKey, derivePublicKey, etc.)
|
|
15
|
-
|
|
16
|
-
### Platform-Specific Implementations
|
|
17
|
-
|
|
18
|
-
#### React Native (`signatureService.ts`, `keyManager.ts`)
|
|
19
|
-
- **KeyManager**: Manages ECDSA key pairs with secure storage via Expo SecureStore
|
|
20
|
-
- ⚠️ **For Oxy Accounts app only** - Not intended for third-party apps
|
|
21
|
-
- Handles key generation, import, backup, and secure retrieval
|
|
22
|
-
- Private keys never leave the device
|
|
23
|
-
|
|
24
|
-
- **SignatureService**: Provides async signing and verification
|
|
25
|
-
- Uses `expo-crypto` for hashing in React Native
|
|
26
|
-
- Falls back to Node.js crypto when available
|
|
27
|
-
- Suitable for both React Native and Node.js environments
|
|
28
|
-
|
|
29
|
-
#### Node.js (`node/signatureService.ts`)
|
|
30
|
-
- Optimized synchronous signature operations for backend
|
|
31
|
-
- Uses Node's `crypto` module directly for better performance
|
|
32
|
-
- Exports same API as React Native version for consistency
|
|
33
|
-
|
|
34
|
-
## Usage
|
|
35
|
-
|
|
36
|
-
### In React Native / Accounts App
|
|
37
|
-
|
|
38
|
-
```typescript
|
|
39
|
-
import { KeyManager, SignatureService } from '@oxyhq/services/crypto';
|
|
40
|
-
|
|
41
|
-
// Create identity (Accounts app only)
|
|
42
|
-
const publicKey = await KeyManager.createIdentity();
|
|
43
|
-
|
|
44
|
-
// Sign a challenge
|
|
45
|
-
const signature = await SignatureService.sign(message);
|
|
46
|
-
|
|
47
|
-
// Verify a signature
|
|
48
|
-
const isValid = await SignatureService.verify(message, signature, publicKey);
|
|
49
|
-
```
|
|
50
|
-
|
|
51
|
-
### In Node.js Backend
|
|
52
|
-
|
|
53
|
-
```typescript
|
|
54
|
-
import { SignatureService } from '@oxyhq/services/node';
|
|
55
|
-
|
|
56
|
-
// Generate challenge
|
|
57
|
-
const challenge = SignatureService.generateChallenge();
|
|
58
|
-
|
|
59
|
-
// Verify signature (synchronous)
|
|
60
|
-
const isValid = SignatureService.verifyChallengeResponse(
|
|
61
|
-
publicKey,
|
|
62
|
-
challenge,
|
|
63
|
-
signature,
|
|
64
|
-
timestamp
|
|
65
|
-
);
|
|
66
|
-
```
|
|
67
|
-
|
|
68
|
-
### In Third-Party Apps (Services SDK)
|
|
69
|
-
|
|
70
|
-
Third-party apps should **not** use KeyManager directly. Instead, use the authentication flows provided by the OxyServices class:
|
|
71
|
-
|
|
72
|
-
```typescript
|
|
73
|
-
import { OxyServices } from '@oxyhq/services';
|
|
74
|
-
|
|
75
|
-
const oxy = new OxyServices({ baseURL: 'https://api.oxy.so' });
|
|
76
|
-
|
|
77
|
-
// Request authentication (shows QR code / deep link)
|
|
78
|
-
// User approves in Oxy Accounts app
|
|
79
|
-
// Returns session when approved
|
|
80
|
-
const session = await oxy.requestAuth({ appId: 'my-app' });
|
|
81
|
-
```
|
|
82
|
-
|
|
83
|
-
## Security Considerations
|
|
84
|
-
|
|
85
|
-
### Message Formats
|
|
86
|
-
All signed messages follow specific formats to prevent replay attacks:
|
|
87
|
-
|
|
88
|
-
- **Authentication**: `auth:{publicKey}:{challenge}:{timestamp}`
|
|
89
|
-
- **Registration**: `oxy:register:{publicKey}:{timestamp}`
|
|
90
|
-
- **API Requests**: `request:{publicKey}:{timestamp}:{canonicalData}`
|
|
91
|
-
|
|
92
|
-
Timestamps must be within 5 minutes to be valid.
|
|
93
|
-
|
|
94
|
-
### Key Storage
|
|
95
|
-
- Private keys are stored in device secure storage (iOS Keychain, Android Keystore)
|
|
96
|
-
- Never transmitted or exposed outside the device
|
|
97
|
-
- Only the Oxy Accounts app has access to private keys
|
|
98
|
-
|
|
99
|
-
### Backup Encryption
|
|
100
|
-
⚠️ **Current Implementation**: The backup encryption currently uses a custom XOR scheme with key stretching. This is functional but not optimal.
|
|
101
|
-
|
|
102
|
-
📋 **Planned Improvement**: Migrate to standard AES-256-GCM encryption for better security and interoperability.
|
|
103
|
-
|
|
104
|
-
## Separation of Concerns
|
|
105
|
-
|
|
106
|
-
### Oxy Accounts App
|
|
107
|
-
- Owns and manages the user's private key
|
|
108
|
-
- Handles identity creation, backup, and recovery
|
|
109
|
-
- Signs authentication challenges
|
|
110
|
-
- Uses `KeyManager` and `SignatureService`
|
|
111
|
-
|
|
112
|
-
### Services SDK / Third-Party Apps
|
|
113
|
-
- Does NOT generate or store private keys
|
|
114
|
-
- Displays QR codes and deep links for authentication
|
|
115
|
-
- Polls server for authentication status
|
|
116
|
-
- Uses `OxyServices` class for API communication
|
|
117
|
-
|
|
118
|
-
### API Backend
|
|
119
|
-
- Generates challenges
|
|
120
|
-
- Verifies signatures using public keys
|
|
121
|
-
- Manages sessions and user data
|
|
122
|
-
- Uses `SignatureService` from `@oxyhq/services/node`
|
|
123
|
-
|
|
124
|
-
## Migration from Old Signature Service
|
|
125
|
-
|
|
126
|
-
The API previously had a duplicate `signature.service.ts` file. This has been replaced with a re-export from `@oxyhq/services/node` to ensure consistency and eliminate duplication.
|
|
127
|
-
|
|
128
|
-
If you're maintaining code that imports from the old location, it will continue to work as the file now re-exports from the shared module.
|
|
129
|
-
|
|
130
|
-
## Testing
|
|
131
|
-
|
|
132
|
-
When making changes to crypto code:
|
|
133
|
-
1. Test in both React Native and Node.js environments
|
|
134
|
-
2. Verify signatures created in one environment can be verified in another
|
|
135
|
-
3. Check that timestamps are properly validated
|
|
136
|
-
4. Ensure message formats match exactly between client and server
|
|
137
|
-
|
|
138
|
-
## Further Reading
|
|
139
|
-
|
|
140
|
-
- [Public Key Authentication Guide](../docs/PUBLIC_KEY_AUTHENTICATION.md)
|
|
141
|
-
- [ECDSA on secp256k1](https://en.bitcoin.it/wiki/Secp256k1)
|
|
142
|
-
- [Expo SecureStore Documentation](https://docs.expo.dev/versions/latest/sdk/securestore/)
|