@oxyhq/services 5.16.40 → 5.16.42

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 (267) hide show
  1. package/lib/commonjs/adapters/expo/crypto.js +56 -0
  2. package/lib/commonjs/adapters/expo/crypto.js.map +1 -0
  3. package/lib/commonjs/adapters/expo/fetch.js +30 -0
  4. package/lib/commonjs/adapters/expo/fetch.js.map +1 -0
  5. package/lib/commonjs/adapters/expo/index.js +48 -0
  6. package/lib/commonjs/adapters/expo/index.js.map +1 -0
  7. package/lib/commonjs/adapters/expo/storage.js +201 -0
  8. package/lib/commonjs/adapters/expo/storage.js.map +1 -0
  9. package/lib/commonjs/adapters/index.js +50 -0
  10. package/lib/commonjs/adapters/index.js.map +1 -0
  11. package/lib/commonjs/adapters/node/crypto.js +40 -0
  12. package/lib/commonjs/adapters/node/crypto.js.map +1 -0
  13. package/lib/commonjs/adapters/node/fetch.js +62 -0
  14. package/lib/commonjs/adapters/node/fetch.js.map +1 -0
  15. package/lib/commonjs/adapters/node/index.js +34 -0
  16. package/lib/commonjs/adapters/node/index.js.map +1 -0
  17. package/lib/commonjs/adapters/node/storage.js +163 -0
  18. package/lib/commonjs/adapters/node/storage.js.map +1 -0
  19. package/lib/commonjs/core/identity-session/DeviceManager.js +237 -0
  20. package/lib/commonjs/core/identity-session/DeviceManager.js.map +1 -0
  21. package/lib/commonjs/core/identity-session/INTEGRATION_GUIDE.md +287 -0
  22. package/lib/commonjs/core/identity-session/IdentityManager.js +400 -0
  23. package/lib/commonjs/core/identity-session/IdentityManager.js.map +1 -0
  24. package/lib/commonjs/core/identity-session/IdentitySessionCore.js +394 -0
  25. package/lib/commonjs/core/identity-session/IdentitySessionCore.js.map +1 -0
  26. package/lib/commonjs/core/identity-session/RefreshManager.js +137 -0
  27. package/lib/commonjs/core/identity-session/RefreshManager.js.map +1 -0
  28. package/lib/commonjs/core/identity-session/SessionManager.js +427 -0
  29. package/lib/commonjs/core/identity-session/SessionManager.js.map +1 -0
  30. package/lib/commonjs/core/identity-session/createIdentitySessionCore.js +24 -0
  31. package/lib/commonjs/core/identity-session/createIdentitySessionCore.js.map +1 -0
  32. package/lib/commonjs/core/identity-session/errors.js +176 -0
  33. package/lib/commonjs/core/identity-session/errors.js.map +1 -0
  34. package/lib/commonjs/core/identity-session/index.js +80 -0
  35. package/lib/commonjs/core/identity-session/index.js.map +1 -0
  36. package/lib/commonjs/core/identity-session/types.js +2 -0
  37. package/lib/commonjs/core/identity-session/types.js.map +1 -0
  38. package/lib/commonjs/core/index.js +2 -21
  39. package/lib/commonjs/core/index.js.map +1 -1
  40. package/lib/commonjs/index.js +58 -8
  41. package/lib/commonjs/index.js.map +1 -1
  42. package/lib/commonjs/models/interfaces.js +7 -0
  43. package/lib/commonjs/models/interfaces.js.map +1 -1
  44. package/lib/commonjs/ui/context/OxyContext.js +434 -820
  45. package/lib/commonjs/ui/context/OxyContext.js.map +1 -1
  46. package/lib/commonjs/ui/hooks/useAvatarPicker.js +52 -0
  47. package/lib/commonjs/ui/hooks/useAvatarPicker.js.map +1 -0
  48. package/lib/commonjs/ui/hooks/useIdentityTransfer.js +125 -0
  49. package/lib/commonjs/ui/hooks/useIdentityTransfer.js.map +1 -0
  50. package/lib/commonjs/ui/hooks/useTransferCodesPersistence.js +81 -0
  51. package/lib/commonjs/ui/hooks/useTransferCodesPersistence.js.map +1 -0
  52. package/lib/commonjs/ui/screens/AccountCenterScreen.js +7 -2
  53. package/lib/commonjs/ui/screens/AccountCenterScreen.js.map +1 -1
  54. package/lib/commonjs/ui/screens/AccountSettingsScreen.js +12 -5
  55. package/lib/commonjs/ui/screens/AccountSettingsScreen.js.map +1 -1
  56. package/lib/commonjs/ui/screens/AccountSwitcherScreen.js +2 -2
  57. package/lib/commonjs/ui/screens/AccountSwitcherScreen.js.map +1 -1
  58. package/lib/commonjs/ui/screens/ProfileScreen.js +6 -6
  59. package/lib/commonjs/ui/screens/ProfileScreen.js.map +1 -1
  60. package/lib/commonjs/ui/utils/sessionHelpers.js +7 -1
  61. package/lib/commonjs/ui/utils/sessionHelpers.js.map +1 -1
  62. package/lib/commonjs/utils/index.js +0 -7
  63. package/lib/commonjs/utils/index.js.map +1 -1
  64. package/lib/commonjs/utils/sessionUtils.js +8 -1
  65. package/lib/commonjs/utils/sessionUtils.js.map +1 -1
  66. package/lib/module/adapters/expo/crypto.js +51 -0
  67. package/lib/module/adapters/expo/crypto.js.map +1 -0
  68. package/lib/module/adapters/expo/fetch.js +26 -0
  69. package/lib/module/adapters/expo/fetch.js.map +1 -0
  70. package/lib/module/adapters/expo/index.js +45 -0
  71. package/lib/module/adapters/expo/index.js.map +1 -0
  72. package/lib/module/adapters/expo/storage.js +198 -0
  73. package/lib/module/adapters/expo/storage.js.map +1 -0
  74. package/lib/module/adapters/index.js +47 -0
  75. package/lib/module/adapters/index.js.map +1 -0
  76. package/lib/module/adapters/node/crypto.js +36 -0
  77. package/lib/module/adapters/node/crypto.js.map +1 -0
  78. package/lib/module/adapters/node/fetch.js +57 -0
  79. package/lib/module/adapters/node/fetch.js.map +1 -0
  80. package/lib/module/adapters/node/index.js +31 -0
  81. package/lib/module/adapters/node/index.js.map +1 -0
  82. package/lib/module/adapters/node/storage.js +159 -0
  83. package/lib/module/adapters/node/storage.js.map +1 -0
  84. package/lib/module/core/identity-session/DeviceManager.js +232 -0
  85. package/lib/module/core/identity-session/DeviceManager.js.map +1 -0
  86. package/lib/module/core/identity-session/INTEGRATION_GUIDE.md +287 -0
  87. package/lib/module/core/identity-session/IdentityManager.js +395 -0
  88. package/lib/module/core/identity-session/IdentityManager.js.map +1 -0
  89. package/lib/module/core/identity-session/IdentitySessionCore.js +390 -0
  90. package/lib/module/core/identity-session/IdentitySessionCore.js.map +1 -0
  91. package/lib/module/core/identity-session/RefreshManager.js +132 -0
  92. package/lib/module/core/identity-session/RefreshManager.js.map +1 -0
  93. package/lib/module/core/identity-session/SessionManager.js +422 -0
  94. package/lib/module/core/identity-session/SessionManager.js.map +1 -0
  95. package/lib/module/core/identity-session/createIdentitySessionCore.js +21 -0
  96. package/lib/module/core/identity-session/createIdentitySessionCore.js.map +1 -0
  97. package/lib/module/core/identity-session/errors.js +170 -0
  98. package/lib/module/core/identity-session/errors.js.map +1 -0
  99. package/lib/module/core/identity-session/index.js +17 -0
  100. package/lib/module/core/identity-session/index.js.map +1 -0
  101. package/lib/module/core/identity-session/types.js +2 -0
  102. package/lib/module/core/identity-session/types.js.map +1 -0
  103. package/lib/module/core/index.js +2 -3
  104. package/lib/module/core/index.js.map +1 -1
  105. package/lib/module/index.js +12 -2
  106. package/lib/module/index.js.map +1 -1
  107. package/lib/module/models/interfaces.js +7 -0
  108. package/lib/module/models/interfaces.js.map +1 -1
  109. package/lib/module/ui/context/OxyContext.js +436 -822
  110. package/lib/module/ui/context/OxyContext.js.map +1 -1
  111. package/lib/module/ui/hooks/useAvatarPicker.js +48 -0
  112. package/lib/module/ui/hooks/useAvatarPicker.js.map +1 -0
  113. package/lib/module/ui/hooks/useIdentityTransfer.js +121 -0
  114. package/lib/module/ui/hooks/useIdentityTransfer.js.map +1 -0
  115. package/lib/module/ui/hooks/useTransferCodesPersistence.js +77 -0
  116. package/lib/module/ui/hooks/useTransferCodesPersistence.js.map +1 -0
  117. package/lib/module/ui/screens/AccountCenterScreen.js +7 -2
  118. package/lib/module/ui/screens/AccountCenterScreen.js.map +1 -1
  119. package/lib/module/ui/screens/AccountSettingsScreen.js +12 -5
  120. package/lib/module/ui/screens/AccountSettingsScreen.js.map +1 -1
  121. package/lib/module/ui/screens/AccountSwitcherScreen.js +2 -2
  122. package/lib/module/ui/screens/AccountSwitcherScreen.js.map +1 -1
  123. package/lib/module/ui/screens/ProfileScreen.js +6 -6
  124. package/lib/module/ui/screens/ProfileScreen.js.map +1 -1
  125. package/lib/module/ui/utils/sessionHelpers.js +7 -1
  126. package/lib/module/ui/utils/sessionHelpers.js.map +1 -1
  127. package/lib/module/utils/index.js +2 -1
  128. package/lib/module/utils/index.js.map +1 -1
  129. package/lib/module/utils/sessionUtils.js +8 -1
  130. package/lib/module/utils/sessionUtils.js.map +1 -1
  131. package/lib/typescript/adapters/expo/crypto.d.ts +17 -0
  132. package/lib/typescript/adapters/expo/crypto.d.ts.map +1 -0
  133. package/lib/typescript/adapters/expo/fetch.d.ts +16 -0
  134. package/lib/typescript/adapters/expo/fetch.d.ts.map +1 -0
  135. package/lib/typescript/adapters/expo/index.d.ts +23 -0
  136. package/lib/typescript/adapters/expo/index.d.ts.map +1 -0
  137. package/lib/typescript/adapters/expo/storage.d.ts +23 -0
  138. package/lib/typescript/adapters/expo/storage.d.ts.map +1 -0
  139. package/lib/typescript/adapters/index.d.ts +19 -0
  140. package/lib/typescript/adapters/index.d.ts.map +1 -0
  141. package/lib/typescript/adapters/node/crypto.d.ts +17 -0
  142. package/lib/typescript/adapters/node/crypto.d.ts.map +1 -0
  143. package/lib/typescript/adapters/node/fetch.d.ts +16 -0
  144. package/lib/typescript/adapters/node/fetch.d.ts.map +1 -0
  145. package/lib/typescript/adapters/node/index.d.ts +23 -0
  146. package/lib/typescript/adapters/node/index.d.ts.map +1 -0
  147. package/lib/typescript/adapters/node/storage.d.ts +23 -0
  148. package/lib/typescript/adapters/node/storage.d.ts.map +1 -0
  149. package/lib/typescript/core/identity-session/DeviceManager.d.ts +64 -0
  150. package/lib/typescript/core/identity-session/DeviceManager.d.ts.map +1 -0
  151. package/lib/typescript/core/identity-session/IdentityManager.d.ts +88 -0
  152. package/lib/typescript/core/identity-session/IdentityManager.d.ts.map +1 -0
  153. package/lib/typescript/core/identity-session/IdentitySessionCore.d.ts +141 -0
  154. package/lib/typescript/core/identity-session/IdentitySessionCore.d.ts.map +1 -0
  155. package/lib/typescript/core/identity-session/RefreshManager.d.ts +36 -0
  156. package/lib/typescript/core/identity-session/RefreshManager.d.ts.map +1 -0
  157. package/lib/typescript/core/identity-session/SessionManager.d.ts +104 -0
  158. package/lib/typescript/core/identity-session/SessionManager.d.ts.map +1 -0
  159. package/lib/typescript/core/identity-session/createIdentitySessionCore.d.ts +11 -0
  160. package/lib/typescript/core/identity-session/createIdentitySessionCore.d.ts.map +1 -0
  161. package/lib/typescript/core/identity-session/errors.d.ts +63 -0
  162. package/lib/typescript/core/identity-session/errors.d.ts.map +1 -0
  163. package/lib/typescript/core/identity-session/index.d.ts +14 -0
  164. package/lib/typescript/core/identity-session/index.d.ts.map +1 -0
  165. package/lib/typescript/core/identity-session/types.d.ts +196 -0
  166. package/lib/typescript/core/identity-session/types.d.ts.map +1 -0
  167. package/lib/typescript/core/index.d.ts +1 -3
  168. package/lib/typescript/core/index.d.ts.map +1 -1
  169. package/lib/typescript/core/mixins/index.d.ts +2 -2
  170. package/lib/typescript/index.d.ts +3 -2
  171. package/lib/typescript/index.d.ts.map +1 -1
  172. package/lib/typescript/models/interfaces.d.ts +5 -36
  173. package/lib/typescript/models/interfaces.d.ts.map +1 -1
  174. package/lib/typescript/models/session.d.ts +3 -16
  175. package/lib/typescript/models/session.d.ts.map +1 -1
  176. package/lib/typescript/ui/context/OxyContext.d.ts +2 -25
  177. package/lib/typescript/ui/context/OxyContext.d.ts.map +1 -1
  178. package/lib/typescript/ui/hooks/mutations/useAccountMutations.d.ts +7 -8
  179. package/lib/typescript/ui/hooks/mutations/useAccountMutations.d.ts.map +1 -1
  180. package/lib/typescript/ui/hooks/mutations/useServicesMutations.d.ts +1 -1
  181. package/lib/typescript/ui/hooks/mutations/useServicesMutations.d.ts.map +1 -1
  182. package/lib/typescript/ui/hooks/queries/useAccountQueries.d.ts +5 -5
  183. package/lib/typescript/ui/hooks/queries/useAccountQueries.d.ts.map +1 -1
  184. package/lib/typescript/ui/hooks/useAvatarPicker.d.ts +18 -0
  185. package/lib/typescript/ui/hooks/useAvatarPicker.d.ts.map +1 -0
  186. package/lib/typescript/ui/hooks/useIdentityTransfer.d.ts +24 -0
  187. package/lib/typescript/ui/hooks/useIdentityTransfer.d.ts.map +1 -0
  188. package/lib/typescript/ui/hooks/useTransferCodesPersistence.d.ts +6 -0
  189. package/lib/typescript/ui/hooks/useTransferCodesPersistence.d.ts.map +1 -0
  190. package/lib/typescript/ui/screens/AccountCenterScreen.d.ts.map +1 -1
  191. package/lib/typescript/ui/screens/AccountSettingsScreen.d.ts.map +1 -1
  192. package/lib/typescript/ui/utils/sessionHelpers.d.ts +1 -0
  193. package/lib/typescript/ui/utils/sessionHelpers.d.ts.map +1 -1
  194. package/lib/typescript/utils/index.d.ts +0 -2
  195. package/lib/typescript/utils/index.d.ts.map +1 -1
  196. package/lib/typescript/utils/sessionUtils.d.ts.map +1 -1
  197. package/package.json +1 -1
  198. package/src/adapters/expo/crypto.ts +55 -0
  199. package/src/adapters/expo/fetch.ts +28 -0
  200. package/src/adapters/expo/index.ts +51 -0
  201. package/src/adapters/expo/storage.ts +228 -0
  202. package/src/adapters/index.ts +47 -0
  203. package/src/adapters/node/crypto.ts +39 -0
  204. package/src/adapters/node/fetch.ts +59 -0
  205. package/src/adapters/node/index.ts +37 -0
  206. package/src/adapters/node/storage.ts +170 -0
  207. package/src/core/identity-session/DeviceManager.ts +273 -0
  208. package/src/core/identity-session/INTEGRATION_GUIDE.md +287 -0
  209. package/src/core/identity-session/IdentityManager.ts +474 -0
  210. package/src/core/identity-session/IdentitySessionCore.ts +464 -0
  211. package/src/core/identity-session/RefreshManager.ts +189 -0
  212. package/src/core/identity-session/SessionManager.ts +500 -0
  213. package/src/core/identity-session/createIdentitySessionCore.ts +19 -0
  214. package/src/core/identity-session/errors.ts +197 -0
  215. package/src/core/identity-session/index.ts +15 -0
  216. package/src/core/identity-session/types.ts +188 -0
  217. package/src/core/index.ts +3 -4
  218. package/src/index.ts +28 -3
  219. package/src/models/interfaces.ts +12 -39
  220. package/src/models/session.ts +6 -16
  221. package/src/ui/context/OxyContext.tsx +442 -871
  222. package/src/ui/hooks/auth/index.ts +1 -0
  223. package/src/ui/hooks/useAvatarPicker.ts +62 -0
  224. package/src/ui/hooks/useIdentityTransfer.ts +135 -0
  225. package/src/ui/hooks/useTransferCodesPersistence.ts +80 -0
  226. package/src/ui/screens/AccountCenterScreen.tsx +7 -2
  227. package/src/ui/screens/AccountSettingsScreen.tsx +15 -8
  228. package/src/ui/screens/AccountSwitcherScreen.tsx +2 -2
  229. package/src/ui/screens/ProfileScreen.tsx +10 -10
  230. package/src/ui/utils/sessionHelpers.ts +7 -0
  231. package/src/utils/index.ts +1 -2
  232. package/src/utils/sessionUtils.ts +8 -0
  233. package/lib/commonjs/ui/context/hooks/useAuthOperations.js +0 -732
  234. package/lib/commonjs/ui/context/hooks/useAuthOperations.js.map +0 -1
  235. package/lib/commonjs/ui/context/hooks/useDeviceManagement.js +0 -73
  236. package/lib/commonjs/ui/context/hooks/useDeviceManagement.js.map +0 -1
  237. package/lib/commonjs/ui/hooks/useDeviceManagement.js +0 -73
  238. package/lib/commonjs/ui/hooks/useDeviceManagement.js.map +0 -1
  239. package/lib/commonjs/ui/hooks/useSessionManagement.js +0 -281
  240. package/lib/commonjs/ui/hooks/useSessionManagement.js.map +0 -1
  241. package/lib/commonjs/utils/deviceManager.js +0 -177
  242. package/lib/commonjs/utils/deviceManager.js.map +0 -1
  243. package/lib/module/ui/context/hooks/useAuthOperations.js +0 -726
  244. package/lib/module/ui/context/hooks/useAuthOperations.js.map +0 -1
  245. package/lib/module/ui/context/hooks/useDeviceManagement.js +0 -68
  246. package/lib/module/ui/context/hooks/useDeviceManagement.js.map +0 -1
  247. package/lib/module/ui/hooks/useDeviceManagement.js +0 -68
  248. package/lib/module/ui/hooks/useDeviceManagement.js.map +0 -1
  249. package/lib/module/ui/hooks/useSessionManagement.js +0 -276
  250. package/lib/module/ui/hooks/useSessionManagement.js.map +0 -1
  251. package/lib/module/utils/deviceManager.js +0 -171
  252. package/lib/module/utils/deviceManager.js.map +0 -1
  253. package/lib/typescript/ui/context/hooks/useAuthOperations.d.ts +0 -59
  254. package/lib/typescript/ui/context/hooks/useAuthOperations.d.ts.map +0 -1
  255. package/lib/typescript/ui/context/hooks/useDeviceManagement.d.ts +0 -27
  256. package/lib/typescript/ui/context/hooks/useDeviceManagement.d.ts.map +0 -1
  257. package/lib/typescript/ui/hooks/useDeviceManagement.d.ts +0 -27
  258. package/lib/typescript/ui/hooks/useDeviceManagement.d.ts.map +0 -1
  259. package/lib/typescript/ui/hooks/useSessionManagement.d.ts +0 -41
  260. package/lib/typescript/ui/hooks/useSessionManagement.d.ts.map +0 -1
  261. package/lib/typescript/utils/deviceManager.d.ts +0 -66
  262. package/lib/typescript/utils/deviceManager.d.ts.map +0 -1
  263. package/src/ui/context/hooks/useAuthOperations.ts +0 -801
  264. package/src/ui/context/hooks/useDeviceManagement.ts +0 -108
  265. package/src/ui/hooks/useDeviceManagement.ts +0 -108
  266. package/src/ui/hooks/useSessionManagement.ts +0 -401
  267. package/src/utils/deviceManager.ts +0 -198
@@ -0,0 +1,36 @@
1
+ "use strict";
2
+
3
+ /**
4
+ * Node.js Crypto Adapter
5
+ *
6
+ * Uses Node's built-in crypto module
7
+ */
8
+
9
+ import * as crypto from 'crypto';
10
+
11
+ /**
12
+ * Crypto Adapter Interface
13
+ */
14
+
15
+ /**
16
+ * Create Node Crypto Adapter
17
+ */
18
+ export async function createNodeCryptoAdapter() {
19
+ return {
20
+ /**
21
+ * Generate cryptographically secure random bytes
22
+ */
23
+ async getRandomBytes(length) {
24
+ return new Uint8Array(crypto.randomBytes(length));
25
+ },
26
+ /**
27
+ * Hash a string using the specified algorithm
28
+ */
29
+ async digestStringAsync(algorithm, data) {
30
+ const hash = crypto.createHash(algorithm.toLowerCase());
31
+ hash.update(data);
32
+ return hash.digest('hex');
33
+ }
34
+ };
35
+ }
36
+ //# sourceMappingURL=crypto.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["crypto","createNodeCryptoAdapter","getRandomBytes","length","Uint8Array","randomBytes","digestStringAsync","algorithm","data","hash","createHash","toLowerCase","update","digest"],"sourceRoot":"../../../../src","sources":["adapters/node/crypto.ts"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;;AAEA,OAAO,KAAKA,MAAM,MAAM,QAAQ;;AAEhC;AACA;AACA;;AAMA;AACA;AACA;AACA,OAAO,eAAeC,uBAAuBA,CAAA,EAA2B;EACtE,OAAO;IACL;AACJ;AACA;IACI,MAAMC,cAAcA,CAACC,MAAc,EAAuB;MACxD,OAAO,IAAIC,UAAU,CAACJ,MAAM,CAACK,WAAW,CAACF,MAAM,CAAC,CAAC;IACnD,CAAC;IAED;AACJ;AACA;IACI,MAAMG,iBAAiBA,CAACC,SAA8B,EAAEC,IAAY,EAAmB;MACrF,MAAMC,IAAI,GAAGT,MAAM,CAACU,UAAU,CAACH,SAAS,CAACI,WAAW,CAAC,CAAC,CAAC;MACvDF,IAAI,CAACG,MAAM,CAACJ,IAAI,CAAC;MACjB,OAAOC,IAAI,CAACI,MAAM,CAAC,KAAK,CAAC;IAC3B;EACF,CAAC;AACH","ignoreList":[]}
@@ -0,0 +1,57 @@
1
+ "use strict";
2
+
3
+ /**
4
+ * Node.js Fetch Adapter
5
+ *
6
+ * Uses node-fetch or native fetch (Node 18+)
7
+ */
8
+
9
+ // Lazy import
10
+ let nodeFetch = null;
11
+
12
+ /**
13
+ * Initialize node-fetch
14
+ */
15
+ async function initNodeFetch() {
16
+ if (!nodeFetch) {
17
+ try {
18
+ // Try native fetch first (Node 18+)
19
+ if (typeof fetch !== 'undefined') {
20
+ // Use a wrapper to match the interface
21
+ nodeFetch = {
22
+ default: fetch
23
+ };
24
+ return nodeFetch;
25
+ }
26
+
27
+ // Fallback to node-fetch (dynamic import to avoid type errors if not installed)
28
+ // @ts-ignore - node-fetch may not be installed, handled at runtime
29
+ const nodeFetchModule = await import('node-fetch');
30
+ nodeFetch = {
31
+ default: nodeFetchModule.default || nodeFetchModule
32
+ };
33
+ } catch (error) {
34
+ const errorMessage = error instanceof Error ? error.message : String(error);
35
+ throw new Error(`Failed to load fetch: ${errorMessage}. Please use Node.js 18+ or install node-fetch`);
36
+ }
37
+ }
38
+ return nodeFetch;
39
+ }
40
+
41
+ /**
42
+ * Fetch Adapter Interface
43
+ */
44
+
45
+ /**
46
+ * Create Node Fetch Adapter
47
+ */
48
+ export async function createNodeFetchAdapter() {
49
+ const fetchModule = await initNodeFetch();
50
+ const fetchFn = fetchModule.default || fetchModule;
51
+ return {
52
+ fetch(url, options) {
53
+ return fetchFn(url, options);
54
+ }
55
+ };
56
+ }
57
+ //# sourceMappingURL=fetch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["nodeFetch","initNodeFetch","fetch","default","nodeFetchModule","error","errorMessage","Error","message","String","createNodeFetchAdapter","fetchModule","fetchFn","url","options"],"sourceRoot":"../../../../src","sources":["adapters/node/fetch.ts"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;;AAEA;AACA,IAAIA,SAA2C,GAAG,IAAI;;AAEtD;AACA;AACA;AACA,eAAeC,aAAaA,CAAA,EAAuC;EACjE,IAAI,CAACD,SAAS,EAAE;IACd,IAAI;MACF;MACA,IAAI,OAAOE,KAAK,KAAK,WAAW,EAAE;QAChC;QACAF,SAAS,GAAG;UACVG,OAAO,EAAED;QACX,CAAC;QACD,OAAOF,SAAS;MAClB;;MAEA;MACA;MACA,MAAMI,eAAe,GAAG,MAAM,MAAM,CAAC,YAAY,CAAC;MAClDJ,SAAS,GAAG;QACVG,OAAO,EAAGC,eAAe,CAACD,OAAO,IAAIC;MACvC,CAAC;IACH,CAAC,CAAC,OAAOC,KAAK,EAAE;MACd,MAAMC,YAAY,GAAGD,KAAK,YAAYE,KAAK,GAAGF,KAAK,CAACG,OAAO,GAAGC,MAAM,CAACJ,KAAK,CAAC;MAC3E,MAAM,IAAIE,KAAK,CAAC,yBAAyBD,YAAY,gDAAgD,CAAC;IACxG;EACF;EACA,OAAON,SAAS;AAClB;;AAEA;AACA;AACA;;AAKA;AACA;AACA;AACA,OAAO,eAAeU,sBAAsBA,CAAA,EAA0B;EACpE,MAAMC,WAAW,GAAG,MAAMV,aAAa,CAAC,CAAC;EACzC,MAAMW,OAAO,GAAID,WAAW,CAASR,OAAO,IAAIQ,WAAW;EAE3D,OAAO;IACLT,KAAKA,CAACW,GAAW,EAAEC,OAAqB,EAAqB;MAC3D,OAAOF,OAAO,CAACC,GAAG,EAAEC,OAAO,CAAC;IAC9B;EACF,CAAC;AACH","ignoreList":[]}
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+
3
+ /**
4
+ * Node.js Platform Adapter
5
+ *
6
+ * Provides storage, crypto, and fetch adapters for Node.js
7
+ */
8
+
9
+ import { createNodeStorageAdapter } from './storage';
10
+ import { createNodeCryptoAdapter } from './crypto';
11
+ import { createNodeFetchAdapter } from './fetch';
12
+
13
+ /**
14
+ * Platform Adapter Interface
15
+ */
16
+
17
+ /**
18
+ * Create Node Platform Adapter
19
+ */
20
+ export async function createNodeAdapter() {
21
+ const storage = await createNodeStorageAdapter();
22
+ const crypto = await createNodeCryptoAdapter();
23
+ const fetchAdapter = await createNodeFetchAdapter();
24
+ return {
25
+ storage,
26
+ crypto,
27
+ fetch: fetchAdapter,
28
+ platform: 'node'
29
+ };
30
+ }
31
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["createNodeStorageAdapter","createNodeCryptoAdapter","createNodeFetchAdapter","createNodeAdapter","storage","crypto","fetchAdapter","fetch","platform"],"sourceRoot":"../../../../src","sources":["adapters/node/index.ts"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;;AAEA,SAASA,wBAAwB,QAA6B,WAAW;AACzE,SAASC,uBAAuB,QAA4B,UAAU;AACtE,SAASC,sBAAsB,QAA2B,SAAS;;AAGnE;AACA;AACA;;AAQA;AACA;AACA;AACA,OAAO,eAAeC,iBAAiBA,CAAA,EAA6B;EAClE,MAAMC,OAAO,GAAG,MAAMJ,wBAAwB,CAAC,CAAC;EAChD,MAAMK,MAAM,GAAG,MAAMJ,uBAAuB,CAAC,CAAC;EAC9C,MAAMK,YAAY,GAAG,MAAMJ,sBAAsB,CAAC,CAAC;EAEnD,OAAO;IACLE,OAAO;IACPC,MAAM;IACNE,KAAK,EAAED,YAAY;IACnBE,QAAQ,EAAE;EACZ,CAAC;AACH","ignoreList":[]}
@@ -0,0 +1,159 @@
1
+ "use strict";
2
+
3
+ /**
4
+ * Node.js Storage Adapter
5
+ *
6
+ * Uses filesystem for storage
7
+ */
8
+
9
+ import * as fs from 'fs/promises';
10
+ import * as path from 'path';
11
+ import * as os from 'os';
12
+
13
+ /**
14
+ * Storage Adapter Interface
15
+ */
16
+
17
+ /**
18
+ * Get storage directory
19
+ */
20
+ function getStorageDir() {
21
+ const homeDir = os.homedir();
22
+ return path.join(homeDir, '.oxy', 'storage');
23
+ }
24
+
25
+ /**
26
+ * Get secure storage directory
27
+ */
28
+ function getSecureStorageDir() {
29
+ const homeDir = os.homedir();
30
+ return path.join(homeDir, '.oxy', 'secure');
31
+ }
32
+
33
+ /**
34
+ * Ensure directory exists
35
+ */
36
+ async function ensureDir(dirPath) {
37
+ try {
38
+ await fs.mkdir(dirPath, {
39
+ recursive: true
40
+ });
41
+ } catch (error) {
42
+ // Ignore if already exists
43
+ if (error.code !== 'EEXIST') {
44
+ throw error;
45
+ }
46
+ }
47
+ }
48
+
49
+ /**
50
+ * Get file path for a key
51
+ */
52
+ function getFilePath(key, secure = false) {
53
+ const baseDir = secure ? getSecureStorageDir() : getStorageDir();
54
+ // Sanitize key to prevent directory traversal
55
+ const sanitizedKey = key.replace(/[^a-zA-Z0-9_-]/g, '_');
56
+ return path.join(baseDir, `${sanitizedKey}.json`);
57
+ }
58
+
59
+ /**
60
+ * Create Node Storage Adapter
61
+ */
62
+ export async function createNodeStorageAdapter() {
63
+ // Ensure directories exist
64
+ await ensureDir(getStorageDir());
65
+ await ensureDir(getSecureStorageDir());
66
+ return {
67
+ // Secure storage
68
+ async secureGet(key) {
69
+ try {
70
+ const filePath = getFilePath(key, true);
71
+ const data = await fs.readFile(filePath, 'utf-8');
72
+ const parsed = JSON.parse(data);
73
+ return parsed.value || null;
74
+ } catch (error) {
75
+ if (error.code === 'ENOENT') {
76
+ return null;
77
+ }
78
+ console.warn('[NodeStorage] Failed to get secure item:', error);
79
+ return null;
80
+ }
81
+ },
82
+ async secureSet(key, value) {
83
+ try {
84
+ const filePath = getFilePath(key, true);
85
+ const data = JSON.stringify({
86
+ value,
87
+ timestamp: Date.now()
88
+ });
89
+ await fs.writeFile(filePath, data, {
90
+ mode: 0o600
91
+ }); // Read/write for owner only
92
+ } catch (error) {
93
+ console.warn('[NodeStorage] Failed to set secure item:', error);
94
+ throw error;
95
+ }
96
+ },
97
+ async secureDelete(key) {
98
+ try {
99
+ const filePath = getFilePath(key, true);
100
+ await fs.unlink(filePath);
101
+ } catch (error) {
102
+ if (error.code !== 'ENOENT') {
103
+ console.warn('[NodeStorage] Failed to delete secure item:', error);
104
+ }
105
+ }
106
+ },
107
+ isSecureStorageAvailable() {
108
+ return true;
109
+ },
110
+ // Regular storage
111
+ async get(key) {
112
+ try {
113
+ const filePath = getFilePath(key, false);
114
+ const data = await fs.readFile(filePath, 'utf-8');
115
+ const parsed = JSON.parse(data);
116
+ return parsed.value || null;
117
+ } catch (error) {
118
+ if (error.code === 'ENOENT') {
119
+ return null;
120
+ }
121
+ console.warn('[NodeStorage] Failed to get item:', error);
122
+ return null;
123
+ }
124
+ },
125
+ async set(key, value) {
126
+ try {
127
+ const filePath = getFilePath(key, false);
128
+ const data = JSON.stringify({
129
+ value,
130
+ timestamp: Date.now()
131
+ });
132
+ await fs.writeFile(filePath, data);
133
+ } catch (error) {
134
+ console.warn('[NodeStorage] Failed to set item:', error);
135
+ throw error;
136
+ }
137
+ },
138
+ async remove(key) {
139
+ try {
140
+ const filePath = getFilePath(key, false);
141
+ await fs.unlink(filePath);
142
+ } catch (error) {
143
+ if (error.code !== 'ENOENT') {
144
+ console.warn('[NodeStorage] Failed to remove item:', error);
145
+ }
146
+ }
147
+ },
148
+ async clear() {
149
+ try {
150
+ const storageDir = getStorageDir();
151
+ const files = await fs.readdir(storageDir);
152
+ await Promise.all(files.map(file => fs.unlink(path.join(storageDir, file))));
153
+ } catch (error) {
154
+ console.warn('[NodeStorage] Failed to clear storage:', error);
155
+ }
156
+ }
157
+ };
158
+ }
159
+ //# sourceMappingURL=storage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["fs","path","os","getStorageDir","homeDir","homedir","join","getSecureStorageDir","ensureDir","dirPath","mkdir","recursive","error","code","getFilePath","key","secure","baseDir","sanitizedKey","replace","createNodeStorageAdapter","secureGet","filePath","data","readFile","parsed","JSON","parse","value","console","warn","secureSet","stringify","timestamp","Date","now","writeFile","mode","secureDelete","unlink","isSecureStorageAvailable","get","set","remove","clear","storageDir","files","readdir","Promise","all","map","file"],"sourceRoot":"../../../../src","sources":["adapters/node/storage.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,232 @@
1
+ "use strict";
2
+
3
+ /**
4
+ * Device Manager
5
+ *
6
+ * Manages device identification and device sessions (Native + Web)
7
+ */
8
+
9
+ import { createIdentitySessionError, IdentitySessionErrorCodes } from './errors';
10
+ const DEVICE_STORAGE_KEY = 'oxy_device_info';
11
+ /**
12
+ * Device Manager Class
13
+ */
14
+ export class DeviceManager {
15
+ cachedDevice = null;
16
+ constructor(adapter) {
17
+ this.adapter = adapter;
18
+ }
19
+
20
+ /**
21
+ * Invalidate cached device
22
+ */
23
+ invalidateCache() {
24
+ this.cachedDevice = null;
25
+ }
26
+
27
+ /**
28
+ * Get device fingerprint
29
+ */
30
+ getDeviceFingerprint() {
31
+ const fingerprint = {
32
+ userAgent: typeof navigator !== 'undefined' ? navigator.userAgent : 'unknown',
33
+ platform: typeof navigator !== 'undefined' ? navigator.platform : 'unknown',
34
+ language: typeof navigator !== 'undefined' ? navigator.language : undefined,
35
+ timezone: typeof Intl !== 'undefined' ? Intl.DateTimeFormat().resolvedOptions().timeZone : undefined
36
+ };
37
+
38
+ // Add screen info if available
39
+ if (typeof screen !== 'undefined') {
40
+ fingerprint.screen = {
41
+ width: screen.width,
42
+ height: screen.height,
43
+ colorDepth: screen.colorDepth
44
+ };
45
+ }
46
+ return fingerprint;
47
+ }
48
+
49
+ /**
50
+ * Generate a unique device ID
51
+ */
52
+ async generateDeviceId() {
53
+ const randomBytes = await this.adapter.crypto.getRandomBytes(32);
54
+ return Array.from(randomBytes, byte => byte.toString(16).padStart(2, '0')).join('');
55
+ }
56
+
57
+ /**
58
+ * Get a user-friendly device name based on platform
59
+ */
60
+ getDefaultDeviceName() {
61
+ const fingerprint = this.getDeviceFingerprint();
62
+ const platform = (fingerprint.platform || '').toLowerCase();
63
+ const userAgent = (fingerprint.userAgent || '').toLowerCase();
64
+ if (platform.includes('win')) return 'Windows Computer';
65
+ if (platform.includes('mac')) return 'Mac Computer';
66
+ if (platform.includes('linux')) return 'Linux Computer';
67
+ if (userAgent.includes('iphone')) return 'iPhone';
68
+ if (userAgent.includes('ipad')) return 'iPad';
69
+ if (userAgent.includes('android')) return 'Android Device';
70
+ if (this.adapter.platform === 'web') return 'Web Browser';
71
+ return 'Unknown Device';
72
+ }
73
+
74
+ /**
75
+ * Get stored device info or create new one
76
+ */
77
+ async getCurrentDevice() {
78
+ if (this.cachedDevice) {
79
+ return this.cachedDevice;
80
+ }
81
+ try {
82
+ const stored = await this.adapter.storage.get(DEVICE_STORAGE_KEY);
83
+ if (stored) {
84
+ const deviceInfo = JSON.parse(stored);
85
+
86
+ // Update last used timestamp
87
+ deviceInfo.lastUsed = new Date().toISOString();
88
+ await this.saveDeviceInfo(deviceInfo);
89
+ const device = {
90
+ deviceId: deviceInfo.deviceId,
91
+ deviceName: deviceInfo.deviceName,
92
+ deviceType: this.getDeviceType(),
93
+ platform: this.adapter.platform === 'native' ? 'ios' : 'web',
94
+ // Simplified
95
+ fingerprint: deviceInfo.fingerprint,
96
+ createdAt: deviceInfo.createdAt,
97
+ updatedAt: deviceInfo.lastUsed
98
+ };
99
+ this.cachedDevice = device;
100
+ return device;
101
+ }
102
+
103
+ // Create new device info
104
+ return await this.createNewDevice();
105
+ } catch (error) {
106
+ console.error('[DeviceManager] Error getting device info:', error);
107
+ return await this.createNewDevice();
108
+ }
109
+ }
110
+
111
+ /**
112
+ * Create new device info and store it
113
+ */
114
+ async createNewDevice() {
115
+ const deviceId = await this.generateDeviceId();
116
+ const fingerprint = JSON.stringify(this.getDeviceFingerprint());
117
+ const now = new Date().toISOString();
118
+ const device = {
119
+ deviceId,
120
+ deviceName: this.getDefaultDeviceName(),
121
+ deviceType: this.getDeviceType(),
122
+ platform: this.adapter.platform === 'native' ? 'ios' : 'web',
123
+ // Simplified
124
+ fingerprint,
125
+ createdAt: now,
126
+ updatedAt: now
127
+ };
128
+ const deviceInfo = {
129
+ deviceId,
130
+ deviceName: device.deviceName,
131
+ fingerprint,
132
+ createdAt: now,
133
+ lastUsed: now
134
+ };
135
+ await this.saveDeviceInfo(deviceInfo);
136
+ this.cachedDevice = device;
137
+ return device;
138
+ }
139
+
140
+ /**
141
+ * Get device type
142
+ */
143
+ getDeviceType() {
144
+ if (this.adapter.platform === 'web') {
145
+ return 'desktop'; // Simplified - could detect mobile web
146
+ }
147
+ // For native, would need Platform.OS detection
148
+ return 'mobile';
149
+ }
150
+
151
+ /**
152
+ * Save device info to storage
153
+ */
154
+ async saveDeviceInfo(deviceInfo) {
155
+ try {
156
+ await this.adapter.storage.set(DEVICE_STORAGE_KEY, JSON.stringify(deviceInfo));
157
+ } catch (error) {
158
+ console.error('[DeviceManager] Error saving device info:', error);
159
+ throw createIdentitySessionError(IdentitySessionErrorCodes.DEVICE_CREATION_FAILED, `Failed to save device info: ${error instanceof Error ? error.message : String(error)}`);
160
+ }
161
+ }
162
+
163
+ /**
164
+ * Update device name
165
+ */
166
+ async updateDeviceName(deviceName) {
167
+ const device = await this.getCurrentDevice();
168
+ if (!device) {
169
+ throw createIdentitySessionError(IdentitySessionErrorCodes.DEVICE_NOT_FOUND, 'Device not found');
170
+ }
171
+ device.deviceName = deviceName;
172
+ device.updatedAt = new Date().toISOString();
173
+ const deviceInfo = {
174
+ deviceId: device.deviceId,
175
+ deviceName: device.deviceName,
176
+ fingerprint: device.fingerprint,
177
+ createdAt: device.createdAt || new Date().toISOString(),
178
+ lastUsed: device.updatedAt
179
+ };
180
+ await this.saveDeviceInfo(deviceInfo);
181
+ this.cachedDevice = device;
182
+ return device;
183
+ }
184
+
185
+ /**
186
+ * Get device info for session creation
187
+ */
188
+ async getDeviceInfo() {
189
+ const device = await this.getCurrentDevice();
190
+ if (!device) {
191
+ throw createIdentitySessionError(IdentitySessionErrorCodes.DEVICE_NOT_FOUND, 'Device not found');
192
+ }
193
+ const fingerprint = this.getDeviceFingerprint();
194
+ return {
195
+ deviceName: device.deviceName,
196
+ deviceType: device.deviceType,
197
+ platform: device.platform,
198
+ browser: typeof navigator !== 'undefined' ? this.getBrowserName() : undefined,
199
+ os: typeof navigator !== 'undefined' ? navigator.platform : undefined,
200
+ lastActive: new Date().toISOString(),
201
+ userAgent: fingerprint.userAgent,
202
+ fingerprint: device.fingerprint
203
+ };
204
+ }
205
+
206
+ /**
207
+ * Get browser name from user agent
208
+ */
209
+ getBrowserName() {
210
+ if (typeof navigator === 'undefined') return undefined;
211
+ const ua = navigator.userAgent.toLowerCase();
212
+ if (ua.includes('chrome')) return 'Chrome';
213
+ if (ua.includes('firefox')) return 'Firefox';
214
+ if (ua.includes('safari') && !ua.includes('chrome')) return 'Safari';
215
+ if (ua.includes('edge')) return 'Edge';
216
+ if (ua.includes('opera')) return 'Opera';
217
+ return undefined;
218
+ }
219
+
220
+ /**
221
+ * Clear stored device info
222
+ */
223
+ async clearDeviceInfo() {
224
+ try {
225
+ await this.adapter.storage.remove(DEVICE_STORAGE_KEY);
226
+ this.invalidateCache();
227
+ } catch (error) {
228
+ console.error('[DeviceManager] Error clearing device info:', error);
229
+ }
230
+ }
231
+ }
232
+ //# sourceMappingURL=DeviceManager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["createIdentitySessionError","IdentitySessionErrorCodes","DEVICE_STORAGE_KEY","DeviceManager","cachedDevice","constructor","adapter","invalidateCache","getDeviceFingerprint","fingerprint","userAgent","navigator","platform","language","undefined","timezone","Intl","DateTimeFormat","resolvedOptions","timeZone","screen","width","height","colorDepth","generateDeviceId","randomBytes","crypto","getRandomBytes","Array","from","byte","toString","padStart","join","getDefaultDeviceName","toLowerCase","includes","getCurrentDevice","stored","storage","get","deviceInfo","JSON","parse","lastUsed","Date","toISOString","saveDeviceInfo","device","deviceId","deviceName","deviceType","getDeviceType","createdAt","updatedAt","createNewDevice","error","console","stringify","now","set","DEVICE_CREATION_FAILED","Error","message","String","updateDeviceName","DEVICE_NOT_FOUND","getDeviceInfo","browser","getBrowserName","os","lastActive","ua","clearDeviceInfo","remove"],"sourceRoot":"../../../../src","sources":["core/identity-session/DeviceManager.ts"],"mappings":"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","ignoreList":[]}