@ominity/api-typescript 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (504) hide show
  1. package/FUNCTIONS.md +38 -0
  2. package/LICENSE.md +8 -0
  3. package/README.md +468 -0
  4. package/RUNTIMES.md +48 -0
  5. package/dist/commonjs/core.d.ts +10 -0
  6. package/dist/commonjs/core.d.ts.map +1 -0
  7. package/dist/commonjs/core.js +14 -0
  8. package/dist/commonjs/core.js.map +1 -0
  9. package/dist/commonjs/hooks/hooks.d.ts +25 -0
  10. package/dist/commonjs/hooks/hooks.d.ts.map +1 -0
  11. package/dist/commonjs/hooks/hooks.js +83 -0
  12. package/dist/commonjs/hooks/hooks.js.map +1 -0
  13. package/dist/commonjs/hooks/index.d.ts +3 -0
  14. package/dist/commonjs/hooks/index.d.ts.map +1 -0
  15. package/dist/commonjs/hooks/index.js +19 -0
  16. package/dist/commonjs/hooks/index.js.map +1 -0
  17. package/dist/commonjs/hooks/ominity-hooks.d.ts +12 -0
  18. package/dist/commonjs/hooks/ominity-hooks.d.ts.map +1 -0
  19. package/dist/commonjs/hooks/ominity-hooks.js +86 -0
  20. package/dist/commonjs/hooks/ominity-hooks.js.map +1 -0
  21. package/dist/commonjs/hooks/registration.d.ts +3 -0
  22. package/dist/commonjs/hooks/registration.d.ts.map +1 -0
  23. package/dist/commonjs/hooks/registration.js +16 -0
  24. package/dist/commonjs/hooks/registration.js.map +1 -0
  25. package/dist/commonjs/hooks/types.d.ts +76 -0
  26. package/dist/commonjs/hooks/types.d.ts.map +1 -0
  27. package/dist/commonjs/hooks/types.js +3 -0
  28. package/dist/commonjs/hooks/types.js.map +1 -0
  29. package/dist/commonjs/index.d.ts +6 -0
  30. package/dist/commonjs/index.d.ts.map +1 -0
  31. package/dist/commonjs/index.js +45 -0
  32. package/dist/commonjs/index.js.map +1 -0
  33. package/dist/commonjs/lib/base64.d.ts +10 -0
  34. package/dist/commonjs/lib/base64.d.ts.map +1 -0
  35. package/dist/commonjs/lib/base64.js +70 -0
  36. package/dist/commonjs/lib/base64.js.map +1 -0
  37. package/dist/commonjs/lib/config.d.ts +52 -0
  38. package/dist/commonjs/lib/config.d.ts.map +1 -0
  39. package/dist/commonjs/lib/config.js +33 -0
  40. package/dist/commonjs/lib/config.js.map +1 -0
  41. package/dist/commonjs/lib/dlv.d.ts +14 -0
  42. package/dist/commonjs/lib/dlv.d.ts.map +1 -0
  43. package/dist/commonjs/lib/dlv.js +46 -0
  44. package/dist/commonjs/lib/dlv.js.map +1 -0
  45. package/dist/commonjs/lib/encodings.d.ts +53 -0
  46. package/dist/commonjs/lib/encodings.d.ts.map +1 -0
  47. package/dist/commonjs/lib/encodings.js +381 -0
  48. package/dist/commonjs/lib/encodings.js.map +1 -0
  49. package/dist/commonjs/lib/env.d.ts +16 -0
  50. package/dist/commonjs/lib/env.d.ts.map +1 -0
  51. package/dist/commonjs/lib/env.js +80 -0
  52. package/dist/commonjs/lib/env.js.map +1 -0
  53. package/dist/commonjs/lib/files.d.ts +13 -0
  54. package/dist/commonjs/lib/files.d.ts.map +1 -0
  55. package/dist/commonjs/lib/files.js +74 -0
  56. package/dist/commonjs/lib/files.js.map +1 -0
  57. package/dist/commonjs/lib/http.d.ts +67 -0
  58. package/dist/commonjs/lib/http.d.ts.map +1 -0
  59. package/dist/commonjs/lib/http.js +214 -0
  60. package/dist/commonjs/lib/http.js.map +1 -0
  61. package/dist/commonjs/lib/is-plain-object.d.ts +2 -0
  62. package/dist/commonjs/lib/is-plain-object.d.ts.map +1 -0
  63. package/dist/commonjs/lib/is-plain-object.js +38 -0
  64. package/dist/commonjs/lib/is-plain-object.js.map +1 -0
  65. package/dist/commonjs/lib/logger.d.ts +6 -0
  66. package/dist/commonjs/lib/logger.d.ts.map +1 -0
  67. package/dist/commonjs/lib/logger.js +3 -0
  68. package/dist/commonjs/lib/logger.js.map +1 -0
  69. package/dist/commonjs/lib/matchers.d.ts +59 -0
  70. package/dist/commonjs/lib/matchers.d.ts.map +1 -0
  71. package/dist/commonjs/lib/matchers.js +219 -0
  72. package/dist/commonjs/lib/matchers.js.map +1 -0
  73. package/dist/commonjs/lib/primitives.d.ts +26 -0
  74. package/dist/commonjs/lib/primitives.d.ts.map +1 -0
  75. package/dist/commonjs/lib/primitives.js +108 -0
  76. package/dist/commonjs/lib/primitives.js.map +1 -0
  77. package/dist/commonjs/lib/retries.d.ts +38 -0
  78. package/dist/commonjs/lib/retries.d.ts.map +1 -0
  79. package/dist/commonjs/lib/retries.js +150 -0
  80. package/dist/commonjs/lib/retries.js.map +1 -0
  81. package/dist/commonjs/lib/schemas.d.ts +21 -0
  82. package/dist/commonjs/lib/schemas.d.ts.map +1 -0
  83. package/dist/commonjs/lib/schemas.js +92 -0
  84. package/dist/commonjs/lib/schemas.js.map +1 -0
  85. package/dist/commonjs/lib/sdks.d.ts +63 -0
  86. package/dist/commonjs/lib/sdks.d.ts.map +1 -0
  87. package/dist/commonjs/lib/sdks.js +270 -0
  88. package/dist/commonjs/lib/sdks.js.map +1 -0
  89. package/dist/commonjs/lib/security.d.ts +83 -0
  90. package/dist/commonjs/lib/security.d.ts.map +1 -0
  91. package/dist/commonjs/lib/security.js +155 -0
  92. package/dist/commonjs/lib/security.js.map +1 -0
  93. package/dist/commonjs/lib/url.d.ts +5 -0
  94. package/dist/commonjs/lib/url.d.ts.map +1 -0
  95. package/dist/commonjs/lib/url.js +22 -0
  96. package/dist/commonjs/lib/url.js.map +1 -0
  97. package/dist/commonjs/models/errors/documentation.d.ts +22 -0
  98. package/dist/commonjs/models/errors/documentation.d.ts.map +1 -0
  99. package/dist/commonjs/models/errors/documentation.js +61 -0
  100. package/dist/commonjs/models/errors/documentation.js.map +1 -0
  101. package/dist/commonjs/models/errors/error-response-links.d.ts +21 -0
  102. package/dist/commonjs/models/errors/error-response-links.d.ts.map +1 -0
  103. package/dist/commonjs/models/errors/error-response-links.js +59 -0
  104. package/dist/commonjs/models/errors/error-response-links.js.map +1 -0
  105. package/dist/commonjs/models/errors/error-response.d.ts +56 -0
  106. package/dist/commonjs/models/errors/error-response.d.ts.map +1 -0
  107. package/dist/commonjs/models/errors/error-response.js +98 -0
  108. package/dist/commonjs/models/errors/error-response.js.map +1 -0
  109. package/dist/commonjs/models/errors/http-client-errors.d.ts +44 -0
  110. package/dist/commonjs/models/errors/http-client-errors.d.ts.map +1 -0
  111. package/dist/commonjs/models/errors/http-client-errors.js +75 -0
  112. package/dist/commonjs/models/errors/http-client-errors.js.map +1 -0
  113. package/dist/commonjs/models/errors/index.d.ts +9 -0
  114. package/dist/commonjs/models/errors/index.d.ts.map +1 -0
  115. package/dist/commonjs/models/errors/index.js +25 -0
  116. package/dist/commonjs/models/errors/index.js.map +1 -0
  117. package/dist/commonjs/models/errors/ominity-default-error.d.ts +10 -0
  118. package/dist/commonjs/models/errors/ominity-default-error.d.ts.map +1 -0
  119. package/dist/commonjs/models/errors/ominity-default-error.js +31 -0
  120. package/dist/commonjs/models/errors/ominity-default-error.js.map +1 -0
  121. package/dist/commonjs/models/errors/ominity-error.d.ts +19 -0
  122. package/dist/commonjs/models/errors/ominity-error.d.ts.map +1 -0
  123. package/dist/commonjs/models/errors/ominity-error.js +17 -0
  124. package/dist/commonjs/models/errors/ominity-error.js.map +1 -0
  125. package/dist/commonjs/models/errors/response-validation-error.d.ts +26 -0
  126. package/dist/commonjs/models/errors/response-validation-error.d.ts.map +1 -0
  127. package/dist/commonjs/models/errors/response-validation-error.js +63 -0
  128. package/dist/commonjs/models/errors/response-validation-error.js.map +1 -0
  129. package/dist/commonjs/models/errors/sdk-validation-error.d.ts +21 -0
  130. package/dist/commonjs/models/errors/sdk-validation-error.d.ts.map +1 -0
  131. package/dist/commonjs/models/errors/sdk-validation-error.js +79 -0
  132. package/dist/commonjs/models/errors/sdk-validation-error.js.map +1 -0
  133. package/dist/commonjs/models/index.d.ts +2 -0
  134. package/dist/commonjs/models/index.d.ts.map +1 -0
  135. package/dist/commonjs/models/index.js +18 -0
  136. package/dist/commonjs/models/index.js.map +1 -0
  137. package/dist/commonjs/models/operations/index.d.ts +2 -0
  138. package/dist/commonjs/models/operations/index.d.ts.map +1 -0
  139. package/dist/commonjs/models/operations/index.js +3 -0
  140. package/dist/commonjs/models/operations/index.js.map +1 -0
  141. package/dist/commonjs/models/security.d.ts +19 -0
  142. package/dist/commonjs/models/security.d.ts.map +1 -0
  143. package/dist/commonjs/models/security.js +58 -0
  144. package/dist/commonjs/models/security.js.map +1 -0
  145. package/dist/commonjs/package.json +3 -0
  146. package/dist/commonjs/sdk/cms/index.d.ts +4 -0
  147. package/dist/commonjs/sdk/cms/index.d.ts.map +1 -0
  148. package/dist/commonjs/sdk/cms/index.js +11 -0
  149. package/dist/commonjs/sdk/cms/index.js.map +1 -0
  150. package/dist/commonjs/sdk/commerce/index.d.ts +7 -0
  151. package/dist/commonjs/sdk/commerce/index.d.ts.map +1 -0
  152. package/dist/commonjs/sdk/commerce/index.js +15 -0
  153. package/dist/commonjs/sdk/commerce/index.js.map +1 -0
  154. package/dist/commonjs/sdk/commerce/products.d.ts +4 -0
  155. package/dist/commonjs/sdk/commerce/products.d.ts.map +1 -0
  156. package/dist/commonjs/sdk/commerce/products.js +11 -0
  157. package/dist/commonjs/sdk/commerce/products.js.map +1 -0
  158. package/dist/commonjs/sdk/http.d.ts +19 -0
  159. package/dist/commonjs/sdk/http.d.ts.map +1 -0
  160. package/dist/commonjs/sdk/http.js +143 -0
  161. package/dist/commonjs/sdk/http.js.map +1 -0
  162. package/dist/commonjs/sdk/index.d.ts +2 -0
  163. package/dist/commonjs/sdk/index.d.ts.map +1 -0
  164. package/dist/commonjs/sdk/index.js +18 -0
  165. package/dist/commonjs/sdk/index.js.map +1 -0
  166. package/dist/commonjs/sdk/sdk.d.ts +16 -0
  167. package/dist/commonjs/sdk/sdk.d.ts.map +1 -0
  168. package/dist/commonjs/sdk/sdk.js +24 -0
  169. package/dist/commonjs/sdk/sdk.js.map +1 -0
  170. package/dist/commonjs/sdk/settings/index.d.ts +4 -0
  171. package/dist/commonjs/sdk/settings/index.d.ts.map +1 -0
  172. package/dist/commonjs/sdk/settings/index.js +11 -0
  173. package/dist/commonjs/sdk/settings/index.js.map +1 -0
  174. package/dist/commonjs/types/async.d.ts +23 -0
  175. package/dist/commonjs/types/async.d.ts.map +1 -0
  176. package/dist/commonjs/types/async.js +41 -0
  177. package/dist/commonjs/types/async.js.map +1 -0
  178. package/dist/commonjs/types/blobs.d.ts +4 -0
  179. package/dist/commonjs/types/blobs.d.ts.map +1 -0
  180. package/dist/commonjs/types/blobs.js +59 -0
  181. package/dist/commonjs/types/blobs.js.map +1 -0
  182. package/dist/commonjs/types/const-date-time.d.ts +3 -0
  183. package/dist/commonjs/types/const-date-time.d.ts.map +1 -0
  184. package/dist/commonjs/types/const-date-time.js +43 -0
  185. package/dist/commonjs/types/const-date-time.js.map +1 -0
  186. package/dist/commonjs/types/default-to-zero-value.d.ts +12 -0
  187. package/dist/commonjs/types/default-to-zero-value.d.ts.map +1 -0
  188. package/dist/commonjs/types/default-to-zero-value.js +32 -0
  189. package/dist/commonjs/types/default-to-zero-value.js.map +1 -0
  190. package/dist/commonjs/types/enums.d.ts +9 -0
  191. package/dist/commonjs/types/enums.d.ts.map +1 -0
  192. package/dist/commonjs/types/enums.js +63 -0
  193. package/dist/commonjs/types/enums.js.map +1 -0
  194. package/dist/commonjs/types/fp.d.ts +31 -0
  195. package/dist/commonjs/types/fp.d.ts.map +1 -0
  196. package/dist/commonjs/types/fp.js +34 -0
  197. package/dist/commonjs/types/fp.js.map +1 -0
  198. package/dist/commonjs/types/index.d.ts +10 -0
  199. package/dist/commonjs/types/index.d.ts.map +1 -0
  200. package/dist/commonjs/types/index.js +28 -0
  201. package/dist/commonjs/types/index.js.map +1 -0
  202. package/dist/commonjs/types/operations.d.ts +27 -0
  203. package/dist/commonjs/types/operations.d.ts.map +1 -0
  204. package/dist/commonjs/types/operations.js +80 -0
  205. package/dist/commonjs/types/operations.js.map +1 -0
  206. package/dist/commonjs/types/primitives.d.ts +11 -0
  207. package/dist/commonjs/types/primitives.d.ts.map +1 -0
  208. package/dist/commonjs/types/primitives.js +173 -0
  209. package/dist/commonjs/types/primitives.js.map +1 -0
  210. package/dist/commonjs/types/rfcdate.d.ts +21 -0
  211. package/dist/commonjs/types/rfcdate.d.ts.map +1 -0
  212. package/dist/commonjs/types/rfcdate.js +43 -0
  213. package/dist/commonjs/types/rfcdate.js.map +1 -0
  214. package/dist/commonjs/types/smart-union.d.ts +7 -0
  215. package/dist/commonjs/types/smart-union.d.ts.map +1 -0
  216. package/dist/commonjs/types/smart-union.js +143 -0
  217. package/dist/commonjs/types/smart-union.js.map +1 -0
  218. package/dist/commonjs/types/streams.d.ts +2 -0
  219. package/dist/commonjs/types/streams.d.ts.map +1 -0
  220. package/dist/commonjs/types/streams.js +15 -0
  221. package/dist/commonjs/types/streams.js.map +1 -0
  222. package/dist/commonjs/types/unrecognized.d.ts +16 -0
  223. package/dist/commonjs/types/unrecognized.d.ts.map +1 -0
  224. package/dist/commonjs/types/unrecognized.js +31 -0
  225. package/dist/commonjs/types/unrecognized.js.map +1 -0
  226. package/dist/esm/core.d.ts +10 -0
  227. package/dist/esm/core.d.ts.map +1 -0
  228. package/dist/esm/core.js +10 -0
  229. package/dist/esm/core.js.map +1 -0
  230. package/dist/esm/hooks/hooks.d.ts +25 -0
  231. package/dist/esm/hooks/hooks.d.ts.map +1 -0
  232. package/dist/esm/hooks/hooks.js +79 -0
  233. package/dist/esm/hooks/hooks.js.map +1 -0
  234. package/dist/esm/hooks/index.d.ts +3 -0
  235. package/dist/esm/hooks/index.d.ts.map +1 -0
  236. package/dist/esm/hooks/index.js +3 -0
  237. package/dist/esm/hooks/index.js.map +1 -0
  238. package/dist/esm/hooks/ominity-hooks.d.ts +12 -0
  239. package/dist/esm/hooks/ominity-hooks.d.ts.map +1 -0
  240. package/dist/esm/hooks/ominity-hooks.js +82 -0
  241. package/dist/esm/hooks/ominity-hooks.js.map +1 -0
  242. package/dist/esm/hooks/registration.d.ts +3 -0
  243. package/dist/esm/hooks/registration.d.ts.map +1 -0
  244. package/dist/esm/hooks/registration.js +13 -0
  245. package/dist/esm/hooks/registration.js.map +1 -0
  246. package/dist/esm/hooks/types.d.ts +76 -0
  247. package/dist/esm/hooks/types.d.ts.map +1 -0
  248. package/dist/esm/hooks/types.js +2 -0
  249. package/dist/esm/hooks/types.js.map +1 -0
  250. package/dist/esm/index.d.ts +6 -0
  251. package/dist/esm/index.d.ts.map +1 -0
  252. package/dist/esm/index.js +5 -0
  253. package/dist/esm/index.js.map +1 -0
  254. package/dist/esm/lib/base64.d.ts +10 -0
  255. package/dist/esm/lib/base64.d.ts.map +1 -0
  256. package/dist/esm/lib/base64.js +28 -0
  257. package/dist/esm/lib/base64.js.map +1 -0
  258. package/dist/esm/lib/config.d.ts +52 -0
  259. package/dist/esm/lib/config.d.ts.map +1 -0
  260. package/dist/esm/lib/config.js +29 -0
  261. package/dist/esm/lib/config.js.map +1 -0
  262. package/dist/esm/lib/dlv.d.ts +14 -0
  263. package/dist/esm/lib/dlv.d.ts.map +1 -0
  264. package/dist/esm/lib/dlv.js +43 -0
  265. package/dist/esm/lib/dlv.js.map +1 -0
  266. package/dist/esm/lib/encodings.d.ts +53 -0
  267. package/dist/esm/lib/encodings.d.ts.map +1 -0
  268. package/dist/esm/lib/encodings.js +367 -0
  269. package/dist/esm/lib/encodings.js.map +1 -0
  270. package/dist/esm/lib/env.d.ts +16 -0
  271. package/dist/esm/lib/env.d.ts.map +1 -0
  272. package/dist/esm/lib/env.js +42 -0
  273. package/dist/esm/lib/env.js.map +1 -0
  274. package/dist/esm/lib/files.d.ts +13 -0
  275. package/dist/esm/lib/files.d.ts.map +1 -0
  276. package/dist/esm/lib/files.js +70 -0
  277. package/dist/esm/lib/files.js.map +1 -0
  278. package/dist/esm/lib/http.d.ts +67 -0
  279. package/dist/esm/lib/http.d.ts.map +1 -0
  280. package/dist/esm/lib/http.js +204 -0
  281. package/dist/esm/lib/http.js.map +1 -0
  282. package/dist/esm/lib/is-plain-object.d.ts +2 -0
  283. package/dist/esm/lib/is-plain-object.d.ts.map +1 -0
  284. package/dist/esm/lib/is-plain-object.js +35 -0
  285. package/dist/esm/lib/is-plain-object.js.map +1 -0
  286. package/dist/esm/lib/logger.d.ts +6 -0
  287. package/dist/esm/lib/logger.d.ts.map +1 -0
  288. package/dist/esm/lib/logger.js +2 -0
  289. package/dist/esm/lib/logger.js.map +1 -0
  290. package/dist/esm/lib/matchers.d.ts +59 -0
  291. package/dist/esm/lib/matchers.d.ts.map +1 -0
  292. package/dist/esm/lib/matchers.js +200 -0
  293. package/dist/esm/lib/matchers.js.map +1 -0
  294. package/dist/esm/lib/primitives.d.ts +26 -0
  295. package/dist/esm/lib/primitives.d.ts.map +1 -0
  296. package/dist/esm/lib/primitives.js +100 -0
  297. package/dist/esm/lib/primitives.js.map +1 -0
  298. package/dist/esm/lib/retries.d.ts +38 -0
  299. package/dist/esm/lib/retries.d.ts.map +1 -0
  300. package/dist/esm/lib/retries.js +144 -0
  301. package/dist/esm/lib/retries.js.map +1 -0
  302. package/dist/esm/lib/schemas.d.ts +21 -0
  303. package/dist/esm/lib/schemas.d.ts.map +1 -0
  304. package/dist/esm/lib/schemas.js +54 -0
  305. package/dist/esm/lib/schemas.js.map +1 -0
  306. package/dist/esm/lib/sdks.d.ts +63 -0
  307. package/dist/esm/lib/sdks.d.ts.map +1 -0
  308. package/dist/esm/lib/sdks.js +266 -0
  309. package/dist/esm/lib/sdks.js.map +1 -0
  310. package/dist/esm/lib/security.d.ts +83 -0
  311. package/dist/esm/lib/security.d.ts.map +1 -0
  312. package/dist/esm/lib/security.js +148 -0
  313. package/dist/esm/lib/security.js.map +1 -0
  314. package/dist/esm/lib/url.d.ts +5 -0
  315. package/dist/esm/lib/url.d.ts.map +1 -0
  316. package/dist/esm/lib/url.js +19 -0
  317. package/dist/esm/lib/url.js.map +1 -0
  318. package/dist/esm/models/errors/documentation.d.ts +22 -0
  319. package/dist/esm/models/errors/documentation.d.ts.map +1 -0
  320. package/dist/esm/models/errors/documentation.js +23 -0
  321. package/dist/esm/models/errors/documentation.js.map +1 -0
  322. package/dist/esm/models/errors/error-response-links.d.ts +21 -0
  323. package/dist/esm/models/errors/error-response-links.d.ts.map +1 -0
  324. package/dist/esm/models/errors/error-response-links.js +21 -0
  325. package/dist/esm/models/errors/error-response-links.js.map +1 -0
  326. package/dist/esm/models/errors/error-response.d.ts +56 -0
  327. package/dist/esm/models/errors/error-response.d.ts.map +1 -0
  328. package/dist/esm/models/errors/error-response.js +61 -0
  329. package/dist/esm/models/errors/error-response.js.map +1 -0
  330. package/dist/esm/models/errors/http-client-errors.d.ts +44 -0
  331. package/dist/esm/models/errors/http-client-errors.d.ts.map +1 -0
  332. package/dist/esm/models/errors/http-client-errors.js +66 -0
  333. package/dist/esm/models/errors/http-client-errors.js.map +1 -0
  334. package/dist/esm/models/errors/index.d.ts +9 -0
  335. package/dist/esm/models/errors/index.d.ts.map +1 -0
  336. package/dist/esm/models/errors/index.js +9 -0
  337. package/dist/esm/models/errors/index.js.map +1 -0
  338. package/dist/esm/models/errors/ominity-default-error.d.ts +10 -0
  339. package/dist/esm/models/errors/ominity-default-error.d.ts.map +1 -0
  340. package/dist/esm/models/errors/ominity-default-error.js +27 -0
  341. package/dist/esm/models/errors/ominity-default-error.js.map +1 -0
  342. package/dist/esm/models/errors/ominity-error.d.ts +19 -0
  343. package/dist/esm/models/errors/ominity-error.d.ts.map +1 -0
  344. package/dist/esm/models/errors/ominity-error.js +13 -0
  345. package/dist/esm/models/errors/ominity-error.js.map +1 -0
  346. package/dist/esm/models/errors/response-validation-error.d.ts +26 -0
  347. package/dist/esm/models/errors/response-validation-error.d.ts.map +1 -0
  348. package/dist/esm/models/errors/response-validation-error.js +26 -0
  349. package/dist/esm/models/errors/response-validation-error.js.map +1 -0
  350. package/dist/esm/models/errors/sdk-validation-error.d.ts +21 -0
  351. package/dist/esm/models/errors/sdk-validation-error.d.ts.map +1 -0
  352. package/dist/esm/models/errors/sdk-validation-error.js +41 -0
  353. package/dist/esm/models/errors/sdk-validation-error.js.map +1 -0
  354. package/dist/esm/models/index.d.ts +2 -0
  355. package/dist/esm/models/index.d.ts.map +1 -0
  356. package/dist/esm/models/index.js +2 -0
  357. package/dist/esm/models/index.js.map +1 -0
  358. package/dist/esm/models/operations/index.d.ts +2 -0
  359. package/dist/esm/models/operations/index.d.ts.map +1 -0
  360. package/dist/esm/models/operations/index.js +2 -0
  361. package/dist/esm/models/operations/index.js.map +1 -0
  362. package/dist/esm/models/security.d.ts +19 -0
  363. package/dist/esm/models/security.d.ts.map +1 -0
  364. package/dist/esm/models/security.js +20 -0
  365. package/dist/esm/models/security.js.map +1 -0
  366. package/dist/esm/package.json +3 -0
  367. package/dist/esm/sdk/cms/index.d.ts +4 -0
  368. package/dist/esm/sdk/cms/index.d.ts.map +1 -0
  369. package/dist/esm/sdk/cms/index.js +7 -0
  370. package/dist/esm/sdk/cms/index.js.map +1 -0
  371. package/dist/esm/sdk/commerce/index.d.ts +7 -0
  372. package/dist/esm/sdk/commerce/index.d.ts.map +1 -0
  373. package/dist/esm/sdk/commerce/index.js +11 -0
  374. package/dist/esm/sdk/commerce/index.js.map +1 -0
  375. package/dist/esm/sdk/commerce/products.d.ts +4 -0
  376. package/dist/esm/sdk/commerce/products.d.ts.map +1 -0
  377. package/dist/esm/sdk/commerce/products.js +7 -0
  378. package/dist/esm/sdk/commerce/products.js.map +1 -0
  379. package/dist/esm/sdk/http.d.ts +19 -0
  380. package/dist/esm/sdk/http.d.ts.map +1 -0
  381. package/dist/esm/sdk/http.js +139 -0
  382. package/dist/esm/sdk/http.js.map +1 -0
  383. package/dist/esm/sdk/index.d.ts +2 -0
  384. package/dist/esm/sdk/index.d.ts.map +1 -0
  385. package/dist/esm/sdk/index.js +2 -0
  386. package/dist/esm/sdk/index.js.map +1 -0
  387. package/dist/esm/sdk/sdk.d.ts +16 -0
  388. package/dist/esm/sdk/sdk.d.ts.map +1 -0
  389. package/dist/esm/sdk/sdk.js +20 -0
  390. package/dist/esm/sdk/sdk.js.map +1 -0
  391. package/dist/esm/sdk/settings/index.d.ts +4 -0
  392. package/dist/esm/sdk/settings/index.d.ts.map +1 -0
  393. package/dist/esm/sdk/settings/index.js +7 -0
  394. package/dist/esm/sdk/settings/index.js.map +1 -0
  395. package/dist/esm/types/async.d.ts +23 -0
  396. package/dist/esm/types/async.d.ts.map +1 -0
  397. package/dist/esm/types/async.js +37 -0
  398. package/dist/esm/types/async.js.map +1 -0
  399. package/dist/esm/types/blobs.d.ts +4 -0
  400. package/dist/esm/types/blobs.d.ts.map +1 -0
  401. package/dist/esm/types/blobs.js +22 -0
  402. package/dist/esm/types/blobs.js.map +1 -0
  403. package/dist/esm/types/const-date-time.d.ts +3 -0
  404. package/dist/esm/types/const-date-time.d.ts.map +1 -0
  405. package/dist/esm/types/const-date-time.js +7 -0
  406. package/dist/esm/types/const-date-time.js.map +1 -0
  407. package/dist/esm/types/default-to-zero-value.d.ts +12 -0
  408. package/dist/esm/types/default-to-zero-value.d.ts.map +1 -0
  409. package/dist/esm/types/default-to-zero-value.js +28 -0
  410. package/dist/esm/types/default-to-zero-value.js.map +1 -0
  411. package/dist/esm/types/enums.d.ts +9 -0
  412. package/dist/esm/types/enums.d.ts.map +1 -0
  413. package/dist/esm/types/enums.js +24 -0
  414. package/dist/esm/types/enums.js.map +1 -0
  415. package/dist/esm/types/fp.d.ts +31 -0
  416. package/dist/esm/types/fp.d.ts.map +1 -0
  417. package/dist/esm/types/fp.js +28 -0
  418. package/dist/esm/types/fp.js.map +1 -0
  419. package/dist/esm/types/index.d.ts +10 -0
  420. package/dist/esm/types/index.d.ts.map +1 -0
  421. package/dist/esm/types/index.js +7 -0
  422. package/dist/esm/types/index.js.map +1 -0
  423. package/dist/esm/types/operations.d.ts +27 -0
  424. package/dist/esm/types/operations.d.ts.map +1 -0
  425. package/dist/esm/types/operations.js +74 -0
  426. package/dist/esm/types/operations.js.map +1 -0
  427. package/dist/esm/types/primitives.d.ts +11 -0
  428. package/dist/esm/types/primitives.d.ts.map +1 -0
  429. package/dist/esm/types/primitives.js +129 -0
  430. package/dist/esm/types/primitives.js.map +1 -0
  431. package/dist/esm/types/rfcdate.d.ts +21 -0
  432. package/dist/esm/types/rfcdate.d.ts.map +1 -0
  433. package/dist/esm/types/rfcdate.js +39 -0
  434. package/dist/esm/types/rfcdate.js.map +1 -0
  435. package/dist/esm/types/smart-union.d.ts +7 -0
  436. package/dist/esm/types/smart-union.d.ts.map +1 -0
  437. package/dist/esm/types/smart-union.js +107 -0
  438. package/dist/esm/types/smart-union.js.map +1 -0
  439. package/dist/esm/types/streams.d.ts +2 -0
  440. package/dist/esm/types/streams.d.ts.map +1 -0
  441. package/dist/esm/types/streams.js +12 -0
  442. package/dist/esm/types/streams.js.map +1 -0
  443. package/dist/esm/types/unrecognized.d.ts +16 -0
  444. package/dist/esm/types/unrecognized.d.ts.map +1 -0
  445. package/dist/esm/types/unrecognized.js +28 -0
  446. package/dist/esm/types/unrecognized.js.map +1 -0
  447. package/jsr.json +27 -0
  448. package/package.json +122 -0
  449. package/src/core.ts +10 -0
  450. package/src/hooks/hooks.ts +128 -0
  451. package/src/hooks/index.ts +2 -0
  452. package/src/hooks/ominity-hooks.ts +117 -0
  453. package/src/hooks/registration.ts +15 -0
  454. package/src/hooks/types.ts +103 -0
  455. package/src/index.ts +6 -0
  456. package/src/lib/base64.ts +36 -0
  457. package/src/lib/config.ts +84 -0
  458. package/src/lib/dlv.ts +49 -0
  459. package/src/lib/encodings.ts +497 -0
  460. package/src/lib/env.ts +56 -0
  461. package/src/lib/files.ts +79 -0
  462. package/src/lib/http.ts +320 -0
  463. package/src/lib/is-plain-object.ts +40 -0
  464. package/src/lib/logger.ts +6 -0
  465. package/src/lib/matchers.ts +349 -0
  466. package/src/lib/primitives.ts +147 -0
  467. package/src/lib/retries.ts +215 -0
  468. package/src/lib/schemas.ts +91 -0
  469. package/src/lib/sdks.ts +403 -0
  470. package/src/lib/security.ts +276 -0
  471. package/src/lib/url.ts +30 -0
  472. package/src/models/errors/documentation.ts +50 -0
  473. package/src/models/errors/error-response-links.ts +58 -0
  474. package/src/models/errors/error-response.ts +121 -0
  475. package/src/models/errors/http-client-errors.ts +58 -0
  476. package/src/models/errors/index.ts +8 -0
  477. package/src/models/errors/ominity-default-error.ts +36 -0
  478. package/src/models/errors/ominity-error.ts +31 -0
  479. package/src/models/errors/response-validation-error.ts +46 -0
  480. package/src/models/errors/sdk-validation-error.ts +50 -0
  481. package/src/models/index.ts +1 -0
  482. package/src/models/operations/index.ts +2 -0
  483. package/src/models/security.ts +46 -0
  484. package/src/sdk/cms/index.ts +7 -0
  485. package/src/sdk/commerce/index.ts +13 -0
  486. package/src/sdk/commerce/products.ts +7 -0
  487. package/src/sdk/http.ts +204 -0
  488. package/src/sdk/index.ts +2 -0
  489. package/src/sdk/sdk.ts +28 -0
  490. package/src/sdk/settings/index.ts +7 -0
  491. package/src/types/async.ts +65 -0
  492. package/src/types/blobs.ts +30 -0
  493. package/src/types/const-date-time.ts +12 -0
  494. package/src/types/default-to-zero-value.ts +30 -0
  495. package/src/types/enums.ts +42 -0
  496. package/src/types/fp.ts +47 -0
  497. package/src/types/index.ts +10 -0
  498. package/src/types/operations.ts +102 -0
  499. package/src/types/primitives.ts +165 -0
  500. package/src/types/rfcdate.ts +51 -0
  501. package/src/types/smart-union.ts +142 -0
  502. package/src/types/streams.ts +18 -0
  503. package/src/types/unrecognized.ts +32 -0
  504. package/tsconfig.json +40 -0
@@ -0,0 +1,320 @@
1
+
2
+ export type Fetcher = (
3
+ input: RequestInfo | URL,
4
+ init?: RequestInit,
5
+ ) => Promise<Response>;
6
+
7
+ export type Awaitable<T> = T | Promise<T>;
8
+
9
+ const DEFAULT_FETCHER: Fetcher = (input, init) => {
10
+ // If input is a Request and init is undefined, Bun will discard the method,
11
+ // headers, body and other options that were set on the request object.
12
+ // Node.js and browers would ignore an undefined init value. This check is
13
+ // therefore needed for interop with Bun.
14
+ if (init == null) {
15
+ return fetch(input);
16
+ } else {
17
+ return fetch(input, init);
18
+ }
19
+ };
20
+
21
+ export type RequestInput = {
22
+ /**
23
+ * The URL the request will use.
24
+ */
25
+ url: URL;
26
+ /**
27
+ * Options used to create a [`Request`](https://developer.mozilla.org/en-US/docs/Web/API/Request/Request).
28
+ */
29
+ options?: RequestInit | undefined;
30
+ };
31
+
32
+ export interface HTTPClientOptions {
33
+ fetcher?: Fetcher;
34
+ }
35
+
36
+ export type BeforeRequestHook = (req: Request) => Awaitable<Request | void>;
37
+ export type RequestErrorHook = (err: unknown, req: Request) => Awaitable<void>;
38
+ export type ResponseHook = (res: Response, req: Request) => Awaitable<void>;
39
+
40
+ export class HTTPClient {
41
+ private fetcher: Fetcher;
42
+ private requestHooks: BeforeRequestHook[] = [];
43
+ private requestErrorHooks: RequestErrorHook[] = [];
44
+ private responseHooks: ResponseHook[] = [];
45
+
46
+ constructor(private options: HTTPClientOptions = {}) {
47
+ this.fetcher = options.fetcher || DEFAULT_FETCHER;
48
+ }
49
+
50
+ async request(request: Request): Promise<Response> {
51
+ let req = request;
52
+ for (const hook of this.requestHooks) {
53
+ const nextRequest = await hook(req);
54
+ if (nextRequest) {
55
+ req = nextRequest;
56
+ }
57
+ }
58
+
59
+ try {
60
+ const res = await this.fetcher(req);
61
+
62
+ for (const hook of this.responseHooks) {
63
+ await hook(res, req);
64
+ }
65
+
66
+ return res;
67
+ } catch (err) {
68
+ for (const hook of this.requestErrorHooks) {
69
+ await hook(err, req);
70
+ }
71
+
72
+ throw err;
73
+ }
74
+ }
75
+
76
+ /**
77
+ * Registers a hook that is called before a request is made. The hook function
78
+ * can mutate the request or return a new request. This may be useful to add
79
+ * additional information to request such as request IDs and tracing headers.
80
+ */
81
+ addHook(hook: "beforeRequest", fn: BeforeRequestHook): this;
82
+ /**
83
+ * Registers a hook that is called when a request cannot be made due to a
84
+ * network error.
85
+ */
86
+ addHook(hook: "requestError", fn: RequestErrorHook): this;
87
+ /**
88
+ * Registers a hook that is called when a response has been received from the
89
+ * server.
90
+ */
91
+ addHook(hook: "response", fn: ResponseHook): this;
92
+ addHook(
93
+ ...args:
94
+ | [hook: "beforeRequest", fn: BeforeRequestHook]
95
+ | [hook: "requestError", fn: RequestErrorHook]
96
+ | [hook: "response", fn: ResponseHook]
97
+ ) {
98
+ if (args[0] === "beforeRequest") {
99
+ this.requestHooks.push(args[1]);
100
+ } else if (args[0] === "requestError") {
101
+ this.requestErrorHooks.push(args[1]);
102
+ } else if (args[0] === "response") {
103
+ this.responseHooks.push(args[1]);
104
+ } else {
105
+ throw new Error(`Invalid hook type: ${args[0]}`);
106
+ }
107
+ return this;
108
+ }
109
+
110
+ /** Removes a hook that was previously registered with `addHook`. */
111
+ removeHook(hook: "beforeRequest", fn: BeforeRequestHook): this;
112
+ /** Removes a hook that was previously registered with `addHook`. */
113
+ removeHook(hook: "requestError", fn: RequestErrorHook): this;
114
+ /** Removes a hook that was previously registered with `addHook`. */
115
+ removeHook(hook: "response", fn: ResponseHook): this;
116
+ removeHook(
117
+ ...args:
118
+ | [hook: "beforeRequest", fn: BeforeRequestHook]
119
+ | [hook: "requestError", fn: RequestErrorHook]
120
+ | [hook: "response", fn: ResponseHook]
121
+ ): this {
122
+ let target: unknown[];
123
+ if (args[0] === "beforeRequest") {
124
+ target = this.requestHooks;
125
+ } else if (args[0] === "requestError") {
126
+ target = this.requestErrorHooks;
127
+ } else if (args[0] === "response") {
128
+ target = this.responseHooks;
129
+ } else {
130
+ throw new Error(`Invalid hook type: ${args[0]}`);
131
+ }
132
+
133
+ const index = target.findIndex((v) => v === args[1]);
134
+ if (index >= 0) {
135
+ target.splice(index, 1);
136
+ }
137
+
138
+ return this;
139
+ }
140
+
141
+ clone(): HTTPClient {
142
+ const child = new HTTPClient(this.options);
143
+ child.requestHooks = this.requestHooks.slice();
144
+ child.requestErrorHooks = this.requestErrorHooks.slice();
145
+ child.responseHooks = this.responseHooks.slice();
146
+
147
+ return child;
148
+ }
149
+ }
150
+
151
+ export type StatusCodePredicate = number | string | (number | string)[];
152
+
153
+ // A semicolon surrounded by optional whitespace characters is used to separate
154
+ // segments in a media type string.
155
+ const mediaParamSeparator = /\s*;\s*/g;
156
+
157
+ export function matchContentType(response: Response, pattern: string): boolean {
158
+ // `*` is a special case which means anything is acceptable.
159
+ if (pattern === "*") {
160
+ return true;
161
+ }
162
+
163
+ let contentType =
164
+ response.headers.get("content-type")?.trim() || "application/octet-stream";
165
+ contentType = contentType.toLowerCase();
166
+
167
+ const wantParts = pattern.toLowerCase().trim().split(mediaParamSeparator);
168
+ const [wantType = "", ...wantParams] = wantParts;
169
+
170
+ if (wantType.split("/").length !== 2) {
171
+ return false;
172
+ }
173
+
174
+ const gotParts = contentType.split(mediaParamSeparator);
175
+ const [gotType = "", ...gotParams] = gotParts;
176
+
177
+ const [type = "", subtype = ""] = gotType.split("/");
178
+ if (!type || !subtype) {
179
+ return false;
180
+ }
181
+
182
+ if (
183
+ wantType !== "*/*" &&
184
+ gotType !== wantType &&
185
+ `${type}/*` !== wantType &&
186
+ `*/${subtype}` !== wantType
187
+ ) {
188
+ return false;
189
+ }
190
+
191
+ if (gotParams.length < wantParams.length) {
192
+ return false;
193
+ }
194
+
195
+ const params = new Set(gotParams);
196
+ for (const wantParam of wantParams) {
197
+ if (!params.has(wantParam)) {
198
+ return false;
199
+ }
200
+ }
201
+
202
+ return true;
203
+ }
204
+
205
+ const codeRangeRE = new RegExp("^[0-9]xx$", "i");
206
+
207
+ export function matchStatusCode(
208
+ response: Response,
209
+ codes: StatusCodePredicate,
210
+ ): boolean {
211
+ const actual = `${response.status}`;
212
+ const expectedCodes = Array.isArray(codes) ? codes : [codes];
213
+ if (!expectedCodes.length) {
214
+ return false;
215
+ }
216
+
217
+ return expectedCodes.some((ec) => {
218
+ const code = `${ec}`;
219
+
220
+ if (code === "default") {
221
+ return true;
222
+ }
223
+
224
+ if (!codeRangeRE.test(`${code}`)) {
225
+ return code === actual;
226
+ }
227
+
228
+ const expectFamily = code.charAt(0);
229
+ if (!expectFamily) {
230
+ throw new Error("Invalid status code range");
231
+ }
232
+
233
+ const actualFamily = actual.charAt(0);
234
+ if (!actualFamily) {
235
+ throw new Error(`Invalid response status code: ${actual}`);
236
+ }
237
+
238
+ return actualFamily === expectFamily;
239
+ });
240
+ }
241
+
242
+ export function matchResponse(
243
+ response: Response,
244
+ code: StatusCodePredicate,
245
+ contentTypePattern: string,
246
+ ): boolean {
247
+ return (
248
+ matchStatusCode(response, code) &&
249
+ matchContentType(response, contentTypePattern)
250
+ );
251
+ }
252
+
253
+ /**
254
+ * Uses various heurisitics to determine if an error is a connection error.
255
+ */
256
+ export function isConnectionError(err: unknown): boolean {
257
+ if (typeof err !== "object" || err == null) {
258
+ return false;
259
+ }
260
+
261
+ // Covers fetch in Deno as well
262
+ const isBrowserErr =
263
+ err instanceof TypeError &&
264
+ err.message.toLowerCase().startsWith("failed to fetch");
265
+
266
+ const isNodeErr =
267
+ err instanceof TypeError &&
268
+ err.message.toLowerCase().startsWith("fetch failed");
269
+
270
+ const isBunErr = "name" in err && err.name === "ConnectionError";
271
+
272
+ const isGenericErr =
273
+ "code" in err &&
274
+ typeof err.code === "string" &&
275
+ err.code.toLowerCase() === "econnreset";
276
+
277
+ return isBrowserErr || isNodeErr || isGenericErr || isBunErr;
278
+ }
279
+
280
+ /**
281
+ * Uses various heurisitics to determine if an error is a timeout error.
282
+ */
283
+ export function isTimeoutError(err: unknown): boolean {
284
+ if (typeof err !== "object" || err == null) {
285
+ return false;
286
+ }
287
+
288
+ // Fetch in browser, Node.js, Bun, Deno
289
+ const isNative = "name" in err && err.name === "TimeoutError";
290
+ const isLegacyNative = "code" in err && err.code === 23;
291
+
292
+ // Node.js HTTP client and Axios
293
+ const isGenericErr =
294
+ "code" in err &&
295
+ typeof err.code === "string" &&
296
+ err.code.toLowerCase() === "econnaborted";
297
+
298
+ return isNative || isLegacyNative || isGenericErr;
299
+ }
300
+
301
+ /**
302
+ * Uses various heurisitics to determine if an error is a abort error.
303
+ */
304
+ export function isAbortError(err: unknown): boolean {
305
+ if (typeof err !== "object" || err == null) {
306
+ return false;
307
+ }
308
+
309
+ // Fetch in browser, Node.js, Bun, Deno
310
+ const isNative = "name" in err && err.name === "AbortError";
311
+ const isLegacyNative = "code" in err && err.code === 20;
312
+
313
+ // Node.js HTTP client and Axios
314
+ const isGenericErr =
315
+ "code" in err &&
316
+ typeof err.code === "string" &&
317
+ err.code.toLowerCase() === "econnaborted";
318
+
319
+ return isNative || isLegacyNative || isGenericErr;
320
+ }
@@ -0,0 +1,40 @@
1
+
2
+ /*
3
+ MIT License
4
+
5
+ Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (https://sindresorhus.com)
6
+
7
+ Permission is hereby granted, free of charge, to any person obtaining a copy of
8
+ this software and associated documentation files (the "Software"), to deal in
9
+ the Software without restriction, including without limitation the rights to
10
+ use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
11
+ the Software, and to permit persons to whom the Software is furnished to do so,
12
+ subject to the following conditions:
13
+
14
+ The above copyright notice and this permission notice shall be included in all
15
+ copies or substantial portions of the Software.
16
+
17
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
18
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
19
+ FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
20
+ COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
21
+ IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
22
+ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
23
+ */
24
+
25
+ // Taken from https://github.com/sindresorhus/is-plain-obj/blob/97f38e8836f86a642cce98fc6ab3058bc36df181/index.js
26
+
27
+ export function isPlainObject(value: unknown): value is object {
28
+ if (typeof value !== "object" || value === null) {
29
+ return false;
30
+ }
31
+
32
+ const prototype = Object.getPrototypeOf(value);
33
+ return (
34
+ (prototype === null ||
35
+ prototype === Object.prototype ||
36
+ Object.getPrototypeOf(prototype) === null) &&
37
+ !(Symbol.toStringTag in value) &&
38
+ !(Symbol.iterator in value)
39
+ );
40
+ }
@@ -0,0 +1,6 @@
1
+
2
+ export interface Logger {
3
+ group(label?: string): void;
4
+ groupEnd(): void;
5
+ log(message: any, ...args: any[]): void;
6
+ }
@@ -0,0 +1,349 @@
1
+
2
+ import { OminityDefaultError } from "../models/errors/ominity-default-error.js";
3
+ import { ResponseValidationError } from "../models/errors/response-validation-error.js";
4
+ import { ERR, OK, Result } from "../types/fp.js";
5
+ import { matchResponse, matchStatusCode, StatusCodePredicate } from "./http.js";
6
+ import { isPlainObject } from "./is-plain-object.js";
7
+
8
+ export type Encoding =
9
+ | "jsonl"
10
+ | "json"
11
+ | "text"
12
+ | "bytes"
13
+ | "stream"
14
+ | "sse"
15
+ | "nil"
16
+ | "fail";
17
+
18
+ const DEFAULT_CONTENT_TYPES: Record<Encoding, string> = {
19
+ jsonl: "application/jsonl",
20
+ json: "application/json",
21
+ text: "text/plain",
22
+ bytes: "application/octet-stream",
23
+ stream: "application/octet-stream",
24
+ sse: "text/event-stream",
25
+ nil: "*",
26
+ fail: "*",
27
+ };
28
+
29
+ type Schema<T> = { parse(raw: unknown): T };
30
+
31
+ type MatchOptions = {
32
+ ctype?: string;
33
+ hdrs?: boolean;
34
+ key?: string;
35
+ sseSentinel?: string;
36
+ };
37
+
38
+ export type ValueMatcher<V> = MatchOptions & {
39
+ enc: Encoding;
40
+ codes: StatusCodePredicate;
41
+ schema: Schema<V>;
42
+ };
43
+
44
+ export type ErrorMatcher<E> = MatchOptions & {
45
+ enc: Encoding;
46
+ codes: StatusCodePredicate;
47
+ schema: Schema<E>;
48
+ err: true;
49
+ };
50
+
51
+ export type FailMatcher = {
52
+ enc: "fail";
53
+ codes: StatusCodePredicate;
54
+ };
55
+
56
+ export type Matcher<T, E> = ValueMatcher<T> | ErrorMatcher<E> | FailMatcher;
57
+
58
+ export function jsonErr<E>(
59
+ codes: StatusCodePredicate,
60
+ schema: Schema<E>,
61
+ options?: MatchOptions,
62
+ ): ErrorMatcher<E> {
63
+ return { ...options, err: true, enc: "json", codes, schema };
64
+ }
65
+ export function json<T>(
66
+ codes: StatusCodePredicate,
67
+ schema: Schema<T>,
68
+ options?: MatchOptions,
69
+ ): ValueMatcher<T> {
70
+ return { ...options, enc: "json", codes, schema };
71
+ }
72
+
73
+ export function jsonl<T>(
74
+ codes: StatusCodePredicate,
75
+ schema: Schema<T>,
76
+ options?: MatchOptions,
77
+ ): ValueMatcher<T> {
78
+ return { ...options, enc: "jsonl", codes, schema };
79
+ }
80
+
81
+ export function jsonlErr<E>(
82
+ codes: StatusCodePredicate,
83
+ schema: Schema<E>,
84
+ options?: MatchOptions,
85
+ ): ErrorMatcher<E> {
86
+ return { ...options, err: true, enc: "jsonl", codes, schema };
87
+ }
88
+ export function textErr<E>(
89
+ codes: StatusCodePredicate,
90
+ schema: Schema<E>,
91
+ options?: MatchOptions,
92
+ ): ErrorMatcher<E> {
93
+ return { ...options, err: true, enc: "text", codes, schema };
94
+ }
95
+ export function text<T>(
96
+ codes: StatusCodePredicate,
97
+ schema: Schema<T>,
98
+ options?: MatchOptions,
99
+ ): ValueMatcher<T> {
100
+ return { ...options, enc: "text", codes, schema };
101
+ }
102
+
103
+ export function bytesErr<E>(
104
+ codes: StatusCodePredicate,
105
+ schema: Schema<E>,
106
+ options?: MatchOptions,
107
+ ): ErrorMatcher<E> {
108
+ return { ...options, err: true, enc: "bytes", codes, schema };
109
+ }
110
+ export function bytes<T>(
111
+ codes: StatusCodePredicate,
112
+ schema: Schema<T>,
113
+ options?: MatchOptions,
114
+ ): ValueMatcher<T> {
115
+ return { ...options, enc: "bytes", codes, schema };
116
+ }
117
+
118
+ export function streamErr<E>(
119
+ codes: StatusCodePredicate,
120
+ schema: Schema<E>,
121
+ options?: MatchOptions,
122
+ ): ErrorMatcher<E> {
123
+ return { ...options, err: true, enc: "stream", codes, schema };
124
+ }
125
+ export function stream<T>(
126
+ codes: StatusCodePredicate,
127
+ schema: Schema<T>,
128
+ options?: MatchOptions,
129
+ ): ValueMatcher<T> {
130
+ return { ...options, enc: "stream", codes, schema };
131
+ }
132
+
133
+ export function sseErr<E>(
134
+ codes: StatusCodePredicate,
135
+ schema: Schema<E>,
136
+ options?: MatchOptions,
137
+ ): ErrorMatcher<E> {
138
+ return { ...options, err: true, enc: "sse", codes, schema };
139
+ }
140
+ export function sse<T>(
141
+ codes: StatusCodePredicate,
142
+ schema: Schema<T>,
143
+ options?: MatchOptions,
144
+ ): ValueMatcher<T> {
145
+ return { ...options, enc: "sse", codes, schema };
146
+ }
147
+
148
+ export function nilErr<E>(
149
+ codes: StatusCodePredicate,
150
+ schema: Schema<E>,
151
+ options?: MatchOptions,
152
+ ): ErrorMatcher<E> {
153
+ return { ...options, err: true, enc: "nil", codes, schema };
154
+ }
155
+ export function nil<T>(
156
+ codes: StatusCodePredicate,
157
+ schema: Schema<T>,
158
+ options?: MatchOptions,
159
+ ): ValueMatcher<T> {
160
+ return { ...options, enc: "nil", codes, schema };
161
+ }
162
+
163
+ export function fail(codes: StatusCodePredicate): FailMatcher {
164
+ return { enc: "fail", codes };
165
+ }
166
+
167
+ export type MatchedValue<Matchers> = Matchers extends Matcher<infer T, any>[]
168
+ ? T
169
+ : never;
170
+ export type MatchedError<Matchers> = Matchers extends Matcher<any, infer E>[]
171
+ ? E
172
+ : never;
173
+ export type MatchFunc<T, E> = (
174
+ response: Response,
175
+ request: Request,
176
+ options?: { resultKey?: string; extraFields?: Record<string, unknown> },
177
+ ) => Promise<[result: Result<T, E>, raw: unknown]>;
178
+
179
+ export function match<T, E>(
180
+ ...matchers: Array<Matcher<T, E>>
181
+ ): MatchFunc<T, E | OminityDefaultError | ResponseValidationError> {
182
+ return async function matchFunc(
183
+ response: Response,
184
+ request: Request,
185
+ options?: { resultKey?: string; extraFields?: Record<string, unknown> },
186
+ ): Promise<
187
+ [
188
+ result: Result<T, E | OminityDefaultError | ResponseValidationError>,
189
+ raw: unknown,
190
+ ]
191
+ > {
192
+ let raw: unknown;
193
+ let matcher: Matcher<T, E> | undefined;
194
+ for (const match of matchers) {
195
+ const { codes } = match;
196
+ const ctpattern = "ctype" in match
197
+ ? match.ctype
198
+ : DEFAULT_CONTENT_TYPES[match.enc];
199
+ if (ctpattern && matchResponse(response, codes, ctpattern)) {
200
+ matcher = match;
201
+ break;
202
+ } else if (!ctpattern && matchStatusCode(response, codes)) {
203
+ matcher = match;
204
+ break;
205
+ }
206
+ }
207
+
208
+ if (!matcher) {
209
+ return [{
210
+ ok: false,
211
+ error: new OminityDefaultError("Unexpected Status or Content-Type", {
212
+ response,
213
+ request,
214
+ body: await response.text().catch(() => ""),
215
+ }),
216
+ }, raw];
217
+ }
218
+
219
+ const encoding = matcher.enc;
220
+ let body = "";
221
+ switch (encoding) {
222
+ case "json":
223
+ body = await response.text();
224
+ raw = JSON.parse(body);
225
+ break;
226
+ case "jsonl":
227
+ raw = response.body;
228
+ break;
229
+ case "bytes":
230
+ raw = new Uint8Array(await response.arrayBuffer());
231
+ break;
232
+ case "stream":
233
+ raw = response.body;
234
+ break;
235
+ case "text":
236
+ body = await response.text();
237
+ raw = body;
238
+ break;
239
+ case "sse":
240
+ raw = response.body;
241
+ break;
242
+ case "nil":
243
+ body = await response.text();
244
+ raw = undefined;
245
+ break;
246
+ case "fail":
247
+ body = await response.text();
248
+ raw = body;
249
+ break;
250
+ default:
251
+ encoding satisfies never;
252
+ throw new Error(`Unsupported response type: ${encoding}`);
253
+ }
254
+
255
+ if (matcher.enc === "fail") {
256
+ return [{
257
+ ok: false,
258
+ error: new OminityDefaultError("API error occurred", {
259
+ request,
260
+ response,
261
+ body,
262
+ }),
263
+ }, raw];
264
+ }
265
+
266
+ const resultKey = matcher.key || options?.resultKey;
267
+ let data: unknown;
268
+
269
+ if ("err" in matcher) {
270
+ data = {
271
+ ...options?.extraFields,
272
+ ...(matcher.hdrs ? { Headers: unpackHeaders(response.headers) } : null),
273
+ ...(isPlainObject(raw) ? raw : null),
274
+ request$: request,
275
+ response$: response,
276
+ body$: body,
277
+ };
278
+ } else if (resultKey) {
279
+ data = {
280
+ ...options?.extraFields,
281
+ ...(matcher.hdrs ? { Headers: unpackHeaders(response.headers) } : null),
282
+ [resultKey]: raw,
283
+ };
284
+ } else if (matcher.hdrs) {
285
+ data = {
286
+ ...options?.extraFields,
287
+ ...(matcher.hdrs ? { Headers: unpackHeaders(response.headers) } : null),
288
+ ...(isPlainObject(raw) ? raw : null),
289
+ };
290
+ } else {
291
+ data = raw;
292
+ }
293
+
294
+ if ("err" in matcher) {
295
+ const result = safeParseResponse(
296
+ data,
297
+ (v: unknown) => matcher.schema.parse(v),
298
+ "Response validation failed",
299
+ { request, response, body },
300
+ );
301
+ return [result.ok ? { ok: false, error: result.value } : result, raw];
302
+ } else {
303
+ return [
304
+ safeParseResponse(
305
+ data,
306
+ (v: unknown) => matcher.schema.parse(v),
307
+ "Response validation failed",
308
+ { request, response, body },
309
+ ),
310
+ raw,
311
+ ];
312
+ }
313
+ };
314
+ }
315
+
316
+ const headerValRE = /, */;
317
+ /**
318
+ * Iterates over a Headers object and returns an object with all the header
319
+ * entries. Values are represented as an array to account for repeated headers.
320
+ */
321
+ export function unpackHeaders(headers: Headers): Record<string, string[]> {
322
+ const out: Record<string, string[]> = {};
323
+
324
+ for (const [k, v] of headers.entries()) {
325
+ out[k] = v.split(headerValRE);
326
+ }
327
+
328
+ return out;
329
+ }
330
+
331
+ function safeParseResponse<Inp, Out>(
332
+ rawValue: Inp,
333
+ fn: (value: Inp) => Out,
334
+ errorMessage: string,
335
+ httpMeta: { response: Response; request: Request; body: string },
336
+ ): Result<Out, ResponseValidationError> {
337
+ try {
338
+ return OK(fn(rawValue));
339
+ } catch (err) {
340
+ return ERR(
341
+ new ResponseValidationError(errorMessage, {
342
+ cause: err,
343
+ rawValue,
344
+ rawMessage: errorMessage,
345
+ ...httpMeta,
346
+ }),
347
+ );
348
+ }
349
+ }