@metabase/cli 0.1.0-alpha.workspaces-commands.5ab9ca6 → 0.1.0-alpha.workspaces-commands.78747d1
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 +138 -31
- package/dist/{api-key-aNbgDn-8.mjs → api-key-DJpqrAGZ.mjs} +1 -1
- package/dist/{archive-WGVkPuf8.mjs → archive-B6TbWbK1.mjs} +5 -5
- package/dist/auth-BZofbzqG.mjs +19 -0
- package/dist/{body-Diijawme.mjs → body-CPnypu0_.mjs} +2 -2
- package/dist/{branches-BlSi3TBx.mjs → branches-C_X-mZ8y.mjs} +5 -5
- package/dist/{cancel-task-IE1xGzfI.mjs → cancel-task-IPOp8B8w.mjs} +5 -5
- package/dist/{card-2XdaHHSS.mjs → card-BOGKT258.mjs} +22 -1
- package/dist/card-m-ve7168.mjs +20 -0
- package/dist/{cards-DnUcsvj8.mjs → cards-DbwnvuDl.mjs} +5 -5
- package/dist/cli.mjs +29 -20
- package/dist/collection-BsiGRKXh.mjs +170 -0
- package/dist/collection-D3B90qam.mjs +19 -0
- package/dist/{create-DmakvRrX.mjs → create-9c1KP2P_.mjs} +6 -6
- package/dist/create-BkjrL_vd.mjs +44 -0
- package/dist/{create-DYo4lbI2.mjs → create-BoA0MYoT.mjs} +7 -7
- package/dist/{create-D-ByDVsB.mjs → create-CWvjvAOe.mjs} +6 -6
- package/dist/{create-3d18k8Id.mjs → create-Ck-p0-JC.mjs} +7 -7
- package/dist/{create-QXhhxZr5.mjs → create-Iv9ear8t.mjs} +22 -9
- package/dist/{create-branch-C2Bdsd5R.mjs → create-branch-CiRVRb7v.mjs} +5 -5
- package/dist/{create-D62m-Ubn.mjs → create-dMsrFkvP.mjs} +6 -6
- package/dist/{credentials-QKZob37v.mjs → credentials-BXRf0UmM.mjs} +7 -7
- package/dist/{current-task-DGuhFVZr.mjs → current-task-gQAv_ckM.mjs} +5 -5
- package/dist/{dashboard-DVCLGg3X.mjs → dashboard-BJXi1tGr.mjs} +3 -1
- package/dist/dashboard-DE6DQnco.mjs +20 -0
- package/dist/{database-Bw72HWEJ.mjs → database-DXjVIlkG.mjs} +3 -3
- package/dist/{db-BA6VieA7.mjs → db-DGqKQygl.mjs} +2 -2
- package/dist/{delete-CYvfBnPq.mjs → delete-BYx2ESK6.mjs} +6 -6
- package/dist/{delete-CTl8JxXL.mjs → delete-BoysG9pE.mjs} +6 -6
- package/dist/{delete-runtime-ZDxlvZa6.mjs → delete-runtime-KieND_CX.mjs} +3 -5
- package/dist/{delete-table-CZZncGrk.mjs → delete-table-C5B5PRaE.mjs} +6 -6
- package/dist/{deprovision-C_UQ1JgA.mjs → deprovision-Dr32FAG9.mjs} +10 -10
- package/dist/{dirty-B798WgvJ.mjs → dirty-CID5k_DG.mjs} +5 -5
- package/dist/{docker-CJur3rjL.mjs → docker-BcabfnHb.mjs} +21 -7
- package/dist/{eid-DANih6Hk.mjs → eid-BnfaFBmk.mjs} +1 -1
- package/dist/{export-DdkQHl4m.mjs → export-BDUJ63cz.mjs} +25 -20
- package/dist/{field-CAvHQkzI.mjs → field-wJ5IyjF9.mjs} +1 -1
- package/dist/{get-C7lv9SOO.mjs → get-2TjBzT5V.mjs} +6 -6
- package/dist/{get-Ldui5Vyl.mjs → get-BGtgG85S.mjs} +5 -5
- package/dist/{get-D7DCc-zR.mjs → get-BN7AGZLk.mjs} +6 -6
- package/dist/{get-BIzIOb3U.mjs → get-BavuL0j2.mjs} +5 -5
- package/dist/{get-CuiofGwZ.mjs → get-BhmsDqFa.mjs} +5 -5
- package/dist/{get-HNKc0k5G.mjs → get-Br99VIyw.mjs} +5 -5
- package/dist/{get-soL4Z2jq.mjs → get-CEmt6JU1.mjs} +5 -5
- package/dist/get-Caif_PQa.mjs +41 -0
- package/dist/{get-BrpB_58I.mjs → get-gTFLoU81.mjs} +5 -5
- package/dist/{has-remote-changes-6bXwJa7C.mjs → has-remote-changes-DCfaGb5v.mjs} +5 -5
- package/dist/{import-ys-pzibQ.mjs → import-Dx6kme_2.mjs} +6 -6
- package/dist/{input-DkgCMNA9.mjs → input-DMcm_A5s.mjs} +1 -0
- package/dist/{is-dirty-AUZADvDx.mjs → is-dirty-DZBRX_uM.mjs} +3 -3
- package/dist/is-dirty-FkBul4cr.mjs +10 -0
- package/dist/items-BhLxpz31.mjs +123 -0
- package/dist/{license-Cr24Ibp3.mjs → license-DfgahRiB.mjs} +3 -3
- package/dist/list-B1nz8LEB.mjs +55 -0
- package/dist/{list-owVW2jma.mjs → list-B5KP2eXN.mjs} +4 -4
- package/dist/{list-SQESC1Z9.mjs → list-BN1iCMfc.mjs} +4 -4
- package/dist/{list-C737c643.mjs → list-BeNzesw7.mjs} +4 -4
- package/dist/{list-CeqlehZp.mjs → list-CXUd-LO7.mjs} +4 -4
- package/dist/{list-DD0dVVEl.mjs → list-Cjst618J.mjs} +6 -6
- package/dist/list-CqeNnBHu.mjs +52 -0
- package/dist/{list-Cwcz1wg7.mjs → list-DDWzIVi0.mjs} +4 -4
- package/dist/{list-DxOceJmQ.mjs → list-DfuhW3--.mjs} +4 -4
- package/dist/{list-DI9--PcL.mjs → list-kWLAMOPg.mjs} +4 -4
- package/dist/{login-Bw7TcgTG.mjs → login-xppXbffQ.mjs} +5 -5
- package/dist/{logout-DEzazQMO.mjs → logout-XtEgcO-n.mjs} +6 -7
- package/dist/{logs-QMdzAnlJ.mjs → logs-Dm86UFD5.mjs} +5 -5
- package/dist/{manifest-IMg51yb7.mjs → manifest-C7lnUosz.mjs} +1 -1
- package/dist/{package-ROuZ4tbw.mjs → package-B4PhZz9R.mjs} +1 -1
- package/dist/{parse-id-CGyF8OPI.mjs → parse-id-Dm8zjjx_.mjs} +1 -1
- package/dist/parse-ref-CyeuK_yM.mjs +17 -0
- package/dist/{poll-B5RO0ias.mjs → poll-DYp_Lzph.mjs} +1 -1
- package/dist/{poll-task-BU0gpBIk.mjs → poll-task-kULwF-eM.mjs} +3 -3
- package/dist/{provision-CH7aVxXn.mjs → provision-DzsbOQoP.mjs} +10 -10
- package/dist/ps-CUp-aAvT.mjs +10 -0
- package/dist/{ps-DP5XSIOy.mjs → ps-jLYH2ARi.mjs} +3 -3
- package/dist/{query-DwBWeir4.mjs → query-BkUL9HyQ.mjs} +7 -7
- package/dist/{query-DNiw6JKA.mjs → query-DCnXxe9y.mjs} +5 -5
- package/dist/{remove-CmF7i1Jq.mjs → remove-BXHoDhhy.mjs} +8 -8
- package/dist/{remove-WGIoTwsl.mjs → remove-DMRyYIs2.mjs} +6 -7
- package/dist/{render-CZNR2MNK.mjs → render-BYWlZPEH.mjs} +7 -4
- package/dist/{run-CabruqrJ.mjs → run-qmPGT-44.mjs} +7 -7
- package/dist/{runtime-8SAm0dHE.mjs → runtime-DyNvyYvx.mjs} +99 -3
- package/dist/{search-DNvad2hL.mjs → search-CiDweQ6X.mjs} +6 -20
- package/dist/{set-BclYXZNW.mjs → set-B_IyoHCE.mjs} +7 -7
- package/dist/{set-Cog7mkJT.mjs → set-DHdbtWuT.mjs} +5 -5
- package/dist/{setting-jFe6Zt2S.mjs → setting-Cp6Tw2QN.mjs} +3 -3
- package/dist/{setup-Cw5pIrBj.mjs → setup-4WZU9ihX.mjs} +5 -5
- package/dist/{start-CNn99SQU.mjs → start-DHWpzHu6.mjs} +10 -10
- package/dist/{stash-BWCuQzmR.mjs → stash-DXrx6JPU.mjs} +6 -6
- package/dist/{status-CSAGf0mB.mjs → status-B88vwQzu.mjs} +3 -3
- package/dist/{status-yZk5nUq3.mjs → status-C0lb8dVk.mjs} +6 -6
- package/dist/{status-CCqjWCFF.mjs → status-CsFspRut.mjs} +3 -3
- package/dist/{stop-DMZey9PG.mjs → stop-AYfxmMoS.mjs} +7 -7
- package/dist/sync-BpO2GELG.mjs +26 -0
- package/dist/{table-BGLcZjyq.mjs → table-BsdEHMog.mjs} +2 -2
- package/dist/{table-BbNgtqbd.mjs → table-y0J2_gix.mjs} +1 -1
- package/dist/transform-BP8y4jRr.mjs +21 -0
- package/dist/transform-job-CjH6-qNC.mjs +19 -0
- package/dist/{translate-p5_8y0R7.mjs → translate-DY6xrnmJ.mjs} +5 -5
- package/dist/tree-Db0BjcFK.mjs +32 -0
- package/dist/{update-Bh9gTZQA.mjs → update-DFlshvJ5.mjs} +7 -7
- package/dist/{update-Bz63bSR3.mjs → update-DK8856uS.mjs} +7 -7
- package/dist/{update-DbY0q1Ja.mjs → update-DMpYV7ev.mjs} +8 -8
- package/dist/update-I04IOKMm.mjs +57 -0
- package/dist/{update-dashcard-oH6KxEfS.mjs → update-dashcard-BM3GfQot.mjs} +7 -7
- package/dist/{update-CBaL4nmE.mjs → update-voSJcEL1.mjs} +10 -10
- package/dist/{url-rF80dSIr.mjs → url-Bdz6hIfi.mjs} +6 -6
- package/dist/{validate-query-DE4UouY3.mjs → validate-query-D0aAFTUs.mjs} +49 -3
- package/dist/{wait-BMxAPnb0.mjs → wait-DwjJh_Jp.mjs} +2 -2
- package/dist/{wait-flags-lGEHf-vx.mjs → wait-flags-jG_4uL02.mjs} +2 -2
- package/dist/{wait-CLNtd-on.mjs → wait-y8rVUrfH.mjs} +6 -6
- package/dist/workspace-CRVS-7vV.mjs +24 -0
- package/package.json +1 -1
- package/dist/auth-BV8kyXup.mjs +0 -18
- package/dist/card-Dj-6OZZT.mjs +0 -19
- package/dist/dashboard-DG6URsA8.mjs +0 -20
- package/dist/is-dirty-DG5Samxj.mjs +0 -10
- package/dist/ps-D930MtWo.mjs +0 -10
- package/dist/sync-BgVaAyuq.mjs +0 -26
- package/dist/transform-DpYeGyik.mjs +0 -21
- package/dist/transform-job-B1s0Q-rD.mjs +0 -19
- package/dist/workspace-BVCgMRZS.mjs +0 -24
- /package/dist/{database-B9-7QAXE.mjs → database-C5LkxQ5G.mjs} +0 -0
- /package/dist/{field-D_g4xvH9.mjs → field-C1ai7Y05.mjs} +0 -0
- /package/dist/{key-CpWh7W8M.mjs → key-CS6durfH.mjs} +0 -0
- /package/dist/{prompt-D8p00XDp.mjs → prompt-k9s4Ntk5.mjs} +0 -0
- /package/dist/{setting-Bm84ixxW.mjs → setting-DEHSnsEV.mjs} +0 -0
- /package/dist/{transform-CRRW0mFp.mjs → transform-MkVM3WhG.mjs} +0 -0
- /package/dist/{transform-job-BtCoVYsb.mjs → transform-job-DiK7MZXZ.mjs} +0 -0
- /package/dist/{workspace-C3tGVQ6_.mjs → workspace-C8Kgp6BZ.mjs} +0 -0
- /package/dist/{workspace-credentials-BxrU2xZb.mjs → workspace-credentials-DuTmzpvd.mjs} +0 -0
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import "./package-
|
|
1
|
+
import "./package-B4PhZz9R.mjs";
|
|
2
2
|
import "./command-augment-D9pI9Vbh.mjs";
|
|
3
|
-
import { renderList } from "./render-
|
|
3
|
+
import { renderList } from "./render-BYWlZPEH.mjs";
|
|
4
4
|
import "./errors-C6w1eZ1F.mjs";
|
|
5
|
-
import { connectionFlags, defineMetabaseCommand, listEnvelopeSchema, outputFlags, profileFlag, wrapList } from "./runtime-
|
|
6
|
-
import { parseId } from "./parse-id-
|
|
7
|
-
import "./field-
|
|
8
|
-
import { Table, TableCompact, tableView } from "./table-
|
|
5
|
+
import { connectionFlags, defineMetabaseCommand, listEnvelopeSchema, outputFlags, profileFlag, wrapList } from "./runtime-DyNvyYvx.mjs";
|
|
6
|
+
import { parseId } from "./parse-id-Dm8zjjx_.mjs";
|
|
7
|
+
import "./field-C1ai7Y05.mjs";
|
|
8
|
+
import { Table, TableCompact, tableView } from "./table-y0J2_gix.mjs";
|
|
9
9
|
import { z } from "zod";
|
|
10
10
|
|
|
11
11
|
//#region src/commands/table/list.ts
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import "./package-B4PhZz9R.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-DyNvyYvx.mjs";
|
|
6
|
+
import { Collection, CollectionCompact, collectionView } from "./collection-BsiGRKXh.mjs";
|
|
7
|
+
import { z } from "zod";
|
|
8
|
+
|
|
9
|
+
//#region src/commands/collection/list.ts
|
|
10
|
+
const CollectionApiList = z.array(Collection);
|
|
11
|
+
const CollectionListFilter = z.enum([
|
|
12
|
+
"all",
|
|
13
|
+
"archived",
|
|
14
|
+
"personal"
|
|
15
|
+
]);
|
|
16
|
+
const COLLECTION_LIST_QUERY = {
|
|
17
|
+
all: {},
|
|
18
|
+
archived: { archived: true },
|
|
19
|
+
personal: { "personal-only": true }
|
|
20
|
+
};
|
|
21
|
+
const CollectionListEnvelope = listEnvelopeSchema(CollectionCompact);
|
|
22
|
+
var list_default = defineMetabaseCommand({
|
|
23
|
+
meta: {
|
|
24
|
+
name: "list",
|
|
25
|
+
description: "List collections"
|
|
26
|
+
},
|
|
27
|
+
args: {
|
|
28
|
+
...outputFlags,
|
|
29
|
+
...profileFlag,
|
|
30
|
+
...connectionFlags,
|
|
31
|
+
filter: {
|
|
32
|
+
type: "string",
|
|
33
|
+
description: `Filter preset: ${CollectionListFilter.options.join("|")}`,
|
|
34
|
+
default: "all"
|
|
35
|
+
}
|
|
36
|
+
},
|
|
37
|
+
outputSchema: CollectionListEnvelope,
|
|
38
|
+
examples: [
|
|
39
|
+
"metabase collection list",
|
|
40
|
+
"metabase collection list --json",
|
|
41
|
+
"metabase collection list --filter archived --json"
|
|
42
|
+
],
|
|
43
|
+
async run({ args, ctx, getClient }) {
|
|
44
|
+
const filter = CollectionListFilter.parse(args.filter);
|
|
45
|
+
const client = await getClient();
|
|
46
|
+
const items = await client.requestParsed(CollectionApiList, "/api/collection", { query: COLLECTION_LIST_QUERY[filter] });
|
|
47
|
+
renderList(wrapList(items), collectionView, ctx);
|
|
48
|
+
}
|
|
49
|
+
});
|
|
50
|
+
|
|
51
|
+
//#endregion
|
|
52
|
+
export { list_default as default };
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import "./package-
|
|
1
|
+
import "./package-B4PhZz9R.mjs";
|
|
2
2
|
import "./command-augment-D9pI9Vbh.mjs";
|
|
3
|
-
import { renderList } from "./render-
|
|
3
|
+
import { renderList } from "./render-BYWlZPEH.mjs";
|
|
4
4
|
import "./errors-C6w1eZ1F.mjs";
|
|
5
|
-
import { connectionFlags, defineMetabaseCommand, listEnvelopeSchema, outputFlags, profileFlag, wrapList } from "./runtime-
|
|
6
|
-
import { TransformJob, TransformJobCompact, transformJobView } from "./transform-job-
|
|
5
|
+
import { connectionFlags, defineMetabaseCommand, listEnvelopeSchema, outputFlags, profileFlag, wrapList } from "./runtime-DyNvyYvx.mjs";
|
|
6
|
+
import { TransformJob, TransformJobCompact, transformJobView } from "./transform-job-DiK7MZXZ.mjs";
|
|
7
7
|
import { z } from "zod";
|
|
8
8
|
|
|
9
9
|
//#region src/commands/transform-job/list.ts
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import "./package-
|
|
1
|
+
import "./package-B4PhZz9R.mjs";
|
|
2
2
|
import "./command-augment-D9pI9Vbh.mjs";
|
|
3
|
-
import { renderList } from "./render-
|
|
3
|
+
import { renderList } from "./render-BYWlZPEH.mjs";
|
|
4
4
|
import "./errors-C6w1eZ1F.mjs";
|
|
5
|
-
import { connectionFlags, defineMetabaseCommand, listEnvelopeSchema, outputFlags, profileFlag, wrapList } from "./runtime-
|
|
6
|
-
import { Workspace, WorkspaceCompact, workspaceView } from "./workspace-
|
|
5
|
+
import { connectionFlags, defineMetabaseCommand, listEnvelopeSchema, outputFlags, profileFlag, wrapList } from "./runtime-DyNvyYvx.mjs";
|
|
6
|
+
import { Workspace, WorkspaceCompact, workspaceView } from "./workspace-C8Kgp6BZ.mjs";
|
|
7
7
|
import { z } from "zod";
|
|
8
8
|
|
|
9
9
|
//#region src/commands/workspace/list.ts
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import "./package-
|
|
1
|
+
import "./package-B4PhZz9R.mjs";
|
|
2
2
|
import "./command-augment-D9pI9Vbh.mjs";
|
|
3
|
-
import { renderList } from "./render-
|
|
3
|
+
import { renderList } from "./render-BYWlZPEH.mjs";
|
|
4
4
|
import "./errors-C6w1eZ1F.mjs";
|
|
5
|
-
import { connectionFlags, defineMetabaseCommand, listEnvelopeSchema, outputFlags, profileFlag, wrapList } from "./runtime-
|
|
6
|
-
import { Transform, TransformCompact, transformView } from "./transform-
|
|
5
|
+
import { connectionFlags, defineMetabaseCommand, listEnvelopeSchema, outputFlags, profileFlag, wrapList } from "./runtime-DyNvyYvx.mjs";
|
|
6
|
+
import { Transform, TransformCompact, transformView } from "./transform-MkVM3WhG.mjs";
|
|
7
7
|
import { z } from "zod";
|
|
8
8
|
|
|
9
9
|
//#region src/commands/transform/list.ts
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import "./package-
|
|
1
|
+
import "./package-B4PhZz9R.mjs";
|
|
2
2
|
import "./command-augment-D9pI9Vbh.mjs";
|
|
3
|
-
import { renderItem, warn } from "./render-
|
|
3
|
+
import { renderItem, warn } from "./render-BYWlZPEH.mjs";
|
|
4
4
|
import { ConfigError, MetabaseError, errorMessage } from "./errors-C6w1eZ1F.mjs";
|
|
5
|
-
import { readInput } from "./input-
|
|
6
|
-
import { HttpError, connectionFlags, createClient, defineMetabaseCommand, normalizeUrl, outputFlags, profileFlag, readEnvCredentials, resolveProfileName, writeProfile } from "./runtime-
|
|
7
|
-
import { promptPassword, promptText } from "./prompt-
|
|
5
|
+
import { readInput } from "./input-DMcm_A5s.mjs";
|
|
6
|
+
import { HttpError, connectionFlags, createClient, defineMetabaseCommand, normalizeUrl, outputFlags, profileFlag, readEnvCredentials, resolveProfileName, writeProfile } from "./runtime-DyNvyYvx.mjs";
|
|
7
|
+
import { promptPassword, promptText } from "./prompt-k9s4Ntk5.mjs";
|
|
8
8
|
import { z } from "zod";
|
|
9
9
|
|
|
10
10
|
//#region src/domain/user.ts
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import "./package-
|
|
1
|
+
import "./package-B4PhZz9R.mjs";
|
|
2
2
|
import "./command-augment-D9pI9Vbh.mjs";
|
|
3
|
-
import { renderItem } from "./render-
|
|
4
|
-
import
|
|
5
|
-
import { clearProfile, defineMetabaseCommand, outputFlags, profileFlag, resolveProfileName } from "./runtime-
|
|
6
|
-
import { promptConfirm } from "./prompt-
|
|
3
|
+
import { renderItem } from "./render-BYWlZPEH.mjs";
|
|
4
|
+
import "./errors-C6w1eZ1F.mjs";
|
|
5
|
+
import { clearProfile, defineMetabaseCommand, outputFlags, profileFlag, resolveProfileName } from "./runtime-DyNvyYvx.mjs";
|
|
6
|
+
import { promptConfirm } from "./prompt-k9s4Ntk5.mjs";
|
|
7
7
|
import { z } from "zod";
|
|
8
8
|
|
|
9
9
|
//#region src/commands/auth/logout.ts
|
|
@@ -47,8 +47,7 @@ var logout_default = defineMetabaseCommand({
|
|
|
47
47
|
examples: ["metabase auth logout --yes", "metabase auth logout --profile staging --yes"],
|
|
48
48
|
async run({ args, ctx }) {
|
|
49
49
|
const profileName = resolveProfileName(args.profile);
|
|
50
|
-
if (!args.yes) {
|
|
51
|
-
if (!process.stdin.isTTY) throw new ConfigError("--yes required to clear credentials non-interactively");
|
|
50
|
+
if (!args.yes && process.stdin.isTTY === true) {
|
|
52
51
|
const ok = await promptConfirm({
|
|
53
52
|
message: `Clear stored credentials for profile "${profileName}"?`,
|
|
54
53
|
initialValue: false
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import "./package-
|
|
1
|
+
import "./package-B4PhZz9R.mjs";
|
|
2
2
|
import "./command-augment-D9pI9Vbh.mjs";
|
|
3
3
|
import { ConfigError } from "./errors-C6w1eZ1F.mjs";
|
|
4
|
-
import { defineMetabaseCommand, outputFlags, parseInteger } from "./runtime-
|
|
5
|
-
import { parseId } from "./parse-id-
|
|
6
|
-
import "./poll-
|
|
7
|
-
import { checkDockerReady, containerLifecycleStatus, containerNameFor, streamLogs } from "./docker-
|
|
4
|
+
import { defineMetabaseCommand, outputFlags, parseInteger } from "./runtime-DyNvyYvx.mjs";
|
|
5
|
+
import { parseId } from "./parse-id-Dm8zjjx_.mjs";
|
|
6
|
+
import "./poll-DYp_Lzph.mjs";
|
|
7
|
+
import { checkDockerReady, containerLifecycleStatus, containerNameFor, streamLogs } from "./docker-BcabfnHb.mjs";
|
|
8
8
|
|
|
9
9
|
//#region src/commands/workspace/logs.ts
|
|
10
10
|
const DEFAULT_TAIL = 200;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { getMetabaseAugment } from "./command-augment-D9pI9Vbh.mjs";
|
|
2
|
-
import { writeJson } from "./render-
|
|
2
|
+
import { writeJson } from "./render-BYWlZPEH.mjs";
|
|
3
3
|
import "./errors-C6w1eZ1F.mjs";
|
|
4
4
|
import { defineCommand } from "citty";
|
|
5
5
|
import { z } from "zod";
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { ConfigError } from "./errors-C6w1eZ1F.mjs";
|
|
2
|
+
|
|
3
|
+
//#region src/commands/collection/parse-ref.ts
|
|
4
|
+
const SPECIAL_TOKENS = new Set(["root", "trash"]);
|
|
5
|
+
const POSITIVE_INTEGER_PATTERN = /^[1-9]\d*$/;
|
|
6
|
+
const NANO_ID_PATTERN = /^[A-Za-z0-9_-]{21}$/;
|
|
7
|
+
const FORMAT_HINT = "expected integer, \"root\", \"trash\", or 21-char entity id";
|
|
8
|
+
function parseCollectionRef(raw) {
|
|
9
|
+
const trimmed = raw.trim();
|
|
10
|
+
if (trimmed === "") throw new ConfigError(`invalid id: ${JSON.stringify(trimmed)} (${FORMAT_HINT})`);
|
|
11
|
+
if (SPECIAL_TOKENS.has(trimmed)) return trimmed;
|
|
12
|
+
if (POSITIVE_INTEGER_PATTERN.test(trimmed) || NANO_ID_PATTERN.test(trimmed)) return trimmed;
|
|
13
|
+
throw new ConfigError(`invalid id: ${JSON.stringify(raw)} (${FORMAT_HINT})`);
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
//#endregion
|
|
17
|
+
export { parseCollectionRef };
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { TimeoutError } from "./errors-C6w1eZ1F.mjs";
|
|
2
|
-
import { combineAborts, throwIfAborted } from "./runtime-
|
|
2
|
+
import { combineAborts, throwIfAborted } from "./runtime-DyNvyYvx.mjs";
|
|
3
3
|
import { setTimeout } from "node:timers/promises";
|
|
4
4
|
|
|
5
5
|
//#region src/runtime/poll.ts
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { DEFAULT_INTERVAL_MS, DEFAULT_TIMEOUT_MS, pollUntil } from "./poll-
|
|
1
|
+
import { parseJsonOrPlain } from "./runtime-DyNvyYvx.mjs";
|
|
2
|
+
import { DEFAULT_INTERVAL_MS, DEFAULT_TIMEOUT_MS, pollUntil } from "./poll-DYp_Lzph.mjs";
|
|
3
3
|
import { z } from "zod";
|
|
4
4
|
|
|
5
5
|
//#region src/domain/remote-sync.ts
|
|
@@ -173,7 +173,7 @@ async function fetchOptionalParsed(client, path, schema) {
|
|
|
173
173
|
});
|
|
174
174
|
if (response.status === 204) return null;
|
|
175
175
|
const text = await response.text();
|
|
176
|
-
return
|
|
176
|
+
return parseJsonOrPlain(text, response.headers.get("content-type"), schema, { source: response.url });
|
|
177
177
|
}
|
|
178
178
|
async function fetchCurrentTask(client) {
|
|
179
179
|
return await fetchOptionalParsed(client, REMOTE_SYNC_PATHS.currentTask, SyncTask);
|
|
@@ -1,16 +1,16 @@
|
|
|
1
|
-
import "./package-
|
|
1
|
+
import "./package-B4PhZz9R.mjs";
|
|
2
2
|
import "./command-augment-D9pI9Vbh.mjs";
|
|
3
|
-
import { renderItem } from "./render-
|
|
3
|
+
import { renderItem } from "./render-BYWlZPEH.mjs";
|
|
4
4
|
import { ConfigError } from "./errors-C6w1eZ1F.mjs";
|
|
5
|
-
import "./input-
|
|
6
|
-
import { connectionFlags, defineMetabaseCommand, outputFlags, parseCsv, profileFlag } from "./runtime-
|
|
7
|
-
import { readBody } from "./body-
|
|
5
|
+
import "./input-DMcm_A5s.mjs";
|
|
6
|
+
import { connectionFlags, defineMetabaseCommand, outputFlags, parseCsv, profileFlag } from "./runtime-DyNvyYvx.mjs";
|
|
7
|
+
import { readBody } from "./body-CPnypu0_.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-
|
|
9
|
+
import { parseId } from "./parse-id-Dm8zjjx_.mjs";
|
|
10
|
+
import "./poll-DYp_Lzph.mjs";
|
|
11
|
+
import { parseWaitFlags, waitFlags } from "./wait-flags-jG_4uL02.mjs";
|
|
12
|
+
import { Workspace, WorkspaceProvisionInput, workspaceView } from "./workspace-C8Kgp6BZ.mjs";
|
|
13
|
+
import { waitForDatabaseProvisioned } from "./wait-DwjJh_Jp.mjs";
|
|
14
14
|
|
|
15
15
|
//#region src/commands/workspace/database/provision.ts
|
|
16
16
|
var provision_default = defineMetabaseCommand({
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import "./package-B4PhZz9R.mjs";
|
|
2
|
+
import "./command-augment-D9pI9Vbh.mjs";
|
|
3
|
+
import "./render-BYWlZPEH.mjs";
|
|
4
|
+
import "./errors-C6w1eZ1F.mjs";
|
|
5
|
+
import "./runtime-DyNvyYvx.mjs";
|
|
6
|
+
import "./poll-DYp_Lzph.mjs";
|
|
7
|
+
import "./docker-BcabfnHb.mjs";
|
|
8
|
+
import { LocalWorkspace, LocalWorkspaceCompact, LocalWorkspaceListEnvelope, LocalWorkspaceState, localWorkspaceView, ps_default } from "./ps-jLYH2ARi.mjs";
|
|
9
|
+
|
|
10
|
+
export { ps_default as default };
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { renderList } from "./render-
|
|
2
|
-
import { defineMetabaseCommand, listEnvelopeSchema, localUrl, outputFlags, wrapList } from "./runtime-
|
|
3
|
-
import { CONTAINER_STATES, checkDockerReady, listWorkspaceContainers } from "./docker-
|
|
1
|
+
import { renderList } from "./render-BYWlZPEH.mjs";
|
|
2
|
+
import { defineMetabaseCommand, listEnvelopeSchema, localUrl, outputFlags, wrapList } from "./runtime-DyNvyYvx.mjs";
|
|
3
|
+
import { CONTAINER_STATES, checkDockerReady, listWorkspaceContainers } from "./docker-BcabfnHb.mjs";
|
|
4
4
|
import { z } from "zod";
|
|
5
5
|
|
|
6
6
|
//#region src/commands/workspace/ps.ts
|
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
import "./package-
|
|
1
|
+
import "./package-B4PhZz9R.mjs";
|
|
2
2
|
import "./command-augment-D9pI9Vbh.mjs";
|
|
3
|
-
import { renderItem, writeJson } from "./render-
|
|
3
|
+
import { renderItem, writeJson } from "./render-BYWlZPEH.mjs";
|
|
4
4
|
import { ConfigError } from "./errors-C6w1eZ1F.mjs";
|
|
5
|
-
import "./input-
|
|
6
|
-
import { connectionFlags, defineMetabaseCommand, outputFlags, profileFlag } from "./runtime-
|
|
7
|
-
import { readBody } from "./body-
|
|
5
|
+
import "./input-DMcm_A5s.mjs";
|
|
6
|
+
import { connectionFlags, defineMetabaseCommand, outputFlags, profileFlag } from "./runtime-DyNvyYvx.mjs";
|
|
7
|
+
import { readBody } from "./body-CPnypu0_.mjs";
|
|
8
8
|
import { bodyInputFlags } from "./body-flags-BK7J6Daz.mjs";
|
|
9
|
-
import { CardQueryResult, cardQueryView } from "./card-
|
|
10
|
-
import { getQuerySchemaBundle, skipValidateFlag, validateExternalQuery, validateInternalQuery } from "./validate-query-
|
|
9
|
+
import { CardQueryResult, cardQueryView } from "./card-BOGKT258.mjs";
|
|
10
|
+
import { getQuerySchemaBundle, skipValidateFlag, validateExternalQuery, validateInternalQuery } from "./validate-query-D0aAFTUs.mjs";
|
|
11
11
|
import { z } from "zod";
|
|
12
12
|
|
|
13
13
|
//#region src/commands/query.ts
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import "./package-
|
|
1
|
+
import "./package-B4PhZz9R.mjs";
|
|
2
2
|
import "./command-augment-D9pI9Vbh.mjs";
|
|
3
|
-
import { renderItem } from "./render-
|
|
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-
|
|
7
|
-
import { CardQueryResult, cardQueryView } from "./card-
|
|
5
|
+
import { connectionFlags, defineMetabaseCommand, outputFlags, parseJson, profileFlag } from "./runtime-DyNvyYvx.mjs";
|
|
6
|
+
import { parseId } from "./parse-id-Dm8zjjx_.mjs";
|
|
7
|
+
import { CardQueryResult, cardQueryView } from "./card-BOGKT258.mjs";
|
|
8
8
|
import { z } from "zod";
|
|
9
9
|
import { Writable } from "node:stream";
|
|
10
10
|
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import "./package-
|
|
1
|
+
import "./package-B4PhZz9R.mjs";
|
|
2
2
|
import "./command-augment-D9pI9Vbh.mjs";
|
|
3
|
-
import { renderItem } from "./render-
|
|
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-
|
|
7
|
-
import { promptConfirm } from "./prompt-
|
|
8
|
-
import "./poll-
|
|
9
|
-
import { checkDockerReady, containerNameFor, removeContainer, removeVolume, volumeNameFor } from "./docker-
|
|
5
|
+
import { defineMetabaseCommand, outputFlags } from "./runtime-DyNvyYvx.mjs";
|
|
6
|
+
import { parseId } from "./parse-id-Dm8zjjx_.mjs";
|
|
7
|
+
import { promptConfirm } from "./prompt-k9s4Ntk5.mjs";
|
|
8
|
+
import "./poll-DYp_Lzph.mjs";
|
|
9
|
+
import { checkDockerReady, containerNameFor, removeContainer, removeVolume, volumeNameFor } from "./docker-BcabfnHb.mjs";
|
|
10
10
|
import { z } from "zod";
|
|
11
11
|
|
|
12
12
|
//#region src/commands/workspace/remove.ts
|
|
@@ -77,7 +77,7 @@ var remove_default = defineMetabaseCommand({
|
|
|
77
77
|
const volumeName = volumeNameFor(workspaceId);
|
|
78
78
|
const shouldRemoveVolume = args["keep-volume"] !== true;
|
|
79
79
|
await checkDockerReady();
|
|
80
|
-
if (!args.yes) {
|
|
80
|
+
if (!args.yes && process.stdin.isTTY === true) {
|
|
81
81
|
const confirmed = await promptConfirm({ message: shouldRemoveVolume ? `Remove container ${containerName} and its app-db volume ${volumeName}?` : `Remove container ${containerName}? (volume ${volumeName} will be kept)` });
|
|
82
82
|
if (!confirmed) return;
|
|
83
83
|
}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import "./package-
|
|
1
|
+
import "./package-B4PhZz9R.mjs";
|
|
2
2
|
import "./command-augment-D9pI9Vbh.mjs";
|
|
3
|
-
import { renderItem } from "./render-
|
|
4
|
-
import
|
|
5
|
-
import { clearLicense, defineMetabaseCommand, outputFlags } from "./runtime-
|
|
6
|
-
import { promptConfirm } from "./prompt-
|
|
3
|
+
import { renderItem } from "./render-BYWlZPEH.mjs";
|
|
4
|
+
import "./errors-C6w1eZ1F.mjs";
|
|
5
|
+
import { clearLicense, defineMetabaseCommand, outputFlags } from "./runtime-DyNvyYvx.mjs";
|
|
6
|
+
import { promptConfirm } from "./prompt-k9s4Ntk5.mjs";
|
|
7
7
|
import { z } from "zod";
|
|
8
8
|
|
|
9
9
|
//#region src/commands/license/remove.ts
|
|
@@ -37,8 +37,7 @@ var remove_default = defineMetabaseCommand({
|
|
|
37
37
|
outputSchema: LicenseRemoveResult,
|
|
38
38
|
examples: ["metabase license remove --yes"],
|
|
39
39
|
async run({ args, ctx }) {
|
|
40
|
-
if (!args.yes) {
|
|
41
|
-
if (!process.stdin.isTTY) throw new ConfigError("--yes required to remove license non-interactively");
|
|
40
|
+
if (!args.yes && process.stdin.isTTY === true) {
|
|
42
41
|
const ok = await promptConfirm({
|
|
43
42
|
message: "Remove stored license token?",
|
|
44
43
|
initialValue: false
|
|
@@ -42,6 +42,12 @@ function itemOversizeNotice(bytes) {
|
|
|
42
42
|
return `… item is ${bytes} bytes (exceeds --max-bytes); narrow with --fields, or pass --max-bytes 0`;
|
|
43
43
|
}
|
|
44
44
|
|
|
45
|
+
//#endregion
|
|
46
|
+
//#region src/runtime/predicates.ts
|
|
47
|
+
function isPlainObject(value) {
|
|
48
|
+
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
49
|
+
}
|
|
50
|
+
|
|
45
51
|
//#endregion
|
|
46
52
|
//#region src/output/projection.ts
|
|
47
53
|
function applyProjection(value, view, full, fields) {
|
|
@@ -89,9 +95,6 @@ function setPath(target, parts, value) {
|
|
|
89
95
|
}
|
|
90
96
|
}
|
|
91
97
|
}
|
|
92
|
-
function isPlainObject(value) {
|
|
93
|
-
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
94
|
-
}
|
|
95
98
|
|
|
96
99
|
//#endregion
|
|
97
100
|
//#region src/output/table.ts
|
|
@@ -179,4 +182,4 @@ function emitItemOversizeNotice(body, maxBytes) {
|
|
|
179
182
|
}
|
|
180
183
|
|
|
181
184
|
//#endregion
|
|
182
|
-
export { renderItem, renderList, warn, writeJson };
|
|
185
|
+
export { isPlainObject, renderItem, renderList, warn, writeJson };
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import "./package-
|
|
1
|
+
import "./package-B4PhZz9R.mjs";
|
|
2
2
|
import "./command-augment-D9pI9Vbh.mjs";
|
|
3
|
-
import { renderItem } from "./render-
|
|
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-DyNvyYvx.mjs";
|
|
6
|
+
import { parseId } from "./parse-id-Dm8zjjx_.mjs";
|
|
7
|
+
import { pollUntil } from "./poll-DYp_Lzph.mjs";
|
|
8
|
+
import { TransformRun } from "./transform-MkVM3WhG.mjs";
|
|
9
|
+
import { parseWaitFlags, waitFlags } from "./wait-flags-jG_4uL02.mjs";
|
|
10
10
|
import { z } from "zod";
|
|
11
11
|
|
|
12
12
|
//#region src/commands/transform/run.ts
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { package_default } from "./package-
|
|
1
|
+
import { package_default } from "./package-B4PhZz9R.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";
|
|
@@ -39,6 +39,12 @@ function parseJsonResult(input, schema, opts = {}) {
|
|
|
39
39
|
value: parsed.data
|
|
40
40
|
};
|
|
41
41
|
}
|
|
42
|
+
const JSON_CONTENT_TYPE$1 = "application/json";
|
|
43
|
+
function parseJsonOrPlain(text, contentType, schema, opts = {}) {
|
|
44
|
+
const isJson = contentType !== null && contentType.includes(JSON_CONTENT_TYPE$1);
|
|
45
|
+
const payload = isJson ? text : JSON.stringify(text);
|
|
46
|
+
return parseJson(payload, schema, opts);
|
|
47
|
+
}
|
|
42
48
|
|
|
43
49
|
//#endregion
|
|
44
50
|
//#region src/output/types.ts
|
|
@@ -138,6 +144,7 @@ function configDir() {
|
|
|
138
144
|
const CredentialsFileSchema = z.record(z.string(), z.string());
|
|
139
145
|
const KEYRING_SERVICE = "metabase-cli";
|
|
140
146
|
const CREDENTIALS_FILE = "credentials.json";
|
|
147
|
+
const PROFILE_INDEX_FILE = "profiles.json";
|
|
141
148
|
const DEFAULT_PROFILE = "default";
|
|
142
149
|
const CREDENTIALS_FILE_MODE = 384;
|
|
143
150
|
const CREDENTIALS_DIR_MODE = 448;
|
|
@@ -146,9 +153,14 @@ const account = {
|
|
|
146
153
|
profileApiKey: (profile) => `profile:${profile}:apiKey`,
|
|
147
154
|
license: "license"
|
|
148
155
|
};
|
|
156
|
+
const ProfileIndexSchema = z.array(z.string());
|
|
157
|
+
const FILE_STORE_PROFILE_URL_PATTERN = /^profile:(.+):url$/;
|
|
149
158
|
function fallbackFilePath() {
|
|
150
159
|
return join(configDir(), CREDENTIALS_FILE);
|
|
151
160
|
}
|
|
161
|
+
function profileIndexPath() {
|
|
162
|
+
return join(configDir(), PROFILE_INDEX_FILE);
|
|
163
|
+
}
|
|
152
164
|
function keyringEnabled() {
|
|
153
165
|
return process.env["METABASE_CLI_DISABLE_KEYRING"] !== "1";
|
|
154
166
|
}
|
|
@@ -268,13 +280,71 @@ async function readProfile(name = DEFAULT_PROFILE) {
|
|
|
268
280
|
}
|
|
269
281
|
async function writeProfile(profile, name = DEFAULT_PROFILE) {
|
|
270
282
|
await credentials.set(account.profileUrl(name), profile.url);
|
|
271
|
-
|
|
283
|
+
const location = await credentials.set(account.profileApiKey(name), profile.apiKey);
|
|
284
|
+
await addToProfileIndex(name);
|
|
285
|
+
return location;
|
|
272
286
|
}
|
|
273
287
|
async function clearProfile(name = DEFAULT_PROFILE) {
|
|
274
288
|
const removedUrl = await credentials.remove(account.profileUrl(name));
|
|
275
289
|
const removedKey = await credentials.remove(account.profileApiKey(name));
|
|
290
|
+
await removeFromProfileIndex(name);
|
|
276
291
|
return removedUrl || removedKey;
|
|
277
292
|
}
|
|
293
|
+
async function listProfileNames() {
|
|
294
|
+
const stored = await readProfileIndex();
|
|
295
|
+
if (stored !== null) return stored;
|
|
296
|
+
const backfilled = await backfillProfileIndexFromFile();
|
|
297
|
+
if (backfilled.length > 0) await writeProfileIndex(backfilled);
|
|
298
|
+
return backfilled;
|
|
299
|
+
}
|
|
300
|
+
async function readProfileIndex() {
|
|
301
|
+
const path = profileIndexPath();
|
|
302
|
+
let raw;
|
|
303
|
+
try {
|
|
304
|
+
raw = await promises.readFile(path, "utf8");
|
|
305
|
+
} catch (error) {
|
|
306
|
+
if (isNotFoundError(error)) return null;
|
|
307
|
+
throw error;
|
|
308
|
+
}
|
|
309
|
+
return parseJson(raw, ProfileIndexSchema, { source: path });
|
|
310
|
+
}
|
|
311
|
+
async function writeProfileIndex(names) {
|
|
312
|
+
const path = profileIndexPath();
|
|
313
|
+
const unique = [...new Set(names)].toSorted();
|
|
314
|
+
await promises.mkdir(dirname(path), {
|
|
315
|
+
recursive: true,
|
|
316
|
+
mode: CREDENTIALS_DIR_MODE
|
|
317
|
+
});
|
|
318
|
+
await promises.writeFile(path, JSON.stringify(unique, null, 2) + "\n", { mode: CREDENTIALS_FILE_MODE });
|
|
319
|
+
if (process.platform !== "win32") await promises.chmod(path, CREDENTIALS_FILE_MODE);
|
|
320
|
+
}
|
|
321
|
+
async function deleteProfileIndex() {
|
|
322
|
+
await promises.unlink(profileIndexPath()).catch(() => void 0);
|
|
323
|
+
}
|
|
324
|
+
async function addToProfileIndex(name) {
|
|
325
|
+
const current = await listProfileNames();
|
|
326
|
+
if (current.includes(name)) return;
|
|
327
|
+
await writeProfileIndex([...current, name]);
|
|
328
|
+
}
|
|
329
|
+
async function removeFromProfileIndex(name) {
|
|
330
|
+
const current = await listProfileNames();
|
|
331
|
+
const next = current.filter((entry) => entry !== name);
|
|
332
|
+
if (next.length === current.length) return;
|
|
333
|
+
if (next.length === 0) {
|
|
334
|
+
await deleteProfileIndex();
|
|
335
|
+
return;
|
|
336
|
+
}
|
|
337
|
+
await writeProfileIndex(next);
|
|
338
|
+
}
|
|
339
|
+
async function backfillProfileIndexFromFile() {
|
|
340
|
+
const store = await readFileStore();
|
|
341
|
+
const names = new Set();
|
|
342
|
+
for (const key of Object.keys(store)) {
|
|
343
|
+
const name = FILE_STORE_PROFILE_URL_PATTERN.exec(key)?.[1];
|
|
344
|
+
if (name !== void 0) names.add(name);
|
|
345
|
+
}
|
|
346
|
+
return [...names];
|
|
347
|
+
}
|
|
278
348
|
async function readLicense() {
|
|
279
349
|
return credentials.read(account.license);
|
|
280
350
|
}
|
|
@@ -753,6 +823,32 @@ function resolveFormat({ json, format, isTty }) {
|
|
|
753
823
|
function parseCsv(raw) {
|
|
754
824
|
return raw.split(",").map((part) => part.trim()).filter((part) => part.length > 0);
|
|
755
825
|
}
|
|
826
|
+
function parseEnumCsv(raw, schema, flagName) {
|
|
827
|
+
if (raw === void 0 || raw === "") return void 0;
|
|
828
|
+
const parts = parseCsv(raw);
|
|
829
|
+
if (parts.length === 0) return void 0;
|
|
830
|
+
const accepted = [];
|
|
831
|
+
const rejected = [];
|
|
832
|
+
for (const part of parts) {
|
|
833
|
+
const result = schema.safeParse(part);
|
|
834
|
+
if (result.success) accepted.push(result.data);
|
|
835
|
+
else rejected.push(part);
|
|
836
|
+
}
|
|
837
|
+
if (rejected.length > 0) {
|
|
838
|
+
const allowed = Object.values(schema.enum).join(", ");
|
|
839
|
+
throw new ConfigError(`invalid ${flagName} value: ${rejected.join(", ")} (expected one of: ${allowed})`);
|
|
840
|
+
}
|
|
841
|
+
return accepted;
|
|
842
|
+
}
|
|
843
|
+
function parseEnum(raw, schema, flagName) {
|
|
844
|
+
if (raw === void 0 || raw === "") return void 0;
|
|
845
|
+
const result = schema.safeParse(raw);
|
|
846
|
+
if (!result.success) {
|
|
847
|
+
const allowed = Object.values(schema.enum).join(", ");
|
|
848
|
+
throw new ConfigError(`invalid ${flagName} value: "${raw}" (expected one of: ${allowed})`);
|
|
849
|
+
}
|
|
850
|
+
return result.data;
|
|
851
|
+
}
|
|
756
852
|
|
|
757
853
|
//#endregion
|
|
758
854
|
//#region src/commands/context.ts
|
|
@@ -850,4 +946,4 @@ function buildConfigFlags(ctx) {
|
|
|
850
946
|
}
|
|
851
947
|
|
|
852
948
|
//#endregion
|
|
853
|
-
export { HttpError, account, clearLicense, clearProfile, combineAborts, connectionFlags, createClient, credentials, defineMetabaseCommand, listEnvelopeSchema, localUrl, normalizeUrl, originOnly, outputFlags, parseCsv, parseInteger, parseJson, parseOptionalInteger, profileFlag, readEnvCredentials, readEnvLicenseToken, resolveLicenseToken, resolveProfileName, throwIfAborted, wrapList, writeLicense, writeProfile };
|
|
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 };
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import "./package-
|
|
1
|
+
import "./package-B4PhZz9R.mjs";
|
|
2
2
|
import "./command-augment-D9pI9Vbh.mjs";
|
|
3
|
-
import { renderList } from "./render-
|
|
4
|
-
import
|
|
5
|
-
import { connectionFlags, defineMetabaseCommand, listEnvelopeSchema, outputFlags,
|
|
6
|
-
import { parseId } from "./parse-id-
|
|
3
|
+
import { renderList } from "./render-BYWlZPEH.mjs";
|
|
4
|
+
import "./errors-C6w1eZ1F.mjs";
|
|
5
|
+
import { connectionFlags, defineMetabaseCommand, listEnvelopeSchema, outputFlags, parseEnumCsv, profileFlag } from "./runtime-DyNvyYvx.mjs";
|
|
6
|
+
import { parseId } from "./parse-id-Dm8zjjx_.mjs";
|
|
7
7
|
import { z } from "zod";
|
|
8
8
|
|
|
9
9
|
//#region src/domain/search.ts
|
|
@@ -129,7 +129,7 @@ var search_default = defineMetabaseCommand({
|
|
|
129
129
|
const limit = parseId(args.limit, "--limit");
|
|
130
130
|
const tableDbIdRaw = args["table-db-id"];
|
|
131
131
|
const tableDbId = tableDbIdRaw ? parseId(tableDbIdRaw, "--table-db-id") : void 0;
|
|
132
|
-
const models =
|
|
132
|
+
const models = parseEnumCsv(args.models, SearchModel, "--models");
|
|
133
133
|
const client = await getClient();
|
|
134
134
|
const response = await client.requestParsed(SearchApiResponse, "/api/search", { query: {
|
|
135
135
|
q: nonEmpty(args.query),
|
|
@@ -153,20 +153,6 @@ function nonEmpty(value) {
|
|
|
153
153
|
const trimmed = value.trim();
|
|
154
154
|
return trimmed.length === 0 ? void 0 : trimmed;
|
|
155
155
|
}
|
|
156
|
-
function parseModels(raw) {
|
|
157
|
-
if (raw === void 0 || raw === "") return void 0;
|
|
158
|
-
const parts = parseCsv(raw);
|
|
159
|
-
if (parts.length === 0) return void 0;
|
|
160
|
-
const accepted = [];
|
|
161
|
-
const rejected = [];
|
|
162
|
-
for (const part of parts) {
|
|
163
|
-
const result = SearchModel.safeParse(part);
|
|
164
|
-
if (result.success) accepted.push(result.data);
|
|
165
|
-
else rejected.push(part);
|
|
166
|
-
}
|
|
167
|
-
if (rejected.length > 0) throw new ConfigError(`invalid --models value: ${rejected.join(", ")} (expected one of: ${SEARCH_MODELS.join(", ")})`);
|
|
168
|
-
return accepted;
|
|
169
|
-
}
|
|
170
156
|
|
|
171
157
|
//#endregion
|
|
172
158
|
export { search_default as default };
|