@icanbwell/bwell-sdk-ts 0.1.2 → 0.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 (440) hide show
  1. package/README.md +15 -4
  2. package/dist/__version__.d.ts +4 -0
  3. package/dist/__version__.js +5 -0
  4. package/dist/__version__.js.map +1 -0
  5. package/dist/api/api-provider-factory.d.ts +7 -0
  6. package/dist/api/api-provider-factory.js +9 -0
  7. package/dist/api/api-provider-factory.js.map +1 -0
  8. package/dist/api/base/activity/activity-manager.d.ts +31 -0
  9. package/dist/api/base/activity/activity-manager.js +2 -0
  10. package/dist/api/base/activity/activity-manager.js.map +1 -0
  11. package/dist/api/base/activity/get-tasks-request.d.ts +49 -0
  12. package/dist/api/base/activity/get-tasks-request.js +36 -0
  13. package/dist/api/base/activity/get-tasks-request.js.map +1 -0
  14. package/dist/api/base/activity/index.d.ts +4 -0
  15. package/dist/api/base/activity/index.js +3 -0
  16. package/dist/api/base/activity/index.js.map +1 -0
  17. package/dist/api/base/activity/types.d.ts +3 -0
  18. package/dist/api/base/activity/types.js +6 -0
  19. package/dist/api/base/activity/types.js.map +1 -0
  20. package/dist/api/base/activity/update-task-status-request.d.ts +18 -0
  21. package/dist/api/base/activity/update-task-status-request.js +16 -0
  22. package/dist/api/base/activity/update-task-status-request.js.map +1 -0
  23. package/dist/api/base/api-provider.d.ts +16 -0
  24. package/dist/api/base/api-provider.js +2 -0
  25. package/dist/api/base/api-provider.js.map +1 -0
  26. package/dist/api/base/connection/connection-manager.d.ts +60 -0
  27. package/dist/api/base/connection/connection-manager.js +2 -0
  28. package/dist/api/base/connection/connection-manager.js.map +1 -0
  29. package/dist/api/base/connection/connection-request.d.ts +56 -0
  30. package/dist/api/base/connection/connection-request.js +71 -0
  31. package/dist/api/base/connection/connection-request.js.map +1 -0
  32. package/dist/api/base/connection/index.d.ts +2 -0
  33. package/dist/api/base/connection/index.js +3 -0
  34. package/dist/api/base/connection/index.js.map +1 -0
  35. package/dist/api/base/device/device-manager.d.ts +22 -0
  36. package/dist/api/base/device/device-manager.js +6 -0
  37. package/dist/api/base/device/device-manager.js.map +1 -0
  38. package/dist/api/base/device/device-request.d.ts +62 -0
  39. package/dist/api/base/device/device-request.js +72 -0
  40. package/dist/api/base/device/device-request.js.map +1 -0
  41. package/dist/api/base/device/index.d.ts +2 -0
  42. package/dist/api/base/device/index.js +2 -0
  43. package/dist/api/base/device/index.js.map +1 -0
  44. package/dist/api/base/errors.d.ts +2 -0
  45. package/dist/api/base/errors.js +2 -0
  46. package/dist/api/base/errors.js.map +1 -0
  47. package/dist/api/base/event/event-manager.d.ts +13 -0
  48. package/dist/api/base/event/event-manager.js +2 -0
  49. package/dist/api/base/event/event-manager.js.map +1 -0
  50. package/dist/api/base/event/event-request.d.ts +35 -0
  51. package/dist/api/base/event/event-request.js +65 -0
  52. package/dist/api/base/event/event-request.js.map +1 -0
  53. package/dist/api/base/event/index.d.ts +2 -0
  54. package/dist/api/base/event/index.js +2 -0
  55. package/dist/api/base/event/index.js.map +1 -0
  56. package/dist/api/base/health-data/health-data-request.d.ts +116 -0
  57. package/dist/api/base/health-data/health-data-request.js +134 -0
  58. package/dist/api/base/health-data/health-data-request.js.map +1 -0
  59. package/dist/api/base/health-data/health-manager.d.ts +201 -0
  60. package/dist/api/base/health-data/health-manager.js +2 -0
  61. package/dist/api/base/health-data/health-manager.js.map +1 -0
  62. package/dist/api/base/health-data/index.d.ts +4 -0
  63. package/dist/api/base/health-data/index.js +4 -0
  64. package/dist/api/base/health-data/index.js.map +1 -0
  65. package/dist/api/base/health-data/lab-knowledge-request.d.ts +21 -0
  66. package/dist/api/base/health-data/lab-knowledge-request.js +28 -0
  67. package/dist/api/base/health-data/lab-knowledge-request.js.map +1 -0
  68. package/dist/api/base/health-data/medication-knowledge-request.d.ts +21 -0
  69. package/dist/api/base/health-data/medication-knowledge-request.js +28 -0
  70. package/dist/api/base/health-data/medication-knowledge-request.js.map +1 -0
  71. package/dist/api/base/identity/identity-manager.d.ts +23 -0
  72. package/dist/api/base/identity/identity-manager.js +2 -0
  73. package/dist/api/base/identity/identity-manager.js.map +1 -0
  74. package/dist/api/base/identity/index.d.ts +1 -0
  75. package/dist/api/base/identity/index.js +2 -0
  76. package/dist/api/base/identity/index.js.map +1 -0
  77. package/dist/api/base/index.d.ts +8 -0
  78. package/dist/api/base/index.js +9 -0
  79. package/dist/api/base/index.js.map +1 -0
  80. package/dist/api/base/requests/index.d.ts +2 -0
  81. package/dist/api/base/requests/index.js +2 -0
  82. package/dist/api/base/requests/index.js.map +1 -0
  83. package/dist/api/base/requests/search-date-validation-cases.d.ts +167 -0
  84. package/dist/api/base/requests/search-date-validation-cases.js +249 -0
  85. package/dist/api/base/requests/search-date-validation-cases.js.map +1 -0
  86. package/dist/api/base/requests/search-date.d.ts +27 -0
  87. package/dist/api/base/requests/search-date.js +117 -0
  88. package/dist/api/base/requests/search-date.js.map +1 -0
  89. package/dist/api/base/requests/search-token.d.ts +26 -0
  90. package/dist/api/base/requests/search-token.js +46 -0
  91. package/dist/api/base/requests/search-token.js.map +1 -0
  92. package/dist/api/base/search/index.d.ts +3 -0
  93. package/dist/api/base/search/index.js +3 -0
  94. package/dist/api/base/search/index.js.map +1 -0
  95. package/dist/api/base/search/request-connection-request.d.ts +24 -0
  96. package/dist/api/base/search/request-connection-request.js +4 -0
  97. package/dist/api/base/search/request-connection-request.js.map +1 -0
  98. package/dist/api/base/search/search-manager.d.ts +41 -0
  99. package/dist/api/base/search/search-manager.js +2 -0
  100. package/dist/api/base/search/search-manager.js.map +1 -0
  101. package/dist/api/base/search/search-request.d.ts +84 -0
  102. package/dist/api/base/search/search-request.js +79 -0
  103. package/dist/api/base/search/search-request.js.map +1 -0
  104. package/dist/api/base/user/create-consent-request.d.ts +14 -0
  105. package/dist/api/base/user/create-consent-request.js +33 -0
  106. package/dist/api/base/user/create-consent-request.js.map +1 -0
  107. package/dist/api/base/user/get-consents-request.d.ts +15 -0
  108. package/dist/api/base/user/get-consents-request.js +16 -0
  109. package/dist/api/base/user/get-consents-request.js.map +1 -0
  110. package/dist/api/base/user/index.d.ts +5 -0
  111. package/dist/api/base/user/index.js +4 -0
  112. package/dist/api/base/user/index.js.map +1 -0
  113. package/dist/api/base/user/types.d.ts +9 -0
  114. package/dist/api/base/user/types.js +18 -0
  115. package/dist/api/base/user/types.js.map +1 -0
  116. package/dist/api/base/user/update-profile-request.d.ts +28 -0
  117. package/dist/api/base/user/update-profile-request.js +21 -0
  118. package/dist/api/base/user/update-profile-request.js.map +1 -0
  119. package/dist/api/base/user/user-manager.d.ts +46 -0
  120. package/dist/api/base/user/user-manager.js +2 -0
  121. package/dist/api/base/user/user-manager.js.map +1 -0
  122. package/dist/api/graphql-api/activity/activity-request-factories.d.ts +13 -0
  123. package/dist/api/graphql-api/activity/activity-request-factories.js +67 -0
  124. package/dist/api/graphql-api/activity/activity-request-factories.js.map +1 -0
  125. package/dist/api/graphql-api/activity/graphql-activity-manager.d.ts +14 -0
  126. package/dist/api/graphql-api/activity/graphql-activity-manager.js +73 -0
  127. package/dist/api/graphql-api/activity/graphql-activity-manager.js.map +1 -0
  128. package/dist/api/graphql-api/activity/index.d.ts +1 -0
  129. package/dist/api/graphql-api/activity/index.js +2 -0
  130. package/dist/api/graphql-api/activity/index.js.map +1 -0
  131. package/dist/api/graphql-api/connection/graphql-connection-manager.d.ts +18 -0
  132. package/dist/api/graphql-api/connection/graphql-connection-manager.js +142 -0
  133. package/dist/api/graphql-api/connection/graphql-connection-manager.js.map +1 -0
  134. package/dist/api/graphql-api/connection/graphql-get-member-connections-bwell-response-factory.d.ts +18 -0
  135. package/dist/api/graphql-api/connection/graphql-get-member-connections-bwell-response-factory.js +41 -0
  136. package/dist/api/graphql-api/connection/graphql-get-member-connections-bwell-response-factory.js.map +1 -0
  137. package/dist/api/graphql-api/connection/index.d.ts +2 -0
  138. package/dist/api/graphql-api/connection/index.js +3 -0
  139. package/dist/api/graphql-api/connection/index.js.map +1 -0
  140. package/dist/api/graphql-api/device/device-request-factory.d.ts +9 -0
  141. package/dist/api/graphql-api/device/device-request-factory.js +16 -0
  142. package/dist/api/graphql-api/device/device-request-factory.js.map +1 -0
  143. package/dist/api/graphql-api/device/graphql-device-manager.d.ts +13 -0
  144. package/dist/api/graphql-api/device/graphql-device-manager.js +74 -0
  145. package/dist/api/graphql-api/device/graphql-device-manager.js.map +1 -0
  146. package/dist/api/graphql-api/device/index.d.ts +1 -0
  147. package/dist/api/graphql-api/device/index.js +2 -0
  148. package/dist/api/graphql-api/device/index.js.map +1 -0
  149. package/dist/api/graphql-api/errors/errors.d.ts +38 -0
  150. package/dist/api/graphql-api/errors/errors.js +95 -0
  151. package/dist/api/graphql-api/errors/errors.js.map +1 -0
  152. package/dist/api/graphql-api/errors/index.d.ts +1 -0
  153. package/dist/api/graphql-api/errors/index.js +2 -0
  154. package/dist/api/graphql-api/errors/index.js.map +1 -0
  155. package/dist/api/graphql-api/event/event-request-factory.d.ts +6 -0
  156. package/dist/api/graphql-api/event/event-request-factory.js +12 -0
  157. package/dist/api/graphql-api/event/event-request-factory.js.map +1 -0
  158. package/dist/api/graphql-api/event/graphql-event-manager.d.ts +15 -0
  159. package/dist/api/graphql-api/event/graphql-event-manager.js +66 -0
  160. package/dist/api/graphql-api/event/graphql-event-manager.js.map +1 -0
  161. package/dist/api/graphql-api/event/index.d.ts +1 -0
  162. package/dist/api/graphql-api/event/index.js +2 -0
  163. package/dist/api/graphql-api/event/index.js.map +1 -0
  164. package/dist/api/graphql-api/graphql-api-provider.d.ts +21 -0
  165. package/dist/api/graphql-api/graphql-api-provider.js +37 -0
  166. package/dist/api/graphql-api/graphql-api-provider.js.map +1 -0
  167. package/dist/api/graphql-api/graphql-manager/graphql-manager.d.ts +43 -0
  168. package/dist/api/graphql-api/graphql-manager/graphql-manager.js +119 -0
  169. package/dist/api/graphql-api/graphql-manager/graphql-manager.js.map +1 -0
  170. package/dist/api/graphql-api/graphql-manager/index.d.ts +1 -0
  171. package/dist/api/graphql-api/graphql-manager/index.js +2 -0
  172. package/dist/api/graphql-api/graphql-manager/index.js.map +1 -0
  173. package/dist/api/graphql-api/graphql-sdk/graphql-sdk.d.ts +24 -0
  174. package/dist/api/graphql-api/graphql-sdk/graphql-sdk.js +45 -0
  175. package/dist/api/graphql-api/graphql-sdk/graphql-sdk.js.map +1 -0
  176. package/dist/api/graphql-api/graphql-sdk/index.d.ts +1 -0
  177. package/dist/api/graphql-api/graphql-sdk/index.js +2 -0
  178. package/dist/api/graphql-api/graphql-sdk/index.js.map +1 -0
  179. package/dist/api/graphql-api/healthdata/graphql-health-manager.d.ts +33 -0
  180. package/dist/api/graphql-api/healthdata/graphql-health-manager.js +406 -0
  181. package/dist/api/graphql-api/healthdata/graphql-health-manager.js.map +1 -0
  182. package/dist/api/graphql-api/healthdata/index.d.ts +1 -0
  183. package/dist/api/graphql-api/healthdata/index.js +2 -0
  184. package/dist/api/graphql-api/healthdata/index.js.map +1 -0
  185. package/dist/api/graphql-api/identity/graphql-identity-manager.d.ts +13 -0
  186. package/dist/api/graphql-api/identity/graphql-identity-manager.js +88 -0
  187. package/dist/api/graphql-api/identity/graphql-identity-manager.js.map +1 -0
  188. package/dist/api/graphql-api/identity/index.d.ts +1 -0
  189. package/dist/api/graphql-api/identity/index.js +2 -0
  190. package/dist/api/graphql-api/identity/index.js.map +1 -0
  191. package/dist/api/graphql-api/index.d.ts +1 -0
  192. package/dist/api/graphql-api/index.js +2 -0
  193. package/dist/api/graphql-api/index.js.map +1 -0
  194. package/dist/api/graphql-api/search/connection-search-request-factory.d.ts +7 -0
  195. package/dist/api/graphql-api/search/connection-search-request-factory.js +22 -0
  196. package/dist/api/graphql-api/search/connection-search-request-factory.js.map +1 -0
  197. package/dist/api/graphql-api/search/graphql-search-manager.d.ts +16 -0
  198. package/dist/api/graphql-api/search/graphql-search-manager.js +113 -0
  199. package/dist/api/graphql-api/search/graphql-search-manager.js.map +1 -0
  200. package/dist/api/graphql-api/search/index.d.ts +1 -0
  201. package/dist/api/graphql-api/search/index.js +2 -0
  202. package/dist/api/graphql-api/search/index.js.map +1 -0
  203. package/dist/api/graphql-api/search/provider-search-request-factory.d.ts +7 -0
  204. package/dist/api/graphql-api/search/provider-search-request-factory.js +22 -0
  205. package/dist/api/graphql-api/search/provider-search-request-factory.js.map +1 -0
  206. package/dist/api/graphql-api/search/request-connection-request-factory.d.ts +6 -0
  207. package/dist/api/graphql-api/search/request-connection-request-factory.js +13 -0
  208. package/dist/api/graphql-api/search/request-connection-request-factory.js.map +1 -0
  209. package/dist/api/graphql-api/search/search-request-factory.d.ts +6 -0
  210. package/dist/api/graphql-api/search/search-request-factory.js +45 -0
  211. package/dist/api/graphql-api/search/search-request-factory.js.map +1 -0
  212. package/dist/api/graphql-api/user/create-consent-request-factory.d.ts +6 -0
  213. package/dist/api/graphql-api/user/create-consent-request-factory.js +40 -0
  214. package/dist/api/graphql-api/user/create-consent-request-factory.js.map +1 -0
  215. package/dist/api/graphql-api/user/get-consent-request-factory.d.ts +6 -0
  216. package/dist/api/graphql-api/user/get-consent-request-factory.js +9 -0
  217. package/dist/api/graphql-api/user/get-consent-request-factory.js.map +1 -0
  218. package/dist/api/graphql-api/user/graphql-user-manager.d.ts +18 -0
  219. package/dist/api/graphql-api/user/graphql-user-manager.js +122 -0
  220. package/dist/api/graphql-api/user/graphql-user-manager.js.map +1 -0
  221. package/dist/api/graphql-api/user/index.d.ts +1 -0
  222. package/dist/api/graphql-api/user/index.js +2 -0
  223. package/dist/api/graphql-api/user/index.js.map +1 -0
  224. package/dist/api/graphql-api/user/update-profile-request-factory.d.ts +7 -0
  225. package/dist/api/graphql-api/user/update-profile-request-factory.js +123 -0
  226. package/dist/api/graphql-api/user/update-profile-request-factory.js.map +1 -0
  227. package/dist/api/identity-manager-factory.d.ts +6 -0
  228. package/dist/api/identity-manager-factory.js +9 -0
  229. package/dist/api/identity-manager-factory.js.map +1 -0
  230. package/dist/api/index.d.ts +1 -0
  231. package/dist/api/index.js +2 -0
  232. package/dist/api/index.js.map +1 -0
  233. package/dist/auth/auth-strategy-factory.d.ts +10 -0
  234. package/dist/auth/auth-strategy-factory.js +15 -0
  235. package/dist/auth/auth-strategy-factory.js.map +1 -0
  236. package/dist/auth/auth-strategy.d.ts +9 -0
  237. package/dist/auth/auth-strategy.js +2 -0
  238. package/dist/auth/auth-strategy.js.map +1 -0
  239. package/dist/auth/credentials.d.ts +10 -0
  240. package/dist/auth/credentials.js +7 -0
  241. package/dist/auth/credentials.js.map +1 -0
  242. package/dist/auth/index.d.ts +4 -0
  243. package/dist/auth/index.js +3 -0
  244. package/dist/auth/index.js.map +1 -0
  245. package/dist/auth/oauth-strategy.d.ts +11 -0
  246. package/dist/auth/oauth-strategy.js +52 -0
  247. package/dist/auth/oauth-strategy.js.map +1 -0
  248. package/dist/bwell-sdk/bwell-sdk.d.ts +24 -0
  249. package/dist/bwell-sdk/bwell-sdk.js +147 -0
  250. package/dist/bwell-sdk/bwell-sdk.js.map +1 -0
  251. package/dist/bwell-sdk/mocks.d.ts +2 -0
  252. package/dist/bwell-sdk/mocks.js +5 -0
  253. package/dist/bwell-sdk/mocks.js.map +1 -0
  254. package/dist/config/bwell-config.d.ts +12 -0
  255. package/dist/config/bwell-config.js +14 -0
  256. package/dist/config/bwell-config.js.map +1 -0
  257. package/dist/config/config-manager.d.ts +17 -0
  258. package/dist/config/config-manager.js +64 -0
  259. package/dist/config/config-manager.js.map +1 -0
  260. package/dist/config/context.d.ts +6 -0
  261. package/dist/config/context.js +2 -0
  262. package/dist/config/context.js.map +1 -0
  263. package/dist/config/index.d.ts +5 -0
  264. package/dist/config/index.js +6 -0
  265. package/dist/config/index.js.map +1 -0
  266. package/dist/config/sdk-config.d.ts +44 -0
  267. package/dist/config/sdk-config.js +173 -0
  268. package/dist/config/sdk-config.js.map +1 -0
  269. package/dist/errors/authentication-error.d.ts +4 -0
  270. package/dist/errors/authentication-error.js +8 -0
  271. package/dist/errors/authentication-error.js.map +1 -0
  272. package/dist/errors/bwell-error.d.ts +8 -0
  273. package/dist/errors/bwell-error.js +13 -0
  274. package/dist/errors/bwell-error.js.map +1 -0
  275. package/dist/errors/illegal-argument-error.d.ts +4 -0
  276. package/dist/errors/illegal-argument-error.js +8 -0
  277. package/dist/errors/illegal-argument-error.js.map +1 -0
  278. package/dist/errors/illegal-state-error.d.ts +4 -0
  279. package/dist/errors/illegal-state-error.js +8 -0
  280. package/dist/errors/illegal-state-error.js.map +1 -0
  281. package/dist/errors/index.d.ts +11 -0
  282. package/dist/errors/index.js +12 -0
  283. package/dist/errors/index.js.map +1 -0
  284. package/dist/errors/invalid-client-key-error.d.ts +4 -0
  285. package/dist/errors/invalid-client-key-error.js +8 -0
  286. package/dist/errors/invalid-client-key-error.js.map +1 -0
  287. package/dist/errors/invalid-credentials-type-error.d.ts +6 -0
  288. package/dist/errors/invalid-credentials-type-error.js +9 -0
  289. package/dist/errors/invalid-credentials-type-error.js.map +1 -0
  290. package/dist/errors/invalid-token-error.d.ts +4 -0
  291. package/dist/errors/invalid-token-error.js +8 -0
  292. package/dist/errors/invalid-token-error.js.map +1 -0
  293. package/dist/errors/network-error.d.ts +5 -0
  294. package/dist/errors/network-error.js +9 -0
  295. package/dist/errors/network-error.js.map +1 -0
  296. package/dist/errors/operation-outcome-error.d.ts +6 -0
  297. package/dist/errors/operation-outcome-error.js +9 -0
  298. package/dist/errors/operation-outcome-error.js.map +1 -0
  299. package/dist/errors/unknown-error.d.ts +5 -0
  300. package/dist/errors/unknown-error.js +9 -0
  301. package/dist/errors/unknown-error.js.map +1 -0
  302. package/dist/errors/validation-error.d.ts +5 -0
  303. package/dist/errors/validation-error.js +9 -0
  304. package/dist/errors/validation-error.js.map +1 -0
  305. package/dist/graphql/index.d.ts +17 -0
  306. package/dist/graphql/index.js +19 -0
  307. package/dist/graphql/index.js.map +1 -0
  308. package/dist/graphql/operations/index.d.ts +376 -0
  309. package/dist/graphql/operations/index.js +1946 -0
  310. package/dist/graphql/operations/index.js.map +1 -0
  311. package/dist/graphql/operations/types.d.ts +1350 -0
  312. package/dist/graphql/operations/types.js +17 -0
  313. package/dist/graphql/operations/types.js.map +1 -0
  314. package/dist/graphql/schema.d.ts +3542 -0
  315. package/dist/graphql/schema.js +273 -0
  316. package/dist/graphql/schema.js.map +1 -0
  317. package/dist/index.d.ts +7 -3
  318. package/dist/index.js +8 -9
  319. package/dist/index.js.map +1 -0
  320. package/dist/logger/console/console-formatter.d.ts +9 -0
  321. package/dist/logger/console/console-formatter.js +20 -0
  322. package/dist/logger/console/console-formatter.js.map +1 -0
  323. package/dist/logger/console/console-logger-provider.d.ts +8 -0
  324. package/dist/logger/console/console-logger-provider.js +25 -0
  325. package/dist/logger/console/console-logger-provider.js.map +1 -0
  326. package/dist/logger/console/console-logger.d.ts +20 -0
  327. package/dist/logger/console/console-logger.js +70 -0
  328. package/dist/logger/console/console-logger.js.map +1 -0
  329. package/dist/logger/console/index.d.ts +2 -0
  330. package/dist/logger/console/index.js +3 -0
  331. package/dist/logger/console/index.js.map +1 -0
  332. package/dist/logger/index.d.ts +6 -0
  333. package/dist/logger/index.js +7 -0
  334. package/dist/logger/index.js.map +1 -0
  335. package/dist/logger/logger-formatter.d.ts +20 -0
  336. package/dist/logger/logger-formatter.js +2 -0
  337. package/dist/logger/logger-formatter.js.map +1 -0
  338. package/dist/logger/logger-provider-factory.d.ts +7 -0
  339. package/dist/logger/logger-provider-factory.js +32 -0
  340. package/dist/logger/logger-provider-factory.js.map +1 -0
  341. package/dist/logger/logger-provider.d.ts +7 -0
  342. package/dist/logger/logger-provider.js +2 -0
  343. package/dist/logger/logger-provider.js.map +1 -0
  344. package/dist/logger/logger.d.ts +56 -0
  345. package/dist/logger/logger.js +2 -0
  346. package/dist/logger/logger.js.map +1 -0
  347. package/dist/logger/otel/index.d.ts +2 -0
  348. package/dist/logger/otel/index.js +3 -0
  349. package/dist/logger/otel/index.js.map +1 -0
  350. package/dist/logger/otel/otel-logger-provider.d.ts +9 -0
  351. package/dist/logger/otel/otel-logger-provider.js +28 -0
  352. package/dist/logger/otel/otel-logger-provider.js.map +1 -0
  353. package/dist/logger/otel/otel-logger.d.ts +19 -0
  354. package/dist/logger/otel/otel-logger.js +95 -0
  355. package/dist/logger/otel/otel-logger.js.map +1 -0
  356. package/dist/logger/severity.d.ts +41 -0
  357. package/dist/logger/severity.js +80 -0
  358. package/dist/logger/severity.js.map +1 -0
  359. package/dist/models/coding.d.ts +5 -0
  360. package/dist/models/coding.js +2 -0
  361. package/dist/models/coding.js.map +1 -0
  362. package/dist/models/fhir-error.d.ts +9 -0
  363. package/dist/models/fhir-error.js +2 -0
  364. package/dist/models/fhir-error.js.map +1 -0
  365. package/dist/models/index.d.ts +4 -0
  366. package/dist/models/index.js +5 -0
  367. package/dist/models/index.js.map +1 -0
  368. package/dist/models/operation-outcome.d.ts +14 -0
  369. package/dist/models/operation-outcome.js +50 -0
  370. package/dist/models/operation-outcome.js.map +1 -0
  371. package/dist/models/user.d.ts +4 -0
  372. package/dist/models/user.js +2 -0
  373. package/dist/models/user.js.map +1 -0
  374. package/dist/requests/index.d.ts +3 -0
  375. package/dist/requests/index.js +4 -0
  376. package/dist/requests/index.js.map +1 -0
  377. package/dist/requests/paged-request.d.ts +28 -0
  378. package/dist/requests/paged-request.js +54 -0
  379. package/dist/requests/paged-request.js.map +1 -0
  380. package/dist/requests/request.d.ts +84 -0
  381. package/dist/requests/request.js +80 -0
  382. package/dist/requests/request.js.map +1 -0
  383. package/dist/requests/validator.d.ts +54 -0
  384. package/dist/requests/validator.js +22 -0
  385. package/dist/requests/validator.js.map +1 -0
  386. package/dist/results/bwell-query-result-factory.d.ts +15 -0
  387. package/dist/results/bwell-query-result-factory.js +2 -0
  388. package/dist/results/bwell-query-result-factory.js.map +1 -0
  389. package/dist/results/bwell-query-result.d.ts +12 -0
  390. package/dist/results/bwell-query-result.js +19 -0
  391. package/dist/results/bwell-query-result.js.map +1 -0
  392. package/dist/results/bwell-transaction-result.d.ts +76 -0
  393. package/dist/results/bwell-transaction-result.js +95 -0
  394. package/dist/results/bwell-transaction-result.js.map +1 -0
  395. package/dist/results/index.d.ts +3 -0
  396. package/dist/results/index.js +4 -0
  397. package/dist/results/index.js.map +1 -0
  398. package/dist/telemetry/index.d.ts +2 -0
  399. package/dist/telemetry/index.js +3 -0
  400. package/dist/telemetry/index.js.map +1 -0
  401. package/dist/telemetry/open-telemetry-instrumentation.d.ts +3 -0
  402. package/dist/telemetry/open-telemetry-instrumentation.js +41 -0
  403. package/dist/telemetry/open-telemetry-instrumentation.js.map +1 -0
  404. package/dist/telemetry/open-telemetry.d.ts +14 -0
  405. package/dist/telemetry/open-telemetry.js +87 -0
  406. package/dist/telemetry/open-telemetry.js.map +1 -0
  407. package/dist/telemetry/telemetry.d.ts +8 -0
  408. package/dist/telemetry/telemetry.js +2 -0
  409. package/dist/telemetry/telemetry.js.map +1 -0
  410. package/dist/tokens/index.d.ts +2 -0
  411. package/dist/tokens/index.js +3 -0
  412. package/dist/tokens/index.js.map +1 -0
  413. package/dist/tokens/jwt-token-manager.d.ts +32 -0
  414. package/dist/tokens/jwt-token-manager.js +150 -0
  415. package/dist/tokens/jwt-token-manager.js.map +1 -0
  416. package/dist/tokens/token-storage.d.ts +33 -0
  417. package/dist/tokens/token-storage.js +33 -0
  418. package/dist/tokens/token-storage.js.map +1 -0
  419. package/dist/utils/base64.d.ts +12 -0
  420. package/dist/utils/base64.js +22 -0
  421. package/dist/utils/base64.js.map +1 -0
  422. package/dist/utils/index.d.ts +6 -0
  423. package/dist/utils/index.js +7 -0
  424. package/dist/utils/index.js.map +1 -0
  425. package/dist/utils/parsing-utils.d.ts +26 -0
  426. package/dist/utils/parsing-utils.js +69 -0
  427. package/dist/utils/parsing-utils.js.map +1 -0
  428. package/dist/utils/runtime.d.ts +10 -0
  429. package/dist/utils/runtime.js +50 -0
  430. package/dist/utils/runtime.js.map +1 -0
  431. package/dist/utils/string-utils.d.ts +6 -0
  432. package/dist/utils/string-utils.js +9 -0
  433. package/dist/utils/string-utils.js.map +1 -0
  434. package/dist/utils/type-utils.d.ts +51 -0
  435. package/dist/utils/type-utils.js +58 -0
  436. package/dist/utils/type-utils.js.map +1 -0
  437. package/dist/utils/version.d.ts +1 -0
  438. package/dist/utils/version.js +10 -0
  439. package/dist/utils/version.js.map +1 -0
  440. package/package.json +42 -8
@@ -0,0 +1,87 @@
1
+ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
2
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
3
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
4
+ return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
5
+ };
6
+ var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
7
+ if (kind === "m") throw new TypeError("Private method is not writable");
8
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
9
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
10
+ return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
11
+ };
12
+ var _OpenTelemetry_instances, _OpenTelemetry_resource, _OpenTelemetry_tracerProvider, _OpenTelemetry_loggerProvider, _OpenTelemetry_initializeResource, _OpenTelemetry_initializeTraceProvider, _OpenTelemetry_initializeLoggerProvider, _OpenTelemetry_registerFetchInstrumentation;
13
+ import { W3CTraceContextPropagator } from "@opentelemetry/core";
14
+ import { OTLPLogExporter } from "@opentelemetry/exporter-logs-otlp-http";
15
+ import { Resource } from "@opentelemetry/resources";
16
+ import { BatchLogRecordProcessor, LoggerProvider, } from "@opentelemetry/sdk-logs";
17
+ import { BasicTracerProvider } from "@opentelemetry/sdk-trace-base";
18
+ import { SEMRESATTRS_DEPLOYMENT_ENVIRONMENT, SEMRESATTRS_SERVICE_NAME, SEMRESATTRS_SERVICE_NAMESPACE, SEMRESATTRS_SERVICE_VERSION, SEMRESATTRS_TELEMETRY_SDK_LANGUAGE, } from "@opentelemetry/semantic-conventions";
19
+ import { sdkVersion } from "../utils/index.js";
20
+ import { getRuntimeInstrumentation } from "./open-telemetry-instrumentation.js";
21
+ export class OpenTelemetry {
22
+ constructor(config) {
23
+ _OpenTelemetry_instances.add(this);
24
+ _OpenTelemetry_resource.set(this, void 0);
25
+ // If the BasicTracerProvider does not work we will probably want to use the
26
+ // WebTracerProvider and the NodeTracerProvider
27
+ // @see https://github.com/open-telemetry/opentelemetry-js/tree/main/packages/opentelemetry-sdk-trace-node
28
+ // @see https://www.npmjs.com/package/@opentelemetry/sdk-trace-web
29
+ _OpenTelemetry_tracerProvider.set(this, void 0);
30
+ _OpenTelemetry_loggerProvider.set(this, void 0);
31
+ __classPrivateFieldSet(this, _OpenTelemetry_resource, __classPrivateFieldGet(this, _OpenTelemetry_instances, "m", _OpenTelemetry_initializeResource).call(this, config), "f");
32
+ __classPrivateFieldSet(this, _OpenTelemetry_tracerProvider, __classPrivateFieldGet(this, _OpenTelemetry_instances, "m", _OpenTelemetry_initializeTraceProvider).call(this), "f");
33
+ __classPrivateFieldSet(this, _OpenTelemetry_loggerProvider, __classPrivateFieldGet(this, _OpenTelemetry_instances, "m", _OpenTelemetry_initializeLoggerProvider).call(this, config), "f");
34
+ this.fetchInstrumentation = __classPrivateFieldGet(this, _OpenTelemetry_instances, "m", _OpenTelemetry_registerFetchInstrumentation).call(this);
35
+ }
36
+ loggerProvider() {
37
+ return __classPrivateFieldGet(this, _OpenTelemetry_loggerProvider, "f");
38
+ }
39
+ resource() {
40
+ return __classPrivateFieldGet(this, _OpenTelemetry_resource, "f");
41
+ }
42
+ // public tracerProvider(): WebTracerProvider {
43
+ tracerProvider() {
44
+ return __classPrivateFieldGet(this, _OpenTelemetry_tracerProvider, "f");
45
+ }
46
+ }
47
+ _OpenTelemetry_resource = new WeakMap(), _OpenTelemetry_tracerProvider = new WeakMap(), _OpenTelemetry_loggerProvider = new WeakMap(), _OpenTelemetry_instances = new WeakSet(), _OpenTelemetry_initializeResource = function _OpenTelemetry_initializeResource(config) {
48
+ var _a, _b, _c, _d;
49
+ return Resource.default().merge(new Resource({
50
+ [SEMRESATTRS_SERVICE_NAME]: "bwell-sdk-typescript",
51
+ [SEMRESATTRS_SERVICE_VERSION]: sdkVersion(),
52
+ [SEMRESATTRS_TELEMETRY_SDK_LANGUAGE]: "typescript",
53
+ [SEMRESATTRS_SERVICE_NAMESPACE]: "com.bwell",
54
+ [SEMRESATTRS_DEPLOYMENT_ENVIRONMENT]: config.context.env,
55
+ "client.key": config.context.clientKey,
56
+ "user.id": (_b = (_a = config.context.user) === null || _a === void 0 ? void 0 : _a.clientFhirPersonId) !== null && _b !== void 0 ? _b : "",
57
+ "user.bwell-person-id": (_d = (_c = config.context.user) === null || _c === void 0 ? void 0 : _c.bwellFhirPersonId) !== null && _d !== void 0 ? _d : "",
58
+ }));
59
+ }, _OpenTelemetry_initializeTraceProvider = function _OpenTelemetry_initializeTraceProvider() {
60
+ // TODO: Research using the AlwaysOffSampler
61
+ // @see https://github.com/open-telemetry/opentelemetry-js/tree/main/packages/opentelemetry-sdk-trace-base#alwaysoff-sampler
62
+ const tracerProvider = new BasicTracerProvider({
63
+ resource: __classPrivateFieldGet(this, _OpenTelemetry_resource, "f"),
64
+ });
65
+ tracerProvider.register({
66
+ propagator: new W3CTraceContextPropagator(),
67
+ });
68
+ return tracerProvider;
69
+ }, _OpenTelemetry_initializeLoggerProvider = function _OpenTelemetry_initializeLoggerProvider(config) {
70
+ const loggerProvider = new LoggerProvider({
71
+ resource: __classPrivateFieldGet(this, _OpenTelemetry_resource, "f"),
72
+ });
73
+ const exporter = new OTLPLogExporter({
74
+ url: `${config.telemetry.collectorUrl}/otlp-http/v1/logs`,
75
+ });
76
+ const processor = new BatchLogRecordProcessor(exporter);
77
+ loggerProvider.addLogRecordProcessor(processor);
78
+ return loggerProvider;
79
+ }, _OpenTelemetry_registerFetchInstrumentation = function _OpenTelemetry_registerFetchInstrumentation() {
80
+ const fetchInstrumentation = getRuntimeInstrumentation();
81
+ if (fetchInstrumentation === null) {
82
+ return null;
83
+ }
84
+ fetchInstrumentation.setTracerProvider(__classPrivateFieldGet(this, _OpenTelemetry_tracerProvider, "f"));
85
+ return fetchInstrumentation;
86
+ };
87
+ //# sourceMappingURL=open-telemetry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"open-telemetry.js","sourceRoot":"","sources":["../../src/telemetry/open-telemetry.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import { TracerProvider } from "@opentelemetry/api";
2
+ import type * as logsAPI from "@opentelemetry/api-logs";
3
+ import { Resource } from "@opentelemetry/resources";
4
+ export interface Telemetry {
5
+ resource(): Resource;
6
+ tracerProvider(): TracerProvider;
7
+ loggerProvider(): logsAPI.LoggerProvider;
8
+ }
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=telemetry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"telemetry.js","sourceRoot":"","sources":["../../src/telemetry/telemetry.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export * from "./jwt-token-manager.js";
2
+ export * from "./token-storage.js";
@@ -0,0 +1,3 @@
1
+ export * from "./jwt-token-manager.js";
2
+ export * from "./token-storage.js";
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tokens/index.ts"],"names":[],"mappings":"AAAA,cAAc,wBAAwB,CAAC;AACvC,cAAc,oBAAoB,CAAC"}
@@ -0,0 +1,32 @@
1
+ import { IdentityManager } from "../api/base/identity/index.js";
2
+ import { InvalidTokenError, OperationOutcomeError } from "../errors/index.js";
3
+ import { LoggerProvider } from "../logger/index.js";
4
+ import { BWellTransactionResult } from "../results/index.js";
5
+ import { TokenStorage } from "./token-storage.js";
6
+ export type TokenManagerConfig = {
7
+ accessToken: string;
8
+ idToken: string;
9
+ clientKey: string;
10
+ refreshToken: string;
11
+ };
12
+ export interface TokenManager {
13
+ getAccessToken(): Promise<BWellTransactionResult<string, OperationOutcomeError | InvalidTokenError>>;
14
+ getIdToken(): Promise<string | undefined>;
15
+ }
16
+ export declare class JWTTokenManager implements TokenManager {
17
+ #private;
18
+ private constructor();
19
+ /**
20
+ * Instantiates a new JWTTokenManager after parsing and validating the provided
21
+ * accessToken.
22
+ *
23
+ * This static method publicly takes the place of new JWTTokenManager() for
24
+ * the purposes of returning a BWellTransactionResult with potential failures
25
+ * since you shouldn't return anything from the constructor other than a JWTTokenManager
26
+ *
27
+ * @returns {BWellTransactionResult<JWTTokenManager, InvalidTokenError>}
28
+ */
29
+ static initialize(config: TokenManagerConfig, identManager: IdentityManager, loggerProvider?: LoggerProvider, tokenStorage?: TokenStorage): Promise<BWellTransactionResult<JWTTokenManager, InvalidTokenError>>;
30
+ getAccessToken(): Promise<BWellTransactionResult<string, OperationOutcomeError | InvalidTokenError>>;
31
+ getIdToken(): Promise<string | undefined>;
32
+ }
@@ -0,0 +1,150 @@
1
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
+ return new (P || (P = Promise))(function (resolve, reject) {
4
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
8
+ });
9
+ };
10
+ var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
11
+ if (kind === "m") throw new TypeError("Private method is not writable");
12
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
13
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
14
+ return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
15
+ };
16
+ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
17
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
18
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
19
+ return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
20
+ };
21
+ var _JWTTokenManager_instances, _a, _JWTTokenManager_identityManager, _JWTTokenManager_logger, _JWTTokenManager_tokenStorage, _JWTTokenManager_parseTokenExpiration, _JWTTokenManager_getExpiration, _JWTTokenManager_isAccessTokenExpired, _JWTTokenManager_refreshAccessToken;
22
+ import { BWellError, InvalidTokenError, } from "../errors/index.js";
23
+ import { ConsoleLoggerProvider, } from "../logger/index.js";
24
+ import { BWellTransactionResult } from "../results/index.js";
25
+ import { isUndefined, parseTokenExpiration } from "../utils/index.js";
26
+ import { InMemoryTokenStorage } from "./token-storage.js";
27
+ export class JWTTokenManager {
28
+ constructor(config, identManager, loggerProvider, tokenStorage) {
29
+ _JWTTokenManager_instances.add(this);
30
+ _JWTTokenManager_identityManager.set(this, void 0);
31
+ _JWTTokenManager_logger.set(this, void 0);
32
+ _JWTTokenManager_tokenStorage.set(this, void 0);
33
+ __classPrivateFieldSet(this, _JWTTokenManager_identityManager, identManager, "f");
34
+ __classPrivateFieldSet(this, _JWTTokenManager_logger, loggerProvider.getLogger("TokenManager"), "f");
35
+ __classPrivateFieldSet(this, _JWTTokenManager_tokenStorage, tokenStorage, "f");
36
+ }
37
+ /**
38
+ * Instantiates a new JWTTokenManager after parsing and validating the provided
39
+ * accessToken.
40
+ *
41
+ * This static method publicly takes the place of new JWTTokenManager() for
42
+ * the purposes of returning a BWellTransactionResult with potential failures
43
+ * since you shouldn't return anything from the constructor other than a JWTTokenManager
44
+ *
45
+ * @returns {BWellTransactionResult<JWTTokenManager, InvalidTokenError>}
46
+ */
47
+ static initialize(config_1, identManager_1) {
48
+ return __awaiter(this, arguments, void 0, function* (config, identManager, loggerProvider = new ConsoleLoggerProvider(), tokenStorage = new InMemoryTokenStorage()) {
49
+ const expirationResult = __classPrivateFieldGet(_a, _a, "m", _JWTTokenManager_parseTokenExpiration).call(_a, config.accessToken);
50
+ if (expirationResult.failure()) {
51
+ return expirationResult.intoFailure();
52
+ }
53
+ const tokenManager = new _a(Object.assign(Object.assign({}, config), { expiration: expirationResult.data() }), identManager, loggerProvider, tokenStorage);
54
+ try {
55
+ yield Promise.all([
56
+ tokenStorage.set("idToken", config.idToken),
57
+ tokenStorage.set("clientKey", config.clientKey),
58
+ tokenStorage.set("accessToken", config.accessToken),
59
+ tokenStorage.set("refreshToken", config.refreshToken),
60
+ tokenStorage.set("expiration", expirationResult.data().toISOString()),
61
+ ]);
62
+ }
63
+ catch (e) {
64
+ return BWellTransactionResult.failure(new InvalidTokenError("Failed to set tokens in token storage"));
65
+ }
66
+ return BWellTransactionResult.success(tokenManager);
67
+ });
68
+ }
69
+ getAccessToken() {
70
+ return __awaiter(this, void 0, void 0, function* () {
71
+ const tokenIsExpired = yield __classPrivateFieldGet(this, _JWTTokenManager_instances, "m", _JWTTokenManager_isAccessTokenExpired).call(this);
72
+ if (tokenIsExpired) {
73
+ const refreshResults = yield __classPrivateFieldGet(this, _JWTTokenManager_instances, "m", _JWTTokenManager_refreshAccessToken).call(this);
74
+ if (refreshResults.failure()) {
75
+ return refreshResults.intoFailure();
76
+ }
77
+ }
78
+ const accessToken = yield __classPrivateFieldGet(this, _JWTTokenManager_tokenStorage, "f").get("accessToken");
79
+ if (isUndefined(accessToken)) {
80
+ return BWellTransactionResult.failure(new InvalidTokenError("accessToken not found in token storage"));
81
+ }
82
+ return BWellTransactionResult.success(accessToken);
83
+ });
84
+ }
85
+ getIdToken() {
86
+ return __awaiter(this, void 0, void 0, function* () {
87
+ return yield __classPrivateFieldGet(this, _JWTTokenManager_tokenStorage, "f").get("idToken");
88
+ });
89
+ }
90
+ }
91
+ _a = JWTTokenManager, _JWTTokenManager_identityManager = new WeakMap(), _JWTTokenManager_logger = new WeakMap(), _JWTTokenManager_tokenStorage = new WeakMap(), _JWTTokenManager_instances = new WeakSet(), _JWTTokenManager_parseTokenExpiration = function _JWTTokenManager_parseTokenExpiration(accessToken) {
92
+ try {
93
+ const parsedExpirationTime = parseTokenExpiration(accessToken);
94
+ return BWellTransactionResult.success(new Date(parsedExpirationTime));
95
+ }
96
+ catch (e) {
97
+ // If an error that we don't expect is caught, log it and re-throw it
98
+ // Its quite difficult to trigger an error that is not a BWellError in tests
99
+ // so we cannot test the case where an unexpected error is caught.
100
+ /* istanbul ignore next */
101
+ if (!BWellError.isBwellError(e)) {
102
+ throw e;
103
+ }
104
+ return BWellTransactionResult.failure(e);
105
+ }
106
+ }, _JWTTokenManager_getExpiration = function _JWTTokenManager_getExpiration() {
107
+ return __awaiter(this, void 0, void 0, function* () {
108
+ const expirationString = yield __classPrivateFieldGet(this, _JWTTokenManager_tokenStorage, "f").get("expiration");
109
+ if (isUndefined(expirationString)) {
110
+ throw new Error("expiration not found in token storage");
111
+ }
112
+ return new Date(expirationString);
113
+ });
114
+ }, _JWTTokenManager_isAccessTokenExpired = function _JWTTokenManager_isAccessTokenExpired() {
115
+ return __awaiter(this, void 0, void 0, function* () {
116
+ const expirationDate = yield __classPrivateFieldGet(this, _JWTTokenManager_instances, "m", _JWTTokenManager_getExpiration).call(this);
117
+ const expirationTime = expirationDate.getTime();
118
+ const now = Date.now();
119
+ return expirationTime < now;
120
+ });
121
+ }, _JWTTokenManager_refreshAccessToken = function _JWTTokenManager_refreshAccessToken() {
122
+ return __awaiter(this, void 0, void 0, function* () {
123
+ __classPrivateFieldGet(this, _JWTTokenManager_logger, "f").verbose("refreshing access token...");
124
+ const [refreshToken, clientKey] = yield Promise.all([
125
+ __classPrivateFieldGet(this, _JWTTokenManager_tokenStorage, "f").get("refreshToken"),
126
+ __classPrivateFieldGet(this, _JWTTokenManager_tokenStorage, "f").get("clientKey"),
127
+ ]);
128
+ if (isUndefined(refreshToken) || isUndefined(clientKey)) {
129
+ return BWellTransactionResult.failure(new InvalidTokenError("refreshToken or clientKey not found in token storage"));
130
+ }
131
+ const results = yield __classPrivateFieldGet(this, _JWTTokenManager_identityManager, "f").refreshAccessToken({
132
+ refreshToken: refreshToken,
133
+ clientKey: clientKey,
134
+ });
135
+ __classPrivateFieldGet(this, _JWTTokenManager_logger, "f").verbose("refreshing access token complete");
136
+ if (results.failure()) {
137
+ return results.intoFailure();
138
+ }
139
+ const refreshAccessTokenData = results.data();
140
+ yield __classPrivateFieldGet(this, _JWTTokenManager_tokenStorage, "f").set("accessToken", refreshAccessTokenData.accessToken);
141
+ yield __classPrivateFieldGet(this, _JWTTokenManager_tokenStorage, "f").set("idToken", refreshAccessTokenData.idToken);
142
+ const parseExpirationResult = __classPrivateFieldGet(_a, _a, "m", _JWTTokenManager_parseTokenExpiration).call(_a, refreshAccessTokenData.accessToken);
143
+ if (parseExpirationResult.failure()) {
144
+ return parseExpirationResult.intoFailure();
145
+ }
146
+ yield __classPrivateFieldGet(this, _JWTTokenManager_tokenStorage, "f").set("expiration", parseExpirationResult.data().toISOString());
147
+ return BWellTransactionResult.success(null);
148
+ });
149
+ };
150
+ //# sourceMappingURL=jwt-token-manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jwt-token-manager.js","sourceRoot":"","sources":["../../src/tokens/jwt-token-manager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,33 @@
1
+ /**
2
+ * Interface for storing tokens.
3
+ * We might want to store more than one kind of token, so the interface is for a key-value store.
4
+ * All methods are asynchronous, in cases of storage in the cloud, over the network, in a multi-step process, etc.
5
+ */
6
+ export interface TokenStorage {
7
+ /**
8
+ * Get the value for a key.
9
+ * @param key The key to look up the value.
10
+ */
11
+ get(key: string): Promise<string | undefined>;
12
+ /**
13
+ * Set the value for a key.
14
+ * @param key The key to set the value.
15
+ * @param value The value to set.
16
+ */
17
+ set(key: string, value: string): Promise<void>;
18
+ /**
19
+ * Delete the value for a key.
20
+ * @param key The key to delete the value.
21
+ */
22
+ delete(key: string): Promise<boolean>;
23
+ }
24
+ /**
25
+ * Default token storage implementation that stores tokens in memory.
26
+ */
27
+ export declare class InMemoryTokenStorage {
28
+ private storage;
29
+ constructor(storage?: Map<string, string>);
30
+ get(key: string): Promise<string | undefined>;
31
+ set(key: string, value: string): Promise<void>;
32
+ delete(key: string): Promise<boolean>;
33
+ }
@@ -0,0 +1,33 @@
1
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
+ return new (P || (P = Promise))(function (resolve, reject) {
4
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
8
+ });
9
+ };
10
+ /**
11
+ * Default token storage implementation that stores tokens in memory.
12
+ */
13
+ export class InMemoryTokenStorage {
14
+ constructor(storage = new Map()) {
15
+ this.storage = storage;
16
+ }
17
+ get(key) {
18
+ return __awaiter(this, void 0, void 0, function* () {
19
+ return this.storage.get(key);
20
+ });
21
+ }
22
+ set(key, value) {
23
+ return __awaiter(this, void 0, void 0, function* () {
24
+ this.storage.set(key, value);
25
+ });
26
+ }
27
+ delete(key) {
28
+ return __awaiter(this, void 0, void 0, function* () {
29
+ return this.storage.delete(key);
30
+ });
31
+ }
32
+ }
33
+ //# sourceMappingURL=token-storage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"token-storage.js","sourceRoot":"","sources":["../../src/tokens/token-storage.ts"],"names":[],"mappings":";;;;;;;;;AAwBA;;GAEG;AACH,MAAM,OAAO,oBAAoB;IAC/B,YACU,UAA+B,IAAI,GAAG,EAAkB;QAAxD,YAAO,GAAP,OAAO,CAAiD;IAC/D,CAAC;IAEE,GAAG,CAAC,GAAW;;YACnB,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC/B,CAAC;KAAA;IAEK,GAAG,CAAC,GAAW,EAAE,KAAa;;YAClC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QAC/B,CAAC;KAAA;IAEK,MAAM,CAAC,GAAW;;YACtB,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAClC,CAAC;KAAA;CACF"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Decodes a Base64 encoded string to a utf-8 encoded string.
3
+ *
4
+ * Node.js and Browser runtimes have different API's for decoding Base64 encoded
5
+ * strings so a runtime check is necessary.
6
+ *
7
+ * atob and btoa are deprecated in Node.js so we need to use Buffer.from
8
+ * @see https://nodejs.org/api/buffer.html#bufferatobdata
9
+ *
10
+ * The Buffer API is not available in browswer runtimes, so using atob is required
11
+ */
12
+ export declare function base64Decode(base64String: string): string;
@@ -0,0 +1,22 @@
1
+ import { getRuntime } from "./runtime.js";
2
+ /**
3
+ * Decodes a Base64 encoded string to a utf-8 encoded string.
4
+ *
5
+ * Node.js and Browser runtimes have different API's for decoding Base64 encoded
6
+ * strings so a runtime check is necessary.
7
+ *
8
+ * atob and btoa are deprecated in Node.js so we need to use Buffer.from
9
+ * @see https://nodejs.org/api/buffer.html#bufferatobdata
10
+ *
11
+ * The Buffer API is not available in browswer runtimes, so using atob is required
12
+ */
13
+ export function base64Decode(base64String) {
14
+ switch (getRuntime()) {
15
+ case "node":
16
+ return Buffer.from(base64String, "base64").toString("utf-8");
17
+ case "browser":
18
+ // @see https://developer.mozilla.org/en-US/docs/Web/API/atob
19
+ return atob(base64String);
20
+ }
21
+ }
22
+ //# sourceMappingURL=base64.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base64.js","sourceRoot":"","sources":["../../src/utils/base64.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C;;;;;;;;;;GAUG;AACH,MAAM,UAAU,YAAY,CAAC,YAAoB;IAC/C,QAAQ,UAAU,EAAE,EAAE,CAAC;QACrB,KAAK,MAAM;YACT,OAAO,MAAM,CAAC,IAAI,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QAE/D,KAAK,SAAS;YACZ,6DAA6D;YAC7D,OAAO,IAAI,CAAC,YAAY,CAAC,CAAC;IAC9B,CAAC;AACH,CAAC"}
@@ -0,0 +1,6 @@
1
+ export * from "./base64.js";
2
+ export * from "./parsing-utils.js";
3
+ export * from "./runtime.js";
4
+ export * from "./string-utils.js";
5
+ export * from "./type-utils.js";
6
+ export * from "./version.js";
@@ -0,0 +1,7 @@
1
+ export * from "./base64.js";
2
+ export * from "./parsing-utils.js";
3
+ export * from "./runtime.js";
4
+ export * from "./string-utils.js";
5
+ export * from "./type-utils.js";
6
+ export * from "./version.js";
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,oBAAoB,CAAC;AACnC,cAAc,cAAc,CAAC;AAC7B,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC"}
@@ -0,0 +1,26 @@
1
+ import type { User } from "../models/index.js";
2
+ export declare function retrieveEnvironmentFromClientKey(clientKey: string): string;
3
+ /**
4
+ * Returns the JSON parsed payload section of a JWT
5
+ *
6
+ * @param {string} token - token to parse
7
+ * @returns {T} parsed data
8
+ * @throws {InvalidTokenError} - If token is corrupt or cannot be JSON parsed
9
+ */
10
+ export declare function parseJWTPayload<T>(token: string): T;
11
+ /**
12
+ * Parses a JWT and gets the expiration from the JWT payload.
13
+ *
14
+ * @param {string} token - JWT to parse
15
+ * @returns {number} Expiration date expressed in milliseconds
16
+ * @throws {InvalidTokenError} if token is invalid base64, JWT, JSON paylaod or expiration
17
+ */
18
+ export declare function parseTokenExpiration(token: string): number;
19
+ /**
20
+ * Parses a JWT and pulls BWell user data from the payload.
21
+ *
22
+ * @param {string} token - JWT to parse
23
+ * @returns {User} pulled from the JWT payload
24
+ * @throws {InvalidTokenError} if token is invalid base64, JWT or JSON paylaod
25
+ */
26
+ export declare function parseUserFromIdToken(token: string): User;
@@ -0,0 +1,69 @@
1
+ import { InvalidTokenError } from "../errors/index.js";
2
+ import { base64Decode } from "./base64.js";
3
+ import { isNotNullOrUndefined } from "./type-utils.js";
4
+ export function retrieveEnvironmentFromClientKey(clientKey) {
5
+ const decodeClientKeyJson = JSON.parse(base64Decode(clientKey));
6
+ return decodeClientKeyJson["env"];
7
+ }
8
+ const JWT_PART_SIZE = 3;
9
+ /**
10
+ * Returns the JSON parsed payload section of a JWT
11
+ *
12
+ * @param {string} token - token to parse
13
+ * @returns {T} parsed data
14
+ * @throws {InvalidTokenError} - If token is corrupt or cannot be JSON parsed
15
+ */
16
+ export function parseJWTPayload(token) {
17
+ const splitToken = token.split(".");
18
+ const tokenPayload = splitToken[1];
19
+ if (tokenPayload === undefined || splitToken.length !== JWT_PART_SIZE) {
20
+ throw new InvalidTokenError("Token is missing data and may be corrupted");
21
+ }
22
+ try {
23
+ const tokenJson = JSON.parse(base64Decode(tokenPayload));
24
+ return tokenJson;
25
+ }
26
+ catch (err) {
27
+ const cause = err;
28
+ throw new InvalidTokenError(`Unable to parse token payload: ${cause.name} - ${cause.message}`);
29
+ }
30
+ }
31
+ /**
32
+ * Parses a JWT and gets the expiration from the JWT payload.
33
+ *
34
+ * @param {string} token - JWT to parse
35
+ * @returns {number} Expiration date expressed in milliseconds
36
+ * @throws {InvalidTokenError} if token is invalid base64, JWT, JSON paylaod or expiration
37
+ */
38
+ export function parseTokenExpiration(token) {
39
+ const tokenJson = parseJWTPayload(token);
40
+ // Parse out the seconds till expiration and convert them to milliseconds.
41
+ const expiration = tokenJson.exp;
42
+ if (typeof expiration !== "number") {
43
+ throw new InvalidTokenError("The access token is missing an expiration date and is most likely corrupted.");
44
+ }
45
+ return expiration * 1000;
46
+ }
47
+ const CLIENT_PERSON_ID_KEY = "custom:clientFhirPersonId";
48
+ const BWELL_FHIR_PERSON_ID_KEY = "custom:bwellFhirPatientId";
49
+ /**
50
+ * Parses a JWT and pulls BWell user data from the payload.
51
+ *
52
+ * @param {string} token - JWT to parse
53
+ * @returns {User} pulled from the JWT payload
54
+ * @throws {InvalidTokenError} if token is invalid base64, JWT or JSON paylaod
55
+ */
56
+ export function parseUserFromIdToken(token) {
57
+ const idTokenJson = parseJWTPayload(token);
58
+ const bwellFhirPersonId = idTokenJson[BWELL_FHIR_PERSON_ID_KEY];
59
+ const clientFhirPersonId = idTokenJson[CLIENT_PERSON_ID_KEY];
60
+ if (isNotNullOrUndefined(bwellFhirPersonId) &&
61
+ isNotNullOrUndefined(clientFhirPersonId)) {
62
+ return {
63
+ bwellFhirPersonId,
64
+ clientFhirPersonId,
65
+ };
66
+ }
67
+ throw new InvalidTokenError("The idToken does not contain a bwellFhirPerson and/or a clientFhirPersonId");
68
+ }
69
+ //# sourceMappingURL=parsing-utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parsing-utils.js","sourceRoot":"","sources":["../../src/utils/parsing-utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAEvD,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAEvD,MAAM,UAAU,gCAAgC,CAAC,SAAiB;IAChE,MAAM,mBAAmB,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC;IAChE,OAAO,mBAAmB,CAAC,KAAK,CAAW,CAAC;AAC9C,CAAC;AAED,MAAM,aAAa,GAAG,CAAC,CAAC;AAMxB;;;;;;GAMG;AACH,MAAM,UAAU,eAAe,CAAI,KAAa;IAC9C,MAAM,UAAU,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAEpC,MAAM,YAAY,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;IAEnC,IAAI,YAAY,KAAK,SAAS,IAAI,UAAU,CAAC,MAAM,KAAK,aAAa,EAAE,CAAC;QACtE,MAAM,IAAI,iBAAiB,CAAC,4CAA4C,CAAC,CAAC;IAC5E,CAAC;IAED,IAAI,CAAC;QACH,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC,CAAC;QAEzD,OAAO,SAAc,CAAC;IACxB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,KAAK,GAAG,GAAY,CAAC;QAE3B,MAAM,IAAI,iBAAiB,CACzB,kCAAkC,KAAK,CAAC,IAAI,MAAM,KAAK,CAAC,OAAO,EAAE,CAClE,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,oBAAoB,CAAC,KAAa;IAChD,MAAM,SAAS,GAAG,eAAe,CAAsB,KAAK,CAAC,CAAC;IAE9D,0EAA0E;IAC1E,MAAM,UAAU,GAAG,SAAS,CAAC,GAAG,CAAC;IACjC,IAAI,OAAO,UAAU,KAAK,QAAQ,EAAE,CAAC;QACnC,MAAM,IAAI,iBAAiB,CACzB,8EAA8E,CAC/E,CAAC;IACJ,CAAC;IACD,OAAO,UAAU,GAAG,IAAI,CAAC;AAC3B,CAAC;AAED,MAAM,oBAAoB,GAAG,2BAA2B,CAAC;AACzD,MAAM,wBAAwB,GAAG,2BAA2B,CAAC;AAO7D;;;;;;GAMG;AACH,MAAM,UAAU,oBAAoB,CAAC,KAAa;IAChD,MAAM,WAAW,GAAG,eAAe,CAAc,KAAK,CAAC,CAAC;IAExD,MAAM,iBAAiB,GAAG,WAAW,CAAC,wBAAwB,CAAC,CAAC;IAChE,MAAM,kBAAkB,GAAG,WAAW,CAAC,oBAAoB,CAAC,CAAC;IAE7D,IACE,oBAAoB,CAAC,iBAAiB,CAAC;QACvC,oBAAoB,CAAC,kBAAkB,CAAC,EACxC,CAAC;QACD,OAAO;YACL,iBAAiB;YACjB,kBAAkB;SACnB,CAAC;IACJ,CAAC;IAED,MAAM,IAAI,iBAAiB,CACzB,4EAA4E,CAC7E,CAAC;AACJ,CAAC"}
@@ -0,0 +1,10 @@
1
+ export type Runtime = "browser" | "node";
2
+ /**
3
+ * Determines which JavaScript runtime the SDK is being used in.
4
+ */
5
+ export declare function getRuntime(): Runtime;
6
+ export interface RuntimeExecutor<T> {
7
+ node(): T;
8
+ browser(): T;
9
+ }
10
+ export declare function executeForRuntime<T>(runtimeExecutor: RuntimeExecutor<T>): T;
@@ -0,0 +1,50 @@
1
+ /**
2
+ * @see https://nodejs.org/api/process.html#processversions
3
+ */
4
+ function isNode() {
5
+ var _a;
6
+ // Even when testing in a JSDom environment, the process variable still exists
7
+ // so its dificult to purely test this branch
8
+ /* istanbul ignore next */
9
+ const nodeProcessIsAbsent =
10
+ // process isn't a native global variable in browsers
11
+ typeof process === "undefined" ||
12
+ // Sometimes webpack or other build systems will inject process as a global
13
+ // so lets check that .versions.node does not exist.
14
+ ((_a = process.versions) === null || _a === void 0 ? void 0 : _a.node) === undefined;
15
+ return !nodeProcessIsAbsent;
16
+ }
17
+ function isBrowser() {
18
+ return typeof window !== "undefined";
19
+ }
20
+ /**
21
+ * Determines which JavaScript runtime the SDK is being used in.
22
+ */
23
+ export function getRuntime() {
24
+ /**
25
+ * Need to ensure that the browser runtime check is ran first since running tests
26
+ * in jest jsdom environment is still technically in a node environment.
27
+ * When tests are ran in jsdom environment, isBrowser will return true, but
28
+ * so will isNode whereas when tests are ran in a node jest environment, isBrowser
29
+ * will return false.
30
+ */
31
+ if (isBrowser()) {
32
+ return "browser";
33
+ }
34
+ if (isNode()) {
35
+ return "node";
36
+ }
37
+ // This is not very testable as we don't have a jest environment that is not
38
+ // browser-like or node-like available to us.
39
+ /* istanbul ignore next */
40
+ throw new Error("Invalid runtime");
41
+ }
42
+ export function executeForRuntime(runtimeExecutor) {
43
+ switch (getRuntime()) {
44
+ case "browser":
45
+ return runtimeExecutor.browser();
46
+ case "node":
47
+ return runtimeExecutor.node();
48
+ }
49
+ }
50
+ //# sourceMappingURL=runtime.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime.js","sourceRoot":"","sources":["../../src/utils/runtime.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,SAAS,MAAM;;IACb,8EAA8E;IAC9E,6CAA6C;IAC7C,0BAA0B;IAC1B,MAAM,mBAAmB;IACvB,qDAAqD;IACrD,OAAO,OAAO,KAAK,WAAW;QAC9B,2EAA2E;QAC3E,oDAAoD;QACpD,CAAA,MAAA,OAAO,CAAC,QAAQ,0CAAE,IAAI,MAAK,SAAS,CAAC;IAEvC,OAAO,CAAC,mBAAmB,CAAC;AAC9B,CAAC;AAED,SAAS,SAAS;IAChB,OAAO,OAAO,MAAM,KAAK,WAAW,CAAC;AACvC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,UAAU;IACxB;;;;;;OAMG;IACH,IAAI,SAAS,EAAE,EAAE,CAAC;QAChB,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,IAAI,MAAM,EAAE,EAAE,CAAC;QACb,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,4EAA4E;IAC5E,6CAA6C;IAC7C,0BAA0B;IAC1B,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC;AACrC,CAAC;AAOD,MAAM,UAAU,iBAAiB,CAAI,eAAmC;IACtE,QAAQ,UAAU,EAAE,EAAE,CAAC;QACrB,KAAK,SAAS;YACZ,OAAO,eAAe,CAAC,OAAO,EAAE,CAAC;QAEnC,KAAK,MAAM;YACT,OAAO,eAAe,CAAC,IAAI,EAAE,CAAC;IAClC,CAAC;AACH,CAAC"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * A utility method for determining if a string is blank.
3
+ * @param str The string to examine.
4
+ * @returns true if the string is blank (i.e. "" or " ").
5
+ */
6
+ export declare function isBlank(str: string): boolean;