@superblocksteam/sdk-api 0.0.6 → 0.0.7

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 (487) hide show
  1. package/README.md +351 -427
  2. package/dist/api/definition.d.ts +12 -7
  3. package/dist/api/definition.d.ts.map +1 -1
  4. package/dist/api/definition.js +19 -12
  5. package/dist/api/definition.js.map +1 -1
  6. package/dist/api/definition.test.js +39 -15
  7. package/dist/api/definition.test.js.map +1 -1
  8. package/dist/api/index.d.ts +0 -2
  9. package/dist/api/index.d.ts.map +1 -1
  10. package/dist/api/index.js +0 -2
  11. package/dist/api/index.js.map +1 -1
  12. package/dist/errors.d.ts +1 -45
  13. package/dist/errors.d.ts.map +1 -1
  14. package/dist/errors.js +1 -33
  15. package/dist/errors.js.map +1 -1
  16. package/dist/index.d.ts +16 -17
  17. package/dist/index.d.ts.map +1 -1
  18. package/dist/index.js +18 -15
  19. package/dist/index.js.map +1 -1
  20. package/dist/integrations/anthropic/types.d.ts +3 -22
  21. package/dist/integrations/anthropic/types.d.ts.map +1 -1
  22. package/dist/integrations/athena/client.d.ts +1 -1
  23. package/dist/integrations/athena/client.d.ts.map +1 -1
  24. package/dist/integrations/athena/client.js.map +1 -1
  25. package/dist/integrations/athena/types.d.ts +2 -2
  26. package/dist/integrations/athena/types.d.ts.map +1 -1
  27. package/dist/integrations/base/graphql-integration-client.d.ts +8 -4
  28. package/dist/integrations/base/graphql-integration-client.d.ts.map +1 -1
  29. package/dist/integrations/base/graphql-integration-client.js +18 -5
  30. package/dist/integrations/base/graphql-integration-client.js.map +1 -1
  31. package/dist/integrations/base/index.d.ts +3 -2
  32. package/dist/integrations/base/index.d.ts.map +1 -1
  33. package/dist/integrations/base/index.js +1 -0
  34. package/dist/integrations/base/index.js.map +1 -1
  35. package/dist/integrations/base/rest-api-client-base.d.ts +48 -0
  36. package/dist/integrations/base/rest-api-client-base.d.ts.map +1 -0
  37. package/dist/integrations/base/rest-api-client-base.js +98 -0
  38. package/dist/integrations/base/rest-api-client-base.js.map +1 -0
  39. package/dist/integrations/base/rest-api-integration-client.d.ts +11 -65
  40. package/dist/integrations/base/rest-api-integration-client.d.ts.map +1 -1
  41. package/dist/integrations/base/rest-api-integration-client.js +11 -174
  42. package/dist/integrations/base/rest-api-integration-client.js.map +1 -1
  43. package/dist/integrations/base/types.d.ts +1 -67
  44. package/dist/integrations/base/types.d.ts.map +1 -1
  45. package/dist/integrations/bigquery/client.d.ts +1 -1
  46. package/dist/integrations/bigquery/client.d.ts.map +1 -1
  47. package/dist/integrations/bigquery/client.js.map +1 -1
  48. package/dist/integrations/bigquery/types.d.ts +3 -3
  49. package/dist/integrations/bigquery/types.d.ts.map +1 -1
  50. package/dist/integrations/box/types.d.ts +1 -1
  51. package/dist/integrations/cockroachdb/client.d.ts +1 -1
  52. package/dist/integrations/cockroachdb/client.d.ts.map +1 -1
  53. package/dist/integrations/cockroachdb/client.js.map +1 -1
  54. package/dist/integrations/cockroachdb/types.d.ts.map +1 -1
  55. package/dist/integrations/cosmosdb/client.d.ts +1 -1
  56. package/dist/integrations/cosmosdb/client.d.ts.map +1 -1
  57. package/dist/integrations/cosmosdb/client.js.map +1 -1
  58. package/dist/integrations/cosmosdb/client.test.js.map +1 -1
  59. package/dist/integrations/cosmosdb/types.d.ts.map +1 -1
  60. package/dist/integrations/databricks/client.d.ts +1 -1
  61. package/dist/integrations/databricks/client.d.ts.map +1 -1
  62. package/dist/integrations/databricks/client.js.map +1 -1
  63. package/dist/integrations/databricks/types.d.ts +3 -3
  64. package/dist/integrations/databricks/types.d.ts.map +1 -1
  65. package/dist/integrations/declarations.d.ts +36 -104
  66. package/dist/integrations/declarations.d.ts.map +1 -1
  67. package/dist/integrations/declarations.js +5 -68
  68. package/dist/integrations/declarations.js.map +1 -1
  69. package/dist/integrations/declarations.test.js.map +1 -1
  70. package/dist/integrations/documentation-resolver.test.d.ts +2 -0
  71. package/dist/integrations/documentation-resolver.test.d.ts.map +1 -0
  72. package/dist/integrations/documentation-resolver.test.js +608 -0
  73. package/dist/integrations/documentation-resolver.test.js.map +1 -0
  74. package/dist/integrations/documentation.d.ts +8 -0
  75. package/dist/integrations/documentation.d.ts.map +1 -0
  76. package/dist/integrations/documentation.js +277 -0
  77. package/dist/integrations/documentation.js.map +1 -0
  78. package/dist/integrations/documentation.test.d.ts +2 -0
  79. package/dist/integrations/documentation.test.d.ts.map +1 -0
  80. package/dist/integrations/documentation.test.js +81 -0
  81. package/dist/integrations/documentation.test.js.map +1 -0
  82. package/dist/integrations/dynamodb/client.d.ts +1 -1
  83. package/dist/integrations/dynamodb/client.d.ts.map +1 -1
  84. package/dist/integrations/dynamodb/client.js.map +1 -1
  85. package/dist/integrations/dynamodb/types.d.ts.map +1 -1
  86. package/dist/integrations/gcs/client.d.ts +1 -1
  87. package/dist/integrations/gcs/client.d.ts.map +1 -1
  88. package/dist/integrations/gcs/client.js.map +1 -1
  89. package/dist/integrations/gcs/types.d.ts.map +1 -1
  90. package/dist/integrations/googledrive/types.d.ts +1 -1
  91. package/dist/integrations/graphql/client.test.d.ts +15 -0
  92. package/dist/integrations/graphql/client.test.d.ts.map +1 -0
  93. package/dist/integrations/graphql/client.test.js +148 -0
  94. package/dist/integrations/graphql/client.test.js.map +1 -0
  95. package/dist/integrations/graphql/types.d.ts +22 -3
  96. package/dist/integrations/graphql/types.d.ts.map +1 -1
  97. package/dist/integrations/gsheets/client.d.ts +1 -1
  98. package/dist/integrations/gsheets/client.d.ts.map +1 -1
  99. package/dist/integrations/gsheets/client.js.map +1 -1
  100. package/dist/integrations/gsheets/types.d.ts.map +1 -1
  101. package/dist/integrations/index.d.ts +2 -12
  102. package/dist/integrations/index.d.ts.map +1 -1
  103. package/dist/integrations/index.js +2 -8
  104. package/dist/integrations/index.js.map +1 -1
  105. package/dist/integrations/lakebase/client.d.ts +1 -1
  106. package/dist/integrations/lakebase/client.d.ts.map +1 -1
  107. package/dist/integrations/lakebase/client.js.map +1 -1
  108. package/dist/integrations/lakebase/types.d.ts +4 -4
  109. package/dist/integrations/lakebase/types.d.ts.map +1 -1
  110. package/dist/integrations/mariadb/client.d.ts +1 -1
  111. package/dist/integrations/mariadb/client.d.ts.map +1 -1
  112. package/dist/integrations/mariadb/client.js.map +1 -1
  113. package/dist/integrations/mariadb/types.d.ts +2 -2
  114. package/dist/integrations/mariadb/types.d.ts.map +1 -1
  115. package/dist/integrations/mongodb/client.d.ts +1 -1
  116. package/dist/integrations/mongodb/client.d.ts.map +1 -1
  117. package/dist/integrations/mongodb/client.js.map +1 -1
  118. package/dist/integrations/mongodb/types.d.ts.map +1 -1
  119. package/dist/integrations/mssql/client.d.ts +1 -1
  120. package/dist/integrations/mssql/client.d.ts.map +1 -1
  121. package/dist/integrations/mssql/client.js.map +1 -1
  122. package/dist/integrations/mssql/types.d.ts +2 -2
  123. package/dist/integrations/mssql/types.d.ts.map +1 -1
  124. package/dist/integrations/mysql/client.d.ts +1 -1
  125. package/dist/integrations/mysql/client.d.ts.map +1 -1
  126. package/dist/integrations/mysql/client.js.map +1 -1
  127. package/dist/integrations/mysql/types.d.ts +4 -4
  128. package/dist/integrations/mysql/types.d.ts.map +1 -1
  129. package/dist/integrations/openai_v2/types.d.ts +4 -22
  130. package/dist/integrations/openai_v2/types.d.ts.map +1 -1
  131. package/dist/integrations/oracledb/client.d.ts +1 -1
  132. package/dist/integrations/oracledb/client.d.ts.map +1 -1
  133. package/dist/integrations/oracledb/client.js.map +1 -1
  134. package/dist/integrations/oracledb/types.d.ts +2 -2
  135. package/dist/integrations/oracledb/types.d.ts.map +1 -1
  136. package/dist/integrations/postgres/client.d.ts +2 -2
  137. package/dist/integrations/postgres/client.d.ts.map +1 -1
  138. package/dist/integrations/postgres/client.js.map +1 -1
  139. package/dist/integrations/postgres/types.d.ts.map +1 -1
  140. package/dist/integrations/redshift/client.d.ts +1 -1
  141. package/dist/integrations/redshift/client.d.ts.map +1 -1
  142. package/dist/integrations/redshift/client.js.map +1 -1
  143. package/dist/integrations/redshift/types.d.ts.map +1 -1
  144. package/dist/integrations/registry.d.ts +6 -27
  145. package/dist/integrations/registry.d.ts.map +1 -1
  146. package/dist/integrations/registry.js +64 -88
  147. package/dist/integrations/registry.js.map +1 -1
  148. package/dist/integrations/registry.test.js +1 -3
  149. package/dist/integrations/registry.test.js.map +1 -1
  150. package/dist/integrations/restapiintegration/types.d.ts +2 -2
  151. package/dist/integrations/restapiintegration/types.d.ts.map +1 -1
  152. package/dist/integrations/s3/client.d.ts +1 -1
  153. package/dist/integrations/s3/client.d.ts.map +1 -1
  154. package/dist/integrations/s3/client.js.map +1 -1
  155. package/dist/integrations/s3/types.d.ts +3 -1
  156. package/dist/integrations/s3/types.d.ts.map +1 -1
  157. package/dist/integrations/salesforce/client.d.ts +1 -1
  158. package/dist/integrations/salesforce/client.d.ts.map +1 -1
  159. package/dist/integrations/salesforce/client.js.map +1 -1
  160. package/dist/integrations/salesforce/types.d.ts.map +1 -1
  161. package/dist/integrations/slack/client.d.ts +13 -9
  162. package/dist/integrations/slack/client.d.ts.map +1 -1
  163. package/dist/integrations/slack/client.js +60 -8
  164. package/dist/integrations/slack/client.js.map +1 -1
  165. package/dist/integrations/slack/client.test.d.ts +11 -0
  166. package/dist/integrations/slack/client.test.d.ts.map +1 -0
  167. package/dist/integrations/slack/client.test.js +368 -0
  168. package/dist/integrations/slack/client.test.js.map +1 -0
  169. package/dist/integrations/slack/index.d.ts +2 -1
  170. package/dist/integrations/slack/index.d.ts.map +1 -1
  171. package/dist/integrations/slack/index.js +1 -0
  172. package/dist/integrations/slack/index.js.map +1 -1
  173. package/dist/integrations/slack/types.d.ts +127 -28
  174. package/dist/integrations/slack/types.d.ts.map +1 -1
  175. package/dist/integrations/slack/types.js +27 -1
  176. package/dist/integrations/slack/types.js.map +1 -1
  177. package/dist/integrations/smtp/client.d.ts +1 -1
  178. package/dist/integrations/smtp/client.d.ts.map +1 -1
  179. package/dist/integrations/smtp/client.js.map +1 -1
  180. package/dist/integrations/snowflake/client.d.ts +3 -3
  181. package/dist/integrations/snowflake/client.d.ts.map +1 -1
  182. package/dist/integrations/snowflake/client.js +2 -2
  183. package/dist/integrations/snowflake/client.js.map +1 -1
  184. package/dist/integrations/snowflake/types.d.ts.map +1 -1
  185. package/dist/integrations/snowflakecortex/client.d.ts +1 -2
  186. package/dist/integrations/snowflakecortex/client.d.ts.map +1 -1
  187. package/dist/integrations/snowflakecortex/client.js +1 -2
  188. package/dist/integrations/snowflakecortex/client.js.map +1 -1
  189. package/dist/integrations/snowflakecortex/types.d.ts +3 -4
  190. package/dist/integrations/snowflakecortex/types.d.ts.map +1 -1
  191. package/dist/integrations/snowflakepostgres/client.d.ts +1 -1
  192. package/dist/integrations/snowflakepostgres/client.d.ts.map +1 -1
  193. package/dist/integrations/snowflakepostgres/client.js.map +1 -1
  194. package/dist/integrations/snowflakepostgres/types.d.ts.map +1 -1
  195. package/dist/runtime/context.d.ts +3 -3
  196. package/dist/runtime/context.d.ts.map +1 -1
  197. package/dist/runtime/context.js.map +1 -1
  198. package/dist/runtime/executor.d.ts +2 -2
  199. package/dist/runtime/index.d.ts +0 -3
  200. package/dist/runtime/index.d.ts.map +1 -1
  201. package/dist/runtime/index.js +1 -6
  202. package/dist/runtime/index.js.map +1 -1
  203. package/dist/types.d.ts +15 -6
  204. package/dist/types.d.ts.map +1 -1
  205. package/package.json +2 -2
  206. package/src/api/definition.test.ts +41 -15
  207. package/src/api/definition.ts +20 -13
  208. package/src/api/index.ts +0 -4
  209. package/src/errors.ts +1 -49
  210. package/src/index.ts +20 -61
  211. package/src/integrations/airtable/docs.manifest.json +5 -0
  212. package/src/integrations/anthropic/README.md +5 -101
  213. package/src/integrations/anthropic/docs.manifest.json +5 -0
  214. package/src/integrations/anthropic/types.ts +3 -29
  215. package/src/integrations/asana/README.md +12 -12
  216. package/src/integrations/asana/docs.manifest.json +5 -0
  217. package/src/integrations/athena/README.md +4 -4
  218. package/src/integrations/athena/client.ts +5 -3
  219. package/src/integrations/athena/docs.manifest.json +5 -0
  220. package/src/integrations/athena/types.ts +3 -2
  221. package/src/integrations/base/graphql-integration-client.ts +27 -5
  222. package/src/integrations/base/index.ts +2 -3
  223. package/src/integrations/base/rest-api-client-base.ts +134 -0
  224. package/src/integrations/base/rest-api-integration-client.ts +15 -239
  225. package/src/integrations/base/types.ts +4 -74
  226. package/src/integrations/bigquery/README.md +28 -3
  227. package/src/integrations/bigquery/client.ts +5 -3
  228. package/src/integrations/bigquery/docs.manifest.json +5 -0
  229. package/src/integrations/bigquery/types.ts +4 -3
  230. package/src/integrations/bitbucket/README.md +19 -19
  231. package/src/integrations/bitbucket/docs.manifest.json +5 -0
  232. package/src/integrations/box/README.md +24 -24
  233. package/src/integrations/box/docs.manifest.json +5 -0
  234. package/src/integrations/box/types.ts +1 -1
  235. package/src/integrations/circleci/README.md +18 -18
  236. package/src/integrations/circleci/docs.manifest.json +5 -0
  237. package/src/integrations/cockroachdb/client.ts +5 -3
  238. package/src/integrations/cockroachdb/docs.manifest.json +5 -0
  239. package/src/integrations/cockroachdb/types.ts +1 -0
  240. package/src/integrations/cohere/README.md +11 -11
  241. package/src/integrations/cohere/docs.manifest.json +5 -0
  242. package/src/integrations/confluence/docs.manifest.json +5 -0
  243. package/src/integrations/cosmosdb/client.test.ts +2 -1
  244. package/src/integrations/cosmosdb/client.ts +5 -3
  245. package/src/integrations/cosmosdb/docs.manifest.json +5 -0
  246. package/src/integrations/cosmosdb/types.ts +1 -0
  247. package/src/integrations/databricks/README.md +29 -4
  248. package/src/integrations/databricks/client.ts +5 -3
  249. package/src/integrations/databricks/docs.manifest.json +5 -0
  250. package/src/integrations/databricks/types.ts +4 -3
  251. package/src/integrations/datadog/docs.manifest.json +5 -0
  252. package/src/integrations/declarations.test.ts +1 -0
  253. package/src/integrations/declarations.ts +36 -136
  254. package/src/integrations/documentation-resolver.test.ts +704 -0
  255. package/src/integrations/documentation.test.ts +120 -0
  256. package/src/integrations/documentation.ts +421 -0
  257. package/src/integrations/dropbox/docs.manifest.json +5 -0
  258. package/src/integrations/dynamodb/client.ts +3 -2
  259. package/src/integrations/dynamodb/docs.manifest.json +5 -0
  260. package/src/integrations/dynamodb/types.ts +1 -0
  261. package/src/integrations/elasticsearch/docs.manifest.json +5 -0
  262. package/src/integrations/fireworks/README.md +43 -17
  263. package/src/integrations/fireworks/docs.manifest.json +5 -0
  264. package/src/integrations/front/docs.manifest.json +5 -0
  265. package/src/integrations/gcs/client.ts +5 -3
  266. package/src/integrations/gcs/docs.manifest.json +5 -0
  267. package/src/integrations/gcs/types.ts +1 -0
  268. package/src/integrations/gemini/docs.manifest.json +5 -0
  269. package/src/integrations/github/docs.manifest.json +5 -0
  270. package/src/integrations/googleanalytics/README.md +2 -2
  271. package/src/integrations/googleanalytics/docs.manifest.json +5 -0
  272. package/src/integrations/googledrive/README.md +27 -24
  273. package/src/integrations/googledrive/docs.manifest.json +5 -0
  274. package/src/integrations/googledrive/types.ts +1 -1
  275. package/src/integrations/graphql/README.md +2 -2
  276. package/src/integrations/graphql/client.test.ts +220 -0
  277. package/src/integrations/graphql/docs.manifest.json +5 -0
  278. package/src/integrations/graphql/types.ts +23 -1
  279. package/src/integrations/groq/README.md +49 -42
  280. package/src/integrations/groq/docs.manifest.json +5 -0
  281. package/src/integrations/gsheets/README.md +2 -2
  282. package/src/integrations/gsheets/client.ts +5 -3
  283. package/src/integrations/gsheets/docs.manifest.json +5 -0
  284. package/src/integrations/gsheets/types.ts +1 -0
  285. package/src/integrations/hubspot/docs.manifest.json +5 -0
  286. package/src/integrations/index.ts +1 -52
  287. package/src/integrations/intercom/docs.manifest.json +5 -0
  288. package/src/integrations/jira/docs.manifest.json +5 -0
  289. package/src/integrations/lakebase/README.md +242 -0
  290. package/src/integrations/lakebase/client.ts +6 -4
  291. package/src/integrations/lakebase/docs.manifest.json +5 -0
  292. package/src/integrations/lakebase/types.ts +5 -4
  293. package/src/integrations/launchdarkly/README.md +2 -2
  294. package/src/integrations/launchdarkly/docs.manifest.json +5 -0
  295. package/src/integrations/mariadb/README.md +3 -3
  296. package/src/integrations/mariadb/client.ts +5 -3
  297. package/src/integrations/mariadb/docs.manifest.json +5 -0
  298. package/src/integrations/mariadb/types.ts +3 -2
  299. package/src/integrations/mistral/README.md +39 -13
  300. package/src/integrations/mistral/docs.manifest.json +5 -0
  301. package/src/integrations/mongodb/README.md +65 -12
  302. package/src/integrations/mongodb/client.ts +5 -3
  303. package/src/integrations/mongodb/docs.manifest.json +5 -0
  304. package/src/integrations/mongodb/types.ts +1 -0
  305. package/src/integrations/mssql/README.md +3 -3
  306. package/src/integrations/mssql/client.ts +5 -3
  307. package/src/integrations/mssql/docs.manifest.json +5 -0
  308. package/src/integrations/mssql/types.ts +3 -2
  309. package/src/integrations/mysql/README.md +4 -4
  310. package/src/integrations/mysql/client.ts +5 -3
  311. package/src/integrations/mysql/docs.manifest.json +5 -0
  312. package/src/integrations/mysql/types.ts +5 -4
  313. package/src/integrations/notion/docs.manifest.json +5 -0
  314. package/src/integrations/openai_v2/README.md +44 -116
  315. package/src/integrations/openai_v2/docs.manifest.json +5 -0
  316. package/src/integrations/openai_v2/types.ts +4 -29
  317. package/src/integrations/oracledb/README.md +3 -3
  318. package/src/integrations/oracledb/client.ts +5 -3
  319. package/src/integrations/oracledb/docs.manifest.json +5 -0
  320. package/src/integrations/oracledb/types.ts +3 -2
  321. package/src/integrations/pagerduty/README.md +2 -2
  322. package/src/integrations/pagerduty/docs.manifest.json +5 -0
  323. package/src/integrations/perplexity/README.md +39 -47
  324. package/src/integrations/perplexity/docs.manifest.json +5 -0
  325. package/src/integrations/postgres/client.ts +6 -4
  326. package/src/integrations/postgres/docs.manifest.json +5 -0
  327. package/src/integrations/postgres/types.ts +1 -0
  328. package/src/integrations/redshift/client.ts +5 -3
  329. package/src/integrations/redshift/docs.manifest.json +5 -0
  330. package/src/integrations/redshift/types.ts +1 -0
  331. package/src/integrations/registry.test.ts +2 -3
  332. package/src/integrations/registry.ts +69 -188
  333. package/src/integrations/restapiintegration/README.md +320 -0
  334. package/src/integrations/restapiintegration/docs.manifest.json +5 -0
  335. package/src/integrations/restapiintegration/types.ts +2 -8
  336. package/src/integrations/s3/client.ts +5 -3
  337. package/src/integrations/s3/docs.manifest.json +5 -0
  338. package/src/integrations/s3/types.ts +4 -1
  339. package/src/integrations/salesforce/README.md +11 -9
  340. package/src/integrations/salesforce/client.ts +3 -2
  341. package/src/integrations/salesforce/docs.manifest.json +5 -0
  342. package/src/integrations/salesforce/types.ts +1 -0
  343. package/src/integrations/segment/docs.manifest.json +5 -0
  344. package/src/integrations/sendgrid/README.md +2 -2
  345. package/src/integrations/sendgrid/docs.manifest.json +5 -0
  346. package/src/integrations/slack/README.md +62 -19
  347. package/src/integrations/slack/client.test.ts +553 -0
  348. package/src/integrations/slack/client.ts +92 -12
  349. package/src/integrations/slack/docs.manifest.json +5 -0
  350. package/src/integrations/slack/index.ts +6 -1
  351. package/src/integrations/slack/types.ts +142 -29
  352. package/src/integrations/smtp/README.md +220 -0
  353. package/src/integrations/smtp/client.ts +4 -2
  354. package/src/integrations/smtp/docs.manifest.json +5 -0
  355. package/src/integrations/snowflake/client.ts +7 -5
  356. package/src/integrations/snowflake/docs.manifest.json +5 -0
  357. package/src/integrations/snowflake/types.ts +1 -0
  358. package/src/integrations/snowflakecortex/README.md +167 -0
  359. package/src/integrations/snowflakecortex/client.ts +2 -3
  360. package/src/integrations/snowflakecortex/docs.manifest.json +5 -0
  361. package/src/integrations/snowflakecortex/types.ts +3 -11
  362. package/src/integrations/snowflakepostgres/README.md +233 -0
  363. package/src/integrations/snowflakepostgres/client.ts +1 -1
  364. package/src/integrations/snowflakepostgres/docs.manifest.json +5 -0
  365. package/src/integrations/snowflakepostgres/types.ts +1 -0
  366. package/src/integrations/stabilityai/README.md +2 -2
  367. package/src/integrations/stabilityai/docs.manifest.json +5 -0
  368. package/src/integrations/stripe/docs.manifest.json +5 -0
  369. package/src/integrations/superblocks-ocr/docs.manifest.json +5 -0
  370. package/src/integrations/twilio/docs.manifest.json +5 -0
  371. package/src/integrations/zendesk/docs.manifest.json +5 -0
  372. package/src/integrations/zoom/README.md +15 -15
  373. package/src/integrations/zoom/docs.manifest.json +5 -0
  374. package/src/runtime/context.ts +11 -11
  375. package/src/runtime/executor.ts +2 -2
  376. package/src/runtime/index.ts +1 -23
  377. package/src/types.ts +16 -6
  378. package/dist/api/streaming.d.ts +0 -229
  379. package/dist/api/streaming.d.ts.map +0 -1
  380. package/dist/api/streaming.js +0 -107
  381. package/dist/api/streaming.js.map +0 -1
  382. package/dist/api/streaming.test.d.ts +0 -5
  383. package/dist/api/streaming.test.d.ts.map +0 -1
  384. package/dist/api/streaming.test.js +0 -364
  385. package/dist/api/streaming.test.js.map +0 -1
  386. package/dist/integrations/couchbase/client.d.ts +0 -36
  387. package/dist/integrations/couchbase/client.d.ts.map +0 -1
  388. package/dist/integrations/couchbase/client.js +0 -148
  389. package/dist/integrations/couchbase/client.js.map +0 -1
  390. package/dist/integrations/couchbase/index.d.ts +0 -8
  391. package/dist/integrations/couchbase/index.d.ts.map +0 -1
  392. package/dist/integrations/couchbase/index.js +0 -7
  393. package/dist/integrations/couchbase/index.js.map +0 -1
  394. package/dist/integrations/couchbase/types.d.ts +0 -100
  395. package/dist/integrations/couchbase/types.d.ts.map +0 -1
  396. package/dist/integrations/couchbase/types.js +0 -5
  397. package/dist/integrations/couchbase/types.js.map +0 -1
  398. package/dist/integrations/kafka/client.d.ts +0 -25
  399. package/dist/integrations/kafka/client.d.ts.map +0 -1
  400. package/dist/integrations/kafka/client.js +0 -124
  401. package/dist/integrations/kafka/client.js.map +0 -1
  402. package/dist/integrations/kafka/index.d.ts +0 -8
  403. package/dist/integrations/kafka/index.d.ts.map +0 -1
  404. package/dist/integrations/kafka/index.js +0 -7
  405. package/dist/integrations/kafka/index.js.map +0 -1
  406. package/dist/integrations/kafka/types.d.ts +0 -113
  407. package/dist/integrations/kafka/types.d.ts.map +0 -1
  408. package/dist/integrations/kafka/types.js +0 -5
  409. package/dist/integrations/kafka/types.js.map +0 -1
  410. package/dist/integrations/kinesis/client.d.ts +0 -31
  411. package/dist/integrations/kinesis/client.d.ts.map +0 -1
  412. package/dist/integrations/kinesis/client.js +0 -101
  413. package/dist/integrations/kinesis/client.js.map +0 -1
  414. package/dist/integrations/kinesis/index.d.ts +0 -8
  415. package/dist/integrations/kinesis/index.d.ts.map +0 -1
  416. package/dist/integrations/kinesis/index.js +0 -7
  417. package/dist/integrations/kinesis/index.js.map +0 -1
  418. package/dist/integrations/kinesis/types.d.ts +0 -97
  419. package/dist/integrations/kinesis/types.d.ts.map +0 -1
  420. package/dist/integrations/kinesis/types.js +0 -7
  421. package/dist/integrations/kinesis/types.js.map +0 -1
  422. package/dist/integrations/python/client.d.ts +0 -42
  423. package/dist/integrations/python/client.d.ts.map +0 -1
  424. package/dist/integrations/python/client.js +0 -89
  425. package/dist/integrations/python/client.js.map +0 -1
  426. package/dist/integrations/python/client.test.d.ts +0 -5
  427. package/dist/integrations/python/client.test.d.ts.map +0 -1
  428. package/dist/integrations/python/client.test.js +0 -214
  429. package/dist/integrations/python/client.test.js.map +0 -1
  430. package/dist/integrations/python/index.d.ts +0 -6
  431. package/dist/integrations/python/index.d.ts.map +0 -1
  432. package/dist/integrations/python/index.js +0 -5
  433. package/dist/integrations/python/index.js.map +0 -1
  434. package/dist/integrations/python/types.d.ts +0 -85
  435. package/dist/integrations/python/types.d.ts.map +0 -1
  436. package/dist/integrations/python/types.js +0 -5
  437. package/dist/integrations/python/types.js.map +0 -1
  438. package/dist/integrations/redis/client.d.ts +0 -43
  439. package/dist/integrations/redis/client.d.ts.map +0 -1
  440. package/dist/integrations/redis/client.js +0 -142
  441. package/dist/integrations/redis/client.js.map +0 -1
  442. package/dist/integrations/redis/index.d.ts +0 -8
  443. package/dist/integrations/redis/index.d.ts.map +0 -1
  444. package/dist/integrations/redis/index.js +0 -7
  445. package/dist/integrations/redis/index.js.map +0 -1
  446. package/dist/integrations/redis/types.d.ts +0 -137
  447. package/dist/integrations/redis/types.d.ts.map +0 -1
  448. package/dist/integrations/redis/types.js +0 -5
  449. package/dist/integrations/redis/types.js.map +0 -1
  450. package/dist/runtime/execute.d.ts +0 -128
  451. package/dist/runtime/execute.d.ts.map +0 -1
  452. package/dist/runtime/execute.js +0 -84
  453. package/dist/runtime/execute.js.map +0 -1
  454. package/dist/runtime/streaming-context.d.ts +0 -49
  455. package/dist/runtime/streaming-context.d.ts.map +0 -1
  456. package/dist/runtime/streaming-context.js +0 -71
  457. package/dist/runtime/streaming-context.js.map +0 -1
  458. package/dist/runtime/streaming-executor.d.ts +0 -159
  459. package/dist/runtime/streaming-executor.d.ts.map +0 -1
  460. package/dist/runtime/streaming-executor.js +0 -229
  461. package/dist/runtime/streaming-executor.js.map +0 -1
  462. package/src/api/streaming.test.ts +0 -432
  463. package/src/api/streaming.ts +0 -302
  464. package/src/integrations/couchbase/README.md +0 -138
  465. package/src/integrations/couchbase/client.ts +0 -224
  466. package/src/integrations/couchbase/index.ts +0 -8
  467. package/src/integrations/couchbase/types.ts +0 -125
  468. package/src/integrations/kafka/README.md +0 -144
  469. package/src/integrations/kafka/client.ts +0 -215
  470. package/src/integrations/kafka/index.ts +0 -14
  471. package/src/integrations/kafka/types.ts +0 -127
  472. package/src/integrations/kinesis/README.md +0 -153
  473. package/src/integrations/kinesis/client.ts +0 -146
  474. package/src/integrations/kinesis/index.ts +0 -14
  475. package/src/integrations/kinesis/types.ts +0 -114
  476. package/src/integrations/python/README.md +0 -566
  477. package/src/integrations/python/client.test.ts +0 -340
  478. package/src/integrations/python/client.ts +0 -134
  479. package/src/integrations/python/index.ts +0 -6
  480. package/src/integrations/python/types.ts +0 -91
  481. package/src/integrations/redis/README.md +0 -200
  482. package/src/integrations/redis/client.ts +0 -207
  483. package/src/integrations/redis/index.ts +0 -8
  484. package/src/integrations/redis/types.ts +0 -166
  485. package/src/runtime/execute.ts +0 -221
  486. package/src/runtime/streaming-context.ts +0 -164
  487. package/src/runtime/streaming-executor.ts +0 -367
@@ -0,0 +1,120 @@
1
+ import { existsSync, readFileSync, readdirSync } from "node:fs";
2
+ import { dirname, resolve } from "node:path";
3
+ import { fileURLToPath } from "node:url";
4
+
5
+ import { describe, expect, it } from "vitest";
6
+
7
+ import { SUPPORTED_PLUGINS } from "./registry.js";
8
+
9
+ const TEST_DIR = dirname(fileURLToPath(import.meta.url));
10
+
11
+ type PlaceholderDocsCase = {
12
+ integrationId: string;
13
+ expectedPlaceholder: string;
14
+ rejectsPostgresStyle?: boolean;
15
+ };
16
+
17
+ const DOC_DIRECTORY_ALIASES = {
18
+ graphqlintegration: "graphql",
19
+ } as const;
20
+
21
+ const DOC_DIRECTORY_EXCLUSIONS = new Set(["base"]);
22
+
23
+ function hasDocDirectoryAlias(
24
+ pluginId: string,
25
+ ): pluginId is keyof typeof DOC_DIRECTORY_ALIASES {
26
+ return pluginId in DOC_DIRECTORY_ALIASES;
27
+ }
28
+
29
+ const EXPECTED_DOC_DIRECTORIES = Array.from(
30
+ new Set(
31
+ Object.values(SUPPORTED_PLUGINS)
32
+ .map((pluginId) =>
33
+ hasDocDirectoryAlias(pluginId)
34
+ ? DOC_DIRECTORY_ALIASES[pluginId]
35
+ : pluginId,
36
+ )
37
+ .filter((directory) => !DOC_DIRECTORY_EXCLUSIONS.has(directory)),
38
+ ),
39
+ ).sort();
40
+
41
+ const ACTUAL_DOC_DIRECTORIES = readdirSync(TEST_DIR, { withFileTypes: true })
42
+ .filter((entry) => entry.isDirectory())
43
+ .map((entry) => entry.name)
44
+ .filter((directory) => !DOC_DIRECTORY_EXCLUSIONS.has(directory))
45
+ .sort();
46
+
47
+ const PLACEHOLDER_DOC_CASES: PlaceholderDocsCase[] = [
48
+ { integrationId: "athena", expectedPlaceholder: "?" },
49
+ { integrationId: "bigquery", expectedPlaceholder: "?" },
50
+ {
51
+ integrationId: "cockroachdb",
52
+ expectedPlaceholder: "$1",
53
+ rejectsPostgresStyle: false,
54
+ },
55
+ { integrationId: "databricks", expectedPlaceholder: ":PARAM_1" },
56
+ { integrationId: "dynamodb", expectedPlaceholder: "?" },
57
+ {
58
+ integrationId: "lakebase",
59
+ expectedPlaceholder: "$1",
60
+ rejectsPostgresStyle: false,
61
+ },
62
+ { integrationId: "mariadb", expectedPlaceholder: "?" },
63
+ { integrationId: "mssql", expectedPlaceholder: "@PARAM_1" },
64
+ { integrationId: "mysql", expectedPlaceholder: "?" },
65
+ { integrationId: "oracledb", expectedPlaceholder: ":1" },
66
+ {
67
+ integrationId: "redshift",
68
+ expectedPlaceholder: "$1",
69
+ rejectsPostgresStyle: false,
70
+ },
71
+ { integrationId: "snowflake", expectedPlaceholder: "?" },
72
+ {
73
+ integrationId: "snowflakepostgres",
74
+ expectedPlaceholder: "$1",
75
+ rejectsPostgresStyle: false,
76
+ },
77
+ ];
78
+
79
+ function readIntegrationFile(integrationId: string, fileName: string): string {
80
+ return readFileSync(resolve(TEST_DIR, integrationId, fileName), "utf8");
81
+ }
82
+
83
+ describe("SQL integration documentation", () => {
84
+ it("documents every supported integration directory", () => {
85
+ expect(ACTUAL_DOC_DIRECTORIES).toEqual(EXPECTED_DOC_DIRECTORIES);
86
+
87
+ for (const integrationId of EXPECTED_DOC_DIRECTORIES) {
88
+ expect(existsSync(resolve(TEST_DIR, integrationId, "README.md"))).toBe(
89
+ true,
90
+ );
91
+ expect(existsSync(resolve(TEST_DIR, integrationId, "types.ts"))).toBe(
92
+ true,
93
+ );
94
+ }
95
+ });
96
+
97
+ it.each(PLACEHOLDER_DOC_CASES)(
98
+ "$integrationId README uses $expectedPlaceholder placeholders",
99
+ ({ integrationId, expectedPlaceholder, rejectsPostgresStyle = true }) => {
100
+ const readme = readIntegrationFile(integrationId, "README.md");
101
+
102
+ expect(readme).toContain(expectedPlaceholder);
103
+ if (rejectsPostgresStyle) {
104
+ expect(readme).not.toMatch(/\$\d+/);
105
+ }
106
+ },
107
+ );
108
+
109
+ it.each(PLACEHOLDER_DOC_CASES)(
110
+ "$integrationId JSDoc uses $expectedPlaceholder placeholders",
111
+ ({ integrationId, expectedPlaceholder, rejectsPostgresStyle = true }) => {
112
+ const typeDocs = readIntegrationFile(integrationId, "types.ts");
113
+
114
+ expect(typeDocs).toContain(expectedPlaceholder);
115
+ if (rejectsPostgresStyle) {
116
+ expect(typeDocs).not.toMatch(/\$\d+/);
117
+ }
118
+ },
119
+ );
120
+ });
@@ -0,0 +1,421 @@
1
+ import { readFile } from "node:fs/promises";
2
+ import { dirname, resolve } from "node:path";
3
+ import { fileURLToPath } from "node:url";
4
+
5
+ const INTEGRATIONS_DIR = dirname(fileURLToPath(import.meta.url));
6
+ type SemVer = `${number}.${number}.${number}`;
7
+
8
+ const DOC_DIRECTORY_ALIASES = {
9
+ graphqlintegration: "graphql",
10
+ } as const;
11
+
12
+ interface DocumentationOverlay {
13
+ file: string;
14
+ versionRange: string;
15
+ }
16
+
17
+ interface DocumentationManifest {
18
+ base?: string;
19
+ overlays: DocumentationOverlay[];
20
+ }
21
+
22
+ type OverlayOperation =
23
+ | {
24
+ type: "append";
25
+ content: string;
26
+ }
27
+ | {
28
+ type: "replace";
29
+ sectionTitle: string;
30
+ content: string;
31
+ };
32
+
33
+ export interface ResolveIntegrationDocumentationOptions {
34
+ pluginVersion?: SemVer;
35
+ integrationsDirectory?: string;
36
+ }
37
+
38
+ function hasDocDirectoryAlias(
39
+ pluginId: string,
40
+ ): pluginId is keyof typeof DOC_DIRECTORY_ALIASES {
41
+ return pluginId in DOC_DIRECTORY_ALIASES;
42
+ }
43
+
44
+ function getDocDirectoryForPlugin(pluginId: string): string {
45
+ if (hasDocDirectoryAlias(pluginId)) {
46
+ return DOC_DIRECTORY_ALIASES[pluginId];
47
+ }
48
+
49
+ return pluginId;
50
+ }
51
+
52
+ async function parseDocumentationManifest(
53
+ manifestPath: string,
54
+ ): Promise<DocumentationManifest | null> {
55
+ let raw: string;
56
+ try {
57
+ raw = await readFile(manifestPath, "utf8");
58
+ } catch (error) {
59
+ if (
60
+ error instanceof Error &&
61
+ "code" in error &&
62
+ (error as NodeJS.ErrnoException).code === "ENOENT"
63
+ ) {
64
+ return null;
65
+ }
66
+ throw error;
67
+ }
68
+
69
+ const parsed = JSON.parse(raw) as {
70
+ base?: unknown;
71
+ overlays?: unknown;
72
+ };
73
+ if (!Array.isArray(parsed.overlays)) {
74
+ throw new Error(
75
+ `Invalid documentation manifest at ${manifestPath}: "overlays" must be an array.`,
76
+ );
77
+ }
78
+
79
+ const overlays: DocumentationOverlay[] = parsed.overlays.map(
80
+ (overlay, index) => {
81
+ if (
82
+ typeof overlay !== "object" ||
83
+ overlay === null ||
84
+ !("file" in overlay) ||
85
+ !("versionRange" in overlay)
86
+ ) {
87
+ throw new Error(
88
+ `Invalid overlay entry at index ${index} in ${manifestPath}.`,
89
+ );
90
+ }
91
+
92
+ const { file, versionRange } = overlay as {
93
+ file: unknown;
94
+ versionRange: unknown;
95
+ };
96
+
97
+ if (typeof file !== "string" || file.trim().length === 0) {
98
+ throw new Error(
99
+ `Invalid "file" for overlay index ${index} in ${manifestPath}.`,
100
+ );
101
+ }
102
+ if (
103
+ typeof versionRange !== "string" ||
104
+ versionRange.trim().length === 0
105
+ ) {
106
+ throw new Error(
107
+ `Invalid "versionRange" for overlay index ${index} in ${manifestPath}.`,
108
+ );
109
+ }
110
+
111
+ return {
112
+ file,
113
+ versionRange,
114
+ };
115
+ },
116
+ );
117
+
118
+ const base =
119
+ typeof parsed.base === "string" && parsed.base.trim().length > 0
120
+ ? parsed.base
121
+ : undefined;
122
+
123
+ return { base, overlays };
124
+ }
125
+
126
+ function appendOverlay(
127
+ baseDocumentation: string,
128
+ overlayDocumentation: string,
129
+ ): string {
130
+ if (overlayDocumentation.trim().length === 0) {
131
+ return baseDocumentation;
132
+ }
133
+
134
+ const normalizedBase = baseDocumentation.replace(/\s+$/, "");
135
+ const normalizedOverlay = overlayDocumentation.replace(/^\s+/, "");
136
+
137
+ return `${normalizedBase}\n\n${normalizedOverlay}`;
138
+ }
139
+
140
+ function trimNewlinePadding(content: string): string {
141
+ return content.replace(/^\n+/, "").replace(/\n+$/, "");
142
+ }
143
+
144
+ function parseOverlayOperations(
145
+ overlayDocumentation: string,
146
+ ): OverlayOperation[] {
147
+ const lines = overlayDocumentation.split("\n");
148
+ const operations: OverlayOperation[] = [];
149
+ const appendBuffer: string[] = [];
150
+
151
+ const flushAppendBuffer = (): void => {
152
+ const appendedContent = appendBuffer.join("\n");
153
+ appendBuffer.length = 0;
154
+ if (appendedContent.trim().length === 0) {
155
+ return;
156
+ }
157
+ operations.push({
158
+ type: "append",
159
+ content: appendedContent,
160
+ });
161
+ };
162
+
163
+ for (let index = 0; index < lines.length; index += 1) {
164
+ const line = lines[index];
165
+ const replaceDirectiveMatch = line.match(/^#{1,6}\s+@replace:\s*(.+?)\s*$/);
166
+ if (!replaceDirectiveMatch) {
167
+ appendBuffer.push(line);
168
+ continue;
169
+ }
170
+
171
+ flushAppendBuffer();
172
+
173
+ const sectionTitle = replaceDirectiveMatch[1]?.trim();
174
+ if (!sectionTitle) {
175
+ throw new Error(`Invalid @replace directive: missing section title.`);
176
+ }
177
+
178
+ const replaceBodyLines: string[] = [];
179
+ index += 1;
180
+ while (index < lines.length) {
181
+ const nextLine = lines[index];
182
+ if (/^#{1,6}\s+@replace:\s*(.+?)\s*$/.test(nextLine)) {
183
+ index -= 1;
184
+ break;
185
+ }
186
+ replaceBodyLines.push(nextLine);
187
+ index += 1;
188
+ }
189
+
190
+ operations.push({
191
+ type: "replace",
192
+ sectionTitle,
193
+ content: trimNewlinePadding(replaceBodyLines.join("\n")),
194
+ });
195
+ }
196
+
197
+ flushAppendBuffer();
198
+ return operations;
199
+ }
200
+
201
+ function parseHeading(line: string): { level: number; title: string } | null {
202
+ const headingMatch = line.match(/^(#{1,6})\s+(.*?)\s*$/);
203
+ if (!headingMatch) {
204
+ return null;
205
+ }
206
+
207
+ return {
208
+ level: headingMatch[1].length,
209
+ title: headingMatch[2].trim(),
210
+ };
211
+ }
212
+
213
+ function replaceMarkdownSection(
214
+ documentation: string,
215
+ sectionTitle: string,
216
+ replacementContent: string,
217
+ ): string {
218
+ const lines = documentation.split("\n");
219
+ let startIndex = -1;
220
+ let headingLevel = -1;
221
+
222
+ for (let index = 0; index < lines.length; index += 1) {
223
+ const heading = parseHeading(lines[index]);
224
+ if (!heading) {
225
+ continue;
226
+ }
227
+ if (heading.title === sectionTitle) {
228
+ startIndex = index;
229
+ headingLevel = heading.level;
230
+ break;
231
+ }
232
+ }
233
+
234
+ if (startIndex < 0) {
235
+ throw new Error(
236
+ `Overlay could not find section "${sectionTitle}" to replace.`,
237
+ );
238
+ }
239
+
240
+ let endIndex = lines.length;
241
+ for (let index = startIndex + 1; index < lines.length; index += 1) {
242
+ const heading = parseHeading(lines[index]);
243
+ if (!heading) {
244
+ continue;
245
+ }
246
+ if (heading.level <= headingLevel) {
247
+ endIndex = index;
248
+ break;
249
+ }
250
+ }
251
+
252
+ const headingLine = lines[startIndex];
253
+ const replacementLines = [headingLine];
254
+ if (replacementContent.length > 0) {
255
+ replacementLines.push(...replacementContent.split("\n"));
256
+ }
257
+
258
+ const nextLines = [
259
+ ...lines.slice(0, startIndex),
260
+ ...replacementLines,
261
+ ...lines.slice(endIndex),
262
+ ];
263
+
264
+ return nextLines.join("\n");
265
+ }
266
+
267
+ function applyOverlay(
268
+ baseDocumentation: string,
269
+ overlayDocumentation: string,
270
+ ): string {
271
+ const operations = parseOverlayOperations(overlayDocumentation);
272
+ if (operations.length === 0) {
273
+ return baseDocumentation;
274
+ }
275
+
276
+ let nextDocumentation = baseDocumentation;
277
+ for (const operation of operations) {
278
+ if (operation.type === "append") {
279
+ nextDocumentation = appendOverlay(nextDocumentation, operation.content);
280
+ continue;
281
+ }
282
+
283
+ nextDocumentation = replaceMarkdownSection(
284
+ nextDocumentation,
285
+ operation.sectionTitle,
286
+ operation.content,
287
+ );
288
+ }
289
+
290
+ return nextDocumentation;
291
+ }
292
+
293
+ function splitComparators(versionRange: string): string[] {
294
+ const pattern = /(>=|<=|>|<|=)?\s*(\d+\.\d+\.\d+)/g;
295
+ const comparators: string[] = [];
296
+ let match: RegExpExecArray | null;
297
+ while ((match = pattern.exec(versionRange)) !== null) {
298
+ comparators.push(`${match[1] ?? "="}${match[2]}`);
299
+ }
300
+ return comparators;
301
+ }
302
+
303
+ function parseSemVer(version: string): [number, number, number] {
304
+ const match = version.match(/^(\d+)\.(\d+)\.(\d+)$/);
305
+ if (!match) {
306
+ throw new Error(`Invalid semver: "${version}"`);
307
+ }
308
+
309
+ return [
310
+ Number.parseInt(match[1], 10),
311
+ Number.parseInt(match[2], 10),
312
+ Number.parseInt(match[3], 10),
313
+ ];
314
+ }
315
+
316
+ function compareSemVer(left: string, right: string): number {
317
+ const leftParts = parseSemVer(left);
318
+ const rightParts = parseSemVer(right);
319
+
320
+ for (let index = 0; index < leftParts.length; index += 1) {
321
+ if (leftParts[index] > rightParts[index]) {
322
+ return 1;
323
+ }
324
+ if (leftParts[index] < rightParts[index]) {
325
+ return -1;
326
+ }
327
+ }
328
+
329
+ return 0;
330
+ }
331
+
332
+ function satisfiesComparator(version: SemVer, comparator: string): boolean {
333
+ const match = comparator.match(/^(>=|<=|>|<|=)?(.+)$/);
334
+ if (!match) {
335
+ throw new Error(`Invalid version comparator: "${comparator}"`);
336
+ }
337
+
338
+ const operator = match[1] ?? "=";
339
+ const comparedVersion = match[2]?.trim();
340
+ if (!comparedVersion) {
341
+ throw new Error(`Invalid version comparator: "${comparator}"`);
342
+ }
343
+
344
+ const comparison = compareSemVer(version, comparedVersion);
345
+ switch (operator) {
346
+ case ">":
347
+ return comparison > 0;
348
+ case ">=":
349
+ return comparison >= 0;
350
+ case "<":
351
+ return comparison < 0;
352
+ case "<=":
353
+ return comparison <= 0;
354
+ case "=":
355
+ return comparison === 0;
356
+ default:
357
+ throw new Error(`Unsupported version operator: "${operator}"`);
358
+ }
359
+ }
360
+
361
+ function versionMatchesRange(version: SemVer, versionRange: string): boolean {
362
+ const comparators = splitComparators(versionRange);
363
+ if (comparators.length === 0) {
364
+ throw new Error(`Version range must not be empty`);
365
+ }
366
+
367
+ return comparators.every((comparator) =>
368
+ satisfiesComparator(version, comparator),
369
+ );
370
+ }
371
+
372
+ function ensureOverlayPathIsWithinPluginDir(
373
+ pluginDirectory: string,
374
+ overlayPath: string,
375
+ ): void {
376
+ if (!overlayPath.startsWith(`${pluginDirectory}/`)) {
377
+ throw new Error(
378
+ `Overlay path "${overlayPath}" must be inside plugin directory "${pluginDirectory}".`,
379
+ );
380
+ }
381
+ }
382
+
383
+ export async function resolveIntegrationDocumentation(
384
+ pluginId: string,
385
+ options: ResolveIntegrationDocumentationOptions = {},
386
+ ): Promise<string> {
387
+ const { pluginVersion, integrationsDirectory = INTEGRATIONS_DIR } = options;
388
+
389
+ const pluginDirectory = resolve(
390
+ integrationsDirectory,
391
+ getDocDirectoryForPlugin(pluginId),
392
+ );
393
+ const manifestPath = resolve(pluginDirectory, "docs.manifest.json");
394
+ const manifest = await parseDocumentationManifest(manifestPath);
395
+
396
+ const baseFileName = manifest?.base ?? "README.md";
397
+ const baseDocumentationPath = resolve(pluginDirectory, baseFileName);
398
+ const baseDocumentation = await readFile(baseDocumentationPath, "utf8");
399
+
400
+ if (!manifest || !pluginVersion) {
401
+ return baseDocumentation;
402
+ }
403
+
404
+ let resolvedDocumentation = baseDocumentation;
405
+ for (const overlay of manifest.overlays) {
406
+ if (!versionMatchesRange(pluginVersion, overlay.versionRange)) {
407
+ continue;
408
+ }
409
+
410
+ const overlayPath = resolve(pluginDirectory, overlay.file);
411
+ ensureOverlayPathIsWithinPluginDir(pluginDirectory, overlayPath);
412
+
413
+ const overlayDocumentation = await readFile(overlayPath, "utf8");
414
+ resolvedDocumentation = applyOverlay(
415
+ resolvedDocumentation,
416
+ overlayDocumentation,
417
+ );
418
+ }
419
+
420
+ return resolvedDocumentation;
421
+ }
@@ -0,0 +1,5 @@
1
+ {
2
+ "pluginId": "dropbox",
3
+ "base": "README.md",
4
+ "overlays": []
5
+ }
@@ -7,10 +7,11 @@
7
7
  */
8
8
 
9
9
  import type { z } from "zod";
10
- import type { IntegrationConfig, IntegrationClientImpl } from "../types.js";
11
- import type { QueryExecutor, TraceMetadata } from "../registry.js";
10
+
12
11
  import { RestApiValidationError } from "../../errors.js";
13
12
  import { IntegrationError } from "../../runtime/errors.js";
13
+ import type { QueryExecutor, TraceMetadata } from "../registry.js";
14
+ import type { IntegrationConfig, IntegrationClientImpl } from "../types.js";
14
15
  import type { DynamoDBClient, DynamoDBAttributeValue } from "./types.js";
15
16
 
16
17
  /**
@@ -0,0 +1,5 @@
1
+ {
2
+ "pluginId": "dynamodb",
3
+ "base": "README.md",
4
+ "overlays": []
5
+ }
@@ -6,6 +6,7 @@
6
6
  */
7
7
 
8
8
  import type { z } from "zod";
9
+
9
10
  import type { BaseIntegrationClient } from "../../types.js";
10
11
  import type { TraceMetadata } from "../registry.js";
11
12
 
@@ -0,0 +1,5 @@
1
+ {
2
+ "pluginId": "elasticsearch",
3
+ "base": "README.md",
4
+ "overlays": []
5
+ }