saferx-pharma-sdk 2.0.1 → 2.0.2

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 (465) hide show
  1. package/README.md +31 -0
  2. package/dist/client.d.ts +47 -0
  3. package/dist/client.js +166 -0
  4. package/package.json +11 -63
  5. package/src/client.ts +117 -0
  6. package/dist/cjs/BaseClient.d.ts +0 -39
  7. package/dist/cjs/BaseClient.js +0 -62
  8. package/dist/cjs/Client.d.ts +0 -17
  9. package/dist/cjs/Client.js +0 -21
  10. package/dist/cjs/api/errors/BadRequestError.d.ts +0 -5
  11. package/dist/cjs/api/errors/BadRequestError.js +0 -54
  12. package/dist/cjs/api/errors/ForbiddenError.d.ts +0 -5
  13. package/dist/cjs/api/errors/ForbiddenError.js +0 -54
  14. package/dist/cjs/api/errors/InternalServerError.d.ts +0 -5
  15. package/dist/cjs/api/errors/InternalServerError.js +0 -54
  16. package/dist/cjs/api/errors/TooManyRequestsError.d.ts +0 -5
  17. package/dist/cjs/api/errors/TooManyRequestsError.js +0 -54
  18. package/dist/cjs/api/errors/UnauthorizedError.d.ts +0 -6
  19. package/dist/cjs/api/errors/UnauthorizedError.js +0 -54
  20. package/dist/cjs/api/errors/index.d.ts +0 -5
  21. package/dist/cjs/api/errors/index.js +0 -21
  22. package/dist/cjs/api/index.d.ts +0 -3
  23. package/dist/cjs/api/index.js +0 -19
  24. package/dist/cjs/api/resources/developers/client/Client.d.ts +0 -56
  25. package/dist/cjs/api/resources/developers/client/Client.js +0 -186
  26. package/dist/cjs/api/resources/developers/client/index.d.ts +0 -1
  27. package/dist/cjs/api/resources/developers/client/index.js +0 -17
  28. package/dist/cjs/api/resources/developers/client/requests/CreateFreeKeyDevelopersRequest.d.ts +0 -10
  29. package/dist/cjs/api/resources/developers/client/requests/CreateFreeKeyDevelopersRequest.js +0 -3
  30. package/dist/cjs/api/resources/developers/client/requests/VerifyFreeKeyDevelopersRequest.d.ts +0 -13
  31. package/dist/cjs/api/resources/developers/client/requests/VerifyFreeKeyDevelopersRequest.js +0 -3
  32. package/dist/cjs/api/resources/developers/client/requests/index.d.ts +0 -2
  33. package/dist/cjs/api/resources/developers/client/requests/index.js +0 -2
  34. package/dist/cjs/api/resources/developers/index.d.ts +0 -2
  35. package/dist/cjs/api/resources/developers/index.js +0 -18
  36. package/dist/cjs/api/resources/developers/types/CreateFreeKeyDevelopersResponse.d.ts +0 -18
  37. package/dist/cjs/api/resources/developers/types/CreateFreeKeyDevelopersResponse.js +0 -3
  38. package/dist/cjs/api/resources/developers/types/VerifyFreeKeyDevelopersResponse.d.ts +0 -12
  39. package/dist/cjs/api/resources/developers/types/VerifyFreeKeyDevelopersResponse.js +0 -3
  40. package/dist/cjs/api/resources/developers/types/index.d.ts +0 -2
  41. package/dist/cjs/api/resources/developers/types/index.js +0 -18
  42. package/dist/cjs/api/resources/drugSafety/client/Client.d.ts +0 -100
  43. package/dist/cjs/api/resources/drugSafety/client/Client.js +0 -258
  44. package/dist/cjs/api/resources/drugSafety/client/index.d.ts +0 -1
  45. package/dist/cjs/api/resources/drugSafety/client/index.js +0 -17
  46. package/dist/cjs/api/resources/drugSafety/client/requests/DrugSafetyCheckRequest.d.ts +0 -64
  47. package/dist/cjs/api/resources/drugSafety/client/requests/DrugSafetyCheckRequest.js +0 -15
  48. package/dist/cjs/api/resources/drugSafety/client/requests/index.d.ts +0 -1
  49. package/dist/cjs/api/resources/drugSafety/client/requests/index.js +0 -5
  50. package/dist/cjs/api/resources/drugSafety/index.d.ts +0 -2
  51. package/dist/cjs/api/resources/drugSafety/index.js +0 -18
  52. package/dist/cjs/api/resources/drugSafety/types/GetDrugSafetyHealthResponse.d.ts +0 -26
  53. package/dist/cjs/api/resources/drugSafety/types/GetDrugSafetyHealthResponse.js +0 -22
  54. package/dist/cjs/api/resources/drugSafety/types/index.d.ts +0 -1
  55. package/dist/cjs/api/resources/drugSafety/types/index.js +0 -17
  56. package/dist/cjs/api/resources/index.d.ts +0 -6
  57. package/dist/cjs/api/resources/index.js +0 -45
  58. package/dist/cjs/api/types/AdverseEffect.d.ts +0 -43
  59. package/dist/cjs/api/types/AdverseEffect.js +0 -3
  60. package/dist/cjs/api/types/Alert.d.ts +0 -64
  61. package/dist/cjs/api/types/Alert.js +0 -37
  62. package/dist/cjs/api/types/BadRequestErrorBody.d.ts +0 -3
  63. package/dist/cjs/api/types/BadRequestErrorBody.js +0 -3
  64. package/dist/cjs/api/types/BlackBoxWarning.d.ts +0 -15
  65. package/dist/cjs/api/types/BlackBoxWarning.js +0 -3
  66. package/dist/cjs/api/types/BlockedResponse.d.ts +0 -9
  67. package/dist/cjs/api/types/BlockedResponse.js +0 -3
  68. package/dist/cjs/api/types/ClinicalAlert.d.ts +0 -48
  69. package/dist/cjs/api/types/ClinicalAlert.js +0 -3
  70. package/dist/cjs/api/types/ClinicalConcern.d.ts +0 -15
  71. package/dist/cjs/api/types/ClinicalConcern.js +0 -3
  72. package/dist/cjs/api/types/ClinicalData.d.ts +0 -14
  73. package/dist/cjs/api/types/ClinicalData.js +0 -3
  74. package/dist/cjs/api/types/Condition.d.ts +0 -22
  75. package/dist/cjs/api/types/Condition.js +0 -25
  76. package/dist/cjs/api/types/DailyLimit.d.ts +0 -20
  77. package/dist/cjs/api/types/DailyLimit.js +0 -13
  78. package/dist/cjs/api/types/DomainCode.d.ts +0 -18
  79. package/dist/cjs/api/types/DomainCode.js +0 -21
  80. package/dist/cjs/api/types/DoseClassification.d.ts +0 -40
  81. package/dist/cjs/api/types/DoseClassification.js +0 -22
  82. package/dist/cjs/api/types/DoseComponent.d.ts +0 -30
  83. package/dist/cjs/api/types/DoseComponent.js +0 -12
  84. package/dist/cjs/api/types/DosingData.d.ts +0 -53
  85. package/dist/cjs/api/types/DosingData.js +0 -18
  86. package/dist/cjs/api/types/DrugClinicalData.d.ts +0 -7
  87. package/dist/cjs/api/types/DrugClinicalData.js +0 -3
  88. package/dist/cjs/api/types/DrugSafetyCheckResponse.d.ts +0 -28
  89. package/dist/cjs/api/types/DrugSafetyCheckResponse.js +0 -11
  90. package/dist/cjs/api/types/ErrorResponse.d.ts +0 -24
  91. package/dist/cjs/api/types/ErrorResponse.js +0 -3
  92. package/dist/cjs/api/types/FoodConflict.d.ts +0 -21
  93. package/dist/cjs/api/types/FoodConflict.js +0 -3
  94. package/dist/cjs/api/types/FoodData.d.ts +0 -11
  95. package/dist/cjs/api/types/FoodData.js +0 -3
  96. package/dist/cjs/api/types/ForbiddenErrorBody.d.ts +0 -4
  97. package/dist/cjs/api/types/ForbiddenErrorBody.js +0 -3
  98. package/dist/cjs/api/types/Interaction.d.ts +0 -61
  99. package/dist/cjs/api/types/Interaction.js +0 -14
  100. package/dist/cjs/api/types/InteractionSummary.d.ts +0 -13
  101. package/dist/cjs/api/types/InteractionSummary.js +0 -3
  102. package/dist/cjs/api/types/InteractionsData.d.ts +0 -11
  103. package/dist/cjs/api/types/InteractionsData.js +0 -3
  104. package/dist/cjs/api/types/InternalServerErrorBody.d.ts +0 -3
  105. package/dist/cjs/api/types/InternalServerErrorBody.js +0 -3
  106. package/dist/cjs/api/types/MealTiming.d.ts +0 -26
  107. package/dist/cjs/api/types/MealTiming.js +0 -3
  108. package/dist/cjs/api/types/Meta.d.ts +0 -27
  109. package/dist/cjs/api/types/Meta.js +0 -13
  110. package/dist/cjs/api/types/MetadataResponse.d.ts +0 -85
  111. package/dist/cjs/api/types/MetadataResponse.js +0 -16
  112. package/dist/cjs/api/types/Monitoring.d.ts +0 -22
  113. package/dist/cjs/api/types/Monitoring.js +0 -3
  114. package/dist/cjs/api/types/PatientProfile.d.ts +0 -12
  115. package/dist/cjs/api/types/PatientProfile.js +0 -3
  116. package/dist/cjs/api/types/Population.d.ts +0 -16
  117. package/dist/cjs/api/types/Population.js +0 -19
  118. package/dist/cjs/api/types/PopulationMonitoring.d.ts +0 -26
  119. package/dist/cjs/api/types/PopulationMonitoring.js +0 -3
  120. package/dist/cjs/api/types/RateLimitResponse.d.ts +0 -26
  121. package/dist/cjs/api/types/RateLimitResponse.js +0 -12
  122. package/dist/cjs/api/types/ReferenceDose.d.ts +0 -11
  123. package/dist/cjs/api/types/ReferenceDose.js +0 -3
  124. package/dist/cjs/api/types/ReproductiveSafetyData.d.ts +0 -58
  125. package/dist/cjs/api/types/ReproductiveSafetyData.js +0 -3
  126. package/dist/cjs/api/types/ReproductiveWarning.d.ts +0 -13
  127. package/dist/cjs/api/types/ReproductiveWarning.js +0 -3
  128. package/dist/cjs/api/types/ResolvedDrug.d.ts +0 -44
  129. package/dist/cjs/api/types/ResolvedDrug.js +0 -3
  130. package/dist/cjs/api/types/SafetyData.d.ts +0 -22
  131. package/dist/cjs/api/types/SafetyData.js +0 -3
  132. package/dist/cjs/api/types/SideEffectsData.d.ts +0 -38
  133. package/dist/cjs/api/types/SideEffectsData.js +0 -18
  134. package/dist/cjs/api/types/TooManyRequestsErrorBody.d.ts +0 -3
  135. package/dist/cjs/api/types/TooManyRequestsErrorBody.js +0 -3
  136. package/dist/cjs/api/types/index.d.ts +0 -39
  137. package/dist/cjs/api/types/index.js +0 -55
  138. package/dist/cjs/auth/HeaderAuthProvider.d.ts +0 -20
  139. package/dist/cjs/auth/HeaderAuthProvider.js +0 -80
  140. package/dist/cjs/auth/index.d.ts +0 -1
  141. package/dist/cjs/auth/index.js +0 -5
  142. package/dist/cjs/core/auth/AuthProvider.d.ts +0 -7
  143. package/dist/cjs/core/auth/AuthProvider.js +0 -2
  144. package/dist/cjs/core/auth/AuthRequest.d.ts +0 -9
  145. package/dist/cjs/core/auth/AuthRequest.js +0 -2
  146. package/dist/cjs/core/auth/BasicAuth.d.ts +0 -8
  147. package/dist/cjs/core/auth/BasicAuth.js +0 -27
  148. package/dist/cjs/core/auth/BearerToken.d.ts +0 -7
  149. package/dist/cjs/core/auth/BearerToken.js +0 -16
  150. package/dist/cjs/core/auth/NoOpAuthProvider.d.ts +0 -5
  151. package/dist/cjs/core/auth/NoOpAuthProvider.js +0 -9
  152. package/dist/cjs/core/auth/index.d.ts +0 -5
  153. package/dist/cjs/core/auth/index.js +0 -9
  154. package/dist/cjs/core/base64.d.ts +0 -2
  155. package/dist/cjs/core/base64.js +0 -26
  156. package/dist/cjs/core/exports.d.ts +0 -1
  157. package/dist/cjs/core/exports.js +0 -17
  158. package/dist/cjs/core/fetcher/APIResponse.d.ts +0 -20
  159. package/dist/cjs/core/fetcher/APIResponse.js +0 -2
  160. package/dist/cjs/core/fetcher/BinaryResponse.d.ts +0 -19
  161. package/dist/cjs/core/fetcher/BinaryResponse.js +0 -17
  162. package/dist/cjs/core/fetcher/EndpointMetadata.d.ts +0 -13
  163. package/dist/cjs/core/fetcher/EndpointMetadata.js +0 -2
  164. package/dist/cjs/core/fetcher/EndpointSupplier.d.ts +0 -12
  165. package/dist/cjs/core/fetcher/EndpointSupplier.js +0 -22
  166. package/dist/cjs/core/fetcher/Fetcher.d.ts +0 -48
  167. package/dist/cjs/core/fetcher/Fetcher.js +0 -322
  168. package/dist/cjs/core/fetcher/Headers.d.ts +0 -2
  169. package/dist/cjs/core/fetcher/Headers.js +0 -84
  170. package/dist/cjs/core/fetcher/HttpResponsePromise.d.ts +0 -58
  171. package/dist/cjs/core/fetcher/HttpResponsePromise.js +0 -103
  172. package/dist/cjs/core/fetcher/RawResponse.d.ts +0 -29
  173. package/dist/cjs/core/fetcher/RawResponse.js +0 -44
  174. package/dist/cjs/core/fetcher/Supplier.d.ts +0 -4
  175. package/dist/cjs/core/fetcher/Supplier.js +0 -22
  176. package/dist/cjs/core/fetcher/createRequestUrl.d.ts +0 -1
  177. package/dist/cjs/core/fetcher/createRequestUrl.js +0 -8
  178. package/dist/cjs/core/fetcher/getErrorResponseBody.d.ts +0 -1
  179. package/dist/cjs/core/fetcher/getErrorResponseBody.js +0 -45
  180. package/dist/cjs/core/fetcher/getFetchFn.d.ts +0 -1
  181. package/dist/cjs/core/fetcher/getFetchFn.js +0 -17
  182. package/dist/cjs/core/fetcher/getHeader.d.ts +0 -1
  183. package/dist/cjs/core/fetcher/getHeader.js +0 -11
  184. package/dist/cjs/core/fetcher/getRequestBody.d.ts +0 -7
  185. package/dist/cjs/core/fetcher/getRequestBody.js +0 -27
  186. package/dist/cjs/core/fetcher/getResponseBody.d.ts +0 -1
  187. package/dist/cjs/core/fetcher/getResponseBody.js +0 -69
  188. package/dist/cjs/core/fetcher/index.d.ts +0 -11
  189. package/dist/cjs/core/fetcher/index.js +0 -17
  190. package/dist/cjs/core/fetcher/makeRequest.d.ts +0 -1
  191. package/dist/cjs/core/fetcher/makeRequest.js +0 -40
  192. package/dist/cjs/core/fetcher/requestWithRetries.d.ts +0 -1
  193. package/dist/cjs/core/fetcher/requestWithRetries.js +0 -67
  194. package/dist/cjs/core/fetcher/signals.d.ts +0 -5
  195. package/dist/cjs/core/fetcher/signals.js +0 -24
  196. package/dist/cjs/core/headers.d.ts +0 -2
  197. package/dist/cjs/core/headers.js +0 -31
  198. package/dist/cjs/core/index.d.ts +0 -6
  199. package/dist/cjs/core/index.js +0 -45
  200. package/dist/cjs/core/json.d.ts +0 -15
  201. package/dist/cjs/core/json.js +0 -24
  202. package/dist/cjs/core/logging/exports.d.ts +0 -18
  203. package/dist/cjs/core/logging/exports.js +0 -45
  204. package/dist/cjs/core/logging/index.d.ts +0 -1
  205. package/dist/cjs/core/logging/index.js +0 -17
  206. package/dist/cjs/core/logging/logger.d.ts +0 -126
  207. package/dist/cjs/core/logging/logger.js +0 -144
  208. package/dist/cjs/core/runtime/index.d.ts +0 -1
  209. package/dist/cjs/core/runtime/index.js +0 -5
  210. package/dist/cjs/core/runtime/runtime.d.ts +0 -9
  211. package/dist/cjs/core/runtime/runtime.js +0 -103
  212. package/dist/cjs/core/url/encodePathParam.d.ts +0 -1
  213. package/dist/cjs/core/url/encodePathParam.js +0 -21
  214. package/dist/cjs/core/url/index.d.ts +0 -3
  215. package/dist/cjs/core/url/index.js +0 -9
  216. package/dist/cjs/core/url/join.d.ts +0 -1
  217. package/dist/cjs/core/url/join.js +0 -68
  218. package/dist/cjs/core/url/qs.d.ts +0 -6
  219. package/dist/cjs/core/url/qs.js +0 -64
  220. package/dist/cjs/environments.d.ts +0 -4
  221. package/dist/cjs/environments.js +0 -7
  222. package/dist/cjs/errors/SafeRxError.d.ts +0 -12
  223. package/dist/cjs/errors/SafeRxError.js +0 -32
  224. package/dist/cjs/errors/SafeRxTimeoutError.d.ts +0 -3
  225. package/dist/cjs/errors/SafeRxTimeoutError.js +0 -15
  226. package/dist/cjs/errors/handleNonStatusCodeError.d.ts +0 -2
  227. package/dist/cjs/errors/handleNonStatusCodeError.js +0 -65
  228. package/dist/cjs/errors/index.d.ts +0 -2
  229. package/dist/cjs/errors/index.js +0 -7
  230. package/dist/cjs/exports.d.ts +0 -1
  231. package/dist/cjs/exports.js +0 -17
  232. package/dist/cjs/index.d.ts +0 -6
  233. package/dist/cjs/index.js +0 -48
  234. package/dist/cjs/version.d.ts +0 -1
  235. package/dist/cjs/version.js +0 -4
  236. package/dist/esm/BaseClient.d.mts +0 -39
  237. package/dist/esm/BaseClient.mjs +0 -25
  238. package/dist/esm/Client.d.mts +0 -17
  239. package/dist/esm/Client.mjs +0 -17
  240. package/dist/esm/api/errors/BadRequestError.d.mts +0 -5
  241. package/dist/esm/api/errors/BadRequestError.mjs +0 -17
  242. package/dist/esm/api/errors/ForbiddenError.d.mts +0 -5
  243. package/dist/esm/api/errors/ForbiddenError.mjs +0 -17
  244. package/dist/esm/api/errors/InternalServerError.d.mts +0 -5
  245. package/dist/esm/api/errors/InternalServerError.mjs +0 -17
  246. package/dist/esm/api/errors/TooManyRequestsError.d.mts +0 -5
  247. package/dist/esm/api/errors/TooManyRequestsError.mjs +0 -17
  248. package/dist/esm/api/errors/UnauthorizedError.d.mts +0 -6
  249. package/dist/esm/api/errors/UnauthorizedError.mjs +0 -17
  250. package/dist/esm/api/errors/index.d.mts +0 -5
  251. package/dist/esm/api/errors/index.mjs +0 -5
  252. package/dist/esm/api/index.d.mts +0 -3
  253. package/dist/esm/api/index.mjs +0 -3
  254. package/dist/esm/api/resources/developers/client/Client.d.mts +0 -56
  255. package/dist/esm/api/resources/developers/client/Client.mjs +0 -149
  256. package/dist/esm/api/resources/developers/client/index.d.mts +0 -1
  257. package/dist/esm/api/resources/developers/client/index.mjs +0 -1
  258. package/dist/esm/api/resources/developers/client/requests/CreateFreeKeyDevelopersRequest.d.mts +0 -10
  259. package/dist/esm/api/resources/developers/client/requests/CreateFreeKeyDevelopersRequest.mjs +0 -2
  260. package/dist/esm/api/resources/developers/client/requests/VerifyFreeKeyDevelopersRequest.d.mts +0 -13
  261. package/dist/esm/api/resources/developers/client/requests/VerifyFreeKeyDevelopersRequest.mjs +0 -2
  262. package/dist/esm/api/resources/developers/client/requests/index.d.mts +0 -2
  263. package/dist/esm/api/resources/developers/client/requests/index.mjs +0 -1
  264. package/dist/esm/api/resources/developers/index.d.mts +0 -2
  265. package/dist/esm/api/resources/developers/index.mjs +0 -2
  266. package/dist/esm/api/resources/developers/types/CreateFreeKeyDevelopersResponse.d.mts +0 -18
  267. package/dist/esm/api/resources/developers/types/CreateFreeKeyDevelopersResponse.mjs +0 -2
  268. package/dist/esm/api/resources/developers/types/VerifyFreeKeyDevelopersResponse.d.mts +0 -12
  269. package/dist/esm/api/resources/developers/types/VerifyFreeKeyDevelopersResponse.mjs +0 -2
  270. package/dist/esm/api/resources/developers/types/index.d.mts +0 -2
  271. package/dist/esm/api/resources/developers/types/index.mjs +0 -2
  272. package/dist/esm/api/resources/drugSafety/client/Client.d.mts +0 -100
  273. package/dist/esm/api/resources/drugSafety/client/Client.mjs +0 -221
  274. package/dist/esm/api/resources/drugSafety/client/index.d.mts +0 -1
  275. package/dist/esm/api/resources/drugSafety/client/index.mjs +0 -1
  276. package/dist/esm/api/resources/drugSafety/client/requests/DrugSafetyCheckRequest.d.mts +0 -64
  277. package/dist/esm/api/resources/drugSafety/client/requests/DrugSafetyCheckRequest.mjs +0 -12
  278. package/dist/esm/api/resources/drugSafety/client/requests/index.d.mts +0 -1
  279. package/dist/esm/api/resources/drugSafety/client/requests/index.mjs +0 -1
  280. package/dist/esm/api/resources/drugSafety/index.d.mts +0 -2
  281. package/dist/esm/api/resources/drugSafety/index.mjs +0 -2
  282. package/dist/esm/api/resources/drugSafety/types/GetDrugSafetyHealthResponse.d.mts +0 -26
  283. package/dist/esm/api/resources/drugSafety/types/GetDrugSafetyHealthResponse.mjs +0 -19
  284. package/dist/esm/api/resources/drugSafety/types/index.d.mts +0 -1
  285. package/dist/esm/api/resources/drugSafety/types/index.mjs +0 -1
  286. package/dist/esm/api/resources/index.d.mts +0 -6
  287. package/dist/esm/api/resources/index.mjs +0 -6
  288. package/dist/esm/api/types/AdverseEffect.d.mts +0 -43
  289. package/dist/esm/api/types/AdverseEffect.mjs +0 -2
  290. package/dist/esm/api/types/Alert.d.mts +0 -64
  291. package/dist/esm/api/types/Alert.mjs +0 -34
  292. package/dist/esm/api/types/BadRequestErrorBody.d.mts +0 -3
  293. package/dist/esm/api/types/BadRequestErrorBody.mjs +0 -2
  294. package/dist/esm/api/types/BlackBoxWarning.d.mts +0 -15
  295. package/dist/esm/api/types/BlackBoxWarning.mjs +0 -2
  296. package/dist/esm/api/types/BlockedResponse.d.mts +0 -9
  297. package/dist/esm/api/types/BlockedResponse.mjs +0 -2
  298. package/dist/esm/api/types/ClinicalAlert.d.mts +0 -48
  299. package/dist/esm/api/types/ClinicalAlert.mjs +0 -2
  300. package/dist/esm/api/types/ClinicalConcern.d.mts +0 -15
  301. package/dist/esm/api/types/ClinicalConcern.mjs +0 -2
  302. package/dist/esm/api/types/ClinicalData.d.mts +0 -14
  303. package/dist/esm/api/types/ClinicalData.mjs +0 -2
  304. package/dist/esm/api/types/Condition.d.mts +0 -22
  305. package/dist/esm/api/types/Condition.mjs +0 -22
  306. package/dist/esm/api/types/DailyLimit.d.mts +0 -20
  307. package/dist/esm/api/types/DailyLimit.mjs +0 -10
  308. package/dist/esm/api/types/DomainCode.d.mts +0 -18
  309. package/dist/esm/api/types/DomainCode.mjs +0 -18
  310. package/dist/esm/api/types/DoseClassification.d.mts +0 -40
  311. package/dist/esm/api/types/DoseClassification.mjs +0 -19
  312. package/dist/esm/api/types/DoseComponent.d.mts +0 -30
  313. package/dist/esm/api/types/DoseComponent.mjs +0 -9
  314. package/dist/esm/api/types/DosingData.d.mts +0 -53
  315. package/dist/esm/api/types/DosingData.mjs +0 -15
  316. package/dist/esm/api/types/DrugClinicalData.d.mts +0 -7
  317. package/dist/esm/api/types/DrugClinicalData.mjs +0 -2
  318. package/dist/esm/api/types/DrugSafetyCheckResponse.d.mts +0 -28
  319. package/dist/esm/api/types/DrugSafetyCheckResponse.mjs +0 -8
  320. package/dist/esm/api/types/ErrorResponse.d.mts +0 -24
  321. package/dist/esm/api/types/ErrorResponse.mjs +0 -2
  322. package/dist/esm/api/types/FoodConflict.d.mts +0 -21
  323. package/dist/esm/api/types/FoodConflict.mjs +0 -2
  324. package/dist/esm/api/types/FoodData.d.mts +0 -11
  325. package/dist/esm/api/types/FoodData.mjs +0 -2
  326. package/dist/esm/api/types/ForbiddenErrorBody.d.mts +0 -4
  327. package/dist/esm/api/types/ForbiddenErrorBody.mjs +0 -2
  328. package/dist/esm/api/types/Interaction.d.mts +0 -61
  329. package/dist/esm/api/types/Interaction.mjs +0 -11
  330. package/dist/esm/api/types/InteractionSummary.d.mts +0 -13
  331. package/dist/esm/api/types/InteractionSummary.mjs +0 -2
  332. package/dist/esm/api/types/InteractionsData.d.mts +0 -11
  333. package/dist/esm/api/types/InteractionsData.mjs +0 -2
  334. package/dist/esm/api/types/InternalServerErrorBody.d.mts +0 -3
  335. package/dist/esm/api/types/InternalServerErrorBody.mjs +0 -2
  336. package/dist/esm/api/types/MealTiming.d.mts +0 -26
  337. package/dist/esm/api/types/MealTiming.mjs +0 -2
  338. package/dist/esm/api/types/Meta.d.mts +0 -27
  339. package/dist/esm/api/types/Meta.mjs +0 -10
  340. package/dist/esm/api/types/MetadataResponse.d.mts +0 -85
  341. package/dist/esm/api/types/MetadataResponse.mjs +0 -13
  342. package/dist/esm/api/types/Monitoring.d.mts +0 -22
  343. package/dist/esm/api/types/Monitoring.mjs +0 -2
  344. package/dist/esm/api/types/PatientProfile.d.mts +0 -12
  345. package/dist/esm/api/types/PatientProfile.mjs +0 -2
  346. package/dist/esm/api/types/Population.d.mts +0 -16
  347. package/dist/esm/api/types/Population.mjs +0 -16
  348. package/dist/esm/api/types/PopulationMonitoring.d.mts +0 -26
  349. package/dist/esm/api/types/PopulationMonitoring.mjs +0 -2
  350. package/dist/esm/api/types/RateLimitResponse.d.mts +0 -26
  351. package/dist/esm/api/types/RateLimitResponse.mjs +0 -9
  352. package/dist/esm/api/types/ReferenceDose.d.mts +0 -11
  353. package/dist/esm/api/types/ReferenceDose.mjs +0 -2
  354. package/dist/esm/api/types/ReproductiveSafetyData.d.mts +0 -58
  355. package/dist/esm/api/types/ReproductiveSafetyData.mjs +0 -2
  356. package/dist/esm/api/types/ReproductiveWarning.d.mts +0 -13
  357. package/dist/esm/api/types/ReproductiveWarning.mjs +0 -2
  358. package/dist/esm/api/types/ResolvedDrug.d.mts +0 -44
  359. package/dist/esm/api/types/ResolvedDrug.mjs +0 -2
  360. package/dist/esm/api/types/SafetyData.d.mts +0 -22
  361. package/dist/esm/api/types/SafetyData.mjs +0 -2
  362. package/dist/esm/api/types/SideEffectsData.d.mts +0 -38
  363. package/dist/esm/api/types/SideEffectsData.mjs +0 -15
  364. package/dist/esm/api/types/TooManyRequestsErrorBody.d.mts +0 -3
  365. package/dist/esm/api/types/TooManyRequestsErrorBody.mjs +0 -2
  366. package/dist/esm/api/types/index.d.mts +0 -39
  367. package/dist/esm/api/types/index.mjs +0 -39
  368. package/dist/esm/auth/HeaderAuthProvider.d.mts +0 -20
  369. package/dist/esm/auth/HeaderAuthProvider.mjs +0 -43
  370. package/dist/esm/auth/index.d.mts +0 -1
  371. package/dist/esm/auth/index.mjs +0 -1
  372. package/dist/esm/core/auth/AuthProvider.d.mts +0 -7
  373. package/dist/esm/core/auth/AuthProvider.mjs +0 -1
  374. package/dist/esm/core/auth/AuthRequest.d.mts +0 -9
  375. package/dist/esm/core/auth/AuthRequest.mjs +0 -1
  376. package/dist/esm/core/auth/BasicAuth.d.mts +0 -8
  377. package/dist/esm/core/auth/BasicAuth.mjs +0 -24
  378. package/dist/esm/core/auth/BearerToken.d.mts +0 -7
  379. package/dist/esm/core/auth/BearerToken.mjs +0 -13
  380. package/dist/esm/core/auth/NoOpAuthProvider.d.mts +0 -5
  381. package/dist/esm/core/auth/NoOpAuthProvider.mjs +0 -5
  382. package/dist/esm/core/auth/index.d.mts +0 -5
  383. package/dist/esm/core/auth/index.mjs +0 -3
  384. package/dist/esm/core/base64.d.mts +0 -2
  385. package/dist/esm/core/base64.mjs +0 -22
  386. package/dist/esm/core/exports.d.mts +0 -1
  387. package/dist/esm/core/exports.mjs +0 -1
  388. package/dist/esm/core/fetcher/APIResponse.d.mts +0 -20
  389. package/dist/esm/core/fetcher/APIResponse.mjs +0 -1
  390. package/dist/esm/core/fetcher/BinaryResponse.d.mts +0 -19
  391. package/dist/esm/core/fetcher/BinaryResponse.mjs +0 -14
  392. package/dist/esm/core/fetcher/EndpointMetadata.d.mts +0 -13
  393. package/dist/esm/core/fetcher/EndpointMetadata.mjs +0 -1
  394. package/dist/esm/core/fetcher/EndpointSupplier.d.mts +0 -12
  395. package/dist/esm/core/fetcher/EndpointSupplier.mjs +0 -19
  396. package/dist/esm/core/fetcher/Fetcher.d.mts +0 -48
  397. package/dist/esm/core/fetcher/Fetcher.mjs +0 -318
  398. package/dist/esm/core/fetcher/Headers.d.mts +0 -2
  399. package/dist/esm/core/fetcher/Headers.mjs +0 -82
  400. package/dist/esm/core/fetcher/HttpResponsePromise.d.mts +0 -58
  401. package/dist/esm/core/fetcher/HttpResponsePromise.mjs +0 -99
  402. package/dist/esm/core/fetcher/RawResponse.d.mts +0 -29
  403. package/dist/esm/core/fetcher/RawResponse.mjs +0 -40
  404. package/dist/esm/core/fetcher/Supplier.d.mts +0 -4
  405. package/dist/esm/core/fetcher/Supplier.mjs +0 -19
  406. package/dist/esm/core/fetcher/createRequestUrl.d.mts +0 -1
  407. package/dist/esm/core/fetcher/createRequestUrl.mjs +0 -5
  408. package/dist/esm/core/fetcher/getErrorResponseBody.d.mts +0 -1
  409. package/dist/esm/core/fetcher/getErrorResponseBody.mjs +0 -42
  410. package/dist/esm/core/fetcher/getFetchFn.d.mts +0 -1
  411. package/dist/esm/core/fetcher/getFetchFn.mjs +0 -14
  412. package/dist/esm/core/fetcher/getHeader.d.mts +0 -1
  413. package/dist/esm/core/fetcher/getHeader.mjs +0 -8
  414. package/dist/esm/core/fetcher/getRequestBody.d.mts +0 -7
  415. package/dist/esm/core/fetcher/getRequestBody.mjs +0 -24
  416. package/dist/esm/core/fetcher/getResponseBody.d.mts +0 -1
  417. package/dist/esm/core/fetcher/getResponseBody.mjs +0 -66
  418. package/dist/esm/core/fetcher/index.d.mts +0 -11
  419. package/dist/esm/core/fetcher/index.mjs +0 -6
  420. package/dist/esm/core/fetcher/makeRequest.d.mts +0 -1
  421. package/dist/esm/core/fetcher/makeRequest.mjs +0 -36
  422. package/dist/esm/core/fetcher/requestWithRetries.d.mts +0 -1
  423. package/dist/esm/core/fetcher/requestWithRetries.mjs +0 -64
  424. package/dist/esm/core/fetcher/signals.d.mts +0 -5
  425. package/dist/esm/core/fetcher/signals.mjs +0 -20
  426. package/dist/esm/core/headers.d.mts +0 -2
  427. package/dist/esm/core/headers.mjs +0 -27
  428. package/dist/esm/core/index.d.mts +0 -6
  429. package/dist/esm/core/index.mjs +0 -6
  430. package/dist/esm/core/json.d.mts +0 -15
  431. package/dist/esm/core/json.mjs +0 -19
  432. package/dist/esm/core/logging/exports.d.mts +0 -18
  433. package/dist/esm/core/logging/exports.mjs +0 -9
  434. package/dist/esm/core/logging/index.d.mts +0 -1
  435. package/dist/esm/core/logging/index.mjs +0 -1
  436. package/dist/esm/core/logging/logger.d.mts +0 -126
  437. package/dist/esm/core/logging/logger.mjs +0 -138
  438. package/dist/esm/core/runtime/index.d.mts +0 -1
  439. package/dist/esm/core/runtime/index.mjs +0 -1
  440. package/dist/esm/core/runtime/runtime.d.mts +0 -9
  441. package/dist/esm/core/runtime/runtime.mjs +0 -100
  442. package/dist/esm/core/url/encodePathParam.d.mts +0 -1
  443. package/dist/esm/core/url/encodePathParam.mjs +0 -18
  444. package/dist/esm/core/url/index.d.mts +0 -3
  445. package/dist/esm/core/url/index.mjs +0 -3
  446. package/dist/esm/core/url/join.d.mts +0 -1
  447. package/dist/esm/core/url/join.mjs +0 -65
  448. package/dist/esm/core/url/qs.d.mts +0 -6
  449. package/dist/esm/core/url/qs.mjs +0 -61
  450. package/dist/esm/environments.d.mts +0 -4
  451. package/dist/esm/environments.mjs +0 -4
  452. package/dist/esm/errors/SafeRxError.d.mts +0 -12
  453. package/dist/esm/errors/SafeRxError.mjs +0 -28
  454. package/dist/esm/errors/SafeRxTimeoutError.d.mts +0 -3
  455. package/dist/esm/errors/SafeRxTimeoutError.mjs +0 -11
  456. package/dist/esm/errors/handleNonStatusCodeError.d.mts +0 -2
  457. package/dist/esm/errors/handleNonStatusCodeError.mjs +0 -29
  458. package/dist/esm/errors/index.d.mts +0 -2
  459. package/dist/esm/errors/index.mjs +0 -2
  460. package/dist/esm/exports.d.mts +0 -1
  461. package/dist/esm/exports.mjs +0 -1
  462. package/dist/esm/index.d.mts +0 -6
  463. package/dist/esm/index.mjs +0 -5
  464. package/dist/esm/version.d.mts +0 -1
  465. package/dist/esm/version.mjs +0 -1
package/README.md ADDED
@@ -0,0 +1,31 @@
1
+ # saferx-pharma-sdk
2
+
3
+ Signed TypeScript client for the [SafeRx Enterprise API](https://docs.saferx.online).
4
+
5
+ **Server-side use only.** This client signs every request with your API key
6
+ as the HMAC secret -- never import or bundle it into browser or
7
+ client-controlled code.
8
+
9
+ ```bash
10
+ npm install saferx-pharma-sdk
11
+ ```
12
+
13
+ ```typescript
14
+ import { SafeRxClient } from "saferx-pharma-sdk";
15
+
16
+ const client = new SafeRxClient(
17
+ "https://saferx.online/api/enterprise/v1",
18
+ process.env.SAFERX_API_KEY!,
19
+ );
20
+
21
+ const result = await client.request("enterprise_safety_check", {
22
+ body: {
23
+ locale: "en",
24
+ medications: [{ input_text: "Augmentin 1g" }],
25
+ requested_domains: ["ddi"],
26
+ },
27
+ idempotencyKey: "safety-check-001",
28
+ });
29
+ ```
30
+
31
+ Full docs: https://docs.saferx.online
@@ -0,0 +1,47 @@
1
+ export type JsonObject = Record<string, unknown>;
2
+ export type EnterpriseOperation = {
3
+ operationId: string;
4
+ method: string;
5
+ path: string;
6
+ idempotencyRequired: boolean;
7
+ };
8
+ export declare const SDK_VERSION = "2.0.2";
9
+ export declare const CLIENT_KIND = "typescript_sdk";
10
+ export declare const SDK_LANGUAGE = "typescript";
11
+ export declare const MAX_ATTEMPTS = 3;
12
+ export declare const RETRY_BACKOFF_BASE_SECONDS = 0.1;
13
+ export declare const RETRY_BACKOFF_MAX_SECONDS = 2;
14
+ export declare const OPERATIONS: Record<string, EnterpriseOperation>;
15
+ export type MultipartFile = {
16
+ filename: string;
17
+ content: Uint8Array;
18
+ contentType?: string;
19
+ };
20
+ export type RequestOptions = {
21
+ query?: Record<string, string | number | boolean | (string | number | boolean)[]>;
22
+ body?: unknown;
23
+ multipart?: Record<string, string | MultipartFile>;
24
+ pathParams?: Record<string, string | number>;
25
+ idempotencyKey?: string;
26
+ signal?: AbortSignal;
27
+ };
28
+ export declare class SafeRxProblemDetailsError extends Error {
29
+ readonly status: number;
30
+ readonly problem: JsonObject;
31
+ readonly requestId?: string;
32
+ constructor(status: number, problem: JsonObject, requestId?: string);
33
+ }
34
+ export declare function canonicalQuery(query: RequestOptions["query"]): string;
35
+ export declare function canonicalRequest(method: string, path: string, query: string, bodyHash: string, timestamp: string, nonce: string): string;
36
+ export declare function encodeMultipart(fields: Record<string, string | MultipartFile>): {
37
+ body: Uint8Array;
38
+ contentType: string;
39
+ };
40
+ export declare class SafeRxClient {
41
+ private readonly baseUrl;
42
+ private readonly apiKey;
43
+ private readonly clientName;
44
+ private readonly fetchImpl;
45
+ constructor(baseUrl: string, apiKey: string, clientName?: string, fetchImpl?: typeof fetch);
46
+ request(operationId: string, options?: RequestOptions): Promise<unknown>;
47
+ }
package/dist/client.js ADDED
@@ -0,0 +1,166 @@
1
+ export const SDK_VERSION = "2.0.2";
2
+ export const CLIENT_KIND = "typescript_sdk";
3
+ export const SDK_LANGUAGE = "typescript";
4
+ export const MAX_ATTEMPTS = 3;
5
+ export const RETRY_BACKOFF_BASE_SECONDS = 0.1;
6
+ export const RETRY_BACKOFF_MAX_SECONDS = 2.0;
7
+ export const OPERATIONS = {
8
+ enterprise_erx_safety_check: { operationId: 'enterprise_erx_safety_check', method: 'POST', path: '/erx/safety-checks', idempotencyRequired: true },
9
+ enterprise_ocr_prescription_create: { operationId: 'enterprise_ocr_prescription_create', method: 'POST', path: '/ocr/prescriptions', idempotencyRequired: true },
10
+ enterprise_ocr_prescription_events: { operationId: 'enterprise_ocr_prescription_events', method: 'GET', path: '/ocr/prescriptions/{prescription_id}/events', idempotencyRequired: false },
11
+ enterprise_ocr_prescription_read: { operationId: 'enterprise_ocr_prescription_read', method: 'GET', path: '/ocr/prescriptions/{prescription_id}', idempotencyRequired: false },
12
+ enterprise_ocr_prescription_resolve: { operationId: 'enterprise_ocr_prescription_resolve', method: 'POST', path: '/ocr/prescriptions/{prescription_id}/medications/resolve', idempotencyRequired: false },
13
+ enterprise_ocr_prescription_review: { operationId: 'enterprise_ocr_prescription_review', method: 'POST', path: '/ocr/prescriptions/{prescription_id}/review', idempotencyRequired: false },
14
+ enterprise_ocr_prescription_safety: { operationId: 'enterprise_ocr_prescription_safety', method: 'POST', path: '/ocr/prescriptions/{prescription_id}/safety-checks', idempotencyRequired: false },
15
+ enterprise_registry_autocomplete: { operationId: 'enterprise_registry_autocomplete', method: 'GET', path: '/registry/suggest', idempotencyRequired: false },
16
+ enterprise_registry_ingredients: { operationId: 'enterprise_registry_ingredients', method: 'GET', path: '/registry/ingredients', idempotencyRequired: false },
17
+ enterprise_registry_product_detail: { operationId: 'enterprise_registry_product_detail', method: 'GET', path: '/registry/products/{sfrx_id}', idempotencyRequired: false },
18
+ enterprise_registry_resolve: { operationId: 'enterprise_registry_resolve', method: 'POST', path: '/registry/resolve', idempotencyRequired: false },
19
+ enterprise_registry_search: { operationId: 'enterprise_registry_search', method: 'GET', path: '/registry/search', idempotencyRequired: false },
20
+ enterprise_safety_capabilities: { operationId: 'enterprise_safety_capabilities', method: 'GET', path: '/safety/capabilities', idempotencyRequired: false },
21
+ enterprise_safety_check: { operationId: 'enterprise_safety_check', method: 'POST', path: '/safety/checks', idempotencyRequired: true },
22
+ };
23
+ export class SafeRxProblemDetailsError extends Error {
24
+ status;
25
+ problem;
26
+ requestId;
27
+ constructor(status, problem, requestId) {
28
+ super(String(problem.detail ?? problem.title ?? "Enterprise request failed"));
29
+ this.name = "SafeRxProblemDetailsError";
30
+ this.status = status;
31
+ this.problem = problem;
32
+ this.requestId = requestId ?? (String(problem.request_id ?? "") || undefined);
33
+ }
34
+ }
35
+ function encode(value) { return encodeURIComponent(value).replace(/[!'()*]/g, (char) => `%${char.charCodeAt(0).toString(16).toUpperCase()}`); }
36
+ export function canonicalQuery(query) {
37
+ if (!query)
38
+ return "";
39
+ const pairs = [];
40
+ for (const [key, raw] of Object.entries(query))
41
+ for (const value of Array.isArray(raw) ? raw : [raw])
42
+ pairs.push(`${encode(key)}=${encode(String(value))}`);
43
+ return pairs.sort().join("&");
44
+ }
45
+ function canonicalJson(value) {
46
+ if (value === null || typeof value !== "object")
47
+ return JSON.stringify(value);
48
+ if (Array.isArray(value))
49
+ return `[${value.map(canonicalJson).join(",")}]`;
50
+ return `{${Object.entries(value).sort(([a], [b]) => a.localeCompare(b)).map(([key, item]) => `${JSON.stringify(key)}:${canonicalJson(item)}`).join(",")}}`;
51
+ }
52
+ function bytes(value) { return new TextEncoder().encode(value); }
53
+ async function sha256(value) { const digest = await crypto.subtle.digest("SHA-256", value); return [...new Uint8Array(digest)].map((item) => item.toString(16).padStart(2, "0")).join(""); }
54
+ async function hmac(key, value) { const cryptoKey = await crypto.subtle.importKey("raw", bytes(key), { name: "HMAC", hash: "SHA-256" }, false, ["sign"]); const digest = await crypto.subtle.sign("HMAC", cryptoKey, bytes(value)); return btoa(String.fromCharCode(...new Uint8Array(digest))).replace(/=+$/, "").replace(/\+/g, "-").replace(/\//g, "_"); }
55
+ export function canonicalRequest(method, path, query, bodyHash, timestamp, nonce) { return [method.toUpperCase(), encode(path).replace(/%2F/g, "/"), query, bodyHash, timestamp, nonce].join("\n"); }
56
+ const RETRY_AFTER_MAX_SECONDS = 60;
57
+ function retryDelaySeconds(retryAfter, attempt) {
58
+ const backoff = Math.min(RETRY_BACKOFF_MAX_SECONDS, RETRY_BACKOFF_BASE_SECONDS * 2 ** attempt);
59
+ if (!retryAfter)
60
+ return backoff;
61
+ const parsed = Number(retryAfter);
62
+ if (!Number.isFinite(parsed))
63
+ return backoff;
64
+ return Math.min(RETRY_AFTER_MAX_SECONDS, Math.max(backoff, parsed));
65
+ }
66
+ function isMultipartFile(value) { return typeof value === "object" && value !== null && "content" in value; }
67
+ export function encodeMultipart(fields) {
68
+ const boundary = `----saferx-${crypto.randomUUID().replace(/-/g, "")}`;
69
+ const chunks = [];
70
+ for (const [name, value] of Object.entries(fields)) {
71
+ if (isMultipartFile(value)) {
72
+ chunks.push(bytes(`--${boundary}\r\nContent-Disposition: form-data; name="${name}"; filename="${value.filename}"\r\nContent-Type: ${value.contentType ?? "application/octet-stream"}\r\n\r\n`));
73
+ chunks.push(value.content);
74
+ chunks.push(bytes("\r\n"));
75
+ }
76
+ else {
77
+ chunks.push(bytes(`--${boundary}\r\nContent-Disposition: form-data; name="${name}"\r\n\r\n${value}\r\n`));
78
+ }
79
+ }
80
+ chunks.push(bytes(`--${boundary}--\r\n`));
81
+ const total = chunks.reduce((sum, chunk) => sum + chunk.length, 0);
82
+ const body = new Uint8Array(total);
83
+ let offset = 0;
84
+ for (const chunk of chunks) {
85
+ body.set(chunk, offset);
86
+ offset += chunk.length;
87
+ }
88
+ return { body, contentType: `multipart/form-data; boundary=${boundary}` };
89
+ }
90
+ export class SafeRxClient {
91
+ baseUrl;
92
+ apiKey;
93
+ clientName;
94
+ fetchImpl;
95
+ constructor(baseUrl, apiKey, clientName = "saferx-pharma-sdk", fetchImpl = fetch) {
96
+ this.baseUrl = baseUrl;
97
+ this.apiKey = apiKey;
98
+ this.clientName = clientName;
99
+ this.fetchImpl = fetchImpl;
100
+ }
101
+ async request(operationId, options = {}) {
102
+ const operation = OPERATIONS[operationId];
103
+ if (!operation)
104
+ throw new Error(`Unknown Enterprise operation: ${operationId}`);
105
+ let path = operation.path;
106
+ for (const [key, value] of Object.entries(options.pathParams ?? {}))
107
+ path = path.replace(`{${key}}`, encode(String(value)));
108
+ if (operation.idempotencyRequired && !options.idempotencyKey)
109
+ throw new Error(`${operationId} requires idempotencyKey`);
110
+ if (options.body !== undefined && options.multipart !== undefined)
111
+ throw new Error("pass either body or multipart, not both");
112
+ let bodyBytes;
113
+ let contentType;
114
+ let sendBody;
115
+ if (options.multipart !== undefined) {
116
+ const encoded = encodeMultipart(options.multipart);
117
+ bodyBytes = encoded.body;
118
+ contentType = encoded.contentType;
119
+ sendBody = encoded.body;
120
+ }
121
+ else if (options.body !== undefined) {
122
+ const json = canonicalJson(options.body);
123
+ bodyBytes = bytes(json);
124
+ contentType = "application/json";
125
+ sendBody = json;
126
+ }
127
+ else {
128
+ bodyBytes = bytes("");
129
+ sendBody = undefined;
130
+ }
131
+ const query = canonicalQuery(options.query);
132
+ const timestamp = new Date().toISOString();
133
+ const nonce = crypto.randomUUID();
134
+ const requestId = crypto.randomUUID();
135
+ const signingPath = new URL(this.baseUrl).pathname.replace(/\/+$/, "") + path;
136
+ const signature = await hmac(this.apiKey, canonicalRequest(operation.method, signingPath, query, await sha256(bodyBytes), timestamp, nonce));
137
+ const headers = { Accept: "application/json", "X-SafeRx-API-Key": this.apiKey, "X-SafeRx-Timestamp": timestamp, "X-SafeRx-Nonce": nonce, "X-SafeRx-Signature": signature, "X-Request-ID": requestId, "X-SafeRx-Client-Kind": CLIENT_KIND, "X-SafeRx-Client-Name": this.clientName, "X-SafeRx-Client-Version": SDK_VERSION, "X-SafeRx-SDK-Language": SDK_LANGUAGE, "X-SafeRx-SDK-Version": SDK_VERSION };
138
+ if (contentType !== undefined)
139
+ headers["Content-Type"] = contentType;
140
+ if (options.idempotencyKey)
141
+ headers["Idempotency-Key"] = options.idempotencyKey;
142
+ const target = `${this.baseUrl.replace(/\/+$/, "")}${path}${query ? `?${query}` : ""}`;
143
+ for (let attempt = 0; attempt < MAX_ATTEMPTS; attempt++) {
144
+ try {
145
+ const response = await this.fetchImpl(target, { method: operation.method, headers, body: sendBody, signal: options.signal });
146
+ const raw = await response.text();
147
+ const parsed = raw ? JSON.parse(raw) : undefined;
148
+ if (response.ok)
149
+ return parsed;
150
+ if ([429, 502, 503, 504].includes(response.status) && attempt + 1 < MAX_ATTEMPTS) {
151
+ await new Promise((resolve) => setTimeout(resolve, retryDelaySeconds(response.headers.get("Retry-After"), attempt) * 1000));
152
+ continue;
153
+ }
154
+ throw new SafeRxProblemDetailsError(response.status, (parsed ?? { status: response.status, title: "REQUEST_FAILED" }), requestId);
155
+ }
156
+ catch (error) {
157
+ if (error instanceof SafeRxProblemDetailsError)
158
+ throw error;
159
+ if (attempt + 1 >= MAX_ATTEMPTS)
160
+ throw new SafeRxProblemDetailsError(503, { status: 503, title: "UPSTREAM_UNAVAILABLE", safe_to_retry: true }, requestId);
161
+ await new Promise((resolve) => setTimeout(resolve, Math.min(RETRY_BACKOFF_MAX_SECONDS, RETRY_BACKOFF_BASE_SECONDS * 2 ** attempt) * 1000));
162
+ }
163
+ }
164
+ throw new Error("retry loop exhausted");
165
+ }
166
+ }
package/package.json CHANGED
@@ -1,65 +1,13 @@
1
1
  {
2
- "name": "saferx-pharma-sdk",
3
- "version": "2.0.1",
4
- "private": false,
5
- "type": "commonjs",
6
- "main": "./dist/cjs/index.js",
7
- "module": "./dist/esm/index.mjs",
8
- "types": "./dist/cjs/index.d.ts",
9
- "exports": {
10
- ".": {
11
- "types": "./dist/cjs/index.d.ts",
12
- "import": {
13
- "types": "./dist/esm/index.d.mts",
14
- "default": "./dist/esm/index.mjs"
15
- },
16
- "require": {
17
- "types": "./dist/cjs/index.d.ts",
18
- "default": "./dist/cjs/index.js"
19
- },
20
- "default": "./dist/cjs/index.js"
21
- },
22
- "./package.json": "./package.json"
23
- },
24
- "files": [
25
- "dist",
26
- "reference.md",
27
- "README.md",
28
- "LICENSE"
29
- ],
30
- "scripts": {
31
- "format": "biome format --write --skip-parse-errors --no-errors-on-unmatched --max-diagnostics=none",
32
- "format:check": "biome format --skip-parse-errors --no-errors-on-unmatched --max-diagnostics=none",
33
- "lint": "biome lint --skip-parse-errors --no-errors-on-unmatched --max-diagnostics=none",
34
- "lint:fix": "biome lint --fix --unsafe --skip-parse-errors --no-errors-on-unmatched --max-diagnostics=none",
35
- "check": "biome check --skip-parse-errors --no-errors-on-unmatched --max-diagnostics=none",
36
- "check:fix": "biome check --fix --unsafe --skip-parse-errors --no-errors-on-unmatched --max-diagnostics=none",
37
- "build": "pnpm build:cjs && pnpm build:esm",
38
- "build:cjs": "tsc --project ./tsconfig.cjs.json",
39
- "build:esm": "tsc --project ./tsconfig.esm.json && node scripts/rename-to-esm-files.js dist/esm",
40
- "test": "vitest",
41
- "test:unit": "vitest --project unit",
42
- "test:wire": "vitest --project wire"
43
- },
44
- "dependencies": {},
45
- "devDependencies": {
46
- "webpack": "^5.97.1",
47
- "ts-loader": "^9.5.1",
48
- "vitest": "^3.2.4",
49
- "msw": "2.11.2",
50
- "@types/node": "^18.19.70",
51
- "typescript": "~5.7.2",
52
- "@biomejs/biome": "2.3.11"
53
- },
54
- "browser": {
55
- "fs": false,
56
- "os": false,
57
- "path": false,
58
- "stream": false
59
- },
60
- "packageManager": "pnpm@10.20.0",
61
- "engines": {
62
- "node": ">=18.0.0"
63
- },
64
- "sideEffects": false
2
+ "name": "saferx-pharma-sdk",
3
+ "version": "2.0.2",
4
+ "description": "Signed TypeScript client for the SafeRx Enterprise API",
5
+ "license": "MIT",
6
+ "homepage": "https://docs.saferx.online",
7
+ "repository": {"type": "git", "url": "https://github.com/KaRamHelal/SafeRx_Pharma"},
8
+ "type": "module",
9
+ "exports": {".": "./dist/client.js"},
10
+ "files": ["dist", "src", "README.md"],
11
+ "scripts": {"build": "tsc -p tsconfig.json", "test": "node --test dist/client.test.js"},
12
+ "devDependencies": {"typescript": "6.0.3"}
65
13
  }
package/src/client.ts ADDED
@@ -0,0 +1,117 @@
1
+ // AUTO-GENERATED by tools/generate_enterprise_sdks.py
2
+ export type JsonObject = Record<string, unknown>;
3
+ export type EnterpriseOperation = {
4
+ operationId: string; method: string; path: string; idempotencyRequired: boolean;
5
+ };
6
+
7
+ export const SDK_VERSION = "2.0.2";
8
+ export const CLIENT_KIND = "typescript_sdk";
9
+ export const SDK_LANGUAGE = "typescript";
10
+ export const MAX_ATTEMPTS = 3;
11
+ export const RETRY_BACKOFF_BASE_SECONDS = 0.1;
12
+ export const RETRY_BACKOFF_MAX_SECONDS = 2.0;
13
+ export const OPERATIONS: Record<string, EnterpriseOperation> = {
14
+ enterprise_erx_safety_check: { operationId: 'enterprise_erx_safety_check', method: 'POST', path: '/erx/safety-checks', idempotencyRequired: true },
15
+ enterprise_ocr_prescription_create: { operationId: 'enterprise_ocr_prescription_create', method: 'POST', path: '/ocr/prescriptions', idempotencyRequired: true },
16
+ enterprise_ocr_prescription_events: { operationId: 'enterprise_ocr_prescription_events', method: 'GET', path: '/ocr/prescriptions/{prescription_id}/events', idempotencyRequired: false },
17
+ enterprise_ocr_prescription_read: { operationId: 'enterprise_ocr_prescription_read', method: 'GET', path: '/ocr/prescriptions/{prescription_id}', idempotencyRequired: false },
18
+ enterprise_ocr_prescription_resolve: { operationId: 'enterprise_ocr_prescription_resolve', method: 'POST', path: '/ocr/prescriptions/{prescription_id}/medications/resolve', idempotencyRequired: false },
19
+ enterprise_ocr_prescription_review: { operationId: 'enterprise_ocr_prescription_review', method: 'POST', path: '/ocr/prescriptions/{prescription_id}/review', idempotencyRequired: false },
20
+ enterprise_ocr_prescription_safety: { operationId: 'enterprise_ocr_prescription_safety', method: 'POST', path: '/ocr/prescriptions/{prescription_id}/safety-checks', idempotencyRequired: false },
21
+ enterprise_registry_autocomplete: { operationId: 'enterprise_registry_autocomplete', method: 'GET', path: '/registry/suggest', idempotencyRequired: false },
22
+ enterprise_registry_ingredients: { operationId: 'enterprise_registry_ingredients', method: 'GET', path: '/registry/ingredients', idempotencyRequired: false },
23
+ enterprise_registry_product_detail: { operationId: 'enterprise_registry_product_detail', method: 'GET', path: '/registry/products/{sfrx_id}', idempotencyRequired: false },
24
+ enterprise_registry_resolve: { operationId: 'enterprise_registry_resolve', method: 'POST', path: '/registry/resolve', idempotencyRequired: false },
25
+ enterprise_registry_search: { operationId: 'enterprise_registry_search', method: 'GET', path: '/registry/search', idempotencyRequired: false },
26
+ enterprise_safety_capabilities: { operationId: 'enterprise_safety_capabilities', method: 'GET', path: '/safety/capabilities', idempotencyRequired: false },
27
+ enterprise_safety_check: { operationId: 'enterprise_safety_check', method: 'POST', path: '/safety/checks', idempotencyRequired: true },
28
+ };
29
+
30
+ export type MultipartFile = { filename: string; content: Uint8Array; contentType?: string };
31
+ export type RequestOptions = { query?: Record<string, string | number | boolean | (string | number | boolean)[]>; body?: unknown; multipart?: Record<string, string | MultipartFile>; pathParams?: Record<string, string | number>; idempotencyKey?: string; signal?: AbortSignal; };
32
+
33
+ export class SafeRxProblemDetailsError extends Error {
34
+ readonly status: number; readonly problem: JsonObject; readonly requestId?: string;
35
+ constructor(status: number, problem: JsonObject, requestId?: string) {
36
+ super(String(problem.detail ?? problem.title ?? "Enterprise request failed"));
37
+ this.name = "SafeRxProblemDetailsError"; this.status = status; this.problem = problem; this.requestId = requestId ?? (String(problem.request_id ?? "") || undefined);
38
+ }
39
+ }
40
+
41
+ function encode(value: string): string { return encodeURIComponent(value).replace(/[!'()*]/g, (char) => `%${char.charCodeAt(0).toString(16).toUpperCase()}`); }
42
+ export function canonicalQuery(query: RequestOptions["query"]): string {
43
+ if (!query) return "";
44
+ const pairs: string[] = [];
45
+ for (const [key, raw] of Object.entries(query)) for (const value of Array.isArray(raw) ? raw : [raw]) pairs.push(`${encode(key)}=${encode(String(value))}`);
46
+ return pairs.sort().join("&");
47
+ }
48
+ function canonicalJson(value: unknown): string {
49
+ if (value === null || typeof value !== "object") return JSON.stringify(value);
50
+ if (Array.isArray(value)) return `[${value.map(canonicalJson).join(",")}]`;
51
+ return `{${Object.entries(value as JsonObject).sort(([a], [b]) => a.localeCompare(b)).map(([key, item]) => `${JSON.stringify(key)}:${canonicalJson(item)}`).join(",")}}`;
52
+ }
53
+ function bytes(value: string): Uint8Array { return new TextEncoder().encode(value) as Uint8Array; }
54
+ async function sha256(value: Uint8Array): Promise<string> { const digest = await crypto.subtle.digest("SHA-256", value as BufferSource); return [...new Uint8Array(digest)].map((item) => item.toString(16).padStart(2, "0")).join(""); }
55
+ async function hmac(key: string, value: string): Promise<string> { const cryptoKey = await crypto.subtle.importKey("raw", bytes(key) as BufferSource, { name: "HMAC", hash: "SHA-256" }, false, ["sign"]); const digest = await crypto.subtle.sign("HMAC", cryptoKey, bytes(value) as BufferSource); return btoa(String.fromCharCode(...new Uint8Array(digest))).replace(/=+$/, "").replace(/\+/g, "-").replace(/\//g, "_"); }
56
+ export function canonicalRequest(method: string, path: string, query: string, bodyHash: string, timestamp: string, nonce: string): string { return [method.toUpperCase(), encode(path).replace(/%2F/g, "/"), query, bodyHash, timestamp, nonce].join("\n"); }
57
+ const RETRY_AFTER_MAX_SECONDS = 60;
58
+ function retryDelaySeconds(retryAfter: string | null, attempt: number): number {
59
+ const backoff = Math.min(RETRY_BACKOFF_MAX_SECONDS, RETRY_BACKOFF_BASE_SECONDS * 2 ** attempt);
60
+ if (!retryAfter) return backoff;
61
+ const parsed = Number(retryAfter);
62
+ if (!Number.isFinite(parsed)) return backoff;
63
+ return Math.min(RETRY_AFTER_MAX_SECONDS, Math.max(backoff, parsed));
64
+ }
65
+
66
+ function isMultipartFile(value: string | MultipartFile): value is MultipartFile { return typeof value === "object" && value !== null && "content" in value; }
67
+ export function encodeMultipart(fields: Record<string, string | MultipartFile>): { body: Uint8Array; contentType: string } {
68
+ const boundary = `----saferx-${crypto.randomUUID().replace(/-/g, "")}`;
69
+ const chunks: Uint8Array[] = [];
70
+ for (const [name, value] of Object.entries(fields)) {
71
+ if (isMultipartFile(value)) {
72
+ chunks.push(bytes(`--${boundary}\r\nContent-Disposition: form-data; name="${name}"; filename="${value.filename}"\r\nContent-Type: ${value.contentType ?? "application/octet-stream"}\r\n\r\n`));
73
+ chunks.push(value.content);
74
+ chunks.push(bytes("\r\n"));
75
+ } else {
76
+ chunks.push(bytes(`--${boundary}\r\nContent-Disposition: form-data; name="${name}"\r\n\r\n${value}\r\n`));
77
+ }
78
+ }
79
+ chunks.push(bytes(`--${boundary}--\r\n`));
80
+ const total = chunks.reduce((sum, chunk) => sum + chunk.length, 0);
81
+ const body = new Uint8Array(total);
82
+ let offset = 0;
83
+ for (const chunk of chunks) { body.set(chunk, offset); offset += chunk.length; }
84
+ return { body, contentType: `multipart/form-data; boundary=${boundary}` };
85
+ }
86
+
87
+ export class SafeRxClient {
88
+ constructor(private readonly baseUrl: string, private readonly apiKey: string, private readonly clientName = "saferx-pharma-sdk", private readonly fetchImpl: typeof fetch = fetch) {}
89
+ async request(operationId: string, options: RequestOptions = {}): Promise<unknown> {
90
+ const operation = OPERATIONS[operationId]; if (!operation) throw new Error(`Unknown Enterprise operation: ${operationId}`);
91
+ let path = operation.path; for (const [key, value] of Object.entries(options.pathParams ?? {})) path = path.replace(`{${key}}`, encode(String(value)));
92
+ if (operation.idempotencyRequired && !options.idempotencyKey) throw new Error(`${operationId} requires idempotencyKey`);
93
+ if (options.body !== undefined && options.multipart !== undefined) throw new Error("pass either body or multipart, not both");
94
+ let bodyBytes: Uint8Array; let contentType: string | undefined; let sendBody: Uint8Array | string | undefined;
95
+ if (options.multipart !== undefined) {
96
+ const encoded = encodeMultipart(options.multipart); bodyBytes = encoded.body; contentType = encoded.contentType; sendBody = encoded.body;
97
+ } else if (options.body !== undefined) {
98
+ const json = canonicalJson(options.body); bodyBytes = bytes(json); contentType = "application/json"; sendBody = json;
99
+ } else {
100
+ bodyBytes = bytes(""); sendBody = undefined;
101
+ }
102
+ const query = canonicalQuery(options.query);
103
+ const timestamp = new Date().toISOString(); const nonce = crypto.randomUUID(); const requestId = crypto.randomUUID();
104
+ const signingPath = new URL(this.baseUrl).pathname.replace(/\/+$/, "") + path;
105
+ const signature = await hmac(this.apiKey, canonicalRequest(operation.method, signingPath, query, await sha256(bodyBytes), timestamp, nonce));
106
+ const headers: Record<string, string> = { Accept: "application/json", "X-SafeRx-API-Key": this.apiKey, "X-SafeRx-Timestamp": timestamp, "X-SafeRx-Nonce": nonce, "X-SafeRx-Signature": signature, "X-Request-ID": requestId, "X-SafeRx-Client-Kind": CLIENT_KIND, "X-SafeRx-Client-Name": this.clientName, "X-SafeRx-Client-Version": SDK_VERSION, "X-SafeRx-SDK-Language": SDK_LANGUAGE, "X-SafeRx-SDK-Version": SDK_VERSION };
107
+ if (contentType !== undefined) headers["Content-Type"] = contentType; if (options.idempotencyKey) headers["Idempotency-Key"] = options.idempotencyKey;
108
+ const target = `${this.baseUrl.replace(/\/+$/, "")}${path}${query ? `?${query}` : ""}`;
109
+ for (let attempt = 0; attempt < MAX_ATTEMPTS; attempt++) {
110
+ try { const response = await this.fetchImpl(target, { method: operation.method, headers, body: sendBody as BodyInit | undefined, signal: options.signal }); const raw = await response.text(); const parsed = raw ? JSON.parse(raw) : undefined;
111
+ if (response.ok) return parsed; if ([429, 502, 503, 504].includes(response.status) && attempt + 1 < MAX_ATTEMPTS) { await new Promise((resolve) => setTimeout(resolve, retryDelaySeconds(response.headers.get("Retry-After"), attempt) * 1000)); continue; }
112
+ throw new SafeRxProblemDetailsError(response.status, (parsed ?? { status: response.status, title: "REQUEST_FAILED" }) as JsonObject, requestId);
113
+ } catch (error) { if (error instanceof SafeRxProblemDetailsError) throw error; if (attempt + 1 >= MAX_ATTEMPTS) throw new SafeRxProblemDetailsError(503, { status: 503, title: "UPSTREAM_UNAVAILABLE", safe_to_retry: true }, requestId); await new Promise((resolve) => setTimeout(resolve, Math.min(RETRY_BACKOFF_MAX_SECONDS, RETRY_BACKOFF_BASE_SECONDS * 2 ** attempt) * 1000)); }
114
+ }
115
+ throw new Error("retry loop exhausted");
116
+ }
117
+ }
@@ -1,39 +0,0 @@
1
- import { HeaderAuthProvider } from "./auth/HeaderAuthProvider.js";
2
- import * as core from "./core/index.js";
3
- import type * as environments from "./environments.js";
4
- export type BaseClientOptions = {
5
- environment?: core.Supplier<environments.SafeRxEnvironment | string>;
6
- /** Specify a custom URL to connect the client to. */
7
- baseUrl?: core.Supplier<string>;
8
- /** Additional headers to include in requests. */
9
- headers?: Record<string, string | core.Supplier<string | null | undefined> | null | undefined>;
10
- /** The default maximum time to wait for a response in seconds. */
11
- timeoutInSeconds?: number;
12
- /** The default number of times to retry the request. Defaults to 2. */
13
- maxRetries?: number;
14
- /** Provide a custom fetch implementation. Useful for platforms that don't have a built-in fetch or need a custom implementation. */
15
- fetch?: typeof fetch;
16
- /** Configure logging for the client. */
17
- logging?: core.logging.LogConfig | core.logging.Logger;
18
- } & HeaderAuthProvider.AuthOptions;
19
- export interface BaseRequestOptions {
20
- /** The maximum time to wait for a response in seconds. */
21
- timeoutInSeconds?: number;
22
- /** The number of times to retry the request. Defaults to 2. */
23
- maxRetries?: number;
24
- /** A hook to abort the request. */
25
- abortSignal?: AbortSignal;
26
- /** Additional query string parameters to include in the request. */
27
- queryParams?: Record<string, unknown>;
28
- /** Additional headers to include in the request. */
29
- headers?: Record<string, string | core.Supplier<string | null | undefined> | null | undefined>;
30
- }
31
- export type NormalizedClientOptions<T extends BaseClientOptions = BaseClientOptions> = T & {
32
- logging: core.logging.Logger;
33
- authProvider?: core.AuthProvider;
34
- };
35
- export type NormalizedClientOptionsWithAuth<T extends BaseClientOptions = BaseClientOptions> = NormalizedClientOptions<T> & {
36
- authProvider: core.AuthProvider;
37
- };
38
- export declare function normalizeClientOptions<T extends BaseClientOptions = BaseClientOptions>(options: T): NormalizedClientOptions<T>;
39
- export declare function normalizeClientOptionsWithAuth<T extends BaseClientOptions = BaseClientOptions>(options: T): NormalizedClientOptionsWithAuth<T>;
@@ -1,62 +0,0 @@
1
- "use strict";
2
- // This file was auto-generated by Fern from our API Definition.
3
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
4
- if (k2 === undefined) k2 = k;
5
- var desc = Object.getOwnPropertyDescriptor(m, k);
6
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
7
- desc = { enumerable: true, get: function() { return m[k]; } };
8
- }
9
- Object.defineProperty(o, k2, desc);
10
- }) : (function(o, m, k, k2) {
11
- if (k2 === undefined) k2 = k;
12
- o[k2] = m[k];
13
- }));
14
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
15
- Object.defineProperty(o, "default", { enumerable: true, value: v });
16
- }) : function(o, v) {
17
- o["default"] = v;
18
- });
19
- var __importStar = (this && this.__importStar) || (function () {
20
- var ownKeys = function(o) {
21
- ownKeys = Object.getOwnPropertyNames || function (o) {
22
- var ar = [];
23
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
24
- return ar;
25
- };
26
- return ownKeys(o);
27
- };
28
- return function (mod) {
29
- if (mod && mod.__esModule) return mod;
30
- var result = {};
31
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
32
- __setModuleDefault(result, mod);
33
- return result;
34
- };
35
- })();
36
- Object.defineProperty(exports, "__esModule", { value: true });
37
- exports.normalizeClientOptions = normalizeClientOptions;
38
- exports.normalizeClientOptionsWithAuth = normalizeClientOptionsWithAuth;
39
- const HeaderAuthProvider_js_1 = require("./auth/HeaderAuthProvider.js");
40
- const headers_js_1 = require("./core/headers.js");
41
- const core = __importStar(require("./core/index.js"));
42
- function normalizeClientOptions(options) {
43
- const headers = (0, headers_js_1.mergeHeaders)({
44
- "X-Fern-Language": "JavaScript",
45
- "X-Fern-SDK-Name": "saferx-pharma-sdk",
46
- "X-Fern-SDK-Version": "2.0.1",
47
- "User-Agent": "saferx-pharma-sdk/2.0.1",
48
- "X-Fern-Runtime": core.RUNTIME.type,
49
- "X-Fern-Runtime-Version": core.RUNTIME.version,
50
- }, options === null || options === void 0 ? void 0 : options.headers);
51
- return Object.assign(Object.assign({}, options), { logging: core.logging.createLogger(options === null || options === void 0 ? void 0 : options.logging), headers });
52
- }
53
- function normalizeClientOptionsWithAuth(options) {
54
- var _a;
55
- const normalized = normalizeClientOptions(options);
56
- const normalizedWithNoOpAuthProvider = withNoOpAuthProvider(normalized);
57
- (_a = normalized.authProvider) !== null && _a !== void 0 ? _a : (normalized.authProvider = new HeaderAuthProvider_js_1.HeaderAuthProvider(normalizedWithNoOpAuthProvider));
58
- return normalized;
59
- }
60
- function withNoOpAuthProvider(options) {
61
- return Object.assign(Object.assign({}, options), { authProvider: new core.NoOpAuthProvider() });
62
- }
@@ -1,17 +0,0 @@
1
- import { DevelopersClient } from "./api/resources/developers/client/Client.js";
2
- import { DrugSafetyClient } from "./api/resources/drugSafety/client/Client.js";
3
- import type { BaseClientOptions, BaseRequestOptions } from "./BaseClient.js";
4
- import { type NormalizedClientOptionsWithAuth } from "./BaseClient.js";
5
- export declare namespace SafeRxClient {
6
- type Options = BaseClientOptions;
7
- interface RequestOptions extends BaseRequestOptions {
8
- }
9
- }
10
- export declare class SafeRxClient {
11
- protected readonly _options: NormalizedClientOptionsWithAuth<SafeRxClient.Options>;
12
- protected _drugSafety: DrugSafetyClient | undefined;
13
- protected _developers: DevelopersClient | undefined;
14
- constructor(options?: SafeRxClient.Options);
15
- get drugSafety(): DrugSafetyClient;
16
- get developers(): DevelopersClient;
17
- }
@@ -1,21 +0,0 @@
1
- "use strict";
2
- // This file was auto-generated by Fern from our API Definition.
3
- Object.defineProperty(exports, "__esModule", { value: true });
4
- exports.SafeRxClient = void 0;
5
- const Client_js_1 = require("./api/resources/developers/client/Client.js");
6
- const Client_js_2 = require("./api/resources/drugSafety/client/Client.js");
7
- const BaseClient_js_1 = require("./BaseClient.js");
8
- class SafeRxClient {
9
- constructor(options = {}) {
10
- this._options = (0, BaseClient_js_1.normalizeClientOptionsWithAuth)(options);
11
- }
12
- get drugSafety() {
13
- var _a;
14
- return ((_a = this._drugSafety) !== null && _a !== void 0 ? _a : (this._drugSafety = new Client_js_2.DrugSafetyClient(this._options)));
15
- }
16
- get developers() {
17
- var _a;
18
- return ((_a = this._developers) !== null && _a !== void 0 ? _a : (this._developers = new Client_js_1.DevelopersClient(this._options)));
19
- }
20
- }
21
- exports.SafeRxClient = SafeRxClient;
@@ -1,5 +0,0 @@
1
- import type * as core from "../../core/index.js";
2
- import * as errors from "../../errors/index.js";
3
- export declare class BadRequestError extends errors.SafeRxError {
4
- constructor(body?: unknown, rawResponse?: core.RawResponse);
5
- }