@tabstack/sdk 1.0.4 → 2.0.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 (513) hide show
  1. package/CHANGELOG.md +90 -0
  2. package/LICENSE +22 -11
  3. package/README.md +276 -377
  4. package/api-promise.d.mts +2 -0
  5. package/api-promise.d.mts.map +1 -0
  6. package/api-promise.d.ts +2 -0
  7. package/api-promise.d.ts.map +1 -0
  8. package/api-promise.js +6 -0
  9. package/api-promise.js.map +1 -0
  10. package/api-promise.mjs +2 -0
  11. package/api-promise.mjs.map +1 -0
  12. package/client.d.mts +186 -0
  13. package/client.d.mts.map +1 -0
  14. package/client.d.ts +186 -0
  15. package/client.d.ts.map +1 -0
  16. package/client.js +467 -0
  17. package/client.js.map +1 -0
  18. package/client.mjs +463 -0
  19. package/client.mjs.map +1 -0
  20. package/core/api-promise.d.mts +46 -0
  21. package/core/api-promise.d.mts.map +1 -0
  22. package/core/api-promise.d.ts +46 -0
  23. package/core/api-promise.d.ts.map +1 -0
  24. package/core/api-promise.js +74 -0
  25. package/core/api-promise.js.map +1 -0
  26. package/core/api-promise.mjs +70 -0
  27. package/core/api-promise.mjs.map +1 -0
  28. package/core/error.d.mts +46 -0
  29. package/core/error.d.mts.map +1 -0
  30. package/core/error.d.ts +46 -0
  31. package/core/error.d.ts.map +1 -0
  32. package/core/error.js +113 -0
  33. package/core/error.js.map +1 -0
  34. package/core/error.mjs +97 -0
  35. package/core/error.mjs.map +1 -0
  36. package/core/resource.d.mts +6 -0
  37. package/core/resource.d.mts.map +1 -0
  38. package/core/resource.d.ts +6 -0
  39. package/core/resource.d.ts.map +1 -0
  40. package/core/resource.js +11 -0
  41. package/core/resource.js.map +1 -0
  42. package/core/resource.mjs +7 -0
  43. package/core/resource.mjs.map +1 -0
  44. package/core/streaming.d.mts +33 -0
  45. package/core/streaming.d.mts.map +1 -0
  46. package/core/streaming.d.ts +33 -0
  47. package/core/streaming.d.ts.map +1 -0
  48. package/core/streaming.js +263 -0
  49. package/core/streaming.js.map +1 -0
  50. package/core/streaming.mjs +258 -0
  51. package/core/streaming.mjs.map +1 -0
  52. package/core/uploads.d.mts +3 -0
  53. package/core/uploads.d.mts.map +1 -0
  54. package/core/uploads.d.ts +3 -0
  55. package/core/uploads.d.ts.map +1 -0
  56. package/core/uploads.js +6 -0
  57. package/core/uploads.js.map +1 -0
  58. package/core/uploads.mjs +2 -0
  59. package/core/uploads.mjs.map +1 -0
  60. package/error.d.mts +2 -0
  61. package/error.d.mts.map +1 -0
  62. package/error.d.ts +2 -0
  63. package/error.d.ts.map +1 -0
  64. package/error.js +6 -0
  65. package/error.js.map +1 -0
  66. package/error.mjs +2 -0
  67. package/error.mjs.map +1 -0
  68. package/index.d.mts +6 -0
  69. package/index.d.mts.map +1 -0
  70. package/index.d.ts +6 -0
  71. package/index.d.ts.map +1 -0
  72. package/index.js +30 -0
  73. package/index.js.map +1 -0
  74. package/index.mjs +7 -0
  75. package/index.mjs.map +1 -0
  76. package/internal/builtin-types.d.mts +73 -0
  77. package/internal/builtin-types.d.mts.map +1 -0
  78. package/internal/builtin-types.d.ts +73 -0
  79. package/internal/builtin-types.d.ts.map +1 -0
  80. package/internal/builtin-types.js +4 -0
  81. package/internal/builtin-types.js.map +1 -0
  82. package/internal/builtin-types.mjs +3 -0
  83. package/internal/builtin-types.mjs.map +1 -0
  84. package/internal/decoders/line.d.mts +17 -0
  85. package/internal/decoders/line.d.mts.map +1 -0
  86. package/internal/decoders/line.d.ts +17 -0
  87. package/internal/decoders/line.d.ts.map +1 -0
  88. package/internal/decoders/line.js +113 -0
  89. package/internal/decoders/line.js.map +1 -0
  90. package/internal/decoders/line.mjs +108 -0
  91. package/internal/decoders/line.mjs.map +1 -0
  92. package/internal/detect-platform.d.mts +15 -0
  93. package/internal/detect-platform.d.mts.map +1 -0
  94. package/internal/detect-platform.d.ts +15 -0
  95. package/internal/detect-platform.d.ts.map +1 -0
  96. package/internal/detect-platform.js +162 -0
  97. package/internal/detect-platform.js.map +1 -0
  98. package/internal/detect-platform.mjs +157 -0
  99. package/internal/detect-platform.mjs.map +1 -0
  100. package/internal/errors.d.mts +3 -0
  101. package/internal/errors.d.mts.map +1 -0
  102. package/internal/errors.d.ts +3 -0
  103. package/internal/errors.d.ts.map +1 -0
  104. package/internal/errors.js +41 -0
  105. package/internal/errors.js.map +1 -0
  106. package/internal/errors.mjs +36 -0
  107. package/internal/errors.mjs.map +1 -0
  108. package/internal/headers.d.mts +20 -0
  109. package/internal/headers.d.mts.map +1 -0
  110. package/internal/headers.d.ts +20 -0
  111. package/internal/headers.d.ts.map +1 -0
  112. package/internal/headers.js +79 -0
  113. package/internal/headers.js.map +1 -0
  114. package/internal/headers.mjs +74 -0
  115. package/internal/headers.mjs.map +1 -0
  116. package/internal/parse.d.mts +12 -0
  117. package/internal/parse.d.mts.map +1 -0
  118. package/internal/parse.d.ts +12 -0
  119. package/internal/parse.d.ts.map +1 -0
  120. package/internal/parse.js +45 -0
  121. package/internal/parse.js.map +1 -0
  122. package/internal/parse.mjs +42 -0
  123. package/internal/parse.mjs.map +1 -0
  124. package/internal/request-options.d.mts +77 -0
  125. package/internal/request-options.d.mts.map +1 -0
  126. package/internal/request-options.d.ts +77 -0
  127. package/internal/request-options.d.ts.map +1 -0
  128. package/internal/request-options.js +14 -0
  129. package/internal/request-options.js.map +1 -0
  130. package/internal/request-options.mjs +10 -0
  131. package/internal/request-options.mjs.map +1 -0
  132. package/internal/shim-types.d.mts +17 -0
  133. package/internal/shim-types.d.mts.map +1 -0
  134. package/internal/shim-types.d.ts +17 -0
  135. package/internal/shim-types.d.ts.map +1 -0
  136. package/internal/shim-types.js +4 -0
  137. package/internal/shim-types.js.map +1 -0
  138. package/internal/shim-types.mjs +3 -0
  139. package/internal/shim-types.mjs.map +1 -0
  140. package/internal/shims.d.mts +20 -0
  141. package/internal/shims.d.mts.map +1 -0
  142. package/internal/shims.d.ts +20 -0
  143. package/internal/shims.d.ts.map +1 -0
  144. package/internal/shims.js +92 -0
  145. package/internal/shims.js.map +1 -0
  146. package/internal/shims.mjs +85 -0
  147. package/internal/shims.mjs.map +1 -0
  148. package/internal/to-file.d.mts +45 -0
  149. package/internal/to-file.d.mts.map +1 -0
  150. package/internal/to-file.d.ts +45 -0
  151. package/internal/to-file.d.ts.map +1 -0
  152. package/internal/to-file.js +91 -0
  153. package/internal/to-file.js.map +1 -0
  154. package/internal/to-file.mjs +88 -0
  155. package/internal/to-file.mjs.map +1 -0
  156. package/internal/tslib.js +81 -0
  157. package/internal/tslib.mjs +17 -0
  158. package/internal/types.d.mts +69 -0
  159. package/internal/types.d.mts.map +1 -0
  160. package/internal/types.d.ts +69 -0
  161. package/internal/types.d.ts.map +1 -0
  162. package/internal/types.js +4 -0
  163. package/internal/types.js.map +1 -0
  164. package/internal/types.mjs +3 -0
  165. package/internal/types.mjs.map +1 -0
  166. package/internal/uploads.d.mts +42 -0
  167. package/internal/uploads.d.mts.map +1 -0
  168. package/internal/uploads.d.ts +42 -0
  169. package/internal/uploads.d.ts.map +1 -0
  170. package/internal/uploads.js +141 -0
  171. package/internal/uploads.js.map +1 -0
  172. package/internal/uploads.mjs +131 -0
  173. package/internal/uploads.mjs.map +1 -0
  174. package/internal/utils/base64.d.mts +3 -0
  175. package/internal/utils/base64.d.mts.map +1 -0
  176. package/internal/utils/base64.d.ts +3 -0
  177. package/internal/utils/base64.d.ts.map +1 -0
  178. package/internal/utils/base64.js +38 -0
  179. package/internal/utils/base64.js.map +1 -0
  180. package/internal/utils/base64.mjs +33 -0
  181. package/internal/utils/base64.mjs.map +1 -0
  182. package/internal/utils/bytes.d.mts +4 -0
  183. package/internal/utils/bytes.d.mts.map +1 -0
  184. package/internal/utils/bytes.d.ts +4 -0
  185. package/internal/utils/bytes.d.ts.map +1 -0
  186. package/internal/utils/bytes.js +31 -0
  187. package/internal/utils/bytes.js.map +1 -0
  188. package/internal/utils/bytes.mjs +26 -0
  189. package/internal/utils/bytes.mjs.map +1 -0
  190. package/internal/utils/env.d.mts +9 -0
  191. package/internal/utils/env.d.mts.map +1 -0
  192. package/internal/utils/env.d.ts +9 -0
  193. package/internal/utils/env.d.ts.map +1 -0
  194. package/internal/utils/env.js +22 -0
  195. package/internal/utils/env.js.map +1 -0
  196. package/internal/utils/env.mjs +18 -0
  197. package/internal/utils/env.mjs.map +1 -0
  198. package/internal/utils/log.d.mts +37 -0
  199. package/internal/utils/log.d.mts.map +1 -0
  200. package/internal/utils/log.d.ts +37 -0
  201. package/internal/utils/log.d.ts.map +1 -0
  202. package/internal/utils/log.js +85 -0
  203. package/internal/utils/log.js.map +1 -0
  204. package/internal/utils/log.mjs +79 -0
  205. package/internal/utils/log.mjs.map +1 -0
  206. package/internal/utils/path.d.mts +15 -0
  207. package/internal/utils/path.d.mts.map +1 -0
  208. package/internal/utils/path.d.ts +15 -0
  209. package/internal/utils/path.d.ts.map +1 -0
  210. package/internal/utils/path.js +79 -0
  211. package/internal/utils/path.js.map +1 -0
  212. package/internal/utils/path.mjs +74 -0
  213. package/internal/utils/path.mjs.map +1 -0
  214. package/internal/utils/sleep.d.mts +2 -0
  215. package/internal/utils/sleep.d.mts.map +1 -0
  216. package/internal/utils/sleep.d.ts +2 -0
  217. package/internal/utils/sleep.d.ts.map +1 -0
  218. package/internal/utils/sleep.js +7 -0
  219. package/internal/utils/sleep.js.map +1 -0
  220. package/internal/utils/sleep.mjs +3 -0
  221. package/internal/utils/sleep.mjs.map +1 -0
  222. package/internal/utils/uuid.d.mts +5 -0
  223. package/internal/utils/uuid.d.mts.map +1 -0
  224. package/internal/utils/uuid.d.ts +5 -0
  225. package/internal/utils/uuid.d.ts.map +1 -0
  226. package/internal/utils/uuid.js +19 -0
  227. package/internal/utils/uuid.js.map +1 -0
  228. package/internal/utils/uuid.mjs +15 -0
  229. package/internal/utils/uuid.mjs.map +1 -0
  230. package/internal/utils/values.d.mts +18 -0
  231. package/internal/utils/values.d.mts.map +1 -0
  232. package/internal/utils/values.d.ts +18 -0
  233. package/internal/utils/values.d.ts.map +1 -0
  234. package/internal/utils/values.js +112 -0
  235. package/internal/utils/values.js.map +1 -0
  236. package/internal/utils/values.mjs +94 -0
  237. package/internal/utils/values.mjs.map +1 -0
  238. package/internal/utils.d.mts +7 -0
  239. package/internal/utils.d.mts.map +1 -0
  240. package/internal/utils.d.ts +7 -0
  241. package/internal/utils.d.ts.map +1 -0
  242. package/internal/utils.js +11 -0
  243. package/internal/utils.js.map +1 -0
  244. package/internal/utils.mjs +8 -0
  245. package/internal/utils.mjs.map +1 -0
  246. package/package.json +139 -82
  247. package/resource.d.mts +2 -0
  248. package/resource.d.mts.map +1 -0
  249. package/resource.d.ts +2 -0
  250. package/resource.d.ts.map +1 -0
  251. package/resource.js +6 -0
  252. package/resource.js.map +1 -0
  253. package/resource.mjs +2 -0
  254. package/resource.mjs.map +1 -0
  255. package/resources/agent.d.mts +74 -0
  256. package/resources/agent.d.mts.map +1 -0
  257. package/resources/agent.d.ts +74 -0
  258. package/resources/agent.d.ts.map +1 -0
  259. package/resources/agent.js +45 -0
  260. package/resources/agent.js.map +1 -0
  261. package/resources/agent.mjs +41 -0
  262. package/resources/agent.mjs.map +1 -0
  263. package/resources/extract.d.mts +118 -0
  264. package/resources/extract.d.mts.map +1 -0
  265. package/resources/extract.d.ts +118 -0
  266. package/resources/extract.d.ts.map +1 -0
  267. package/resources/extract.js +37 -0
  268. package/resources/extract.js.map +1 -0
  269. package/resources/extract.mjs +33 -0
  270. package/resources/extract.mjs.map +1 -0
  271. package/resources/generate.d.mts +45 -0
  272. package/resources/generate.d.mts.map +1 -0
  273. package/resources/generate.d.ts +45 -0
  274. package/resources/generate.d.ts.map +1 -0
  275. package/resources/generate.js +26 -0
  276. package/resources/generate.js.map +1 -0
  277. package/resources/generate.mjs +22 -0
  278. package/resources/generate.mjs.map +1 -0
  279. package/resources/index.d.mts +4 -0
  280. package/resources/index.d.mts.map +1 -0
  281. package/resources/index.d.ts +4 -0
  282. package/resources/index.d.ts.map +1 -0
  283. package/resources/index.js +11 -0
  284. package/resources/index.js.map +1 -0
  285. package/resources/index.mjs +5 -0
  286. package/resources/index.mjs.map +1 -0
  287. package/resources.d.mts +2 -0
  288. package/resources.d.mts.map +1 -0
  289. package/resources.d.ts +2 -0
  290. package/resources.d.ts.map +1 -0
  291. package/resources.js +5 -0
  292. package/resources.js.map +1 -0
  293. package/resources.mjs +2 -0
  294. package/resources.mjs.map +1 -0
  295. package/src/api-promise.ts +2 -0
  296. package/src/client.ts +756 -0
  297. package/src/core/README.md +3 -0
  298. package/src/core/api-promise.ts +92 -0
  299. package/src/core/error.ts +130 -0
  300. package/src/core/resource.ts +11 -0
  301. package/src/core/streaming.ts +315 -0
  302. package/src/core/uploads.ts +2 -0
  303. package/src/error.ts +2 -0
  304. package/src/index.ts +22 -0
  305. package/src/internal/README.md +3 -0
  306. package/src/internal/builtin-types.ts +93 -0
  307. package/src/internal/decoders/line.ts +135 -0
  308. package/src/internal/detect-platform.ts +196 -0
  309. package/src/internal/errors.ts +33 -0
  310. package/src/internal/headers.ts +97 -0
  311. package/src/internal/parse.ts +64 -0
  312. package/src/internal/request-options.ts +93 -0
  313. package/src/internal/shim-types.ts +26 -0
  314. package/src/internal/shims.ts +107 -0
  315. package/src/internal/to-file.ts +154 -0
  316. package/src/internal/types.ts +95 -0
  317. package/src/internal/uploads.ts +187 -0
  318. package/src/internal/utils/base64.ts +40 -0
  319. package/src/internal/utils/bytes.ts +32 -0
  320. package/src/internal/utils/env.ts +18 -0
  321. package/src/internal/utils/log.ts +126 -0
  322. package/src/internal/utils/path.ts +88 -0
  323. package/src/internal/utils/sleep.ts +3 -0
  324. package/src/internal/utils/uuid.ts +17 -0
  325. package/src/internal/utils/values.ts +105 -0
  326. package/src/internal/utils.ts +8 -0
  327. package/src/lib/.keep +4 -0
  328. package/src/resource.ts +2 -0
  329. package/src/resources/agent.ts +93 -0
  330. package/src/resources/extract.ts +147 -0
  331. package/src/resources/generate.ts +53 -0
  332. package/src/resources/index.ts +11 -0
  333. package/src/resources.ts +1 -0
  334. package/src/streaming.ts +2 -0
  335. package/src/tsconfig.json +11 -0
  336. package/src/uploads.ts +2 -0
  337. package/src/version.ts +1 -0
  338. package/streaming.d.mts +2 -0
  339. package/streaming.d.mts.map +1 -0
  340. package/streaming.d.ts +2 -0
  341. package/streaming.d.ts.map +1 -0
  342. package/streaming.js +6 -0
  343. package/streaming.js.map +1 -0
  344. package/streaming.mjs +2 -0
  345. package/streaming.mjs.map +1 -0
  346. package/uploads.d.mts +2 -0
  347. package/uploads.d.mts.map +1 -0
  348. package/uploads.d.ts +2 -0
  349. package/uploads.d.ts.map +1 -0
  350. package/uploads.js +6 -0
  351. package/uploads.js.map +1 -0
  352. package/uploads.mjs +2 -0
  353. package/uploads.mjs.map +1 -0
  354. package/version.d.mts +2 -0
  355. package/version.d.mts.map +1 -0
  356. package/version.d.ts +2 -0
  357. package/version.d.ts.map +1 -0
  358. package/version.js +5 -0
  359. package/version.js.map +1 -0
  360. package/version.mjs +2 -0
  361. package/version.mjs.map +1 -0
  362. package/dist/cjs/automate.d.ts +0 -156
  363. package/dist/cjs/automate.d.ts.map +0 -1
  364. package/dist/cjs/automate.js +0 -211
  365. package/dist/cjs/automate.js.map +0 -1
  366. package/dist/cjs/automate.test.d.ts +0 -5
  367. package/dist/cjs/automate.test.d.ts.map +0 -1
  368. package/dist/cjs/automate.test.js +0 -441
  369. package/dist/cjs/automate.test.js.map +0 -1
  370. package/dist/cjs/client.d.ts +0 -58
  371. package/dist/cjs/client.d.ts.map +0 -1
  372. package/dist/cjs/client.js +0 -58
  373. package/dist/cjs/client.js.map +0 -1
  374. package/dist/cjs/client.test.d.ts +0 -5
  375. package/dist/cjs/client.test.d.ts.map +0 -1
  376. package/dist/cjs/client.test.js +0 -256
  377. package/dist/cjs/client.test.js.map +0 -1
  378. package/dist/cjs/exceptions.d.ts +0 -57
  379. package/dist/cjs/exceptions.d.ts.map +0 -1
  380. package/dist/cjs/exceptions.js +0 -95
  381. package/dist/cjs/exceptions.js.map +0 -1
  382. package/dist/cjs/exceptions.test.d.ts +0 -5
  383. package/dist/cjs/exceptions.test.d.ts.map +0 -1
  384. package/dist/cjs/exceptions.test.js +0 -239
  385. package/dist/cjs/exceptions.test.js.map +0 -1
  386. package/dist/cjs/extract.d.ts +0 -206
  387. package/dist/cjs/extract.d.ts.map +0 -1
  388. package/dist/cjs/extract.js +0 -223
  389. package/dist/cjs/extract.js.map +0 -1
  390. package/dist/cjs/extract.test.d.ts +0 -5
  391. package/dist/cjs/extract.test.d.ts.map +0 -1
  392. package/dist/cjs/extract.test.js +0 -364
  393. package/dist/cjs/extract.test.js.map +0 -1
  394. package/dist/cjs/generate.d.ts +0 -113
  395. package/dist/cjs/generate.d.ts.map +0 -1
  396. package/dist/cjs/generate.js +0 -124
  397. package/dist/cjs/generate.js.map +0 -1
  398. package/dist/cjs/generate.test.d.ts +0 -5
  399. package/dist/cjs/generate.test.d.ts.map +0 -1
  400. package/dist/cjs/generate.test.js +0 -314
  401. package/dist/cjs/generate.test.js.map +0 -1
  402. package/dist/cjs/index.d.ts +0 -52
  403. package/dist/cjs/index.d.ts.map +0 -1
  404. package/dist/cjs/index.js +0 -72
  405. package/dist/cjs/index.js.map +0 -1
  406. package/dist/cjs/package.json +0 -3
  407. package/dist/cjs/types.d.ts +0 -73
  408. package/dist/cjs/types.d.ts.map +0 -1
  409. package/dist/cjs/types.js +0 -118
  410. package/dist/cjs/types.js.map +0 -1
  411. package/dist/cjs/types.test.d.ts +0 -5
  412. package/dist/cjs/types.test.d.ts.map +0 -1
  413. package/dist/cjs/types.test.js +0 -370
  414. package/dist/cjs/types.test.js.map +0 -1
  415. package/dist/cjs/util/http.d.ts +0 -29
  416. package/dist/cjs/util/http.d.ts.map +0 -1
  417. package/dist/cjs/util/http.js +0 -201
  418. package/dist/cjs/util/http.js.map +0 -1
  419. package/dist/cjs/util/http.test.d.ts +0 -5
  420. package/dist/cjs/util/http.test.d.ts.map +0 -1
  421. package/dist/cjs/util/http.test.js +0 -237
  422. package/dist/cjs/util/http.test.js.map +0 -1
  423. package/dist/esm/automate.d.ts +0 -156
  424. package/dist/esm/automate.d.ts.map +0 -1
  425. package/dist/esm/automate.js +0 -207
  426. package/dist/esm/automate.js.map +0 -1
  427. package/dist/esm/automate.test.d.ts +0 -5
  428. package/dist/esm/automate.test.d.ts.map +0 -1
  429. package/dist/esm/automate.test.js +0 -439
  430. package/dist/esm/automate.test.js.map +0 -1
  431. package/dist/esm/client.d.ts +0 -58
  432. package/dist/esm/client.d.ts.map +0 -1
  433. package/dist/esm/client.js +0 -54
  434. package/dist/esm/client.js.map +0 -1
  435. package/dist/esm/client.test.d.ts +0 -5
  436. package/dist/esm/client.test.d.ts.map +0 -1
  437. package/dist/esm/client.test.js +0 -254
  438. package/dist/esm/client.test.js.map +0 -1
  439. package/dist/esm/exceptions.d.ts +0 -57
  440. package/dist/esm/exceptions.d.ts.map +0 -1
  441. package/dist/esm/exceptions.js +0 -85
  442. package/dist/esm/exceptions.js.map +0 -1
  443. package/dist/esm/exceptions.test.d.ts +0 -5
  444. package/dist/esm/exceptions.test.d.ts.map +0 -1
  445. package/dist/esm/exceptions.test.js +0 -237
  446. package/dist/esm/exceptions.test.js.map +0 -1
  447. package/dist/esm/extract.d.ts +0 -206
  448. package/dist/esm/extract.d.ts.map +0 -1
  449. package/dist/esm/extract.js +0 -219
  450. package/dist/esm/extract.js.map +0 -1
  451. package/dist/esm/extract.test.d.ts +0 -5
  452. package/dist/esm/extract.test.d.ts.map +0 -1
  453. package/dist/esm/extract.test.js +0 -362
  454. package/dist/esm/extract.test.js.map +0 -1
  455. package/dist/esm/generate.d.ts +0 -113
  456. package/dist/esm/generate.d.ts.map +0 -1
  457. package/dist/esm/generate.js +0 -120
  458. package/dist/esm/generate.js.map +0 -1
  459. package/dist/esm/generate.test.d.ts +0 -5
  460. package/dist/esm/generate.test.d.ts.map +0 -1
  461. package/dist/esm/generate.test.js +0 -312
  462. package/dist/esm/generate.test.js.map +0 -1
  463. package/dist/esm/index.d.ts +0 -52
  464. package/dist/esm/index.d.ts.map +0 -1
  465. package/dist/esm/index.js +0 -53
  466. package/dist/esm/index.js.map +0 -1
  467. package/dist/esm/package.json +0 -3
  468. package/dist/esm/types.d.ts +0 -73
  469. package/dist/esm/types.d.ts.map +0 -1
  470. package/dist/esm/types.js +0 -110
  471. package/dist/esm/types.js.map +0 -1
  472. package/dist/esm/types.test.d.ts +0 -5
  473. package/dist/esm/types.test.d.ts.map +0 -1
  474. package/dist/esm/types.test.js +0 -368
  475. package/dist/esm/types.test.js.map +0 -1
  476. package/dist/esm/util/http.d.ts +0 -29
  477. package/dist/esm/util/http.d.ts.map +0 -1
  478. package/dist/esm/util/http.js +0 -164
  479. package/dist/esm/util/http.js.map +0 -1
  480. package/dist/esm/util/http.test.d.ts +0 -5
  481. package/dist/esm/util/http.test.d.ts.map +0 -1
  482. package/dist/esm/util/http.test.js +0 -232
  483. package/dist/esm/util/http.test.js.map +0 -1
  484. package/dist/types/automate.d.ts +0 -156
  485. package/dist/types/automate.d.ts.map +0 -1
  486. package/dist/types/automate.test.d.ts +0 -5
  487. package/dist/types/automate.test.d.ts.map +0 -1
  488. package/dist/types/client.d.ts +0 -58
  489. package/dist/types/client.d.ts.map +0 -1
  490. package/dist/types/client.test.d.ts +0 -5
  491. package/dist/types/client.test.d.ts.map +0 -1
  492. package/dist/types/exceptions.d.ts +0 -57
  493. package/dist/types/exceptions.d.ts.map +0 -1
  494. package/dist/types/exceptions.test.d.ts +0 -5
  495. package/dist/types/exceptions.test.d.ts.map +0 -1
  496. package/dist/types/extract.d.ts +0 -206
  497. package/dist/types/extract.d.ts.map +0 -1
  498. package/dist/types/extract.test.d.ts +0 -5
  499. package/dist/types/extract.test.d.ts.map +0 -1
  500. package/dist/types/generate.d.ts +0 -113
  501. package/dist/types/generate.d.ts.map +0 -1
  502. package/dist/types/generate.test.d.ts +0 -5
  503. package/dist/types/generate.test.d.ts.map +0 -1
  504. package/dist/types/index.d.ts +0 -52
  505. package/dist/types/index.d.ts.map +0 -1
  506. package/dist/types/types.d.ts +0 -73
  507. package/dist/types/types.d.ts.map +0 -1
  508. package/dist/types/types.test.d.ts +0 -5
  509. package/dist/types/types.test.d.ts.map +0 -1
  510. package/dist/types/util/http.d.ts +0 -29
  511. package/dist/types/util/http.d.ts.map +0 -1
  512. package/dist/types/util/http.test.d.ts +0 -5
  513. package/dist/types/util/http.test.d.ts.map +0 -1
@@ -1,223 +0,0 @@
1
- "use strict";
2
- /**
3
- * Extract operator for TABStack AI SDK
4
- */
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.Extract = void 0;
7
- const types_1 = require("./types");
8
- /**
9
- * Extract operator for converting and extracting web content
10
- *
11
- * This class provides methods for extracting content from URLs in various formats:
12
- * - Markdown conversion
13
- * - Schema generation
14
- * - Structured JSON extraction
15
- */
16
- class Extract {
17
- constructor(httpClient) {
18
- this.httpClient = httpClient;
19
- }
20
- /**
21
- * Convert URL content to Markdown format
22
- *
23
- * Fetches a URL and converts its HTML content to clean Markdown format with
24
- * optional metadata extraction. By default, metadata is included in the content
25
- * as YAML frontmatter. When metadata option is true, it's also returned as
26
- * a separate field in the response.
27
- *
28
- * @param url - URL to fetch and convert to markdown
29
- * @param options - Optional extraction options
30
- * @param options.metadata - Include extracted metadata (Open Graph and HTML metadata) as a separate field in the response. Default: false
31
- * @param options.nocache - Bypass cache and force fresh data retrieval. Default: false
32
- *
33
- * @returns MarkdownResponse containing the converted content and optional metadata
34
- *
35
- * @throws {BadRequestError} When URL is missing
36
- * @throws {UnauthorizedError} When API key is invalid or missing
37
- * @throws {InvalidURLError} When URL is invalid or inaccessible
38
- * @throws {ServerError} When server fails to fetch or convert the content
39
- *
40
- * @example
41
- * Basic usage:
42
- * ```typescript
43
- * const result = await tabs.extract.markdown('https://example.com/blog/article');
44
- * console.log(result.content); // Markdown with YAML frontmatter
45
- * ```
46
- *
47
- * @example
48
- * With separate metadata field:
49
- * ```typescript
50
- * const result = await tabs.extract.markdown('https://example.com/blog/article', {
51
- * metadata: true
52
- * });
53
- * console.log(result.content); // Markdown without frontmatter
54
- * console.log(result.metadata?.title); // "Example Article Title"
55
- * console.log(result.metadata?.author); // "Example Author"
56
- * console.log(result.metadata?.image); // "https://example.com/images/article.jpg"
57
- * ```
58
- *
59
- * @example
60
- * Force fresh data retrieval:
61
- * ```typescript
62
- * const result = await tabs.extract.markdown('https://example.com/blog/article', {
63
- * nocache: true
64
- * });
65
- * ```
66
- */
67
- async markdown(url, options) {
68
- const requestData = { url };
69
- if (options?.metadata)
70
- requestData.metadata = options.metadata;
71
- if (options?.nocache)
72
- requestData.nocache = options.nocache;
73
- const response = await this.httpClient.post('v1/extract/markdown', requestData);
74
- return types_1.MarkdownResponse.fromJSON(response);
75
- }
76
- /**
77
- * Generate JSON schema from URL content
78
- *
79
- * Analyzes URL content and generates a JSON schema that describes the structure
80
- * of the data. Use this to create schemas for the json() method when you don't
81
- * know the structure in advance. The generated schema can then be used to extract
82
- * structured data from similar pages.
83
- *
84
- * @param url - URL to analyze and extract schema from
85
- * @param options - Optional schema generation options
86
- * @param options.instructions - Optional instructions to guide schema generation (max 1000 characters). Example: "extract only the top stories, for each story include the title, points, author, and comment count"
87
- * @param options.nocache - Bypass cache and force fresh data retrieval. Default: false
88
- *
89
- * @returns The generated JSON schema object
90
- *
91
- * @throws {BadRequestError} When URL is missing or schema format is invalid
92
- * @throws {UnauthorizedError} When API key is invalid or missing
93
- * @throws {InvalidURLError} When URL is invalid
94
- * @throws {ServerError} When server fails to fetch URL, page is too large, or schema generation fails
95
- *
96
- * @example
97
- * Basic usage:
98
- * ```typescript
99
- * const schema = await tabs.extract.schema('https://news.ycombinator.com');
100
- * console.log(schema); // JSON schema object describing the page structure
101
- * ```
102
- *
103
- * @example
104
- * With instructions:
105
- * ```typescript
106
- * const schema = await tabs.extract.schema('https://news.ycombinator.com', {
107
- * instructions: 'extract only the top stories, for each story include the title, points, author, and comment count'
108
- * });
109
- * // Use the generated schema to extract data
110
- * const data = await tabs.extract.json('https://news.ycombinator.com', schema);
111
- * console.log(data.data); // Structured data matching the schema
112
- * ```
113
- */
114
- async schema(url, options) {
115
- const requestData = { url };
116
- if (options?.instructions)
117
- requestData.instructions = options.instructions;
118
- if (options?.nocache)
119
- requestData.nocache = options.nocache;
120
- return await this.httpClient.post('v1/extract/json/schema', requestData);
121
- }
122
- /**
123
- * Extract structured JSON from URL content
124
- *
125
- * Fetches a URL and extracts structured data according to a provided JSON schema.
126
- * The schema defines what data to extract and its structure. You can define your
127
- * schema manually or generate one using the schema() method.
128
- *
129
- * @param url - URL to fetch and extract data from
130
- * @param schema - JSON schema object defining the structure of data to extract
131
- * @param options - Optional extraction options
132
- * @param options.nocache - Bypass cache and force fresh data retrieval. Default: false
133
- *
134
- * @returns JsonResponse containing the extracted data matching the schema
135
- *
136
- * @throws {BadRequestError} When URL or schema is missing, or schema format is invalid
137
- * @throws {UnauthorizedError} When API key is invalid or missing
138
- * @throws {InvalidURLError} When URL is invalid
139
- * @throws {ServerError} When server fails to fetch URL, page is too large, or JSON generation fails
140
- *
141
- * @example
142
- * Extract news stories:
143
- * ```typescript
144
- * const schema = {
145
- * type: 'object',
146
- * properties: {
147
- * stories: {
148
- * type: 'array',
149
- * items: {
150
- * type: 'object',
151
- * properties: {
152
- * title: { type: 'string' },
153
- * points: { type: 'number' },
154
- * author: { type: 'string' }
155
- * },
156
- * required: ['title', 'points', 'author']
157
- * }
158
- * }
159
- * },
160
- * required: ['stories']
161
- * };
162
- *
163
- * const result = await tabs.extract.json('https://news.ycombinator.com', schema);
164
- * console.log(result.data.stories); // Array of story objects
165
- * ```
166
- *
167
- * @example
168
- * Extract product information:
169
- * ```typescript
170
- * const schema = {
171
- * type: 'object',
172
- * properties: {
173
- * name: { type: 'string' },
174
- * price: { type: 'number' },
175
- * inStock: { type: 'boolean' },
176
- * features: {
177
- * type: 'array',
178
- * items: { type: 'string' }
179
- * }
180
- * },
181
- * required: ['name', 'price', 'inStock']
182
- * };
183
- *
184
- * const result = await tabs.extract.json(
185
- * 'https://example-store.com/product/wireless-headphones',
186
- * schema
187
- * );
188
- * console.log(result.data.name); // "Premium Wireless Headphones"
189
- * console.log(result.data.price); // 299.99
190
- * console.log(result.data.inStock); // true
191
- * ```
192
- *
193
- * @example
194
- * Using generated schema:
195
- * ```typescript
196
- * const schema = await tabs.extract.schema('https://news.ycombinator.com', {
197
- * instructions: 'extract top stories with title, points, and author'
198
- * });
199
- * const result = await tabs.extract.json('https://news.ycombinator.com', schema);
200
- * console.log(result.data);
201
- * ```
202
- *
203
- * @example
204
- * Force fresh data retrieval:
205
- * ```typescript
206
- * const result = await tabs.extract.json('https://news.ycombinator.com', schema, {
207
- * nocache: true
208
- * });
209
- * ```
210
- */
211
- async json(url, schema, options) {
212
- const requestData = {
213
- url,
214
- json_schema: schema,
215
- };
216
- if (options?.nocache)
217
- requestData.nocache = options.nocache;
218
- const response = await this.httpClient.post('v1/extract/json', requestData);
219
- return types_1.JsonResponse.fromJSON(response);
220
- }
221
- }
222
- exports.Extract = Extract;
223
- //# sourceMappingURL=extract.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"extract.js","sourceRoot":"","sources":["../../src/extract.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAGH,mCAAyD;AAgBzD;;;;;;;GAOG;AACH,MAAa,OAAO;IAClB,YAAoB,UAAsB;QAAtB,eAAU,GAAV,UAAU,CAAY;IAAG,CAAC;IAE9C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA8CG;IACH,KAAK,CAAC,QAAQ,CAAC,GAAW,EAAE,OAAgC;QAC1D,MAAM,WAAW,GAA4B,EAAE,GAAG,EAAE,CAAC;QACrD,IAAI,OAAO,EAAE,QAAQ;YAAE,WAAW,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;QAC/D,IAAI,OAAO,EAAE,OAAO;YAAE,WAAW,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;QAE5D,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,CACzC,qBAAqB,EACrB,WAAW,CACZ,CAAC;QACF,OAAO,wBAAgB,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAC7C,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAqCG;IACH,KAAK,CAAC,MAAM,CAAC,GAAW,EAAE,OAA8B;QACtD,MAAM,WAAW,GAA4B,EAAE,GAAG,EAAE,CAAC;QACrD,IAAI,OAAO,EAAE,YAAY;YAAE,WAAW,CAAC,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC;QAC3E,IAAI,OAAO,EAAE,OAAO;YAAE,WAAW,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;QAE5D,OAAO,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,CAC/B,wBAAwB,EACxB,WAAW,CACZ,CAAC;IACJ,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAwFG;IACH,KAAK,CAAC,IAAI,CACR,GAAW,EACX,MAA+B,EAC/B,OAA4B;QAE5B,MAAM,WAAW,GAA4B;YAC3C,GAAG;YACH,WAAW,EAAE,MAAM;SACpB,CAAC;QACF,IAAI,OAAO,EAAE,OAAO;YAAE,WAAW,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;QAE5D,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,CAAI,iBAAiB,EAAE,WAAW,CAAC,CAAC;QAC/E,OAAO,oBAAY,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IACzC,CAAC;CACF;AAtND,0BAsNC"}
@@ -1,5 +0,0 @@
1
- /**
2
- * Tests for Extract operator
3
- */
4
- export {};
5
- //# sourceMappingURL=extract.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"extract.test.d.ts","sourceRoot":"","sources":["../../src/extract.test.ts"],"names":[],"mappings":"AAAA;;GAEG"}
@@ -1,364 +0,0 @@
1
- "use strict";
2
- /**
3
- * Tests for Extract operator
4
- */
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- const extract_1 = require("./extract");
7
- const http_1 = require("./util/http");
8
- const types_1 = require("./types");
9
- // Mock HTTPClient
10
- jest.mock('./util/http');
11
- describe('Extract', () => {
12
- let extract;
13
- let mockHttpClient;
14
- beforeEach(() => {
15
- mockHttpClient = new http_1.HTTPClient({ apiKey: 'test-key' });
16
- extract = new extract_1.Extract(mockHttpClient);
17
- });
18
- afterEach(() => {
19
- jest.clearAllMocks();
20
- });
21
- describe('markdown', () => {
22
- it('should extract markdown from URL', async () => {
23
- const mockResponse = {
24
- url: 'https://example.com',
25
- content: '# Test Page\n\nContent here',
26
- };
27
- mockHttpClient.post = jest.fn().mockResolvedValue(mockResponse);
28
- const result = await extract.markdown('https://example.com');
29
- expect(mockHttpClient.post).toHaveBeenCalledWith('v1/extract/markdown', {
30
- url: 'https://example.com',
31
- });
32
- expect(result).toBeInstanceOf(types_1.MarkdownResponse);
33
- expect(result.url).toBe('https://example.com');
34
- expect(result.content).toBe('# Test Page\n\nContent here');
35
- });
36
- it('should extract markdown with metadata option', async () => {
37
- const mockResponse = {
38
- url: 'https://example.com',
39
- content: '# Test Page\n\nContent',
40
- metadata: {
41
- title: 'Test Page',
42
- description: 'A test page',
43
- site_name: 'Example Site',
44
- },
45
- };
46
- mockHttpClient.post = jest.fn().mockResolvedValue(mockResponse);
47
- const result = await extract.markdown('https://example.com', { metadata: true });
48
- expect(mockHttpClient.post).toHaveBeenCalledWith('v1/extract/markdown', {
49
- url: 'https://example.com',
50
- metadata: true,
51
- });
52
- expect(result.metadata).toBeInstanceOf(types_1.Metadata);
53
- expect(result.metadata?.title).toBe('Test Page');
54
- expect(result.metadata?.siteName).toBe('Example Site');
55
- });
56
- it('should extract markdown with nocache option', async () => {
57
- const mockResponse = {
58
- url: 'https://example.com',
59
- content: 'Fresh content',
60
- };
61
- mockHttpClient.post = jest.fn().mockResolvedValue(mockResponse);
62
- await extract.markdown('https://example.com', { nocache: true });
63
- expect(mockHttpClient.post).toHaveBeenCalledWith('v1/extract/markdown', {
64
- url: 'https://example.com',
65
- nocache: true,
66
- });
67
- });
68
- it('should extract markdown with both metadata and nocache options', async () => {
69
- const mockResponse = {
70
- url: 'https://example.com',
71
- content: 'Content',
72
- metadata: { title: 'Test' },
73
- };
74
- mockHttpClient.post = jest.fn().mockResolvedValue(mockResponse);
75
- await extract.markdown('https://example.com', { metadata: true, nocache: true });
76
- expect(mockHttpClient.post).toHaveBeenCalledWith('v1/extract/markdown', {
77
- url: 'https://example.com',
78
- metadata: true,
79
- nocache: true,
80
- });
81
- });
82
- it('should handle empty content', async () => {
83
- const mockResponse = {
84
- url: 'https://example.com',
85
- content: '',
86
- };
87
- mockHttpClient.post = jest.fn().mockResolvedValue(mockResponse);
88
- const result = await extract.markdown('https://example.com');
89
- expect(result.content).toBe('');
90
- });
91
- it('should handle markdown without metadata', async () => {
92
- const mockResponse = {
93
- url: 'https://example.com',
94
- content: '# Title',
95
- };
96
- mockHttpClient.post = jest.fn().mockResolvedValue(mockResponse);
97
- const result = await extract.markdown('https://example.com', { metadata: false });
98
- expect(result.metadata).toBeUndefined();
99
- });
100
- it('should propagate errors from HTTP client', async () => {
101
- const error = new Error('Network error');
102
- mockHttpClient.post = jest.fn().mockRejectedValue(error);
103
- await expect(extract.markdown('https://example.com')).rejects.toThrow('Network error');
104
- });
105
- });
106
- describe('schema', () => {
107
- it('should generate schema from URL', async () => {
108
- const mockSchema = {
109
- type: 'object',
110
- properties: {
111
- title: { type: 'string' },
112
- items: {
113
- type: 'array',
114
- items: { type: 'string' },
115
- },
116
- },
117
- };
118
- mockHttpClient.post = jest.fn().mockResolvedValue(mockSchema);
119
- const result = await extract.schema('https://example.com');
120
- expect(mockHttpClient.post).toHaveBeenCalledWith('v1/extract/json/schema', {
121
- url: 'https://example.com',
122
- });
123
- expect(result).toEqual(mockSchema);
124
- });
125
- it('should generate schema with instructions', async () => {
126
- const mockSchema = {
127
- type: 'object',
128
- properties: {
129
- stories: { type: 'array' },
130
- },
131
- };
132
- mockHttpClient.post = jest.fn().mockResolvedValue(mockSchema);
133
- await extract.schema('https://example.com', {
134
- instructions: 'extract top stories with title and author',
135
- });
136
- expect(mockHttpClient.post).toHaveBeenCalledWith('v1/extract/json/schema', {
137
- url: 'https://example.com',
138
- instructions: 'extract top stories with title and author',
139
- });
140
- });
141
- it('should generate schema with nocache option', async () => {
142
- const mockSchema = { type: 'object' };
143
- mockHttpClient.post = jest.fn().mockResolvedValue(mockSchema);
144
- await extract.schema('https://example.com', { nocache: true });
145
- expect(mockHttpClient.post).toHaveBeenCalledWith('v1/extract/json/schema', {
146
- url: 'https://example.com',
147
- nocache: true,
148
- });
149
- });
150
- it('should generate schema with both instructions and nocache', async () => {
151
- const mockSchema = { type: 'object' };
152
- mockHttpClient.post = jest.fn().mockResolvedValue(mockSchema);
153
- await extract.schema('https://example.com', {
154
- instructions: 'extract products',
155
- nocache: true,
156
- });
157
- expect(mockHttpClient.post).toHaveBeenCalledWith('v1/extract/json/schema', {
158
- url: 'https://example.com',
159
- instructions: 'extract products',
160
- nocache: true,
161
- });
162
- });
163
- it('should handle complex nested schemas', async () => {
164
- const mockSchema = {
165
- type: 'object',
166
- properties: {
167
- data: {
168
- type: 'object',
169
- properties: {
170
- items: {
171
- type: 'array',
172
- items: {
173
- type: 'object',
174
- properties: {
175
- name: { type: 'string' },
176
- value: { type: 'number' },
177
- },
178
- },
179
- },
180
- },
181
- },
182
- },
183
- };
184
- mockHttpClient.post = jest.fn().mockResolvedValue(mockSchema);
185
- const result = await extract.schema('https://example.com');
186
- expect(result).toEqual(mockSchema);
187
- });
188
- it('should propagate errors from HTTP client', async () => {
189
- const error = new Error('Schema generation failed');
190
- mockHttpClient.post = jest.fn().mockRejectedValue(error);
191
- await expect(extract.schema('https://example.com')).rejects.toThrow('Schema generation failed');
192
- });
193
- });
194
- describe('json', () => {
195
- const testSchema = {
196
- type: 'object',
197
- properties: {
198
- title: { type: 'string' },
199
- count: { type: 'number' },
200
- },
201
- };
202
- it('should extract JSON data from URL', async () => {
203
- const mockData = {
204
- title: 'Test Article',
205
- count: 42,
206
- };
207
- mockHttpClient.post = jest.fn().mockResolvedValue(mockData);
208
- const result = await extract.json('https://example.com', testSchema);
209
- expect(mockHttpClient.post).toHaveBeenCalledWith('v1/extract/json', {
210
- url: 'https://example.com',
211
- json_schema: testSchema,
212
- });
213
- expect(result).toBeInstanceOf(types_1.JsonResponse);
214
- expect(result.data).toEqual(mockData);
215
- });
216
- it('should extract JSON with nocache option', async () => {
217
- const mockData = { fresh: true };
218
- mockHttpClient.post = jest.fn().mockResolvedValue(mockData);
219
- await extract.json('https://example.com', testSchema, { nocache: true });
220
- expect(mockHttpClient.post).toHaveBeenCalledWith('v1/extract/json', {
221
- url: 'https://example.com',
222
- json_schema: testSchema,
223
- nocache: true,
224
- });
225
- });
226
- it('should handle array data', async () => {
227
- const schema = {
228
- type: 'array',
229
- items: {
230
- type: 'object',
231
- properties: {
232
- id: { type: 'number' },
233
- name: { type: 'string' },
234
- },
235
- },
236
- };
237
- const mockData = [
238
- { id: 1, name: 'Item 1' },
239
- { id: 2, name: 'Item 2' },
240
- ];
241
- mockHttpClient.post = jest.fn().mockResolvedValue(mockData);
242
- const result = await extract.json('https://example.com', schema);
243
- expect(result.data).toEqual(mockData);
244
- });
245
- it('should handle nested object data', async () => {
246
- const schema = {
247
- type: 'object',
248
- properties: {
249
- user: {
250
- type: 'object',
251
- properties: {
252
- profile: {
253
- type: 'object',
254
- properties: {
255
- name: { type: 'string' },
256
- age: { type: 'number' },
257
- },
258
- },
259
- },
260
- },
261
- },
262
- };
263
- const mockData = {
264
- user: {
265
- profile: {
266
- name: 'John Doe',
267
- age: 30,
268
- },
269
- },
270
- };
271
- mockHttpClient.post = jest.fn().mockResolvedValue(mockData);
272
- const result = await extract.json('https://example.com', schema);
273
- expect(result.data).toEqual(mockData);
274
- });
275
- it('should work with TypeScript generics', async () => {
276
- const mockData = {
277
- name: 'Headphones',
278
- price: 299.99,
279
- inStock: true,
280
- };
281
- mockHttpClient.post = jest.fn().mockResolvedValue(mockData);
282
- const result = await extract.json('https://example.com', testSchema);
283
- expect(result.data.name).toBe('Headphones');
284
- expect(result.data.price).toBe(299.99);
285
- expect(result.data.inStock).toBe(true);
286
- });
287
- it('should handle empty schema', async () => {
288
- const mockData = { value: 'test' };
289
- mockHttpClient.post = jest.fn().mockResolvedValue(mockData);
290
- const result = await extract.json('https://example.com', {});
291
- expect(mockHttpClient.post).toHaveBeenCalledWith('v1/extract/json', {
292
- url: 'https://example.com',
293
- json_schema: {},
294
- });
295
- expect(result.data).toEqual(mockData);
296
- });
297
- it('should handle null data', async () => {
298
- mockHttpClient.post = jest.fn().mockResolvedValue(null);
299
- const result = await extract.json('https://example.com', testSchema);
300
- expect(result.data).toBeNull();
301
- });
302
- it('should propagate errors from HTTP client', async () => {
303
- const error = new Error('Extraction failed');
304
- mockHttpClient.post = jest.fn().mockRejectedValue(error);
305
- await expect(extract.json('https://example.com', testSchema)).rejects.toThrow('Extraction failed');
306
- });
307
- });
308
- describe('Integration scenarios', () => {
309
- it('should use generated schema for extraction', async () => {
310
- const mockSchema = {
311
- type: 'object',
312
- properties: {
313
- stories: { type: 'array' },
314
- },
315
- };
316
- const mockData = {
317
- stories: [
318
- { title: 'Story 1', points: 100 },
319
- { title: 'Story 2', points: 50 },
320
- ],
321
- };
322
- mockHttpClient.post = jest
323
- .fn()
324
- .mockResolvedValueOnce(mockSchema)
325
- .mockResolvedValueOnce(mockData);
326
- // First generate schema
327
- const schema = await extract.schema('https://example.com', {
328
- instructions: 'extract top stories',
329
- });
330
- // Then use it for extraction
331
- const result = await extract.json('https://example.com', schema);
332
- expect(mockHttpClient.post).toHaveBeenCalledTimes(2);
333
- expect(result.data).toEqual(mockData);
334
- });
335
- it('should handle multiple extractions with same schema', async () => {
336
- const schema = { type: 'object', properties: { value: { type: 'string' } } };
337
- mockHttpClient.post = jest
338
- .fn()
339
- .mockResolvedValueOnce({ value: 'first' })
340
- .mockResolvedValueOnce({ value: 'second' });
341
- const result1 = await extract.json('https://example.com/page1', schema);
342
- const result2 = await extract.json('https://example.com/page2', schema);
343
- expect(result1.data).toEqual({ value: 'first' });
344
- expect(result2.data).toEqual({ value: 'second' });
345
- });
346
- it('should extract markdown and JSON from same URL', async () => {
347
- mockHttpClient.post = jest
348
- .fn()
349
- .mockResolvedValueOnce({
350
- url: 'https://example.com',
351
- content: '# Title',
352
- })
353
- .mockResolvedValueOnce({ title: 'Title', content: 'Content' });
354
- const markdownResult = await extract.markdown('https://example.com');
355
- const jsonResult = await extract.json('https://example.com', {
356
- type: 'object',
357
- properties: { title: { type: 'string' } },
358
- });
359
- expect(markdownResult.content).toBe('# Title');
360
- expect(jsonResult.data).toEqual({ title: 'Title', content: 'Content' });
361
- });
362
- });
363
- });
364
- //# sourceMappingURL=extract.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"extract.test.js","sourceRoot":"","sources":["../../src/extract.test.ts"],"names":[],"mappings":"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"}