@postpeer/node 0.6.0 → 0.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (467) hide show
  1. package/CHANGELOG.md +5 -101
  2. package/README.md +91 -317
  3. package/dist/index.cjs +1709 -0
  4. package/dist/index.cjs.map +1 -0
  5. package/dist/index.d.cts +3484 -0
  6. package/dist/index.d.ts +3484 -0
  7. package/dist/index.js +1690 -0
  8. package/dist/index.js.map +1 -0
  9. package/package.json +59 -131
  10. package/api-promise.d.mts +0 -2
  11. package/api-promise.d.mts.map +0 -1
  12. package/api-promise.d.ts +0 -2
  13. package/api-promise.d.ts.map +0 -1
  14. package/api-promise.js +0 -6
  15. package/api-promise.js.map +0 -1
  16. package/api-promise.mjs +0 -2
  17. package/api-promise.mjs.map +0 -1
  18. package/client.d.mts +0 -190
  19. package/client.d.mts.map +0 -1
  20. package/client.d.ts +0 -190
  21. package/client.d.ts.map +0 -1
  22. package/client.js +0 -485
  23. package/client.js.map +0 -1
  24. package/client.mjs +0 -481
  25. package/client.mjs.map +0 -1
  26. package/core/api-promise.d.mts +0 -46
  27. package/core/api-promise.d.mts.map +0 -1
  28. package/core/api-promise.d.ts +0 -46
  29. package/core/api-promise.d.ts.map +0 -1
  30. package/core/api-promise.js +0 -74
  31. package/core/api-promise.js.map +0 -1
  32. package/core/api-promise.mjs +0 -70
  33. package/core/api-promise.mjs.map +0 -1
  34. package/core/error.d.mts +0 -46
  35. package/core/error.d.mts.map +0 -1
  36. package/core/error.d.ts +0 -46
  37. package/core/error.d.ts.map +0 -1
  38. package/core/error.js +0 -113
  39. package/core/error.js.map +0 -1
  40. package/core/error.mjs +0 -97
  41. package/core/error.mjs.map +0 -1
  42. package/core/resource.d.mts +0 -6
  43. package/core/resource.d.mts.map +0 -1
  44. package/core/resource.d.ts +0 -6
  45. package/core/resource.d.ts.map +0 -1
  46. package/core/resource.js +0 -11
  47. package/core/resource.js.map +0 -1
  48. package/core/resource.mjs +0 -7
  49. package/core/resource.mjs.map +0 -1
  50. package/core/uploads.d.mts +0 -3
  51. package/core/uploads.d.mts.map +0 -1
  52. package/core/uploads.d.ts +0 -3
  53. package/core/uploads.d.ts.map +0 -1
  54. package/core/uploads.js +0 -6
  55. package/core/uploads.js.map +0 -1
  56. package/core/uploads.mjs +0 -2
  57. package/core/uploads.mjs.map +0 -1
  58. package/error.d.mts +0 -2
  59. package/error.d.mts.map +0 -1
  60. package/error.d.ts +0 -2
  61. package/error.d.ts.map +0 -1
  62. package/error.js +0 -6
  63. package/error.js.map +0 -1
  64. package/error.mjs +0 -2
  65. package/error.mjs.map +0 -1
  66. package/index.d.mts +0 -6
  67. package/index.d.mts.map +0 -1
  68. package/index.d.ts +0 -6
  69. package/index.d.ts.map +0 -1
  70. package/index.js +0 -30
  71. package/index.js.map +0 -1
  72. package/index.mjs +0 -7
  73. package/index.mjs.map +0 -1
  74. package/internal/builtin-types.d.mts +0 -73
  75. package/internal/builtin-types.d.mts.map +0 -1
  76. package/internal/builtin-types.d.ts +0 -73
  77. package/internal/builtin-types.d.ts.map +0 -1
  78. package/internal/builtin-types.js +0 -4
  79. package/internal/builtin-types.js.map +0 -1
  80. package/internal/builtin-types.mjs +0 -3
  81. package/internal/builtin-types.mjs.map +0 -1
  82. package/internal/detect-platform.d.mts +0 -15
  83. package/internal/detect-platform.d.mts.map +0 -1
  84. package/internal/detect-platform.d.ts +0 -15
  85. package/internal/detect-platform.d.ts.map +0 -1
  86. package/internal/detect-platform.js +0 -162
  87. package/internal/detect-platform.js.map +0 -1
  88. package/internal/detect-platform.mjs +0 -157
  89. package/internal/detect-platform.mjs.map +0 -1
  90. package/internal/errors.d.mts +0 -3
  91. package/internal/errors.d.mts.map +0 -1
  92. package/internal/errors.d.ts +0 -3
  93. package/internal/errors.d.ts.map +0 -1
  94. package/internal/errors.js +0 -41
  95. package/internal/errors.js.map +0 -1
  96. package/internal/errors.mjs +0 -36
  97. package/internal/errors.mjs.map +0 -1
  98. package/internal/headers.d.mts +0 -20
  99. package/internal/headers.d.mts.map +0 -1
  100. package/internal/headers.d.ts +0 -20
  101. package/internal/headers.d.ts.map +0 -1
  102. package/internal/headers.js +0 -79
  103. package/internal/headers.js.map +0 -1
  104. package/internal/headers.mjs +0 -74
  105. package/internal/headers.mjs.map +0 -1
  106. package/internal/parse.d.mts +0 -12
  107. package/internal/parse.d.mts.map +0 -1
  108. package/internal/parse.d.ts +0 -12
  109. package/internal/parse.d.ts.map +0 -1
  110. package/internal/parse.js +0 -40
  111. package/internal/parse.js.map +0 -1
  112. package/internal/parse.mjs +0 -37
  113. package/internal/parse.mjs.map +0 -1
  114. package/internal/qs/formats.d.mts +0 -7
  115. package/internal/qs/formats.d.mts.map +0 -1
  116. package/internal/qs/formats.d.ts +0 -7
  117. package/internal/qs/formats.d.ts.map +0 -1
  118. package/internal/qs/formats.js +0 -13
  119. package/internal/qs/formats.js.map +0 -1
  120. package/internal/qs/formats.mjs +0 -9
  121. package/internal/qs/formats.mjs.map +0 -1
  122. package/internal/qs/index.d.mts +0 -10
  123. package/internal/qs/index.d.mts.map +0 -1
  124. package/internal/qs/index.d.ts +0 -10
  125. package/internal/qs/index.d.ts.map +0 -1
  126. package/internal/qs/index.js +0 -14
  127. package/internal/qs/index.js.map +0 -1
  128. package/internal/qs/index.mjs +0 -10
  129. package/internal/qs/index.mjs.map +0 -1
  130. package/internal/qs/stringify.d.mts +0 -3
  131. package/internal/qs/stringify.d.mts.map +0 -1
  132. package/internal/qs/stringify.d.ts +0 -3
  133. package/internal/qs/stringify.d.ts.map +0 -1
  134. package/internal/qs/stringify.js +0 -277
  135. package/internal/qs/stringify.js.map +0 -1
  136. package/internal/qs/stringify.mjs +0 -274
  137. package/internal/qs/stringify.mjs.map +0 -1
  138. package/internal/qs/types.d.mts +0 -57
  139. package/internal/qs/types.d.mts.map +0 -1
  140. package/internal/qs/types.d.ts +0 -57
  141. package/internal/qs/types.d.ts.map +0 -1
  142. package/internal/qs/types.js +0 -3
  143. package/internal/qs/types.js.map +0 -1
  144. package/internal/qs/types.mjs +0 -2
  145. package/internal/qs/types.mjs.map +0 -1
  146. package/internal/qs/utils.d.mts +0 -15
  147. package/internal/qs/utils.d.mts.map +0 -1
  148. package/internal/qs/utils.d.ts +0 -15
  149. package/internal/qs/utils.d.ts.map +0 -1
  150. package/internal/qs/utils.js +0 -230
  151. package/internal/qs/utils.js.map +0 -1
  152. package/internal/qs/utils.mjs +0 -217
  153. package/internal/qs/utils.mjs.map +0 -1
  154. package/internal/request-options.d.mts +0 -75
  155. package/internal/request-options.d.mts.map +0 -1
  156. package/internal/request-options.d.ts +0 -75
  157. package/internal/request-options.d.ts.map +0 -1
  158. package/internal/request-options.js +0 -14
  159. package/internal/request-options.js.map +0 -1
  160. package/internal/request-options.mjs +0 -10
  161. package/internal/request-options.mjs.map +0 -1
  162. package/internal/shim-types.d.mts +0 -17
  163. package/internal/shim-types.d.mts.map +0 -1
  164. package/internal/shim-types.d.ts +0 -17
  165. package/internal/shim-types.d.ts.map +0 -1
  166. package/internal/shim-types.js +0 -4
  167. package/internal/shim-types.js.map +0 -1
  168. package/internal/shim-types.mjs +0 -3
  169. package/internal/shim-types.mjs.map +0 -1
  170. package/internal/shims.d.mts +0 -20
  171. package/internal/shims.d.mts.map +0 -1
  172. package/internal/shims.d.ts +0 -20
  173. package/internal/shims.d.ts.map +0 -1
  174. package/internal/shims.js +0 -92
  175. package/internal/shims.js.map +0 -1
  176. package/internal/shims.mjs +0 -85
  177. package/internal/shims.mjs.map +0 -1
  178. package/internal/to-file.d.mts +0 -45
  179. package/internal/to-file.d.mts.map +0 -1
  180. package/internal/to-file.d.ts +0 -45
  181. package/internal/to-file.d.ts.map +0 -1
  182. package/internal/to-file.js +0 -91
  183. package/internal/to-file.js.map +0 -1
  184. package/internal/to-file.mjs +0 -88
  185. package/internal/to-file.mjs.map +0 -1
  186. package/internal/tslib.js +0 -81
  187. package/internal/tslib.mjs +0 -17
  188. package/internal/types.d.mts +0 -69
  189. package/internal/types.d.mts.map +0 -1
  190. package/internal/types.d.ts +0 -69
  191. package/internal/types.d.ts.map +0 -1
  192. package/internal/types.js +0 -4
  193. package/internal/types.js.map +0 -1
  194. package/internal/types.mjs +0 -3
  195. package/internal/types.mjs.map +0 -1
  196. package/internal/uploads.d.mts +0 -42
  197. package/internal/uploads.d.mts.map +0 -1
  198. package/internal/uploads.d.ts +0 -42
  199. package/internal/uploads.d.ts.map +0 -1
  200. package/internal/uploads.js +0 -141
  201. package/internal/uploads.js.map +0 -1
  202. package/internal/uploads.mjs +0 -131
  203. package/internal/uploads.mjs.map +0 -1
  204. package/internal/utils/base64.d.mts +0 -3
  205. package/internal/utils/base64.d.mts.map +0 -1
  206. package/internal/utils/base64.d.ts +0 -3
  207. package/internal/utils/base64.d.ts.map +0 -1
  208. package/internal/utils/base64.js +0 -38
  209. package/internal/utils/base64.js.map +0 -1
  210. package/internal/utils/base64.mjs +0 -33
  211. package/internal/utils/base64.mjs.map +0 -1
  212. package/internal/utils/bytes.d.mts +0 -4
  213. package/internal/utils/bytes.d.mts.map +0 -1
  214. package/internal/utils/bytes.d.ts +0 -4
  215. package/internal/utils/bytes.d.ts.map +0 -1
  216. package/internal/utils/bytes.js +0 -31
  217. package/internal/utils/bytes.js.map +0 -1
  218. package/internal/utils/bytes.mjs +0 -26
  219. package/internal/utils/bytes.mjs.map +0 -1
  220. package/internal/utils/env.d.mts +0 -9
  221. package/internal/utils/env.d.mts.map +0 -1
  222. package/internal/utils/env.d.ts +0 -9
  223. package/internal/utils/env.d.ts.map +0 -1
  224. package/internal/utils/env.js +0 -22
  225. package/internal/utils/env.js.map +0 -1
  226. package/internal/utils/env.mjs +0 -18
  227. package/internal/utils/env.mjs.map +0 -1
  228. package/internal/utils/log.d.mts +0 -37
  229. package/internal/utils/log.d.mts.map +0 -1
  230. package/internal/utils/log.d.ts +0 -37
  231. package/internal/utils/log.d.ts.map +0 -1
  232. package/internal/utils/log.js +0 -86
  233. package/internal/utils/log.js.map +0 -1
  234. package/internal/utils/log.mjs +0 -80
  235. package/internal/utils/log.mjs.map +0 -1
  236. package/internal/utils/path.d.mts +0 -15
  237. package/internal/utils/path.d.mts.map +0 -1
  238. package/internal/utils/path.d.ts +0 -15
  239. package/internal/utils/path.d.ts.map +0 -1
  240. package/internal/utils/path.js +0 -79
  241. package/internal/utils/path.js.map +0 -1
  242. package/internal/utils/path.mjs +0 -74
  243. package/internal/utils/path.mjs.map +0 -1
  244. package/internal/utils/query.d.mts +0 -2
  245. package/internal/utils/query.d.mts.map +0 -1
  246. package/internal/utils/query.d.ts +0 -2
  247. package/internal/utils/query.d.ts.map +0 -1
  248. package/internal/utils/query.js +0 -10
  249. package/internal/utils/query.js.map +0 -1
  250. package/internal/utils/query.mjs +0 -6
  251. package/internal/utils/query.mjs.map +0 -1
  252. package/internal/utils/sleep.d.mts +0 -2
  253. package/internal/utils/sleep.d.mts.map +0 -1
  254. package/internal/utils/sleep.d.ts +0 -2
  255. package/internal/utils/sleep.d.ts.map +0 -1
  256. package/internal/utils/sleep.js +0 -7
  257. package/internal/utils/sleep.js.map +0 -1
  258. package/internal/utils/sleep.mjs +0 -3
  259. package/internal/utils/sleep.mjs.map +0 -1
  260. package/internal/utils/uuid.d.mts +0 -5
  261. package/internal/utils/uuid.d.mts.map +0 -1
  262. package/internal/utils/uuid.d.ts +0 -5
  263. package/internal/utils/uuid.d.ts.map +0 -1
  264. package/internal/utils/uuid.js +0 -19
  265. package/internal/utils/uuid.js.map +0 -1
  266. package/internal/utils/uuid.mjs +0 -15
  267. package/internal/utils/uuid.mjs.map +0 -1
  268. package/internal/utils/values.d.mts +0 -18
  269. package/internal/utils/values.d.mts.map +0 -1
  270. package/internal/utils/values.d.ts +0 -18
  271. package/internal/utils/values.d.ts.map +0 -1
  272. package/internal/utils/values.js +0 -112
  273. package/internal/utils/values.js.map +0 -1
  274. package/internal/utils/values.mjs +0 -94
  275. package/internal/utils/values.mjs.map +0 -1
  276. package/internal/utils.d.mts +0 -8
  277. package/internal/utils.d.mts.map +0 -1
  278. package/internal/utils.d.ts +0 -8
  279. package/internal/utils.d.ts.map +0 -1
  280. package/internal/utils.js +0 -12
  281. package/internal/utils.js.map +0 -1
  282. package/internal/utils.mjs +0 -9
  283. package/internal/utils.mjs.map +0 -1
  284. package/resource.d.mts +0 -2
  285. package/resource.d.mts.map +0 -1
  286. package/resource.d.ts +0 -2
  287. package/resource.d.ts.map +0 -1
  288. package/resource.js +0 -6
  289. package/resource.js.map +0 -1
  290. package/resource.mjs +0 -2
  291. package/resource.mjs.map +0 -1
  292. package/resources/connect/connect.d.mts +0 -26
  293. package/resources/connect/connect.d.mts.map +0 -1
  294. package/resources/connect/connect.d.ts +0 -26
  295. package/resources/connect/connect.d.ts.map +0 -1
  296. package/resources/connect/connect.js +0 -24
  297. package/resources/connect/connect.js.map +0 -1
  298. package/resources/connect/connect.mjs +0 -19
  299. package/resources/connect/connect.mjs.map +0 -1
  300. package/resources/connect/index.d.mts +0 -3
  301. package/resources/connect/index.d.mts.map +0 -1
  302. package/resources/connect/index.d.ts +0 -3
  303. package/resources/connect/index.d.ts.map +0 -1
  304. package/resources/connect/index.js +0 -9
  305. package/resources/connect/index.js.map +0 -1
  306. package/resources/connect/index.mjs +0 -4
  307. package/resources/connect/index.mjs.map +0 -1
  308. package/resources/connect/integrations.d.mts +0 -64
  309. package/resources/connect/integrations.d.mts.map +0 -1
  310. package/resources/connect/integrations.d.ts +0 -64
  311. package/resources/connect/integrations.d.ts.map +0 -1
  312. package/resources/connect/integrations.js +0 -22
  313. package/resources/connect/integrations.js.map +0 -1
  314. package/resources/connect/integrations.mjs +0 -18
  315. package/resources/connect/integrations.mjs.map +0 -1
  316. package/resources/connect.d.mts +0 -2
  317. package/resources/connect.d.mts.map +0 -1
  318. package/resources/connect.d.ts +0 -2
  319. package/resources/connect.d.ts.map +0 -1
  320. package/resources/connect.js +0 -6
  321. package/resources/connect.js.map +0 -1
  322. package/resources/connect.mjs +0 -3
  323. package/resources/connect.mjs.map +0 -1
  324. package/resources/health.d.mts +0 -23
  325. package/resources/health.d.mts.map +0 -1
  326. package/resources/health.d.ts +0 -23
  327. package/resources/health.d.ts.map +0 -1
  328. package/resources/health.js +0 -21
  329. package/resources/health.js.map +0 -1
  330. package/resources/health.mjs +0 -17
  331. package/resources/health.mjs.map +0 -1
  332. package/resources/index.d.mts +0 -6
  333. package/resources/index.d.mts.map +0 -1
  334. package/resources/index.d.ts +0 -6
  335. package/resources/index.d.ts.map +0 -1
  336. package/resources/index.js +0 -15
  337. package/resources/index.js.map +0 -1
  338. package/resources/index.mjs +0 -7
  339. package/resources/index.mjs.map +0 -1
  340. package/resources/media.d.mts +0 -27
  341. package/resources/media.d.mts.map +0 -1
  342. package/resources/media.d.ts +0 -27
  343. package/resources/media.d.ts.map +0 -1
  344. package/resources/media.js +0 -15
  345. package/resources/media.js.map +0 -1
  346. package/resources/media.mjs +0 -11
  347. package/resources/media.mjs.map +0 -1
  348. package/resources/platforms.d.mts +0 -22
  349. package/resources/platforms.d.mts.map +0 -1
  350. package/resources/platforms.d.ts +0 -22
  351. package/resources/platforms.d.ts.map +0 -1
  352. package/resources/platforms.js +0 -15
  353. package/resources/platforms.js.map +0 -1
  354. package/resources/platforms.mjs +0 -11
  355. package/resources/platforms.mjs.map +0 -1
  356. package/resources/posts/index.d.mts +0 -3
  357. package/resources/posts/index.d.mts.map +0 -1
  358. package/resources/posts/index.d.ts +0 -3
  359. package/resources/posts/index.d.ts.map +0 -1
  360. package/resources/posts/index.js +0 -9
  361. package/resources/posts/index.js.map +0 -1
  362. package/resources/posts/index.mjs +0 -4
  363. package/resources/posts/index.mjs.map +0 -1
  364. package/resources/posts/posts.d.mts +0 -279
  365. package/resources/posts/posts.d.mts.map +0 -1
  366. package/resources/posts/posts.d.ts +0 -279
  367. package/resources/posts/posts.d.ts.map +0 -1
  368. package/resources/posts/posts.js +0 -69
  369. package/resources/posts/posts.js.map +0 -1
  370. package/resources/posts/posts.mjs +0 -64
  371. package/resources/posts/posts.mjs.map +0 -1
  372. package/resources/posts/scheduled.d.mts +0 -105
  373. package/resources/posts/scheduled.d.mts.map +0 -1
  374. package/resources/posts/scheduled.d.ts +0 -105
  375. package/resources/posts/scheduled.d.ts.map +0 -1
  376. package/resources/posts/scheduled.js +0 -48
  377. package/resources/posts/scheduled.js.map +0 -1
  378. package/resources/posts/scheduled.mjs +0 -44
  379. package/resources/posts/scheduled.mjs.map +0 -1
  380. package/resources/posts.d.mts +0 -2
  381. package/resources/posts.d.mts.map +0 -1
  382. package/resources/posts.d.ts +0 -2
  383. package/resources/posts.d.ts.map +0 -1
  384. package/resources/posts.js +0 -6
  385. package/resources/posts.js.map +0 -1
  386. package/resources/posts.mjs +0 -3
  387. package/resources/posts.mjs.map +0 -1
  388. package/resources.d.mts +0 -2
  389. package/resources.d.mts.map +0 -1
  390. package/resources.d.ts +0 -2
  391. package/resources.d.ts.map +0 -1
  392. package/resources.js +0 -5
  393. package/resources.js.map +0 -1
  394. package/resources.mjs +0 -2
  395. package/resources.mjs.map +0 -1
  396. package/src/api-promise.ts +0 -2
  397. package/src/client.ts +0 -789
  398. package/src/core/README.md +0 -3
  399. package/src/core/api-promise.ts +0 -92
  400. package/src/core/error.ts +0 -130
  401. package/src/core/resource.ts +0 -11
  402. package/src/core/uploads.ts +0 -2
  403. package/src/error.ts +0 -2
  404. package/src/index.ts +0 -22
  405. package/src/internal/README.md +0 -3
  406. package/src/internal/builtin-types.ts +0 -93
  407. package/src/internal/detect-platform.ts +0 -196
  408. package/src/internal/errors.ts +0 -33
  409. package/src/internal/headers.ts +0 -97
  410. package/src/internal/parse.ts +0 -56
  411. package/src/internal/qs/LICENSE.md +0 -13
  412. package/src/internal/qs/README.md +0 -3
  413. package/src/internal/qs/formats.ts +0 -10
  414. package/src/internal/qs/index.ts +0 -13
  415. package/src/internal/qs/stringify.ts +0 -385
  416. package/src/internal/qs/types.ts +0 -71
  417. package/src/internal/qs/utils.ts +0 -265
  418. package/src/internal/request-options.ts +0 -91
  419. package/src/internal/shim-types.ts +0 -26
  420. package/src/internal/shims.ts +0 -107
  421. package/src/internal/to-file.ts +0 -154
  422. package/src/internal/types.ts +0 -93
  423. package/src/internal/uploads.ts +0 -187
  424. package/src/internal/utils/base64.ts +0 -40
  425. package/src/internal/utils/bytes.ts +0 -32
  426. package/src/internal/utils/env.ts +0 -18
  427. package/src/internal/utils/log.ts +0 -127
  428. package/src/internal/utils/path.ts +0 -88
  429. package/src/internal/utils/query.ts +0 -7
  430. package/src/internal/utils/sleep.ts +0 -3
  431. package/src/internal/utils/uuid.ts +0 -17
  432. package/src/internal/utils/values.ts +0 -105
  433. package/src/internal/utils.ts +0 -9
  434. package/src/lib/.keep +0 -4
  435. package/src/resource.ts +0 -2
  436. package/src/resources/connect/connect.ts +0 -55
  437. package/src/resources/connect/index.ts +0 -9
  438. package/src/resources/connect/integrations.ts +0 -96
  439. package/src/resources/connect.ts +0 -3
  440. package/src/resources/health.ts +0 -36
  441. package/src/resources/index.ts +0 -16
  442. package/src/resources/media.ts +0 -38
  443. package/src/resources/platforms.ts +0 -30
  444. package/src/resources/posts/index.ts +0 -19
  445. package/src/resources/posts/posts.ts +0 -399
  446. package/src/resources/posts/scheduled.ts +0 -147
  447. package/src/resources/posts.ts +0 -3
  448. package/src/resources.ts +0 -1
  449. package/src/tsconfig.json +0 -11
  450. package/src/uploads.ts +0 -2
  451. package/src/version.ts +0 -1
  452. package/uploads.d.mts +0 -2
  453. package/uploads.d.mts.map +0 -1
  454. package/uploads.d.ts +0 -2
  455. package/uploads.d.ts.map +0 -1
  456. package/uploads.js +0 -6
  457. package/uploads.js.map +0 -1
  458. package/uploads.mjs +0 -2
  459. package/uploads.mjs.map +0 -1
  460. package/version.d.mts +0 -2
  461. package/version.d.mts.map +0 -1
  462. package/version.d.ts +0 -2
  463. package/version.d.ts.map +0 -1
  464. package/version.js +0 -5
  465. package/version.js.map +0 -1
  466. package/version.mjs +0 -2
  467. package/version.mjs.map +0 -1
package/dist/index.js ADDED
@@ -0,0 +1,1690 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
3
+
4
+ // src/generated/core/bodySerializer.gen.ts
5
+ var jsonBodySerializer = {
6
+ bodySerializer: /* @__PURE__ */ __name((body) => JSON.stringify(body, (_key, value) => typeof value === "bigint" ? value.toString() : value), "bodySerializer")
7
+ };
8
+
9
+ // src/generated/core/serverSentEvents.gen.ts
10
+ function createSseClient({
11
+ onRequest,
12
+ onSseError,
13
+ onSseEvent,
14
+ responseTransformer,
15
+ responseValidator,
16
+ sseDefaultRetryDelay,
17
+ sseMaxRetryAttempts,
18
+ sseMaxRetryDelay,
19
+ sseSleepFn,
20
+ url,
21
+ ...options
22
+ }) {
23
+ let lastEventId;
24
+ const sleep = sseSleepFn ?? ((ms) => new Promise((resolve) => setTimeout(resolve, ms)));
25
+ const createStream = /* @__PURE__ */ __name(async function* () {
26
+ let retryDelay2 = sseDefaultRetryDelay ?? 3e3;
27
+ let attempt = 0;
28
+ const signal = options.signal ?? new AbortController().signal;
29
+ while (true) {
30
+ if (signal.aborted) break;
31
+ attempt++;
32
+ const headers = options.headers instanceof Headers ? options.headers : new Headers(options.headers);
33
+ if (lastEventId !== void 0) {
34
+ headers.set("Last-Event-ID", lastEventId);
35
+ }
36
+ try {
37
+ const requestInit = {
38
+ redirect: "follow",
39
+ ...options,
40
+ body: options.serializedBody,
41
+ headers,
42
+ signal
43
+ };
44
+ let request = new Request(url, requestInit);
45
+ if (onRequest) {
46
+ request = await onRequest(url, requestInit);
47
+ }
48
+ const _fetch = options.fetch ?? globalThis.fetch;
49
+ const response = await _fetch(request);
50
+ if (!response.ok) throw new Error(`SSE failed: ${response.status} ${response.statusText}`);
51
+ if (!response.body) throw new Error("No body in SSE response");
52
+ const reader = response.body.pipeThrough(new TextDecoderStream()).getReader();
53
+ let buffer = "";
54
+ const abortHandler = /* @__PURE__ */ __name(() => {
55
+ try {
56
+ reader.cancel();
57
+ } catch {
58
+ }
59
+ }, "abortHandler");
60
+ signal.addEventListener("abort", abortHandler);
61
+ try {
62
+ while (true) {
63
+ const { done, value } = await reader.read();
64
+ if (done) break;
65
+ buffer += value;
66
+ buffer = buffer.replace(/\r\n?/g, "\n");
67
+ const chunks = buffer.split("\n\n");
68
+ buffer = chunks.pop() ?? "";
69
+ for (const chunk of chunks) {
70
+ const lines = chunk.split("\n");
71
+ const dataLines = [];
72
+ let eventName;
73
+ for (const line of lines) {
74
+ if (line.startsWith("data:")) {
75
+ dataLines.push(line.replace(/^data:\s*/, ""));
76
+ } else if (line.startsWith("event:")) {
77
+ eventName = line.replace(/^event:\s*/, "");
78
+ } else if (line.startsWith("id:")) {
79
+ lastEventId = line.replace(/^id:\s*/, "");
80
+ } else if (line.startsWith("retry:")) {
81
+ const parsed = Number.parseInt(line.replace(/^retry:\s*/, ""), 10);
82
+ if (!Number.isNaN(parsed)) {
83
+ retryDelay2 = parsed;
84
+ }
85
+ }
86
+ }
87
+ let data;
88
+ let parsedJson = false;
89
+ if (dataLines.length) {
90
+ const rawData = dataLines.join("\n");
91
+ try {
92
+ data = JSON.parse(rawData);
93
+ parsedJson = true;
94
+ } catch {
95
+ data = rawData;
96
+ }
97
+ }
98
+ if (parsedJson) {
99
+ if (responseValidator) {
100
+ await responseValidator(data);
101
+ }
102
+ if (responseTransformer) {
103
+ data = await responseTransformer(data);
104
+ }
105
+ }
106
+ onSseEvent?.({
107
+ data,
108
+ event: eventName,
109
+ id: lastEventId,
110
+ retry: retryDelay2
111
+ });
112
+ if (dataLines.length) {
113
+ yield data;
114
+ }
115
+ }
116
+ }
117
+ } finally {
118
+ signal.removeEventListener("abort", abortHandler);
119
+ reader.releaseLock();
120
+ }
121
+ break;
122
+ } catch (error) {
123
+ onSseError?.(error);
124
+ if (sseMaxRetryAttempts !== void 0 && attempt >= sseMaxRetryAttempts) {
125
+ break;
126
+ }
127
+ const backoff = Math.min(retryDelay2 * 2 ** (attempt - 1), sseMaxRetryDelay ?? 3e4);
128
+ await sleep(backoff);
129
+ }
130
+ }
131
+ }, "createStream");
132
+ const stream = createStream();
133
+ return { stream };
134
+ }
135
+ __name(createSseClient, "createSseClient");
136
+
137
+ // src/generated/core/pathSerializer.gen.ts
138
+ var separatorArrayExplode = /* @__PURE__ */ __name((style) => {
139
+ switch (style) {
140
+ case "label":
141
+ return ".";
142
+ case "matrix":
143
+ return ";";
144
+ case "simple":
145
+ return ",";
146
+ default:
147
+ return "&";
148
+ }
149
+ }, "separatorArrayExplode");
150
+ var separatorArrayNoExplode = /* @__PURE__ */ __name((style) => {
151
+ switch (style) {
152
+ case "form":
153
+ return ",";
154
+ case "pipeDelimited":
155
+ return "|";
156
+ case "spaceDelimited":
157
+ return "%20";
158
+ default:
159
+ return ",";
160
+ }
161
+ }, "separatorArrayNoExplode");
162
+ var separatorObjectExplode = /* @__PURE__ */ __name((style) => {
163
+ switch (style) {
164
+ case "label":
165
+ return ".";
166
+ case "matrix":
167
+ return ";";
168
+ case "simple":
169
+ return ",";
170
+ default:
171
+ return "&";
172
+ }
173
+ }, "separatorObjectExplode");
174
+ var serializeArrayParam = /* @__PURE__ */ __name(({
175
+ allowReserved,
176
+ explode,
177
+ name,
178
+ style,
179
+ value
180
+ }) => {
181
+ if (!explode) {
182
+ const joinedValues2 = (allowReserved ? value : value.map((v) => encodeURIComponent(v))).join(separatorArrayNoExplode(style));
183
+ switch (style) {
184
+ case "label":
185
+ return `.${joinedValues2}`;
186
+ case "matrix":
187
+ return `;${name}=${joinedValues2}`;
188
+ case "simple":
189
+ return joinedValues2;
190
+ default:
191
+ return `${name}=${joinedValues2}`;
192
+ }
193
+ }
194
+ const separator = separatorArrayExplode(style);
195
+ const joinedValues = value.map((v) => {
196
+ if (style === "label" || style === "simple") {
197
+ return allowReserved ? v : encodeURIComponent(v);
198
+ }
199
+ return serializePrimitiveParam({
200
+ allowReserved,
201
+ name,
202
+ value: v
203
+ });
204
+ }).join(separator);
205
+ return style === "label" || style === "matrix" ? separator + joinedValues : joinedValues;
206
+ }, "serializeArrayParam");
207
+ var serializePrimitiveParam = /* @__PURE__ */ __name(({
208
+ allowReserved,
209
+ name,
210
+ value
211
+ }) => {
212
+ if (value === void 0 || value === null) {
213
+ return "";
214
+ }
215
+ if (typeof value === "object") {
216
+ throw new Error(
217
+ "Deeply-nested arrays/objects aren\u2019t supported. Provide your own `querySerializer()` to handle these."
218
+ );
219
+ }
220
+ return `${name}=${allowReserved ? value : encodeURIComponent(value)}`;
221
+ }, "serializePrimitiveParam");
222
+ var serializeObjectParam = /* @__PURE__ */ __name(({
223
+ allowReserved,
224
+ explode,
225
+ name,
226
+ style,
227
+ value,
228
+ valueOnly
229
+ }) => {
230
+ if (value instanceof Date) {
231
+ return valueOnly ? value.toISOString() : `${name}=${value.toISOString()}`;
232
+ }
233
+ if (style !== "deepObject" && !explode) {
234
+ let values = [];
235
+ Object.entries(value).forEach(([key, v]) => {
236
+ values = [...values, key, allowReserved ? v : encodeURIComponent(v)];
237
+ });
238
+ const joinedValues2 = values.join(",");
239
+ switch (style) {
240
+ case "form":
241
+ return `${name}=${joinedValues2}`;
242
+ case "label":
243
+ return `.${joinedValues2}`;
244
+ case "matrix":
245
+ return `;${name}=${joinedValues2}`;
246
+ default:
247
+ return joinedValues2;
248
+ }
249
+ }
250
+ const separator = separatorObjectExplode(style);
251
+ const joinedValues = Object.entries(value).map(
252
+ ([key, v]) => serializePrimitiveParam({
253
+ allowReserved,
254
+ name: style === "deepObject" ? `${name}[${key}]` : key,
255
+ value: v
256
+ })
257
+ ).join(separator);
258
+ return style === "label" || style === "matrix" ? separator + joinedValues : joinedValues;
259
+ }, "serializeObjectParam");
260
+
261
+ // src/generated/core/utils.gen.ts
262
+ var PATH_PARAM_RE = /\{[^{}]+\}/g;
263
+ var defaultPathSerializer = /* @__PURE__ */ __name(({ path, url: _url }) => {
264
+ let url = _url;
265
+ const matches = _url.match(PATH_PARAM_RE);
266
+ if (matches) {
267
+ for (const match of matches) {
268
+ let explode = false;
269
+ let name = match.substring(1, match.length - 1);
270
+ let style = "simple";
271
+ if (name.endsWith("*")) {
272
+ explode = true;
273
+ name = name.substring(0, name.length - 1);
274
+ }
275
+ if (name.startsWith(".")) {
276
+ name = name.substring(1);
277
+ style = "label";
278
+ } else if (name.startsWith(";")) {
279
+ name = name.substring(1);
280
+ style = "matrix";
281
+ }
282
+ const value = path[name];
283
+ if (value === void 0 || value === null) {
284
+ continue;
285
+ }
286
+ if (Array.isArray(value)) {
287
+ url = url.replace(match, serializeArrayParam({ explode, name, style, value }));
288
+ continue;
289
+ }
290
+ if (typeof value === "object") {
291
+ url = url.replace(
292
+ match,
293
+ serializeObjectParam({
294
+ explode,
295
+ name,
296
+ style,
297
+ value,
298
+ valueOnly: true
299
+ })
300
+ );
301
+ continue;
302
+ }
303
+ if (style === "matrix") {
304
+ url = url.replace(
305
+ match,
306
+ `;${serializePrimitiveParam({
307
+ name,
308
+ value
309
+ })}`
310
+ );
311
+ continue;
312
+ }
313
+ const replaceValue = encodeURIComponent(
314
+ style === "label" ? `.${value}` : value
315
+ );
316
+ url = url.replace(match, replaceValue);
317
+ }
318
+ }
319
+ return url;
320
+ }, "defaultPathSerializer");
321
+ var getUrl = /* @__PURE__ */ __name(({
322
+ baseUrl,
323
+ path,
324
+ query,
325
+ querySerializer,
326
+ url: _url
327
+ }) => {
328
+ const pathUrl = _url.startsWith("/") ? _url : `/${_url}`;
329
+ let url = (baseUrl ?? "") + pathUrl;
330
+ if (path) {
331
+ url = defaultPathSerializer({ path, url });
332
+ }
333
+ let search = query ? querySerializer(query) : "";
334
+ if (search.startsWith("?")) {
335
+ search = search.substring(1);
336
+ }
337
+ if (search) {
338
+ url += `?${search}`;
339
+ }
340
+ return url;
341
+ }, "getUrl");
342
+ function getValidRequestBody(options) {
343
+ const hasBody = options.body !== void 0;
344
+ const isSerializedBody = hasBody && options.bodySerializer;
345
+ if (isSerializedBody) {
346
+ if ("serializedBody" in options) {
347
+ const hasSerializedBody = options.serializedBody !== void 0 && options.serializedBody !== "";
348
+ return hasSerializedBody ? options.serializedBody : null;
349
+ }
350
+ return options.body !== "" ? options.body : null;
351
+ }
352
+ if (hasBody) {
353
+ return options.body;
354
+ }
355
+ return void 0;
356
+ }
357
+ __name(getValidRequestBody, "getValidRequestBody");
358
+
359
+ // src/generated/core/auth.gen.ts
360
+ var getAuthToken = /* @__PURE__ */ __name(async (auth, callback) => {
361
+ const token = typeof callback === "function" ? await callback(auth) : callback;
362
+ if (!token) {
363
+ return;
364
+ }
365
+ if (auth.scheme === "bearer") {
366
+ return `Bearer ${token}`;
367
+ }
368
+ if (auth.scheme === "basic") {
369
+ return `Basic ${btoa(token)}`;
370
+ }
371
+ return token;
372
+ }, "getAuthToken");
373
+
374
+ // src/generated/client/utils.gen.ts
375
+ var createQuerySerializer = /* @__PURE__ */ __name(({
376
+ parameters = {},
377
+ ...args
378
+ } = {}) => {
379
+ const querySerializer = /* @__PURE__ */ __name((queryParams) => {
380
+ const search = [];
381
+ if (queryParams && typeof queryParams === "object") {
382
+ for (const name in queryParams) {
383
+ const value = queryParams[name];
384
+ if (value === void 0 || value === null) {
385
+ continue;
386
+ }
387
+ const options = parameters[name] || args;
388
+ if (Array.isArray(value)) {
389
+ const serializedArray = serializeArrayParam({
390
+ allowReserved: options.allowReserved,
391
+ explode: true,
392
+ name,
393
+ style: "form",
394
+ value,
395
+ ...options.array
396
+ });
397
+ if (serializedArray) search.push(serializedArray);
398
+ } else if (typeof value === "object") {
399
+ const serializedObject = serializeObjectParam({
400
+ allowReserved: options.allowReserved,
401
+ explode: true,
402
+ name,
403
+ style: "deepObject",
404
+ value,
405
+ ...options.object
406
+ });
407
+ if (serializedObject) search.push(serializedObject);
408
+ } else {
409
+ const serializedPrimitive = serializePrimitiveParam({
410
+ allowReserved: options.allowReserved,
411
+ name,
412
+ value
413
+ });
414
+ if (serializedPrimitive) search.push(serializedPrimitive);
415
+ }
416
+ }
417
+ }
418
+ return search.join("&");
419
+ }, "querySerializer");
420
+ return querySerializer;
421
+ }, "createQuerySerializer");
422
+ var getParseAs = /* @__PURE__ */ __name((contentType) => {
423
+ if (!contentType) {
424
+ return "stream";
425
+ }
426
+ const cleanContent = contentType.split(";")[0]?.trim();
427
+ if (!cleanContent) {
428
+ return;
429
+ }
430
+ if (cleanContent.startsWith("application/json") || cleanContent.endsWith("+json")) {
431
+ return "json";
432
+ }
433
+ if (cleanContent === "multipart/form-data") {
434
+ return "formData";
435
+ }
436
+ if (["application/", "audio/", "image/", "video/"].some((type) => cleanContent.startsWith(type))) {
437
+ return "blob";
438
+ }
439
+ if (cleanContent.startsWith("text/")) {
440
+ return "text";
441
+ }
442
+ return;
443
+ }, "getParseAs");
444
+ var checkForExistence = /* @__PURE__ */ __name((options, name) => {
445
+ if (!name) {
446
+ return false;
447
+ }
448
+ if (options.headers.has(name) || options.query?.[name] || options.headers.get("Cookie")?.includes(`${name}=`)) {
449
+ return true;
450
+ }
451
+ return false;
452
+ }, "checkForExistence");
453
+ async function setAuthParams(options) {
454
+ for (const auth of options.security ?? []) {
455
+ if (checkForExistence(options, auth.name)) {
456
+ continue;
457
+ }
458
+ const token = await getAuthToken(auth, options.auth);
459
+ if (!token) {
460
+ continue;
461
+ }
462
+ const name = auth.name ?? "Authorization";
463
+ switch (auth.in) {
464
+ case "query":
465
+ if (!options.query) {
466
+ options.query = {};
467
+ }
468
+ options.query[name] = token;
469
+ break;
470
+ case "cookie":
471
+ options.headers.append("Cookie", `${name}=${token}`);
472
+ break;
473
+ case "header":
474
+ default:
475
+ options.headers.set(name, token);
476
+ break;
477
+ }
478
+ }
479
+ }
480
+ __name(setAuthParams, "setAuthParams");
481
+ var buildUrl = /* @__PURE__ */ __name((options) => getUrl({
482
+ baseUrl: options.baseUrl,
483
+ path: options.path,
484
+ query: options.query,
485
+ querySerializer: typeof options.querySerializer === "function" ? options.querySerializer : createQuerySerializer(options.querySerializer),
486
+ url: options.url
487
+ }), "buildUrl");
488
+ var mergeConfigs = /* @__PURE__ */ __name((a, b) => {
489
+ const config = { ...a, ...b };
490
+ if (config.baseUrl?.endsWith("/")) {
491
+ config.baseUrl = config.baseUrl.substring(0, config.baseUrl.length - 1);
492
+ }
493
+ config.headers = mergeHeaders(a.headers, b.headers);
494
+ return config;
495
+ }, "mergeConfigs");
496
+ var headersEntries = /* @__PURE__ */ __name((headers) => {
497
+ const entries = [];
498
+ headers.forEach((value, key) => {
499
+ entries.push([key, value]);
500
+ });
501
+ return entries;
502
+ }, "headersEntries");
503
+ var mergeHeaders = /* @__PURE__ */ __name((...headers) => {
504
+ const mergedHeaders = new Headers();
505
+ for (const header of headers) {
506
+ if (!header) {
507
+ continue;
508
+ }
509
+ const iterator = header instanceof Headers ? headersEntries(header) : Object.entries(header);
510
+ for (const [key, value] of iterator) {
511
+ if (value === null) {
512
+ mergedHeaders.delete(key);
513
+ } else if (Array.isArray(value)) {
514
+ for (const v of value) {
515
+ mergedHeaders.append(key, v);
516
+ }
517
+ } else if (value !== void 0) {
518
+ mergedHeaders.set(
519
+ key,
520
+ typeof value === "object" ? JSON.stringify(value) : value
521
+ );
522
+ }
523
+ }
524
+ }
525
+ return mergedHeaders;
526
+ }, "mergeHeaders");
527
+ var Interceptors = class {
528
+ static {
529
+ __name(this, "Interceptors");
530
+ }
531
+ fns = [];
532
+ clear() {
533
+ this.fns = [];
534
+ }
535
+ eject(id) {
536
+ const index = this.getInterceptorIndex(id);
537
+ if (this.fns[index]) {
538
+ this.fns[index] = null;
539
+ }
540
+ }
541
+ exists(id) {
542
+ const index = this.getInterceptorIndex(id);
543
+ return Boolean(this.fns[index]);
544
+ }
545
+ getInterceptorIndex(id) {
546
+ if (typeof id === "number") {
547
+ return this.fns[id] ? id : -1;
548
+ }
549
+ return this.fns.indexOf(id);
550
+ }
551
+ update(id, fn) {
552
+ const index = this.getInterceptorIndex(id);
553
+ if (this.fns[index]) {
554
+ this.fns[index] = fn;
555
+ return id;
556
+ }
557
+ return false;
558
+ }
559
+ use(fn) {
560
+ this.fns.push(fn);
561
+ return this.fns.length - 1;
562
+ }
563
+ };
564
+ var createInterceptors = /* @__PURE__ */ __name(() => ({
565
+ error: new Interceptors(),
566
+ request: new Interceptors(),
567
+ response: new Interceptors()
568
+ }), "createInterceptors");
569
+ var defaultQuerySerializer = createQuerySerializer({
570
+ allowReserved: false,
571
+ array: {
572
+ explode: true,
573
+ style: "form"
574
+ },
575
+ object: {
576
+ explode: true,
577
+ style: "deepObject"
578
+ }
579
+ });
580
+ var defaultHeaders = {
581
+ "Content-Type": "application/json"
582
+ };
583
+ var createConfig = /* @__PURE__ */ __name((override = {}) => ({
584
+ ...jsonBodySerializer,
585
+ headers: defaultHeaders,
586
+ parseAs: "auto",
587
+ querySerializer: defaultQuerySerializer,
588
+ ...override
589
+ }), "createConfig");
590
+
591
+ // src/generated/client/client.gen.ts
592
+ var createClient = /* @__PURE__ */ __name((config = {}) => {
593
+ let _config = mergeConfigs(createConfig(), config);
594
+ const getConfig = /* @__PURE__ */ __name(() => ({ ..._config }), "getConfig");
595
+ const setConfig = /* @__PURE__ */ __name((config2) => {
596
+ _config = mergeConfigs(_config, config2);
597
+ return getConfig();
598
+ }, "setConfig");
599
+ const interceptors = createInterceptors();
600
+ const beforeRequest = /* @__PURE__ */ __name(async (options) => {
601
+ const opts = {
602
+ ..._config,
603
+ ...options,
604
+ fetch: options.fetch ?? _config.fetch ?? globalThis.fetch,
605
+ headers: mergeHeaders(_config.headers, options.headers),
606
+ serializedBody: void 0
607
+ };
608
+ if (opts.security) {
609
+ await setAuthParams(opts);
610
+ }
611
+ if (opts.requestValidator) {
612
+ await opts.requestValidator(opts);
613
+ }
614
+ if (opts.body !== void 0 && opts.bodySerializer) {
615
+ opts.serializedBody = opts.bodySerializer(opts.body);
616
+ }
617
+ if (opts.body === void 0 || opts.serializedBody === "") {
618
+ opts.headers.delete("Content-Type");
619
+ }
620
+ const resolvedOpts = opts;
621
+ const url = buildUrl(resolvedOpts);
622
+ return { opts: resolvedOpts, url };
623
+ }, "beforeRequest");
624
+ const request = /* @__PURE__ */ __name(async (options) => {
625
+ const throwOnError = options.throwOnError ?? _config.throwOnError;
626
+ const responseStyle = options.responseStyle ?? _config.responseStyle;
627
+ let request2;
628
+ let response;
629
+ try {
630
+ const { opts, url } = await beforeRequest(options);
631
+ const requestInit = {
632
+ redirect: "follow",
633
+ ...opts,
634
+ body: getValidRequestBody(opts)
635
+ };
636
+ request2 = new Request(url, requestInit);
637
+ for (const fn of interceptors.request.fns) {
638
+ if (fn) {
639
+ request2 = await fn(request2, opts);
640
+ }
641
+ }
642
+ const _fetch = opts.fetch;
643
+ response = await _fetch(request2);
644
+ for (const fn of interceptors.response.fns) {
645
+ if (fn) {
646
+ response = await fn(response, request2, opts);
647
+ }
648
+ }
649
+ const result = {
650
+ request: request2,
651
+ response
652
+ };
653
+ if (response.ok) {
654
+ const parseAs = (opts.parseAs === "auto" ? getParseAs(response.headers.get("Content-Type")) : opts.parseAs) ?? "json";
655
+ if (response.status === 204 || response.headers.get("Content-Length") === "0") {
656
+ let emptyData;
657
+ switch (parseAs) {
658
+ case "arrayBuffer":
659
+ case "blob":
660
+ case "text":
661
+ emptyData = await response[parseAs]();
662
+ break;
663
+ case "formData":
664
+ emptyData = new FormData();
665
+ break;
666
+ case "stream":
667
+ emptyData = response.body;
668
+ break;
669
+ case "json":
670
+ default:
671
+ emptyData = {};
672
+ break;
673
+ }
674
+ return opts.responseStyle === "data" ? emptyData : {
675
+ data: emptyData,
676
+ ...result
677
+ };
678
+ }
679
+ let data;
680
+ switch (parseAs) {
681
+ case "arrayBuffer":
682
+ case "blob":
683
+ case "formData":
684
+ case "text":
685
+ data = await response[parseAs]();
686
+ break;
687
+ case "json": {
688
+ const text = await response.text();
689
+ data = text ? JSON.parse(text) : {};
690
+ break;
691
+ }
692
+ case "stream":
693
+ return opts.responseStyle === "data" ? response.body : {
694
+ data: response.body,
695
+ ...result
696
+ };
697
+ }
698
+ if (parseAs === "json") {
699
+ if (opts.responseValidator) {
700
+ await opts.responseValidator(data);
701
+ }
702
+ if (opts.responseTransformer) {
703
+ data = await opts.responseTransformer(data);
704
+ }
705
+ }
706
+ return opts.responseStyle === "data" ? data : {
707
+ data,
708
+ ...result
709
+ };
710
+ }
711
+ const textError = await response.text();
712
+ let jsonError;
713
+ try {
714
+ jsonError = JSON.parse(textError);
715
+ } catch {
716
+ }
717
+ throw jsonError ?? textError;
718
+ } catch (error) {
719
+ let finalError = error;
720
+ for (const fn of interceptors.error.fns) {
721
+ if (fn) {
722
+ finalError = await fn(finalError, response, request2, options);
723
+ }
724
+ }
725
+ finalError = finalError || {};
726
+ if (throwOnError) {
727
+ throw finalError;
728
+ }
729
+ return responseStyle === "data" ? void 0 : {
730
+ error: finalError,
731
+ request: request2,
732
+ response
733
+ };
734
+ }
735
+ }, "request");
736
+ const makeMethodFn = /* @__PURE__ */ __name((method) => (options) => request({ ...options, method }), "makeMethodFn");
737
+ const makeSseFn = /* @__PURE__ */ __name((method) => async (options) => {
738
+ const { opts, url } = await beforeRequest(options);
739
+ return createSseClient({
740
+ ...opts,
741
+ body: opts.body,
742
+ method,
743
+ onRequest: /* @__PURE__ */ __name(async (url2, init) => {
744
+ let request2 = new Request(url2, init);
745
+ for (const fn of interceptors.request.fns) {
746
+ if (fn) {
747
+ request2 = await fn(request2, opts);
748
+ }
749
+ }
750
+ return request2;
751
+ }, "onRequest"),
752
+ serializedBody: getValidRequestBody(opts),
753
+ url
754
+ });
755
+ }, "makeSseFn");
756
+ const _buildUrl = /* @__PURE__ */ __name((options) => buildUrl({ ..._config, ...options }), "_buildUrl");
757
+ return {
758
+ buildUrl: _buildUrl,
759
+ connect: makeMethodFn("CONNECT"),
760
+ delete: makeMethodFn("DELETE"),
761
+ get: makeMethodFn("GET"),
762
+ getConfig,
763
+ head: makeMethodFn("HEAD"),
764
+ interceptors,
765
+ options: makeMethodFn("OPTIONS"),
766
+ patch: makeMethodFn("PATCH"),
767
+ post: makeMethodFn("POST"),
768
+ put: makeMethodFn("PUT"),
769
+ request,
770
+ setConfig,
771
+ sse: {
772
+ connect: makeSseFn("CONNECT"),
773
+ delete: makeSseFn("DELETE"),
774
+ get: makeSseFn("GET"),
775
+ head: makeSseFn("HEAD"),
776
+ options: makeSseFn("OPTIONS"),
777
+ patch: makeSseFn("PATCH"),
778
+ post: makeSseFn("POST"),
779
+ put: makeSseFn("PUT"),
780
+ trace: makeSseFn("TRACE")
781
+ },
782
+ trace: makeMethodFn("TRACE")
783
+ };
784
+ }, "createClient");
785
+
786
+ // src/generated/client.gen.ts
787
+ var client = createClient(createConfig({ baseUrl: "https://api.postpeer.dev" }));
788
+
789
+ // src/generated/sdk.gen.ts
790
+ var HeyApiClient = class {
791
+ static {
792
+ __name(this, "HeyApiClient");
793
+ }
794
+ client;
795
+ constructor(args) {
796
+ this.client = args?.client ?? client;
797
+ }
798
+ };
799
+ var HeyApiRegistry = class {
800
+ static {
801
+ __name(this, "HeyApiRegistry");
802
+ }
803
+ defaultKey = "default";
804
+ instances = /* @__PURE__ */ new Map();
805
+ get(key) {
806
+ const instance = this.instances.get(key ?? this.defaultKey);
807
+ if (!instance) {
808
+ throw new Error(`No SDK client found. Create one with "new PostPeerApi()" to fix this error.`);
809
+ }
810
+ return instance;
811
+ }
812
+ set(value, key) {
813
+ this.instances.set(key ?? this.defaultKey, value);
814
+ }
815
+ };
816
+ var Health = class extends HeyApiClient {
817
+ static {
818
+ __name(this, "Health");
819
+ }
820
+ /**
821
+ * Health check
822
+ */
823
+ check(options) {
824
+ return (options?.client ?? this.client).get({ url: "/v1/health", ...options });
825
+ }
826
+ /**
827
+ * Verify that the provided access key is valid
828
+ */
829
+ verifyAccessKey(options) {
830
+ return (options?.client ?? this.client).get({
831
+ security: [{ name: "x-access-key", type: "apiKey" }],
832
+ url: "/v1/health/auth",
833
+ ...options
834
+ });
835
+ }
836
+ };
837
+ var Linkedin = class extends HeyApiClient {
838
+ static {
839
+ __name(this, "Linkedin");
840
+ }
841
+ /**
842
+ * Get pending LinkedIn account choices for headless mode
843
+ *
844
+ * Use only when starting LinkedIn OAuth with headless=true and the callback redirects to your redirectUri with status=selection_required and selectionToken. Returns the personal profile and organization pages available for the user to choose from.
845
+ */
846
+ getSelection(options) {
847
+ return (options.client ?? this.client).get({ url: "/v1/connect/linkedin/selection/{token}", ...options });
848
+ }
849
+ /**
850
+ * Save selected LinkedIn accounts for headless mode
851
+ *
852
+ * Use only after GET /v1/connect/linkedin/selection/:token in a headless LinkedIn connect flow. Saves the selected personal profile and/or organization pages, then invalidates the one-time selection token.
853
+ */
854
+ submitSelection(options) {
855
+ return (options.client ?? this.client).post({
856
+ url: "/v1/connect/linkedin/selection/{token}",
857
+ ...options,
858
+ headers: {
859
+ "Content-Type": "application/json",
860
+ ...options.headers
861
+ }
862
+ });
863
+ }
864
+ };
865
+ var Integrations = class extends HeyApiClient {
866
+ static {
867
+ __name(this, "Integrations");
868
+ }
869
+ /**
870
+ * List integrations connected to this project
871
+ */
872
+ list(options) {
873
+ return (options?.client ?? this.client).get({
874
+ security: [{ name: "x-access-key", type: "apiKey" }],
875
+ url: "/v1/connect/integrations",
876
+ ...options
877
+ });
878
+ }
879
+ /**
880
+ * Disconnect a platform integration
881
+ */
882
+ disconnect(options) {
883
+ return (options.client ?? this.client).delete({
884
+ security: [{ name: "x-access-key", type: "apiKey" }],
885
+ url: "/v1/connect/integrations/{id}",
886
+ ...options
887
+ });
888
+ }
889
+ };
890
+ var Connect = class extends HeyApiClient {
891
+ static {
892
+ __name(this, "Connect");
893
+ }
894
+ /**
895
+ * Get OAuth URL for a platform
896
+ *
897
+ * Initiates an OAuth connection flow. By default, PostPeer hosts any required account selection UI and then returns the user to redirectUri. For LinkedIn custom account-selection UI, pass headless=true; if selection is required, the callback redirects to redirectUri with status=selection_required, platform=linkedin, and selectionToken.
898
+ */
899
+ getOAuthUrl(options) {
900
+ return (options.client ?? this.client).get({
901
+ security: [{ name: "x-access-key", type: "apiKey" }],
902
+ url: "/v1/connect/{platform}",
903
+ ...options
904
+ });
905
+ }
906
+ /**
907
+ * Connect a Bluesky account via app password
908
+ *
909
+ * Bluesky has no OAuth redirect. Have the user generate an app password at https://bsky.app/settings/app-passwords, then submit it here.
910
+ */
911
+ bluesky(options) {
912
+ return (options.client ?? this.client).post({
913
+ security: [{ name: "x-access-key", type: "apiKey" }],
914
+ url: "/v1/connect/bluesky/auth",
915
+ ...options,
916
+ headers: {
917
+ "Content-Type": "application/json",
918
+ ...options.headers
919
+ }
920
+ });
921
+ }
922
+ _linkedin;
923
+ get linkedin() {
924
+ return this._linkedin ??= new Linkedin({ client: this.client });
925
+ }
926
+ _integrations;
927
+ get integrations() {
928
+ return this._integrations ??= new Integrations({ client: this.client });
929
+ }
930
+ };
931
+ var Profiles = class extends HeyApiClient {
932
+ static {
933
+ __name(this, "Profiles");
934
+ }
935
+ /**
936
+ * List profiles for this project
937
+ */
938
+ list(options) {
939
+ return (options?.client ?? this.client).get({
940
+ security: [{ name: "x-access-key", type: "apiKey" }],
941
+ url: "/v1/profiles/",
942
+ ...options
943
+ });
944
+ }
945
+ /**
946
+ * Create a profile
947
+ *
948
+ * Profiles group integrations under a label. Pass the returned `id` as `profileId` when calling /v1/connect/:platform to bind the resulting integration to this profile.
949
+ */
950
+ create(options) {
951
+ return (options.client ?? this.client).post({
952
+ security: [{ name: "x-access-key", type: "apiKey" }],
953
+ url: "/v1/profiles/",
954
+ ...options,
955
+ headers: {
956
+ "Content-Type": "application/json",
957
+ ...options.headers
958
+ }
959
+ });
960
+ }
961
+ /**
962
+ * Delete a profile
963
+ *
964
+ * Soft-deletes the profile. Existing integrations bound to it keep their profileId — they are not orphaned, but listing /v1/profiles will no longer surface this row.
965
+ */
966
+ delete(options) {
967
+ return (options.client ?? this.client).delete({
968
+ security: [{ name: "x-access-key", type: "apiKey" }],
969
+ url: "/v1/profiles/{id}",
970
+ ...options
971
+ });
972
+ }
973
+ /**
974
+ * Get a single profile
975
+ */
976
+ get(options) {
977
+ return (options.client ?? this.client).get({
978
+ security: [{ name: "x-access-key", type: "apiKey" }],
979
+ url: "/v1/profiles/{id}",
980
+ ...options
981
+ });
982
+ }
983
+ /**
984
+ * Update a profile
985
+ */
986
+ update(options) {
987
+ return (options.client ?? this.client).patch({
988
+ security: [{ name: "x-access-key", type: "apiKey" }],
989
+ url: "/v1/profiles/{id}",
990
+ ...options,
991
+ headers: {
992
+ "Content-Type": "application/json",
993
+ ...options.headers
994
+ }
995
+ });
996
+ }
997
+ };
998
+ var Apps = class extends HeyApiClient {
999
+ static {
1000
+ __name(this, "Apps");
1001
+ }
1002
+ /**
1003
+ * List registered OAuth apps for this project
1004
+ */
1005
+ list(options) {
1006
+ return (options?.client ?? this.client).get({
1007
+ security: [{ name: "x-access-key", type: "apiKey" }],
1008
+ url: "/v1/apps/",
1009
+ ...options
1010
+ });
1011
+ }
1012
+ /**
1013
+ * Register your own OAuth app (Bring Your Own Keys)
1014
+ *
1015
+ * Store the client credentials of your own OAuth app for a platform. Pass the returned `id` as `appId` when calling /v1/connect/:platform to connect accounts under it.
1016
+ */
1017
+ create(options) {
1018
+ return (options.client ?? this.client).post({
1019
+ security: [{ name: "x-access-key", type: "apiKey" }],
1020
+ url: "/v1/apps/",
1021
+ ...options,
1022
+ headers: {
1023
+ "Content-Type": "application/json",
1024
+ ...options.headers
1025
+ }
1026
+ });
1027
+ }
1028
+ /**
1029
+ * Delete an OAuth app
1030
+ *
1031
+ * Deletes the app. Blocked with 409 while active integrations are still connected under it — those integrations rely on the app for token refresh. Disconnect or reconnect them first.
1032
+ */
1033
+ delete(options) {
1034
+ return (options.client ?? this.client).delete({
1035
+ security: [{ name: "x-access-key", type: "apiKey" }],
1036
+ url: "/v1/apps/{id}",
1037
+ ...options
1038
+ });
1039
+ }
1040
+ /**
1041
+ * Get a single OAuth app
1042
+ */
1043
+ get(options) {
1044
+ return (options.client ?? this.client).get({
1045
+ security: [{ name: "x-access-key", type: "apiKey" }],
1046
+ url: "/v1/apps/{id}",
1047
+ ...options
1048
+ });
1049
+ }
1050
+ /**
1051
+ * Update an OAuth app
1052
+ *
1053
+ * Change the name, image, or rotate the client secret. The clientId and platform are immutable: a refresh token is bound to the clientId that issued it, so changing the app would brick existing integrations — create a new OAuth app and reconnect instead.
1054
+ */
1055
+ update(options) {
1056
+ return (options.client ?? this.client).patch({
1057
+ security: [{ name: "x-access-key", type: "apiKey" }],
1058
+ url: "/v1/apps/{id}",
1059
+ ...options,
1060
+ headers: {
1061
+ "Content-Type": "application/json",
1062
+ ...options.headers
1063
+ }
1064
+ });
1065
+ }
1066
+ };
1067
+ var Notifications = class extends HeyApiClient {
1068
+ static {
1069
+ __name(this, "Notifications");
1070
+ }
1071
+ /**
1072
+ * Test a notification destination before saving it
1073
+ */
1074
+ test(options) {
1075
+ return (options.client ?? this.client).post({
1076
+ security: [{ name: "x-access-key", type: "apiKey" }],
1077
+ url: "/v1/notifications/test",
1078
+ ...options,
1079
+ headers: {
1080
+ "Content-Type": "application/json",
1081
+ ...options.headers
1082
+ }
1083
+ });
1084
+ }
1085
+ /**
1086
+ * List notification subscriptions
1087
+ */
1088
+ list(options) {
1089
+ return (options?.client ?? this.client).get({
1090
+ security: [{ name: "x-access-key", type: "apiKey" }],
1091
+ url: "/v1/notifications/",
1092
+ ...options
1093
+ });
1094
+ }
1095
+ /**
1096
+ * Create a notification subscription
1097
+ */
1098
+ create(options) {
1099
+ return (options.client ?? this.client).post({
1100
+ security: [{ name: "x-access-key", type: "apiKey" }],
1101
+ url: "/v1/notifications/",
1102
+ ...options,
1103
+ headers: {
1104
+ "Content-Type": "application/json",
1105
+ ...options.headers
1106
+ }
1107
+ });
1108
+ }
1109
+ /**
1110
+ * Delete a notification subscription
1111
+ */
1112
+ delete(options) {
1113
+ return (options.client ?? this.client).delete({
1114
+ security: [{ name: "x-access-key", type: "apiKey" }],
1115
+ url: "/v1/notifications/{id}",
1116
+ ...options
1117
+ });
1118
+ }
1119
+ /**
1120
+ * Get a notification subscription
1121
+ */
1122
+ get(options) {
1123
+ return (options.client ?? this.client).get({
1124
+ security: [{ name: "x-access-key", type: "apiKey" }],
1125
+ url: "/v1/notifications/{id}",
1126
+ ...options
1127
+ });
1128
+ }
1129
+ /**
1130
+ * Update a notification subscription
1131
+ */
1132
+ update(options) {
1133
+ return (options.client ?? this.client).patch({
1134
+ security: [{ name: "x-access-key", type: "apiKey" }],
1135
+ url: "/v1/notifications/{id}",
1136
+ ...options,
1137
+ headers: {
1138
+ "Content-Type": "application/json",
1139
+ ...options.headers
1140
+ }
1141
+ });
1142
+ }
1143
+ };
1144
+ var Platforms = class extends HeyApiClient {
1145
+ static {
1146
+ __name(this, "Platforms");
1147
+ }
1148
+ /**
1149
+ * List available platforms and their status
1150
+ */
1151
+ list(options) {
1152
+ return (options?.client ?? this.client).get({
1153
+ security: [{ name: "x-access-key", type: "apiKey" }],
1154
+ url: "/v1/platforms",
1155
+ ...options
1156
+ });
1157
+ }
1158
+ };
1159
+ var Scheduled = class extends HeyApiClient {
1160
+ static {
1161
+ __name(this, "Scheduled");
1162
+ }
1163
+ /**
1164
+ * List all scheduled posts
1165
+ *
1166
+ * Returns a paginated list of scheduled posts. Use `limit` + `offset` to page through the results.
1167
+ */
1168
+ list(options) {
1169
+ return (options?.client ?? this.client).get({
1170
+ security: [{ name: "x-access-key", type: "apiKey" }],
1171
+ url: "/v1/posts/scheduled/",
1172
+ ...options
1173
+ });
1174
+ }
1175
+ /**
1176
+ * Cancel a scheduled post (moves it back to draft)
1177
+ */
1178
+ cancel(options) {
1179
+ return (options.client ?? this.client).delete({
1180
+ security: [{ name: "x-access-key", type: "apiKey" }],
1181
+ url: "/v1/posts/scheduled/{postId}",
1182
+ ...options
1183
+ });
1184
+ }
1185
+ /**
1186
+ * Reschedule a post to a new time
1187
+ */
1188
+ reschedule(options) {
1189
+ return (options.client ?? this.client).patch({
1190
+ security: [{ name: "x-access-key", type: "apiKey" }],
1191
+ url: "/v1/posts/scheduled/{postId}",
1192
+ ...options,
1193
+ headers: {
1194
+ "Content-Type": "application/json",
1195
+ ...options.headers
1196
+ }
1197
+ });
1198
+ }
1199
+ };
1200
+ var Posts = class extends HeyApiClient {
1201
+ static {
1202
+ __name(this, "Posts");
1203
+ }
1204
+ /**
1205
+ * List all posts for the project
1206
+ *
1207
+ * Returns a paginated list of posts. Filter by status, platform (OR logic), and date ranges. Published posts include platformPostUrl per platform.
1208
+ */
1209
+ list(options) {
1210
+ return (options?.client ?? this.client).get({
1211
+ security: [{ name: "x-access-key", type: "apiKey" }],
1212
+ url: "/v1/posts/",
1213
+ ...options
1214
+ });
1215
+ }
1216
+ /**
1217
+ * Publish a post to one or more social media platforms
1218
+ */
1219
+ create(options) {
1220
+ return (options.client ?? this.client).post({
1221
+ security: [{ name: "x-access-key", type: "apiKey" }],
1222
+ url: "/v1/posts/",
1223
+ ...options,
1224
+ headers: {
1225
+ "Content-Type": "application/json",
1226
+ ...options.headers
1227
+ }
1228
+ });
1229
+ }
1230
+ /**
1231
+ * Delete a post by ID
1232
+ */
1233
+ delete(options) {
1234
+ return (options.client ?? this.client).delete({
1235
+ security: [{ name: "x-access-key", type: "apiKey" }],
1236
+ url: "/v1/posts/{postId}",
1237
+ ...options
1238
+ });
1239
+ }
1240
+ /**
1241
+ * Get a single post by ID
1242
+ */
1243
+ get(options) {
1244
+ return (options.client ?? this.client).get({
1245
+ security: [{ name: "x-access-key", type: "apiKey" }],
1246
+ url: "/v1/posts/{postId}",
1247
+ ...options
1248
+ });
1249
+ }
1250
+ _scheduled;
1251
+ get scheduled() {
1252
+ return this._scheduled ??= new Scheduled({ client: this.client });
1253
+ }
1254
+ };
1255
+ var Media = class extends HeyApiClient {
1256
+ static {
1257
+ __name(this, "Media");
1258
+ }
1259
+ /**
1260
+ * Get a presigned S3 URL to upload a media file
1261
+ */
1262
+ upload(options) {
1263
+ return (options.client ?? this.client).post({
1264
+ security: [{ name: "x-access-key", type: "apiKey" }],
1265
+ url: "/v1/media/upload",
1266
+ ...options,
1267
+ headers: {
1268
+ "Content-Type": "application/json",
1269
+ ...options.headers
1270
+ }
1271
+ });
1272
+ }
1273
+ };
1274
+ var Analytics = class extends HeyApiClient {
1275
+ static {
1276
+ __name(this, "Analytics");
1277
+ }
1278
+ /**
1279
+ * Get post analytics
1280
+ *
1281
+ * With postId, returns analytics for a single post. Without postId, returns a paginated list of published posts with analytics. Accepts both PostPeer post IDs and external platform post IDs (auto-resolved). fromDate defaults to 90 days ago if omitted, max range 366 days. Each call costs 1 credit.
1282
+ */
1283
+ get(options) {
1284
+ return (options?.client ?? this.client).get({
1285
+ security: [{ name: "x-access-key", type: "apiKey" }],
1286
+ url: "/v1/analytics/",
1287
+ ...options
1288
+ });
1289
+ }
1290
+ };
1291
+ var Usage = class extends HeyApiClient {
1292
+ static {
1293
+ __name(this, "Usage");
1294
+ }
1295
+ /**
1296
+ * Get credit usage
1297
+ *
1298
+ * Returns credit usage history for the project. Without filters, returns project-level totals. Add `profileId` to scope to a specific profile, or `integrationId` to scope to a specific connected account. Use `from`/`to` (YYYY-MM) to slice the history. Each entry contains the monthly credit count and a per-platform breakdown.
1299
+ */
1300
+ get(options) {
1301
+ return (options?.client ?? this.client).get({
1302
+ security: [{ name: "x-access-key", type: "apiKey" }],
1303
+ url: "/v1/usage/",
1304
+ ...options
1305
+ });
1306
+ }
1307
+ };
1308
+ var Pinterest = class extends HeyApiClient {
1309
+ static {
1310
+ __name(this, "Pinterest");
1311
+ }
1312
+ /**
1313
+ * List Pinterest boards for a connected account
1314
+ */
1315
+ getBoards(options) {
1316
+ return (options?.client ?? this.client).get({
1317
+ security: [{ name: "x-access-key", type: "apiKey" }],
1318
+ url: "/v1/pinterest/boards",
1319
+ ...options
1320
+ });
1321
+ }
1322
+ };
1323
+ var Tiktok = class extends HeyApiClient {
1324
+ static {
1325
+ __name(this, "Tiktok");
1326
+ }
1327
+ /**
1328
+ * Fetch TikTok creator info for a connected account
1329
+ *
1330
+ * Proxies TikTok's /v2/post/publish/creator_info/query/ endpoint. Use the returned `privacyLevelOptions`, `commentDisabled`, `duetDisabled`, `stitchDisabled`, and `maxVideoPostDurationSec` to build a compliant "Post to TikTok" UX.
1331
+ */
1332
+ getCreatorInfo(options) {
1333
+ return (options?.client ?? this.client).get({
1334
+ security: [{ name: "x-access-key", type: "apiKey" }],
1335
+ url: "/v1/tiktok/creator-info",
1336
+ ...options
1337
+ });
1338
+ }
1339
+ };
1340
+ var Ai = class extends HeyApiClient {
1341
+ static {
1342
+ __name(this, "Ai");
1343
+ }
1344
+ /**
1345
+ * Generate a social media caption from a description
1346
+ *
1347
+ * Generates a caption tailored to the platforms you'll post to. Costs 2 credits per successful generation. Failed calls do not deduct credits.
1348
+ */
1349
+ write(options) {
1350
+ return (options.client ?? this.client).post({
1351
+ security: [{ name: "x-access-key", type: "apiKey" }],
1352
+ url: "/v1/ai/write",
1353
+ ...options,
1354
+ headers: {
1355
+ "Content-Type": "application/json",
1356
+ ...options.headers
1357
+ }
1358
+ });
1359
+ }
1360
+ /**
1361
+ * Generate a social media image from a description
1362
+ *
1363
+ * Generates a square or vertical image suitable for social media. Costs 10 credits per successful generation. Failed calls do not deduct credits.
1364
+ */
1365
+ generateImage(options) {
1366
+ return (options.client ?? this.client).post({
1367
+ security: [{ name: "x-access-key", type: "apiKey" }],
1368
+ url: "/v1/ai/image",
1369
+ ...options,
1370
+ headers: {
1371
+ "Content-Type": "application/json",
1372
+ ...options.headers
1373
+ }
1374
+ });
1375
+ }
1376
+ };
1377
+ var PostPeerApi = class _PostPeerApi extends HeyApiClient {
1378
+ static {
1379
+ __name(this, "PostPeerApi");
1380
+ }
1381
+ static __registry = new HeyApiRegistry();
1382
+ constructor(args) {
1383
+ super(args);
1384
+ _PostPeerApi.__registry.set(this, args?.key);
1385
+ }
1386
+ _health;
1387
+ get health() {
1388
+ return this._health ??= new Health({ client: this.client });
1389
+ }
1390
+ _connect;
1391
+ get connect() {
1392
+ return this._connect ??= new Connect({ client: this.client });
1393
+ }
1394
+ _profiles;
1395
+ get profiles() {
1396
+ return this._profiles ??= new Profiles({ client: this.client });
1397
+ }
1398
+ _apps;
1399
+ get apps() {
1400
+ return this._apps ??= new Apps({ client: this.client });
1401
+ }
1402
+ _notifications;
1403
+ get notifications() {
1404
+ return this._notifications ??= new Notifications({ client: this.client });
1405
+ }
1406
+ _platforms;
1407
+ get platforms() {
1408
+ return this._platforms ??= new Platforms({ client: this.client });
1409
+ }
1410
+ _posts;
1411
+ get posts() {
1412
+ return this._posts ??= new Posts({ client: this.client });
1413
+ }
1414
+ _media;
1415
+ get media() {
1416
+ return this._media ??= new Media({ client: this.client });
1417
+ }
1418
+ _analytics;
1419
+ get analytics() {
1420
+ return this._analytics ??= new Analytics({ client: this.client });
1421
+ }
1422
+ _usage;
1423
+ get usage() {
1424
+ return this._usage ??= new Usage({ client: this.client });
1425
+ }
1426
+ _pinterest;
1427
+ get pinterest() {
1428
+ return this._pinterest ??= new Pinterest({ client: this.client });
1429
+ }
1430
+ _tiktok;
1431
+ get tiktok() {
1432
+ return this._tiktok ??= new Tiktok({ client: this.client });
1433
+ }
1434
+ _ai;
1435
+ get ai() {
1436
+ return this._ai ??= new Ai({ client: this.client });
1437
+ }
1438
+ };
1439
+
1440
+ // src/errors.ts
1441
+ var PostPeerError = class extends Error {
1442
+ static {
1443
+ __name(this, "PostPeerError");
1444
+ }
1445
+ constructor(message, options) {
1446
+ super(message, options);
1447
+ this.name = "PostPeerError";
1448
+ }
1449
+ };
1450
+ var APIError = class extends PostPeerError {
1451
+ static {
1452
+ __name(this, "APIError");
1453
+ }
1454
+ status;
1455
+ code;
1456
+ details;
1457
+ requestId;
1458
+ headers;
1459
+ constructor(status, message, options = {}) {
1460
+ super(message, { cause: options.cause });
1461
+ this.name = "APIError";
1462
+ this.status = status;
1463
+ this.code = options.code;
1464
+ this.details = options.details;
1465
+ this.headers = options.headers ?? new Headers();
1466
+ this.requestId = options.requestId;
1467
+ }
1468
+ };
1469
+ var BadRequestError = class extends APIError {
1470
+ static {
1471
+ __name(this, "BadRequestError");
1472
+ }
1473
+ };
1474
+ var AuthenticationError = class extends APIError {
1475
+ static {
1476
+ __name(this, "AuthenticationError");
1477
+ }
1478
+ };
1479
+ var PermissionDeniedError = class extends APIError {
1480
+ static {
1481
+ __name(this, "PermissionDeniedError");
1482
+ }
1483
+ };
1484
+ var NotFoundError = class extends APIError {
1485
+ static {
1486
+ __name(this, "NotFoundError");
1487
+ }
1488
+ };
1489
+ var ConflictError = class extends APIError {
1490
+ static {
1491
+ __name(this, "ConflictError");
1492
+ }
1493
+ };
1494
+ var UnprocessableEntityError = class extends APIError {
1495
+ static {
1496
+ __name(this, "UnprocessableEntityError");
1497
+ }
1498
+ };
1499
+ var RateLimitError = class extends APIError {
1500
+ static {
1501
+ __name(this, "RateLimitError");
1502
+ }
1503
+ };
1504
+ var InternalServerError = class extends APIError {
1505
+ static {
1506
+ __name(this, "InternalServerError");
1507
+ }
1508
+ };
1509
+ var APIConnectionError = class extends PostPeerError {
1510
+ static {
1511
+ __name(this, "APIConnectionError");
1512
+ }
1513
+ constructor(message = "Connection failed.", options) {
1514
+ super(message, options);
1515
+ this.name = "APIConnectionError";
1516
+ }
1517
+ };
1518
+ var APIConnectionTimeoutError = class extends APIConnectionError {
1519
+ static {
1520
+ __name(this, "APIConnectionTimeoutError");
1521
+ }
1522
+ constructor(options) {
1523
+ super("Request timed out.", options);
1524
+ this.name = "APIConnectionTimeoutError";
1525
+ }
1526
+ };
1527
+ var APIUserAbortError = class extends APIConnectionError {
1528
+ static {
1529
+ __name(this, "APIUserAbortError");
1530
+ }
1531
+ constructor(options) {
1532
+ super("Request was aborted.", options);
1533
+ this.name = "APIUserAbortError";
1534
+ }
1535
+ };
1536
+ var errorMessage = /* @__PURE__ */ __name((body, response) => {
1537
+ if (typeof body === "string" && body) return body;
1538
+ if (body && typeof body === "object") {
1539
+ const value = body;
1540
+ if (typeof value["message"] === "string") return value["message"];
1541
+ if (typeof value["error"] === "string") return value["error"];
1542
+ }
1543
+ return response.statusText || `Request failed with status ${response.status}.`;
1544
+ }, "errorMessage");
1545
+ var errorCode = /* @__PURE__ */ __name((body) => {
1546
+ if (!body || typeof body !== "object") return void 0;
1547
+ const code = body["code"];
1548
+ return typeof code === "string" ? code : void 0;
1549
+ }, "errorCode");
1550
+ var createAPIError = /* @__PURE__ */ __name((response, body) => {
1551
+ const options = {
1552
+ code: errorCode(body),
1553
+ details: body,
1554
+ headers: response.headers,
1555
+ requestId: response.headers.get("x-request-id") ?? void 0
1556
+ };
1557
+ const message = errorMessage(body, response);
1558
+ switch (response.status) {
1559
+ case 400:
1560
+ return new BadRequestError(response.status, message, options);
1561
+ case 401:
1562
+ return new AuthenticationError(response.status, message, options);
1563
+ case 403:
1564
+ return new PermissionDeniedError(response.status, message, options);
1565
+ case 404:
1566
+ return new NotFoundError(response.status, message, options);
1567
+ case 409:
1568
+ return new ConflictError(response.status, message, options);
1569
+ case 422:
1570
+ return new UnprocessableEntityError(response.status, message, options);
1571
+ case 429:
1572
+ return new RateLimitError(response.status, message, options);
1573
+ default:
1574
+ return response.status >= 500 ? new InternalServerError(response.status, message, options) : new APIError(response.status, message, options);
1575
+ }
1576
+ }, "createAPIError");
1577
+
1578
+ // src/version.ts
1579
+ var VERSION = "0.8.0";
1580
+
1581
+ // src/client.ts
1582
+ var DEFAULT_BASE_URL = "https://api.postpeer.dev";
1583
+ var DEFAULT_TIMEOUT = 6e4;
1584
+ var DEFAULT_MAX_RETRIES = 2;
1585
+ var RETRYABLE_STATUS_CODES = /* @__PURE__ */ new Set([408, 409, 429]);
1586
+ var isRetryableResponse = /* @__PURE__ */ __name((response) => RETRYABLE_STATUS_CODES.has(response.status) || response.status >= 500, "isRetryableResponse");
1587
+ var retryDelay = /* @__PURE__ */ __name((attempt) => new Promise((resolve) => setTimeout(resolve, Math.min(250 * 2 ** attempt, 2e3))), "retryDelay");
1588
+ var validateNonNegativeInteger = /* @__PURE__ */ __name((name, value) => {
1589
+ if (!Number.isInteger(value) || value < 0) {
1590
+ throw new PostPeerError(`${name} must be a non-negative integer.`);
1591
+ }
1592
+ }, "validateNonNegativeInteger");
1593
+ var createPostPeerFetch = /* @__PURE__ */ __name(({
1594
+ fetchImplementation,
1595
+ maxRetries,
1596
+ timeout
1597
+ }) => {
1598
+ return async (input, init) => {
1599
+ const template = input instanceof Request ? input : new Request(input, init);
1600
+ for (let attempt = 0; attempt <= maxRetries; attempt += 1) {
1601
+ const timeoutController = new AbortController();
1602
+ const timer = setTimeout(
1603
+ () => timeoutController.abort(new DOMException("Request timed out", "TimeoutError")),
1604
+ timeout
1605
+ );
1606
+ const signal = AbortSignal.any([template.signal, timeoutController.signal]);
1607
+ try {
1608
+ const response = await fetchImplementation(new Request(template.clone(), { signal }));
1609
+ if (attempt < maxRetries && isRetryableResponse(response)) {
1610
+ await retryDelay(attempt);
1611
+ continue;
1612
+ }
1613
+ return response;
1614
+ } catch (error) {
1615
+ if (template.signal.aborted) {
1616
+ throw new APIUserAbortError({ cause: error });
1617
+ }
1618
+ if (timeoutController.signal.aborted) {
1619
+ throw new APIConnectionTimeoutError({ cause: error });
1620
+ }
1621
+ if (attempt >= maxRetries) {
1622
+ throw new APIConnectionError("Connection failed.", { cause: error });
1623
+ }
1624
+ await retryDelay(attempt);
1625
+ } finally {
1626
+ clearTimeout(timer);
1627
+ }
1628
+ }
1629
+ throw new APIConnectionError("Connection failed.");
1630
+ };
1631
+ }, "createPostPeerFetch");
1632
+ var PostPeer = class _PostPeer extends PostPeerApi {
1633
+ static {
1634
+ __name(this, "PostPeer");
1635
+ }
1636
+ static DEFAULT_TIMEOUT = DEFAULT_TIMEOUT;
1637
+ static DEFAULT_MAX_RETRIES = DEFAULT_MAX_RETRIES;
1638
+ apiKey;
1639
+ baseURL;
1640
+ timeout;
1641
+ maxRetries;
1642
+ rawClient;
1643
+ #options;
1644
+ constructor(options = {}) {
1645
+ const apiKey = options.apiKey ?? process.env["POSTPEER_API_KEY"];
1646
+ if (!apiKey) {
1647
+ throw new PostPeerError(
1648
+ "The POSTPEER_API_KEY environment variable is missing or empty. Set it or pass new PostPeer({ apiKey: 'your-key' })."
1649
+ );
1650
+ }
1651
+ const baseURL = options.baseURL ?? DEFAULT_BASE_URL;
1652
+ const timeout = options.timeout ?? DEFAULT_TIMEOUT;
1653
+ const maxRetries = options.maxRetries ?? DEFAULT_MAX_RETRIES;
1654
+ validateNonNegativeInteger("timeout", timeout);
1655
+ validateNonNegativeInteger("maxRetries", maxRetries);
1656
+ const fetchImplementation = options.fetch ?? globalThis.fetch;
1657
+ if (!fetchImplementation) {
1658
+ throw new PostPeerError("No Fetch API implementation is available. Pass one with the fetch option.");
1659
+ }
1660
+ const client2 = createClient({
1661
+ auth: apiKey,
1662
+ baseUrl: baseURL,
1663
+ fetch: createPostPeerFetch({ fetchImplementation, maxRetries, timeout }),
1664
+ headers: {
1665
+ "User-Agent": `postpeer-node/${VERSION}`,
1666
+ ...options.defaultHeaders
1667
+ },
1668
+ throwOnError: true
1669
+ });
1670
+ client2.interceptors.error.use((error, response) => {
1671
+ if (error instanceof PostPeerError) return error;
1672
+ if (!response) return new APIConnectionError("Connection failed.", { cause: error });
1673
+ return createAPIError(response, error);
1674
+ });
1675
+ super({ client: client2 });
1676
+ this.apiKey = apiKey;
1677
+ this.baseURL = baseURL;
1678
+ this.timeout = timeout;
1679
+ this.maxRetries = maxRetries;
1680
+ this.rawClient = client2;
1681
+ this.#options = { ...options, apiKey, baseURL, timeout, maxRetries };
1682
+ }
1683
+ withOptions(options) {
1684
+ return new _PostPeer({ ...this.#options, ...options });
1685
+ }
1686
+ };
1687
+
1688
+ export { APIConnectionError, APIConnectionTimeoutError, APIError, APIUserAbortError, AuthenticationError, BadRequestError, ConflictError, InternalServerError, NotFoundError, PermissionDeniedError, PostPeer, PostPeerError, RateLimitError, UnprocessableEntityError, VERSION, PostPeer as default };
1689
+ //# sourceMappingURL=index.js.map
1690
+ //# sourceMappingURL=index.js.map