@cranberry-money/shared-services 1.13.0 → 3.0.1

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 (453) hide show
  1. package/CHANGELOG.md +240 -0
  2. package/README.md +464 -190
  3. package/dist/api/functional-client.d.ts +66 -0
  4. package/dist/api/functional-client.d.ts.map +1 -0
  5. package/dist/api/functional-client.js +165 -0
  6. package/dist/auth/functional/auth-operations.d.ts +116 -0
  7. package/dist/auth/functional/auth-operations.d.ts.map +1 -0
  8. package/dist/auth/functional/auth-operations.js +246 -0
  9. package/dist/auth/functional/auth-state.d.ts +38 -0
  10. package/dist/auth/functional/auth-state.d.ts.map +1 -0
  11. package/dist/auth/functional/auth-state.js +87 -0
  12. package/dist/auth/functional/token-storage.d.ts +44 -0
  13. package/dist/auth/functional/token-storage.d.ts.map +1 -0
  14. package/dist/auth/functional/token-storage.js +178 -0
  15. package/dist/auth/react/AuthProvider.d.ts +92 -0
  16. package/dist/auth/react/AuthProvider.d.ts.map +1 -0
  17. package/dist/auth/react/AuthProvider.js +207 -0
  18. package/dist/index.d.ts +25 -35
  19. package/dist/index.d.ts.map +1 -1
  20. package/dist/index.js +114 -42
  21. package/dist/integration/blueberry-integration.d.ts +21 -0
  22. package/dist/integration/blueberry-integration.d.ts.map +1 -0
  23. package/dist/integration/blueberry-integration.js +109 -0
  24. package/dist/integration/index.d.ts +8 -0
  25. package/dist/integration/index.d.ts.map +1 -0
  26. package/dist/integration/index.js +18 -0
  27. package/dist/services/accounts.d.ts +220 -0
  28. package/dist/services/accounts.d.ts.map +1 -0
  29. package/dist/services/accounts.js +175 -0
  30. package/dist/services/banks.d.ts +123 -0
  31. package/dist/services/banks.d.ts.map +1 -0
  32. package/dist/services/banks.js +151 -0
  33. package/dist/services/cash-accounts.d.ts +112 -0
  34. package/dist/services/cash-accounts.d.ts.map +1 -0
  35. package/dist/services/cash-accounts.js +222 -0
  36. package/dist/services/documents.d.ts +143 -0
  37. package/dist/services/documents.d.ts.map +1 -0
  38. package/dist/services/documents.js +253 -0
  39. package/dist/services/factories/account-factory.d.ts +16 -0
  40. package/dist/services/factories/account-factory.d.ts.map +1 -0
  41. package/dist/services/factories/account-factory.js +79 -0
  42. package/dist/services/factories/auth-factory.d.ts +23 -0
  43. package/dist/services/factories/auth-factory.d.ts.map +1 -0
  44. package/dist/services/factories/auth-factory.js +75 -0
  45. package/dist/services/factories/bank-factory.d.ts +16 -0
  46. package/dist/services/factories/bank-factory.d.ts.map +1 -0
  47. package/dist/services/factories/bank-factory.js +72 -0
  48. package/dist/services/factories/cash-account-factory.d.ts +16 -0
  49. package/dist/services/factories/cash-account-factory.d.ts.map +1 -0
  50. package/dist/services/factories/cash-account-factory.js +74 -0
  51. package/dist/services/factories/document-factory.d.ts +16 -0
  52. package/dist/services/factories/document-factory.d.ts.map +1 -0
  53. package/dist/services/factories/document-factory.js +85 -0
  54. package/dist/services/factories/index.d.ts +21 -0
  55. package/dist/services/factories/index.d.ts.map +1 -0
  56. package/dist/services/factories/index.js +40 -0
  57. package/dist/services/factories/instrument-factory.d.ts +16 -0
  58. package/dist/services/factories/instrument-factory.d.ts.map +1 -0
  59. package/dist/services/factories/instrument-factory.js +68 -0
  60. package/dist/services/factories/master-factory.d.ts +74 -0
  61. package/dist/services/factories/master-factory.d.ts.map +1 -0
  62. package/dist/services/factories/master-factory.js +183 -0
  63. package/dist/services/factories/portfolio-factory.d.ts +16 -0
  64. package/dist/services/factories/portfolio-factory.d.ts.map +1 -0
  65. package/dist/services/factories/portfolio-factory.js +74 -0
  66. package/dist/services/factories/portfolio-template-factory.d.ts +16 -0
  67. package/dist/services/factories/portfolio-template-factory.d.ts.map +1 -0
  68. package/dist/services/factories/portfolio-template-factory.js +76 -0
  69. package/dist/services/factories/reference-data-factory.d.ts +16 -0
  70. package/dist/services/factories/reference-data-factory.d.ts.map +1 -0
  71. package/dist/services/factories/reference-data-factory.js +86 -0
  72. package/dist/services/factories/tax-residency-factory.d.ts +16 -0
  73. package/dist/services/factories/tax-residency-factory.d.ts.map +1 -0
  74. package/dist/services/factories/tax-residency-factory.js +73 -0
  75. package/dist/services/factories/trade-factory.d.ts +16 -0
  76. package/dist/services/factories/trade-factory.d.ts.map +1 -0
  77. package/dist/services/factories/trade-factory.js +79 -0
  78. package/dist/services/factories/types.d.ts +250 -0
  79. package/dist/services/factories/types.d.ts.map +1 -0
  80. package/dist/services/factories/types.js +32 -0
  81. package/dist/services/factories/withdrawal-factory.d.ts +16 -0
  82. package/dist/services/factories/withdrawal-factory.d.ts.map +1 -0
  83. package/dist/services/factories/withdrawal-factory.js +78 -0
  84. package/dist/services/instruments.d.ts +138 -0
  85. package/dist/services/instruments.d.ts.map +1 -0
  86. package/dist/services/instruments.js +178 -0
  87. package/dist/services/portfolio-templates.d.ts +142 -0
  88. package/dist/services/portfolio-templates.d.ts.map +1 -0
  89. package/dist/services/portfolio-templates.js +201 -0
  90. package/dist/services/portfolios.d.ts +157 -0
  91. package/dist/services/portfolios.d.ts.map +1 -0
  92. package/dist/services/portfolios.js +144 -0
  93. package/dist/services/reference-data.d.ts +185 -0
  94. package/dist/services/reference-data.d.ts.map +1 -0
  95. package/dist/services/reference-data.js +245 -0
  96. package/dist/services/tax-residencies.d.ts +83 -0
  97. package/dist/services/tax-residencies.d.ts.map +1 -0
  98. package/dist/services/tax-residencies.js +179 -0
  99. package/dist/services/trades.d.ts +190 -0
  100. package/dist/services/trades.d.ts.map +1 -0
  101. package/dist/services/trades.js +207 -0
  102. package/dist/services/withdrawals.d.ts +236 -0
  103. package/dist/services/withdrawals.d.ts.map +1 -0
  104. package/dist/services/withdrawals.js +345 -0
  105. package/package.json +39 -16
  106. package/dist/adapters/MobileApiClient.d.ts +0 -68
  107. package/dist/adapters/MobileApiClient.d.ts.map +0 -1
  108. package/dist/adapters/MobileApiClient.js +0 -240
  109. package/dist/adapters/MobileTokenStorage.d.ts +0 -43
  110. package/dist/adapters/MobileTokenStorage.d.ts.map +0 -1
  111. package/dist/adapters/MobileTokenStorage.js +0 -128
  112. package/dist/adapters/WebApiClient.d.ts +0 -28
  113. package/dist/adapters/WebApiClient.d.ts.map +0 -1
  114. package/dist/adapters/WebApiClient.js +0 -119
  115. package/dist/adapters/WebTokenStorage.d.ts +0 -38
  116. package/dist/adapters/WebTokenStorage.d.ts.map +0 -1
  117. package/dist/adapters/WebTokenStorage.js +0 -86
  118. package/dist/api/apiClient.d.ts +0 -31
  119. package/dist/api/apiClient.d.ts.map +0 -1
  120. package/dist/api/apiClient.js +0 -49
  121. package/dist/api/types.d.ts +0 -51
  122. package/dist/api/types.d.ts.map +0 -1
  123. package/dist/api/types.js +0 -4
  124. package/dist/auth/AuthManager.d.ts +0 -81
  125. package/dist/auth/AuthManager.d.ts.map +0 -1
  126. package/dist/auth/AuthManager.js +0 -223
  127. package/dist/auth/createAuthManager.d.ts +0 -63
  128. package/dist/auth/createAuthManager.d.ts.map +0 -1
  129. package/dist/auth/createAuthManager.js +0 -103
  130. package/dist/auth/useAuthManager.d.ts +0 -66
  131. package/dist/auth/useAuthManager.d.ts.map +0 -1
  132. package/dist/auth/useAuthManager.js +0 -133
  133. package/dist/config/serviceConfig.d.ts +0 -37
  134. package/dist/config/serviceConfig.d.ts.map +0 -1
  135. package/dist/config/serviceConfig.js +0 -70
  136. package/dist/core/BaseApiClient.d.ts +0 -82
  137. package/dist/core/BaseApiClient.d.ts.map +0 -1
  138. package/dist/core/BaseApiClient.js +0 -89
  139. package/dist/core/TokenStorage.d.ts +0 -45
  140. package/dist/core/TokenStorage.d.ts.map +0 -1
  141. package/dist/core/TokenStorage.js +0 -23
  142. package/dist/query/QueryClient.d.ts +0 -82
  143. package/dist/query/QueryClient.d.ts.map +0 -1
  144. package/dist/query/QueryClient.js +0 -136
  145. package/dist/query/useAuth.d.ts +0 -64
  146. package/dist/query/useAuth.d.ts.map +0 -1
  147. package/dist/query/useAuth.js +0 -144
  148. package/dist/query/usePortfolios.d.ts +0 -79
  149. package/dist/query/usePortfolios.d.ts.map +0 -1
  150. package/dist/query/usePortfolios.js +0 -172
  151. package/dist/services/AuthService.d.ts +0 -75
  152. package/dist/services/AuthService.d.ts.map +0 -1
  153. package/dist/services/AuthService.js +0 -83
  154. package/dist/services/BaseService.d.ts +0 -48
  155. package/dist/services/BaseService.d.ts.map +0 -1
  156. package/dist/services/BaseService.js +0 -51
  157. package/dist/services/PortfolioService.d.ts +0 -100
  158. package/dist/services/PortfolioService.d.ts.map +0 -1
  159. package/dist/services/PortfolioService.js +0 -68
  160. package/dist/services/accounts/constants.d.ts +0 -24
  161. package/dist/services/accounts/constants.d.ts.map +0 -1
  162. package/dist/services/accounts/constants.js +0 -30
  163. package/dist/services/accounts/index.d.ts +0 -7
  164. package/dist/services/accounts/index.d.ts.map +0 -1
  165. package/dist/services/accounts/index.js +0 -6
  166. package/dist/services/accounts/service.d.ts +0 -11
  167. package/dist/services/accounts/service.d.ts.map +0 -1
  168. package/dist/services/accounts/service.js +0 -19
  169. package/dist/services/accounts/types.d.ts +0 -15
  170. package/dist/services/accounts/types.d.ts.map +0 -1
  171. package/dist/services/accounts/types.js +0 -4
  172. package/dist/services/auth/constants.d.ts +0 -30
  173. package/dist/services/auth/constants.d.ts.map +0 -1
  174. package/dist/services/auth/constants.js +0 -37
  175. package/dist/services/auth/index.d.ts +0 -8
  176. package/dist/services/auth/index.d.ts.map +0 -1
  177. package/dist/services/auth/index.js +0 -7
  178. package/dist/services/auth/service.d.ts +0 -8
  179. package/dist/services/auth/service.d.ts.map +0 -1
  180. package/dist/services/auth/service.js +0 -23
  181. package/dist/services/auth/types.d.ts +0 -38
  182. package/dist/services/auth/types.d.ts.map +0 -1
  183. package/dist/services/auth/types.js +0 -1
  184. package/dist/services/auth/utils.d.ts +0 -46
  185. package/dist/services/auth/utils.d.ts.map +0 -1
  186. package/dist/services/auth/utils.js +0 -113
  187. package/dist/services/banks/constants.d.ts +0 -47
  188. package/dist/services/banks/constants.d.ts.map +0 -1
  189. package/dist/services/banks/constants.js +0 -98
  190. package/dist/services/banks/index.d.ts +0 -8
  191. package/dist/services/banks/index.d.ts.map +0 -1
  192. package/dist/services/banks/index.js +0 -7
  193. package/dist/services/banks/service.d.ts +0 -9
  194. package/dist/services/banks/service.d.ts.map +0 -1
  195. package/dist/services/banks/service.js +0 -38
  196. package/dist/services/banks/types.d.ts +0 -36
  197. package/dist/services/banks/types.d.ts.map +0 -1
  198. package/dist/services/banks/types.js +0 -4
  199. package/dist/services/cash_accounts/constants.d.ts +0 -7
  200. package/dist/services/cash_accounts/constants.d.ts.map +0 -1
  201. package/dist/services/cash_accounts/constants.js +0 -7
  202. package/dist/services/cash_accounts/index.d.ts +0 -5
  203. package/dist/services/cash_accounts/index.d.ts.map +0 -1
  204. package/dist/services/cash_accounts/index.js +0 -6
  205. package/dist/services/cash_accounts/service.d.ts +0 -8
  206. package/dist/services/cash_accounts/service.d.ts.map +0 -1
  207. package/dist/services/cash_accounts/service.js +0 -32
  208. package/dist/services/cash_accounts/transactions/constants.d.ts +0 -18
  209. package/dist/services/cash_accounts/transactions/constants.d.ts.map +0 -1
  210. package/dist/services/cash_accounts/transactions/constants.js +0 -25
  211. package/dist/services/cash_accounts/transactions/index.d.ts +0 -5
  212. package/dist/services/cash_accounts/transactions/index.d.ts.map +0 -1
  213. package/dist/services/cash_accounts/transactions/index.js +0 -6
  214. package/dist/services/cash_accounts/transactions/service.d.ts +0 -13
  215. package/dist/services/cash_accounts/transactions/service.d.ts.map +0 -1
  216. package/dist/services/cash_accounts/transactions/service.js +0 -75
  217. package/dist/services/cash_accounts/transactions/types.d.ts +0 -38
  218. package/dist/services/cash_accounts/transactions/types.d.ts.map +0 -1
  219. package/dist/services/cash_accounts/transactions/types.js +0 -11
  220. package/dist/services/cash_accounts/types.d.ts +0 -24
  221. package/dist/services/cash_accounts/types.d.ts.map +0 -1
  222. package/dist/services/cash_accounts/types.js +0 -4
  223. package/dist/services/countries/constants.d.ts +0 -9
  224. package/dist/services/countries/constants.d.ts.map +0 -1
  225. package/dist/services/countries/constants.js +0 -10
  226. package/dist/services/countries/index.d.ts +0 -5
  227. package/dist/services/countries/index.d.ts.map +0 -1
  228. package/dist/services/countries/index.js +0 -6
  229. package/dist/services/countries/service.d.ts +0 -18
  230. package/dist/services/countries/service.d.ts.map +0 -1
  231. package/dist/services/countries/service.js +0 -32
  232. package/dist/services/countries/types.d.ts +0 -24
  233. package/dist/services/countries/types.d.ts.map +0 -1
  234. package/dist/services/countries/types.js +0 -1
  235. package/dist/services/countries/utils.d.ts +0 -38
  236. package/dist/services/countries/utils.d.ts.map +0 -1
  237. package/dist/services/countries/utils.js +0 -62
  238. package/dist/services/documents/constants.d.ts +0 -55
  239. package/dist/services/documents/constants.d.ts.map +0 -1
  240. package/dist/services/documents/constants.js +0 -50
  241. package/dist/services/documents/index.d.ts +0 -6
  242. package/dist/services/documents/index.d.ts.map +0 -1
  243. package/dist/services/documents/index.js +0 -6
  244. package/dist/services/documents/service.d.ts +0 -50
  245. package/dist/services/documents/service.d.ts.map +0 -1
  246. package/dist/services/documents/service.js +0 -116
  247. package/dist/services/documents/types.d.ts +0 -47
  248. package/dist/services/documents/types.d.ts.map +0 -1
  249. package/dist/services/documents/types.js +0 -1
  250. package/dist/services/documents/utils.d.ts +0 -26
  251. package/dist/services/documents/utils.d.ts.map +0 -1
  252. package/dist/services/documents/utils.js +0 -37
  253. package/dist/services/industries/constants.d.ts +0 -8
  254. package/dist/services/industries/constants.d.ts.map +0 -1
  255. package/dist/services/industries/constants.js +0 -9
  256. package/dist/services/industries/index.d.ts +0 -6
  257. package/dist/services/industries/index.d.ts.map +0 -1
  258. package/dist/services/industries/index.js +0 -6
  259. package/dist/services/industries/service.d.ts +0 -18
  260. package/dist/services/industries/service.d.ts.map +0 -1
  261. package/dist/services/industries/service.js +0 -43
  262. package/dist/services/industries/types.d.ts +0 -21
  263. package/dist/services/industries/types.d.ts.map +0 -1
  264. package/dist/services/industries/types.js +0 -1
  265. package/dist/services/industries/utils.d.ts +0 -47
  266. package/dist/services/industries/utils.d.ts.map +0 -1
  267. package/dist/services/industries/utils.js +0 -86
  268. package/dist/services/instruments/constants.d.ts +0 -38
  269. package/dist/services/instruments/constants.d.ts.map +0 -1
  270. package/dist/services/instruments/constants.js +0 -36
  271. package/dist/services/instruments/index.d.ts +0 -5
  272. package/dist/services/instruments/index.d.ts.map +0 -1
  273. package/dist/services/instruments/index.js +0 -6
  274. package/dist/services/instruments/service.d.ts +0 -54
  275. package/dist/services/instruments/service.d.ts.map +0 -1
  276. package/dist/services/instruments/service.js +0 -106
  277. package/dist/services/instruments/types.d.ts +0 -83
  278. package/dist/services/instruments/types.d.ts.map +0 -1
  279. package/dist/services/instruments/types.js +0 -1
  280. package/dist/services/instruments/utils.d.ts +0 -50
  281. package/dist/services/instruments/utils.d.ts.map +0 -1
  282. package/dist/services/instruments/utils.js +0 -111
  283. package/dist/services/portfolio_templates/constants.d.ts +0 -8
  284. package/dist/services/portfolio_templates/constants.d.ts.map +0 -1
  285. package/dist/services/portfolio_templates/constants.js +0 -8
  286. package/dist/services/portfolio_templates/index.d.ts +0 -5
  287. package/dist/services/portfolio_templates/index.d.ts.map +0 -1
  288. package/dist/services/portfolio_templates/index.js +0 -5
  289. package/dist/services/portfolio_templates/service.d.ts +0 -6
  290. package/dist/services/portfolio_templates/service.d.ts.map +0 -1
  291. package/dist/services/portfolio_templates/service.js +0 -14
  292. package/dist/services/portfolio_templates/types.d.ts +0 -49
  293. package/dist/services/portfolio_templates/types.d.ts.map +0 -1
  294. package/dist/services/portfolio_templates/types.js +0 -1
  295. package/dist/services/portfolio_templates/utils.d.ts +0 -8
  296. package/dist/services/portfolio_templates/utils.d.ts.map +0 -1
  297. package/dist/services/portfolio_templates/utils.js +0 -13
  298. package/dist/services/portfolios/allocations/index.d.ts +0 -7
  299. package/dist/services/portfolios/allocations/index.d.ts.map +0 -1
  300. package/dist/services/portfolios/allocations/index.js +0 -6
  301. package/dist/services/portfolios/allocations/service.d.ts +0 -6
  302. package/dist/services/portfolios/allocations/service.d.ts.map +0 -1
  303. package/dist/services/portfolios/allocations/service.js +0 -19
  304. package/dist/services/portfolios/allocations/types.d.ts +0 -17
  305. package/dist/services/portfolios/allocations/types.d.ts.map +0 -1
  306. package/dist/services/portfolios/allocations/types.js +0 -4
  307. package/dist/services/portfolios/allocations/utils.d.ts +0 -3
  308. package/dist/services/portfolios/allocations/utils.d.ts.map +0 -1
  309. package/dist/services/portfolios/allocations/utils.js +0 -7
  310. package/dist/services/portfolios/constants.d.ts +0 -45
  311. package/dist/services/portfolios/constants.d.ts.map +0 -1
  312. package/dist/services/portfolios/constants.js +0 -57
  313. package/dist/services/portfolios/holdings/index.d.ts +0 -7
  314. package/dist/services/portfolios/holdings/index.d.ts.map +0 -1
  315. package/dist/services/portfolios/holdings/index.js +0 -6
  316. package/dist/services/portfolios/holdings/service.d.ts +0 -10
  317. package/dist/services/portfolios/holdings/service.d.ts.map +0 -1
  318. package/dist/services/portfolios/holdings/service.js +0 -53
  319. package/dist/services/portfolios/holdings/types.d.ts +0 -42
  320. package/dist/services/portfolios/holdings/types.d.ts.map +0 -1
  321. package/dist/services/portfolios/holdings/types.js +0 -4
  322. package/dist/services/portfolios/holdings/utils.d.ts +0 -8
  323. package/dist/services/portfolios/holdings/utils.d.ts.map +0 -1
  324. package/dist/services/portfolios/holdings/utils.js +0 -82
  325. package/dist/services/portfolios/index.d.ts +0 -10
  326. package/dist/services/portfolios/index.d.ts.map +0 -1
  327. package/dist/services/portfolios/index.js +0 -10
  328. package/dist/services/portfolios/service.d.ts +0 -7
  329. package/dist/services/portfolios/service.d.ts.map +0 -1
  330. package/dist/services/portfolios/service.js +0 -19
  331. package/dist/services/portfolios/types.d.ts +0 -29
  332. package/dist/services/portfolios/types.d.ts.map +0 -1
  333. package/dist/services/portfolios/types.js +0 -1
  334. package/dist/services/portfolios/utils.d.ts +0 -5
  335. package/dist/services/portfolios/utils.d.ts.map +0 -1
  336. package/dist/services/portfolios/utils.js +0 -26
  337. package/dist/services/sectors/constants.d.ts +0 -7
  338. package/dist/services/sectors/constants.d.ts.map +0 -1
  339. package/dist/services/sectors/constants.js +0 -7
  340. package/dist/services/sectors/index.d.ts +0 -6
  341. package/dist/services/sectors/index.d.ts.map +0 -1
  342. package/dist/services/sectors/index.js +0 -6
  343. package/dist/services/sectors/service.d.ts +0 -14
  344. package/dist/services/sectors/service.d.ts.map +0 -1
  345. package/dist/services/sectors/service.js +0 -32
  346. package/dist/services/sectors/types.d.ts +0 -19
  347. package/dist/services/sectors/types.d.ts.map +0 -1
  348. package/dist/services/sectors/types.js +0 -1
  349. package/dist/services/sectors/utils.d.ts +0 -31
  350. package/dist/services/sectors/utils.d.ts.map +0 -1
  351. package/dist/services/sectors/utils.js +0 -54
  352. package/dist/services/stock_exchanges/constants.d.ts +0 -7
  353. package/dist/services/stock_exchanges/constants.d.ts.map +0 -1
  354. package/dist/services/stock_exchanges/constants.js +0 -7
  355. package/dist/services/stock_exchanges/index.d.ts +0 -6
  356. package/dist/services/stock_exchanges/index.d.ts.map +0 -1
  357. package/dist/services/stock_exchanges/index.js +0 -6
  358. package/dist/services/stock_exchanges/service.d.ts +0 -4
  359. package/dist/services/stock_exchanges/service.d.ts.map +0 -1
  360. package/dist/services/stock_exchanges/service.js +0 -26
  361. package/dist/services/stock_exchanges/types.d.ts +0 -28
  362. package/dist/services/stock_exchanges/types.d.ts.map +0 -1
  363. package/dist/services/stock_exchanges/types.js +0 -1
  364. package/dist/services/stock_exchanges/utils.d.ts +0 -8
  365. package/dist/services/stock_exchanges/utils.d.ts.map +0 -1
  366. package/dist/services/stock_exchanges/utils.js +0 -37
  367. package/dist/services/tax_residencies/constants.d.ts +0 -7
  368. package/dist/services/tax_residencies/constants.d.ts.map +0 -1
  369. package/dist/services/tax_residencies/constants.js +0 -7
  370. package/dist/services/tax_residencies/index.d.ts +0 -10
  371. package/dist/services/tax_residencies/index.d.ts.map +0 -1
  372. package/dist/services/tax_residencies/index.js +0 -11
  373. package/dist/services/tax_residencies/service.d.ts +0 -6
  374. package/dist/services/tax_residencies/service.d.ts.map +0 -1
  375. package/dist/services/tax_residencies/service.js +0 -20
  376. package/dist/services/tax_residencies/types.d.ts +0 -26
  377. package/dist/services/tax_residencies/types.d.ts.map +0 -1
  378. package/dist/services/tax_residencies/types.js +0 -4
  379. package/dist/services/tax_residencies/utils.d.ts +0 -9
  380. package/dist/services/tax_residencies/utils.d.ts.map +0 -1
  381. package/dist/services/tax_residencies/utils.js +0 -19
  382. package/dist/services/trades/constants.d.ts +0 -47
  383. package/dist/services/trades/constants.d.ts.map +0 -1
  384. package/dist/services/trades/constants.js +0 -61
  385. package/dist/services/trades/index.d.ts +0 -4
  386. package/dist/services/trades/index.d.ts.map +0 -1
  387. package/dist/services/trades/index.js +0 -12
  388. package/dist/services/trades/service.d.ts +0 -19
  389. package/dist/services/trades/service.d.ts.map +0 -1
  390. package/dist/services/trades/service.js +0 -177
  391. package/dist/services/trades/types.d.ts +0 -114
  392. package/dist/services/trades/types.d.ts.map +0 -1
  393. package/dist/services/trades/types.js +0 -1
  394. package/dist/services/users/constants.d.ts +0 -7
  395. package/dist/services/users/constants.d.ts.map +0 -1
  396. package/dist/services/users/constants.js +0 -8
  397. package/dist/services/users/index.d.ts +0 -9
  398. package/dist/services/users/index.d.ts.map +0 -1
  399. package/dist/services/users/index.js +0 -9
  400. package/dist/services/users/investment_preferences/constants.d.ts +0 -7
  401. package/dist/services/users/investment_preferences/constants.d.ts.map +0 -1
  402. package/dist/services/users/investment_preferences/constants.js +0 -7
  403. package/dist/services/users/investment_preferences/index.d.ts +0 -7
  404. package/dist/services/users/investment_preferences/index.d.ts.map +0 -1
  405. package/dist/services/users/investment_preferences/index.js +0 -6
  406. package/dist/services/users/investment_preferences/service.d.ts +0 -5
  407. package/dist/services/users/investment_preferences/service.d.ts.map +0 -1
  408. package/dist/services/users/investment_preferences/service.js +0 -12
  409. package/dist/services/users/investment_preferences/types.d.ts +0 -23
  410. package/dist/services/users/investment_preferences/types.d.ts.map +0 -1
  411. package/dist/services/users/investment_preferences/types.js +0 -1
  412. package/dist/services/users/service.d.ts +0 -6
  413. package/dist/services/users/service.d.ts.map +0 -1
  414. package/dist/services/users/service.js +0 -15
  415. package/dist/services/users/types.d.ts +0 -32
  416. package/dist/services/users/types.d.ts.map +0 -1
  417. package/dist/services/users/types.js +0 -1
  418. package/dist/services/users/utils.d.ts +0 -2
  419. package/dist/services/users/utils.d.ts.map +0 -1
  420. package/dist/services/users/utils.js +0 -6
  421. package/dist/services/withdrawals/constants.d.ts +0 -67
  422. package/dist/services/withdrawals/constants.d.ts.map +0 -1
  423. package/dist/services/withdrawals/constants.js +0 -91
  424. package/dist/services/withdrawals/index.d.ts +0 -6
  425. package/dist/services/withdrawals/index.d.ts.map +0 -1
  426. package/dist/services/withdrawals/index.js +0 -7
  427. package/dist/services/withdrawals/service.d.ts +0 -4
  428. package/dist/services/withdrawals/service.d.ts.map +0 -1
  429. package/dist/services/withdrawals/service.js +0 -5
  430. package/dist/services/withdrawals/types.d.ts +0 -81
  431. package/dist/services/withdrawals/types.d.ts.map +0 -1
  432. package/dist/services/withdrawals/types.js +0 -1
  433. package/dist/services/withdrawals/utils.d.ts +0 -20
  434. package/dist/services/withdrawals/utils.d.ts.map +0 -1
  435. package/dist/services/withdrawals/utils.js +0 -110
  436. package/dist/services/withdrawals/withdrawal_liquidations/index.d.ts +0 -3
  437. package/dist/services/withdrawals/withdrawal_liquidations/index.d.ts.map +0 -1
  438. package/dist/services/withdrawals/withdrawal_liquidations/index.js +0 -2
  439. package/dist/services/withdrawals/withdrawal_liquidations/service.d.ts +0 -8
  440. package/dist/services/withdrawals/withdrawal_liquidations/service.d.ts.map +0 -1
  441. package/dist/services/withdrawals/withdrawal_liquidations/service.js +0 -68
  442. package/dist/services/withdrawals/withdrawal_liquidations/types.d.ts +0 -2
  443. package/dist/services/withdrawals/withdrawal_liquidations/types.d.ts.map +0 -1
  444. package/dist/services/withdrawals/withdrawal_liquidations/types.js +0 -1
  445. package/dist/services/withdrawals/withdrawal_requests/index.d.ts +0 -3
  446. package/dist/services/withdrawals/withdrawal_requests/index.d.ts.map +0 -1
  447. package/dist/services/withdrawals/withdrawal_requests/index.js +0 -2
  448. package/dist/services/withdrawals/withdrawal_requests/service.d.ts +0 -7
  449. package/dist/services/withdrawals/withdrawal_requests/service.d.ts.map +0 -1
  450. package/dist/services/withdrawals/withdrawal_requests/service.js +0 -55
  451. package/dist/services/withdrawals/withdrawal_requests/types.d.ts +0 -2
  452. package/dist/services/withdrawals/withdrawal_requests/types.d.ts.map +0 -1
  453. package/dist/services/withdrawals/withdrawal_requests/types.js +0 -1
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@cranberry-money/shared-services",
3
- "version": "1.13.0",
4
- "description": "Shared API services and client for MyPortfolio platform",
3
+ "version": "3.0.1",
4
+ "description": "Functional architecture shared services with pure functions, dependency injection, and comprehensive TypeScript support for the MyPortfolio platform",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
7
7
  "exports": {
@@ -12,46 +12,69 @@
12
12
  }
13
13
  },
14
14
  "files": [
15
- "dist"
15
+ "dist",
16
+ "README.md",
17
+ "CHANGELOG.md",
18
+ "docs"
16
19
  ],
17
20
  "scripts": {
18
21
  "build": "tsc",
19
22
  "clean": "rm -rf dist",
20
23
  "typecheck": "tsc --noEmit",
21
- "dev": "tsc --watch"
24
+ "dev": "tsc --watch",
25
+ "lint": "eslint src --ext .ts,.tsx",
26
+ "lint:fix": "eslint src --ext .ts,.tsx --fix"
22
27
  },
23
28
  "dependencies": {
24
- "@cranberry-money/shared-constants": "^1.0.1",
25
- "@cranberry-money/shared-types": "^1.0.1",
26
29
  "axios": "^1.7.0"
27
30
  },
28
31
  "peerDependencies": {
29
- "@tanstack/react-query": ">=5.0.0",
30
- "typescript": ">=5.0.0"
32
+ "react": ">=18.0.0",
33
+ "typescript": ">=4.5.0"
34
+ },
35
+ "peerDependenciesMeta": {
36
+ "react": {
37
+ "optional": false
38
+ }
31
39
  },
32
40
  "devDependencies": {
33
- "@tanstack/react-query": "^5.83.0",
34
- "@types/react": "^19.1.9",
35
- "@types/react-dom": "^19.1.7",
41
+ "@types/node": "^20.0.0",
42
+ "@types/react": "^18.0.0",
43
+ "@typescript-eslint/eslint-plugin": "^6.0.0",
44
+ "@typescript-eslint/parser": "^6.0.0",
45
+ "eslint": "^8.0.0",
46
+ "react": "^18.0.0",
47
+ "tsx": "^4.0.0",
36
48
  "typescript": "^5.0.0"
37
49
  },
38
50
  "keywords": [
51
+ "functional-programming",
52
+ "dependency-injection",
53
+ "react",
39
54
  "typescript",
40
- "api",
41
- "services",
42
- "shared",
55
+ "api-client",
56
+ "authentication",
43
57
  "portfolio",
44
- "react-query"
58
+ "services",
59
+ "pure-functions"
45
60
  ],
46
61
  "author": "MyPortfolio Team",
47
62
  "license": "MIT",
48
63
  "publishConfig": {
49
- "access": "restricted",
64
+ "access": "public",
50
65
  "registry": "https://registry.npmjs.org/"
51
66
  },
52
67
  "repository": {
53
68
  "type": "git",
54
69
  "url": "git+https://github.com/your-org/cranberry.git",
55
70
  "directory": "packages/shared-services"
71
+ },
72
+ "bugs": {
73
+ "url": "https://github.com/your-org/cranberry/issues"
74
+ },
75
+ "homepage": "https://github.com/your-org/cranberry/tree/main/packages/shared-services#readme",
76
+ "engines": {
77
+ "node": ">=16.0.0",
78
+ "npm": ">=8.0.0"
56
79
  }
57
80
  }
@@ -1,68 +0,0 @@
1
- /**
2
- * Mobile-specific API client implementation
3
- *
4
- * This implementation is designed for React Native environments
5
- * and includes mobile-specific features like network state awareness,
6
- * offline capability, and retry logic.
7
- */
8
- import { BaseApiClient, type RequestConfig, type ApiResponse, type ApiClientConfig } from '../core/BaseApiClient';
9
- export interface MobileApiClientConfig extends ApiClientConfig {
10
- retryAttempts?: number;
11
- retryDelay?: number;
12
- offlineQueueEnabled?: boolean;
13
- }
14
- export declare class MobileApiClient extends BaseApiClient {
15
- private retryAttempts;
16
- private retryDelay;
17
- private offlineQueueEnabled;
18
- private offlineQueue;
19
- private isOnline;
20
- constructor(config: MobileApiClientConfig);
21
- request<T = unknown>(config: RequestConfig): Promise<ApiResponse<T>>;
22
- private executeRequest;
23
- /**
24
- * Queue request for when back online
25
- */
26
- private queueRequest;
27
- /**
28
- * Process offline queue when back online
29
- */
30
- syncWhenOnline(): Promise<void>;
31
- /**
32
- * Enable offline mode
33
- */
34
- enableOfflineMode(): void;
35
- /**
36
- * Enable online mode and sync queue
37
- */
38
- enableOnlineMode(): Promise<void>;
39
- /**
40
- * Set network state
41
- */
42
- setNetworkState(isOnline: boolean): void;
43
- /**
44
- * Parse response data based on content type
45
- */
46
- private parseResponseData;
47
- /**
48
- * Convert Headers to plain object
49
- */
50
- private parseResponseHeaders;
51
- /**
52
- * Check if error is an API error
53
- */
54
- private isApiError;
55
- /**
56
- * Determine if request should be retried
57
- */
58
- private shouldRetry;
59
- /**
60
- * Handle token refresh for mobile (secure storage based)
61
- */
62
- protected handleTokenRefresh(): Promise<boolean>;
63
- /**
64
- * Utility delay function
65
- */
66
- private delay;
67
- }
68
- //# sourceMappingURL=MobileApiClient.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"MobileApiClient.d.ts","sourceRoot":"","sources":["../../src/adapters/MobileApiClient.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,EAAE,aAAa,EAAE,KAAK,aAAa,EAAE,KAAK,WAAW,EAAE,KAAK,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAElH,MAAM,WAAW,qBAAsB,SAAQ,eAAe;IAC5D,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,mBAAmB,CAAC,EAAE,OAAO,CAAC;CAC/B;AAED,qBAAa,eAAgB,SAAQ,aAAa;IAChD,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,mBAAmB,CAAU;IACrC,OAAO,CAAC,YAAY,CAAuB;IAC3C,OAAO,CAAC,QAAQ,CAAiB;gBAErB,MAAM,EAAE,qBAAqB;IAcnC,OAAO,CAAC,CAAC,GAAG,OAAO,EAAE,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;YAS5D,cAAc;IAwF5B;;OAEG;YACW,YAAY;IAU1B;;OAEG;IACG,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC;IAgBrC;;OAEG;IACH,iBAAiB,IAAI,IAAI;IAIzB;;OAEG;IACG,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC;IAOvC;;OAEG;IACH,eAAe,CAAC,QAAQ,EAAE,OAAO,GAAG,IAAI;IAUxC;;OAEG;YACW,iBAAiB;IAe/B;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAQ5B;;OAEG;IACH,OAAO,CAAC,UAAU;IAOlB;;OAEG;IACH,OAAO,CAAC,WAAW;IAsBnB;;OAEG;cACa,kBAAkB,IAAI,OAAO,CAAC,OAAO,CAAC;IAyBtD;;OAEG;IACH,OAAO,CAAC,KAAK;CAGd"}
@@ -1,240 +0,0 @@
1
- /**
2
- * Mobile-specific API client implementation
3
- *
4
- * This implementation is designed for React Native environments
5
- * and includes mobile-specific features like network state awareness,
6
- * offline capability, and retry logic.
7
- */
8
- import { HTTP_HEADER_CONTENT_TYPE, CONTENT_TYPE_APPLICATION_JSON } from '@cranberry-money/shared-constants';
9
- import { BaseApiClient } from '../core/BaseApiClient';
10
- export class MobileApiClient extends BaseApiClient {
11
- constructor(config) {
12
- super({
13
- ...config,
14
- defaultHeaders: {
15
- [HTTP_HEADER_CONTENT_TYPE]: CONTENT_TYPE_APPLICATION_JSON,
16
- ...config.defaultHeaders,
17
- },
18
- });
19
- this.offlineQueue = [];
20
- this.isOnline = true;
21
- this.retryAttempts = config.retryAttempts || 3;
22
- this.retryDelay = config.retryDelay || 1000;
23
- this.offlineQueueEnabled = config.offlineQueueEnabled || false;
24
- }
25
- async request(config) {
26
- // Check if we're offline and should queue the request
27
- if (!this.isOnline && this.offlineQueueEnabled) {
28
- return this.queueRequest(config);
29
- }
30
- return this.executeRequest(config);
31
- }
32
- async executeRequest(config, attempt = 1) {
33
- const url = this.buildUrl(config.url);
34
- const headers = await this.buildHeaders(config.headers);
35
- // Build fetch options
36
- const fetchOptions = {
37
- method: config.method || 'GET',
38
- headers,
39
- signal: config.timeout ? AbortSignal.timeout(config.timeout) : undefined,
40
- };
41
- // Add body for non-GET requests
42
- if (config.data && config.method !== 'GET') {
43
- if (headers[HTTP_HEADER_CONTENT_TYPE] === CONTENT_TYPE_APPLICATION_JSON) {
44
- fetchOptions.body = JSON.stringify(config.data);
45
- }
46
- else {
47
- fetchOptions.body = config.data;
48
- }
49
- }
50
- // Add query parameters for GET requests
51
- const requestUrl = config.params && config.method === 'GET'
52
- ? `${url}?${new URLSearchParams(config.params).toString()}`
53
- : url;
54
- try {
55
- const response = await fetch(requestUrl, fetchOptions);
56
- // Handle non-2xx responses
57
- if (!response.ok) {
58
- const errorData = await this.parseResponseData(response);
59
- // Handle authentication errors
60
- if (response.status === 401) {
61
- const refreshed = await this.handleTokenRefresh();
62
- if (refreshed && attempt === 1) {
63
- // Retry once with new token
64
- return this.executeRequest(config, attempt + 1);
65
- }
66
- }
67
- throw this.createError(response.statusText || 'Request failed', response.status, 'HTTP_ERROR', errorData);
68
- }
69
- const data = await this.parseResponseData(response);
70
- return {
71
- data,
72
- status: response.status,
73
- statusText: response.statusText,
74
- headers: this.parseResponseHeaders(response.headers),
75
- };
76
- }
77
- catch (error) {
78
- // Handle network errors with retry logic
79
- if (this.shouldRetry(error, attempt)) {
80
- await this.delay(this.retryDelay * attempt); // Exponential backoff
81
- return this.executeRequest(config, attempt + 1);
82
- }
83
- // Handle different error types
84
- if (error instanceof TypeError && error.message.includes('fetch')) {
85
- throw this.createError('Network error', 0, 'NETWORK_ERROR');
86
- }
87
- if (error instanceof DOMException && error.name === 'AbortError') {
88
- throw this.createError('Request timeout', 0, 'TIMEOUT_ERROR');
89
- }
90
- // Re-throw API errors
91
- if (this.isApiError(error)) {
92
- throw error;
93
- }
94
- // Handle unexpected errors
95
- throw this.createError(error instanceof Error ? error.message : 'Unknown error', 0, 'UNEXPECTED_ERROR');
96
- }
97
- }
98
- /**
99
- * Queue request for when back online
100
- */
101
- async queueRequest(config) {
102
- return new Promise((resolve, reject) => {
103
- this.offlineQueue.push({
104
- ...config,
105
- resolve: resolve,
106
- reject,
107
- });
108
- });
109
- }
110
- /**
111
- * Process offline queue when back online
112
- */
113
- async syncWhenOnline() {
114
- if (!this.isOnline || this.offlineQueue.length === 0)
115
- return;
116
- const queue = [...this.offlineQueue];
117
- this.offlineQueue = [];
118
- for (const request of queue) {
119
- try {
120
- const response = await this.executeRequest(request);
121
- request.resolve(response);
122
- }
123
- catch (error) {
124
- request.reject(error);
125
- }
126
- }
127
- }
128
- /**
129
- * Enable offline mode
130
- */
131
- enableOfflineMode() {
132
- this.isOnline = false;
133
- }
134
- /**
135
- * Enable online mode and sync queue
136
- */
137
- async enableOnlineMode() {
138
- this.isOnline = true;
139
- if (this.offlineQueueEnabled) {
140
- await this.syncWhenOnline();
141
- }
142
- }
143
- /**
144
- * Set network state
145
- */
146
- setNetworkState(isOnline) {
147
- const wasOffline = !this.isOnline;
148
- this.isOnline = isOnline;
149
- if (wasOffline && isOnline && this.offlineQueueEnabled) {
150
- // Process queue when coming back online
151
- this.syncWhenOnline().catch(console.error);
152
- }
153
- }
154
- /**
155
- * Parse response data based on content type
156
- */
157
- async parseResponseData(response) {
158
- const contentType = response.headers.get('content-type') || '';
159
- if (contentType.includes('application/json')) {
160
- return response.json();
161
- }
162
- if (contentType.includes('text/')) {
163
- return response.text();
164
- }
165
- // For other content types, return as blob
166
- return response.blob();
167
- }
168
- /**
169
- * Convert Headers to plain object
170
- */
171
- parseResponseHeaders(headers) {
172
- const headerObj = {};
173
- headers.forEach((value, key) => {
174
- headerObj[key] = value;
175
- });
176
- return headerObj;
177
- }
178
- /**
179
- * Check if error is an API error
180
- */
181
- isApiError(error) {
182
- return typeof error === 'object' &&
183
- error !== null &&
184
- 'message' in error &&
185
- 'status' in error;
186
- }
187
- /**
188
- * Determine if request should be retried
189
- */
190
- shouldRetry(error, attempt) {
191
- if (attempt >= this.retryAttempts)
192
- return false;
193
- // Retry on network errors
194
- if (error instanceof TypeError && error.message.includes('fetch')) {
195
- return true;
196
- }
197
- // Retry on timeout errors
198
- if (error instanceof DOMException && error.name === 'AbortError') {
199
- return true;
200
- }
201
- // Retry on certain HTTP status codes
202
- if (this.isApiError(error)) {
203
- const status = error.status;
204
- return status === 429 || (status !== undefined && status >= 500); // Rate limit or server errors
205
- }
206
- return false;
207
- }
208
- /**
209
- * Handle token refresh for mobile (secure storage based)
210
- */
211
- async handleTokenRefresh() {
212
- if (!this.tokenStorage)
213
- return false;
214
- try {
215
- const tokens = await this.tokenStorage.retrieveTokens();
216
- if (!tokens?.refresh)
217
- return false;
218
- const response = await this.request({
219
- url: '/auth/refresh',
220
- method: 'POST',
221
- data: { refresh: tokens.refresh },
222
- });
223
- if (response.status === 200 && response.data) {
224
- const newTokens = response.data;
225
- await this.tokenStorage.storeTokens(newTokens);
226
- return true;
227
- }
228
- return false;
229
- }
230
- catch {
231
- return false;
232
- }
233
- }
234
- /**
235
- * Utility delay function
236
- */
237
- delay(ms) {
238
- return new Promise(resolve => setTimeout(resolve, ms));
239
- }
240
- }
@@ -1,43 +0,0 @@
1
- /**
2
- * Mobile-specific token storage using secure storage
3
- *
4
- * This implementation uses platform-secure storage mechanisms
5
- * like iOS Keychain and Android Keystore via React Native libraries.
6
- *
7
- * For Expo: Uses Expo SecureStore
8
- * For bare React Native: Would use @react-native-async-storage/async-storage
9
- * with encryption or react-native-keychain
10
- */
11
- import { BaseTokenStorage, type TokenPair } from '../core/TokenStorage';
12
- export declare class MobileTokenStorage extends BaseTokenStorage {
13
- private secureStore;
14
- constructor(secureStore: SecureStoreInterface);
15
- storeTokens(tokens: TokenPair): Promise<void>;
16
- retrieveTokens(): Promise<TokenPair | null>;
17
- clearTokens(): Promise<void>;
18
- hasTokens(): Promise<boolean>;
19
- /**
20
- * Check if secure storage is available
21
- */
22
- isAvailable(): Promise<boolean>;
23
- }
24
- /**
25
- * Interface for secure storage implementations
26
- * This abstracts the specific secure storage library being used
27
- */
28
- export interface SecureStoreInterface {
29
- setItemAsync(key: string, value: string): Promise<void>;
30
- getItemAsync(key: string): Promise<string | null>;
31
- deleteItemAsync(key: string): Promise<void>;
32
- isAvailableAsync?(): Promise<boolean>;
33
- }
34
- /**
35
- * Factory function to create MobileTokenStorage with different backends
36
- */
37
- export declare const createMobileTokenStorage: (secureStore: SecureStoreInterface) => MobileTokenStorage;
38
- /**
39
- * Expo SecureStore adapter
40
- * Usage: createMobileTokenStorage(createExpoSecureStoreAdapter())
41
- */
42
- export declare const createExpoSecureStoreAdapter: () => SecureStoreInterface;
43
- //# sourceMappingURL=MobileTokenStorage.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"MobileTokenStorage.d.ts","sourceRoot":"","sources":["../../src/adapters/MobileTokenStorage.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,gBAAgB,EAAE,KAAK,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAQxE,qBAAa,kBAAmB,SAAQ,gBAAgB;IACtD,OAAO,CAAC,WAAW,CAAuB;gBAE9B,WAAW,EAAE,oBAAoB;IAKvC,WAAW,CAAC,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;IAe7C,cAAc,IAAI,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC;IA0B3C,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC;IAY5B,SAAS,IAAI,OAAO,CAAC,OAAO,CAAC;IAanC;;OAEG;IACG,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;CAStC;AAED;;;GAGG;AACH,MAAM,WAAW,oBAAoB;IACnC,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACxD,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAClD,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5C,gBAAgB,CAAC,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;CACvC;AAED;;GAEG;AACH,eAAO,MAAM,wBAAwB,GAAI,aAAa,oBAAoB,KAAG,kBAE5E,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,4BAA4B,QAAO,oBAsB/C,CAAC"}
@@ -1,128 +0,0 @@
1
- /**
2
- * Mobile-specific token storage using secure storage
3
- *
4
- * This implementation uses platform-secure storage mechanisms
5
- * like iOS Keychain and Android Keystore via React Native libraries.
6
- *
7
- * For Expo: Uses Expo SecureStore
8
- * For bare React Native: Would use @react-native-async-storage/async-storage
9
- * with encryption or react-native-keychain
10
- */
11
- import { BaseTokenStorage } from '../core/TokenStorage';
12
- // Keys for secure storage
13
- const STORAGE_KEYS = {
14
- ACCESS_TOKEN: 'myportfolio_access_token',
15
- REFRESH_TOKEN: 'myportfolio_refresh_token',
16
- };
17
- export class MobileTokenStorage extends BaseTokenStorage {
18
- constructor(secureStore) {
19
- super();
20
- this.secureStore = secureStore;
21
- }
22
- async storeTokens(tokens) {
23
- if (!this.validateTokens(tokens)) {
24
- throw new Error('Invalid token format');
25
- }
26
- try {
27
- await Promise.all([
28
- this.secureStore.setItemAsync(STORAGE_KEYS.ACCESS_TOKEN, tokens.access),
29
- this.secureStore.setItemAsync(STORAGE_KEYS.REFRESH_TOKEN, tokens.refresh),
30
- ]);
31
- }
32
- catch (error) {
33
- throw new Error(`Failed to store tokens: ${error instanceof Error ? error.message : 'Unknown error'}`);
34
- }
35
- }
36
- async retrieveTokens() {
37
- try {
38
- const [access, refresh] = await Promise.all([
39
- this.secureStore.getItemAsync(STORAGE_KEYS.ACCESS_TOKEN),
40
- this.secureStore.getItemAsync(STORAGE_KEYS.REFRESH_TOKEN),
41
- ]);
42
- if (!access || !refresh) {
43
- return null;
44
- }
45
- const tokens = { access, refresh };
46
- if (!this.validateTokens(tokens)) {
47
- // Clear invalid tokens
48
- await this.clearTokens();
49
- return null;
50
- }
51
- return tokens;
52
- }
53
- catch (error) {
54
- console.error('Failed to retrieve tokens:', error);
55
- return null;
56
- }
57
- }
58
- async clearTokens() {
59
- try {
60
- await Promise.all([
61
- this.secureStore.deleteItemAsync(STORAGE_KEYS.ACCESS_TOKEN),
62
- this.secureStore.deleteItemAsync(STORAGE_KEYS.REFRESH_TOKEN),
63
- ]);
64
- }
65
- catch (error) {
66
- console.error('Failed to clear tokens:', error);
67
- // Don't throw - clearing should be idempotent
68
- }
69
- }
70
- async hasTokens() {
71
- try {
72
- const [access, refresh] = await Promise.all([
73
- this.secureStore.getItemAsync(STORAGE_KEYS.ACCESS_TOKEN),
74
- this.secureStore.getItemAsync(STORAGE_KEYS.REFRESH_TOKEN),
75
- ]);
76
- return !!(access && refresh);
77
- }
78
- catch {
79
- return false;
80
- }
81
- }
82
- /**
83
- * Check if secure storage is available
84
- */
85
- async isAvailable() {
86
- try {
87
- // Try to perform a simple operation to check availability
88
- await this.secureStore.isAvailableAsync?.();
89
- return true;
90
- }
91
- catch {
92
- return false;
93
- }
94
- }
95
- }
96
- /**
97
- * Factory function to create MobileTokenStorage with different backends
98
- */
99
- export const createMobileTokenStorage = (secureStore) => {
100
- return new MobileTokenStorage(secureStore);
101
- };
102
- /**
103
- * Expo SecureStore adapter
104
- * Usage: createMobileTokenStorage(createExpoSecureStoreAdapter())
105
- */
106
- export const createExpoSecureStoreAdapter = () => {
107
- // This would be implemented when actually using Expo
108
- // For now, return a mock implementation for type checking
109
- return {
110
- async setItemAsync(key, value) {
111
- // In real implementation: await ExpoSecureStore.setItemAsync(key, value);
112
- console.log(`Mock: Storing ${key} = ${value}`);
113
- },
114
- async getItemAsync(key) {
115
- // In real implementation: return await ExpoSecureStore.getItemAsync(key);
116
- console.log(`Mock: Retrieving ${key}`);
117
- return null;
118
- },
119
- async deleteItemAsync(key) {
120
- // In real implementation: await ExpoSecureStore.deleteItemAsync(key);
121
- console.log(`Mock: Deleting ${key}`);
122
- },
123
- async isAvailableAsync() {
124
- // In real implementation: return await ExpoSecureStore.isAvailableAsync();
125
- return true;
126
- },
127
- };
128
- };
@@ -1,28 +0,0 @@
1
- /**
2
- * Web-specific API client implementation using fetch or axios
3
- *
4
- * This implementation is designed for web browsers and supports
5
- * cookie-based authentication with proper CORS handling.
6
- */
7
- import { BaseApiClient, type RequestConfig, type ApiResponse, type ApiClientConfig } from '../core/BaseApiClient';
8
- export declare class WebApiClient extends BaseApiClient {
9
- constructor(config: ApiClientConfig);
10
- request<T = unknown>(config: RequestConfig): Promise<ApiResponse<T>>;
11
- /**
12
- * Parse response data based on content type
13
- */
14
- private parseResponseData;
15
- /**
16
- * Convert Headers to plain object
17
- */
18
- private parseResponseHeaders;
19
- /**
20
- * Check if error is an API error
21
- */
22
- private isApiError;
23
- /**
24
- * Handle token refresh for web (cookie-based)
25
- */
26
- protected handleTokenRefresh(): Promise<boolean>;
27
- }
28
- //# sourceMappingURL=WebApiClient.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"WebApiClient.d.ts","sourceRoot":"","sources":["../../src/adapters/WebApiClient.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,aAAa,EAAE,KAAK,aAAa,EAAE,KAAK,WAAW,EAAE,KAAK,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAElH,qBAAa,YAAa,SAAQ,aAAa;gBACjC,MAAM,EAAE,eAAe;IAU7B,OAAO,CAAC,CAAC,GAAG,OAAO,EAAE,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;IAoE1E;;OAEG;YACW,iBAAiB;IAe/B;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAQ5B;;OAEG;IACH,OAAO,CAAC,UAAU;IAOlB;;OAEG;cACa,kBAAkB,IAAI,OAAO,CAAC,OAAO,CAAC;CAcvD"}