@metabase/client 0.0.0-stage → 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (337) hide show
  1. package/CHANGELOG.md +28 -0
  2. package/LICENSE +661 -0
  3. package/README.md +490 -2
  4. package/dist/api-key-DJeN1-7G.d.ts +46 -0
  5. package/dist/auth/credential.d.ts +2 -0
  6. package/dist/auth/credential.js +61 -0
  7. package/dist/auth/oauth-login.d.ts +2 -0
  8. package/dist/auth/oauth-login.js +2 -0
  9. package/dist/auth/oauth-session.d.ts +2 -0
  10. package/dist/auth/oauth-session.js +31 -0
  11. package/dist/card-BxBzr5Uj.d.ts +1392 -0
  12. package/dist/card-DN0sLkCG.d.ts +33 -0
  13. package/dist/client-DdXLlH1B.d.ts +3380 -0
  14. package/dist/client.d.ts +2 -0
  15. package/dist/client.js +99 -0
  16. package/dist/collection-DGnTvD6R.d.ts +294 -0
  17. package/dist/collection-fFahL-ub.d.ts +53 -0
  18. package/dist/content-translation-zfUkE_OG.d.ts +8 -0
  19. package/dist/credential-6aOEGqMH.d.ts +30 -0
  20. package/dist/cron-DThzerR6.d.ts +9 -0
  21. package/dist/csv-upload--K35QedP.d.ts +8 -0
  22. package/dist/dashboard-CM7RmNeE.d.ts +38 -0
  23. package/dist/dashboard-DtLXVgtf.d.ts +978 -0
  24. package/dist/data-action-CkXVrOUH.d.ts +97 -0
  25. package/dist/data-app-CqP5_fpB.d.ts +76 -0
  26. package/dist/database-B0JNZjDN.d.ts +27 -0
  27. package/dist/database-BxqDmfcj.d.ts +997 -0
  28. package/dist/dataset-BBNGPVec.d.ts +4144 -0
  29. package/dist/dataset-BUirJ1rO.d.ts +23 -0
  30. package/dist/dependency-CzpXmeu7.d.ts +299 -0
  31. package/dist/dependency-arB8Cr2H.d.ts +879 -0
  32. package/dist/document-tLd6pYWe.d.ts +115 -0
  33. package/dist/domain/api-key.d.ts +2 -0
  34. package/dist/domain/api-key.js +31 -0
  35. package/dist/domain/card.d.ts +2 -0
  36. package/dist/domain/card.js +140 -0
  37. package/dist/domain/collection.d.ts +2 -0
  38. package/dist/domain/collection.js +137 -0
  39. package/dist/domain/content-translation.d.ts +2 -0
  40. package/dist/domain/content-translation.js +5 -0
  41. package/dist/domain/cron.d.ts +2 -0
  42. package/dist/domain/cron.js +5 -0
  43. package/dist/domain/dashboard.d.ts +2 -0
  44. package/dist/domain/dashboard.js +211 -0
  45. package/dist/domain/data-action.d.ts +2 -0
  46. package/dist/domain/data-action.js +91 -0
  47. package/dist/domain/data-app.d.ts +2 -0
  48. package/dist/domain/data-app.js +52 -0
  49. package/dist/domain/database.d.ts +2 -0
  50. package/dist/domain/database.js +56 -0
  51. package/dist/domain/dataset.d.ts +2 -0
  52. package/dist/domain/dataset.js +56 -0
  53. package/dist/domain/dependency.d.ts +2 -0
  54. package/dist/domain/dependency.js +168 -0
  55. package/dist/domain/document.d.ts +2 -0
  56. package/dist/domain/document.js +94 -0
  57. package/dist/domain/eid-translation.d.ts +2 -0
  58. package/dist/domain/eid-translation.js +36 -0
  59. package/dist/domain/embedding.d.ts +2 -0
  60. package/dist/domain/embedding.js +9 -0
  61. package/dist/domain/erd.d.ts +2 -0
  62. package/dist/domain/erd.js +45 -0
  63. package/dist/domain/field.d.ts +2 -0
  64. package/dist/domain/field.js +274 -0
  65. package/dist/domain/git-sync.d.ts +2 -0
  66. package/dist/domain/git-sync.js +147 -0
  67. package/dist/domain/glossary.d.ts +2 -0
  68. package/dist/domain/glossary.js +30 -0
  69. package/dist/domain/library.d.ts +2 -0
  70. package/dist/domain/library.js +89 -0
  71. package/dist/domain/measure.d.ts +2 -0
  72. package/dist/domain/measure.js +43 -0
  73. package/dist/domain/metric.d.ts +2 -0
  74. package/dist/domain/metric.js +139 -0
  75. package/dist/domain/moderation-review.d.ts +2 -0
  76. package/dist/domain/moderation-review.js +31 -0
  77. package/dist/domain/notification.d.ts +2 -0
  78. package/dist/domain/notification.js +143 -0
  79. package/dist/domain/parameter.d.ts +2 -0
  80. package/dist/domain/parameter.js +109 -0
  81. package/dist/domain/permission.d.ts +2 -0
  82. package/dist/domain/permission.js +36 -0
  83. package/dist/domain/pulse.d.ts +2 -0
  84. package/dist/domain/pulse.js +140 -0
  85. package/dist/domain/query.d.ts +2 -0
  86. package/dist/domain/query.js +13 -0
  87. package/dist/domain/replacement.d.ts +2 -0
  88. package/dist/domain/replacement.js +93 -0
  89. package/dist/domain/revision.d.ts +2 -0
  90. package/dist/domain/revision.js +90 -0
  91. package/dist/domain/search.d.ts +2 -0
  92. package/dist/domain/search.js +63 -0
  93. package/dist/domain/segment.d.ts +2 -0
  94. package/dist/domain/segment.js +46 -0
  95. package/dist/domain/session-properties.d.ts +2 -0
  96. package/dist/domain/session-properties.js +14 -0
  97. package/dist/domain/setting.d.ts +2 -0
  98. package/dist/domain/setting.js +22 -0
  99. package/dist/domain/setup.d.ts +2 -0
  100. package/dist/domain/setup.js +21 -0
  101. package/dist/domain/snippet.d.ts +2 -0
  102. package/dist/domain/snippet.js +38 -0
  103. package/dist/domain/table.d.ts +2 -0
  104. package/dist/domain/table.js +187 -0
  105. package/dist/domain/text.d.ts +5 -0
  106. package/dist/domain/text.js +6 -0
  107. package/dist/domain/timeline.d.ts +2 -0
  108. package/dist/domain/timeline.js +97 -0
  109. package/dist/domain/transform-dag-run.d.ts +2 -0
  110. package/dist/domain/transform-dag-run.js +19 -0
  111. package/dist/domain/transform-inspector.d.ts +2 -0
  112. package/dist/domain/transform-inspector.js +142 -0
  113. package/dist/domain/transform-job.d.ts +2 -0
  114. package/dist/domain/transform-job.js +115 -0
  115. package/dist/domain/transform-python.d.ts +2 -0
  116. package/dist/domain/transform-python.js +51 -0
  117. package/dist/domain/transform-tag.d.ts +2 -0
  118. package/dist/domain/transform-tag.js +17 -0
  119. package/dist/domain/transform-test.d.ts +2 -0
  120. package/dist/domain/transform-test.js +176 -0
  121. package/dist/domain/transform.d.ts +2 -0
  122. package/dist/domain/transform.js +304 -0
  123. package/dist/domain/upload.d.ts +2 -0
  124. package/dist/domain/upload.js +13 -0
  125. package/dist/domain/user.d.ts +2 -0
  126. package/dist/domain/user.js +16 -0
  127. package/dist/eid-translation-CH6NPWd-.d.ts +143 -0
  128. package/dist/embedding-oU3gqfgX.d.ts +10 -0
  129. package/dist/erd-BdeFEeSy.d.ts +842 -0
  130. package/dist/erd-CbV7xvAc.d.ts +51 -0
  131. package/dist/errors-DdMlaXqq.js +330 -0
  132. package/dist/errors.d.ts +2 -0
  133. package/dist/errors.js +189 -0
  134. package/dist/features-SMSfJhB6.d.ts +295 -0
  135. package/dist/field-D1Pfk-0S.d.ts +50 -0
  136. package/dist/field-p9Rme2zB.d.ts +2549 -0
  137. package/dist/git-sync-BTf1aYHr.d.ts +205 -0
  138. package/dist/git-sync-C99SVdJ9.d.ts +258 -0
  139. package/dist/glossary-CHK3elPj.d.ts +35 -0
  140. package/dist/glossary-DFvnz-E5.d.ts +15 -0
  141. package/dist/http/errors.d.ts +2 -0
  142. package/dist/http/errors.js +2 -0
  143. package/dist/http/oauth.d.ts +2 -0
  144. package/dist/http/oauth.js +201 -0
  145. package/dist/http/retry.d.ts +19 -0
  146. package/dist/http/retry.js +33 -0
  147. package/dist/http/transport.d.ts +2 -0
  148. package/dist/http/transport.js +2 -0
  149. package/dist/index.d.ts +62 -0
  150. package/dist/index.js +64 -0
  151. package/dist/input-gate-registry-Dai7SfXb.js +14 -0
  152. package/dist/input-gates-DwKoTJVQ.d.ts +28 -0
  153. package/dist/json-BksZpXDC.d.ts +19 -0
  154. package/dist/json-pointer.d.ts +5 -0
  155. package/dist/json-pointer.js +10 -0
  156. package/dist/json.d.ts +2 -0
  157. package/dist/json.js +44 -0
  158. package/dist/known-range-DTOBgTEC.d.ts +7 -0
  159. package/dist/library-B9pEq7qP.d.ts +230 -0
  160. package/dist/list-BT_bBm9Z.d.ts +7 -0
  161. package/dist/list.d.ts +2 -0
  162. package/dist/list.js +1 -0
  163. package/dist/measure-CgH14YQZ.d.ts +44 -0
  164. package/dist/measure-lPz8qnwz.d.ts +108 -0
  165. package/dist/metric-DcYloqOQ.d.ts +2655 -0
  166. package/dist/moderation-review-B4RUTZ6_.d.ts +56 -0
  167. package/dist/network-error-5g4U1iul.js +62 -0
  168. package/dist/notification-Cp5GJErS.d.ts +22 -0
  169. package/dist/notification-D1MThyKE.d.ts +443 -0
  170. package/dist/oauth-C4ordeoJ.d.ts +59 -0
  171. package/dist/oauth-login-CJsT_3EE.d.ts +19 -0
  172. package/dist/oauth-login-D734Jvbq.js +179 -0
  173. package/dist/oauth-session-BlIlcd8Q.d.ts +6 -0
  174. package/dist/paginate-COuL0Gzl.d.ts +24 -0
  175. package/dist/paginate.d.ts +2 -0
  176. package/dist/paginate.js +49 -0
  177. package/dist/parameter-ak-J-IOj.d.ts +190 -0
  178. package/dist/permission-BnCQw5Kp.d.ts +149 -0
  179. package/dist/poll-CIwnee7h.d.ts +15 -0
  180. package/dist/poll.d.ts +2 -0
  181. package/dist/poll.js +47 -0
  182. package/dist/predicates.d.ts +10 -0
  183. package/dist/predicates.js +18 -0
  184. package/dist/pulse-0LG3K6qO.d.ts +598 -0
  185. package/dist/pulse-BzKmz3Yn.d.ts +18 -0
  186. package/dist/query-Xsin530u.d.ts +23 -0
  187. package/dist/refusal-B9aeHMc9.js +130 -0
  188. package/dist/replacement-BGyggp-G.d.ts +2467 -0
  189. package/dist/replacement-CVebCuNp.d.ts +128 -0
  190. package/dist/requirement-check-glU7wqhQ.d.ts +17 -0
  191. package/dist/requirements-Dx_ZVzl7.d.ts +227 -0
  192. package/dist/resources/api-key.d.ts +11 -0
  193. package/dist/resources/api-key.js +35 -0
  194. package/dist/resources/card.d.ts +2 -0
  195. package/dist/resources/card.js +103 -0
  196. package/dist/resources/collection.d.ts +2 -0
  197. package/dist/resources/collection.js +134 -0
  198. package/dist/resources/content-translation.d.ts +11 -0
  199. package/dist/resources/content-translation.js +27 -0
  200. package/dist/resources/csv-upload.d.ts +2 -0
  201. package/dist/resources/csv-upload.js +9 -0
  202. package/dist/resources/dashboard.d.ts +2 -0
  203. package/dist/resources/dashboard.js +221 -0
  204. package/dist/resources/data-action.d.ts +60 -0
  205. package/dist/resources/data-action.js +79 -0
  206. package/dist/resources/data-app.d.ts +112 -0
  207. package/dist/resources/data-app.js +75 -0
  208. package/dist/resources/database.d.ts +2 -0
  209. package/dist/resources/database.js +103 -0
  210. package/dist/resources/dataset.d.ts +2 -0
  211. package/dist/resources/dataset.js +81 -0
  212. package/dist/resources/dependency.d.ts +2 -0
  213. package/dist/resources/dependency.js +156 -0
  214. package/dist/resources/document.d.ts +55 -0
  215. package/dist/resources/document.js +60 -0
  216. package/dist/resources/eid-translation.d.ts +8 -0
  217. package/dist/resources/eid-translation.js +19 -0
  218. package/dist/resources/erd.d.ts +2 -0
  219. package/dist/resources/erd.js +26 -0
  220. package/dist/resources/field.d.ts +2 -0
  221. package/dist/resources/field.js +99 -0
  222. package/dist/resources/git-sync.d.ts +2 -0
  223. package/dist/resources/git-sync.js +362 -0
  224. package/dist/resources/glossary.d.ts +2 -0
  225. package/dist/resources/glossary.js +51 -0
  226. package/dist/resources/library.d.ts +85 -0
  227. package/dist/resources/library.js +90 -0
  228. package/dist/resources/measure.d.ts +2 -0
  229. package/dist/resources/measure.js +57 -0
  230. package/dist/resources/metric.d.ts +2 -0
  231. package/dist/resources/metric.js +50 -0
  232. package/dist/resources/moderation-review.d.ts +23 -0
  233. package/dist/resources/moderation-review.js +24 -0
  234. package/dist/resources/notification.d.ts +2 -0
  235. package/dist/resources/notification.js +93 -0
  236. package/dist/resources/optional-parsed.d.ts +7 -0
  237. package/dist/resources/optional-parsed.js +14 -0
  238. package/dist/resources/permission.d.ts +10 -0
  239. package/dist/resources/permission.js +31 -0
  240. package/dist/resources/pivot-export.d.ts +10 -0
  241. package/dist/resources/pivot-export.js +16 -0
  242. package/dist/resources/pulse.d.ts +2 -0
  243. package/dist/resources/pulse.js +76 -0
  244. package/dist/resources/replacement.d.ts +2 -0
  245. package/dist/resources/replacement.js +82 -0
  246. package/dist/resources/request-body.d.ts +9 -0
  247. package/dist/resources/request-body.js +13 -0
  248. package/dist/resources/revision.d.ts +70 -0
  249. package/dist/resources/revision.js +46 -0
  250. package/dist/resources/search.d.ts +2 -0
  251. package/dist/resources/search.js +78 -0
  252. package/dist/resources/segment.d.ts +2 -0
  253. package/dist/resources/segment.js +55 -0
  254. package/dist/resources/setting.d.ts +11 -0
  255. package/dist/resources/setting.js +43 -0
  256. package/dist/resources/setup.d.ts +8 -0
  257. package/dist/resources/setup.js +18 -0
  258. package/dist/resources/snippet.d.ts +2 -0
  259. package/dist/resources/snippet.js +52 -0
  260. package/dist/resources/table.d.ts +2 -0
  261. package/dist/resources/table.js +274 -0
  262. package/dist/resources/timeline-event.d.ts +12 -0
  263. package/dist/resources/timeline-event.js +51 -0
  264. package/dist/resources/timeline.d.ts +2 -0
  265. package/dist/resources/timeline.js +82 -0
  266. package/dist/resources/transform-dag-run.d.ts +22 -0
  267. package/dist/resources/transform-dag-run.js +32 -0
  268. package/dist/resources/transform-inspector.d.ts +214 -0
  269. package/dist/resources/transform-inspector.js +47 -0
  270. package/dist/resources/transform-job.d.ts +2 -0
  271. package/dist/resources/transform-job.js +90 -0
  272. package/dist/resources/transform-python.d.ts +59 -0
  273. package/dist/resources/transform-python.js +57 -0
  274. package/dist/resources/transform-tag.d.ts +35 -0
  275. package/dist/resources/transform-tag.js +47 -0
  276. package/dist/resources/transform-test.d.ts +2 -0
  277. package/dist/resources/transform-test.js +75 -0
  278. package/dist/resources/transform.d.ts +2 -0
  279. package/dist/resources/transform.js +227 -0
  280. package/dist/resources/upload.d.ts +2 -0
  281. package/dist/resources/upload.js +48 -0
  282. package/dist/resources/user.d.ts +8 -0
  283. package/dist/resources/user.js +11 -0
  284. package/dist/revision-Dyl-8p7d.d.ts +106 -0
  285. package/dist/search-Cm5IxKss.d.ts +92 -0
  286. package/dist/search-Cten2h0I.d.ts +26 -0
  287. package/dist/segment-CbAgVO-5.d.ts +47 -0
  288. package/dist/segment-DQLX6r1E.d.ts +16 -0
  289. package/dist/session-properties-COtlxAcK.d.ts +15 -0
  290. package/dist/setting-DXuQGXGF.d.ts +25 -0
  291. package/dist/setup-JqcJ2unJ.d.ts +26 -0
  292. package/dist/signal.d.ts +8 -0
  293. package/dist/signal.js +25 -0
  294. package/dist/snippet-C_Ilx7tR.d.ts +41 -0
  295. package/dist/snippet-Djn0rL21.d.ts +16 -0
  296. package/dist/table-CDZbLNow.d.ts +176 -0
  297. package/dist/table-Od6uvDVW.d.ts +3234 -0
  298. package/dist/tag-qzjGGci8.d.ts +48 -0
  299. package/dist/timeline-BK45hy-h.d.ts +218 -0
  300. package/dist/timeline-BTs6fuRp.d.ts +21 -0
  301. package/dist/transform-C5thnJwW.d.ts +559 -0
  302. package/dist/transform-WASQAXeA.d.ts +652 -0
  303. package/dist/transform-dag-run-BgZwv1yx.d.ts +49 -0
  304. package/dist/transform-inspector-CMCh8WKV.d.ts +374 -0
  305. package/dist/transform-job-D8jTQtdX.d.ts +98 -0
  306. package/dist/transform-job-DmTwKxhc.d.ts +237 -0
  307. package/dist/transform-python-DtL3xxMj.d.ts +101 -0
  308. package/dist/transform-tag-C6j5EUkX.d.ts +25 -0
  309. package/dist/transform-test-CR_i54IV.d.ts +412 -0
  310. package/dist/transform-test-CeMzDpUC.d.ts +346 -0
  311. package/dist/transport-BsXqRujn.d.ts +476 -0
  312. package/dist/transport-HP7cyo9N.js +397 -0
  313. package/dist/upload-B5YjVkSW.d.ts +12 -0
  314. package/dist/upload-UPfZFdbH.d.ts +22 -0
  315. package/dist/url-CI0pxHOc.d.ts +7 -0
  316. package/dist/url.d.ts +2 -0
  317. package/dist/url.js +34 -0
  318. package/dist/user-Sqqv7rqh.d.ts +18 -0
  319. package/dist/version/capability-error.d.ts +2 -0
  320. package/dist/version/capability-error.js +42 -0
  321. package/dist/version/features.d.ts +2 -0
  322. package/dist/version/features.js +171 -0
  323. package/dist/version/input-gates.d.ts +2 -0
  324. package/dist/version/input-gates.js +13 -0
  325. package/dist/version/known-range.d.ts +2 -0
  326. package/dist/version/known-range.js +7 -0
  327. package/dist/version/probe.d.ts +2 -0
  328. package/dist/version/probe.js +30 -0
  329. package/dist/version/profile.d.ts +2 -0
  330. package/dist/version/profile.js +64 -0
  331. package/dist/version/requirement-check.d.ts +2 -0
  332. package/dist/version/requirement-check.js +62 -0
  333. package/dist/version/requirements.d.ts +2 -0
  334. package/dist/version/requirements.js +229 -0
  335. package/dist/version/tag.d.ts +2 -0
  336. package/dist/version/tag.js +52 -0
  337. package/package.json +66 -4
@@ -0,0 +1,99 @@
1
+ import { DATA_SENSITIVITY_GATE, FieldSearchMatches, FieldValues, FieldWithDataSensitivity, fieldDetailSchema, fieldRemappedValueSchema } from "../domain/field.js";
2
+ import { t as explainer } from "../refusal-B9aeHMc9.js";
3
+ import { gateTriggered } from "../version/input-gates.js";
4
+ import { fetchOptionalParsed } from "./optional-parsed.js";
5
+ import { z } from "zod";
6
+ //#region src/resources/field.ts
7
+ const FieldApiSummary = z.tuple([z.tuple([z.literal("count"), z.number().int()]), z.tuple([z.literal("distincts"), z.number().int()])]);
8
+ function fieldResource(transport) {
9
+ const { refuse } = explainer(transport, "field");
10
+ /**
11
+ * Get one field by id. A server that labels data sensitivity answers `data_sensitivity`, `null`
12
+ * for an unlabelled field; any other answers the field without the key (`hasDataSensitivity`).
13
+ */
14
+ async function get(id, options = {}) {
15
+ const { features } = await transport.server(options);
16
+ return transport.requestParsed(fieldDetailSchema(features), `/api/field/${id}`, { ...options });
17
+ }
18
+ /**
19
+ * Update a field by id, patching only the fields the body carries. A `data_sensitivity` label is
20
+ * a person's call the server's classifier never overwrites, and `null` withdraws it so the
21
+ * classifier's own applies again; a server without the column would drop the key silently, so
22
+ * the label is refused there before the wire. Answers the field the way `get` does.
23
+ */
24
+ async function update(id, params, options = {}) {
25
+ await transport.requireFeatures(gateTriggered(DATA_SENSITIVITY_GATE, params.data_sensitivity) ? [DATA_SENSITIVITY_GATE.feature] : [], options);
26
+ const { features } = await transport.server(options);
27
+ return transport.requestParsed(fieldDetailSchema(features), `/api/field/${id}`, {
28
+ ...options,
29
+ method: "PUT",
30
+ body: params
31
+ });
32
+ }
33
+ /**
34
+ * Label a field's data sensitivity by hand. A person's label is never overwritten by the server's
35
+ * classifier; `null` withdraws it, so whatever label the classifier wrote shows again. A server
36
+ * without the column drops the key silently, so the label is refused there before the wire.
37
+ * Answers the field with the label it now carries.
38
+ */
39
+ async function setDataSensitivity(id, params, options = {}) {
40
+ return transport.requestParsed(FieldWithDataSensitivity, `/api/field/${id}`, {
41
+ ...options,
42
+ method: "PUT",
43
+ body: params
44
+ });
45
+ }
46
+ /**
47
+ * Search the values of `searchId` that contain `value`, case-insensitively, answering the
48
+ * matching values of `id` paired with them, ordered by value, at most `limit` of them. An FK on
49
+ * either side is followed to the PK it points at, and a field that resolves to the same field as
50
+ * `searchId` answers each value alone. Without `value`, the first `limit` values. A field with
51
+ * custom display values answers every mapped value with its display value instead, matching
52
+ * `value` against the display value, ignoring both `searchId` and `limit`.
53
+ */
54
+ async function search(id, searchId, params, options = {}) {
55
+ return transport.requestParsed(FieldSearchMatches, `/api/field/${id}/search/${searchId}`, {
56
+ ...options,
57
+ query: {
58
+ value: params.value,
59
+ limit: params.limit
60
+ }
61
+ });
62
+ }
63
+ /**
64
+ * The value of `remappedId` on the one row where `id` equals `value`, as `[value, remapped]`,
65
+ * or `null` when no row matches. For a numeric field the server reads the leading number of
66
+ * `value` and ignores any text after it, refusing only a `value` that has none.
67
+ */
68
+ async function remapping(id, remappedId, params, options = {}) {
69
+ const { features } = await transport.server(options);
70
+ return fetchOptionalParsed(transport, `/api/field/${id}/remapping/${remappedId}`, fieldRemappedValueSchema(features, id === remappedId), {
71
+ ...options,
72
+ query: { value: params.value }
73
+ });
74
+ }
75
+ /** Get the row count and the distinct-value count for a field. */
76
+ async function summary(id, options = {}) {
77
+ const [[, count], [, distincts]] = await transport.requestParsed(FieldApiSummary, `/api/field/${id}/summary`, { ...options });
78
+ return {
79
+ field_id: id,
80
+ count,
81
+ distincts
82
+ };
83
+ }
84
+ /** Get the cached distinct values Metabase holds for a field. */
85
+ async function values(id, options = {}) {
86
+ return transport.requestParsed(FieldValues, `/api/field/${id}/values`, { ...options });
87
+ }
88
+ return {
89
+ get,
90
+ update,
91
+ setDataSensitivity: refuse("setDataSensitivity", setDataSensitivity),
92
+ search,
93
+ remapping,
94
+ summary,
95
+ values
96
+ };
97
+ }
98
+ //#endregion
99
+ export { fieldResource };
@@ -0,0 +1,2 @@
1
+ import { a as SyncRemoteChangesParams, c as SyncWaitParams, i as SyncImportParams, l as gitSyncResource, n as SyncExportParams, o as SyncScopeCollection, r as SyncExportPreflightParams, s as SyncStashParams, t as SyncCreateBranchParams } from "../git-sync-BTf1aYHr.js";
2
+ export { SyncCreateBranchParams, SyncExportParams, SyncExportPreflightParams, SyncImportParams, SyncRemoteChangesParams, SyncScopeCollection, SyncStashParams, SyncWaitParams, gitSyncResource };
@@ -0,0 +1,362 @@
1
+ import { SessionProperties } from "../domain/session-properties.js";
2
+ import { ConfigError } from "../errors.js";
3
+ import { a as HttpError } from "../errors-DdMlaXqq.js";
4
+ import { profileFromProperties } from "../version/probe.js";
5
+ import { Collection } from "../domain/collection.js";
6
+ import { t as explainer } from "../refusal-B9aeHMc9.js";
7
+ import { listCollectionsAs } from "./collection.js";
8
+ import { pollUntil } from "../poll.js";
9
+ import { fetchOptionalParsed } from "./optional-parsed.js";
10
+ import { RemoteSyncState, SyncBranchCreated, SyncDirtyItem, SyncExportPreflight, SyncRemoteChanges, SyncSettingsUpdateResult, SyncTask, isSyncTaskTerminal } from "../domain/git-sync.js";
11
+ import { z } from "zod";
12
+ //#region src/resources/git-sync.ts
13
+ const SyncScopeCollection = Collection.pick({
14
+ id: true,
15
+ name: true,
16
+ is_remote_synced: true
17
+ }).strip();
18
+ const SyncDirtyFlag = z.object({ is_dirty: z.boolean() });
19
+ const SyncDirtyList = z.object({ dirty: z.array(SyncDirtyItem) });
20
+ const SyncBranchList = z.object({ items: z.array(z.string()) });
21
+ const SyncImportStarted = z.object({
22
+ status: z.literal("success"),
23
+ task_id: z.number().int().positive().nullable(),
24
+ message: z.string().nullable().optional()
25
+ });
26
+ const SyncExportStarted = z.object({
27
+ message: z.string(),
28
+ task_id: z.number().int().positive()
29
+ });
30
+ const SyncStashStarted = z.object({
31
+ status: z.literal("success"),
32
+ message: z.string(),
33
+ task_id: z.number().int().positive()
34
+ });
35
+ const RemoteSyncSetting = z.string().nullable();
36
+ const RemoteSyncBranchProperty = SessionProperties.extend({ "remote-sync-branch": z.string().nullable().optional() });
37
+ const RemoteSyncUrlProperty = SessionProperties.extend({ "remote-sync-url": z.string().nullable().optional() });
38
+ const BRANCH_UNREADABLE_MESSAGE = "the remote-sync-branch setting is not readable: only admins see it, and a server without remote sync has none";
39
+ const BRANCH_UNSET_MESSAGE = "git-sync tracks no branch: the remote-sync-branch setting is unset";
40
+ const RemoteSyncStateProperty = RemoteSyncBranchProperty.extend({
41
+ "remote-sync-enabled": z.boolean().optional(),
42
+ "remote-sync-type": RemoteSyncState.shape.sync_type.optional()
43
+ });
44
+ const REMOTE_SYNC_STATE_ABSENT_MESSAGE = "the remote-sync-enabled and remote-sync-type settings are absent: the server has no remote-sync module";
45
+ function isRemoteUnreadable(error) {
46
+ if (!(error instanceof HttpError)) return false;
47
+ return error.status === 403 || error.status === 404;
48
+ }
49
+ function gitSyncResource(transport) {
50
+ const { explain, refuse, refuseAfterReading } = explainer(transport, "gitSync");
51
+ /** Get the running or most recently finished sync task, or null when the server has none. */
52
+ async function currentTask(options = {}) {
53
+ return fetchOptionalParsed(transport, "/api/ee/remote-sync/current-task", SyncTask, options);
54
+ }
55
+ /** Request cancellation of the running sync task, and answer it in the state that left it. */
56
+ async function cancelTask(options = {}) {
57
+ return transport.requestParsed(SyncTask, "/api/ee/remote-sync/current-task/cancel", {
58
+ ...options,
59
+ method: "POST"
60
+ });
61
+ }
62
+ /** Whether Metabase holds content changes the remote has not been told about. */
63
+ async function isDirty(options = {}) {
64
+ return (await transport.requestParsed(SyncDirtyFlag, "/api/ee/remote-sync/is-dirty", { ...options })).is_dirty;
65
+ }
66
+ /** List the objects whose local state differs from the remote. */
67
+ async function dirty(options = {}) {
68
+ return {
69
+ data: (await transport.requestParsed(SyncDirtyList, "/api/ee/remote-sync/dirty", { ...options })).dirty,
70
+ total: null
71
+ };
72
+ }
73
+ /**
74
+ * Compare the tracked remote branch against what Metabase last imported. The server caches the
75
+ * comparison; `force-refresh` re-reads the remote instead.
76
+ */
77
+ async function hasRemoteChanges(params = {}, options = {}) {
78
+ return transport.requestParsed(SyncRemoteChanges, "/api/ee/remote-sync/has-remote-changes", {
79
+ ...options,
80
+ query: { "force-refresh": params["force-refresh"] }
81
+ });
82
+ }
83
+ /**
84
+ * Import content from the remote into Metabase. The endpoint queues a task and returns at once;
85
+ * pass `wait` to poll that task until it reaches a terminal status. A server already up to date
86
+ * answers no task id, and there is then nothing to poll. A server that guards the tracked branch
87
+ * refuses with 409 when `expected_branch` disagrees with the setting; left out, it is the tracked
88
+ * branch as read just before the request, on every server with remote sync. A server that guards
89
+ * the branch also requires it, so there the request is refused before the wire when the setting
90
+ * is unset or hidden from the caller; a server without the guard ignores the assertion, and gets
91
+ * none when there is none to read. `merge` folds the remote's changes into local content by a
92
+ * three-way merge and keeps un-pushed local changes, where a plain import refuses on a dirty
93
+ * instance.
94
+ */
95
+ async function importFromRemote(params = {}, options = {}) {
96
+ const expectedBranch = await expectedBranchFor(params.expected_branch, options);
97
+ await requireMerge(params.merge, options);
98
+ const started = await transport.requestParsed(SyncImportStarted, "/api/ee/remote-sync/import", {
99
+ ...options,
100
+ method: "POST",
101
+ body: {
102
+ branch: params.branch,
103
+ force: params.force,
104
+ merge: params.merge,
105
+ expected_branch: expectedBranch
106
+ }
107
+ });
108
+ const message = started.message ?? null;
109
+ if (params.wait === void 0 || started.task_id === null) return {
110
+ message,
111
+ task_id: started.task_id
112
+ };
113
+ return {
114
+ message,
115
+ task_id: started.task_id,
116
+ final: await settle(params.wait, options)
117
+ };
118
+ }
119
+ async function expectedBranchFor(given, options) {
120
+ if (given !== void 0) return given;
121
+ return importAssertion(await readTrackedBranch(options));
122
+ }
123
+ async function exportBranchFor(given, options) {
124
+ if (given !== void 0) return given;
125
+ return exportBranch(await readTrackedBranch(options));
126
+ }
127
+ async function readTrackedBranch(options) {
128
+ const properties = await transport.probe(RemoteSyncBranchProperty, options);
129
+ return {
130
+ tracked: properties["remote-sync-branch"],
131
+ features: profileFromProperties(properties).features
132
+ };
133
+ }
134
+ async function requireMerge(merge, options) {
135
+ if (merge === true) await transport.requireFeatures(["remoteSyncMerge"], options);
136
+ }
137
+ /**
138
+ * Export Metabase's content to the remote. The endpoint queues a task and returns at once; pass
139
+ * `wait` to poll that task until it reaches a terminal status. A server that guards the tracked
140
+ * branch refuses with 409 when `branch` is not the tracked one; left out, it is the tracked
141
+ * branch as read just before the request, and the request is refused before the wire when the
142
+ * setting is unset or hidden from the caller. A server without the guard exports to a named
143
+ * `branch` and tracks it from then on; left out, it gets none and exports to its own. When the
144
+ * remote has moved past the last sync, a plain export ends in a `conflict` task where `merge` is
145
+ * available, and is refused with 400 before any task elsewhere; `merge` folds the remote's
146
+ * changes in by a three-way merge instead, and `force` overwrites them.
147
+ */
148
+ async function exportToRemote(params = {}, options = {}) {
149
+ const branchName = await exportBranchFor(params.branch, options);
150
+ await requireMerge(params.merge, options);
151
+ const started = await transport.requestParsed(SyncExportStarted, "/api/ee/remote-sync/export", {
152
+ ...options,
153
+ method: "POST",
154
+ body: {
155
+ branch: branchName,
156
+ message: params.message,
157
+ force: params.force,
158
+ merge: params.merge
159
+ }
160
+ });
161
+ const accepted = {
162
+ message: started.message,
163
+ task_id: started.task_id,
164
+ branch: branchName ?? null
165
+ };
166
+ if (params.wait === void 0) return accepted;
167
+ return {
168
+ ...accepted,
169
+ final: await settle(params.wait, options)
170
+ };
171
+ }
172
+ /**
173
+ * Preview what exporting to `branch` would do against the live remote, without writing: whether
174
+ * the remote has moved on, whether a merge would apply cleanly, which entities conflict, and what
175
+ * a force push would discard. `branch` must be the one git-sync tracks; the server answers 409
176
+ * otherwise.
177
+ */
178
+ async function exportPreflight(params, options = {}) {
179
+ return transport.requestParsed(SyncExportPreflight, "/api/ee/remote-sync/export-preflight", {
180
+ ...options,
181
+ query: { branch: params.branch }
182
+ });
183
+ }
184
+ /**
185
+ * Export Metabase's current content to a branch the remote does not have yet. The endpoint
186
+ * queues a task and returns at once; pass `wait` to poll that task to a terminal status.
187
+ */
188
+ async function stash(params, options = {}) {
189
+ const started = await transport.requestParsed(SyncStashStarted, "/api/ee/remote-sync/stash", {
190
+ ...options,
191
+ method: "POST",
192
+ body: {
193
+ new_branch: params.new_branch,
194
+ message: params.message
195
+ }
196
+ });
197
+ if (params.wait === void 0) return {
198
+ status: started.status,
199
+ message: started.message,
200
+ task_id: started.task_id
201
+ };
202
+ return {
203
+ status: started.status,
204
+ message: started.message,
205
+ task_id: started.task_id,
206
+ final: await settle(params.wait, options)
207
+ };
208
+ }
209
+ /** List the branches the configured remote carries. */
210
+ async function branches(options = {}) {
211
+ return {
212
+ data: (await transport.requestParsed(SyncBranchList, "/api/ee/remote-sync/branches", { ...options })).items,
213
+ total: null
214
+ };
215
+ }
216
+ /** Create a branch on the remote and point git-sync at it. */
217
+ async function createBranch(params, options = {}) {
218
+ return transport.requestParsed(SyncBranchCreated, "/api/ee/remote-sync/create-branch", {
219
+ ...options,
220
+ method: "POST",
221
+ body: { name: params.name }
222
+ });
223
+ }
224
+ /**
225
+ * Mark one collection as git-synced, or unmark it. The server cascades the flag to descendants
226
+ * by location prefix, and may queue an import task to bring the instance in line with the
227
+ * remote. A server without `remoteSyncCollectionsOnlyUpdate` validates every settings update as
228
+ * a remote configuration and fails one naming no remote, after it has applied the flag, so it is
229
+ * sent the remote's URL and its token as the server shows it, which it checks against the remote
230
+ * and keeps as they are, or a blank URL when no remote is configured, which clears the remote
231
+ * settings that are already empty.
232
+ */
233
+ async function setCollectionSynced(collectionId, synced, options = {}) {
234
+ return transport.requestParsed(SyncSettingsUpdateResult, "/api/ee/remote-sync/settings", {
235
+ ...options,
236
+ method: "PUT",
237
+ body: await settingsUpdateBody({ [collectionId]: synced }, options)
238
+ });
239
+ }
240
+ async function settingsUpdateBody(collections, options) {
241
+ const { features } = await transport.server(options);
242
+ if (features.remoteSyncCollectionsOnlyUpdate) return { collections };
243
+ const url = (await transport.probe(RemoteSyncUrlProperty, options))["remote-sync-url"];
244
+ if (url === void 0) return { collections };
245
+ if (url === null) return {
246
+ collections,
247
+ "remote-sync-url": ""
248
+ };
249
+ const token = await fetchOptionalParsed(transport, "/api/setting/remote-sync-token", RemoteSyncSetting, options);
250
+ if (token === null) return {
251
+ collections,
252
+ "remote-sync-url": url
253
+ };
254
+ return {
255
+ collections,
256
+ "remote-sync-url": url,
257
+ "remote-sync-token": token
258
+ };
259
+ }
260
+ /** The collections currently in git-sync's scope. */
261
+ async function syncedCollections(options = {}) {
262
+ return {
263
+ data: (await listCollectionsAs(transport, SyncScopeCollection, options)).filter((entry) => entry.is_remote_synced === true),
264
+ total: null
265
+ };
266
+ }
267
+ /** The remote's URL, or null when none is configured or the caller may not read it. */
268
+ async function remoteUrl(options = {}) {
269
+ try {
270
+ const url = await fetchOptionalParsed(transport, "/api/setting/remote-sync-url", RemoteSyncSetting, options);
271
+ return url === "" ? null : url;
272
+ } catch (error) {
273
+ if (isRemoteUnreadable(error)) return null;
274
+ throw error;
275
+ }
276
+ }
277
+ /**
278
+ * The branch git-sync tracks, or null when none is configured. Refuses when the server has no
279
+ * remote sync or the caller may not read the setting (it is admin-only), rather than reading
280
+ * either as unset.
281
+ */
282
+ function branch(properties) {
283
+ const tracked = properties["remote-sync-branch"];
284
+ if (tracked === void 0) throw new ConfigError(BRANCH_UNREADABLE_MESSAGE);
285
+ return tracked;
286
+ }
287
+ /**
288
+ * Whether a remote is configured, through the settings or the environment, the direction the
289
+ * instance syncs in, which is `read-only` until an admin sets it, and the branch it tracks, all
290
+ * from one read. The remote's URL is visible to admins only and absent when the environment sets
291
+ * it, so `configured` is read from its own setting. Refused like `branch` when the caller may not
292
+ * read the branch, and on a server without the remote-sync module.
293
+ */
294
+ function remote(properties) {
295
+ const tracked = branch(properties);
296
+ const configured = properties["remote-sync-enabled"];
297
+ const syncType = properties["remote-sync-type"];
298
+ if (configured === void 0 || syncType === void 0) throw new ConfigError(REMOTE_SYNC_STATE_ABSENT_MESSAGE);
299
+ return {
300
+ configured,
301
+ sync_type: syncType,
302
+ branch: tracked
303
+ };
304
+ }
305
+ /**
306
+ * The branch git-sync tracks, refused when none is configured, the server has no remote sync, or
307
+ * the caller may not read it.
308
+ */
309
+ function trackedBranch(properties) {
310
+ const tracked = branch(properties);
311
+ if (tracked === null) throw new ConfigError(BRANCH_UNSET_MESSAGE);
312
+ return tracked;
313
+ }
314
+ /**
315
+ * Poll the current task until it reaches a terminal status. A server with no task at all
316
+ * answers null, which is terminal in the same sense: nothing further will happen.
317
+ */
318
+ async function waitForTask(wait, options = {}) {
319
+ return settle(wait, options);
320
+ }
321
+ async function settle(wait, options) {
322
+ return pollUntil(async (signal) => currentTask({
323
+ ...options,
324
+ signal
325
+ }), (task) => task === null || isSyncTaskTerminal(task.status), wait);
326
+ }
327
+ return {
328
+ currentTask: explain("currentTask", currentTask),
329
+ cancelTask: explain("cancelTask", cancelTask),
330
+ isDirty: explain("isDirty", isDirty),
331
+ dirty: explain("dirty", dirty),
332
+ hasRemoteChanges: explain("hasRemoteChanges", hasRemoteChanges),
333
+ import: explain("import", importFromRemote),
334
+ export: explain("export", exportToRemote),
335
+ exportPreflight: explain("exportPreflight", exportPreflight),
336
+ stash: explain("stash", stash),
337
+ branches: explain("branches", branches),
338
+ createBranch: explain("createBranch", createBranch),
339
+ setCollectionSynced: explain("setCollectionSynced", setCollectionSynced),
340
+ syncedCollections: refuse("syncedCollections", syncedCollections),
341
+ remoteUrl,
342
+ branch: refuseAfterReading("branch", RemoteSyncBranchProperty, branch),
343
+ remote: refuseAfterReading("remote", RemoteSyncStateProperty, remote),
344
+ trackedBranch: refuseAfterReading("trackedBranch", RemoteSyncBranchProperty, trackedBranch),
345
+ waitForTask: explain("waitForTask", waitForTask)
346
+ };
347
+ }
348
+ function importAssertion(read) {
349
+ if (!read.features.remoteSync) return;
350
+ if (read.features.remoteSyncBranchGuard) return requiredBranch(read.tracked);
351
+ return typeof read.tracked === "string" ? read.tracked : void 0;
352
+ }
353
+ function exportBranch(read) {
354
+ if (!read.features.remoteSync || !read.features.remoteSyncBranchGuard) return;
355
+ return requiredBranch(read.tracked);
356
+ }
357
+ function requiredBranch(tracked) {
358
+ if (typeof tracked === "string") return tracked;
359
+ throw new ConfigError(tracked === null ? BRANCH_UNSET_MESSAGE : BRANCH_UNREADABLE_MESSAGE);
360
+ }
361
+ //#endregion
362
+ export { SyncScopeCollection, gitSyncResource };
@@ -0,0 +1,2 @@
1
+ import { n as glossaryResource, t as GlossaryListParams } from "../glossary-DFvnz-E5.js";
2
+ export { GlossaryListParams, glossaryResource };
@@ -0,0 +1,51 @@
1
+ import { Glossary } from "../domain/glossary.js";
2
+ import { z } from "zod";
3
+ //#region src/resources/glossary.ts
4
+ const GlossaryApiList = z.object({ data: z.array(Glossary) }).loose();
5
+ function glossaryResource(transport) {
6
+ /**
7
+ * List glossary entries in term order. `search` keeps the entries whose term or definition
8
+ * contains it, case-insensitively.
9
+ */
10
+ async function list(params = {}, options = {}) {
11
+ return {
12
+ data: (await transport.requestParsed(GlossaryApiList, "/api/glossary", {
13
+ ...options,
14
+ query: { search: params.search }
15
+ })).data,
16
+ total: null
17
+ };
18
+ }
19
+ /** Create a glossary entry, a term and its definition. Terms are unique. */
20
+ async function create(params, options = {}) {
21
+ return transport.requestParsed(Glossary, "/api/glossary", {
22
+ ...options,
23
+ method: "POST",
24
+ body: params
25
+ });
26
+ }
27
+ /** Replace the term and definition of a glossary entry by id. */
28
+ async function update(id, params, options = {}) {
29
+ return transport.requestParsed(Glossary, `/api/glossary/${id}`, {
30
+ ...options,
31
+ method: "PUT",
32
+ body: params
33
+ });
34
+ }
35
+ /** Delete a glossary entry by id. */
36
+ async function remove(id, options = {}) {
37
+ await transport.requestRaw(`/api/glossary/${id}`, {
38
+ ...options,
39
+ method: "DELETE",
40
+ expectContentType: "binary"
41
+ });
42
+ }
43
+ return {
44
+ list,
45
+ create,
46
+ update,
47
+ delete: remove
48
+ };
49
+ }
50
+ //#endregion
51
+ export { glossaryResource };
@@ -0,0 +1,85 @@
1
+ import { f as RequestOptions, h as Transport } from "../transport-BsXqRujn.js";
2
+ //#region src/resources/library.d.ts
3
+ declare function libraryResource(transport: Transport): {
4
+ get: (options?: RequestOptions | undefined) => Promise<{
5
+ [x: string]: unknown;
6
+ id: string | number;
7
+ name: string;
8
+ effective_children: {
9
+ id: string | number;
10
+ name: string;
11
+ description: string | null;
12
+ type: "library" | "instance-analytics" | "trash" | "library-data" | "library-metrics" | "library-dashboards" | "tenant-specific-root-collection" | null;
13
+ is_remote_synced: boolean | null;
14
+ }[];
15
+ description?: string | null | undefined;
16
+ archived?: boolean | undefined;
17
+ location?: string | null | undefined;
18
+ parent_id?: string | number | null | undefined;
19
+ personal_owner_id?: number | null | undefined;
20
+ is_personal?: boolean | undefined;
21
+ authority_level?: "official" | null | undefined;
22
+ type?: "library" | "instance-analytics" | "trash" | "library-data" | "library-metrics" | "library-dashboards" | "tenant-specific-root-collection" | null | undefined;
23
+ namespace?: "data-apps" | "transforms" | "snippets" | "analytics" | "shared-tenant-collection" | "tenant-specific" | "data-actions" | null | undefined;
24
+ entity_id?: string | null | undefined;
25
+ slug?: string | undefined;
26
+ can_write?: boolean | undefined;
27
+ is_remote_synced?: boolean | null | undefined;
28
+ } | null>;
29
+ create: (options?: RequestOptions | undefined) => Promise<{
30
+ [x: string]: unknown;
31
+ id: string | number;
32
+ name: string;
33
+ effective_children: {
34
+ id: string | number;
35
+ name: string;
36
+ description: string | null;
37
+ type: "library" | "instance-analytics" | "trash" | "library-data" | "library-metrics" | "library-dashboards" | "tenant-specific-root-collection" | null;
38
+ is_remote_synced: boolean | null;
39
+ }[];
40
+ description?: string | null | undefined;
41
+ archived?: boolean | undefined;
42
+ location?: string | null | undefined;
43
+ parent_id?: string | number | null | undefined;
44
+ personal_owner_id?: number | null | undefined;
45
+ is_personal?: boolean | undefined;
46
+ authority_level?: "official" | null | undefined;
47
+ type?: "library" | "instance-analytics" | "trash" | "library-data" | "library-metrics" | "library-dashboards" | "tenant-specific-root-collection" | null | undefined;
48
+ namespace?: "data-apps" | "transforms" | "snippets" | "analytics" | "shared-tenant-collection" | "tenant-specific" | "data-actions" | null | undefined;
49
+ entity_id?: string | null | undefined;
50
+ slug?: string | undefined;
51
+ can_write?: boolean | undefined;
52
+ is_remote_synced?: boolean | null | undefined;
53
+ }>;
54
+ ensureDataCollectionId: (options?: RequestOptions | undefined) => Promise<number>;
55
+ publishTables: (params: {
56
+ collection_id: number;
57
+ database_ids?: number[] | undefined;
58
+ schema_ids?: string[] | undefined;
59
+ table_ids?: number[] | undefined;
60
+ }, options?: RequestOptions | undefined) => Promise<{
61
+ [x: string]: unknown;
62
+ id: string | number;
63
+ name: string;
64
+ description?: string | null | undefined;
65
+ archived?: boolean | undefined;
66
+ location?: string | null | undefined;
67
+ parent_id?: string | number | null | undefined;
68
+ personal_owner_id?: number | null | undefined;
69
+ is_personal?: boolean | undefined;
70
+ authority_level?: "official" | null | undefined;
71
+ type?: "library" | "instance-analytics" | "trash" | "library-data" | "library-metrics" | "library-dashboards" | "tenant-specific-root-collection" | null | undefined;
72
+ namespace?: "data-apps" | "transforms" | "snippets" | "analytics" | "shared-tenant-collection" | "tenant-specific" | "data-actions" | null | undefined;
73
+ entity_id?: string | null | undefined;
74
+ slug?: string | undefined;
75
+ can_write?: boolean | undefined;
76
+ is_remote_synced?: boolean | null | undefined;
77
+ } | null>;
78
+ unpublishTables: (params: {
79
+ database_ids?: number[] | undefined;
80
+ schema_ids?: string[] | undefined;
81
+ table_ids?: number[] | undefined;
82
+ }, options?: RequestOptions | undefined) => Promise<void>;
83
+ };
84
+ //#endregion
85
+ export { libraryResource };