@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.
- package/README.md +391 -12
- package/dist/{add-collection-D2VyeBlW.mjs → add-collection-BqucCiGX.mjs} +3 -3
- package/dist/{add-collection-D36mvhlp.mjs → add-collection-DYnUVgZo.mjs} +6 -6
- package/dist/{api-key-D7FJ0diY.mjs → api-key-DqiFwfHf.mjs} +1 -1
- package/dist/archive-1TGgAxcg.mjs +39 -0
- package/dist/archive-DG0VCVCQ.mjs +44 -0
- package/dist/archive-E8nahkCU.mjs +44 -0
- package/dist/{archive-BhrD3g9q.mjs → archive-uhl-s870.mjs} +3 -3
- package/dist/auth-BwgJWXyH.mjs +19 -0
- package/dist/{body-po-d1TER.mjs → body-Brsr9GPd.mjs} +1 -1
- package/dist/{branches-C_QIaXq_.mjs → branches-BV8k-tAp.mjs} +4 -4
- package/dist/cancel-BAuwBvUG.mjs +56 -0
- package/dist/{cancel-task-BUBIAgGA.mjs → cancel-task-CSGWE1Xk.mjs} +4 -4
- package/dist/card-C01m8xhO.mjs +20 -0
- package/dist/{cards-CURArHer.mjs → cards-szqvWxGJ.mjs} +4 -4
- package/dist/cli.mjs +23 -20
- package/dist/collection-P6ADc9R3.mjs +19 -0
- package/dist/{create-CCji2u2l.mjs → create--vi0p8KW.mjs} +3 -3
- package/dist/{create-D3PbG6zp.mjs → create-BCRzAvM-.mjs} +3 -3
- package/dist/{create-CSb4rEYN.mjs → create-BFwMq6f7.mjs} +4 -4
- package/dist/{create-SD_4KNY7.mjs → create-By7kJgQT.mjs} +4 -4
- package/dist/{create-Pz8emM9b.mjs → create-C-UY_5UO.mjs} +4 -4
- package/dist/create-CG_qAdUo.mjs +40 -0
- package/dist/create-CR7I3bWe.mjs +44 -0
- package/dist/{create-DTTeHc01.mjs → create-DhwxqVwf.mjs} +4 -4
- package/dist/{create-branch-DY_Xk7xJ.mjs → create-branch-ZnI44f-h.mjs} +4 -4
- package/dist/create-vo7uPJKP.mjs +40 -0
- package/dist/{create-ZbmxIy-0.mjs → create-xsykgRhW.mjs} +4 -4
- package/dist/{credentials-Cx9Y_e-i.mjs → credentials-DaHDYji4.mjs} +6 -6
- package/dist/{current-task-DVhQW4jT.mjs → current-task-Bu0sANO6.mjs} +4 -4
- package/dist/{dashboard-BJXi1tGr.mjs → dashboard-CztCJxke.mjs} +10 -1
- package/dist/dashboard-j8xycFUI.mjs +20 -0
- package/dist/{database-BAvx1gH2.mjs → database-CTMSbjcD.mjs} +3 -3
- package/dist/database-GbK7OAPX.mjs +51 -0
- package/dist/db-BHPFrKDz.mjs +22 -0
- package/dist/{delete-Vl85AALS.mjs → delete-Bhg_ZVaN.mjs} +4 -4
- package/dist/{delete-BGxR7gVt.mjs → delete-DaHvtXiY.mjs} +4 -4
- package/dist/{delete-table-ClBj6G7Q.mjs → delete-table-D9Nk1EcR.mjs} +4 -4
- package/dist/{deprovision-CwrA3yQY.mjs → deprovision-BUkv6QvW.mjs} +8 -8
- package/dist/{dirty-CNPWGSpA.mjs → dirty-bskqjgxM.mjs} +4 -4
- package/dist/{docker-Cvj7_PZp.mjs → docker-BH3ZgM8X.mjs} +3 -12
- package/dist/{eid-DFaDBRra.mjs → eid-C-j8C4fU.mjs} +1 -1
- package/dist/{export-DuMGd6lo.mjs → export-C148vmMO.mjs} +5 -5
- package/dist/field-BakUM_Le.mjs +142 -0
- package/dist/field-xPcJNejW.mjs +18 -0
- package/dist/fields-B8buJtIm.mjs +38 -0
- package/dist/{get--PcCqyKa.mjs → get-4QVOFifd.mjs} +4 -4
- package/dist/{get-B2r9MJly.mjs → get-4v0BZc-t.mjs} +4 -4
- package/dist/get-BCGqXIPq.mjs +36 -0
- package/dist/{get-swr2-leH.mjs → get-CpBnUZwG.mjs} +4 -4
- package/dist/{get-DfO9yXXn.mjs → get-DF_gcqj0.mjs} +4 -4
- package/dist/{get-BjLQvtIP.mjs → get-DSkpEq1B.mjs} +7 -7
- package/dist/get-DTvJO9pW.mjs +36 -0
- package/dist/{get-vajO-hi6.mjs → get-DU6bgBj5.mjs} +3 -3
- package/dist/{get-CoDOJTMY.mjs → get-DdTCMlFK.mjs} +4 -4
- package/dist/{get-Dyf1VRQF.mjs → get-DvZdIqEo.mjs} +2 -2
- package/dist/get-mkCpPcfT.mjs +49 -0
- package/dist/get-run-B9WJuQXB.mjs +36 -0
- package/dist/get-ystbsKwy.mjs +36 -0
- package/dist/{has-remote-changes-BqwcNcE7.mjs → has-remote-changes-w3xtnKKN.mjs} +4 -4
- package/dist/{import-D--2vqZQ.mjs → import-BPYmRYty.mjs} +5 -5
- package/dist/is-dirty-DF3Xq5qO.mjs +10 -0
- package/dist/{is-dirty-DQ9zG6uN.mjs → is-dirty-DUbSH-Fj.mjs} +2 -2
- package/dist/{items-DwQQ0GAg.mjs → items-B7RHTH7w.mjs} +4 -50
- package/dist/{license-CzMfg5XI.mjs → license-msMkO5-a.mjs} +3 -3
- package/dist/{list-D-L9cq2y.mjs → list-5bWQaEkJ.mjs} +3 -3
- package/dist/{list-BIK_58XI.mjs → list-6zA_S9iX.mjs} +2 -2
- package/dist/list-BD9Jmswp.mjs +32 -0
- package/dist/{list-DQeGs5DL.mjs → list-BFc86CqB.mjs} +3 -3
- package/dist/{list-C79o1l5H.mjs → list-BY6QmcNt.mjs} +28 -7
- package/dist/list-BxFVxGJK.mjs +40 -0
- package/dist/{list-zFg_sbzo.mjs → list-CLR3hoKB.mjs} +3 -3
- package/dist/list-ChLXLMJC.mjs +32 -0
- package/dist/{list-DMwbB4b4.mjs → list-DHnoy9Ev.mjs} +3 -3
- package/dist/{list-BtC8ka3k.mjs → list-DIHwUIWc.mjs} +2 -2
- package/dist/{list-0NpAfgQ4.mjs → list-DaaVEqTW.mjs} +5 -5
- package/dist/{list-FCYnuxeR.mjs → list-DjVp_1u5.mjs} +3 -3
- package/dist/{list-BEjK80yL.mjs → list-Y7rBS4VK.mjs} +2 -2
- package/dist/{login-CzssJlL2.mjs → login-CmF_pjd2.mjs} +10 -3
- package/dist/{logout-Bcwc7QN0.mjs → logout-DALwZk8q.mjs} +3 -3
- package/dist/{logs-DIEyUxpM.mjs → logs-CzpMbpFk.mjs} +5 -5
- package/dist/measure-B1GKcZxO.mjs +67 -0
- package/dist/measure-Cx8PcNRI.mjs +19 -0
- package/dist/{get-CLCdkBcw.mjs → metadata-D0ggtGp6.mjs} +13 -11
- package/dist/metadata-D5ZVNh69.mjs +37 -0
- package/dist/{package-DW4n6lFo.mjs → package-CTWKbRR5.mjs} +1 -1
- package/dist/paginate-CnTxzOh2.mjs +49 -0
- package/dist/{parse-id-DCdBU-nG.mjs → parse-id-Ca6bGAcg.mjs} +1 -1
- package/dist/{parse-schemas-dp6MXbcF.mjs → parse-schemas-uQAt-gDD.mjs} +1 -1
- package/dist/{poll-DaJLfYpK.mjs → poll-Cn1Nr5Pl.mjs} +1 -1
- package/dist/{poll-task-BiYw9iLs.mjs → poll-task-BjJqLBll.mjs} +2 -2
- package/dist/{provision-DqfOs_BL.mjs → provision-DYh9vESV.mjs} +9 -9
- package/dist/{ps-C-oTI3y_.mjs → ps-BUonSMn-.mjs} +2 -2
- package/dist/{ps-zD4MZ7s2.mjs → ps-C2etyNAz.mjs} +5 -5
- package/dist/{query-CiX4UQt3.mjs → query-1DBC2Z68.mjs} +3 -3
- package/dist/{query-eDZSuQaQ.mjs → query-kx5oNHCU.mjs} +3 -3
- package/dist/{remove-Bx1w-uWB.mjs → remove-BG7zWERm.mjs} +5 -5
- package/dist/{remove-BsNj8FcZ.mjs → remove-DHUAqV27.mjs} +2 -2
- package/dist/{remove-collection-CYRloViE.mjs → remove-collection-D9vlLH3f.mjs} +6 -6
- package/dist/rescan-values-Dvqkfe9U.mjs +43 -0
- package/dist/revision-message-flag-BJiGjb5m.mjs +11 -0
- package/dist/{run-o1HdcHcT.mjs → run-w_n6pESZ.mjs} +10 -10
- package/dist/runs-BTZGIWfv.mjs +54 -0
- package/dist/{runtime-BlGbSVbh.mjs → runtime-C3pZKYWJ.mjs} +72 -5
- package/dist/schema-tables-_xH9x_yJ.mjs +45 -0
- package/dist/schemas-qK9k1t5x.mjs +47 -0
- package/dist/{search-CshaaZOi.mjs → search-D_uT_dIh.mjs} +3 -3
- package/dist/segment-CQ5w3M_W.mjs +70 -0
- package/dist/segment-Dx6-fvSJ.mjs +19 -0
- package/dist/{set-Dj-zpi9u.mjs → set-CXfpvjWh.mjs} +2 -2
- package/dist/{set-CS0Bay1g.mjs → set-Du-INOmN.mjs} +5 -5
- package/dist/{setting-CPrSDcuC.mjs → setting-zXeJEuKW.mjs} +3 -3
- package/dist/{setup-BjsZgvZs.mjs → setup-BeGXrMCK.mjs} +3 -3
- package/dist/snippet-BGE_y5l0.mjs +19 -0
- package/dist/snippet-DRTklDg3.mjs +64 -0
- package/dist/{start-DK1KR98G.mjs → start-CemnHYMT.mjs} +44 -25
- package/dist/{stash-CDSI72Pi.mjs → stash-B4iqDei9.mjs} +5 -5
- package/dist/{status-DygsyoJt.mjs → status-BU6KBkX4.mjs} +5 -5
- package/dist/{status-B6X-VTeS.mjs → status-CfwmzKep.mjs} +2 -2
- package/dist/{status-C32y4hQx.mjs → status-rZUhzHtx.mjs} +2 -2
- package/dist/{stop-D8DPsVEP.mjs → stop-CRvnlAXn.mjs} +6 -6
- package/dist/summary-CaatzK3v.mjs +41 -0
- package/dist/sync-Bx9Iy66T.mjs +28 -0
- package/dist/sync-schema-DhLi3v8y.mjs +43 -0
- package/dist/{table-DimNUJtH.mjs → table-DhB2_Dxd.mjs} +21 -4
- package/dist/table-iRHsX6DM.mjs +19 -0
- package/dist/{transform-DRDHuulD.mjs → transform-92odFxg-.mjs} +45 -3
- package/dist/transform-DbE5u-t0.mjs +24 -0
- package/dist/transform-job-SWvb21qd.mjs +19 -0
- package/dist/{translate-bzGSUcP5.mjs → translate-23bZkSH8.mjs} +3 -3
- package/dist/{tree-BXf2Avg_.mjs → tree-B-X7i4bS.mjs} +2 -2
- package/dist/update-BWSckjxb.mjs +51 -0
- package/dist/{update-C_kb0VT2.mjs → update-B_CgvuPe.mjs} +5 -5
- package/dist/{update-C8ZrbNAQ.mjs → update-BqK9kPjo.mjs} +5 -5
- package/dist/update-CrPaxzNT.mjs +52 -0
- package/dist/{update-2rOSt-uC.mjs → update-Cvu0W1Gc.mjs} +9 -9
- package/dist/{update-qBaNdoVm.mjs → update-DUrtN9gl.mjs} +4 -4
- package/dist/update-Dttkbveb.mjs +51 -0
- package/dist/update-Dy-j9Scf.mjs +51 -0
- package/dist/{update-dashcard-Dz8n_Eb3.mjs → update-dashcard-DczxuWJ6.mjs} +5 -5
- package/dist/{update-DFGi07_J.mjs → update-uBgZZAhv.mjs} +5 -5
- package/dist/update-y5rpTFYD.mjs +52 -0
- package/dist/{url-DntR9Vt0.mjs → url-B3Gp2vZx.mjs} +5 -5
- package/dist/values-B1VY8N-9.mjs +36 -0
- package/dist/{wait-CCC_NXX_.mjs → wait-8cMbKe5F.mjs} +5 -5
- package/dist/{wait-w-EDNseb.mjs → wait-Bd5-zU25.mjs} +2 -2
- package/dist/{wait-flags-UxcaSinn.mjs → wait-flags-D-t7OkHC.mjs} +2 -2
- package/dist/workspace-CNkKAM__.mjs +24 -0
- package/package.json +1 -1
- package/dist/auth-BaXOzAzt.mjs +0 -19
- package/dist/card-dTdbUqvv.mjs +0 -20
- package/dist/collection-DZm1oB_J.mjs +0 -19
- package/dist/dashboard-D3ujvyqS.mjs +0 -20
- package/dist/database-C5LkxQ5G.mjs +0 -33
- package/dist/db-TY_YuEzV.mjs +0 -17
- package/dist/field-C1ai7Y05.mjs +0 -76
- package/dist/field-DgYYRJPe.mjs +0 -13
- package/dist/is-dirty-DChKYsYS.mjs +0 -10
- package/dist/sync-BrLw4QgM.mjs +0 -28
- package/dist/table-Dv2QUqKb.mjs +0 -16
- package/dist/transform-C_I-Hc1p.mjs +0 -21
- package/dist/transform-job-4CwmLSTV.mjs +0 -19
- package/dist/workspace-DmQKLMZY.mjs +0 -24
- /package/dist/{delete-runtime-Dx4ONQaO.mjs → delete-runtime-DCc3Hie4.mjs} +0 -0
- /package/dist/{key-CS6durfH.mjs → key-CjpAYsPz.mjs} +0 -0
- /package/dist/{manifest-C7lnUosz.mjs → manifest-CdAV6-YB.mjs} +0 -0
- /package/dist/{setting-DEHSnsEV.mjs → setting-DIXJ2haa.mjs} +0 -0
- /package/dist/{transform-job-BqYZMjf5.mjs → transform-job-DgApCViL.mjs} +0 -0
- /package/dist/{workspace-CTwXenWM.mjs → workspace-D93cDL8-.mjs} +0 -0
- /package/dist/{workspace-credentials-CC_99x9r.mjs → workspace-credentials-D_ivv5vy.mjs} +0 -0
|
@@ -1,16 +1,18 @@
|
|
|
1
|
-
import "./package-
|
|
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-
|
|
6
|
-
import { parseId } from "./parse-id-
|
|
7
|
-
import
|
|
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/
|
|
10
|
-
var
|
|
11
|
+
//#region src/commands/db/metadata.ts
|
|
12
|
+
var metadata_default = defineMetabaseCommand({
|
|
11
13
|
meta: {
|
|
12
|
-
name: "
|
|
13
|
-
description: "Get a database
|
|
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
|
|
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 {
|
|
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 };
|
|
@@ -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,5 +1,5 @@
|
|
|
1
1
|
import { TimeoutError } from "./errors-C6w1eZ1F.mjs";
|
|
2
|
-
import { combineAborts, throwIfAborted } from "./runtime-
|
|
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-
|
|
2
|
-
import { DEFAULT_INTERVAL_MS, DEFAULT_TIMEOUT_MS, pollUntil } from "./poll-
|
|
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-
|
|
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-
|
|
7
|
-
import { readBody } from "./body-
|
|
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-
|
|
10
|
-
import "./poll-
|
|
11
|
-
import { parseWaitFlags, waitFlags } from "./wait-flags-
|
|
12
|
-
import { Workspace, WorkspaceProvisionInput, workspaceView } from "./workspace-
|
|
13
|
-
import { waitForDatabaseProvisioned } from "./wait-
|
|
14
|
-
import { parseSchemasCsv } from "./parse-schemas-
|
|
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-
|
|
3
|
-
import { CONTAINER_STATES, checkDockerReady, listWorkspaceContainers } from "./docker-
|
|
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-
|
|
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-
|
|
6
|
-
import "./poll-
|
|
7
|
-
import "./docker-
|
|
8
|
-
import { LocalWorkspace, LocalWorkspaceCompact, LocalWorkspaceListEnvelope, LocalWorkspaceState, localWorkspaceView, ps_default } from "./ps-
|
|
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-
|
|
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-
|
|
6
|
-
import { parseId } from "./parse-id-
|
|
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-
|
|
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-
|
|
7
|
-
import { readBody } from "./body-
|
|
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-
|
|
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-
|
|
6
|
-
import { parseId } from "./parse-id-
|
|
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-
|
|
9
|
-
import { checkDockerReady, containerNameFor, removeContainer, removeVolume, volumeNameFor } from "./docker-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
6
|
-
import { parseId } from "./parse-id-
|
|
7
|
-
import "./poll-task-
|
|
8
|
-
import "./poll-
|
|
9
|
-
import { SyncSettingsUpdateResult, setCollectionRemoteSynced, syncSettingsUpdateView } from "./add-collection-
|
|
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-
|
|
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-
|
|
6
|
-
import { parseId } from "./parse-id-
|
|
7
|
-
import { pollUntil } from "./poll-
|
|
8
|
-
import { TransformRun } from "./transform-
|
|
9
|
-
import { parseWaitFlags, waitFlags } from "./wait-flags-
|
|
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
|
|
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
|
-
},
|
|
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
|
-
},
|
|
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
|
-
},
|
|
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-
|
|
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)
|
|
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 };
|