@metabase/cli 0.1.0-alpha.workspaces-commands.645461e → 0.1.0-alpha.workspaces-commands.80b2b17

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 (170) hide show
  1. package/README.md +391 -12
  2. package/dist/{add-collection-D2VyeBlW.mjs → add-collection-BqucCiGX.mjs} +3 -3
  3. package/dist/{add-collection-D36mvhlp.mjs → add-collection-DYnUVgZo.mjs} +6 -6
  4. package/dist/{api-key-D7FJ0diY.mjs → api-key-DqiFwfHf.mjs} +1 -1
  5. package/dist/archive-1TGgAxcg.mjs +39 -0
  6. package/dist/archive-DG0VCVCQ.mjs +44 -0
  7. package/dist/archive-E8nahkCU.mjs +44 -0
  8. package/dist/{archive-BhrD3g9q.mjs → archive-uhl-s870.mjs} +3 -3
  9. package/dist/auth-BwgJWXyH.mjs +19 -0
  10. package/dist/{body-po-d1TER.mjs → body-Brsr9GPd.mjs} +1 -1
  11. package/dist/{branches-C_QIaXq_.mjs → branches-BV8k-tAp.mjs} +4 -4
  12. package/dist/cancel-BAuwBvUG.mjs +56 -0
  13. package/dist/{cancel-task-BUBIAgGA.mjs → cancel-task-CSGWE1Xk.mjs} +4 -4
  14. package/dist/card-C01m8xhO.mjs +20 -0
  15. package/dist/{cards-CURArHer.mjs → cards-szqvWxGJ.mjs} +4 -4
  16. package/dist/cli.mjs +23 -20
  17. package/dist/collection-P6ADc9R3.mjs +19 -0
  18. package/dist/{create-CCji2u2l.mjs → create--vi0p8KW.mjs} +3 -3
  19. package/dist/{create-D3PbG6zp.mjs → create-BCRzAvM-.mjs} +3 -3
  20. package/dist/{create-CSb4rEYN.mjs → create-BFwMq6f7.mjs} +4 -4
  21. package/dist/{create-SD_4KNY7.mjs → create-By7kJgQT.mjs} +4 -4
  22. package/dist/{create-Pz8emM9b.mjs → create-C-UY_5UO.mjs} +4 -4
  23. package/dist/create-CG_qAdUo.mjs +40 -0
  24. package/dist/create-CR7I3bWe.mjs +44 -0
  25. package/dist/{create-DTTeHc01.mjs → create-DhwxqVwf.mjs} +4 -4
  26. package/dist/{create-branch-DY_Xk7xJ.mjs → create-branch-ZnI44f-h.mjs} +4 -4
  27. package/dist/create-vo7uPJKP.mjs +40 -0
  28. package/dist/{create-ZbmxIy-0.mjs → create-xsykgRhW.mjs} +4 -4
  29. package/dist/{credentials-Cx9Y_e-i.mjs → credentials-DaHDYji4.mjs} +6 -6
  30. package/dist/{current-task-DVhQW4jT.mjs → current-task-Bu0sANO6.mjs} +4 -4
  31. package/dist/{dashboard-BJXi1tGr.mjs → dashboard-CztCJxke.mjs} +10 -1
  32. package/dist/dashboard-j8xycFUI.mjs +20 -0
  33. package/dist/{database-BAvx1gH2.mjs → database-CTMSbjcD.mjs} +3 -3
  34. package/dist/database-GbK7OAPX.mjs +51 -0
  35. package/dist/db-BHPFrKDz.mjs +22 -0
  36. package/dist/{delete-Vl85AALS.mjs → delete-Bhg_ZVaN.mjs} +4 -4
  37. package/dist/{delete-BGxR7gVt.mjs → delete-DaHvtXiY.mjs} +4 -4
  38. package/dist/{delete-table-ClBj6G7Q.mjs → delete-table-D9Nk1EcR.mjs} +4 -4
  39. package/dist/{deprovision-CwrA3yQY.mjs → deprovision-BUkv6QvW.mjs} +8 -8
  40. package/dist/{dirty-CNPWGSpA.mjs → dirty-bskqjgxM.mjs} +4 -4
  41. package/dist/{docker-Cvj7_PZp.mjs → docker-BH3ZgM8X.mjs} +3 -12
  42. package/dist/{eid-DFaDBRra.mjs → eid-C-j8C4fU.mjs} +1 -1
  43. package/dist/{export-DuMGd6lo.mjs → export-C148vmMO.mjs} +5 -5
  44. package/dist/field-BakUM_Le.mjs +142 -0
  45. package/dist/field-xPcJNejW.mjs +18 -0
  46. package/dist/fields-B8buJtIm.mjs +38 -0
  47. package/dist/{get--PcCqyKa.mjs → get-4QVOFifd.mjs} +4 -4
  48. package/dist/{get-B2r9MJly.mjs → get-4v0BZc-t.mjs} +4 -4
  49. package/dist/get-BCGqXIPq.mjs +36 -0
  50. package/dist/{get-swr2-leH.mjs → get-CpBnUZwG.mjs} +4 -4
  51. package/dist/{get-DfO9yXXn.mjs → get-DF_gcqj0.mjs} +4 -4
  52. package/dist/{get-BjLQvtIP.mjs → get-DSkpEq1B.mjs} +7 -7
  53. package/dist/get-DTvJO9pW.mjs +36 -0
  54. package/dist/{get-vajO-hi6.mjs → get-DU6bgBj5.mjs} +3 -3
  55. package/dist/{get-CoDOJTMY.mjs → get-DdTCMlFK.mjs} +4 -4
  56. package/dist/{get-Dyf1VRQF.mjs → get-DvZdIqEo.mjs} +2 -2
  57. package/dist/get-mkCpPcfT.mjs +49 -0
  58. package/dist/get-run-B9WJuQXB.mjs +36 -0
  59. package/dist/get-ystbsKwy.mjs +36 -0
  60. package/dist/{has-remote-changes-BqwcNcE7.mjs → has-remote-changes-w3xtnKKN.mjs} +4 -4
  61. package/dist/{import-D--2vqZQ.mjs → import-BPYmRYty.mjs} +5 -5
  62. package/dist/is-dirty-DF3Xq5qO.mjs +10 -0
  63. package/dist/{is-dirty-DQ9zG6uN.mjs → is-dirty-DUbSH-Fj.mjs} +2 -2
  64. package/dist/{items-DwQQ0GAg.mjs → items-B7RHTH7w.mjs} +4 -50
  65. package/dist/{license-CzMfg5XI.mjs → license-msMkO5-a.mjs} +3 -3
  66. package/dist/{list-D-L9cq2y.mjs → list-5bWQaEkJ.mjs} +3 -3
  67. package/dist/{list-BIK_58XI.mjs → list-6zA_S9iX.mjs} +2 -2
  68. package/dist/list-BD9Jmswp.mjs +32 -0
  69. package/dist/{list-DQeGs5DL.mjs → list-BFc86CqB.mjs} +3 -3
  70. package/dist/{list-C79o1l5H.mjs → list-BY6QmcNt.mjs} +28 -7
  71. package/dist/list-BxFVxGJK.mjs +40 -0
  72. package/dist/{list-zFg_sbzo.mjs → list-CLR3hoKB.mjs} +3 -3
  73. package/dist/list-ChLXLMJC.mjs +32 -0
  74. package/dist/{list-DMwbB4b4.mjs → list-DHnoy9Ev.mjs} +3 -3
  75. package/dist/{list-BtC8ka3k.mjs → list-DIHwUIWc.mjs} +2 -2
  76. package/dist/{list-0NpAfgQ4.mjs → list-DaaVEqTW.mjs} +5 -5
  77. package/dist/{list-FCYnuxeR.mjs → list-DjVp_1u5.mjs} +3 -3
  78. package/dist/{list-BEjK80yL.mjs → list-Y7rBS4VK.mjs} +2 -2
  79. package/dist/{login-CzssJlL2.mjs → login-CmF_pjd2.mjs} +10 -3
  80. package/dist/{logout-Bcwc7QN0.mjs → logout-DALwZk8q.mjs} +3 -3
  81. package/dist/{logs-DIEyUxpM.mjs → logs-CzpMbpFk.mjs} +5 -5
  82. package/dist/measure-B1GKcZxO.mjs +67 -0
  83. package/dist/measure-Cx8PcNRI.mjs +19 -0
  84. package/dist/{get-CLCdkBcw.mjs → metadata-D0ggtGp6.mjs} +13 -11
  85. package/dist/metadata-D5ZVNh69.mjs +37 -0
  86. package/dist/{package-DW4n6lFo.mjs → package-CTWKbRR5.mjs} +1 -1
  87. package/dist/paginate-CnTxzOh2.mjs +49 -0
  88. package/dist/{parse-id-DCdBU-nG.mjs → parse-id-Ca6bGAcg.mjs} +1 -1
  89. package/dist/{parse-schemas-dp6MXbcF.mjs → parse-schemas-uQAt-gDD.mjs} +1 -1
  90. package/dist/{poll-DaJLfYpK.mjs → poll-Cn1Nr5Pl.mjs} +1 -1
  91. package/dist/{poll-task-BiYw9iLs.mjs → poll-task-BjJqLBll.mjs} +2 -2
  92. package/dist/{provision-DqfOs_BL.mjs → provision-DYh9vESV.mjs} +9 -9
  93. package/dist/{ps-C-oTI3y_.mjs → ps-BUonSMn-.mjs} +2 -2
  94. package/dist/{ps-zD4MZ7s2.mjs → ps-C2etyNAz.mjs} +5 -5
  95. package/dist/{query-CiX4UQt3.mjs → query-1DBC2Z68.mjs} +3 -3
  96. package/dist/{query-eDZSuQaQ.mjs → query-kx5oNHCU.mjs} +3 -3
  97. package/dist/{remove-Bx1w-uWB.mjs → remove-BG7zWERm.mjs} +5 -5
  98. package/dist/{remove-BsNj8FcZ.mjs → remove-DHUAqV27.mjs} +2 -2
  99. package/dist/{remove-collection-CYRloViE.mjs → remove-collection-D9vlLH3f.mjs} +6 -6
  100. package/dist/rescan-values-Dvqkfe9U.mjs +43 -0
  101. package/dist/revision-message-flag-BJiGjb5m.mjs +11 -0
  102. package/dist/{run-o1HdcHcT.mjs → run-w_n6pESZ.mjs} +10 -10
  103. package/dist/runs-BTZGIWfv.mjs +54 -0
  104. package/dist/{runtime-BlGbSVbh.mjs → runtime-C3pZKYWJ.mjs} +72 -5
  105. package/dist/schema-tables-_xH9x_yJ.mjs +45 -0
  106. package/dist/schemas-qK9k1t5x.mjs +47 -0
  107. package/dist/{search-CshaaZOi.mjs → search-D_uT_dIh.mjs} +3 -3
  108. package/dist/segment-CQ5w3M_W.mjs +70 -0
  109. package/dist/segment-Dx6-fvSJ.mjs +19 -0
  110. package/dist/{set-Dj-zpi9u.mjs → set-CXfpvjWh.mjs} +2 -2
  111. package/dist/{set-CS0Bay1g.mjs → set-Du-INOmN.mjs} +5 -5
  112. package/dist/{setting-CPrSDcuC.mjs → setting-zXeJEuKW.mjs} +3 -3
  113. package/dist/{setup-BjsZgvZs.mjs → setup-BeGXrMCK.mjs} +3 -3
  114. package/dist/snippet-BGE_y5l0.mjs +19 -0
  115. package/dist/snippet-DRTklDg3.mjs +64 -0
  116. package/dist/{start-DK1KR98G.mjs → start-CemnHYMT.mjs} +44 -25
  117. package/dist/{stash-CDSI72Pi.mjs → stash-B4iqDei9.mjs} +5 -5
  118. package/dist/{status-DygsyoJt.mjs → status-BU6KBkX4.mjs} +5 -5
  119. package/dist/{status-B6X-VTeS.mjs → status-CfwmzKep.mjs} +2 -2
  120. package/dist/{status-C32y4hQx.mjs → status-rZUhzHtx.mjs} +2 -2
  121. package/dist/{stop-D8DPsVEP.mjs → stop-CRvnlAXn.mjs} +6 -6
  122. package/dist/summary-CaatzK3v.mjs +41 -0
  123. package/dist/sync-Bx9Iy66T.mjs +28 -0
  124. package/dist/sync-schema-DhLi3v8y.mjs +43 -0
  125. package/dist/{table-DimNUJtH.mjs → table-DhB2_Dxd.mjs} +21 -4
  126. package/dist/table-iRHsX6DM.mjs +19 -0
  127. package/dist/{transform-DRDHuulD.mjs → transform-92odFxg-.mjs} +45 -3
  128. package/dist/transform-DbE5u-t0.mjs +24 -0
  129. package/dist/transform-job-SWvb21qd.mjs +19 -0
  130. package/dist/{translate-bzGSUcP5.mjs → translate-23bZkSH8.mjs} +3 -3
  131. package/dist/{tree-BXf2Avg_.mjs → tree-B-X7i4bS.mjs} +2 -2
  132. package/dist/update-BWSckjxb.mjs +51 -0
  133. package/dist/{update-C_kb0VT2.mjs → update-B_CgvuPe.mjs} +5 -5
  134. package/dist/{update-C8ZrbNAQ.mjs → update-BqK9kPjo.mjs} +5 -5
  135. package/dist/update-CrPaxzNT.mjs +52 -0
  136. package/dist/{update-2rOSt-uC.mjs → update-Cvu0W1Gc.mjs} +9 -9
  137. package/dist/{update-qBaNdoVm.mjs → update-DUrtN9gl.mjs} +4 -4
  138. package/dist/update-Dttkbveb.mjs +51 -0
  139. package/dist/update-Dy-j9Scf.mjs +51 -0
  140. package/dist/{update-dashcard-Dz8n_Eb3.mjs → update-dashcard-DczxuWJ6.mjs} +5 -5
  141. package/dist/{update-DFGi07_J.mjs → update-uBgZZAhv.mjs} +5 -5
  142. package/dist/update-y5rpTFYD.mjs +52 -0
  143. package/dist/{url-DntR9Vt0.mjs → url-B3Gp2vZx.mjs} +5 -5
  144. package/dist/values-B1VY8N-9.mjs +36 -0
  145. package/dist/{wait-CCC_NXX_.mjs → wait-8cMbKe5F.mjs} +5 -5
  146. package/dist/{wait-w-EDNseb.mjs → wait-Bd5-zU25.mjs} +2 -2
  147. package/dist/{wait-flags-UxcaSinn.mjs → wait-flags-D-t7OkHC.mjs} +2 -2
  148. package/dist/workspace-CNkKAM__.mjs +24 -0
  149. package/package.json +1 -1
  150. package/dist/auth-BaXOzAzt.mjs +0 -19
  151. package/dist/card-dTdbUqvv.mjs +0 -20
  152. package/dist/collection-DZm1oB_J.mjs +0 -19
  153. package/dist/dashboard-D3ujvyqS.mjs +0 -20
  154. package/dist/database-C5LkxQ5G.mjs +0 -33
  155. package/dist/db-TY_YuEzV.mjs +0 -17
  156. package/dist/field-C1ai7Y05.mjs +0 -76
  157. package/dist/field-DgYYRJPe.mjs +0 -13
  158. package/dist/is-dirty-DChKYsYS.mjs +0 -10
  159. package/dist/sync-BrLw4QgM.mjs +0 -28
  160. package/dist/table-Dv2QUqKb.mjs +0 -16
  161. package/dist/transform-C_I-Hc1p.mjs +0 -21
  162. package/dist/transform-job-4CwmLSTV.mjs +0 -19
  163. package/dist/workspace-DmQKLMZY.mjs +0 -24
  164. /package/dist/{delete-runtime-Dx4ONQaO.mjs → delete-runtime-DCc3Hie4.mjs} +0 -0
  165. /package/dist/{key-CS6durfH.mjs → key-CjpAYsPz.mjs} +0 -0
  166. /package/dist/{manifest-C7lnUosz.mjs → manifest-CdAV6-YB.mjs} +0 -0
  167. /package/dist/{setting-DEHSnsEV.mjs → setting-DIXJ2haa.mjs} +0 -0
  168. /package/dist/{transform-job-BqYZMjf5.mjs → transform-job-DgApCViL.mjs} +0 -0
  169. /package/dist/{workspace-CTwXenWM.mjs → workspace-D93cDL8-.mjs} +0 -0
  170. /package/dist/{workspace-credentials-CC_99x9r.mjs → workspace-credentials-D_ivv5vy.mjs} +0 -0
@@ -1,16 +1,18 @@
1
- import "./package-DW4n6lFo.mjs";
1
+ import "./package-CTWKbRR5.mjs";
2
2
  import "./command-augment-D9pI9Vbh.mjs";
3
3
  import { renderItem } from "./render-BYWlZPEH.mjs";
4
4
  import "./errors-C6w1eZ1F.mjs";
5
- import { connectionFlags, defineMetabaseCommand, outputFlags, profileFlag } from "./runtime-BlGbSVbh.mjs";
6
- import { parseId } from "./parse-id-DCdBU-nG.mjs";
7
- import { Database, databaseView } from "./database-C5LkxQ5G.mjs";
5
+ import { connectionFlags, defineMetabaseCommand, outputFlags, profileFlag } from "./runtime-C3pZKYWJ.mjs";
6
+ import { parseId } from "./parse-id-Ca6bGAcg.mjs";
7
+ import "./field-BakUM_Le.mjs";
8
+ import "./table-DhB2_Dxd.mjs";
9
+ import { Database, databaseView } from "./database-GbK7OAPX.mjs";
8
10
 
9
- //#region src/commands/db/get.ts
10
- var get_default = defineMetabaseCommand({
11
+ //#region src/commands/db/metadata.ts
12
+ var metadata_default = defineMetabaseCommand({
11
13
  meta: {
12
- name: "get",
13
- description: "Get a database by id"
14
+ name: "metadata",
15
+ description: "Get a database with its tables and fields hydrated"
14
16
  },
15
17
  args: {
16
18
  ...outputFlags,
@@ -23,14 +25,14 @@ var get_default = defineMetabaseCommand({
23
25
  }
24
26
  },
25
27
  outputSchema: Database,
26
- examples: ["metabase db get 1", "metabase db get 1 --json"],
28
+ examples: ["metabase db metadata 1", "metabase db metadata 1 --json"],
27
29
  async run({ args, ctx, getClient }) {
28
30
  const id = parseId(args.id);
29
31
  const client = await getClient();
30
- const database = await client.requestParsed(Database, `/api/database/${id}`);
32
+ const database = await client.requestParsed(Database, `/api/database/${id}/metadata`);
31
33
  renderItem(database, databaseView, ctx);
32
34
  }
33
35
  });
34
36
 
35
37
  //#endregion
36
- export { get_default as default };
38
+ export { metadata_default as default };
@@ -0,0 +1,37 @@
1
+ import "./package-CTWKbRR5.mjs";
2
+ import "./command-augment-D9pI9Vbh.mjs";
3
+ import { renderItem } from "./render-BYWlZPEH.mjs";
4
+ import "./errors-C6w1eZ1F.mjs";
5
+ import { connectionFlags, defineMetabaseCommand, outputFlags, profileFlag } from "./runtime-C3pZKYWJ.mjs";
6
+ import { parseId } from "./parse-id-Ca6bGAcg.mjs";
7
+ import "./field-BakUM_Le.mjs";
8
+ import { TableQueryMetadata, tableView } from "./table-DhB2_Dxd.mjs";
9
+
10
+ //#region src/commands/table/metadata.ts
11
+ var metadata_default = defineMetabaseCommand({
12
+ meta: {
13
+ name: "metadata",
14
+ description: "Get a table with its fields, FKs, and dimensions hydrated"
15
+ },
16
+ args: {
17
+ ...outputFlags,
18
+ ...profileFlag,
19
+ ...connectionFlags,
20
+ id: {
21
+ type: "positional",
22
+ description: "Table id",
23
+ required: true
24
+ }
25
+ },
26
+ outputSchema: TableQueryMetadata,
27
+ examples: ["metabase table metadata 42", "metabase table metadata 42 --json"],
28
+ async run({ args, ctx, getClient }) {
29
+ const id = parseId(args.id);
30
+ const client = await getClient();
31
+ const table = await client.requestParsed(TableQueryMetadata, `/api/table/${id}/query_metadata`);
32
+ renderItem(table, tableView, ctx);
33
+ }
34
+ });
35
+
36
+ //#endregion
37
+ export { metadata_default as default };
@@ -1,6 +1,6 @@
1
1
  //#region package.json
2
2
  var name = "@metabase/cli";
3
- var version = "0.1.0-alpha.workspaces-commands.645461e";
3
+ var version = "0.1.0-alpha.workspaces-commands.80b2b17";
4
4
  var description = "Metabase CLI";
5
5
  var license = "AGPL-3.0";
6
6
  var repository = {
@@ -0,0 +1,49 @@
1
+ import { z } from "zod";
2
+
3
+ //#region src/runtime/paginate.ts
4
+ const DEFAULT_PAGE_SIZE = 50;
5
+ async function* paginate(client, path, itemSchema, opts = {}) {
6
+ const envelopeSchema = paginatedEnvelopeSchema(itemSchema);
7
+ const pageSize = opts.pageSize ?? DEFAULT_PAGE_SIZE;
8
+ const baseQuery = opts.query ?? {};
9
+ const cap = opts.max;
10
+ let offset = 0;
11
+ let yielded = 0;
12
+ while (true) {
13
+ const remaining = cap === void 0 ? Number.POSITIVE_INFINITY : cap - yielded;
14
+ if (remaining <= 0) return;
15
+ const requested = Math.min(pageSize, remaining);
16
+ const envelope = await client.requestParsed(envelopeSchema, path, {
17
+ query: {
18
+ ...baseQuery,
19
+ limit: requested,
20
+ offset
21
+ },
22
+ ...opts.signal !== void 0 && { signal: opts.signal }
23
+ });
24
+ for (const item of envelope.data) {
25
+ yield item;
26
+ yielded += 1;
27
+ if (cap !== void 0 && yielded >= cap) return;
28
+ }
29
+ if (envelope.data.length < requested) return;
30
+ if (envelope.total !== void 0 && offset + envelope.data.length >= envelope.total) return;
31
+ offset += envelope.data.length;
32
+ }
33
+ }
34
+ async function collectPaginated(client, path, itemSchema, opts = {}) {
35
+ const items = [];
36
+ for await (const item of paginate(client, path, itemSchema, opts)) items.push(item);
37
+ return items;
38
+ }
39
+ function paginatedEnvelopeSchema(itemSchema) {
40
+ return z.object({
41
+ data: z.array(itemSchema),
42
+ total: z.number().int().nonnegative().optional(),
43
+ limit: z.number().int().nonnegative().optional(),
44
+ offset: z.number().int().nonnegative().optional()
45
+ }).passthrough();
46
+ }
47
+
48
+ //#endregion
49
+ export { collectPaginated };
@@ -1,4 +1,4 @@
1
- import { parseInteger } from "./runtime-BlGbSVbh.mjs";
1
+ import { parseInteger } from "./runtime-C3pZKYWJ.mjs";
2
2
 
3
3
  //#region src/commands/parse-id.ts
4
4
  function parseId(value, name = "id") {
@@ -1,5 +1,5 @@
1
1
  import { ConfigError } from "./errors-C6w1eZ1F.mjs";
2
- import { parseCsv } from "./runtime-BlGbSVbh.mjs";
2
+ import { parseCsv } from "./runtime-C3pZKYWJ.mjs";
3
3
 
4
4
  //#region src/commands/workspace/database/parse-schemas.ts
5
5
  function parseSchemasCsv(raw) {
@@ -1,5 +1,5 @@
1
1
  import { TimeoutError } from "./errors-C6w1eZ1F.mjs";
2
- import { combineAborts, throwIfAborted } from "./runtime-BlGbSVbh.mjs";
2
+ import { combineAborts, throwIfAborted } from "./runtime-C3pZKYWJ.mjs";
3
3
  import { setTimeout } from "node:timers/promises";
4
4
 
5
5
  //#region src/runtime/poll.ts
@@ -1,5 +1,5 @@
1
- import { parseJsonOrPlain } from "./runtime-BlGbSVbh.mjs";
2
- import { DEFAULT_INTERVAL_MS, DEFAULT_TIMEOUT_MS, pollUntil } from "./poll-DaJLfYpK.mjs";
1
+ import { parseJsonOrPlain } from "./runtime-C3pZKYWJ.mjs";
2
+ import { DEFAULT_INTERVAL_MS, DEFAULT_TIMEOUT_MS, pollUntil } from "./poll-Cn1Nr5Pl.mjs";
3
3
  import { z } from "zod";
4
4
 
5
5
  //#region src/domain/remote-sync.ts
@@ -1,17 +1,17 @@
1
- import "./package-DW4n6lFo.mjs";
1
+ import "./package-CTWKbRR5.mjs";
2
2
  import "./command-augment-D9pI9Vbh.mjs";
3
3
  import { renderItem } from "./render-BYWlZPEH.mjs";
4
4
  import { ConfigError } from "./errors-C6w1eZ1F.mjs";
5
5
  import "./input-DMcm_A5s.mjs";
6
- import { connectionFlags, defineMetabaseCommand, outputFlags, profileFlag } from "./runtime-BlGbSVbh.mjs";
7
- import { readBody } from "./body-po-d1TER.mjs";
6
+ import { connectionFlags, defineMetabaseCommand, outputFlags, profileFlag } from "./runtime-C3pZKYWJ.mjs";
7
+ import { readBody } from "./body-Brsr9GPd.mjs";
8
8
  import { bodyInputFlags } from "./body-flags-BK7J6Daz.mjs";
9
- import { parseId } from "./parse-id-DCdBU-nG.mjs";
10
- import "./poll-DaJLfYpK.mjs";
11
- import { parseWaitFlags, waitFlags } from "./wait-flags-UxcaSinn.mjs";
12
- import { Workspace, WorkspaceProvisionInput, workspaceView } from "./workspace-CTwXenWM.mjs";
13
- import { waitForDatabaseProvisioned } from "./wait-w-EDNseb.mjs";
14
- import { parseSchemasCsv } from "./parse-schemas-dp6MXbcF.mjs";
9
+ import { parseId } from "./parse-id-Ca6bGAcg.mjs";
10
+ import "./poll-Cn1Nr5Pl.mjs";
11
+ import { parseWaitFlags, waitFlags } from "./wait-flags-D-t7OkHC.mjs";
12
+ import { Workspace, WorkspaceProvisionInput, workspaceView } from "./workspace-D93cDL8-.mjs";
13
+ import { waitForDatabaseProvisioned } from "./wait-Bd5-zU25.mjs";
14
+ import { parseSchemasCsv } from "./parse-schemas-uQAt-gDD.mjs";
15
15
 
16
16
  //#region src/commands/workspace/database/provision.ts
17
17
  var provision_default = defineMetabaseCommand({
@@ -1,6 +1,6 @@
1
1
  import { renderList } from "./render-BYWlZPEH.mjs";
2
- import { defineMetabaseCommand, listEnvelopeSchema, localUrl, outputFlags, wrapList } from "./runtime-BlGbSVbh.mjs";
3
- import { CONTAINER_STATES, checkDockerReady, listWorkspaceContainers } from "./docker-Cvj7_PZp.mjs";
2
+ import { defineMetabaseCommand, listEnvelopeSchema, localUrl, outputFlags, wrapList } from "./runtime-C3pZKYWJ.mjs";
3
+ import { CONTAINER_STATES, checkDockerReady, listWorkspaceContainers } from "./docker-BH3ZgM8X.mjs";
4
4
  import { z } from "zod";
5
5
 
6
6
  //#region src/commands/workspace/ps.ts
@@ -1,10 +1,10 @@
1
- import "./package-DW4n6lFo.mjs";
1
+ import "./package-CTWKbRR5.mjs";
2
2
  import "./command-augment-D9pI9Vbh.mjs";
3
3
  import "./render-BYWlZPEH.mjs";
4
4
  import "./errors-C6w1eZ1F.mjs";
5
- import "./runtime-BlGbSVbh.mjs";
6
- import "./poll-DaJLfYpK.mjs";
7
- import "./docker-Cvj7_PZp.mjs";
8
- import { LocalWorkspace, LocalWorkspaceCompact, LocalWorkspaceListEnvelope, LocalWorkspaceState, localWorkspaceView, ps_default } from "./ps-C-oTI3y_.mjs";
5
+ import "./runtime-C3pZKYWJ.mjs";
6
+ import "./poll-Cn1Nr5Pl.mjs";
7
+ import "./docker-BH3ZgM8X.mjs";
8
+ import { LocalWorkspace, LocalWorkspaceCompact, LocalWorkspaceListEnvelope, LocalWorkspaceState, localWorkspaceView, ps_default } from "./ps-BUonSMn-.mjs";
9
9
 
10
10
  export { ps_default as default };
@@ -1,9 +1,9 @@
1
- import "./package-DW4n6lFo.mjs";
1
+ import "./package-CTWKbRR5.mjs";
2
2
  import "./command-augment-D9pI9Vbh.mjs";
3
3
  import { renderItem } from "./render-BYWlZPEH.mjs";
4
4
  import { ConfigError } from "./errors-C6w1eZ1F.mjs";
5
- import { connectionFlags, defineMetabaseCommand, outputFlags, parseJson, profileFlag } from "./runtime-BlGbSVbh.mjs";
6
- import { parseId } from "./parse-id-DCdBU-nG.mjs";
5
+ import { connectionFlags, defineMetabaseCommand, outputFlags, parseJson, profileFlag } from "./runtime-C3pZKYWJ.mjs";
6
+ import { parseId } from "./parse-id-Ca6bGAcg.mjs";
7
7
  import { CardQueryResult, cardQueryView } from "./card-BOGKT258.mjs";
8
8
  import { z } from "zod";
9
9
  import { Writable } from "node:stream";
@@ -1,10 +1,10 @@
1
- import "./package-DW4n6lFo.mjs";
1
+ import "./package-CTWKbRR5.mjs";
2
2
  import "./command-augment-D9pI9Vbh.mjs";
3
3
  import { renderItem, writeJson } from "./render-BYWlZPEH.mjs";
4
4
  import { ConfigError } from "./errors-C6w1eZ1F.mjs";
5
5
  import "./input-DMcm_A5s.mjs";
6
- import { connectionFlags, defineMetabaseCommand, outputFlags, profileFlag } from "./runtime-BlGbSVbh.mjs";
7
- import { readBody } from "./body-po-d1TER.mjs";
6
+ import { connectionFlags, defineMetabaseCommand, outputFlags, profileFlag } from "./runtime-C3pZKYWJ.mjs";
7
+ import { readBody } from "./body-Brsr9GPd.mjs";
8
8
  import { bodyInputFlags } from "./body-flags-BK7J6Daz.mjs";
9
9
  import { CardQueryResult, cardQueryView } from "./card-BOGKT258.mjs";
10
10
  import { getQuerySchemaBundle, skipValidateFlag, validateExternalQuery, validateInternalQuery } from "./validate-query-D0aAFTUs.mjs";
@@ -1,12 +1,12 @@
1
- import "./package-DW4n6lFo.mjs";
1
+ import "./package-CTWKbRR5.mjs";
2
2
  import "./command-augment-D9pI9Vbh.mjs";
3
3
  import { renderItem } from "./render-BYWlZPEH.mjs";
4
4
  import "./errors-C6w1eZ1F.mjs";
5
- import { defineMetabaseCommand, outputFlags } from "./runtime-BlGbSVbh.mjs";
6
- import { parseId } from "./parse-id-DCdBU-nG.mjs";
5
+ import { defineMetabaseCommand, outputFlags } from "./runtime-C3pZKYWJ.mjs";
6
+ import { parseId } from "./parse-id-Ca6bGAcg.mjs";
7
7
  import { promptConfirm } from "./prompt-k9s4Ntk5.mjs";
8
- import "./poll-DaJLfYpK.mjs";
9
- import { checkDockerReady, containerNameFor, removeContainer, removeVolume, volumeNameFor } from "./docker-Cvj7_PZp.mjs";
8
+ import "./poll-Cn1Nr5Pl.mjs";
9
+ import { checkDockerReady, containerNameFor, removeContainer, removeVolume, volumeNameFor } from "./docker-BH3ZgM8X.mjs";
10
10
  import { z } from "zod";
11
11
 
12
12
  //#region src/commands/workspace/remove.ts
@@ -1,8 +1,8 @@
1
- import "./package-DW4n6lFo.mjs";
1
+ import "./package-CTWKbRR5.mjs";
2
2
  import "./command-augment-D9pI9Vbh.mjs";
3
3
  import { renderItem } from "./render-BYWlZPEH.mjs";
4
4
  import "./errors-C6w1eZ1F.mjs";
5
- import { clearLicense, defineMetabaseCommand, outputFlags } from "./runtime-BlGbSVbh.mjs";
5
+ import { clearLicense, defineMetabaseCommand, outputFlags } from "./runtime-C3pZKYWJ.mjs";
6
6
  import { promptConfirm } from "./prompt-k9s4Ntk5.mjs";
7
7
  import { z } from "zod";
8
8
 
@@ -1,12 +1,12 @@
1
- import "./package-DW4n6lFo.mjs";
1
+ import "./package-CTWKbRR5.mjs";
2
2
  import "./command-augment-D9pI9Vbh.mjs";
3
3
  import { renderItem } from "./render-BYWlZPEH.mjs";
4
4
  import "./errors-C6w1eZ1F.mjs";
5
- import { connectionFlags, defineMetabaseCommand, outputFlags, profileFlag } from "./runtime-BlGbSVbh.mjs";
6
- import { parseId } from "./parse-id-DCdBU-nG.mjs";
7
- import "./poll-task-BiYw9iLs.mjs";
8
- import "./poll-DaJLfYpK.mjs";
9
- import { SyncSettingsUpdateResult, setCollectionRemoteSynced, syncSettingsUpdateView } from "./add-collection-D2VyeBlW.mjs";
5
+ import { connectionFlags, defineMetabaseCommand, outputFlags, profileFlag } from "./runtime-C3pZKYWJ.mjs";
6
+ import { parseId } from "./parse-id-Ca6bGAcg.mjs";
7
+ import "./poll-task-BjJqLBll.mjs";
8
+ import "./poll-Cn1Nr5Pl.mjs";
9
+ import { SyncSettingsUpdateResult, setCollectionRemoteSynced, syncSettingsUpdateView } from "./add-collection-BqucCiGX.mjs";
10
10
 
11
11
  //#region src/commands/sync/remove-collection.ts
12
12
  var remove_collection_default = defineMetabaseCommand({
@@ -0,0 +1,43 @@
1
+ import "./package-CTWKbRR5.mjs";
2
+ import "./command-augment-D9pI9Vbh.mjs";
3
+ import { renderItem } from "./render-BYWlZPEH.mjs";
4
+ import "./errors-C6w1eZ1F.mjs";
5
+ import { connectionFlags, defineMetabaseCommand, outputFlags, profileFlag } from "./runtime-C3pZKYWJ.mjs";
6
+ import { parseId } from "./parse-id-Ca6bGAcg.mjs";
7
+ import "./field-BakUM_Le.mjs";
8
+ import "./table-DhB2_Dxd.mjs";
9
+ import { DatabaseSyncResult, databaseSyncResultView } from "./database-GbK7OAPX.mjs";
10
+ import { z } from "zod";
11
+
12
+ //#region src/commands/db/rescan-values.ts
13
+ const RescanValuesApiResponse = z.object({ status: z.literal("ok") });
14
+ var rescan_values_default = defineMetabaseCommand({
15
+ meta: {
16
+ name: "rescan-values",
17
+ description: "Trigger a rescan of cached field values for a database"
18
+ },
19
+ args: {
20
+ ...outputFlags,
21
+ ...profileFlag,
22
+ ...connectionFlags,
23
+ id: {
24
+ type: "positional",
25
+ description: "Database id",
26
+ required: true
27
+ }
28
+ },
29
+ outputSchema: DatabaseSyncResult,
30
+ examples: ["metabase db rescan-values 1", "metabase db rescan-values 1 --json"],
31
+ async run({ args, ctx, getClient }) {
32
+ const id = parseId(args.id);
33
+ const client = await getClient();
34
+ const response = await client.requestParsed(RescanValuesApiResponse, `/api/database/${id}/rescan_values`, { method: "POST" });
35
+ renderItem({
36
+ id,
37
+ status: response.status
38
+ }, databaseSyncResultView, ctx);
39
+ }
40
+ });
41
+
42
+ //#endregion
43
+ export { rescan_values_default as default };
@@ -0,0 +1,11 @@
1
+ //#region src/commands/revision-message-flag.ts
2
+ const DEFAULT_ARCHIVE_REVISION_MESSAGE = "Archived via metabase CLI";
3
+ const revisionMessageFlag = { revisionMessage: {
4
+ type: "string",
5
+ description: "Audit-log message recorded with the change",
6
+ alias: "revision-message",
7
+ default: DEFAULT_ARCHIVE_REVISION_MESSAGE
8
+ } };
9
+
10
+ //#endregion
11
+ export { revisionMessageFlag };
@@ -1,12 +1,12 @@
1
- import "./package-DW4n6lFo.mjs";
1
+ import "./package-CTWKbRR5.mjs";
2
2
  import "./command-augment-D9pI9Vbh.mjs";
3
3
  import { renderItem } from "./render-BYWlZPEH.mjs";
4
4
  import "./errors-C6w1eZ1F.mjs";
5
- import { connectionFlags, defineMetabaseCommand, outputFlags, profileFlag } from "./runtime-BlGbSVbh.mjs";
6
- import { parseId } from "./parse-id-DCdBU-nG.mjs";
7
- import { pollUntil } from "./poll-DaJLfYpK.mjs";
8
- import { TransformRun } from "./transform-DRDHuulD.mjs";
9
- import { parseWaitFlags, waitFlags } from "./wait-flags-UxcaSinn.mjs";
5
+ import { connectionFlags, defineMetabaseCommand, outputFlags, profileFlag } from "./runtime-C3pZKYWJ.mjs";
6
+ import { parseId } from "./parse-id-Ca6bGAcg.mjs";
7
+ import { pollUntil } from "./poll-Cn1Nr5Pl.mjs";
8
+ import { TransformRun } from "./transform-92odFxg-.mjs";
9
+ import { parseWaitFlags, waitFlags } from "./wait-flags-D-t7OkHC.mjs";
10
10
  import { z } from "zod";
11
11
 
12
12
  //#region src/commands/transform/run.ts
@@ -30,7 +30,7 @@ const TransformRunResult = z.object({
30
30
  run_id: z.number().int().positive().nullable(),
31
31
  final: TransformRun.nullable()
32
32
  });
33
- const transformRunView = {
33
+ const transformRunResultView = {
34
34
  compactPick: TransformRunResult,
35
35
  tableColumns: [{
36
36
  key: "run_id",
@@ -68,7 +68,7 @@ var run_default = defineMetabaseCommand({
68
68
  message: kickoff.message,
69
69
  run_id: kickoff.run_id,
70
70
  final: null
71
- }, transformRunView, ctx);
71
+ }, transformRunResultView, ctx);
72
72
  return;
73
73
  }
74
74
  if (kickoff.run_id === null) {
@@ -76,7 +76,7 @@ var run_default = defineMetabaseCommand({
76
76
  message: kickoff.message,
77
77
  run_id: null,
78
78
  final: null
79
- }, transformRunView, ctx);
79
+ }, transformRunResultView, ctx);
80
80
  throw new Error(`transform run did not start: ${kickoff.message}`);
81
81
  }
82
82
  const runId = kickoff.run_id;
@@ -85,7 +85,7 @@ var run_default = defineMetabaseCommand({
85
85
  message: kickoff.message,
86
86
  run_id: runId,
87
87
  final
88
- }, transformRunView, ctx);
88
+ }, transformRunResultView, ctx);
89
89
  if (RUN_FAILURE_STATUSES.has(final.status)) throw new Error(`transform run ${runId} ${final.status}`);
90
90
  }
91
91
  });
@@ -0,0 +1,54 @@
1
+ import "./package-CTWKbRR5.mjs";
2
+ import "./command-augment-D9pI9Vbh.mjs";
3
+ import { renderList } from "./render-BYWlZPEH.mjs";
4
+ import "./errors-C6w1eZ1F.mjs";
5
+ import { connectionFlags, defineMetabaseCommand, listEnvelopeSchema, outputFlags, profileFlag } from "./runtime-C3pZKYWJ.mjs";
6
+ import { parseId } from "./parse-id-Ca6bGAcg.mjs";
7
+ import { collectPaginated } from "./paginate-CnTxzOh2.mjs";
8
+ import { TransformRun, TransformRunCompact, transformRunView } from "./transform-92odFxg-.mjs";
9
+
10
+ //#region src/commands/transform/runs.ts
11
+ const TransformRunListEnvelope = listEnvelopeSchema(TransformRunCompact);
12
+ var runs_default = defineMetabaseCommand({
13
+ meta: {
14
+ name: "runs",
15
+ description: "List recent transform runs"
16
+ },
17
+ args: {
18
+ ...outputFlags,
19
+ ...profileFlag,
20
+ ...connectionFlags,
21
+ "transform-id": {
22
+ type: "string",
23
+ description: "Filter to runs of a single transform id"
24
+ },
25
+ limit: {
26
+ type: "string",
27
+ description: "Cap total runs returned (default: drain all pages)"
28
+ }
29
+ },
30
+ outputSchema: TransformRunListEnvelope,
31
+ examples: [
32
+ "metabase transform runs",
33
+ "metabase transform runs --transform-id 1 --json",
34
+ "metabase transform runs --limit 10 --json"
35
+ ],
36
+ async run({ args, ctx, getClient }) {
37
+ const transformId = args["transform-id"] === void 0 ? void 0 : parseId(args["transform-id"], "--transform-id");
38
+ const max = args.limit === void 0 ? void 0 : parseId(args.limit, "--limit");
39
+ const client = await getClient();
40
+ const items = await collectPaginated(client, "/api/transform/run", TransformRun, {
41
+ query: { "transform-ids": transformId },
42
+ ...max !== void 0 && { max }
43
+ });
44
+ const envelope = {
45
+ data: items,
46
+ returned: items.length,
47
+ ...max === void 0 ? { total: items.length } : { limit: max }
48
+ };
49
+ renderList(envelope, transformRunView, ctx);
50
+ }
51
+ });
52
+
53
+ //#endregion
54
+ export { runs_default as default };
@@ -1,12 +1,12 @@
1
- import { package_default } from "./package-DW4n6lFo.mjs";
1
+ import { package_default } from "./package-CTWKbRR5.mjs";
2
2
  import { setMetabaseAugment } from "./command-augment-D9pI9Vbh.mjs";
3
3
  import { AbortError, ConfigError, MetabaseError, NetworkError, TimeoutError, ValidationError, errorMessage, isNotFoundError, toMetabaseError } from "./errors-C6w1eZ1F.mjs";
4
4
  import { defineCommand } from "citty";
5
5
  import { z } from "zod";
6
6
  import { promises } from "node:fs";
7
7
  import { dirname, join } from "node:path";
8
- import { Entry } from "@napi-rs/keyring";
9
8
  import { homedir } from "node:os";
9
+ import { Entry } from "@napi-rs/keyring";
10
10
  import { setTimeout } from "node:timers/promises";
11
11
 
12
12
  //#region src/runtime/json.ts
@@ -139,6 +139,65 @@ function configDir() {
139
139
  return join(xdg, APP_DIR_NAME);
140
140
  }
141
141
 
142
+ //#endregion
143
+ //#region src/core/auth/rejection.ts
144
+ const REJECTIONS_FILE = "rejections.json";
145
+ const REJECTIONS_FILE_MODE = 384;
146
+ const REJECTIONS_DIR_MODE = 448;
147
+ const RejectionRecord = z.object({
148
+ reason: z.string(),
149
+ url: z.string(),
150
+ rejectedAt: z.string()
151
+ });
152
+ const RejectionsFileSchema = z.record(z.string(), RejectionRecord);
153
+ function rejectionsFilePath() {
154
+ return join(configDir(), REJECTIONS_FILE);
155
+ }
156
+ async function readRejectionsFile() {
157
+ const path = rejectionsFilePath();
158
+ let raw;
159
+ try {
160
+ raw = await promises.readFile(path, "utf8");
161
+ } catch (error) {
162
+ if (isNotFoundError(error)) return {};
163
+ throw error;
164
+ }
165
+ return parseJson(raw, RejectionsFileSchema, { source: path });
166
+ }
167
+ async function writeRejectionsFile(store) {
168
+ const path = rejectionsFilePath();
169
+ if (Object.keys(store).length === 0) {
170
+ await promises.unlink(path).catch(() => void 0);
171
+ return;
172
+ }
173
+ await promises.mkdir(dirname(path), {
174
+ recursive: true,
175
+ mode: REJECTIONS_DIR_MODE
176
+ });
177
+ await promises.writeFile(path, JSON.stringify(store, null, 2) + "\n", { mode: REJECTIONS_FILE_MODE });
178
+ if (process.platform !== "win32") await promises.chmod(path, REJECTIONS_FILE_MODE);
179
+ }
180
+ async function recordRejection(profile, input) {
181
+ const store = await readRejectionsFile();
182
+ store[profile] = {
183
+ reason: input.reason,
184
+ url: input.url,
185
+ rejectedAt: new Date().toISOString()
186
+ };
187
+ await writeRejectionsFile(store);
188
+ }
189
+ async function clearRejection(profile) {
190
+ const store = await readRejectionsFile();
191
+ if (!(profile in store)) return false;
192
+ delete store[profile];
193
+ await writeRejectionsFile(store);
194
+ return true;
195
+ }
196
+ async function readRejection(profile) {
197
+ const store = await readRejectionsFile();
198
+ return store[profile] ?? null;
199
+ }
200
+
142
201
  //#endregion
143
202
  //#region src/core/auth/storage.ts
144
203
  const CredentialsFileSchema = z.record(z.string(), z.string());
@@ -399,7 +458,11 @@ async function resolveConfig(flags) {
399
458
  const stored = needsStored ? await readProfile(profile) : null;
400
459
  const urlField = pickField(flagUrl, env.url, stored?.url);
401
460
  const keyField = pickField(flagKey, env.apiKey, stored?.apiKey);
402
- if (urlField === null || keyField === null) throw new ConfigError(`Not authenticated for profile "${profile}". Run \`metabase auth login\`, set ${ENV_URL}/${ENV_API_KEY}, or pass --url/--api-key.`);
461
+ if (urlField === null || keyField === null) {
462
+ const rejection = await readRejection(profile);
463
+ if (rejection !== null) throw new ConfigError(`Last login for profile "${profile}" was rejected by ${originOnly(rejection.url)}: ${rejection.reason}. Re-run \`metabase auth login --profile ${profile}\` with valid credentials.`);
464
+ throw new ConfigError(`Not authenticated for profile "${profile}". Run \`metabase auth login\`, set ${ENV_URL}/${ENV_API_KEY}, or pass --url/--api-key.`);
465
+ }
403
466
  return {
404
467
  url: normalizeUrl(urlField.value),
405
468
  apiKey: keyField.value,
@@ -606,6 +669,7 @@ function sleep(ms, signal) {
606
669
  //#region src/core/http/client.ts
607
670
  const DEFAULT_TIMEOUT_MS = 3e4;
608
671
  const JSON_CONTENT_TYPE = "application/json";
672
+ const OCTET_STREAM_CONTENT_TYPE = "application/octet-stream";
609
673
  const TEXT_CONTENT_TYPE_PREFIX = "text/";
610
674
  const ERROR_BODY_BYTE_CAP = 64 * 1024;
611
675
  const USER_AGENT = `metabase-cli/${package_default.version}`;
@@ -698,7 +762,10 @@ function createClient(config, overrides = {}) {
698
762
  let body = null;
699
763
  if (opts.body !== void 0 && opts.body !== null) if (typeof opts.body === "string" || opts.body instanceof URLSearchParams) body = opts.body;
700
764
  else if (opts.body instanceof FormData || opts.body instanceof ReadableStream) body = opts.body;
701
- else {
765
+ else if (opts.body instanceof Uint8Array) {
766
+ body = opts.body;
767
+ headers.set("content-type", OCTET_STREAM_CONTENT_TYPE);
768
+ } else {
702
769
  body = JSON.stringify(opts.body);
703
770
  headers.set("content-type", JSON_CONTENT_TYPE);
704
771
  }
@@ -946,4 +1013,4 @@ function buildConfigFlags(ctx) {
946
1013
  }
947
1014
 
948
1015
  //#endregion
949
- export { HttpError, account, clearLicense, clearProfile, combineAborts, connectionFlags, createClient, credentials, defineMetabaseCommand, listEnvelopeSchema, listProfileNames, localUrl, normalizeUrl, originOnly, outputFlags, parseCsv, parseEnum, parseEnumCsv, parseInteger, parseJson, parseJsonOrPlain, parseOptionalInteger, profileFlag, readEnvCredentials, readEnvLicenseToken, readProfile, resolveLicenseToken, resolveProfileName, throwIfAborted, wrapList, writeLicense, writeProfile };
1016
+ export { HttpError, account, clearLicense, clearProfile, clearRejection, combineAborts, connectionFlags, createClient, credentials, defineMetabaseCommand, listEnvelopeSchema, listProfileNames, localUrl, normalizeUrl, originOnly, outputFlags, parseCsv, parseEnum, parseEnumCsv, parseInteger, parseJson, parseJsonOrPlain, parseOptionalInteger, profileFlag, readEnvCredentials, readEnvLicenseToken, readProfile, recordRejection, resolveLicenseToken, resolveProfileName, throwIfAborted, wrapList, writeLicense, writeProfile };
@@ -0,0 +1,45 @@
1
+ import "./package-CTWKbRR5.mjs";
2
+ import "./command-augment-D9pI9Vbh.mjs";
3
+ import { renderList } from "./render-BYWlZPEH.mjs";
4
+ import "./errors-C6w1eZ1F.mjs";
5
+ import { connectionFlags, defineMetabaseCommand, listEnvelopeSchema, outputFlags, profileFlag, wrapList } from "./runtime-C3pZKYWJ.mjs";
6
+ import { parseId } from "./parse-id-Ca6bGAcg.mjs";
7
+ import "./field-BakUM_Le.mjs";
8
+ import { Table, TableCompact, tableView } from "./table-DhB2_Dxd.mjs";
9
+ import { z } from "zod";
10
+
11
+ //#region src/commands/db/schema-tables.ts
12
+ const SchemaTablesApiResponse = z.array(Table);
13
+ const DatabaseSchemaTablesEnvelope = listEnvelopeSchema(TableCompact);
14
+ var schema_tables_default = defineMetabaseCommand({
15
+ meta: {
16
+ name: "schema-tables",
17
+ description: "List tables in a database schema"
18
+ },
19
+ args: {
20
+ ...outputFlags,
21
+ ...profileFlag,
22
+ ...connectionFlags,
23
+ id: {
24
+ type: "positional",
25
+ description: "Database id",
26
+ required: true
27
+ },
28
+ schema: {
29
+ type: "positional",
30
+ description: "Schema name",
31
+ required: true
32
+ }
33
+ },
34
+ outputSchema: DatabaseSchemaTablesEnvelope,
35
+ examples: ["metabase db schema-tables 1 public", "metabase db schema-tables 1 public --json"],
36
+ async run({ args, ctx, getClient }) {
37
+ const id = parseId(args.id);
38
+ const client = await getClient();
39
+ const tables = await client.requestParsed(SchemaTablesApiResponse, `/api/database/${id}/schema/${encodeURIComponent(args.schema)}`);
40
+ renderList(wrapList(tables), tableView, ctx);
41
+ }
42
+ });
43
+
44
+ //#endregion
45
+ export { schema_tables_default as default };