@digital-science-dsl/dimensions-analytics-mcp 0.5.3

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 (722) hide show
  1. package/CHANGELOG.md +61 -0
  2. package/README.md +152 -0
  3. package/bin/dimensions-analytics-mcp-http.js +2 -0
  4. package/bin/dimensions-analytics-mcp.js +2 -0
  5. package/dist/client/auth/config-loaders.d.ts +22 -0
  6. package/dist/client/auth/config-loaders.d.ts.map +1 -0
  7. package/dist/client/auth/config-loaders.js +68 -0
  8. package/dist/client/auth/config-loaders.js.map +1 -0
  9. package/dist/client/auth/decorators/index.d.ts +7 -0
  10. package/dist/client/auth/decorators/index.d.ts.map +1 -0
  11. package/dist/client/auth/decorators/index.js +6 -0
  12. package/dist/client/auth/decorators/index.js.map +1 -0
  13. package/dist/client/auth/decorators/with-caching.d.ts +81 -0
  14. package/dist/client/auth/decorators/with-caching.d.ts.map +1 -0
  15. package/dist/client/auth/decorators/with-caching.js +168 -0
  16. package/dist/client/auth/decorators/with-caching.js.map +1 -0
  17. package/dist/client/auth/factory.d.ts +13 -0
  18. package/dist/client/auth/factory.d.ts.map +1 -0
  19. package/dist/client/auth/factory.js +29 -0
  20. package/dist/client/auth/factory.js.map +1 -0
  21. package/dist/client/auth/index.d.ts +7 -0
  22. package/dist/client/auth/index.d.ts.map +1 -0
  23. package/dist/client/auth/index.js +6 -0
  24. package/dist/client/auth/index.js.map +1 -0
  25. package/dist/client/auth/jwt-utils.d.ts +17 -0
  26. package/dist/client/auth/jwt-utils.d.ts.map +1 -0
  27. package/dist/client/auth/jwt-utils.js +33 -0
  28. package/dist/client/auth/jwt-utils.js.map +1 -0
  29. package/dist/client/auth/node.d.ts +16 -0
  30. package/dist/client/auth/node.d.ts.map +1 -0
  31. package/dist/client/auth/node.js +15 -0
  32. package/dist/client/auth/node.js.map +1 -0
  33. package/dist/client/auth/providers/index.d.ts +2 -0
  34. package/dist/client/auth/providers/index.d.ts.map +1 -0
  35. package/dist/client/auth/providers/index.js +2 -0
  36. package/dist/client/auth/providers/index.js.map +1 -0
  37. package/dist/client/auth/providers/jwt-auth-provider.d.ts +70 -0
  38. package/dist/client/auth/providers/jwt-auth-provider.d.ts.map +1 -0
  39. package/dist/client/auth/providers/jwt-auth-provider.js +134 -0
  40. package/dist/client/auth/providers/jwt-auth-provider.js.map +1 -0
  41. package/dist/client/auth/schemas.d.ts +19 -0
  42. package/dist/client/auth/schemas.d.ts.map +1 -0
  43. package/dist/client/auth/schemas.js +23 -0
  44. package/dist/client/auth/schemas.js.map +1 -0
  45. package/dist/client/auth/types.d.ts +25 -0
  46. package/dist/client/auth/types.d.ts.map +1 -0
  47. package/dist/client/auth/types.js +9 -0
  48. package/dist/client/auth/types.js.map +1 -0
  49. package/dist/client/command.d.ts +44 -0
  50. package/dist/client/command.d.ts.map +1 -0
  51. package/dist/client/command.js +23 -0
  52. package/dist/client/command.js.map +1 -0
  53. package/dist/client/config/index.d.ts +11 -0
  54. package/dist/client/config/index.d.ts.map +1 -0
  55. package/dist/client/config/index.js +8 -0
  56. package/dist/client/config/index.js.map +1 -0
  57. package/dist/client/config/loader.d.ts +27 -0
  58. package/dist/client/config/loader.d.ts.map +1 -0
  59. package/dist/client/config/loader.js +128 -0
  60. package/dist/client/config/loader.js.map +1 -0
  61. package/dist/client/config/node.d.ts +18 -0
  62. package/dist/client/config/node.d.ts.map +1 -0
  63. package/dist/client/config/node.js +17 -0
  64. package/dist/client/config/node.js.map +1 -0
  65. package/dist/client/config/schemas.d.ts +23 -0
  66. package/dist/client/config/schemas.d.ts.map +1 -0
  67. package/dist/client/config/schemas.js +24 -0
  68. package/dist/client/config/schemas.js.map +1 -0
  69. package/dist/client/config/types.d.ts +37 -0
  70. package/dist/client/config/types.d.ts.map +1 -0
  71. package/dist/client/config/types.js +6 -0
  72. package/dist/client/config/types.js.map +1 -0
  73. package/dist/client/config/unified-loader.d.ts +41 -0
  74. package/dist/client/config/unified-loader.d.ts.map +1 -0
  75. package/dist/client/config/unified-loader.js +86 -0
  76. package/dist/client/config/unified-loader.js.map +1 -0
  77. package/dist/client/config.d.ts +43 -0
  78. package/dist/client/config.d.ts.map +1 -0
  79. package/dist/client/config.js +56 -0
  80. package/dist/client/config.js.map +1 -0
  81. package/dist/client/deployment-config.d.ts +36 -0
  82. package/dist/client/deployment-config.d.ts.map +1 -0
  83. package/dist/client/deployment-config.js +79 -0
  84. package/dist/client/deployment-config.js.map +1 -0
  85. package/dist/client/errors.d.ts +180 -0
  86. package/dist/client/errors.d.ts.map +1 -0
  87. package/dist/client/errors.js +253 -0
  88. package/dist/client/errors.js.map +1 -0
  89. package/dist/client/http-client.d.ts +215 -0
  90. package/dist/client/http-client.d.ts.map +1 -0
  91. package/dist/client/http-client.js +419 -0
  92. package/dist/client/http-client.js.map +1 -0
  93. package/dist/client/index.d.ts +28 -0
  94. package/dist/client/index.d.ts.map +1 -0
  95. package/dist/client/index.js +18 -0
  96. package/dist/client/index.js.map +1 -0
  97. package/dist/client/internal-dsl-client.d.ts +30 -0
  98. package/dist/client/internal-dsl-client.d.ts.map +1 -0
  99. package/dist/client/internal-dsl-client.js +101 -0
  100. package/dist/client/internal-dsl-client.js.map +1 -0
  101. package/dist/client/rate-limiter.d.ts +79 -0
  102. package/dist/client/rate-limiter.d.ts.map +1 -0
  103. package/dist/client/rate-limiter.js +118 -0
  104. package/dist/client/rate-limiter.js.map +1 -0
  105. package/dist/client/resolve-api-key-user.d.ts +24 -0
  106. package/dist/client/resolve-api-key-user.d.ts.map +1 -0
  107. package/dist/client/resolve-api-key-user.js +80 -0
  108. package/dist/client/resolve-api-key-user.js.map +1 -0
  109. package/dist/client/types.d.ts +44 -0
  110. package/dist/client/types.d.ts.map +1 -0
  111. package/dist/client/types.js +10 -0
  112. package/dist/client/types.js.map +1 -0
  113. package/dist/dsl/client.d.ts +330 -0
  114. package/dist/dsl/client.d.ts.map +1 -0
  115. package/dist/dsl/client.js +433 -0
  116. package/dist/dsl/client.js.map +1 -0
  117. package/dist/dsl/commands/apply-filters.d.ts +15 -0
  118. package/dist/dsl/commands/apply-filters.d.ts.map +1 -0
  119. package/dist/dsl/commands/apply-filters.js +29 -0
  120. package/dist/dsl/commands/apply-filters.js.map +1 -0
  121. package/dist/dsl/commands/facet/index.d.ts +6 -0
  122. package/dist/dsl/commands/facet/index.d.ts.map +1 -0
  123. package/dist/dsl/commands/facet/index.js +6 -0
  124. package/dist/dsl/commands/facet/index.js.map +1 -0
  125. package/dist/dsl/commands/facet/schemas.d.ts +71 -0
  126. package/dist/dsl/commands/facet/schemas.d.ts.map +1 -0
  127. package/dist/dsl/commands/facet/schemas.js +84 -0
  128. package/dist/dsl/commands/facet/schemas.js.map +1 -0
  129. package/dist/dsl/commands/functions/ClassifyCommand.d.ts +96 -0
  130. package/dist/dsl/commands/functions/ClassifyCommand.d.ts.map +1 -0
  131. package/dist/dsl/commands/functions/ClassifyCommand.js +95 -0
  132. package/dist/dsl/commands/functions/ClassifyCommand.js.map +1 -0
  133. package/dist/dsl/commands/functions/ExtractAffiliationsCommand.d.ts +86 -0
  134. package/dist/dsl/commands/functions/ExtractAffiliationsCommand.d.ts.map +1 -0
  135. package/dist/dsl/commands/functions/ExtractAffiliationsCommand.js +131 -0
  136. package/dist/dsl/commands/functions/ExtractAffiliationsCommand.js.map +1 -0
  137. package/dist/dsl/commands/functions/ExtractConceptsCommand.d.ts +73 -0
  138. package/dist/dsl/commands/functions/ExtractConceptsCommand.d.ts.map +1 -0
  139. package/dist/dsl/commands/functions/ExtractConceptsCommand.js +110 -0
  140. package/dist/dsl/commands/functions/ExtractConceptsCommand.js.map +1 -0
  141. package/dist/dsl/commands/functions/ExtractGrantsCommand.d.ts +66 -0
  142. package/dist/dsl/commands/functions/ExtractGrantsCommand.d.ts.map +1 -0
  143. package/dist/dsl/commands/functions/ExtractGrantsCommand.js +87 -0
  144. package/dist/dsl/commands/functions/ExtractGrantsCommand.js.map +1 -0
  145. package/dist/dsl/commands/functions/index.d.ts +10 -0
  146. package/dist/dsl/commands/functions/index.d.ts.map +1 -0
  147. package/dist/dsl/commands/functions/index.js +10 -0
  148. package/dist/dsl/commands/functions/index.js.map +1 -0
  149. package/dist/dsl/commands/index.d.ts +8 -0
  150. package/dist/dsl/commands/index.d.ts.map +1 -0
  151. package/dist/dsl/commands/index.js +7 -0
  152. package/dist/dsl/commands/index.js.map +1 -0
  153. package/dist/dsl/commands/validate-input.d.ts +18 -0
  154. package/dist/dsl/commands/validate-input.d.ts.map +1 -0
  155. package/dist/dsl/commands/validate-input.js +27 -0
  156. package/dist/dsl/commands/validate-input.js.map +1 -0
  157. package/dist/dsl/create-client.d.ts +32 -0
  158. package/dist/dsl/create-client.d.ts.map +1 -0
  159. package/dist/dsl/create-client.js +58 -0
  160. package/dist/dsl/create-client.js.map +1 -0
  161. package/dist/dsl/fluent-query-builder.d.ts +439 -0
  162. package/dist/dsl/fluent-query-builder.d.ts.map +1 -0
  163. package/dist/dsl/fluent-query-builder.js +534 -0
  164. package/dist/dsl/fluent-query-builder.js.map +1 -0
  165. package/dist/dsl/index.d.ts +32 -0
  166. package/dist/dsl/index.d.ts.map +1 -0
  167. package/dist/dsl/index.js +31 -0
  168. package/dist/dsl/index.js.map +1 -0
  169. package/dist/dsl/pagination.d.ts +82 -0
  170. package/dist/dsl/pagination.d.ts.map +1 -0
  171. package/dist/dsl/pagination.js +135 -0
  172. package/dist/dsl/pagination.js.map +1 -0
  173. package/dist/dsl/query-builder.d.ts +456 -0
  174. package/dist/dsl/query-builder.d.ts.map +1 -0
  175. package/dist/dsl/query-builder.js +994 -0
  176. package/dist/dsl/query-builder.js.map +1 -0
  177. package/dist/dsl/response-parser.d.ts +111 -0
  178. package/dist/dsl/response-parser.d.ts.map +1 -0
  179. package/dist/dsl/response-parser.js +210 -0
  180. package/dist/dsl/response-parser.js.map +1 -0
  181. package/dist/dsl/schema/cache.d.ts +52 -0
  182. package/dist/dsl/schema/cache.d.ts.map +1 -0
  183. package/dist/dsl/schema/cache.js +97 -0
  184. package/dist/dsl/schema/cache.js.map +1 -0
  185. package/dist/dsl/schema/extract.d.ts +18 -0
  186. package/dist/dsl/schema/extract.d.ts.map +1 -0
  187. package/dist/dsl/schema/extract.js +41 -0
  188. package/dist/dsl/schema/extract.js.map +1 -0
  189. package/dist/dsl/schema/index.d.ts +13 -0
  190. package/dist/dsl/schema/index.d.ts.map +1 -0
  191. package/dist/dsl/schema/index.js +12 -0
  192. package/dist/dsl/schema/index.js.map +1 -0
  193. package/dist/dsl/schema/load.d.ts +41 -0
  194. package/dist/dsl/schema/load.d.ts.map +1 -0
  195. package/dist/dsl/schema/load.js +119 -0
  196. package/dist/dsl/schema/load.js.map +1 -0
  197. package/dist/dsl/schema/store.d.ts +137 -0
  198. package/dist/dsl/schema/store.d.ts.map +1 -0
  199. package/dist/dsl/schema/store.js +204 -0
  200. package/dist/dsl/schema/store.js.map +1 -0
  201. package/dist/dsl/schema/structured-entities.d.ts +21 -0
  202. package/dist/dsl/schema/structured-entities.d.ts.map +1 -0
  203. package/dist/dsl/schema/structured-entities.js +39 -0
  204. package/dist/dsl/schema/structured-entities.js.map +1 -0
  205. package/dist/dsl/schema/summary.d.ts +51 -0
  206. package/dist/dsl/schema/summary.d.ts.map +1 -0
  207. package/dist/dsl/schema/summary.js +61 -0
  208. package/dist/dsl/schema/summary.js.map +1 -0
  209. package/dist/dsl/schema/types.d.ts +36 -0
  210. package/dist/dsl/schema/types.d.ts.map +1 -0
  211. package/dist/dsl/schema/types.js +6 -0
  212. package/dist/dsl/schema/types.js.map +1 -0
  213. package/dist/dsl/schema/validation.d.ts +21 -0
  214. package/dist/dsl/schema/validation.d.ts.map +1 -0
  215. package/dist/dsl/schema/validation.js +44 -0
  216. package/dist/dsl/schema/validation.js.map +1 -0
  217. package/dist/dsl/types/buckets.d.ts +18 -0
  218. package/dist/dsl/types/buckets.d.ts.map +1 -0
  219. package/dist/dsl/types/buckets.js +6 -0
  220. package/dist/dsl/types/buckets.js.map +1 -0
  221. package/dist/dsl/types/common.d.ts +91 -0
  222. package/dist/dsl/types/common.d.ts.map +1 -0
  223. package/dist/dsl/types/common.js +6 -0
  224. package/dist/dsl/types/common.js.map +1 -0
  225. package/dist/dsl/types/entities.d.ts +35 -0
  226. package/dist/dsl/types/entities.d.ts.map +1 -0
  227. package/dist/dsl/types/entities.js +11 -0
  228. package/dist/dsl/types/entities.js.map +1 -0
  229. package/dist/dsl/types/index.d.ts +12 -0
  230. package/dist/dsl/types/index.d.ts.map +1 -0
  231. package/dist/dsl/types/index.js +7 -0
  232. package/dist/dsl/types/index.js.map +1 -0
  233. package/dist/dsl/types/return-clauses.d.ts +107 -0
  234. package/dist/dsl/types/return-clauses.d.ts.map +1 -0
  235. package/dist/dsl/types/return-clauses.js +22 -0
  236. package/dist/dsl/types/return-clauses.js.map +1 -0
  237. package/dist/dsl/types/special-functions.d.ts +175 -0
  238. package/dist/dsl/types/special-functions.d.ts.map +1 -0
  239. package/dist/dsl/types/special-functions.js +25 -0
  240. package/dist/dsl/types/special-functions.js.map +1 -0
  241. package/dist/dsl/types/vocabulary.d.ts +21 -0
  242. package/dist/dsl/types/vocabulary.d.ts.map +1 -0
  243. package/dist/dsl/types/vocabulary.js +44 -0
  244. package/dist/dsl/types/vocabulary.js.map +1 -0
  245. package/dist/dsl/usage-policy.d.ts +87 -0
  246. package/dist/dsl/usage-policy.d.ts.map +1 -0
  247. package/dist/dsl/usage-policy.js +133 -0
  248. package/dist/dsl/usage-policy.js.map +1 -0
  249. package/dist/dsl/utils/escape.d.ts +24 -0
  250. package/dist/dsl/utils/escape.d.ts.map +1 -0
  251. package/dist/dsl/utils/escape.js +124 -0
  252. package/dist/dsl/utils/escape.js.map +1 -0
  253. package/dist/dsl/utils/sanitize.d.ts +13 -0
  254. package/dist/dsl/utils/sanitize.d.ts.map +1 -0
  255. package/dist/dsl/utils/sanitize.js +19 -0
  256. package/dist/dsl/utils/sanitize.js.map +1 -0
  257. package/dist/dsl/utils/string-utils.d.ts +35 -0
  258. package/dist/dsl/utils/string-utils.d.ts.map +1 -0
  259. package/dist/dsl/utils/string-utils.js +145 -0
  260. package/dist/dsl/utils/string-utils.js.map +1 -0
  261. package/dist/dsl/utils/validate-field-name.d.ts +11 -0
  262. package/dist/dsl/utils/validate-field-name.d.ts.map +1 -0
  263. package/dist/dsl/utils/validate-field-name.js +18 -0
  264. package/dist/dsl/utils/validate-field-name.js.map +1 -0
  265. package/dist/examples/dsl-examples.d.ts +11 -0
  266. package/dist/examples/dsl-examples.d.ts.map +1 -0
  267. package/dist/examples/dsl-examples.js +49 -0
  268. package/dist/examples/dsl-examples.js.map +1 -0
  269. package/dist/examples/usage-scenarios.d.ts +22 -0
  270. package/dist/examples/usage-scenarios.d.ts.map +1 -0
  271. package/dist/examples/usage-scenarios.js +173 -0
  272. package/dist/examples/usage-scenarios.js.map +1 -0
  273. package/dist/funder-org-names.d.ts +12 -0
  274. package/dist/funder-org-names.d.ts.map +1 -0
  275. package/dist/funder-org-names.js +30 -0
  276. package/dist/funder-org-names.js.map +1 -0
  277. package/dist/http-main.d.ts +7 -0
  278. package/dist/http-main.d.ts.map +1 -0
  279. package/dist/http-main.js +36 -0
  280. package/dist/http-main.js.map +1 -0
  281. package/dist/http.d.ts +29 -0
  282. package/dist/http.d.ts.map +1 -0
  283. package/dist/http.js +173 -0
  284. package/dist/http.js.map +1 -0
  285. package/dist/index.d.ts +9 -0
  286. package/dist/index.d.ts.map +1 -0
  287. package/dist/index.js +7 -0
  288. package/dist/index.js.map +1 -0
  289. package/dist/kwq/build-query.d.ts +26 -0
  290. package/dist/kwq/build-query.d.ts.map +1 -0
  291. package/dist/kwq/build-query.js +37 -0
  292. package/dist/kwq/build-query.js.map +1 -0
  293. package/dist/kwq/concept-groups.d.ts +49 -0
  294. package/dist/kwq/concept-groups.d.ts.map +1 -0
  295. package/dist/kwq/concept-groups.js +55 -0
  296. package/dist/kwq/concept-groups.js.map +1 -0
  297. package/dist/kwq/dsl-assembler.d.ts +28 -0
  298. package/dist/kwq/dsl-assembler.d.ts.map +1 -0
  299. package/dist/kwq/dsl-assembler.js +124 -0
  300. package/dist/kwq/dsl-assembler.js.map +1 -0
  301. package/dist/kwq/ensemble.d.ts +38 -0
  302. package/dist/kwq/ensemble.d.ts.map +1 -0
  303. package/dist/kwq/ensemble.js +107 -0
  304. package/dist/kwq/ensemble.js.map +1 -0
  305. package/dist/kwq/index.d.ts +16 -0
  306. package/dist/kwq/index.d.ts.map +1 -0
  307. package/dist/kwq/index.js +14 -0
  308. package/dist/kwq/index.js.map +1 -0
  309. package/dist/kwq/types.d.ts +120 -0
  310. package/dist/kwq/types.d.ts.map +1 -0
  311. package/dist/kwq/types.js +11 -0
  312. package/dist/kwq/types.js.map +1 -0
  313. package/dist/lambda.d.ts +10 -0
  314. package/dist/lambda.d.ts.map +1 -0
  315. package/dist/lambda.js +4 -0
  316. package/dist/lambda.js.map +1 -0
  317. package/dist/main.d.ts +8 -0
  318. package/dist/main.d.ts.map +1 -0
  319. package/dist/main.js +33 -0
  320. package/dist/main.js.map +1 -0
  321. package/dist/mcp/batch-fetch.d.ts +89 -0
  322. package/dist/mcp/batch-fetch.d.ts.map +1 -0
  323. package/dist/mcp/batch-fetch.js +178 -0
  324. package/dist/mcp/batch-fetch.js.map +1 -0
  325. package/dist/mcp/examples/dsl-examples.d.ts +21 -0
  326. package/dist/mcp/examples/dsl-examples.d.ts.map +1 -0
  327. package/dist/mcp/examples/dsl-examples.js +61 -0
  328. package/dist/mcp/examples/dsl-examples.js.map +1 -0
  329. package/dist/mcp/examples/usage-scenarios.d.ts +20 -0
  330. package/dist/mcp/examples/usage-scenarios.d.ts.map +1 -0
  331. package/dist/mcp/examples/usage-scenarios.js +169 -0
  332. package/dist/mcp/examples/usage-scenarios.js.map +1 -0
  333. package/dist/mcp/export-format.d.ts +43 -0
  334. package/dist/mcp/export-format.d.ts.map +1 -0
  335. package/dist/mcp/export-format.js +92 -0
  336. package/dist/mcp/export-format.js.map +1 -0
  337. package/dist/mcp/funder-org-names.d.ts +12 -0
  338. package/dist/mcp/funder-org-names.d.ts.map +1 -0
  339. package/dist/mcp/funder-org-names.js +30 -0
  340. package/dist/mcp/funder-org-names.js.map +1 -0
  341. package/dist/mcp/http-server.d.ts +20 -0
  342. package/dist/mcp/http-server.d.ts.map +1 -0
  343. package/dist/mcp/http-server.js +118 -0
  344. package/dist/mcp/http-server.js.map +1 -0
  345. package/dist/mcp/middleware/field-aliases.d.ts +97 -0
  346. package/dist/mcp/middleware/field-aliases.d.ts.map +1 -0
  347. package/dist/mcp/middleware/field-aliases.js +208 -0
  348. package/dist/mcp/middleware/field-aliases.js.map +1 -0
  349. package/dist/mcp/resources/schema.d.ts +13 -0
  350. package/dist/mcp/resources/schema.d.ts.map +1 -0
  351. package/dist/mcp/resources/schema.js +262 -0
  352. package/dist/mcp/resources/schema.js.map +1 -0
  353. package/dist/mcp/schema/context.d.ts +10 -0
  354. package/dist/mcp/schema/context.d.ts.map +1 -0
  355. package/dist/mcp/schema/context.js +6 -0
  356. package/dist/mcp/schema/context.js.map +1 -0
  357. package/dist/mcp/schema/index.d.ts +8 -0
  358. package/dist/mcp/schema/index.d.ts.map +1 -0
  359. package/dist/mcp/schema/index.js +6 -0
  360. package/dist/mcp/schema/index.js.map +1 -0
  361. package/dist/mcp/server.d.ts +56 -0
  362. package/dist/mcp/server.d.ts.map +1 -0
  363. package/dist/mcp/server.js +168 -0
  364. package/dist/mcp/server.js.map +1 -0
  365. package/dist/mcp/shared-schema.d.ts +13 -0
  366. package/dist/mcp/shared-schema.d.ts.map +1 -0
  367. package/dist/mcp/shared-schema.js +28 -0
  368. package/dist/mcp/shared-schema.js.map +1 -0
  369. package/dist/mcp/tools/analytics-filters.d.ts +18 -0
  370. package/dist/mcp/tools/analytics-filters.d.ts.map +1 -0
  371. package/dist/mcp/tools/analytics-filters.js +35 -0
  372. package/dist/mcp/tools/analytics-filters.js.map +1 -0
  373. package/dist/mcp/tools/analytics.d.ts +16 -0
  374. package/dist/mcp/tools/analytics.d.ts.map +1 -0
  375. package/dist/mcp/tools/analytics.js +381 -0
  376. package/dist/mcp/tools/analytics.js.map +1 -0
  377. package/dist/mcp/tools/concept-profile.d.ts +14 -0
  378. package/dist/mcp/tools/concept-profile.d.ts.map +1 -0
  379. package/dist/mcp/tools/concept-profile.js +130 -0
  380. package/dist/mcp/tools/concept-profile.js.map +1 -0
  381. package/dist/mcp/tools/dataset-profile.d.ts +15 -0
  382. package/dist/mcp/tools/dataset-profile.d.ts.map +1 -0
  383. package/dist/mcp/tools/dataset-profile.js +194 -0
  384. package/dist/mcp/tools/dataset-profile.js.map +1 -0
  385. package/dist/mcp/tools/fetch-search-pages.d.ts +15 -0
  386. package/dist/mcp/tools/fetch-search-pages.d.ts.map +1 -0
  387. package/dist/mcp/tools/fetch-search-pages.js +237 -0
  388. package/dist/mcp/tools/fetch-search-pages.js.map +1 -0
  389. package/dist/mcp/tools/functions.d.ts +14 -0
  390. package/dist/mcp/tools/functions.d.ts.map +1 -0
  391. package/dist/mcp/tools/functions.js +87 -0
  392. package/dist/mcp/tools/functions.js.map +1 -0
  393. package/dist/mcp/tools/impact-chain.d.ts +15 -0
  394. package/dist/mcp/tools/impact-chain.d.ts.map +1 -0
  395. package/dist/mcp/tools/impact-chain.js +96 -0
  396. package/dist/mcp/tools/impact-chain.js.map +1 -0
  397. package/dist/mcp/tools/kwq.d.ts +19 -0
  398. package/dist/mcp/tools/kwq.d.ts.map +1 -0
  399. package/dist/mcp/tools/kwq.js +156 -0
  400. package/dist/mcp/tools/kwq.js.map +1 -0
  401. package/dist/mcp/tools/lookup.d.ts +14 -0
  402. package/dist/mcp/tools/lookup.d.ts.map +1 -0
  403. package/dist/mcp/tools/lookup.js +146 -0
  404. package/dist/mcp/tools/lookup.js.map +1 -0
  405. package/dist/mcp/tools/policy-profile.d.ts +15 -0
  406. package/dist/mcp/tools/policy-profile.d.ts.map +1 -0
  407. package/dist/mcp/tools/policy-profile.js +174 -0
  408. package/dist/mcp/tools/policy-profile.js.map +1 -0
  409. package/dist/mcp/tools/profile.d.ts +14 -0
  410. package/dist/mcp/tools/profile.d.ts.map +1 -0
  411. package/dist/mcp/tools/profile.js +349 -0
  412. package/dist/mcp/tools/profile.js.map +1 -0
  413. package/dist/mcp/tools/query.d.ts +16 -0
  414. package/dist/mcp/tools/query.d.ts.map +1 -0
  415. package/dist/mcp/tools/query.js +75 -0
  416. package/dist/mcp/tools/query.js.map +1 -0
  417. package/dist/mcp/tools/schema.d.ts +23 -0
  418. package/dist/mcp/tools/schema.d.ts.map +1 -0
  419. package/dist/mcp/tools/schema.js +124 -0
  420. package/dist/mcp/tools/schema.js.map +1 -0
  421. package/dist/mcp/tools/search-entity-metadata.d.ts +18 -0
  422. package/dist/mcp/tools/search-entity-metadata.d.ts.map +1 -0
  423. package/dist/mcp/tools/search-entity-metadata.js +221 -0
  424. package/dist/mcp/tools/search-entity-metadata.js.map +1 -0
  425. package/dist/mcp/tools/search-input.d.ts +58 -0
  426. package/dist/mcp/tools/search-input.d.ts.map +1 -0
  427. package/dist/mcp/tools/search-input.js +76 -0
  428. package/dist/mcp/tools/search-input.js.map +1 -0
  429. package/dist/mcp/tools/search.d.ts +24 -0
  430. package/dist/mcp/tools/search.d.ts.map +1 -0
  431. package/dist/mcp/tools/search.js +115 -0
  432. package/dist/mcp/tools/search.js.map +1 -0
  433. package/dist/mcp/utils.d.ts +82 -0
  434. package/dist/mcp/utils.d.ts.map +1 -0
  435. package/dist/mcp/utils.js +126 -0
  436. package/dist/mcp/utils.js.map +1 -0
  437. package/dist/middleware/field-aliases.d.ts +97 -0
  438. package/dist/middleware/field-aliases.d.ts.map +1 -0
  439. package/dist/middleware/field-aliases.js +208 -0
  440. package/dist/middleware/field-aliases.js.map +1 -0
  441. package/dist/resources/schema.d.ts +13 -0
  442. package/dist/resources/schema.d.ts.map +1 -0
  443. package/dist/resources/schema.js +204 -0
  444. package/dist/resources/schema.js.map +1 -0
  445. package/dist/schema/context.d.ts +10 -0
  446. package/dist/schema/context.d.ts.map +1 -0
  447. package/dist/schema/context.js +6 -0
  448. package/dist/schema/context.js.map +1 -0
  449. package/dist/schema/index.d.ts +9 -0
  450. package/dist/schema/index.d.ts.map +1 -0
  451. package/dist/schema/index.js +6 -0
  452. package/dist/schema/index.js.map +1 -0
  453. package/dist/schema/load.d.ts +43 -0
  454. package/dist/schema/load.d.ts.map +1 -0
  455. package/dist/schema/load.js +139 -0
  456. package/dist/schema/load.js.map +1 -0
  457. package/dist/schema/store.d.ts +112 -0
  458. package/dist/schema/store.d.ts.map +1 -0
  459. package/dist/schema/store.js +173 -0
  460. package/dist/schema/store.js.map +1 -0
  461. package/dist/schema/structured-entities.d.ts +21 -0
  462. package/dist/schema/structured-entities.d.ts.map +1 -0
  463. package/dist/schema/structured-entities.js +39 -0
  464. package/dist/schema/structured-entities.js.map +1 -0
  465. package/dist/schema/types.d.ts +36 -0
  466. package/dist/schema/types.d.ts.map +1 -0
  467. package/dist/schema/types.js +6 -0
  468. package/dist/schema/types.js.map +1 -0
  469. package/dist/server.d.ts +57 -0
  470. package/dist/server.d.ts.map +1 -0
  471. package/dist/server.js +144 -0
  472. package/dist/server.js.map +1 -0
  473. package/dist/telemetry.d.ts +172 -0
  474. package/dist/telemetry.d.ts.map +1 -0
  475. package/dist/telemetry.js +233 -0
  476. package/dist/telemetry.js.map +1 -0
  477. package/dist/tools/analytics-filters.d.ts +18 -0
  478. package/dist/tools/analytics-filters.d.ts.map +1 -0
  479. package/dist/tools/analytics-filters.js +35 -0
  480. package/dist/tools/analytics-filters.js.map +1 -0
  481. package/dist/tools/analytics.d.ts +16 -0
  482. package/dist/tools/analytics.d.ts.map +1 -0
  483. package/dist/tools/analytics.js +381 -0
  484. package/dist/tools/analytics.js.map +1 -0
  485. package/dist/tools/concept-profile.d.ts +14 -0
  486. package/dist/tools/concept-profile.d.ts.map +1 -0
  487. package/dist/tools/concept-profile.js +130 -0
  488. package/dist/tools/concept-profile.js.map +1 -0
  489. package/dist/tools/dataset-profile.d.ts +15 -0
  490. package/dist/tools/dataset-profile.d.ts.map +1 -0
  491. package/dist/tools/dataset-profile.js +194 -0
  492. package/dist/tools/dataset-profile.js.map +1 -0
  493. package/dist/tools/functions.d.ts +14 -0
  494. package/dist/tools/functions.d.ts.map +1 -0
  495. package/dist/tools/functions.js +294 -0
  496. package/dist/tools/functions.js.map +1 -0
  497. package/dist/tools/impact-chain.d.ts +15 -0
  498. package/dist/tools/impact-chain.d.ts.map +1 -0
  499. package/dist/tools/impact-chain.js +96 -0
  500. package/dist/tools/impact-chain.js.map +1 -0
  501. package/dist/tools/kwq.d.ts +19 -0
  502. package/dist/tools/kwq.d.ts.map +1 -0
  503. package/dist/tools/kwq.js +156 -0
  504. package/dist/tools/kwq.js.map +1 -0
  505. package/dist/tools/lookup.d.ts +14 -0
  506. package/dist/tools/lookup.d.ts.map +1 -0
  507. package/dist/tools/lookup.js +213 -0
  508. package/dist/tools/lookup.js.map +1 -0
  509. package/dist/tools/policy-profile.d.ts +15 -0
  510. package/dist/tools/policy-profile.d.ts.map +1 -0
  511. package/dist/tools/policy-profile.js +174 -0
  512. package/dist/tools/policy-profile.js.map +1 -0
  513. package/dist/tools/profile.d.ts +14 -0
  514. package/dist/tools/profile.d.ts.map +1 -0
  515. package/dist/tools/profile.js +349 -0
  516. package/dist/tools/profile.js.map +1 -0
  517. package/dist/tools/query.d.ts +16 -0
  518. package/dist/tools/query.d.ts.map +1 -0
  519. package/dist/tools/query.js +53 -0
  520. package/dist/tools/query.js.map +1 -0
  521. package/dist/tools/schema.d.ts +23 -0
  522. package/dist/tools/schema.d.ts.map +1 -0
  523. package/dist/tools/schema.js +124 -0
  524. package/dist/tools/schema.js.map +1 -0
  525. package/dist/tools/search-entity-metadata.d.ts +18 -0
  526. package/dist/tools/search-entity-metadata.d.ts.map +1 -0
  527. package/dist/tools/search-entity-metadata.js +221 -0
  528. package/dist/tools/search-entity-metadata.js.map +1 -0
  529. package/dist/tools/search.d.ts +23 -0
  530. package/dist/tools/search.d.ts.map +1 -0
  531. package/dist/tools/search.js +110 -0
  532. package/dist/tools/search.js.map +1 -0
  533. package/dist/tools/solr-fields.d.ts +39 -0
  534. package/dist/tools/solr-fields.d.ts.map +1 -0
  535. package/dist/tools/solr-fields.js +40 -0
  536. package/dist/tools/solr-fields.js.map +1 -0
  537. package/dist/utils.d.ts +70 -0
  538. package/dist/utils.d.ts.map +1 -0
  539. package/dist/utils.js +104 -0
  540. package/dist/utils.js.map +1 -0
  541. package/package.json +41 -0
  542. package/src/client/auth/config-loaders.ts +81 -0
  543. package/src/client/auth/decorators/index.ts +7 -0
  544. package/src/client/auth/decorators/with-caching.ts +237 -0
  545. package/src/client/auth/factory.ts +34 -0
  546. package/src/client/auth/index.ts +6 -0
  547. package/src/client/auth/jwt-utils.ts +36 -0
  548. package/src/client/auth/node.ts +16 -0
  549. package/src/client/auth/providers/index.ts +1 -0
  550. package/src/client/auth/providers/jwt-auth-provider.ts +153 -0
  551. package/src/client/auth/schemas.ts +25 -0
  552. package/src/client/auth/types.ts +30 -0
  553. package/src/client/command.ts +54 -0
  554. package/src/client/config/index.ts +15 -0
  555. package/src/client/config/loader.ts +155 -0
  556. package/src/client/config/node.ts +22 -0
  557. package/src/client/config/schemas.ts +28 -0
  558. package/src/client/config/types.ts +39 -0
  559. package/src/client/config/unified-loader.ts +118 -0
  560. package/src/client/config.ts +69 -0
  561. package/src/client/deployment-config.ts +98 -0
  562. package/src/client/errors.ts +295 -0
  563. package/src/client/http-client.ts +577 -0
  564. package/src/client/index.ts +68 -0
  565. package/src/client/internal-dsl-client.ts +128 -0
  566. package/src/client/rate-limiter.ts +139 -0
  567. package/src/client/resolve-api-key-user.ts +99 -0
  568. package/src/client/types.ts +44 -0
  569. package/src/dsl/client.ts +538 -0
  570. package/src/dsl/commands/apply-filters.ts +35 -0
  571. package/src/dsl/commands/facet/index.ts +12 -0
  572. package/src/dsl/commands/facet/schemas.ts +101 -0
  573. package/src/dsl/commands/functions/ClassifyCommand.ts +129 -0
  574. package/src/dsl/commands/functions/ExtractAffiliationsCommand.ts +163 -0
  575. package/src/dsl/commands/functions/ExtractConceptsCommand.ts +141 -0
  576. package/src/dsl/commands/functions/ExtractGrantsCommand.ts +112 -0
  577. package/src/dsl/commands/functions/index.ts +31 -0
  578. package/src/dsl/commands/index.ts +29 -0
  579. package/src/dsl/commands/validate-input.ts +29 -0
  580. package/src/dsl/create-client.ts +80 -0
  581. package/src/dsl/fluent-query-builder.ts +684 -0
  582. package/src/dsl/index.ts +206 -0
  583. package/src/dsl/pagination.ts +202 -0
  584. package/src/dsl/query-builder.ts +1120 -0
  585. package/src/dsl/response-parser.ts +299 -0
  586. package/src/dsl/schema/cache.ts +124 -0
  587. package/src/dsl/schema/extract.ts +44 -0
  588. package/src/dsl/schema/index.ts +50 -0
  589. package/src/dsl/schema/load.ts +160 -0
  590. package/src/dsl/schema/store.ts +253 -0
  591. package/src/dsl/schema/structured-entities.ts +44 -0
  592. package/src/dsl/schema/summary.ts +94 -0
  593. package/src/dsl/schema/types.ts +40 -0
  594. package/src/dsl/schema/validation.ts +56 -0
  595. package/src/dsl/types/buckets.ts +22 -0
  596. package/src/dsl/types/common.ts +99 -0
  597. package/src/dsl/types/entities.ts +43 -0
  598. package/src/dsl/types/index.ts +63 -0
  599. package/src/dsl/types/return-clauses.ts +147 -0
  600. package/src/dsl/types/special-functions.ts +220 -0
  601. package/src/dsl/types/vocabulary.ts +82 -0
  602. package/src/dsl/usage-policy.ts +219 -0
  603. package/src/dsl/utils/escape.ts +123 -0
  604. package/src/dsl/utils/sanitize.ts +21 -0
  605. package/src/dsl/utils/string-utils.ts +147 -0
  606. package/src/dsl/utils/validate-field-name.ts +19 -0
  607. package/src/http-main.ts +41 -0
  608. package/src/index.ts +14 -0
  609. package/src/main.ts +40 -0
  610. package/src/mcp/batch-fetch.ts +255 -0
  611. package/src/mcp/examples/dsl-examples.ts +66 -0
  612. package/src/mcp/examples/usage-scenarios.ts +185 -0
  613. package/src/mcp/export-format.ts +113 -0
  614. package/src/mcp/funder-org-names.ts +30 -0
  615. package/src/mcp/http-server.ts +148 -0
  616. package/src/mcp/middleware/field-aliases.ts +274 -0
  617. package/src/mcp/resources/schema.ts +364 -0
  618. package/src/mcp/schema/context.ts +11 -0
  619. package/src/mcp/schema/index.ts +38 -0
  620. package/src/mcp/server.ts +247 -0
  621. package/src/mcp/shared-schema.ts +34 -0
  622. package/src/mcp/tools/analytics-filters.ts +46 -0
  623. package/src/mcp/tools/analytics.ts +453 -0
  624. package/src/mcp/tools/fetch-search-pages.ts +329 -0
  625. package/src/mcp/tools/functions.ts +105 -0
  626. package/src/mcp/tools/lookup.ts +182 -0
  627. package/src/mcp/tools/query.ts +91 -0
  628. package/src/mcp/tools/schema.ts +147 -0
  629. package/src/mcp/tools/search-entity-metadata.ts +253 -0
  630. package/src/mcp/tools/search-input.ts +87 -0
  631. package/src/mcp/tools/search.ts +168 -0
  632. package/src/mcp/utils.ts +199 -0
  633. package/test/client/auth/config-loaders.test.ts +92 -0
  634. package/test/client/auth/decorators/with-caching.test.ts +482 -0
  635. package/test/client/auth/factory.test.ts +68 -0
  636. package/test/client/auth/providers/jwt-auth-provider.test.ts +398 -0
  637. package/test/client/auth/types.test.ts +18 -0
  638. package/test/client/command.test.ts +163 -0
  639. package/test/client/config/loader.test.ts +377 -0
  640. package/test/client/config/unified-loader.test.ts +136 -0
  641. package/test/client/deployment-config.test.ts +69 -0
  642. package/test/client/errors/index.test.ts +408 -0
  643. package/test/client/helpers/mock-fetch.ts +42 -0
  644. package/test/client/http-client.test.ts +1148 -0
  645. package/test/client/integration/auth-providers.integration.test.ts +186 -0
  646. package/test/client/internal-dsl-client.test.ts +76 -0
  647. package/test/client/rate-limiter.test.ts +204 -0
  648. package/test/client/resolve-api-key-user.test.ts +87 -0
  649. package/test/dsl/client.special-functions.test.ts +387 -0
  650. package/test/dsl/client.test.ts +457 -0
  651. package/test/dsl/commands/apply-filters.test.ts +147 -0
  652. package/test/dsl/commands/functions/ClassifyCommand.test.ts +170 -0
  653. package/test/dsl/commands/functions/ExtractAffiliationsCommand.test.ts +306 -0
  654. package/test/dsl/commands/functions/ExtractConceptsCommand.test.ts +136 -0
  655. package/test/dsl/commands/functions/ExtractGrantsCommand.test.ts +202 -0
  656. package/test/dsl/commands/search/filters.test.ts +42 -0
  657. package/test/dsl/fluent-query-builder.test.ts +865 -0
  658. package/test/dsl/integration/client.integration.test.ts +294 -0
  659. package/test/dsl/integration/facet-api.integration.test.ts +276 -0
  660. package/test/dsl/integration/field-existence.integration.test.ts +148 -0
  661. package/test/dsl/integration/fluent-api-docs-examples.integration.test.ts +988 -0
  662. package/test/dsl/integration/fluent-api.integration.test.ts +615 -0
  663. package/test/dsl/integration/search-helpers.ts +27 -0
  664. package/test/dsl/integration/special-functions.integration.test.ts +224 -0
  665. package/test/dsl/integration/test-config.ts +52 -0
  666. package/test/dsl/pagination.test.ts +86 -0
  667. package/test/dsl/query-builder.test.ts +1775 -0
  668. package/test/dsl/response-parser.test.ts +520 -0
  669. package/test/dsl/schema/cache.test.ts +53 -0
  670. package/test/dsl/schema/load.test.ts +165 -0
  671. package/test/dsl/schema/summary.test.ts +61 -0
  672. package/test/dsl/schema/validation.test.ts +46 -0
  673. package/test/dsl/time-series.test.ts +135 -0
  674. package/test/dsl/unnest.test.ts +151 -0
  675. package/test/dsl/usage-policy.test.ts +100 -0
  676. package/test/dsl/utils/escape.property.test.ts +109 -0
  677. package/test/dsl/utils/escape.test.ts +140 -0
  678. package/test/dsl/utils/validate-field-name.property.test.ts +99 -0
  679. package/test/dsl/utils/validate-field-name.test.ts +55 -0
  680. package/test/examples/dsl-examples.test.ts +29 -0
  681. package/test/examples/usage-scenarios.test.ts +90 -0
  682. package/test/fixtures/describe-schema.json +4000 -0
  683. package/test/funder-org-names.test.ts +20 -0
  684. package/test/helpers/schema-fixture.ts +18 -0
  685. package/test/helpers/tool-test-harness.ts +114 -0
  686. package/test/integration/assertions.ts +263 -0
  687. package/test/integration/env.ts +108 -0
  688. package/test/integration/harness.ts +307 -0
  689. package/test/integration/hosted-client.ts +56 -0
  690. package/test/integration/hosted-mocks.ts +81 -0
  691. package/test/integration/hosted-run.ts +86 -0
  692. package/test/integration/hosted.e2e.test.ts +101 -0
  693. package/test/integration/reporter.ts +100 -0
  694. package/test/integration/run.ts +74 -0
  695. package/test/integration/suites/analytics.integration.ts +72 -0
  696. package/test/integration/suites/functions.integration.ts +37 -0
  697. package/test/integration/suites/hosted-smoke.integration.ts +38 -0
  698. package/test/integration/suites/index.ts +22 -0
  699. package/test/integration/suites/lookup.integration.ts +57 -0
  700. package/test/integration/suites/query.integration.ts +49 -0
  701. package/test/integration/suites/resources.integration.ts +68 -0
  702. package/test/integration/suites/search.integration.ts +80 -0
  703. package/test/integration/types.ts +92 -0
  704. package/test/integration/verify-usage-scenarios.ts +162 -0
  705. package/test/mcp/export-format.test.ts +67 -0
  706. package/test/mcp/http-server.test.ts +80 -0
  707. package/test/middleware/field-aliases.test.ts +287 -0
  708. package/test/resources/schema.test.ts +28 -0
  709. package/test/schema/describe-contract.test.ts +24 -0
  710. package/test/schema/store.test.ts +45 -0
  711. package/test/server.test.ts +170 -0
  712. package/test/tools/analytics-filters.test.ts +35 -0
  713. package/test/tools/analytics.test.ts +419 -0
  714. package/test/tools/fetch-search-pages.test.ts +200 -0
  715. package/test/tools/functions.test.ts +153 -0
  716. package/test/tools/lookup.test.ts +296 -0
  717. package/test/tools/query.test.ts +100 -0
  718. package/test/tools/schema.test.ts +37 -0
  719. package/test/tools/search.test.ts +415 -0
  720. package/test/utils.test.ts +45 -0
  721. package/tsconfig.json +9 -0
  722. package/tsconfig.tsbuildinfo +1 -0
@@ -0,0 +1,433 @@
1
+ /**
2
+ * Main DimensionsClient class for interacting with the Dimensions API.
3
+ * Orchestrates authentication, rate limiting, and HTTP communication.
4
+ * @module client
5
+ */
6
+ import { createAuthProvider, DimensionsClientConfigSchema, HttpClient, InternalDslClient, RateLimiter, ValidationError, } from "../client/index.js";
7
+ import { ClassifyCommand, ExtractAffiliationsCommand, ExtractConceptsCommand, ExtractGrantsCommand, } from "./commands/functions/index.js";
8
+ import { FluentQueryBuilder } from "./fluent-query-builder.js";
9
+ import { QueryBuilder } from "./query-builder.js";
10
+ /**
11
+ * Client for interacting with the Dimensions Analytics API.
12
+ * Handles authentication, rate limiting, and command execution.
13
+ *
14
+ * @example
15
+ * ```typescript
16
+ * const client = new DimensionsClient({ apiKey: "your-api-key" });
17
+ *
18
+ * const result = await client.send(
19
+ * client.rawQuery('search publications for "machine learning" return publications limit 10')
20
+ * );
21
+ * ```
22
+ */
23
+ export class DimensionsClient {
24
+ config;
25
+ authProvider;
26
+ httpClient;
27
+ internalClient;
28
+ rateLimiter;
29
+ schemaStore;
30
+ /**
31
+ * Creates a new DimensionsClient instance.
32
+ * @param config - Client configuration
33
+ * @throws {ValidationError} If configuration is invalid
34
+ */
35
+ constructor(config) {
36
+ // Validate and apply defaults
37
+ const parseResult = DimensionsClientConfigSchema.safeParse(config);
38
+ if (!parseResult.success) {
39
+ throw new ValidationError(`Invalid configuration: ${parseResult.error.message}`, {
40
+ issues: parseResult.error.issues,
41
+ });
42
+ }
43
+ this.config = parseResult.data;
44
+ if (this.config.backend === "internal") {
45
+ const internal = this.config.internal;
46
+ this.internalClient = new InternalDslClient({
47
+ config: internal.service,
48
+ userEmail: internal.userEmail,
49
+ clientIp: internal.clientIp,
50
+ timeout: this.config.timeout,
51
+ });
52
+ this.rateLimiter = new RateLimiter({
53
+ maxRequests: 1000,
54
+ windowMs: 60_000,
55
+ });
56
+ return;
57
+ }
58
+ this.authProvider = createAuthProvider({
59
+ type: "jwt",
60
+ apiKey: this.config.apiKey,
61
+ authUrl: `${this.config.baseUrl}/api/auth.json`,
62
+ timeout: this.config.timeout,
63
+ });
64
+ this.rateLimiter = new RateLimiter({
65
+ maxRequests: this.config.rateLimitPerMinute,
66
+ windowMs: 60_000,
67
+ });
68
+ this.httpClient = new HttpClient({
69
+ baseUrl: this.config.baseUrl,
70
+ authProvider: this.authProvider,
71
+ timeout: this.config.timeout,
72
+ maxRetries: this.config.maxRetries,
73
+ retryDelay: this.config.retryDelay,
74
+ rateLimiter: this.rateLimiter,
75
+ });
76
+ }
77
+ async executeDslQuery(dsl, endpoint, options) {
78
+ if (this.internalClient) {
79
+ return this.internalClient.query(dsl, options);
80
+ }
81
+ const response = await this.httpClient.query(dsl, endpoint, options);
82
+ return response;
83
+ }
84
+ /**
85
+ * Sends a command to the Dimensions API.
86
+ * @param command - The command to execute
87
+ * @returns The transformed response
88
+ * @throws {ValidationError} If command input is invalid
89
+ * @throws {AuthenticationError} If authentication fails
90
+ * @throws {RateLimitError} If rate limit is exceeded
91
+ * @throws {QuerySyntaxError} If query syntax is invalid
92
+ * @throws {ServerError} If server error occurs
93
+ * @throws {NetworkError} If network error occurs
94
+ * @throws {TimeoutError} If request times out
95
+ */
96
+ async send(command) {
97
+ // Build DSL query
98
+ const dsl = command.resolveQuery?.() ?? "";
99
+ const endpoint = command.resolveEndpoint();
100
+ // Validate DSL before sending if enabled
101
+ if (dsl && this.config.validateQueries) {
102
+ this.assertValidDsl(dsl);
103
+ }
104
+ // Execute HTTP query (auth and rate limiting are handled by HttpClient)
105
+ const response = await this.executeDslQuery(dsl, endpoint, undefined);
106
+ // Transform response if command has a transformer
107
+ if (command.transformResponse) {
108
+ return command.transformResponse(response);
109
+ }
110
+ // Return raw response if no transformer
111
+ return response;
112
+ }
113
+ /**
114
+ * Gets current rate limit status.
115
+ * @returns Rate limit information
116
+ */
117
+ getRateLimitInfo() {
118
+ return {
119
+ remaining: this.rateLimiter.getRemainingRequests(),
120
+ resetInMs: this.rateLimiter.getTimeUntilNextSlot(),
121
+ };
122
+ }
123
+ /**
124
+ * Invalidates the cached authentication token.
125
+ * Forces a new token to be fetched on the next request.
126
+ */
127
+ invalidateToken() {
128
+ this.authProvider?.invalidate();
129
+ }
130
+ /**
131
+ * Resets the rate limiter, clearing all recorded request timestamps.
132
+ * Useful for testing or when starting a fresh session.
133
+ */
134
+ resetRateLimiter() {
135
+ this.rateLimiter.reset();
136
+ }
137
+ /**
138
+ * Executes a raw DSL query against the Dimensions API.
139
+ * Use this for generic/dynamic queries not covered by specific commands.
140
+ *
141
+ * @param dsl - The DSL query string to execute
142
+ * @param options - Optional signal and timeout overrides
143
+ * @returns The raw API response
144
+ * @throws {AuthenticationError} If authentication fails
145
+ * @throws {RateLimitError} If rate limit is exceeded
146
+ * @throws {QuerySyntaxError} If query syntax is invalid
147
+ * @throws {ServerError} If server error occurs
148
+ * @throws {NetworkError} If network error occurs
149
+ * @throws {TimeoutError} If request times out
150
+ *
151
+ * @example
152
+ * ```typescript
153
+ * const response = await client.rawQuery(
154
+ * 'search publications for "CRISPR" return publications[id+title] limit 10'
155
+ * );
156
+ * console.log(response.publications);
157
+ * ```
158
+ */
159
+ async rawQuery(dsl, options) {
160
+ // Validate DSL before sending if enabled
161
+ if (this.config.validateQueries) {
162
+ this.assertValidDsl(dsl);
163
+ }
164
+ // Execute HTTP query (auth and rate limiting are handled by HttpClient)
165
+ const response = await this.executeDslQuery(dsl, "/api/dsl/v2", options);
166
+ return response;
167
+ }
168
+ /**
169
+ * Validates a DSL string and throws {@link ValidationError} if it is invalid.
170
+ * @param dsl - The DSL query string to validate
171
+ * @throws {ValidationError} If the DSL fails parsing or semantic validation
172
+ */
173
+ assertValidDsl(_dsl) {
174
+ // Local parser validation removed; Dimensions API validates on execute.
175
+ }
176
+ /**
177
+ * Attaches a loaded describe schema for QueryBuilder entity/index validation.
178
+ * @param store - Schema from {@link loadSchema} or {@link getOrLoadSchema}
179
+ */
180
+ attachSchemaStore(store) {
181
+ this.schemaStore = store;
182
+ }
183
+ /**
184
+ * Creates a {@link QueryBuilder} validated against the attached schema when present.
185
+ * @returns New query builder instance
186
+ */
187
+ createQueryBuilder() {
188
+ return new QueryBuilder(this.schemaStore);
189
+ }
190
+ // #region Fluent API Entity Entry Points
191
+ /**
192
+ * Creates a type-safe fluent query builder for the specified entity.
193
+ * @param entity - The entity type key
194
+ * @returns A FluentQueryBuilder typed to the entity
195
+ */
196
+ createFluentBuilder(entity) {
197
+ return new FluentQueryBuilder(this, entity, this.schemaStore);
198
+ }
199
+ /**
200
+ * Creates a fluent query builder for publications.
201
+ * @returns A FluentQueryBuilder configured for publications
202
+ *
203
+ * @example
204
+ * ```typescript
205
+ * const result = await client
206
+ * .publications()
207
+ * .for("machine learning")
208
+ * .where("year", ">=", 2020)
209
+ * .fields(["id", "title", "doi"])
210
+ * .execute();
211
+ * ```
212
+ */
213
+ publications() {
214
+ return this.createFluentBuilder("publications");
215
+ }
216
+ /**
217
+ * Creates a fluent query builder for grants.
218
+ * @returns A FluentQueryBuilder configured for grants
219
+ *
220
+ * @example
221
+ * ```typescript
222
+ * const result = await client
223
+ * .grants()
224
+ * .for("cancer research")
225
+ * .where("funding_usd", ">", 1000000)
226
+ * .execute();
227
+ * ```
228
+ */
229
+ grants() {
230
+ return this.createFluentBuilder("grants");
231
+ }
232
+ /**
233
+ * Creates a fluent query builder for researchers.
234
+ * @returns A FluentQueryBuilder configured for researchers
235
+ *
236
+ * @example
237
+ * ```typescript
238
+ * const result = await client
239
+ * .researchers()
240
+ * .for("smith")
241
+ * .whereNotEmpty("orcid_id")
242
+ * .execute();
243
+ * ```
244
+ */
245
+ researchers() {
246
+ return this.createFluentBuilder("researchers");
247
+ }
248
+ /**
249
+ * Creates a fluent query builder for patents.
250
+ * @returns A FluentQueryBuilder configured for patents
251
+ *
252
+ * @example
253
+ * ```typescript
254
+ * const result = await client
255
+ * .patents()
256
+ * .for("battery technology")
257
+ * .where("year", ">=", 2020)
258
+ * .execute();
259
+ * ```
260
+ */
261
+ patents() {
262
+ return this.createFluentBuilder("patents");
263
+ }
264
+ /**
265
+ * Creates a fluent query builder for clinical trials.
266
+ * @returns A FluentQueryBuilder configured for clinical_trials
267
+ *
268
+ * @example
269
+ * ```typescript
270
+ * const result = await client
271
+ * .clinicalTrials()
272
+ * .for("diabetes")
273
+ * .where("phase", "=", "Phase 3")
274
+ * .execute();
275
+ * ```
276
+ */
277
+ clinicalTrials() {
278
+ return this.createFluentBuilder("clinical_trials");
279
+ }
280
+ /**
281
+ * Creates a fluent query builder for datasets.
282
+ * @returns A FluentQueryBuilder configured for datasets
283
+ *
284
+ * @example
285
+ * ```typescript
286
+ * const result = await client
287
+ * .datasets()
288
+ * .for("genomics")
289
+ * .where("year", ">=", 2020)
290
+ * .execute();
291
+ * ```
292
+ */
293
+ datasets() {
294
+ return this.createFluentBuilder("datasets");
295
+ }
296
+ /**
297
+ * Creates a fluent query builder for policy documents.
298
+ * @returns A FluentQueryBuilder configured for policy_documents
299
+ *
300
+ * @example
301
+ * ```typescript
302
+ * const result = await client
303
+ * .policyDocuments()
304
+ * .for("climate change")
305
+ * .execute();
306
+ * ```
307
+ */
308
+ policyDocuments() {
309
+ return this.createFluentBuilder("policy_documents");
310
+ }
311
+ /**
312
+ * Creates a fluent query builder for organizations.
313
+ * @returns A FluentQueryBuilder configured for organizations
314
+ *
315
+ * @example
316
+ * ```typescript
317
+ * const result = await client
318
+ * .organizations()
319
+ * .for("stanford")
320
+ * .execute();
321
+ * ```
322
+ */
323
+ organizations() {
324
+ return this.createFluentBuilder("organizations");
325
+ }
326
+ // #endregion
327
+ // #region Special Function Methods
328
+ /**
329
+ * Classifies text using a specified Dimensions classification system.
330
+ * Supports FOR, SDG, RCDC, and other research classification taxonomies.
331
+ *
332
+ * @template S - The classification system type
333
+ * @param options - Classification options including title, abstract, and system
334
+ * @returns Classification codes with their names
335
+ * @throws {ValidationError} If input validation fails
336
+ * @throws {AuthenticationError} If authentication fails
337
+ * @throws {QuerySyntaxError} If query syntax is invalid
338
+ *
339
+ * @example
340
+ * ```typescript
341
+ * const result = await client.classify({
342
+ * title: "Burnout and intentions to quit the nursing profession",
343
+ * abstract: "BACKGROUND: Burnout is an occupational disease...",
344
+ * system: "FOR"
345
+ * });
346
+ * console.log(result.FOR); // [{ id: "1117", name: "Public Health..." }]
347
+ * ```
348
+ */
349
+ async classify(options) {
350
+ return this.send(new ClassifyCommand(options));
351
+ }
352
+ /**
353
+ * Extracts concepts from text using Dimensions natural language processing.
354
+ *
355
+ * @template WithScores - Whether to include relevance scores
356
+ * @param text - Text to extract concepts from
357
+ * @param options - Optional settings including returnScores
358
+ * @returns Array of concepts, optionally with relevance scores
359
+ * @throws {ValidationError} If input validation fails
360
+ * @throws {AuthenticationError} If authentication fails
361
+ * @throws {QuerySyntaxError} If query syntax is invalid
362
+ *
363
+ * @example
364
+ * ```typescript
365
+ * // Simple extraction
366
+ * const concepts = await client.extractConcepts(
367
+ * "Machine learning algorithms for drug discovery"
368
+ * );
369
+ * console.log(concepts.extracted_concepts); // ["machine learning", "drug discovery", ...]
370
+ *
371
+ * // With relevance scores
372
+ * const conceptsWithScores = await client.extractConcepts(
373
+ * "Machine learning algorithms for drug discovery",
374
+ * { returnScores: true }
375
+ * );
376
+ * console.log(conceptsWithScores.extracted_concepts);
377
+ * // [{ concept: "machine learning", relevance: 0.95 }, ...]
378
+ * ```
379
+ */
380
+ async extractConcepts(text, options) {
381
+ return this.send(new ExtractConceptsCommand({
382
+ text,
383
+ returnScores: (options?.returnScores ?? false),
384
+ }));
385
+ }
386
+ /**
387
+ * Extracts and resolves organization affiliations using Dimensions entity resolution.
388
+ * Takes freetext or structured affiliation data and returns matched organizations.
389
+ *
390
+ * @param affiliations - Array of affiliation inputs to resolve
391
+ * @returns Array of resolved organization matches with confidence scores
392
+ * @throws {ValidationError} If input validation fails
393
+ * @throws {AuthenticationError} If authentication fails
394
+ * @throws {QuerySyntaxError} If query syntax is invalid
395
+ *
396
+ * @example
397
+ * ```typescript
398
+ * const result = await client.extractAffiliations([
399
+ * { affiliation: "University of Oxford, UK" },
400
+ * { name: "Stanford", city: "Stanford", country: "USA" }
401
+ * ]);
402
+ * console.log(result.extracted_affiliations);
403
+ * // [{ id: "grid.4991.5", name: "University of Oxford", score: 0.95 }, ...]
404
+ * ```
405
+ */
406
+ async extractAffiliations(affiliations) {
407
+ return this.send(new ExtractAffiliationsCommand({ affiliations }));
408
+ }
409
+ /**
410
+ * Resolves a grant number to a Dimensions grant ID.
411
+ * Takes a grant number and optional funder information to find the matching grant.
412
+ *
413
+ * @param options - Grant lookup parameters
414
+ * @returns Resolved grant ID, or null if no match found
415
+ * @throws {ValidationError} If input validation fails
416
+ * @throws {AuthenticationError} If authentication fails
417
+ * @throws {QuerySyntaxError} If query syntax is invalid
418
+ *
419
+ * @example
420
+ * ```typescript
421
+ * const result = await client.extractGrants({
422
+ * grantNumber: "R01HL117329",
423
+ * fundref: "100000050"
424
+ * });
425
+ * console.log(result.grant_id);
426
+ * // "grant.2544064"
427
+ * ```
428
+ */
429
+ async extractGrants(options) {
430
+ return this.send(new ExtractGrantsCommand(options));
431
+ }
432
+ }
433
+ //# sourceMappingURL=client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/dsl/client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Shared helper for applying extended where filters to a QueryBuilder.
3
+ * @module commands/apply-filters
4
+ */
5
+ import type { QueryBuilder } from "../query-builder.js";
6
+ import type { ExtendedWhereFilterInput } from "./facet/schemas.js";
7
+ /**
8
+ * Applies an array of extended where filters to a QueryBuilder instance.
9
+ * Dispatches to the appropriate QueryBuilder method based on the filter operator.
10
+ *
11
+ * @param builder - QueryBuilder instance to apply filters to
12
+ * @param filters - Array of extended where filters
13
+ */
14
+ export declare function applyFilters(builder: QueryBuilder, filters: readonly ExtendedWhereFilterInput[]): void;
15
+ //# sourceMappingURL=apply-filters.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"apply-filters.d.ts","sourceRoot":"","sources":["../../../src/dsl/commands/apply-filters.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,oBAAoB,CAAC;AAEnE;;;;;;GAMG;AACH,wBAAgB,YAAY,CAC1B,OAAO,EAAE,YAAY,EACrB,OAAO,EAAE,SAAS,wBAAwB,EAAE,GAC3C,IAAI,CAgBN"}
@@ -0,0 +1,29 @@
1
+ /**
2
+ * Shared helper for applying extended where filters to a QueryBuilder.
3
+ * @module commands/apply-filters
4
+ */
5
+ /**
6
+ * Applies an array of extended where filters to a QueryBuilder instance.
7
+ * Dispatches to the appropriate QueryBuilder method based on the filter operator.
8
+ *
9
+ * @param builder - QueryBuilder instance to apply filters to
10
+ * @param filters - Array of extended where filters
11
+ */
12
+ export function applyFilters(builder, filters) {
13
+ for (const f of filters) {
14
+ switch (f.operator) {
15
+ case "is_empty":
16
+ builder.whereEmpty(f.field);
17
+ break;
18
+ case "is_not_empty":
19
+ builder.whereNotEmpty(f.field);
20
+ break;
21
+ case "in":
22
+ builder.whereIn(f.field, f.value);
23
+ break;
24
+ default:
25
+ builder.where(f.field, f.operator, f.value);
26
+ }
27
+ }
28
+ }
29
+ //# sourceMappingURL=apply-filters.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"apply-filters.js","sourceRoot":"","sources":["../../../src/dsl/commands/apply-filters.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH;;;;;;GAMG;AACH,MAAM,UAAU,YAAY,CAC1B,OAAqB,EACrB,OAA4C;IAE5C,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;QACxB,QAAQ,CAAC,CAAC,QAAQ,EAAE,CAAC;YACnB,KAAK,UAAU;gBACb,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;gBAC5B,MAAM;YACR,KAAK,cAAc;gBACjB,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;gBAC/B,MAAM;YACR,KAAK,IAAI;gBACP,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC;gBAClC,MAAM;YACR;gBACE,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC;QAChD,CAAC;IACH,CAAC;AACH,CAAC"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Facet-related schemas shared by QueryBuilder and MCP tools.
3
+ * @module commands/facet
4
+ */
5
+ export { EntitySchema, type ExtendedWhereFilterInput, ExtendedWhereFilterSchema, type WhereFilterInput, WhereFilterSchema, } from "./schemas.js";
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/dsl/commands/facet/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EACL,YAAY,EACZ,KAAK,wBAAwB,EAC7B,yBAAyB,EACzB,KAAK,gBAAgB,EACrB,iBAAiB,GAClB,MAAM,cAAc,CAAC"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Facet-related schemas shared by QueryBuilder and MCP tools.
3
+ * @module commands/facet
4
+ */
5
+ export { EntitySchema, ExtendedWhereFilterSchema, WhereFilterSchema, } from "./schemas.js";
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/dsl/commands/facet/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EACL,YAAY,EAEZ,yBAAyB,EAEzB,iBAAiB,GAClB,MAAM,cAAc,CAAC"}
@@ -0,0 +1,71 @@
1
+ /**
2
+ * Shared Zod schemas for facet and aggregate commands.
3
+ * @module commands/facet/schemas
4
+ */
5
+ import { z } from "zod";
6
+ /**
7
+ * Zod schema for the entity type field, derived from the core VALID_ENTITIES constant.
8
+ */
9
+ export declare const EntitySchema: z.ZodEnum<{
10
+ [x: string]: string;
11
+ }>;
12
+ /**
13
+ * Schema for where clause filters used in facet/aggregate commands.
14
+ * Supports basic comparison operators for field-level filtering.
15
+ */
16
+ export declare const WhereFilterSchema: z.ZodObject<{
17
+ field: z.ZodString;
18
+ operator: z.ZodEnum<{
19
+ "=": "=";
20
+ "!=": "!=";
21
+ "<": "<";
22
+ ">": ">";
23
+ "<=": "<=";
24
+ ">=": ">=";
25
+ }>;
26
+ value: z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean]>;
27
+ }, z.core.$strip>;
28
+ /**
29
+ * Input type for a where clause filter.
30
+ */
31
+ export type WhereFilterInput = z.infer<typeof WhereFilterSchema>;
32
+ /**
33
+ * Extended where filter schema supporting all DSL filter operators.
34
+ * Covers scalar comparisons, set membership (in), and emptiness checks (is_empty/is_not_empty).
35
+ *
36
+ * Uses a discriminated union on `operator` for precise type narrowing.
37
+ */
38
+ export declare const ExtendedWhereFilterSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
39
+ field: z.ZodString;
40
+ operator: z.ZodEnum<{
41
+ "=": "=";
42
+ "!=": "!=";
43
+ "<": "<";
44
+ ">": ">";
45
+ "<=": "<=";
46
+ ">=": ">=";
47
+ }>;
48
+ value: z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean]>;
49
+ }, z.core.$strip>, z.ZodObject<{
50
+ field: z.ZodString;
51
+ operator: z.ZodLiteral<"in">;
52
+ value: z.ZodUnion<readonly [z.ZodPipe<z.ZodString, z.ZodTransform<string[], string>>, z.ZodPipe<z.ZodNumber, z.ZodTransform<number[], number>>, z.ZodArray<z.ZodString>, z.ZodArray<z.ZodNumber>]>;
53
+ }, z.core.$strip>, z.ZodObject<{
54
+ field: z.ZodString;
55
+ operator: z.ZodLiteral<"is_empty">;
56
+ }, z.core.$strip>, z.ZodObject<{
57
+ field: z.ZodString;
58
+ operator: z.ZodLiteral<"is_not_empty">;
59
+ }, z.core.$strip>], "operator">;
60
+ /**
61
+ * Input type for an extended where filter (supports in/is_empty/is_not_empty).
62
+ */
63
+ export type ExtendedWhereFilterInput = z.infer<typeof ExtendedWhereFilterSchema>;
64
+ /**
65
+ * Validates that a raw API response is a non-null object.
66
+ * @param response - The raw API response
67
+ * @returns The response as a record
68
+ * @throws {ValidationError} If response is not a non-null object
69
+ */
70
+ export declare function assertObjectResponse(response: unknown): Record<string, unknown>;
71
+ //# sourceMappingURL=schemas.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schemas.d.ts","sourceRoot":"","sources":["../../../../src/dsl/commands/facet/schemas.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB;;GAEG;AACH,eAAO,MAAM,YAAY;;EAA6D,CAAC;AAEvF;;;GAGG;AACH,eAAO,MAAM,iBAAiB;;;;;;;;;;;iBAO5B,CAAC;AAEH;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAyCjE;;;;;GAKG;AACH,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;;;;;;;;;+BAKpC,CAAC;AAEH;;GAEG;AACH,MAAM,MAAM,wBAAwB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,yBAAyB,CAAC,CAAC;AAEjF;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAK/E"}
@@ -0,0 +1,84 @@
1
+ /**
2
+ * Shared Zod schemas for facet and aggregate commands.
3
+ * @module commands/facet/schemas
4
+ */
5
+ import { z } from "zod";
6
+ import { ValidationError } from "../../../client/index.js";
7
+ import { VALID_ENTITIES } from "../../types/vocabulary.js";
8
+ /**
9
+ * Zod schema for the entity type field, derived from the core VALID_ENTITIES constant.
10
+ */
11
+ export const EntitySchema = z.enum(VALID_ENTITIES);
12
+ /**
13
+ * Schema for where clause filters used in facet/aggregate commands.
14
+ * Supports basic comparison operators for field-level filtering.
15
+ */
16
+ export const WhereFilterSchema = z.object({
17
+ /** Field name to filter on */
18
+ field: z.string().min(1),
19
+ /** Comparison operator */
20
+ operator: z.enum(["=", "!=", ">", "<", ">=", "<="]),
21
+ /** Value to compare against */
22
+ value: z.union([z.string(), z.number(), z.boolean()]),
23
+ });
24
+ /**
25
+ * Schema for scalar comparison filters (=, !=, >, <, >=, <=).
26
+ */
27
+ const ScalarFilterSchema = z.object({
28
+ /** Field name to filter on */
29
+ field: z.string().min(1),
30
+ /** Scalar comparison operator */
31
+ operator: z.enum(["=", "!=", ">", "<", ">=", "<="]),
32
+ /** Value to compare against */
33
+ value: z.union([z.string(), z.number(), z.boolean()]),
34
+ });
35
+ /**
36
+ * Schema for set membership filters (in).
37
+ */
38
+ const InFilterSchema = z.object({
39
+ /** Field name to filter on */
40
+ field: z.string().min(1),
41
+ /** Set membership operator */
42
+ operator: z.literal("in"),
43
+ /** Values to match against (scalar is coerced to single-element array) */
44
+ value: z.union([
45
+ z.string().transform((v) => [v]),
46
+ z.number().transform((v) => [v]),
47
+ z.array(z.string()).min(1),
48
+ z.array(z.number()).min(1),
49
+ ]),
50
+ });
51
+ /**
52
+ * Schema for emptiness check filters (is_empty, is_not_empty).
53
+ */
54
+ const EmptinessFilterSchema = z.object({
55
+ /** Field name to filter on */
56
+ field: z.string().min(1),
57
+ /** Emptiness check operator */
58
+ operator: z.enum(["is_empty", "is_not_empty"]),
59
+ });
60
+ /**
61
+ * Extended where filter schema supporting all DSL filter operators.
62
+ * Covers scalar comparisons, set membership (in), and emptiness checks (is_empty/is_not_empty).
63
+ *
64
+ * Uses a discriminated union on `operator` for precise type narrowing.
65
+ */
66
+ export const ExtendedWhereFilterSchema = z.discriminatedUnion("operator", [
67
+ ScalarFilterSchema,
68
+ InFilterSchema,
69
+ EmptinessFilterSchema.extend({ operator: z.literal("is_empty") }),
70
+ EmptinessFilterSchema.extend({ operator: z.literal("is_not_empty") }),
71
+ ]);
72
+ /**
73
+ * Validates that a raw API response is a non-null object.
74
+ * @param response - The raw API response
75
+ * @returns The response as a record
76
+ * @throws {ValidationError} If response is not a non-null object
77
+ */
78
+ export function assertObjectResponse(response) {
79
+ if (response == null || typeof response !== "object" || Array.isArray(response)) {
80
+ throw new ValidationError("Expected object response from API");
81
+ }
82
+ return response;
83
+ }
84
+ //# sourceMappingURL=schemas.js.map