@rownd/react-native 0.2.5 → 2.2.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 (252) hide show
  1. package/LICENSE +1 -2
  2. package/README.md +34 -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/RowndPlugin-Bridging-Header.h +3 -0
  10. package/ios/RowndPlugin.m +26 -0
  11. package/ios/RowndPlugin.swift +83 -0
  12. package/ios/RowndPluginEventEmitter.m +12 -0
  13. package/ios/RowndPluginEventEmitter.swift +19 -0
  14. package/lib/commonjs/components/GlobalContext.js +32 -298
  15. package/lib/commonjs/components/GlobalContext.js.map +1 -1
  16. package/lib/commonjs/components/{BottomSheetTextInput/types.js → GlobalContext.types.js} +1 -1
  17. package/lib/commonjs/components/GlobalContext.types.js.map +1 -0
  18. package/lib/commonjs/constants/action.js +13 -0
  19. package/lib/commonjs/constants/action.js.map +1 -0
  20. package/lib/commonjs/hooks/rownd.js +15 -146
  21. package/lib/commonjs/hooks/rownd.js.map +1 -1
  22. package/lib/commonjs/index.js +2 -12
  23. package/lib/commonjs/index.js.map +1 -1
  24. package/lib/commonjs/reducer/rowndReducer.js +89 -0
  25. package/lib/commonjs/reducer/rowndReducer.js.map +1 -0
  26. package/lib/commonjs/utils/config.js +0 -26
  27. package/lib/commonjs/utils/config.js.map +1 -1
  28. package/lib/commonjs/utils/nativeModule.js +72 -0
  29. package/lib/commonjs/utils/nativeModule.js.map +1 -0
  30. package/lib/module/components/GlobalContext.js +30 -293
  31. package/lib/module/components/GlobalContext.js.map +1 -1
  32. package/lib/module/components/GlobalContext.types.js +2 -0
  33. package/lib/module/components/GlobalContext.types.js.map +1 -0
  34. package/lib/module/constants/action.js +6 -0
  35. package/lib/module/constants/action.js.map +1 -0
  36. package/lib/module/hooks/rownd.js +12 -137
  37. package/lib/module/hooks/rownd.js.map +1 -1
  38. package/lib/module/index.js +2 -4
  39. package/lib/module/index.js.map +1 -1
  40. package/lib/module/reducer/rowndReducer.js +78 -0
  41. package/lib/module/reducer/rowndReducer.js.map +1 -0
  42. package/lib/module/utils/config.js +1 -16
  43. package/lib/module/utils/config.js.map +1 -1
  44. package/lib/module/utils/nativeModule.js +48 -0
  45. package/lib/module/utils/nativeModule.js.map +1 -0
  46. package/lib/typescript/components/GlobalContext.d.ts +13 -0
  47. package/lib/typescript/{src/components/GlobalContext.d.ts → components/GlobalContext.types.d.ts} +9 -35
  48. package/lib/typescript/constants/action.d.ts +7 -0
  49. package/lib/typescript/{src/hooks → hooks}/rownd.d.ts +10 -13
  50. package/lib/typescript/index.d.ts +3 -0
  51. package/lib/typescript/reducer/rowndReducer.d.ts +4 -0
  52. package/lib/typescript/utils/config.d.ts +10 -0
  53. package/lib/typescript/utils/nativeModule.d.ts +10 -0
  54. package/package.json +36 -56
  55. package/rownd-react-native.podspec +36 -0
  56. package/src/components/GlobalContext.tsx +47 -457
  57. package/src/components/GlobalContext.types.ts +105 -0
  58. package/src/constants/action.ts +8 -0
  59. package/src/hooks/rownd.ts +29 -147
  60. package/src/index.tsx +2 -4
  61. package/src/reducer/rowndReducer.ts +78 -0
  62. package/src/utils/config.ts +0 -27
  63. package/src/utils/nativeModule.ts +69 -0
  64. package/android/src/main/java/com/reactnative/ReactNativePackage.java +0 -22
  65. package/android/src/main/java/com/reactnative/ReactNativeViewManager.java +0 -31
  66. package/ios/ReactNativeViewManager.m +0 -34
  67. package/lib/commonjs/assets/images/checkmark--filled.svg +0 -12
  68. package/lib/commonjs/assets/images/email-verify-waiting.svg +0 -36
  69. package/lib/commonjs/assets/images/error-icon-material.svg +0 -1
  70. package/lib/commonjs/assets/images/phone-verify-waiting.svg +0 -26
  71. package/lib/commonjs/components/AuthenticatedComponent.js +0 -35
  72. package/lib/commonjs/components/AuthenticatedComponent.js.map +0 -1
  73. package/lib/commonjs/components/AutoSigninDialog.js +0 -132
  74. package/lib/commonjs/components/AutoSigninDialog.js.map +0 -1
  75. package/lib/commonjs/components/BottomSheetTextInput/BottomSheetTextInput.js +0 -65
  76. package/lib/commonjs/components/BottomSheetTextInput/BottomSheetTextInput.js.map +0 -1
  77. package/lib/commonjs/components/BottomSheetTextInput/index.js +0 -24
  78. package/lib/commonjs/components/BottomSheetTextInput/index.js.map +0 -1
  79. package/lib/commonjs/components/BottomSheetTextInput/types.js.map +0 -1
  80. package/lib/commonjs/components/DarkText.js +0 -35
  81. package/lib/commonjs/components/DarkText.js.map +0 -1
  82. package/lib/commonjs/components/DefaultContext.js +0 -266
  83. package/lib/commonjs/components/DefaultContext.js.map +0 -1
  84. package/lib/commonjs/components/RowndComponents.js +0 -25
  85. package/lib/commonjs/components/RowndComponents.js.map +0 -1
  86. package/lib/commonjs/components/RowndProvider.js +0 -55
  87. package/lib/commonjs/components/RowndProvider.js.map +0 -1
  88. package/lib/commonjs/components/SignIn.js +0 -644
  89. package/lib/commonjs/components/SignIn.js.map +0 -1
  90. package/lib/commonjs/components/images/CheckmarkFilled.js +0 -40
  91. package/lib/commonjs/components/images/CheckmarkFilled.js.map +0 -1
  92. package/lib/commonjs/components/images/EmailVerifyWaiting.js +0 -100
  93. package/lib/commonjs/components/images/EmailVerifyWaiting.js.map +0 -1
  94. package/lib/commonjs/components/images/ErrorIcon.js +0 -31
  95. package/lib/commonjs/components/images/ErrorIcon.js.map +0 -1
  96. package/lib/commonjs/components/images/PhoneVerifyWaiting.js +0 -91
  97. package/lib/commonjs/components/images/PhoneVerifyWaiting.js.map +0 -1
  98. package/lib/commonjs/data/actions.js +0 -26
  99. package/lib/commonjs/data/actions.js.map +0 -1
  100. package/lib/commonjs/hooks/api.js +0 -155
  101. package/lib/commonjs/hooks/api.js.map +0 -1
  102. package/lib/commonjs/hooks/debounce.js +0 -38
  103. package/lib/commonjs/hooks/debounce.js.map +0 -1
  104. package/lib/commonjs/hooks/fingerprint.js +0 -176
  105. package/lib/commonjs/hooks/fingerprint.js.map +0 -1
  106. package/lib/commonjs/hooks/index.js +0 -48
  107. package/lib/commonjs/hooks/index.js.map +0 -1
  108. package/lib/commonjs/hooks/interval.js +0 -31
  109. package/lib/commonjs/hooks/interval.js.map +0 -1
  110. package/lib/commonjs/hooks/nav.js +0 -39
  111. package/lib/commonjs/hooks/nav.js.map +0 -1
  112. package/lib/commonjs/index.tsx.bak +0 -26
  113. package/lib/commonjs/types.js +0 -2
  114. package/lib/commonjs/types.js.map +0 -1
  115. package/lib/commonjs/utils/events.js +0 -57
  116. package/lib/commonjs/utils/events.js.map +0 -1
  117. package/lib/commonjs/utils/form.js +0 -46
  118. package/lib/commonjs/utils/form.js.map +0 -1
  119. package/lib/commonjs/utils/queue.js +0 -117
  120. package/lib/commonjs/utils/queue.js.map +0 -1
  121. package/lib/commonjs/utils/storage.js +0 -15
  122. package/lib/commonjs/utils/storage.js.map +0 -1
  123. package/lib/commonjs/utils/tokens.js +0 -35
  124. package/lib/commonjs/utils/tokens.js.map +0 -1
  125. package/lib/commonjs/utils/user-data.js +0 -21
  126. package/lib/commonjs/utils/user-data.js.map +0 -1
  127. package/lib/module/assets/images/checkmark--filled.svg +0 -12
  128. package/lib/module/assets/images/email-verify-waiting.svg +0 -36
  129. package/lib/module/assets/images/error-icon-material.svg +0 -1
  130. package/lib/module/assets/images/phone-verify-waiting.svg +0 -26
  131. package/lib/module/components/AuthenticatedComponent.js +0 -24
  132. package/lib/module/components/AuthenticatedComponent.js.map +0 -1
  133. package/lib/module/components/AutoSigninDialog.js +0 -110
  134. package/lib/module/components/AutoSigninDialog.js.map +0 -1
  135. package/lib/module/components/BottomSheetTextInput/BottomSheetTextInput.js +0 -52
  136. package/lib/module/components/BottomSheetTextInput/BottomSheetTextInput.js.map +0 -1
  137. package/lib/module/components/BottomSheetTextInput/index.js +0 -5
  138. package/lib/module/components/BottomSheetTextInput/index.js.map +0 -1
  139. package/lib/module/components/BottomSheetTextInput/types.js +0 -2
  140. package/lib/module/components/BottomSheetTextInput/types.js.map +0 -1
  141. package/lib/module/components/DarkText.js +0 -24
  142. package/lib/module/components/DarkText.js.map +0 -1
  143. package/lib/module/components/DefaultContext.js +0 -244
  144. package/lib/module/components/DefaultContext.js.map +0 -1
  145. package/lib/module/components/RowndComponents.js +0 -12
  146. package/lib/module/components/RowndComponents.js.map +0 -1
  147. package/lib/module/components/RowndProvider.js +0 -39
  148. package/lib/module/components/RowndProvider.js.map +0 -1
  149. package/lib/module/components/SignIn.js +0 -616
  150. package/lib/module/components/SignIn.js.map +0 -1
  151. package/lib/module/components/images/CheckmarkFilled.js +0 -27
  152. package/lib/module/components/images/CheckmarkFilled.js.map +0 -1
  153. package/lib/module/components/images/EmailVerifyWaiting.js +0 -87
  154. package/lib/module/components/images/EmailVerifyWaiting.js.map +0 -1
  155. package/lib/module/components/images/ErrorIcon.js +0 -18
  156. package/lib/module/components/images/ErrorIcon.js.map +0 -1
  157. package/lib/module/components/images/PhoneVerifyWaiting.js +0 -78
  158. package/lib/module/components/images/PhoneVerifyWaiting.js.map +0 -1
  159. package/lib/module/data/actions.js +0 -19
  160. package/lib/module/data/actions.js.map +0 -1
  161. package/lib/module/hooks/api.js +0 -135
  162. package/lib/module/hooks/api.js.map +0 -1
  163. package/lib/module/hooks/debounce.js +0 -29
  164. package/lib/module/hooks/debounce.js.map +0 -1
  165. package/lib/module/hooks/fingerprint.js +0 -157
  166. package/lib/module/hooks/fingerprint.js.map +0 -1
  167. package/lib/module/hooks/index.js +0 -7
  168. package/lib/module/hooks/index.js.map +0 -1
  169. package/lib/module/hooks/interval.js +0 -23
  170. package/lib/module/hooks/interval.js.map +0 -1
  171. package/lib/module/hooks/nav.js +0 -30
  172. package/lib/module/hooks/nav.js.map +0 -1
  173. package/lib/module/index.tsx.bak +0 -26
  174. package/lib/module/types.js +0 -2
  175. package/lib/module/types.js.map +0 -1
  176. package/lib/module/utils/events.js +0 -45
  177. package/lib/module/utils/events.js.map +0 -1
  178. package/lib/module/utils/form.js +0 -34
  179. package/lib/module/utils/form.js.map +0 -1
  180. package/lib/module/utils/queue.js +0 -109
  181. package/lib/module/utils/queue.js.map +0 -1
  182. package/lib/module/utils/storage.js +0 -6
  183. package/lib/module/utils/storage.js.map +0 -1
  184. package/lib/module/utils/tokens.js +0 -24
  185. package/lib/module/utils/tokens.js.map +0 -1
  186. package/lib/module/utils/user-data.js +0 -14
  187. package/lib/module/utils/user-data.js.map +0 -1
  188. package/lib/package.json +0 -173
  189. package/lib/typescript/src/components/AuthenticatedComponent.d.ts +0 -7
  190. package/lib/typescript/src/components/AutoSigninDialog.d.ts +0 -2
  191. package/lib/typescript/src/components/BottomSheetTextInput/BottomSheetTextInput.d.ts +0 -4
  192. package/lib/typescript/src/components/BottomSheetTextInput/index.d.ts +0 -2
  193. package/lib/typescript/src/components/BottomSheetTextInput/types.d.ts +0 -3
  194. package/lib/typescript/src/components/DarkText.d.ts +0 -3
  195. package/lib/typescript/src/components/DefaultContext.d.ts +0 -12
  196. package/lib/typescript/src/components/RowndComponents.d.ts +0 -2
  197. package/lib/typescript/src/components/RowndProvider.d.ts +0 -8
  198. package/lib/typescript/src/components/SignIn.d.ts +0 -2
  199. package/lib/typescript/src/components/images/CheckmarkFilled.d.ts +0 -4
  200. package/lib/typescript/src/components/images/EmailVerifyWaiting.d.ts +0 -4
  201. package/lib/typescript/src/components/images/ErrorIcon.d.ts +0 -4
  202. package/lib/typescript/src/components/images/PhoneVerifyWaiting.d.ts +0 -4
  203. package/lib/typescript/src/data/actions.d.ts +0 -20
  204. package/lib/typescript/src/hooks/api.d.ts +0 -12
  205. package/lib/typescript/src/hooks/debounce.d.ts +0 -5
  206. package/lib/typescript/src/hooks/fingerprint.d.ts +0 -12
  207. package/lib/typescript/src/hooks/index.d.ts +0 -6
  208. package/lib/typescript/src/hooks/interval.d.ts +0 -2
  209. package/lib/typescript/src/hooks/nav.d.ts +0 -6
  210. package/lib/typescript/src/index.d.ts +0 -4
  211. package/lib/typescript/src/types.d.ts +0 -26
  212. package/lib/typescript/src/utils/config.d.ts +0 -18
  213. package/lib/typescript/src/utils/events.d.ts +0 -22
  214. package/lib/typescript/src/utils/form.d.ts +0 -18
  215. package/lib/typescript/src/utils/queue.d.ts +0 -21
  216. package/lib/typescript/src/utils/storage.d.ts +0 -3
  217. package/lib/typescript/src/utils/tokens.d.ts +0 -4
  218. package/lib/typescript/src/utils/user-data.d.ts +0 -3
  219. package/react-native.podspec +0 -19
  220. package/src/assets/images/checkmark--filled.svg +0 -12
  221. package/src/assets/images/email-verify-waiting.svg +0 -36
  222. package/src/assets/images/error-icon-material.svg +0 -1
  223. package/src/assets/images/phone-verify-waiting.svg +0 -26
  224. package/src/components/AuthenticatedComponent.tsx +0 -30
  225. package/src/components/AutoSigninDialog.tsx +0 -131
  226. package/src/components/BottomSheetTextInput/BottomSheetTextInput.tsx +0 -57
  227. package/src/components/BottomSheetTextInput/index.ts +0 -5
  228. package/src/components/BottomSheetTextInput/types.ts +0 -3
  229. package/src/components/DarkText.tsx +0 -16
  230. package/src/components/DefaultContext.tsx +0 -278
  231. package/src/components/RowndComponents.tsx +0 -18
  232. package/src/components/RowndProvider.tsx +0 -56
  233. package/src/components/SignIn.tsx +0 -797
  234. package/src/components/images/CheckmarkFilled.tsx +0 -30
  235. package/src/components/images/EmailVerifyWaiting.tsx +0 -95
  236. package/src/components/images/ErrorIcon.tsx +0 -11
  237. package/src/components/images/PhoneVerifyWaiting.tsx +0 -74
  238. package/src/data/actions.ts +0 -21
  239. package/src/hooks/api.ts +0 -162
  240. package/src/hooks/debounce.ts +0 -36
  241. package/src/hooks/fingerprint.ts +0 -217
  242. package/src/hooks/index.ts +0 -7
  243. package/src/hooks/interval.ts +0 -25
  244. package/src/hooks/nav.tsx +0 -29
  245. package/src/index.tsx.bak +0 -26
  246. package/src/types.ts +0 -27
  247. package/src/utils/events.ts +0 -54
  248. package/src/utils/form.tsx +0 -64
  249. package/src/utils/queue.ts +0 -75
  250. package/src/utils/storage.ts +0 -7
  251. package/src/utils/tokens.ts +0 -26
  252. package/src/utils/user-data.ts +0 -15
@@ -1,38 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.default = useDebounce;
7
-
8
- var _debounce = require("debounce");
9
-
10
- var _react = require("react");
11
-
12
- function useDebounce(cb, delay) {
13
- const immediate = false;
14
- const inputsRef = (0, _react.useRef)(cb);
15
- const isMounted = useIsMounted();
16
- (0, _react.useEffect)(() => {
17
- inputsRef.current = {
18
- cb,
19
- delay
20
- };
21
- });
22
- return (0, _react.useMemo)(() => (0, _debounce.debounce)(function () {
23
- // Don't execute callback, if (1) component in the meanwhile
24
- // has been unmounted or (2) delay has changed
25
- if (inputsRef.current.delay === delay && isMounted()) inputsRef.current.cb(...arguments);
26
- }, delay, immediate), [delay, immediate, isMounted]);
27
- }
28
-
29
- function useIsMounted() {
30
- const isMountedRef = (0, _react.useRef)(true);
31
- (0, _react.useEffect)(() => {
32
- return () => {
33
- isMountedRef.current = false;
34
- };
35
- }, []);
36
- return () => isMountedRef.current;
37
- }
38
- //# sourceMappingURL=debounce.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["useDebounce","cb","delay","immediate","inputsRef","useRef","isMounted","useIsMounted","useEffect","current","useMemo","debounce","isMountedRef"],"sources":["debounce.ts"],"sourcesContent":["import { debounce } from 'debounce';\nimport { useMemo, useEffect, useRef } from 'react';\n\nexport default function useDebounce(cb: any, delay: any) {\n const immediate = false;\n const inputsRef = useRef(cb);\n const isMounted = useIsMounted();\n useEffect(() => {\n inputsRef.current = { cb, delay };\n });\n\n return useMemo(\n () =>\n debounce(\n (...args: any) => {\n // Don't execute callback, if (1) component in the meanwhile\n // has been unmounted or (2) delay has changed\n if (inputsRef.current.delay === delay && isMounted())\n inputsRef.current.cb(...args);\n },\n delay,\n immediate\n ),\n [delay, immediate, isMounted]\n );\n}\n\nfunction useIsMounted() {\n const isMountedRef = useRef(true);\n useEffect(() => {\n return () => {\n isMountedRef.current = false;\n };\n }, []);\n return () => isMountedRef.current;\n}\n"],"mappings":";;;;;;;AAAA;;AACA;;AAEe,SAASA,WAAT,CAAqBC,EAArB,EAA8BC,KAA9B,EAA0C;EACvD,MAAMC,SAAS,GAAG,KAAlB;EACA,MAAMC,SAAS,GAAG,IAAAC,aAAA,EAAOJ,EAAP,CAAlB;EACA,MAAMK,SAAS,GAAGC,YAAY,EAA9B;EACA,IAAAC,gBAAA,EAAU,MAAM;IACdJ,SAAS,CAACK,OAAV,GAAoB;MAAER,EAAF;MAAMC;IAAN,CAApB;EACD,CAFD;EAIA,OAAO,IAAAQ,cAAA,EACL,MACE,IAAAC,kBAAA,EACE,YAAkB;IAChB;IACA;IACA,IAAIP,SAAS,CAACK,OAAV,CAAkBP,KAAlB,KAA4BA,KAA5B,IAAqCI,SAAS,EAAlD,EACEF,SAAS,CAACK,OAAV,CAAkBR,EAAlB,CAAqB,YAArB;EACH,CANH,EAOEC,KAPF,EAQEC,SARF,CAFG,EAYL,CAACD,KAAD,EAAQC,SAAR,EAAmBG,SAAnB,CAZK,CAAP;AAcD;;AAED,SAASC,YAAT,GAAwB;EACtB,MAAMK,YAAY,GAAG,IAAAP,aAAA,EAAO,IAAP,CAArB;EACA,IAAAG,gBAAA,EAAU,MAAM;IACd,OAAO,MAAM;MACXI,YAAY,CAACH,OAAb,GAAuB,KAAvB;IACD,CAFD;EAGD,CAJD,EAIG,EAJH;EAKA,OAAO,MAAMG,YAAY,CAACH,OAA1B;AACD"}
@@ -1,176 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.default = _default;
7
-
8
- var _reactNativeDeviceInfo = _interopRequireDefault(require("react-native-device-info"));
9
-
10
- var _react = require("react");
11
-
12
- var _api = _interopRequireDefault(require("./api"));
13
-
14
- var _GlobalContext = require("../components/GlobalContext");
15
-
16
- var _storage = _interopRequireDefault(require("../utils/storage"));
17
-
18
- var _reactNativeSha = require("react-native-sha256");
19
-
20
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
21
-
22
- let isFingerprintingInProgress = false;
23
-
24
- function _default() {
25
- var _state$user5, _state$user5$data, _state$user6, _state$user6$data, _state$user9, _state$user9$data, _state$user10, _state$user10$data;
26
-
27
- const {
28
- state
29
- } = (0, _GlobalContext.useGlobalContext)();
30
- const {
31
- client: api
32
- } = (0, _api.default)();
33
- /**
34
- * Computes hashes for all possible lookup fields values coupled with the app ID
35
- * @param appId
36
- * @param rawLookupValues
37
- * @returns array of challenge hashes
38
- */
39
-
40
- async function computePossibleChallengeLookupValues(appId, rawLookupValues) {
41
- const lookupHashes = [];
42
-
43
- for (const value of rawLookupValues) {
44
- lookupHashes.push(await (0, _reactNativeSha.sha256)(`${appId}:${value}`));
45
- }
46
-
47
- return lookupHashes;
48
- }
49
- /**
50
- * Looks for a challenge in storage based on presented lookup values
51
- */
52
-
53
-
54
- const getChallengeIfPresent = (0, _react.useCallback)(async (appId, challengeLookupValues) => {
55
- if (!appId) {
56
- return null;
57
- }
58
-
59
- const challenges = JSON.parse(_storage.default.getString('challenges') || '{}');
60
-
61
- if (!Object.keys(challenges).length) {
62
- return null;
63
- }
64
-
65
- let challengeKey = '';
66
- let challengeValue = '';
67
-
68
- for (const value of challengeLookupValues) {
69
- const hash = await (0, _reactNativeSha.sha256)(`${appId}:${value}`);
70
- const challenge = Object.entries(challenges).find(_ref => {
71
- let [, hashes] = _ref;
72
- return hashes.includes(hash);
73
- });
74
-
75
- if (challenge) {
76
- challengeKey = hash;
77
- challengeValue = challenge[0];
78
- break;
79
- }
80
- }
81
-
82
- if (!challengeKey || !challengeValue) {
83
- return null;
84
- }
85
-
86
- return {
87
- key: challengeKey,
88
- value: challengeValue
89
- };
90
- }, []);
91
- const getFingerprint = (0, _react.useCallback)(async () => {
92
- const visitorId = _reactNativeDeviceInfo.default.getDeviceId();
93
-
94
- return {
95
- visitorId
96
- };
97
- }, []);
98
- const registerFingerprint = (0, _react.useCallback)(async () => {
99
- if (!state.auth.access_token || !state.auth.is_verified_user || !state.app.id || isFingerprintingInProgress) {
100
- return;
101
- }
102
-
103
- isFingerprintingInProgress = true;
104
-
105
- try {
106
- var _state$user, _state$user$data, _state$user2, _state$user2$data, _state$user3, _state$user3$data, _state$user4, _state$user4$data;
107
-
108
- // Check for existing challenge
109
- 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));
110
- const fingerprint = await getFingerprint();
111
- const payload = await api.post('hub/auth/fingerprints', {
112
- headers: {
113
- Authorization: `Bearer ${state.auth.access_token}`
114
- },
115
- json: {
116
- hash: fingerprint.visitorId,
117
- 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
118
-
119
- }
120
- }).json();
121
-
122
- if (payload.challenge === (challengeEntry === null || challengeEntry === void 0 ? void 0 : challengeEntry.key)) {
123
- // This is a no-op
124
- console.debug('Fingerprint already registered');
125
- return;
126
- } // Save the challenge for future sign-ins if we don't have one already or we got a new one from the server
127
-
128
-
129
- 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));
130
-
131
- if (payload.challenge && challengeLookupHashes.length > 0) {
132
- const challenges = JSON.parse(_storage.default.getString('challenges') || '{}');
133
-
134
- _storage.default.set('challenges', JSON.stringify({ ...challenges,
135
- [payload.challenge]: challengeLookupHashes
136
- }));
137
- }
138
- } catch (err) {
139
- console.warn('Failed to register fingerprint', err);
140
- } finally {
141
- isFingerprintingInProgress = false;
142
- }
143
- }, [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]);
144
- const clearFingerprint = (0, _react.useCallback)(challenge => {
145
- const challenges = JSON.parse(_storage.default.getString('challenges') || '{}');
146
- delete challenges[challenge];
147
-
148
- _storage.default.set('challenges', JSON.stringify(challenges));
149
- }, []);
150
- (0, _react.useEffect)(() => {
151
- if (!state.auth.access_token) {
152
- return;
153
- }
154
-
155
- (async () => {
156
- var _state$user7, _state$user7$data, _state$user8, _state$user8$data;
157
-
158
- // If already fingerprinted, don't try again
159
- 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
160
-
161
- if (existingChallenge) {
162
- console.debug('Found existing challenge, so not requesting fingerprint registration.');
163
- return;
164
- } // We have an access token, so we can use it to get the fingerprint
165
-
166
-
167
- registerFingerprint();
168
- })();
169
- }, [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]);
170
- return {
171
- getFingerprint,
172
- getChallengeIfPresent,
173
- clearFingerprint
174
- };
175
- }
176
- //# sourceMappingURL=fingerprint.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["isFingerprintingInProgress","state","useGlobalContext","client","api","useApi","computePossibleChallengeLookupValues","appId","rawLookupValues","lookupHashes","value","push","sha256","getChallengeIfPresent","useCallback","challengeLookupValues","challenges","JSON","parse","storage","getString","Object","keys","length","challengeKey","challengeValue","hash","challenge","entries","find","hashes","includes","key","getFingerprint","visitorId","DeviceInfo","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","useEffect","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,48 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- Object.defineProperty(exports, "useApi", {
7
- enumerable: true,
8
- get: function () {
9
- return _api.default;
10
- }
11
- });
12
- Object.defineProperty(exports, "useDebounce", {
13
- enumerable: true,
14
- get: function () {
15
- return _debounce.default;
16
- }
17
- });
18
- Object.defineProperty(exports, "useDeviceFingerprint", {
19
- enumerable: true,
20
- get: function () {
21
- return _fingerprint.default;
22
- }
23
- });
24
- Object.defineProperty(exports, "useInterval", {
25
- enumerable: true,
26
- get: function () {
27
- return _interval.default;
28
- }
29
- });
30
- Object.defineProperty(exports, "useNav", {
31
- enumerable: true,
32
- get: function () {
33
- return _nav.default;
34
- }
35
- });
36
-
37
- var _api = _interopRequireDefault(require("./api"));
38
-
39
- var _debounce = _interopRequireDefault(require("./debounce"));
40
-
41
- var _interval = _interopRequireDefault(require("./interval"));
42
-
43
- var _nav = _interopRequireDefault(require("./nav"));
44
-
45
- var _fingerprint = _interopRequireDefault(require("./fingerprint"));
46
-
47
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
48
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":[],"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;;AACA;;AACA;;AACA;;AACA"}
@@ -1,31 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.default = void 0;
7
-
8
- var _react = require("react");
9
-
10
- function useInterval(callback, delay) {
11
- const savedCallback = (0, _react.useRef)(callback); // Remember the latest callback if it changes.
12
-
13
- (0, _react.useLayoutEffect)(() => {
14
- savedCallback.current = callback;
15
- }, [callback]); // Set up the interval.
16
-
17
- (0, _react.useEffect)(() => {
18
- // Don't schedule if no delay is specified.
19
- // Note: 0 is a valid value for delay.
20
- if (!delay && delay !== 0) {
21
- return;
22
- }
23
-
24
- const id = setInterval(() => savedCallback.current(), delay);
25
- return () => clearInterval(id);
26
- }, [delay]);
27
- }
28
-
29
- var _default = useInterval;
30
- exports.default = _default;
31
- //# sourceMappingURL=interval.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["useInterval","callback","delay","savedCallback","useRef","useLayoutEffect","current","useEffect","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;;AAEA,SAASA,WAAT,CAAqBC,QAArB,EAA2CC,KAA3C,EAAiE;EAC/D,MAAMC,aAAa,GAAG,IAAAC,aAAA,EAAOH,QAAP,CAAtB,CAD+D,CAG/D;;EACA,IAAAI,sBAAA,EAAgB,MAAM;IACpBF,aAAa,CAACG,OAAd,GAAwBL,QAAxB;EACD,CAFD,EAEG,CAACA,QAAD,CAFH,EAJ+D,CAQ/D;;EACA,IAAAM,gBAAA,EAAU,MAAM;IACd;IACA;IACA,IAAI,CAACL,KAAD,IAAUA,KAAK,KAAK,CAAxB,EAA2B;MACzB;IACD;;IAED,MAAMM,EAAE,GAAGC,WAAW,CAAC,MAAMN,aAAa,CAACG,OAAd,EAAP,EAAgCJ,KAAhC,CAAtB;IAEA,OAAO,MAAMQ,aAAa,CAACF,EAAD,CAA1B;EACD,CAVD,EAUG,CAACN,KAAD,CAVH;AAWD;;eAEcF,W"}
@@ -1,39 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.default = useNav;
7
-
8
- var _GlobalContext = require("../components/GlobalContext");
9
-
10
- var _actions = require("../data/actions");
11
-
12
- function useNav() {
13
- const {
14
- dispatch
15
- } = (0, _GlobalContext.useGlobalContext)();
16
- return _ref => {
17
- let {
18
- route,
19
- hide
20
- } = _ref;
21
-
22
- if (hide) {
23
- dispatch({
24
- type: _actions.ActionType.SET_CONTAINER_VISIBLE,
25
- payload: {
26
- isVisible: false
27
- }
28
- });
29
- } else if (route) {
30
- dispatch({
31
- type: _actions.ActionType.CHANGE_ROUTE,
32
- payload: {
33
- current_route: route
34
- }
35
- });
36
- }
37
- };
38
- }
39
- //# sourceMappingURL=nav.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["useNav","dispatch","useGlobalContext","route","hide","type","ActionType","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;;AACA;;AAOe,SAASA,MAAT,GAAkB;EAC/B,MAAM;IAAEC;EAAF,IAAe,IAAAC,+BAAA,GAArB;EAEA,OAAO,QAA+B;IAAA,IAA9B;MAAEC,KAAF;MAASC;IAAT,CAA8B;;IACpC,IAAIA,IAAJ,EAAU;MACRH,QAAQ,CAAC;QACPI,IAAI,EAAEC,mBAAA,CAAWC,qBADV;QAEPC,OAAO,EAAE;UACPC,SAAS,EAAE;QADJ;MAFF,CAAD,CAAR;IAMD,CAPD,MAOO,IAAIN,KAAJ,EAAW;MAChBF,QAAQ,CAAC;QACPI,IAAI,EAAEC,mBAAA,CAAWI,YADV;QAEPF,OAAO,EAAE;UACPG,aAAa,EAAER;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
- "use strict";
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,57 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.events = exports.EventType = void 0;
7
-
8
- var _eventemitter = _interopRequireDefault(require("eventemitter3"));
9
-
10
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
11
-
12
- const bus = new _eventemitter.default();
13
- let EventType;
14
- exports.EventType = EventType;
15
-
16
- (function (EventType) {
17
- EventType["AUTH"] = "auth";
18
- EventType["SIGN_OUT"] = "sign_out";
19
- EventType["USER_DATA"] = "user_data";
20
- EventType["USER_DATA_SAVED"] = "user_data_saved";
21
- })(EventType || (exports.EventType = EventType = {}));
22
-
23
- const events = {
24
- addEventListener: (type, callback, options) => {
25
- if (!Object.values(EventType).includes(type)) {
26
- console.warn(`Unknown event type: ${type}`);
27
- return;
28
- }
29
-
30
- let busFn = bus.on;
31
-
32
- if (options === true || options !== null && options !== void 0 && options.once) {
33
- busFn = bus.once;
34
- }
35
-
36
- busFn.apply(bus, [type, callback, options]);
37
- },
38
- removeEventListener: bus.removeListener,
39
- dispatchEvent: event => {
40
- if (!Object.values(EventType).includes(event.type)) {
41
- throw new Error(`Unknown event type: ${event.type}`);
42
- }
43
-
44
- return bus.emit(event.type, event.detail);
45
- },
46
-
47
- dispatch(type, data) {
48
- if (!Object.values(EventType).includes(type)) {
49
- throw new Error(`Unknown event type: ${type}`);
50
- }
51
-
52
- return bus.emit(type, data);
53
- }
54
-
55
- };
56
- exports.events = events;
57
- //# sourceMappingURL=events.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["bus","EventEmitter","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;;;;AACA,MAAMA,GAAG,GAAG,IAAIC,qBAAJ,EAAZ;IAEYC,S;;;WAAAA,S;EAAAA,S;EAAAA,S;EAAAA,S;EAAAA,S;GAAAA,S,yBAAAA,S;;AAiBL,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,GAAGb,GAAG,CAACc,EAAhB;;IACA,IAAIP,OAAO,KAAK,IAAZ,IAAqBA,OAArB,aAAqBA,OAArB,eAAqBA,OAAD,CAAmCQ,IAA3D,EAAiE;MAC/DF,KAAK,GAAGb,GAAG,CAACe,IAAZ;IACD;;IAEDF,KAAK,CAACG,KAAN,CAAYhB,GAAZ,EAAiB,CAACK,IAAD,EAAOC,QAAP,EAAiBC,OAAjB,CAAjB;EACD,CAjBmB;EAkBpBU,mBAAmB,EAAEjB,GAAG,CAACkB,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,OAAOL,GAAG,CAACsB,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,OAAOL,GAAG,CAACsB,IAAJ,CAASjB,IAAT,EAAeoB,IAAf,CAAP;EACD;;AAhCmB,CAAf"}
@@ -1,46 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.renderField = renderField;
7
-
8
- var _reactNative = require("react-native");
9
-
10
- var _picker = require("@react-native-picker/picker");
11
-
12
- var _react = _interopRequireDefault(require("react"));
13
-
14
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
15
-
16
- function renderField(_ref) {
17
- var _options$;
18
-
19
- let {
20
- id,
21
- label = '',
22
- name,
23
- type = 'input',
24
- value,
25
- placeholder,
26
- options = null,
27
- onChange
28
- } = _ref;
29
-
30
- if (!id) {
31
- id = `rph-input-${name}`;
32
- }
33
-
34
- return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, label && /*#__PURE__*/_react.default.createElement(_reactNative.Text, null, label), type === 'select' && /*#__PURE__*/_react.default.createElement(_picker.Picker, {
35
- onValueChange: onChange,
36
- selectedValue: value || (options === null || options === void 0 ? void 0 : (_options$ = options[0]) === null || _options$ === void 0 ? void 0 : _options$.value)
37
- }, options === null || options === void 0 ? void 0 : options.map(opt => /*#__PURE__*/_react.default.createElement(_picker.Picker.Item, {
38
- value: opt.value,
39
- key: opt.value
40
- }, ' ', opt.label, ' '))), type === 'input' && /*#__PURE__*/_react.default.createElement(_reactNative.TextInput, {
41
- value: value,
42
- placeholder: placeholder,
43
- onChangeText: onChange
44
- }));
45
- }
46
- //# sourceMappingURL=form.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["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;;AACA;;AACA;;;;AAoBO,SAASA,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,4DACGD,KAAK,iBAAI,6BAAC,iBAAD,QAAOA,KAAP,CADZ,EAGGE,IAAI,KAAK,QAAT,iBACC,6BAAC,cAAD;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,6BAAC,cAAD,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,6BAAC,sBAAD;IACE,KAAK,EAAEC,KADT;IAEE,WAAW,EAAEC,WAFf;IAGE,YAAY,EAAEE;EAHhB,EAlBJ,CADF;AA2BD"}
@@ -1,117 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.default = void 0;
7
-
8
- 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; }
9
-
10
- function _classPrivateFieldInitSpec(obj, privateMap, value) { _checkPrivateRedeclaration(obj, privateMap); privateMap.set(obj, value); }
11
-
12
- function _checkPrivateRedeclaration(obj, privateCollection) { if (privateCollection.has(obj)) { throw new TypeError("Cannot initialize the same private elements twice on an object"); } }
13
-
14
- function _classPrivateFieldGet(receiver, privateMap) { var descriptor = _classExtractFieldDescriptor(receiver, privateMap, "get"); return _classApplyDescriptorGet(receiver, descriptor); }
15
-
16
- function _classApplyDescriptorGet(receiver, descriptor) { if (descriptor.get) { return descriptor.get.call(receiver); } return descriptor.value; }
17
-
18
- function _classPrivateFieldSet(receiver, privateMap, value) { var descriptor = _classExtractFieldDescriptor(receiver, privateMap, "set"); _classApplyDescriptorSet(receiver, descriptor, value); return value; }
19
-
20
- function _classExtractFieldDescriptor(receiver, privateMap, action) { if (!privateMap.has(receiver)) { throw new TypeError("attempted to " + action + " private field on non-instance"); } return privateMap.get(receiver); }
21
-
22
- 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; } }
23
-
24
- // import { logger } from "./utils/log";
25
- let count = 0;
26
-
27
- var _items = /*#__PURE__*/new WeakMap();
28
-
29
- class Queue {
30
- constructor() {
31
- _classPrivateFieldInitSpec(this, _items, {
32
- writable: true,
33
- value: void 0
34
- });
35
-
36
- _classPrivateFieldSet(this, _items, []);
37
- }
38
-
39
- enqueue(item) {
40
- _classPrivateFieldGet(this, _items).push(item);
41
- }
42
-
43
- dequeue() {
44
- return _classPrivateFieldGet(this, _items).shift();
45
- }
46
-
47
- get size() {
48
- return _classPrivateFieldGet(this, _items).length;
49
- }
50
-
51
- }
52
-
53
- var _pendingPromise = /*#__PURE__*/new WeakMap();
54
-
55
- class AutoQueue extends Queue {
56
- constructor() {
57
- super();
58
-
59
- _defineProperty(this, "_cache", void 0);
60
-
61
- _classPrivateFieldInitSpec(this, _pendingPromise, {
62
- writable: true,
63
- value: void 0
64
- });
65
-
66
- _classPrivateFieldSet(this, _pendingPromise, false);
67
-
68
- this._cache = {};
69
- }
70
-
71
- enqueue(action) {
72
- return new Promise((resolve, reject) => {
73
- super.enqueue({
74
- action,
75
- resolve,
76
- reject,
77
- count: count++
78
- }); // logger.log('queued', count);
79
-
80
- this.dequeue();
81
- });
82
- }
83
-
84
- async dequeue() {
85
- if (_classPrivateFieldGet(this, _pendingPromise)) return false;
86
- const item = super.dequeue();
87
-
88
- if (!item) {
89
- this._cache = {};
90
- return false;
91
- } // logger.log('dequeued', item.count);
92
-
93
-
94
- try {
95
- _classPrivateFieldSet(this, _pendingPromise, true);
96
-
97
- const payload = await item.action(this);
98
-
99
- _classPrivateFieldSet(this, _pendingPromise, false);
100
-
101
- item.resolve(payload);
102
- } catch (e) {
103
- _classPrivateFieldSet(this, _pendingPromise, false);
104
-
105
- item.reject(e);
106
- } finally {
107
- this.dequeue();
108
- }
109
-
110
- return true;
111
- }
112
-
113
- }
114
-
115
- var _default = AutoQueue;
116
- exports.default = _default;
117
- //# sourceMappingURL=queue.js.map