@rownd/react-native 0.2.4 → 2.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (253) hide show
  1. package/LICENSE +1 -2
  2. package/README.md +15 -52
  3. package/android/build.gradle +127 -37
  4. package/android/gradle.properties +5 -0
  5. package/android/src/main/AndroidManifest.xml +1 -1
  6. package/android/src/main/java/com/reactnativerowndplugin/RowndPluginModule.kt +98 -0
  7. package/android/src/main/java/com/reactnativerowndplugin/RowndPluginPackage.kt +16 -0
  8. package/ios/{ReactNative.xcodeproj → Rownd.xcodeproj}/project.pbxproj +13 -12
  9. package/ios/Rownd.xcodeproj/project.xcworkspace/contents.xcworkspacedata +4 -0
  10. package/ios/RowndPlugin-Bridging-Header.h +3 -0
  11. package/ios/RowndPlugin.m +26 -0
  12. package/ios/RowndPlugin.swift +83 -0
  13. package/ios/RowndPluginEventEmitter.m +12 -0
  14. package/ios/RowndPluginEventEmitter.swift +19 -0
  15. package/lib/commonjs/components/GlobalContext.js +30 -298
  16. package/lib/commonjs/components/GlobalContext.js.map +1 -1
  17. package/lib/commonjs/components/{BottomSheetTextInput/types.js → GlobalContext.types.js} +1 -1
  18. package/lib/commonjs/components/GlobalContext.types.js.map +1 -0
  19. package/lib/commonjs/constants/action.js +13 -0
  20. package/lib/commonjs/constants/action.js.map +1 -0
  21. package/lib/commonjs/hooks/rownd.js +15 -146
  22. package/lib/commonjs/hooks/rownd.js.map +1 -1
  23. package/lib/commonjs/index.js +2 -12
  24. package/lib/commonjs/index.js.map +1 -1
  25. package/lib/commonjs/reducer/rowndReducer.js +89 -0
  26. package/lib/commonjs/reducer/rowndReducer.js.map +1 -0
  27. package/lib/commonjs/utils/config.js +0 -26
  28. package/lib/commonjs/utils/config.js.map +1 -1
  29. package/lib/commonjs/utils/nativeModule.js +72 -0
  30. package/lib/commonjs/utils/nativeModule.js.map +1 -0
  31. package/lib/module/components/GlobalContext.js +29 -293
  32. package/lib/module/components/GlobalContext.js.map +1 -1
  33. package/lib/module/components/GlobalContext.types.js +2 -0
  34. package/lib/module/components/GlobalContext.types.js.map +1 -0
  35. package/lib/module/constants/action.js +6 -0
  36. package/lib/module/constants/action.js.map +1 -0
  37. package/lib/module/hooks/rownd.js +12 -137
  38. package/lib/module/hooks/rownd.js.map +1 -1
  39. package/lib/module/index.js +2 -4
  40. package/lib/module/index.js.map +1 -1
  41. package/lib/module/reducer/rowndReducer.js +78 -0
  42. package/lib/module/reducer/rowndReducer.js.map +1 -0
  43. package/lib/module/utils/config.js +1 -16
  44. package/lib/module/utils/config.js.map +1 -1
  45. package/lib/module/utils/nativeModule.js +48 -0
  46. package/lib/module/utils/nativeModule.js.map +1 -0
  47. package/lib/typescript/components/GlobalContext.d.ts +13 -0
  48. package/lib/typescript/{src/components/GlobalContext.d.ts → components/GlobalContext.types.d.ts} +9 -35
  49. package/lib/typescript/constants/action.d.ts +7 -0
  50. package/lib/typescript/{src/hooks → hooks}/rownd.d.ts +10 -13
  51. package/lib/typescript/index.d.ts +3 -0
  52. package/lib/typescript/reducer/rowndReducer.d.ts +4 -0
  53. package/lib/typescript/utils/config.d.ts +10 -0
  54. package/lib/typescript/utils/nativeModule.d.ts +10 -0
  55. package/package.json +36 -56
  56. package/rownd-react-native.podspec +36 -0
  57. package/src/components/GlobalContext.tsx +44 -457
  58. package/src/components/GlobalContext.types.ts +105 -0
  59. package/src/constants/action.ts +8 -0
  60. package/src/hooks/rownd.ts +29 -147
  61. package/src/index.tsx +2 -4
  62. package/src/reducer/rowndReducer.ts +78 -0
  63. package/src/utils/config.ts +0 -27
  64. package/src/utils/nativeModule.ts +69 -0
  65. package/android/src/main/java/com/reactnative/ReactNativePackage.java +0 -22
  66. package/android/src/main/java/com/reactnative/ReactNativeViewManager.java +0 -31
  67. package/ios/ReactNativeViewManager.m +0 -34
  68. package/lib/commonjs/assets/images/checkmark--filled.svg +0 -12
  69. package/lib/commonjs/assets/images/email-verify-waiting.svg +0 -36
  70. package/lib/commonjs/assets/images/error-icon-material.svg +0 -1
  71. package/lib/commonjs/assets/images/phone-verify-waiting.svg +0 -26
  72. package/lib/commonjs/components/AuthenticatedComponent.js +0 -35
  73. package/lib/commonjs/components/AuthenticatedComponent.js.map +0 -1
  74. package/lib/commonjs/components/AutoSigninDialog.js +0 -132
  75. package/lib/commonjs/components/AutoSigninDialog.js.map +0 -1
  76. package/lib/commonjs/components/BottomSheetTextInput/BottomSheetTextInput.js +0 -65
  77. package/lib/commonjs/components/BottomSheetTextInput/BottomSheetTextInput.js.map +0 -1
  78. package/lib/commonjs/components/BottomSheetTextInput/index.js +0 -24
  79. package/lib/commonjs/components/BottomSheetTextInput/index.js.map +0 -1
  80. package/lib/commonjs/components/BottomSheetTextInput/types.js.map +0 -1
  81. package/lib/commonjs/components/DarkText.js +0 -35
  82. package/lib/commonjs/components/DarkText.js.map +0 -1
  83. package/lib/commonjs/components/DefaultContext.js +0 -266
  84. package/lib/commonjs/components/DefaultContext.js.map +0 -1
  85. package/lib/commonjs/components/RowndComponents.js +0 -25
  86. package/lib/commonjs/components/RowndComponents.js.map +0 -1
  87. package/lib/commonjs/components/RowndProvider.js +0 -55
  88. package/lib/commonjs/components/RowndProvider.js.map +0 -1
  89. package/lib/commonjs/components/SignIn.js +0 -638
  90. package/lib/commonjs/components/SignIn.js.map +0 -1
  91. package/lib/commonjs/components/images/CheckmarkFilled.js +0 -40
  92. package/lib/commonjs/components/images/CheckmarkFilled.js.map +0 -1
  93. package/lib/commonjs/components/images/EmailVerifyWaiting.js +0 -100
  94. package/lib/commonjs/components/images/EmailVerifyWaiting.js.map +0 -1
  95. package/lib/commonjs/components/images/ErrorIcon.js +0 -31
  96. package/lib/commonjs/components/images/ErrorIcon.js.map +0 -1
  97. package/lib/commonjs/components/images/PhoneVerifyWaiting.js +0 -91
  98. package/lib/commonjs/components/images/PhoneVerifyWaiting.js.map +0 -1
  99. package/lib/commonjs/data/actions.js +0 -26
  100. package/lib/commonjs/data/actions.js.map +0 -1
  101. package/lib/commonjs/hooks/api.js +0 -155
  102. package/lib/commonjs/hooks/api.js.map +0 -1
  103. package/lib/commonjs/hooks/debounce.js +0 -38
  104. package/lib/commonjs/hooks/debounce.js.map +0 -1
  105. package/lib/commonjs/hooks/fingerprint.js +0 -176
  106. package/lib/commonjs/hooks/fingerprint.js.map +0 -1
  107. package/lib/commonjs/hooks/index.js +0 -48
  108. package/lib/commonjs/hooks/index.js.map +0 -1
  109. package/lib/commonjs/hooks/interval.js +0 -31
  110. package/lib/commonjs/hooks/interval.js.map +0 -1
  111. package/lib/commonjs/hooks/nav.js +0 -39
  112. package/lib/commonjs/hooks/nav.js.map +0 -1
  113. package/lib/commonjs/index.tsx.bak +0 -26
  114. package/lib/commonjs/types.js +0 -2
  115. package/lib/commonjs/types.js.map +0 -1
  116. package/lib/commonjs/utils/events.js +0 -57
  117. package/lib/commonjs/utils/events.js.map +0 -1
  118. package/lib/commonjs/utils/form.js +0 -46
  119. package/lib/commonjs/utils/form.js.map +0 -1
  120. package/lib/commonjs/utils/queue.js +0 -117
  121. package/lib/commonjs/utils/queue.js.map +0 -1
  122. package/lib/commonjs/utils/storage.js +0 -15
  123. package/lib/commonjs/utils/storage.js.map +0 -1
  124. package/lib/commonjs/utils/tokens.js +0 -35
  125. package/lib/commonjs/utils/tokens.js.map +0 -1
  126. package/lib/commonjs/utils/user-data.js +0 -21
  127. package/lib/commonjs/utils/user-data.js.map +0 -1
  128. package/lib/module/assets/images/checkmark--filled.svg +0 -12
  129. package/lib/module/assets/images/email-verify-waiting.svg +0 -36
  130. package/lib/module/assets/images/error-icon-material.svg +0 -1
  131. package/lib/module/assets/images/phone-verify-waiting.svg +0 -26
  132. package/lib/module/components/AuthenticatedComponent.js +0 -24
  133. package/lib/module/components/AuthenticatedComponent.js.map +0 -1
  134. package/lib/module/components/AutoSigninDialog.js +0 -110
  135. package/lib/module/components/AutoSigninDialog.js.map +0 -1
  136. package/lib/module/components/BottomSheetTextInput/BottomSheetTextInput.js +0 -52
  137. package/lib/module/components/BottomSheetTextInput/BottomSheetTextInput.js.map +0 -1
  138. package/lib/module/components/BottomSheetTextInput/index.js +0 -5
  139. package/lib/module/components/BottomSheetTextInput/index.js.map +0 -1
  140. package/lib/module/components/BottomSheetTextInput/types.js +0 -2
  141. package/lib/module/components/BottomSheetTextInput/types.js.map +0 -1
  142. package/lib/module/components/DarkText.js +0 -24
  143. package/lib/module/components/DarkText.js.map +0 -1
  144. package/lib/module/components/DefaultContext.js +0 -244
  145. package/lib/module/components/DefaultContext.js.map +0 -1
  146. package/lib/module/components/RowndComponents.js +0 -12
  147. package/lib/module/components/RowndComponents.js.map +0 -1
  148. package/lib/module/components/RowndProvider.js +0 -39
  149. package/lib/module/components/RowndProvider.js.map +0 -1
  150. package/lib/module/components/SignIn.js +0 -610
  151. package/lib/module/components/SignIn.js.map +0 -1
  152. package/lib/module/components/images/CheckmarkFilled.js +0 -27
  153. package/lib/module/components/images/CheckmarkFilled.js.map +0 -1
  154. package/lib/module/components/images/EmailVerifyWaiting.js +0 -87
  155. package/lib/module/components/images/EmailVerifyWaiting.js.map +0 -1
  156. package/lib/module/components/images/ErrorIcon.js +0 -18
  157. package/lib/module/components/images/ErrorIcon.js.map +0 -1
  158. package/lib/module/components/images/PhoneVerifyWaiting.js +0 -78
  159. package/lib/module/components/images/PhoneVerifyWaiting.js.map +0 -1
  160. package/lib/module/data/actions.js +0 -19
  161. package/lib/module/data/actions.js.map +0 -1
  162. package/lib/module/hooks/api.js +0 -135
  163. package/lib/module/hooks/api.js.map +0 -1
  164. package/lib/module/hooks/debounce.js +0 -29
  165. package/lib/module/hooks/debounce.js.map +0 -1
  166. package/lib/module/hooks/fingerprint.js +0 -157
  167. package/lib/module/hooks/fingerprint.js.map +0 -1
  168. package/lib/module/hooks/index.js +0 -7
  169. package/lib/module/hooks/index.js.map +0 -1
  170. package/lib/module/hooks/interval.js +0 -23
  171. package/lib/module/hooks/interval.js.map +0 -1
  172. package/lib/module/hooks/nav.js +0 -30
  173. package/lib/module/hooks/nav.js.map +0 -1
  174. package/lib/module/index.tsx.bak +0 -26
  175. package/lib/module/types.js +0 -2
  176. package/lib/module/types.js.map +0 -1
  177. package/lib/module/utils/events.js +0 -45
  178. package/lib/module/utils/events.js.map +0 -1
  179. package/lib/module/utils/form.js +0 -34
  180. package/lib/module/utils/form.js.map +0 -1
  181. package/lib/module/utils/queue.js +0 -109
  182. package/lib/module/utils/queue.js.map +0 -1
  183. package/lib/module/utils/storage.js +0 -6
  184. package/lib/module/utils/storage.js.map +0 -1
  185. package/lib/module/utils/tokens.js +0 -24
  186. package/lib/module/utils/tokens.js.map +0 -1
  187. package/lib/module/utils/user-data.js +0 -14
  188. package/lib/module/utils/user-data.js.map +0 -1
  189. package/lib/package.json +0 -173
  190. package/lib/typescript/src/components/AuthenticatedComponent.d.ts +0 -7
  191. package/lib/typescript/src/components/AutoSigninDialog.d.ts +0 -2
  192. package/lib/typescript/src/components/BottomSheetTextInput/BottomSheetTextInput.d.ts +0 -4
  193. package/lib/typescript/src/components/BottomSheetTextInput/index.d.ts +0 -2
  194. package/lib/typescript/src/components/BottomSheetTextInput/types.d.ts +0 -3
  195. package/lib/typescript/src/components/DarkText.d.ts +0 -3
  196. package/lib/typescript/src/components/DefaultContext.d.ts +0 -12
  197. package/lib/typescript/src/components/RowndComponents.d.ts +0 -2
  198. package/lib/typescript/src/components/RowndProvider.d.ts +0 -8
  199. package/lib/typescript/src/components/SignIn.d.ts +0 -2
  200. package/lib/typescript/src/components/images/CheckmarkFilled.d.ts +0 -4
  201. package/lib/typescript/src/components/images/EmailVerifyWaiting.d.ts +0 -4
  202. package/lib/typescript/src/components/images/ErrorIcon.d.ts +0 -4
  203. package/lib/typescript/src/components/images/PhoneVerifyWaiting.d.ts +0 -4
  204. package/lib/typescript/src/data/actions.d.ts +0 -20
  205. package/lib/typescript/src/hooks/api.d.ts +0 -12
  206. package/lib/typescript/src/hooks/debounce.d.ts +0 -5
  207. package/lib/typescript/src/hooks/fingerprint.d.ts +0 -12
  208. package/lib/typescript/src/hooks/index.d.ts +0 -6
  209. package/lib/typescript/src/hooks/interval.d.ts +0 -2
  210. package/lib/typescript/src/hooks/nav.d.ts +0 -6
  211. package/lib/typescript/src/index.d.ts +0 -4
  212. package/lib/typescript/src/types.d.ts +0 -26
  213. package/lib/typescript/src/utils/config.d.ts +0 -18
  214. package/lib/typescript/src/utils/events.d.ts +0 -22
  215. package/lib/typescript/src/utils/form.d.ts +0 -18
  216. package/lib/typescript/src/utils/queue.d.ts +0 -21
  217. package/lib/typescript/src/utils/storage.d.ts +0 -3
  218. package/lib/typescript/src/utils/tokens.d.ts +0 -4
  219. package/lib/typescript/src/utils/user-data.d.ts +0 -3
  220. package/react-native.podspec +0 -19
  221. package/src/assets/images/checkmark--filled.svg +0 -12
  222. package/src/assets/images/email-verify-waiting.svg +0 -36
  223. package/src/assets/images/error-icon-material.svg +0 -1
  224. package/src/assets/images/phone-verify-waiting.svg +0 -26
  225. package/src/components/AuthenticatedComponent.tsx +0 -30
  226. package/src/components/AutoSigninDialog.tsx +0 -131
  227. package/src/components/BottomSheetTextInput/BottomSheetTextInput.tsx +0 -57
  228. package/src/components/BottomSheetTextInput/index.ts +0 -5
  229. package/src/components/BottomSheetTextInput/types.ts +0 -3
  230. package/src/components/DarkText.tsx +0 -16
  231. package/src/components/DefaultContext.tsx +0 -278
  232. package/src/components/RowndComponents.tsx +0 -18
  233. package/src/components/RowndProvider.tsx +0 -56
  234. package/src/components/SignIn.tsx +0 -793
  235. package/src/components/images/CheckmarkFilled.tsx +0 -30
  236. package/src/components/images/EmailVerifyWaiting.tsx +0 -95
  237. package/src/components/images/ErrorIcon.tsx +0 -11
  238. package/src/components/images/PhoneVerifyWaiting.tsx +0 -74
  239. package/src/data/actions.ts +0 -21
  240. package/src/hooks/api.ts +0 -162
  241. package/src/hooks/debounce.ts +0 -36
  242. package/src/hooks/fingerprint.ts +0 -217
  243. package/src/hooks/index.ts +0 -7
  244. package/src/hooks/interval.ts +0 -25
  245. package/src/hooks/nav.tsx +0 -29
  246. package/src/index.tsx.bak +0 -26
  247. package/src/types.ts +0 -27
  248. package/src/utils/events.ts +0 -54
  249. package/src/utils/form.tsx +0 -64
  250. package/src/utils/queue.ts +0 -75
  251. package/src/utils/storage.ts +0 -7
  252. package/src/utils/tokens.ts +0 -26
  253. package/src/utils/user-data.ts +0 -15
@@ -1,157 +0,0 @@
1
- import DeviceInfo from 'react-native-device-info';
2
- import { useEffect, useCallback } from 'react';
3
- import useApi from './api';
4
- import { useGlobalContext } from '../components/GlobalContext';
5
- import storage from '../utils/storage';
6
- import { sha256 } from 'react-native-sha256';
7
- let isFingerprintingInProgress = false;
8
- export default function () {
9
- var _state$user5, _state$user5$data, _state$user6, _state$user6$data, _state$user9, _state$user9$data, _state$user10, _state$user10$data;
10
-
11
- const {
12
- state
13
- } = useGlobalContext();
14
- const {
15
- client: api
16
- } = useApi();
17
- /**
18
- * Computes hashes for all possible lookup fields values coupled with the app ID
19
- * @param appId
20
- * @param rawLookupValues
21
- * @returns array of challenge hashes
22
- */
23
-
24
- async function computePossibleChallengeLookupValues(appId, rawLookupValues) {
25
- const lookupHashes = [];
26
-
27
- for (const value of rawLookupValues) {
28
- lookupHashes.push(await sha256(`${appId}:${value}`));
29
- }
30
-
31
- return lookupHashes;
32
- }
33
- /**
34
- * Looks for a challenge in storage based on presented lookup values
35
- */
36
-
37
-
38
- const getChallengeIfPresent = useCallback(async (appId, challengeLookupValues) => {
39
- if (!appId) {
40
- return null;
41
- }
42
-
43
- const challenges = JSON.parse(storage.getString('challenges') || '{}');
44
-
45
- if (!Object.keys(challenges).length) {
46
- return null;
47
- }
48
-
49
- let challengeKey = '';
50
- let challengeValue = '';
51
-
52
- for (const value of challengeLookupValues) {
53
- const hash = await sha256(`${appId}:${value}`);
54
- const challenge = Object.entries(challenges).find(_ref => {
55
- let [, hashes] = _ref;
56
- return hashes.includes(hash);
57
- });
58
-
59
- if (challenge) {
60
- challengeKey = hash;
61
- challengeValue = challenge[0];
62
- break;
63
- }
64
- }
65
-
66
- if (!challengeKey || !challengeValue) {
67
- return null;
68
- }
69
-
70
- return {
71
- key: challengeKey,
72
- value: challengeValue
73
- };
74
- }, []);
75
- const getFingerprint = useCallback(async () => {
76
- const visitorId = DeviceInfo.getDeviceId();
77
- return {
78
- visitorId
79
- };
80
- }, []);
81
- const registerFingerprint = useCallback(async () => {
82
- if (!state.auth.access_token || !state.auth.is_verified_user || !state.app.id || isFingerprintingInProgress) {
83
- return;
84
- }
85
-
86
- isFingerprintingInProgress = true;
87
-
88
- try {
89
- var _state$user, _state$user$data, _state$user2, _state$user2$data, _state$user3, _state$user3$data, _state$user4, _state$user4$data;
90
-
91
- // Check for existing challenge
92
- const challengeEntry = await getChallengeIfPresent(state.app.id, [(_state$user = state.user) === null || _state$user === void 0 ? void 0 : (_state$user$data = _state$user.data) === null || _state$user$data === void 0 ? void 0 : _state$user$data.email, (_state$user2 = state.user) === null || _state$user2 === void 0 ? void 0 : (_state$user2$data = _state$user2.data) === null || _state$user2$data === void 0 ? void 0 : _state$user2$data.phone_number].filter(Boolean));
93
- const fingerprint = await getFingerprint();
94
- const payload = await api.post('hub/auth/fingerprints', {
95
- headers: {
96
- Authorization: `Bearer ${state.auth.access_token}`
97
- },
98
- json: {
99
- hash: fingerprint.visitorId,
100
- challenge: (challengeEntry === null || challengeEntry === void 0 ? void 0 : challengeEntry.value) || null // Might exist from a previous run, in which case this request will be a no-op
101
-
102
- }
103
- }).json();
104
-
105
- if (payload.challenge === (challengeEntry === null || challengeEntry === void 0 ? void 0 : challengeEntry.key)) {
106
- // This is a no-op
107
- console.debug('Fingerprint already registered');
108
- return;
109
- } // Save the challenge for future sign-ins if we don't have one already or we got a new one from the server
110
-
111
-
112
- const challengeLookupHashes = await computePossibleChallengeLookupValues(state.app.id, [(_state$user3 = state.user) === null || _state$user3 === void 0 ? void 0 : (_state$user3$data = _state$user3.data) === null || _state$user3$data === void 0 ? void 0 : _state$user3$data.email, (_state$user4 = state.user) === null || _state$user4 === void 0 ? void 0 : (_state$user4$data = _state$user4.data) === null || _state$user4$data === void 0 ? void 0 : _state$user4$data.phone_number].filter(Boolean));
113
-
114
- if (payload.challenge && challengeLookupHashes.length > 0) {
115
- const challenges = JSON.parse(storage.getString('challenges') || '{}');
116
- storage.set('challenges', JSON.stringify({ ...challenges,
117
- [payload.challenge]: challengeLookupHashes
118
- }));
119
- }
120
- } catch (err) {
121
- console.warn('Failed to register fingerprint', err);
122
- } finally {
123
- isFingerprintingInProgress = false;
124
- }
125
- }, [api, state.app.id, state.auth.access_token, state.auth.is_verified_user, (_state$user5 = state.user) === null || _state$user5 === void 0 ? void 0 : (_state$user5$data = _state$user5.data) === null || _state$user5$data === void 0 ? void 0 : _state$user5$data.email, (_state$user6 = state.user) === null || _state$user6 === void 0 ? void 0 : (_state$user6$data = _state$user6.data) === null || _state$user6$data === void 0 ? void 0 : _state$user6$data.phone_number, getChallengeIfPresent, getFingerprint]);
126
- const clearFingerprint = useCallback(challenge => {
127
- const challenges = JSON.parse(storage.getString('challenges') || '{}');
128
- delete challenges[challenge];
129
- storage.set('challenges', JSON.stringify(challenges));
130
- }, []);
131
- useEffect(() => {
132
- if (!state.auth.access_token) {
133
- return;
134
- }
135
-
136
- (async () => {
137
- var _state$user7, _state$user7$data, _state$user8, _state$user8$data;
138
-
139
- // If already fingerprinted, don't try again
140
- const existingChallenge = await getChallengeIfPresent(state.app.id, [(_state$user7 = state.user) === null || _state$user7 === void 0 ? void 0 : (_state$user7$data = _state$user7.data) === null || _state$user7$data === void 0 ? void 0 : _state$user7$data.email, (_state$user8 = state.user) === null || _state$user8 === void 0 ? void 0 : (_state$user8$data = _state$user8.data) === null || _state$user8$data === void 0 ? void 0 : _state$user8$data.phone_number].filter(Boolean)); // Don't need to re-register a fingerprint if we already have one registered
141
-
142
- if (existingChallenge) {
143
- console.debug('Found existing challenge, so not requesting fingerprint registration.');
144
- return;
145
- } // We have an access token, so we can use it to get the fingerprint
146
-
147
-
148
- registerFingerprint();
149
- })();
150
- }, [getChallengeIfPresent, registerFingerprint, state.app.id, state.auth.access_token, (_state$user9 = state.user) === null || _state$user9 === void 0 ? void 0 : (_state$user9$data = _state$user9.data) === null || _state$user9$data === void 0 ? void 0 : _state$user9$data.email, (_state$user10 = state.user) === null || _state$user10 === void 0 ? void 0 : (_state$user10$data = _state$user10.data) === null || _state$user10$data === void 0 ? void 0 : _state$user10$data.phone_number]);
151
- return {
152
- getFingerprint,
153
- getChallengeIfPresent,
154
- clearFingerprint
155
- };
156
- }
157
- //# sourceMappingURL=fingerprint.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["DeviceInfo","useEffect","useCallback","useApi","useGlobalContext","storage","sha256","isFingerprintingInProgress","state","client","api","computePossibleChallengeLookupValues","appId","rawLookupValues","lookupHashes","value","push","getChallengeIfPresent","challengeLookupValues","challenges","JSON","parse","getString","Object","keys","length","challengeKey","challengeValue","hash","challenge","entries","find","hashes","includes","key","getFingerprint","visitorId","getDeviceId","registerFingerprint","auth","access_token","is_verified_user","app","id","challengeEntry","user","data","email","phone_number","filter","Boolean","fingerprint","payload","post","headers","Authorization","json","console","debug","challengeLookupHashes","set","stringify","err","warn","clearFingerprint","existingChallenge"],"sources":["fingerprint.ts"],"sourcesContent":["import DeviceInfo from 'react-native-device-info';\nimport { useEffect, useCallback } from 'react';\nimport useApi from './api';\nimport { useGlobalContext } from '../components/GlobalContext';\nimport storage from '../utils/storage';\nimport { sha256 } from 'react-native-sha256';\n\ninterface IFingerprint {\n message: string;\n hash: string;\n challenge: string;\n}\n\ninterface IChallenge {\n key: string;\n value: string;\n}\n\nlet isFingerprintingInProgress = false;\n\nexport default function () {\n const { state } = useGlobalContext();\n const { client: api } = useApi();\n\n /**\n * Computes hashes for all possible lookup fields values coupled with the app ID\n * @param appId\n * @param rawLookupValues\n * @returns array of challenge hashes\n */\n async function computePossibleChallengeLookupValues(\n appId: string,\n rawLookupValues: string[]\n ): Promise<string[]> {\n const lookupHashes = [];\n for (const value of rawLookupValues) {\n lookupHashes.push(await sha256(`${appId}:${value}`));\n }\n return lookupHashes;\n }\n\n /**\n * Looks for a challenge in storage based on presented lookup values\n */\n const getChallengeIfPresent = useCallback(\n async (\n appId: string | undefined,\n challengeLookupValues: string[]\n ): Promise<IChallenge | null> => {\n if (!appId) {\n return null;\n }\n\n const challenges: Record<string, string[]> = JSON.parse(\n storage.getString('challenges') || '{}'\n );\n\n if (!Object.keys(challenges).length) {\n return null;\n }\n\n let challengeKey = '';\n let challengeValue = '';\n for (const value of challengeLookupValues) {\n const hash = await sha256(`${appId}:${value}`);\n const challenge = Object.entries(challenges).find(([, hashes]) =>\n hashes.includes(hash)\n );\n\n if (challenge) {\n challengeKey = hash;\n challengeValue = challenge[0];\n break;\n }\n }\n\n if (!challengeKey || !challengeValue) {\n return null;\n }\n\n return {\n key: challengeKey,\n value: challengeValue,\n };\n },\n []\n );\n\n const getFingerprint = useCallback(async () => {\n const visitorId = DeviceInfo.getDeviceId();\n\n return {\n visitorId,\n };\n }, []);\n\n const registerFingerprint = useCallback(async () => {\n if (\n !state.auth.access_token ||\n !state.auth.is_verified_user ||\n !state.app.id ||\n isFingerprintingInProgress\n ) {\n return;\n }\n\n isFingerprintingInProgress = true;\n\n try {\n // Check for existing challenge\n const challengeEntry = await getChallengeIfPresent(\n state.app.id,\n [state.user?.data?.email, state.user?.data?.phone_number].filter(\n Boolean\n )\n );\n\n const fingerprint = await getFingerprint();\n const payload: IFingerprint = await api\n .post('hub/auth/fingerprints', {\n headers: {\n Authorization: `Bearer ${state.auth.access_token}`,\n },\n json: {\n hash: fingerprint.visitorId,\n challenge: challengeEntry?.value || null, // Might exist from a previous run, in which case this request will be a no-op\n },\n })\n .json();\n\n if (payload.challenge === challengeEntry?.key) {\n // This is a no-op\n console.debug('Fingerprint already registered');\n return;\n }\n\n // Save the challenge for future sign-ins if we don't have one already or we got a new one from the server\n const challengeLookupHashes = await computePossibleChallengeLookupValues(\n state.app.id,\n [state.user?.data?.email, state.user?.data?.phone_number].filter(\n Boolean\n )\n );\n if (payload.challenge && challengeLookupHashes.length > 0) {\n const challenges = JSON.parse(storage.getString('challenges') || '{}');\n storage.set(\n 'challenges',\n JSON.stringify({\n ...challenges,\n [payload.challenge]: challengeLookupHashes,\n })\n );\n }\n } catch (err) {\n console.warn('Failed to register fingerprint', err);\n } finally {\n isFingerprintingInProgress = false;\n }\n }, [\n api,\n state.app.id,\n state.auth.access_token,\n state.auth.is_verified_user,\n state.user?.data?.email,\n state.user?.data?.phone_number,\n getChallengeIfPresent,\n getFingerprint,\n ]);\n\n const clearFingerprint = useCallback((challenge: string) => {\n const challenges: Record<string, string[]> = JSON.parse(\n storage.getString('challenges') || '{}'\n );\n delete challenges[challenge];\n storage.set('challenges', JSON.stringify(challenges));\n }, []);\n\n useEffect(() => {\n if (!state.auth.access_token) {\n return;\n }\n\n (async () => {\n // If already fingerprinted, don't try again\n const existingChallenge = await getChallengeIfPresent(\n state.app.id,\n [state.user?.data?.email, state.user?.data?.phone_number].filter(\n Boolean\n )\n );\n\n // Don't need to re-register a fingerprint if we already have one registered\n if (existingChallenge) {\n console.debug(\n 'Found existing challenge, so not requesting fingerprint registration.'\n );\n return;\n }\n\n // We have an access token, so we can use it to get the fingerprint\n registerFingerprint();\n })();\n }, [\n getChallengeIfPresent,\n registerFingerprint,\n state.app.id,\n state.auth.access_token,\n state.user?.data?.email,\n state.user?.data?.phone_number,\n ]);\n\n return {\n getFingerprint,\n getChallengeIfPresent,\n clearFingerprint,\n };\n}\n"],"mappings":"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"}
@@ -1,7 +0,0 @@
1
- import useApi from './api';
2
- import useDebounce from './debounce';
3
- import useInterval from './interval';
4
- import useNav from './nav';
5
- import useDeviceFingerprint from './fingerprint';
6
- export { useApi, useDebounce, useInterval, useNav, useDeviceFingerprint };
7
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["useApi","useDebounce","useInterval","useNav","useDeviceFingerprint"],"sources":["index.ts"],"sourcesContent":["import useApi from './api';\nimport useDebounce from './debounce';\nimport useInterval from './interval';\nimport useNav from './nav';\nimport useDeviceFingerprint from './fingerprint';\n\nexport { useApi, useDebounce, useInterval, useNav, useDeviceFingerprint };\n"],"mappings":"AAAA,OAAOA,MAAP,MAAmB,OAAnB;AACA,OAAOC,WAAP,MAAwB,YAAxB;AACA,OAAOC,WAAP,MAAwB,YAAxB;AACA,OAAOC,MAAP,MAAmB,OAAnB;AACA,OAAOC,oBAAP,MAAiC,eAAjC;AAEA,SAASJ,MAAT,EAAiBC,WAAjB,EAA8BC,WAA9B,EAA2CC,MAA3C,EAAmDC,oBAAnD"}
@@ -1,23 +0,0 @@
1
- import { useEffect, useLayoutEffect, useRef } from 'react';
2
-
3
- function useInterval(callback, delay) {
4
- const savedCallback = useRef(callback); // Remember the latest callback if it changes.
5
-
6
- useLayoutEffect(() => {
7
- savedCallback.current = callback;
8
- }, [callback]); // Set up the interval.
9
-
10
- useEffect(() => {
11
- // Don't schedule if no delay is specified.
12
- // Note: 0 is a valid value for delay.
13
- if (!delay && delay !== 0) {
14
- return;
15
- }
16
-
17
- const id = setInterval(() => savedCallback.current(), delay);
18
- return () => clearInterval(id);
19
- }, [delay]);
20
- }
21
-
22
- export default useInterval;
23
- //# sourceMappingURL=interval.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["useEffect","useLayoutEffect","useRef","useInterval","callback","delay","savedCallback","current","id","setInterval","clearInterval"],"sources":["interval.ts"],"sourcesContent":["import { useEffect, useLayoutEffect, useRef } from 'react';\n\nfunction useInterval(callback: () => void, delay: number | null) {\n const savedCallback = useRef(callback);\n\n // Remember the latest callback if it changes.\n useLayoutEffect(() => {\n savedCallback.current = callback;\n }, [callback]);\n\n // Set up the interval.\n useEffect(() => {\n // Don't schedule if no delay is specified.\n // Note: 0 is a valid value for delay.\n if (!delay && delay !== 0) {\n return;\n }\n\n const id = setInterval(() => savedCallback.current(), delay);\n\n return () => clearInterval(id);\n }, [delay]);\n}\n\nexport default useInterval;\n"],"mappings":"AAAA,SAASA,SAAT,EAAoBC,eAApB,EAAqCC,MAArC,QAAmD,OAAnD;;AAEA,SAASC,WAAT,CAAqBC,QAArB,EAA2CC,KAA3C,EAAiE;EAC/D,MAAMC,aAAa,GAAGJ,MAAM,CAACE,QAAD,CAA5B,CAD+D,CAG/D;;EACAH,eAAe,CAAC,MAAM;IACpBK,aAAa,CAACC,OAAd,GAAwBH,QAAxB;EACD,CAFc,EAEZ,CAACA,QAAD,CAFY,CAAf,CAJ+D,CAQ/D;;EACAJ,SAAS,CAAC,MAAM;IACd;IACA;IACA,IAAI,CAACK,KAAD,IAAUA,KAAK,KAAK,CAAxB,EAA2B;MACzB;IACD;;IAED,MAAMG,EAAE,GAAGC,WAAW,CAAC,MAAMH,aAAa,CAACC,OAAd,EAAP,EAAgCF,KAAhC,CAAtB;IAEA,OAAO,MAAMK,aAAa,CAACF,EAAD,CAA1B;EACD,CAVQ,EAUN,CAACH,KAAD,CAVM,CAAT;AAWD;;AAED,eAAeF,WAAf"}
@@ -1,30 +0,0 @@
1
- import { useGlobalContext } from '../components/GlobalContext';
2
- import { ActionType } from '../data/actions';
3
- export default function useNav() {
4
- const {
5
- dispatch
6
- } = useGlobalContext();
7
- return _ref => {
8
- let {
9
- route,
10
- hide
11
- } = _ref;
12
-
13
- if (hide) {
14
- dispatch({
15
- type: ActionType.SET_CONTAINER_VISIBLE,
16
- payload: {
17
- isVisible: false
18
- }
19
- });
20
- } else if (route) {
21
- dispatch({
22
- type: ActionType.CHANGE_ROUTE,
23
- payload: {
24
- current_route: route
25
- }
26
- });
27
- }
28
- };
29
- }
30
- //# sourceMappingURL=nav.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["useGlobalContext","ActionType","useNav","dispatch","route","hide","type","SET_CONTAINER_VISIBLE","payload","isVisible","CHANGE_ROUTE","current_route"],"sources":["nav.tsx"],"sourcesContent":["import { useGlobalContext } from '../components/GlobalContext';\nimport { ActionType } from '../data/actions';\n\ninterface INavOpts {\n route?: string;\n hide?: boolean;\n}\n\nexport default function useNav() {\n const { dispatch } = useGlobalContext();\n\n return ({ route, hide }: INavOpts) => {\n if (hide) {\n dispatch({\n type: ActionType.SET_CONTAINER_VISIBLE,\n payload: {\n isVisible: false,\n },\n });\n } else if (route) {\n dispatch({\n type: ActionType.CHANGE_ROUTE,\n payload: {\n current_route: route,\n },\n });\n }\n };\n}\n"],"mappings":"AAAA,SAASA,gBAAT,QAAiC,6BAAjC;AACA,SAASC,UAAT,QAA2B,iBAA3B;AAOA,eAAe,SAASC,MAAT,GAAkB;EAC/B,MAAM;IAAEC;EAAF,IAAeH,gBAAgB,EAArC;EAEA,OAAO,QAA+B;IAAA,IAA9B;MAAEI,KAAF;MAASC;IAAT,CAA8B;;IACpC,IAAIA,IAAJ,EAAU;MACRF,QAAQ,CAAC;QACPG,IAAI,EAAEL,UAAU,CAACM,qBADV;QAEPC,OAAO,EAAE;UACPC,SAAS,EAAE;QADJ;MAFF,CAAD,CAAR;IAMD,CAPD,MAOO,IAAIL,KAAJ,EAAW;MAChBD,QAAQ,CAAC;QACPG,IAAI,EAAEL,UAAU,CAACS,YADV;QAEPF,OAAO,EAAE;UACPG,aAAa,EAAEP;QADR;MAFF,CAAD,CAAR;IAMD;EACF,CAhBD;AAiBD"}
@@ -1,26 +0,0 @@
1
- import {
2
- requireNativeComponent,
3
- UIManager,
4
- Platform,
5
- ViewStyle,
6
- } from 'react-native';
7
-
8
- const LINKING_ERROR =
9
- `The package '@rownd/react-native' doesn't seem to be linked. Make sure: \n\n` +
10
- Platform.select({ ios: "- You have run 'pod install'\n", default: '' }) +
11
- '- You rebuilt the app after installing the package\n' +
12
- '- You are not using Expo managed workflow\n';
13
-
14
- type ReactNativeProps = {
15
- color: string;
16
- style: ViewStyle;
17
- };
18
-
19
- const ComponentName = 'ReactNativeView';
20
-
21
- export const ReactNativeView =
22
- UIManager.getViewManagerConfig(ComponentName) != null
23
- ? requireNativeComponent<ReactNativeProps>(ComponentName)
24
- : () => {
25
- throw new Error(LINKING_ERROR);
26
- };
@@ -1,2 +0,0 @@
1
-
2
- //# sourceMappingURL=types.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":[],"sources":["types.ts"],"sourcesContent":["export type TRowndContext = {\n requestSignIn: Function;\n signOut: Function;\n getAccessToken: Function;\n is_authenticated: boolean;\n is_initializing: boolean;\n access_token: string | null;\n auth: AuthContext;\n user: UserContext;\n};\n\ntype AuthContext = {\n access_token: string | null;\n app_id?: string;\n is_authenticated: boolean;\n is_verified_user?: boolean;\n};\n\ntype UserContext = {\n data: {\n id?: string;\n email?: string | null;\n phone?: string | null;\n [key: string]: any;\n };\n redacted_fields: string[];\n};\n"],"mappings":""}
@@ -1,45 +0,0 @@
1
- import EventEmitter from 'eventemitter3';
2
- const bus = new EventEmitter();
3
- export let EventType;
4
-
5
- (function (EventType) {
6
- EventType["AUTH"] = "auth";
7
- EventType["SIGN_OUT"] = "sign_out";
8
- EventType["USER_DATA"] = "user_data";
9
- EventType["USER_DATA_SAVED"] = "user_data_saved";
10
- })(EventType || (EventType = {}));
11
-
12
- export const events = {
13
- addEventListener: (type, callback, options) => {
14
- if (!Object.values(EventType).includes(type)) {
15
- console.warn(`Unknown event type: ${type}`);
16
- return;
17
- }
18
-
19
- let busFn = bus.on;
20
-
21
- if (options === true || options !== null && options !== void 0 && options.once) {
22
- busFn = bus.once;
23
- }
24
-
25
- busFn.apply(bus, [type, callback, options]);
26
- },
27
- removeEventListener: bus.removeListener,
28
- dispatchEvent: event => {
29
- if (!Object.values(EventType).includes(event.type)) {
30
- throw new Error(`Unknown event type: ${event.type}`);
31
- }
32
-
33
- return bus.emit(event.type, event.detail);
34
- },
35
-
36
- dispatch(type, data) {
37
- if (!Object.values(EventType).includes(type)) {
38
- throw new Error(`Unknown event type: ${type}`);
39
- }
40
-
41
- return bus.emit(type, data);
42
- }
43
-
44
- };
45
- //# sourceMappingURL=events.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["EventEmitter","bus","EventType","events","addEventListener","type","callback","options","Object","values","includes","console","warn","busFn","on","once","apply","removeEventListener","removeListener","dispatchEvent","event","Error","emit","detail","dispatch","data"],"sources":["events.ts"],"sourcesContent":["import EventEmitter from 'eventemitter3';\nconst bus = new EventEmitter();\n\nexport enum EventType {\n AUTH = 'auth',\n SIGN_OUT = 'sign_out',\n USER_DATA = 'user_data',\n USER_DATA_SAVED = 'user_data_saved',\n}\n\nexport type TAuthEvent = {\n access_token: string;\n user_id: string;\n app_id: string;\n};\n\ntype EventListenerOptions = {\n once?: boolean;\n};\n\nexport const events = {\n addEventListener: (\n type: string,\n callback: (...args: any[]) => void | null,\n options?: boolean | EventListenerOptions | undefined\n ): void => {\n if (!Object.values<string>(EventType).includes(type)) {\n console.warn(`Unknown event type: ${type}`);\n return;\n }\n\n let busFn = bus.on;\n if (options === true || (options as EventListenerOptions)?.once) {\n busFn = bus.once;\n }\n\n busFn.apply(bus, [type, callback, options]);\n },\n removeEventListener: bus.removeListener,\n dispatchEvent: (event: CustomEvent): boolean => {\n if (!Object.values<string>(EventType).includes(event.type)) {\n throw new Error(`Unknown event type: ${event.type}`);\n }\n\n return bus.emit(event.type, event.detail);\n },\n dispatch(type: EventType, data: any): boolean {\n if (!Object.values<string>(EventType).includes(type)) {\n throw new Error(`Unknown event type: ${type}`);\n }\n\n return bus.emit(type, data);\n },\n};\n"],"mappings":"AAAA,OAAOA,YAAP,MAAyB,eAAzB;AACA,MAAMC,GAAG,GAAG,IAAID,YAAJ,EAAZ;AAEA,WAAYE,SAAZ;;WAAYA,S;EAAAA,S;EAAAA,S;EAAAA,S;EAAAA,S;GAAAA,S,KAAAA,S;;AAiBZ,OAAO,MAAMC,MAAM,GAAG;EACpBC,gBAAgB,EAAE,CAChBC,IADgB,EAEhBC,QAFgB,EAGhBC,OAHgB,KAIP;IACT,IAAI,CAACC,MAAM,CAACC,MAAP,CAAsBP,SAAtB,EAAiCQ,QAAjC,CAA0CL,IAA1C,CAAL,EAAsD;MACpDM,OAAO,CAACC,IAAR,CAAc,uBAAsBP,IAAK,EAAzC;MACA;IACD;;IAED,IAAIQ,KAAK,GAAGZ,GAAG,CAACa,EAAhB;;IACA,IAAIP,OAAO,KAAK,IAAZ,IAAqBA,OAArB,aAAqBA,OAArB,eAAqBA,OAAD,CAAmCQ,IAA3D,EAAiE;MAC/DF,KAAK,GAAGZ,GAAG,CAACc,IAAZ;IACD;;IAEDF,KAAK,CAACG,KAAN,CAAYf,GAAZ,EAAiB,CAACI,IAAD,EAAOC,QAAP,EAAiBC,OAAjB,CAAjB;EACD,CAjBmB;EAkBpBU,mBAAmB,EAAEhB,GAAG,CAACiB,cAlBL;EAmBpBC,aAAa,EAAGC,KAAD,IAAiC;IAC9C,IAAI,CAACZ,MAAM,CAACC,MAAP,CAAsBP,SAAtB,EAAiCQ,QAAjC,CAA0CU,KAAK,CAACf,IAAhD,CAAL,EAA4D;MAC1D,MAAM,IAAIgB,KAAJ,CAAW,uBAAsBD,KAAK,CAACf,IAAK,EAA5C,CAAN;IACD;;IAED,OAAOJ,GAAG,CAACqB,IAAJ,CAASF,KAAK,CAACf,IAAf,EAAqBe,KAAK,CAACG,MAA3B,CAAP;EACD,CAzBmB;;EA0BpBC,QAAQ,CAACnB,IAAD,EAAkBoB,IAAlB,EAAsC;IAC5C,IAAI,CAACjB,MAAM,CAACC,MAAP,CAAsBP,SAAtB,EAAiCQ,QAAjC,CAA0CL,IAA1C,CAAL,EAAsD;MACpD,MAAM,IAAIgB,KAAJ,CAAW,uBAAsBhB,IAAK,EAAtC,CAAN;IACD;;IAED,OAAOJ,GAAG,CAACqB,IAAJ,CAASjB,IAAT,EAAeoB,IAAf,CAAP;EACD;;AAhCmB,CAAf"}
@@ -1,34 +0,0 @@
1
- import { Text, TextInput } from 'react-native';
2
- import { Picker } from '@react-native-picker/picker';
3
- import React from 'react';
4
- export function renderField(_ref) {
5
- var _options$;
6
-
7
- let {
8
- id,
9
- label = '',
10
- name,
11
- type = 'input',
12
- value,
13
- placeholder,
14
- options = null,
15
- onChange
16
- } = _ref;
17
-
18
- if (!id) {
19
- id = `rph-input-${name}`;
20
- }
21
-
22
- return /*#__PURE__*/React.createElement(React.Fragment, null, label && /*#__PURE__*/React.createElement(Text, null, label), type === 'select' && /*#__PURE__*/React.createElement(Picker, {
23
- onValueChange: onChange,
24
- selectedValue: value || (options === null || options === void 0 ? void 0 : (_options$ = options[0]) === null || _options$ === void 0 ? void 0 : _options$.value)
25
- }, options === null || options === void 0 ? void 0 : options.map(opt => /*#__PURE__*/React.createElement(Picker.Item, {
26
- value: opt.value,
27
- key: opt.value
28
- }, ' ', opt.label, ' '))), type === 'input' && /*#__PURE__*/React.createElement(TextInput, {
29
- value: value,
30
- placeholder: placeholder,
31
- onChangeText: onChange
32
- }));
33
- }
34
- //# sourceMappingURL=form.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["Text","TextInput","Picker","React","renderField","id","label","name","type","value","placeholder","options","onChange","map","opt"],"sources":["form.tsx"],"sourcesContent":["import { Text, TextInput } from 'react-native';\nimport { Picker } from '@react-native-picker/picker';\nimport React from 'react';\n\ntype FormFieldProps = {\n id?: string;\n name: string;\n value?: string;\n type?: string;\n label?: string;\n placeholder?: string;\n options?:\n | [\n {\n value: string;\n label: string;\n }\n ]\n | null;\n onChange?: (value: string) => void;\n};\n\nexport function renderField({\n id,\n label = '',\n name,\n type = 'input',\n value,\n placeholder,\n options = null,\n onChange,\n}: FormFieldProps) {\n if (!id) {\n id = `rph-input-${name}`;\n }\n\n return (\n <>\n {label && <Text>{label}</Text>}\n\n {type === 'select' && (\n <Picker\n onValueChange={onChange}\n selectedValue={value || options?.[0]?.value}\n >\n {options?.map((opt) => (\n <Picker.Item value={opt.value} key={opt.value}>\n {' '}\n {opt.label}{' '}\n </Picker.Item>\n ))}\n </Picker>\n )}\n\n {type === 'input' && (\n <TextInput\n value={value}\n placeholder={placeholder}\n onChangeText={onChange}\n />\n )}\n </>\n );\n}\n"],"mappings":"AAAA,SAASA,IAAT,EAAeC,SAAf,QAAgC,cAAhC;AACA,SAASC,MAAT,QAAuB,6BAAvB;AACA,OAAOC,KAAP,MAAkB,OAAlB;AAoBA,OAAO,SAASC,WAAT,OASY;EAAA;;EAAA,IATS;IAC1BC,EAD0B;IAE1BC,KAAK,GAAG,EAFkB;IAG1BC,IAH0B;IAI1BC,IAAI,GAAG,OAJmB;IAK1BC,KAL0B;IAM1BC,WAN0B;IAO1BC,OAAO,GAAG,IAPgB;IAQ1BC;EAR0B,CAST;;EACjB,IAAI,CAACP,EAAL,EAAS;IACPA,EAAE,GAAI,aAAYE,IAAK,EAAvB;EACD;;EAED,oBACE,0CACGD,KAAK,iBAAI,oBAAC,IAAD,QAAOA,KAAP,CADZ,EAGGE,IAAI,KAAK,QAAT,iBACC,oBAAC,MAAD;IACE,aAAa,EAAEI,QADjB;IAEE,aAAa,EAAEH,KAAK,KAAIE,OAAJ,aAAIA,OAAJ,oCAAIA,OAAO,CAAG,CAAH,CAAX,8CAAI,UAAcF,KAAlB;EAFtB,GAIGE,OAJH,aAIGA,OAJH,uBAIGA,OAAO,CAAEE,GAAT,CAAcC,GAAD,iBACZ,oBAAC,MAAD,CAAQ,IAAR;IAAa,KAAK,EAAEA,GAAG,CAACL,KAAxB;IAA+B,GAAG,EAAEK,GAAG,CAACL;EAAxC,GACG,GADH,EAEGK,GAAG,CAACR,KAFP,EAEc,GAFd,CADD,CAJH,CAJJ,EAiBGE,IAAI,KAAK,OAAT,iBACC,oBAAC,SAAD;IACE,KAAK,EAAEC,KADT;IAEE,WAAW,EAAEC,WAFf;IAGE,YAAY,EAAEE;EAHhB,EAlBJ,CADF;AA2BD"}
@@ -1,109 +0,0 @@
1
- function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
2
-
3
- function _classPrivateFieldInitSpec(obj, privateMap, value) { _checkPrivateRedeclaration(obj, privateMap); privateMap.set(obj, value); }
4
-
5
- function _checkPrivateRedeclaration(obj, privateCollection) { if (privateCollection.has(obj)) { throw new TypeError("Cannot initialize the same private elements twice on an object"); } }
6
-
7
- function _classPrivateFieldGet(receiver, privateMap) { var descriptor = _classExtractFieldDescriptor(receiver, privateMap, "get"); return _classApplyDescriptorGet(receiver, descriptor); }
8
-
9
- function _classApplyDescriptorGet(receiver, descriptor) { if (descriptor.get) { return descriptor.get.call(receiver); } return descriptor.value; }
10
-
11
- function _classPrivateFieldSet(receiver, privateMap, value) { var descriptor = _classExtractFieldDescriptor(receiver, privateMap, "set"); _classApplyDescriptorSet(receiver, descriptor, value); return value; }
12
-
13
- function _classExtractFieldDescriptor(receiver, privateMap, action) { if (!privateMap.has(receiver)) { throw new TypeError("attempted to " + action + " private field on non-instance"); } return privateMap.get(receiver); }
14
-
15
- function _classApplyDescriptorSet(receiver, descriptor, value) { if (descriptor.set) { descriptor.set.call(receiver, value); } else { if (!descriptor.writable) { throw new TypeError("attempted to set read only private field"); } descriptor.value = value; } }
16
-
17
- // import { logger } from "./utils/log";
18
- let count = 0;
19
-
20
- var _items = /*#__PURE__*/new WeakMap();
21
-
22
- class Queue {
23
- constructor() {
24
- _classPrivateFieldInitSpec(this, _items, {
25
- writable: true,
26
- value: void 0
27
- });
28
-
29
- _classPrivateFieldSet(this, _items, []);
30
- }
31
-
32
- enqueue(item) {
33
- _classPrivateFieldGet(this, _items).push(item);
34
- }
35
-
36
- dequeue() {
37
- return _classPrivateFieldGet(this, _items).shift();
38
- }
39
-
40
- get size() {
41
- return _classPrivateFieldGet(this, _items).length;
42
- }
43
-
44
- }
45
-
46
- var _pendingPromise = /*#__PURE__*/new WeakMap();
47
-
48
- class AutoQueue extends Queue {
49
- constructor() {
50
- super();
51
-
52
- _defineProperty(this, "_cache", void 0);
53
-
54
- _classPrivateFieldInitSpec(this, _pendingPromise, {
55
- writable: true,
56
- value: void 0
57
- });
58
-
59
- _classPrivateFieldSet(this, _pendingPromise, false);
60
-
61
- this._cache = {};
62
- }
63
-
64
- enqueue(action) {
65
- return new Promise((resolve, reject) => {
66
- super.enqueue({
67
- action,
68
- resolve,
69
- reject,
70
- count: count++
71
- }); // logger.log('queued', count);
72
-
73
- this.dequeue();
74
- });
75
- }
76
-
77
- async dequeue() {
78
- if (_classPrivateFieldGet(this, _pendingPromise)) return false;
79
- const item = super.dequeue();
80
-
81
- if (!item) {
82
- this._cache = {};
83
- return false;
84
- } // logger.log('dequeued', item.count);
85
-
86
-
87
- try {
88
- _classPrivateFieldSet(this, _pendingPromise, true);
89
-
90
- const payload = await item.action(this);
91
-
92
- _classPrivateFieldSet(this, _pendingPromise, false);
93
-
94
- item.resolve(payload);
95
- } catch (e) {
96
- _classPrivateFieldSet(this, _pendingPromise, false);
97
-
98
- item.reject(e);
99
- } finally {
100
- this.dequeue();
101
- }
102
-
103
- return true;
104
- }
105
-
106
- }
107
-
108
- export default AutoQueue;
109
- //# sourceMappingURL=queue.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["count","Queue","constructor","enqueue","item","push","dequeue","shift","size","length","AutoQueue","_cache","action","Promise","resolve","reject","payload","e"],"sources":["queue.ts"],"sourcesContent":["// import { logger } from \"./utils/log\";\n\nlet count = 0;\n\ntype QueueItem = {\n action: () => Promise<any>;\n resolve: (value?: any) => void;\n reject: (reason?: any) => void;\n count: number;\n};\n\nclass Queue {\n #_items: any[];\n constructor() {\n this.#_items = [];\n }\n enqueue(item: QueueItem | (() => Promise<any>)) {\n this.#_items.push(item);\n }\n dequeue(): any {\n return this.#_items.shift();\n }\n get size() {\n return this.#_items.length;\n }\n}\n\nclass AutoQueue<T> extends Queue {\n _cache: Record<string, unknown>;\n #_pendingPromise: boolean;\n constructor() {\n super();\n this.#_pendingPromise = false;\n this._cache = {};\n }\n\n enqueue(action: () => Promise<any>): Promise<T> {\n return new Promise((resolve, reject) => {\n super.enqueue({ action, resolve, reject, count: count++ });\n // logger.log('queued', count);\n this.dequeue();\n });\n }\n\n async dequeue() {\n if (this.#_pendingPromise) return false;\n\n const item = super.dequeue();\n\n if (!item) {\n this._cache = {};\n return false;\n }\n\n // logger.log('dequeued', item.count);\n\n try {\n this.#_pendingPromise = true;\n\n const payload = await item.action(this);\n\n this.#_pendingPromise = false;\n item.resolve(payload);\n } catch (e) {\n this.#_pendingPromise = false;\n item.reject(e);\n } finally {\n this.dequeue();\n }\n\n return true;\n }\n}\n\nexport default AutoQueue;\n"],"mappings":";;;;;;;;;;;;;;;;AAAA;AAEA,IAAIA,KAAK,GAAG,CAAZ;;;;AASA,MAAMC,KAAN,CAAY;EAEVC,WAAW,GAAG;IAAA;MAAA;MAAA;IAAA;;IACZ,oCAAe,EAAf;EACD;;EACDC,OAAO,CAACC,IAAD,EAAyC;IAC9C,oCAAaC,IAAb,CAAkBD,IAAlB;EACD;;EACDE,OAAO,GAAQ;IACb,OAAO,oCAAaC,KAAb,EAAP;EACD;;EACO,IAAJC,IAAI,GAAG;IACT,OAAO,oCAAaC,MAApB;EACD;;AAbS;;;;AAgBZ,MAAMC,SAAN,SAA2BT,KAA3B,CAAiC;EAG/BC,WAAW,GAAG;IACZ;;IADY;;IAAA;MAAA;MAAA;IAAA;;IAEZ,6CAAwB,KAAxB;;IACA,KAAKS,MAAL,GAAc,EAAd;EACD;;EAEDR,OAAO,CAACS,MAAD,EAAyC;IAC9C,OAAO,IAAIC,OAAJ,CAAY,CAACC,OAAD,EAAUC,MAAV,KAAqB;MACtC,MAAMZ,OAAN,CAAc;QAAES,MAAF;QAAUE,OAAV;QAAmBC,MAAnB;QAA2Bf,KAAK,EAAEA,KAAK;MAAvC,CAAd,EADsC,CAEtC;;MACA,KAAKM,OAAL;IACD,CAJM,CAAP;EAKD;;EAEY,MAAPA,OAAO,GAAG;IACd,0BAAI,IAAJ,oBAA2B,OAAO,KAAP;IAE3B,MAAMF,IAAI,GAAG,MAAME,OAAN,EAAb;;IAEA,IAAI,CAACF,IAAL,EAAW;MACT,KAAKO,MAAL,GAAc,EAAd;MACA,OAAO,KAAP;IACD,CARa,CAUd;;;IAEA,IAAI;MACF,6CAAwB,IAAxB;;MAEA,MAAMK,OAAO,GAAG,MAAMZ,IAAI,CAACQ,MAAL,CAAY,IAAZ,CAAtB;;MAEA,6CAAwB,KAAxB;;MACAR,IAAI,CAACU,OAAL,CAAaE,OAAb;IACD,CAPD,CAOE,OAAOC,CAAP,EAAU;MACV,6CAAwB,KAAxB;;MACAb,IAAI,CAACW,MAAL,CAAYE,CAAZ;IACD,CAVD,SAUU;MACR,KAAKX,OAAL;IACD;;IAED,OAAO,IAAP;EACD;;AA5C8B;;AA+CjC,eAAeI,SAAf"}
@@ -1,6 +0,0 @@
1
- import { MMKV } from 'react-native-mmkv';
2
- const storage = new MMKV({
3
- id: 'rownd-storage'
4
- });
5
- export default storage;
6
- //# sourceMappingURL=storage.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["MMKV","storage","id"],"sources":["storage.ts"],"sourcesContent":["import { MMKV } from 'react-native-mmkv';\n\nconst storage = new MMKV({\n id: 'rownd-storage',\n});\n\nexport default storage;\n"],"mappings":"AAAA,SAASA,IAAT,QAAqB,mBAArB;AAEA,MAAMC,OAAO,GAAG,IAAID,IAAJ,CAAS;EACvBE,EAAE,EAAE;AADmB,CAAT,CAAhB;AAIA,eAAeD,OAAf"}
@@ -1,24 +0,0 @@
1
- import jwt_decode from 'jwt-decode';
2
-
3
- // Make sure token is always in a decoded form
4
- function normalizeToken(token) {
5
- if (typeof token === 'string') {
6
- return jwt_decode(token);
7
- }
8
-
9
- return token;
10
- }
11
-
12
- export function getAppId(token) {
13
- var _token, _token$aud, _token$aud$find;
14
-
15
- token = normalizeToken(token);
16
- return (_token = token) === null || _token === void 0 ? void 0 : (_token$aud = _token.aud) === null || _token$aud === void 0 ? void 0 : (_token$aud$find = _token$aud.find(aud => aud.startsWith('app:'))) === null || _token$aud$find === void 0 ? void 0 : _token$aud$find.substring(4);
17
- }
18
- export function getUserId(token) {
19
- var _token2;
20
-
21
- token = normalizeToken(token);
22
- return (_token2 = token) === null || _token2 === void 0 ? void 0 : _token2.sub;
23
- }
24
- //# sourceMappingURL=tokens.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["jwt_decode","normalizeToken","token","getAppId","aud","find","startsWith","substring","getUserId","sub"],"sources":["tokens.ts"],"sourcesContent":["import jwt_decode from 'jwt-decode';\n\ntype TokenInput = Record<string, any> | string;\n\n// Make sure token is always in a decoded form\nfunction normalizeToken(token: TokenInput): Record<string, any> {\n if (typeof token === 'string') {\n return jwt_decode(token);\n }\n\n return token;\n}\n\nexport function getAppId(token: TokenInput) {\n token = normalizeToken(token);\n\n return token?.aud\n ?.find((aud: string) => aud.startsWith('app:'))\n ?.substring(4);\n}\n\nexport function getUserId(token: TokenInput) {\n token = normalizeToken(token);\n\n return token?.sub;\n}\n"],"mappings":"AAAA,OAAOA,UAAP,MAAuB,YAAvB;;AAIA;AACA,SAASC,cAAT,CAAwBC,KAAxB,EAAgE;EAC9D,IAAI,OAAOA,KAAP,KAAiB,QAArB,EAA+B;IAC7B,OAAOF,UAAU,CAACE,KAAD,CAAjB;EACD;;EAED,OAAOA,KAAP;AACD;;AAED,OAAO,SAASC,QAAT,CAAkBD,KAAlB,EAAqC;EAAA;;EAC1CA,KAAK,GAAGD,cAAc,CAACC,KAAD,CAAtB;EAEA,iBAAOA,KAAP,yDAAO,OAAOE,GAAd,kEAAO,WACHC,IADG,CACGD,GAAD,IAAiBA,GAAG,CAACE,UAAJ,CAAe,MAAf,CADnB,CAAP,oDAAO,gBAEHC,SAFG,CAEO,CAFP,CAAP;AAGD;AAED,OAAO,SAASC,SAAT,CAAmBN,KAAnB,EAAsC;EAAA;;EAC3CA,KAAK,GAAGD,cAAc,CAACC,KAAD,CAAtB;EAEA,kBAAOA,KAAP,4CAAO,QAAOO,GAAd;AACD"}
@@ -1,14 +0,0 @@
1
- export function redactUserDataWithAcls(userData, acls) {
2
- if (!userData) {
3
- return {};
4
- }
5
-
6
- return Object.entries(userData).reduce((acc, _ref) => {
7
- var _acls$key;
8
-
9
- let [key, value] = _ref;
10
- acc[key] = !(acls !== null && acls !== void 0 && acls[key]) || acls !== null && acls !== void 0 && (_acls$key = acls[key]) !== null && _acls$key !== void 0 && _acls$key.shared ? value : 'ROWND_REDACTED';
11
- return acc;
12
- }, {});
13
- }
14
- //# sourceMappingURL=user-data.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["redactUserDataWithAcls","userData","acls","Object","entries","reduce","acc","key","value","shared"],"sources":["user-data.ts"],"sourcesContent":["export function redactUserDataWithAcls(\n userData: Record<string, any> | undefined | null,\n acls: Record<string, { shared: boolean }> | undefined | null\n): Record<string, any> {\n if (!userData) {\n return {};\n }\n return Object.entries(userData).reduce(\n (acc: Record<string, any>, [key, value]) => {\n acc[key] = !acls?.[key] || acls?.[key]?.shared ? value : 'ROWND_REDACTED';\n return acc;\n },\n {}\n );\n}\n"],"mappings":"AAAA,OAAO,SAASA,sBAAT,CACLC,QADK,EAELC,IAFK,EAGgB;EACrB,IAAI,CAACD,QAAL,EAAe;IACb,OAAO,EAAP;EACD;;EACD,OAAOE,MAAM,CAACC,OAAP,CAAeH,QAAf,EAAyBI,MAAzB,CACL,CAACC,GAAD,WAA4C;IAAA;;IAAA,IAAjB,CAACC,GAAD,EAAMC,KAAN,CAAiB;IAC1CF,GAAG,CAACC,GAAD,CAAH,GAAW,EAACL,IAAD,aAACA,IAAD,eAACA,IAAI,CAAGK,GAAH,CAAL,KAAgBL,IAAhB,aAAgBA,IAAhB,4BAAgBA,IAAI,CAAGK,GAAH,CAApB,sCAAgB,UAAaE,MAA7B,GAAsCD,KAAtC,GAA8C,gBAAzD;IACA,OAAOF,GAAP;EACD,CAJI,EAKL,EALK,CAAP;AAOD"}