@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.
Files changed (131) hide show
  1. package/README.md +138 -31
  2. package/dist/{api-key-aNbgDn-8.mjs → api-key-DJpqrAGZ.mjs} +1 -1
  3. package/dist/{archive-WGVkPuf8.mjs → archive-B6TbWbK1.mjs} +5 -5
  4. package/dist/auth-BZofbzqG.mjs +19 -0
  5. package/dist/{body-Diijawme.mjs → body-CPnypu0_.mjs} +2 -2
  6. package/dist/{branches-BlSi3TBx.mjs → branches-C_X-mZ8y.mjs} +5 -5
  7. package/dist/{cancel-task-IE1xGzfI.mjs → cancel-task-IPOp8B8w.mjs} +5 -5
  8. package/dist/{card-2XdaHHSS.mjs → card-BOGKT258.mjs} +22 -1
  9. package/dist/card-m-ve7168.mjs +20 -0
  10. package/dist/{cards-DnUcsvj8.mjs → cards-DbwnvuDl.mjs} +5 -5
  11. package/dist/cli.mjs +29 -20
  12. package/dist/collection-BsiGRKXh.mjs +170 -0
  13. package/dist/collection-D3B90qam.mjs +19 -0
  14. package/dist/{create-DmakvRrX.mjs → create-9c1KP2P_.mjs} +6 -6
  15. package/dist/create-BkjrL_vd.mjs +44 -0
  16. package/dist/{create-DYo4lbI2.mjs → create-BoA0MYoT.mjs} +7 -7
  17. package/dist/{create-D-ByDVsB.mjs → create-CWvjvAOe.mjs} +6 -6
  18. package/dist/{create-3d18k8Id.mjs → create-Ck-p0-JC.mjs} +7 -7
  19. package/dist/{create-QXhhxZr5.mjs → create-Iv9ear8t.mjs} +22 -9
  20. package/dist/{create-branch-C2Bdsd5R.mjs → create-branch-CiRVRb7v.mjs} +5 -5
  21. package/dist/{create-D62m-Ubn.mjs → create-dMsrFkvP.mjs} +6 -6
  22. package/dist/{credentials-QKZob37v.mjs → credentials-BXRf0UmM.mjs} +7 -7
  23. package/dist/{current-task-DGuhFVZr.mjs → current-task-gQAv_ckM.mjs} +5 -5
  24. package/dist/{dashboard-DVCLGg3X.mjs → dashboard-BJXi1tGr.mjs} +3 -1
  25. package/dist/dashboard-DE6DQnco.mjs +20 -0
  26. package/dist/{database-Bw72HWEJ.mjs → database-DXjVIlkG.mjs} +3 -3
  27. package/dist/{db-BA6VieA7.mjs → db-DGqKQygl.mjs} +2 -2
  28. package/dist/{delete-CYvfBnPq.mjs → delete-BYx2ESK6.mjs} +6 -6
  29. package/dist/{delete-CTl8JxXL.mjs → delete-BoysG9pE.mjs} +6 -6
  30. package/dist/{delete-runtime-ZDxlvZa6.mjs → delete-runtime-KieND_CX.mjs} +3 -5
  31. package/dist/{delete-table-CZZncGrk.mjs → delete-table-C5B5PRaE.mjs} +6 -6
  32. package/dist/{deprovision-C_UQ1JgA.mjs → deprovision-Dr32FAG9.mjs} +10 -10
  33. package/dist/{dirty-B798WgvJ.mjs → dirty-CID5k_DG.mjs} +5 -5
  34. package/dist/{docker-CJur3rjL.mjs → docker-BcabfnHb.mjs} +21 -7
  35. package/dist/{eid-DANih6Hk.mjs → eid-BnfaFBmk.mjs} +1 -1
  36. package/dist/{export-DdkQHl4m.mjs → export-BDUJ63cz.mjs} +25 -20
  37. package/dist/{field-CAvHQkzI.mjs → field-wJ5IyjF9.mjs} +1 -1
  38. package/dist/{get-C7lv9SOO.mjs → get-2TjBzT5V.mjs} +6 -6
  39. package/dist/{get-Ldui5Vyl.mjs → get-BGtgG85S.mjs} +5 -5
  40. package/dist/{get-D7DCc-zR.mjs → get-BN7AGZLk.mjs} +6 -6
  41. package/dist/{get-BIzIOb3U.mjs → get-BavuL0j2.mjs} +5 -5
  42. package/dist/{get-CuiofGwZ.mjs → get-BhmsDqFa.mjs} +5 -5
  43. package/dist/{get-HNKc0k5G.mjs → get-Br99VIyw.mjs} +5 -5
  44. package/dist/{get-soL4Z2jq.mjs → get-CEmt6JU1.mjs} +5 -5
  45. package/dist/get-Caif_PQa.mjs +41 -0
  46. package/dist/{get-BrpB_58I.mjs → get-gTFLoU81.mjs} +5 -5
  47. package/dist/{has-remote-changes-6bXwJa7C.mjs → has-remote-changes-DCfaGb5v.mjs} +5 -5
  48. package/dist/{import-ys-pzibQ.mjs → import-Dx6kme_2.mjs} +6 -6
  49. package/dist/{input-DkgCMNA9.mjs → input-DMcm_A5s.mjs} +1 -0
  50. package/dist/{is-dirty-AUZADvDx.mjs → is-dirty-DZBRX_uM.mjs} +3 -3
  51. package/dist/is-dirty-FkBul4cr.mjs +10 -0
  52. package/dist/items-BhLxpz31.mjs +123 -0
  53. package/dist/{license-Cr24Ibp3.mjs → license-DfgahRiB.mjs} +3 -3
  54. package/dist/list-B1nz8LEB.mjs +55 -0
  55. package/dist/{list-owVW2jma.mjs → list-B5KP2eXN.mjs} +4 -4
  56. package/dist/{list-SQESC1Z9.mjs → list-BN1iCMfc.mjs} +4 -4
  57. package/dist/{list-C737c643.mjs → list-BeNzesw7.mjs} +4 -4
  58. package/dist/{list-CeqlehZp.mjs → list-CXUd-LO7.mjs} +4 -4
  59. package/dist/{list-DD0dVVEl.mjs → list-Cjst618J.mjs} +6 -6
  60. package/dist/list-CqeNnBHu.mjs +52 -0
  61. package/dist/{list-Cwcz1wg7.mjs → list-DDWzIVi0.mjs} +4 -4
  62. package/dist/{list-DxOceJmQ.mjs → list-DfuhW3--.mjs} +4 -4
  63. package/dist/{list-DI9--PcL.mjs → list-kWLAMOPg.mjs} +4 -4
  64. package/dist/{login-Bw7TcgTG.mjs → login-xppXbffQ.mjs} +5 -5
  65. package/dist/{logout-DEzazQMO.mjs → logout-XtEgcO-n.mjs} +6 -7
  66. package/dist/{logs-QMdzAnlJ.mjs → logs-Dm86UFD5.mjs} +5 -5
  67. package/dist/{manifest-IMg51yb7.mjs → manifest-C7lnUosz.mjs} +1 -1
  68. package/dist/{package-ROuZ4tbw.mjs → package-B4PhZz9R.mjs} +1 -1
  69. package/dist/{parse-id-CGyF8OPI.mjs → parse-id-Dm8zjjx_.mjs} +1 -1
  70. package/dist/parse-ref-CyeuK_yM.mjs +17 -0
  71. package/dist/{poll-B5RO0ias.mjs → poll-DYp_Lzph.mjs} +1 -1
  72. package/dist/{poll-task-BU0gpBIk.mjs → poll-task-kULwF-eM.mjs} +3 -3
  73. package/dist/{provision-CH7aVxXn.mjs → provision-DzsbOQoP.mjs} +10 -10
  74. package/dist/ps-CUp-aAvT.mjs +10 -0
  75. package/dist/{ps-DP5XSIOy.mjs → ps-jLYH2ARi.mjs} +3 -3
  76. package/dist/{query-DwBWeir4.mjs → query-BkUL9HyQ.mjs} +7 -7
  77. package/dist/{query-DNiw6JKA.mjs → query-DCnXxe9y.mjs} +5 -5
  78. package/dist/{remove-CmF7i1Jq.mjs → remove-BXHoDhhy.mjs} +8 -8
  79. package/dist/{remove-WGIoTwsl.mjs → remove-DMRyYIs2.mjs} +6 -7
  80. package/dist/{render-CZNR2MNK.mjs → render-BYWlZPEH.mjs} +7 -4
  81. package/dist/{run-CabruqrJ.mjs → run-qmPGT-44.mjs} +7 -7
  82. package/dist/{runtime-8SAm0dHE.mjs → runtime-DyNvyYvx.mjs} +99 -3
  83. package/dist/{search-DNvad2hL.mjs → search-CiDweQ6X.mjs} +6 -20
  84. package/dist/{set-BclYXZNW.mjs → set-B_IyoHCE.mjs} +7 -7
  85. package/dist/{set-Cog7mkJT.mjs → set-DHdbtWuT.mjs} +5 -5
  86. package/dist/{setting-jFe6Zt2S.mjs → setting-Cp6Tw2QN.mjs} +3 -3
  87. package/dist/{setup-Cw5pIrBj.mjs → setup-4WZU9ihX.mjs} +5 -5
  88. package/dist/{start-CNn99SQU.mjs → start-DHWpzHu6.mjs} +10 -10
  89. package/dist/{stash-BWCuQzmR.mjs → stash-DXrx6JPU.mjs} +6 -6
  90. package/dist/{status-CSAGf0mB.mjs → status-B88vwQzu.mjs} +3 -3
  91. package/dist/{status-yZk5nUq3.mjs → status-C0lb8dVk.mjs} +6 -6
  92. package/dist/{status-CCqjWCFF.mjs → status-CsFspRut.mjs} +3 -3
  93. package/dist/{stop-DMZey9PG.mjs → stop-AYfxmMoS.mjs} +7 -7
  94. package/dist/sync-BpO2GELG.mjs +26 -0
  95. package/dist/{table-BGLcZjyq.mjs → table-BsdEHMog.mjs} +2 -2
  96. package/dist/{table-BbNgtqbd.mjs → table-y0J2_gix.mjs} +1 -1
  97. package/dist/transform-BP8y4jRr.mjs +21 -0
  98. package/dist/transform-job-CjH6-qNC.mjs +19 -0
  99. package/dist/{translate-p5_8y0R7.mjs → translate-DY6xrnmJ.mjs} +5 -5
  100. package/dist/tree-Db0BjcFK.mjs +32 -0
  101. package/dist/{update-Bh9gTZQA.mjs → update-DFlshvJ5.mjs} +7 -7
  102. package/dist/{update-Bz63bSR3.mjs → update-DK8856uS.mjs} +7 -7
  103. package/dist/{update-DbY0q1Ja.mjs → update-DMpYV7ev.mjs} +8 -8
  104. package/dist/update-I04IOKMm.mjs +57 -0
  105. package/dist/{update-dashcard-oH6KxEfS.mjs → update-dashcard-BM3GfQot.mjs} +7 -7
  106. package/dist/{update-CBaL4nmE.mjs → update-voSJcEL1.mjs} +10 -10
  107. package/dist/{url-rF80dSIr.mjs → url-Bdz6hIfi.mjs} +6 -6
  108. package/dist/{validate-query-DE4UouY3.mjs → validate-query-D0aAFTUs.mjs} +49 -3
  109. package/dist/{wait-BMxAPnb0.mjs → wait-DwjJh_Jp.mjs} +2 -2
  110. package/dist/{wait-flags-lGEHf-vx.mjs → wait-flags-jG_4uL02.mjs} +2 -2
  111. package/dist/{wait-CLNtd-on.mjs → wait-y8rVUrfH.mjs} +6 -6
  112. package/dist/workspace-CRVS-7vV.mjs +24 -0
  113. package/package.json +1 -1
  114. package/dist/auth-BV8kyXup.mjs +0 -18
  115. package/dist/card-Dj-6OZZT.mjs +0 -19
  116. package/dist/dashboard-DG6URsA8.mjs +0 -20
  117. package/dist/is-dirty-DG5Samxj.mjs +0 -10
  118. package/dist/ps-D930MtWo.mjs +0 -10
  119. package/dist/sync-BgVaAyuq.mjs +0 -26
  120. package/dist/transform-DpYeGyik.mjs +0 -21
  121. package/dist/transform-job-B1s0Q-rD.mjs +0 -19
  122. package/dist/workspace-BVCgMRZS.mjs +0 -24
  123. /package/dist/{database-B9-7QAXE.mjs → database-C5LkxQ5G.mjs} +0 -0
  124. /package/dist/{field-D_g4xvH9.mjs → field-C1ai7Y05.mjs} +0 -0
  125. /package/dist/{key-CpWh7W8M.mjs → key-CS6durfH.mjs} +0 -0
  126. /package/dist/{prompt-D8p00XDp.mjs → prompt-k9s4Ntk5.mjs} +0 -0
  127. /package/dist/{setting-Bm84ixxW.mjs → setting-DEHSnsEV.mjs} +0 -0
  128. /package/dist/{transform-CRRW0mFp.mjs → transform-MkVM3WhG.mjs} +0 -0
  129. /package/dist/{transform-job-BtCoVYsb.mjs → transform-job-DiK7MZXZ.mjs} +0 -0
  130. /package/dist/{workspace-C3tGVQ6_.mjs → workspace-C8Kgp6BZ.mjs} +0 -0
  131. /package/dist/{workspace-credentials-BxrU2xZb.mjs → workspace-credentials-DuTmzpvd.mjs} +0 -0
@@ -0,0 +1,170 @@
1
+ import { z } from "zod";
2
+
3
+ //#region src/domain/collection.ts
4
+ const CollectionId = z.union([z.number().int(), z.string()]);
5
+ const CollectionAuthorityLevel = z.enum(["official"]);
6
+ const CollectionType = z.enum([
7
+ "instance-analytics",
8
+ "trash",
9
+ "remote-synced",
10
+ "library",
11
+ "library-data",
12
+ "library-metrics",
13
+ "shared-tenant-collection",
14
+ "tenant-specific-root-collection"
15
+ ]);
16
+ const CollectionNamespace = z.enum([
17
+ "snippets",
18
+ "transforms",
19
+ "analytics",
20
+ "tenant-specific",
21
+ "shared-tenant-collection"
22
+ ]);
23
+ const COLLECTION_ITEM_MODELS = [
24
+ "card",
25
+ "dataset",
26
+ "metric",
27
+ "dashboard",
28
+ "snippet",
29
+ "collection",
30
+ "indexed-entity",
31
+ "document",
32
+ "table",
33
+ "transform",
34
+ "measure",
35
+ "pulse",
36
+ "timeline",
37
+ "no_models"
38
+ ];
39
+ const CollectionItemModel = z.enum(COLLECTION_ITEM_MODELS);
40
+ const COLLECTION_PINNED_STATES = [
41
+ "all",
42
+ "is_pinned",
43
+ "is_not_pinned"
44
+ ];
45
+ const CollectionPinnedState = z.enum(COLLECTION_PINNED_STATES);
46
+ const Collection = z.object({
47
+ id: CollectionId,
48
+ name: z.string(),
49
+ description: z.string().nullable().optional(),
50
+ archived: z.boolean().optional(),
51
+ location: z.string().nullable().optional(),
52
+ parent_id: CollectionId.nullable().optional(),
53
+ personal_owner_id: z.number().int().nullable().optional(),
54
+ is_personal: z.boolean().optional(),
55
+ authority_level: CollectionAuthorityLevel.nullable().optional(),
56
+ type: CollectionType.nullable().optional(),
57
+ namespace: CollectionNamespace.nullable().optional(),
58
+ entity_id: z.string().nullable().optional(),
59
+ slug: z.string().optional(),
60
+ can_write: z.boolean().optional()
61
+ }).loose();
62
+ const CollectionCompact = Collection.pick({
63
+ id: true,
64
+ name: true,
65
+ description: true,
66
+ archived: true,
67
+ location: true,
68
+ parent_id: true,
69
+ type: true,
70
+ authority_level: true,
71
+ is_personal: true
72
+ }).strip();
73
+ const collectionView = {
74
+ compactPick: CollectionCompact,
75
+ tableColumns: [
76
+ {
77
+ key: "id",
78
+ label: "ID"
79
+ },
80
+ {
81
+ key: "name",
82
+ label: "Name"
83
+ },
84
+ {
85
+ key: "location",
86
+ label: "Location"
87
+ },
88
+ {
89
+ key: "type",
90
+ label: "Type"
91
+ },
92
+ {
93
+ key: "authority_level",
94
+ label: "Authority"
95
+ },
96
+ {
97
+ key: "archived",
98
+ label: "Archived"
99
+ }
100
+ ]
101
+ };
102
+ const CollectionItem = z.object({
103
+ id: z.number().int(),
104
+ model: CollectionItemModel,
105
+ name: z.string(),
106
+ description: z.string().nullable().optional(),
107
+ archived: z.boolean(),
108
+ collection_id: CollectionId.nullable().optional(),
109
+ collection_position: z.number().int().nullable().optional(),
110
+ display: z.string().optional(),
111
+ location: z.string().nullable().optional(),
112
+ entity_id: z.string().nullable().optional(),
113
+ database_id: z.number().int().nullable().optional(),
114
+ dashboard_id: z.number().int().nullable().optional()
115
+ }).loose();
116
+ const CollectionItemCompact = CollectionItem.pick({
117
+ id: true,
118
+ model: true,
119
+ name: true,
120
+ description: true,
121
+ archived: true,
122
+ collection_id: true
123
+ }).strip();
124
+ const collectionItemView = {
125
+ compactPick: CollectionItemCompact,
126
+ tableColumns: [
127
+ {
128
+ key: "id",
129
+ label: "ID"
130
+ },
131
+ {
132
+ key: "model",
133
+ label: "Model"
134
+ },
135
+ {
136
+ key: "name",
137
+ label: "Name"
138
+ },
139
+ {
140
+ key: "collection_id",
141
+ label: "Collection"
142
+ },
143
+ {
144
+ key: "archived",
145
+ label: "Archived"
146
+ }
147
+ ]
148
+ };
149
+ const CollectionTreeNodeBase = z.object({
150
+ id: CollectionId,
151
+ name: z.string(),
152
+ description: z.string().nullable().optional(),
153
+ archived: z.boolean().optional(),
154
+ location: z.string().nullable().optional(),
155
+ type: CollectionType.nullable().optional(),
156
+ authority_level: CollectionAuthorityLevel.nullable().optional(),
157
+ here: z.array(CollectionItemModel).optional(),
158
+ below: z.array(CollectionItemModel).optional()
159
+ }).loose();
160
+ const CollectionTreeNode = CollectionTreeNodeBase.extend({ children: z.lazy(() => z.array(CollectionTreeNode)) });
161
+ const CollectionCreateInput = z.object({
162
+ name: z.string().min(1),
163
+ description: z.string().nullable().optional(),
164
+ parent_id: z.number().int().positive().nullable().optional(),
165
+ namespace: CollectionNamespace.nullable().optional(),
166
+ authority_level: CollectionAuthorityLevel.nullable().optional()
167
+ }).loose();
168
+
169
+ //#endregion
170
+ export { COLLECTION_ITEM_MODELS, COLLECTION_PINNED_STATES, Collection, CollectionCompact, CollectionCreateInput, CollectionItem, CollectionItemCompact, CollectionItemModel, CollectionPinnedState, CollectionTreeNode, collectionItemView, collectionView };
@@ -0,0 +1,19 @@
1
+ import { defineCommand } from "citty";
2
+
3
+ //#region src/commands/collection/index.ts
4
+ var collection_default = defineCommand({
5
+ meta: {
6
+ name: "collection",
7
+ description: "Browse Metabase collections"
8
+ },
9
+ subCommands: {
10
+ list: () => import("./list-CqeNnBHu.mjs").then((mod) => mod.default),
11
+ get: () => import("./get-Caif_PQa.mjs").then((mod) => mod.default),
12
+ items: () => import("./items-BhLxpz31.mjs").then((mod) => mod.default),
13
+ tree: () => import("./tree-Db0BjcFK.mjs").then((mod) => mod.default),
14
+ create: () => import("./create-BkjrL_vd.mjs").then((mod) => mod.default)
15
+ }
16
+ });
17
+
18
+ //#endregion
19
+ export { collection_default as default };
@@ -1,13 +1,13 @@
1
- import "./package-ROuZ4tbw.mjs";
1
+ import "./package-B4PhZz9R.mjs";
2
2
  import "./command-augment-D9pI9Vbh.mjs";
3
- import { renderItem } from "./render-CZNR2MNK.mjs";
3
+ import { renderItem } from "./render-BYWlZPEH.mjs";
4
4
  import "./errors-C6w1eZ1F.mjs";
5
- import "./input-DkgCMNA9.mjs";
6
- import { connectionFlags, defineMetabaseCommand, outputFlags, profileFlag } from "./runtime-8SAm0dHE.mjs";
7
- import { readBody } from "./body-Diijawme.mjs";
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
9
  import { requireBothOrNeither } from "./flag-pair-Dz-mbq0z.mjs";
10
- import { parseId } from "./parse-id-CGyF8OPI.mjs";
10
+ import { parseId } from "./parse-id-Dm8zjjx_.mjs";
11
11
  import { z } from "zod";
12
12
 
13
13
  //#region src/domain/api-key.ts
@@ -0,0 +1,44 @@
1
+ import "./package-B4PhZz9R.mjs";
2
+ import "./command-augment-D9pI9Vbh.mjs";
3
+ import { renderItem } from "./render-BYWlZPEH.mjs";
4
+ import "./errors-C6w1eZ1F.mjs";
5
+ import "./input-DMcm_A5s.mjs";
6
+ import { connectionFlags, defineMetabaseCommand, outputFlags, profileFlag } from "./runtime-DyNvyYvx.mjs";
7
+ import { readBody } from "./body-CPnypu0_.mjs";
8
+ import { bodyInputFlags } from "./body-flags-BK7J6Daz.mjs";
9
+ import { Collection, CollectionCreateInput, collectionView } from "./collection-BsiGRKXh.mjs";
10
+
11
+ //#region src/commands/collection/create.ts
12
+ var create_default = defineMetabaseCommand({
13
+ meta: {
14
+ name: "create",
15
+ description: "Create a collection from a JSON spec"
16
+ },
17
+ args: {
18
+ ...outputFlags,
19
+ ...profileFlag,
20
+ ...connectionFlags,
21
+ ...bodyInputFlags
22
+ },
23
+ outputSchema: Collection,
24
+ examples: [
25
+ "cat collection.json | metabase collection create",
26
+ "metabase collection create --file collection.json",
27
+ "metabase collection create --body '{\"name\":\"My Collection\",\"parent_id\":4}'"
28
+ ],
29
+ async run({ args, ctx, getClient }) {
30
+ const body = await readBody({
31
+ flag: args.body,
32
+ file: args.file
33
+ }, CollectionCreateInput);
34
+ const client = await getClient();
35
+ const created = await client.requestParsed(Collection, "/api/collection", {
36
+ method: "POST",
37
+ body
38
+ });
39
+ renderItem(created, collectionView, ctx);
40
+ }
41
+ });
42
+
43
+ //#endregion
44
+ export { create_default as default };
@@ -1,13 +1,13 @@
1
- import "./package-ROuZ4tbw.mjs";
1
+ import "./package-B4PhZz9R.mjs";
2
2
  import "./command-augment-D9pI9Vbh.mjs";
3
- import { renderItem } from "./render-CZNR2MNK.mjs";
3
+ import { renderItem } from "./render-BYWlZPEH.mjs";
4
4
  import "./errors-C6w1eZ1F.mjs";
5
- import "./input-DkgCMNA9.mjs";
6
- import { connectionFlags, defineMetabaseCommand, outputFlags, profileFlag } from "./runtime-8SAm0dHE.mjs";
7
- import { readBody } from "./body-Diijawme.mjs";
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 { preflightInternalMbql5Query, skipValidateFlag } from "./validate-query-DE4UouY3.mjs";
10
- import { Transform, TransformCreateInput, transformView } from "./transform-CRRW0mFp.mjs";
9
+ import { preflightInternalMbql5Query, skipValidateFlag } from "./validate-query-D0aAFTUs.mjs";
10
+ import { Transform, TransformCreateInput, transformView } from "./transform-MkVM3WhG.mjs";
11
11
 
12
12
  //#region src/commands/transform/create.ts
13
13
  var create_default = defineMetabaseCommand({
@@ -1,12 +1,12 @@
1
- import "./package-ROuZ4tbw.mjs";
1
+ import "./package-B4PhZz9R.mjs";
2
2
  import "./command-augment-D9pI9Vbh.mjs";
3
- import { renderItem } from "./render-CZNR2MNK.mjs";
3
+ import { renderItem } from "./render-BYWlZPEH.mjs";
4
4
  import "./errors-C6w1eZ1F.mjs";
5
- import "./input-DkgCMNA9.mjs";
6
- import { connectionFlags, defineMetabaseCommand, outputFlags, profileFlag } from "./runtime-8SAm0dHE.mjs";
7
- import { readBody } from "./body-Diijawme.mjs";
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 { TransformJob, TransformJobCreateInput, transformJobView } from "./transform-job-BtCoVYsb.mjs";
9
+ import { TransformJob, TransformJobCreateInput, transformJobView } from "./transform-job-DiK7MZXZ.mjs";
10
10
 
11
11
  //#region src/commands/transform-job/create.ts
12
12
  var create_default = defineMetabaseCommand({
@@ -1,13 +1,13 @@
1
- import "./package-ROuZ4tbw.mjs";
1
+ import "./package-B4PhZz9R.mjs";
2
2
  import "./command-augment-D9pI9Vbh.mjs";
3
- import { renderItem } from "./render-CZNR2MNK.mjs";
3
+ import { renderItem } from "./render-BYWlZPEH.mjs";
4
4
  import "./errors-C6w1eZ1F.mjs";
5
- import "./input-DkgCMNA9.mjs";
6
- import { connectionFlags, defineMetabaseCommand, outputFlags, profileFlag } from "./runtime-8SAm0dHE.mjs";
7
- import { readBody } from "./body-Diijawme.mjs";
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 { Card, CardCreateInput, cardView } from "./card-2XdaHHSS.mjs";
10
- import { preflightInternalMbql5Query, skipValidateFlag } from "./validate-query-DE4UouY3.mjs";
9
+ import { Card, CardCreateInput, cardView } from "./card-BOGKT258.mjs";
10
+ import { preflightInternalMbql5Query, skipValidateFlag } from "./validate-query-D0aAFTUs.mjs";
11
11
 
12
12
  //#region src/commands/card/create.ts
13
13
  var create_default = defineMetabaseCommand({
@@ -1,12 +1,12 @@
1
- import "./package-ROuZ4tbw.mjs";
1
+ import "./package-B4PhZz9R.mjs";
2
2
  import "./command-augment-D9pI9Vbh.mjs";
3
- import { renderItem } from "./render-CZNR2MNK.mjs";
3
+ import { renderItem } from "./render-BYWlZPEH.mjs";
4
4
  import "./errors-C6w1eZ1F.mjs";
5
- import "./input-DkgCMNA9.mjs";
6
- import { connectionFlags, defineMetabaseCommand, outputFlags, profileFlag } from "./runtime-8SAm0dHE.mjs";
7
- import { readBody } from "./body-Diijawme.mjs";
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 { Dashboard, DashboardCreateInput, dashboardView } from "./dashboard-DVCLGg3X.mjs";
9
+ import { Dashboard, DashboardCreateInput, DashboardDetail, dashboardView } from "./dashboard-BJXi1tGr.mjs";
10
10
 
11
11
  //#region src/commands/dashboard/create.ts
12
12
  var create_default = defineMetabaseCommand({
@@ -24,19 +24,32 @@ var create_default = defineMetabaseCommand({
24
24
  examples: [
25
25
  "cat dashboard.json | metabase dashboard create",
26
26
  "metabase dashboard create --file dashboard.json",
27
- "metabase dashboard create --body '{\"name\":\"My Dashboard\",\"collection_id\":4}'"
27
+ "metabase dashboard create --body '{\"name\":\"My Dashboard\",\"collection_id\":4}'",
28
+ "metabase dashboard create --body '{\"name\":\"D\",\"dashcards\":[{\"id\":-1,\"card_id\":42,\"row\":0,\"col\":0,\"size_x\":12,\"size_y\":6}]}'"
28
29
  ],
29
30
  async run({ args, ctx, getClient }) {
30
31
  const body = await readBody({
31
32
  flag: args.body,
32
33
  file: args.file
33
34
  }, DashboardCreateInput);
35
+ const { dashcards, tabs,...createOnly } = body;
34
36
  const client = await getClient();
35
37
  const created = await client.requestParsed(Dashboard, "/api/dashboard", {
36
38
  method: "POST",
37
- body
39
+ body: createOnly
38
40
  });
39
- renderItem(created, dashboardView, ctx);
41
+ if (dashcards === void 0 && tabs === void 0) {
42
+ renderItem(created, dashboardView, ctx);
43
+ return;
44
+ }
45
+ const updated = await client.requestParsed(DashboardDetail, `/api/dashboard/${created.id}`, {
46
+ method: "PUT",
47
+ body: {
48
+ dashcards,
49
+ tabs
50
+ }
51
+ });
52
+ renderItem(updated, dashboardView, ctx);
40
53
  }
41
54
  });
42
55
 
@@ -1,10 +1,10 @@
1
- import "./package-ROuZ4tbw.mjs";
1
+ import "./package-B4PhZz9R.mjs";
2
2
  import "./command-augment-D9pI9Vbh.mjs";
3
- import { renderItem } from "./render-CZNR2MNK.mjs";
3
+ import { renderItem } from "./render-BYWlZPEH.mjs";
4
4
  import { ConfigError } from "./errors-C6w1eZ1F.mjs";
5
- import { connectionFlags, defineMetabaseCommand, outputFlags, profileFlag } from "./runtime-8SAm0dHE.mjs";
6
- import { REMOTE_SYNC_PATHS } from "./poll-task-BU0gpBIk.mjs";
7
- import "./poll-B5RO0ias.mjs";
5
+ import { connectionFlags, defineMetabaseCommand, outputFlags, profileFlag } from "./runtime-DyNvyYvx.mjs";
6
+ import { REMOTE_SYNC_PATHS } from "./poll-task-kULwF-eM.mjs";
7
+ import "./poll-DYp_Lzph.mjs";
8
8
  import { z } from "zod";
9
9
 
10
10
  //#region src/commands/sync/create-branch.ts
@@ -1,12 +1,12 @@
1
- import "./package-ROuZ4tbw.mjs";
1
+ import "./package-B4PhZz9R.mjs";
2
2
  import "./command-augment-D9pI9Vbh.mjs";
3
- import { renderItem } from "./render-CZNR2MNK.mjs";
3
+ import { renderItem } from "./render-BYWlZPEH.mjs";
4
4
  import "./errors-C6w1eZ1F.mjs";
5
- import "./input-DkgCMNA9.mjs";
6
- import { connectionFlags, defineMetabaseCommand, outputFlags, profileFlag } from "./runtime-8SAm0dHE.mjs";
7
- import { readBody } from "./body-Diijawme.mjs";
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 { Workspace, WorkspaceCreateInput, workspaceView } from "./workspace-C3tGVQ6_.mjs";
9
+ import { Workspace, WorkspaceCreateInput, workspaceView } from "./workspace-C8Kgp6BZ.mjs";
10
10
 
11
11
  //#region src/commands/workspace/create.ts
12
12
  var create_default = defineMetabaseCommand({
@@ -1,12 +1,12 @@
1
- import "./package-ROuZ4tbw.mjs";
1
+ import "./package-B4PhZz9R.mjs";
2
2
  import "./command-augment-D9pI9Vbh.mjs";
3
- import { renderItem } from "./render-CZNR2MNK.mjs";
3
+ import { renderItem } from "./render-BYWlZPEH.mjs";
4
4
  import "./errors-C6w1eZ1F.mjs";
5
- import { defineMetabaseCommand, localUrl, outputFlags, parseJson } from "./runtime-8SAm0dHE.mjs";
6
- import { parseId } from "./parse-id-CGyF8OPI.mjs";
7
- import "./poll-B5RO0ias.mjs";
8
- import { checkDockerReady, readContainerCredentialsFile, requireWorkspaceContainerLocation } from "./docker-CJur3rjL.mjs";
9
- import { WorkspaceCredentials } from "./workspace-credentials-BxrU2xZb.mjs";
5
+ import { defineMetabaseCommand, localUrl, outputFlags, parseJson } from "./runtime-DyNvyYvx.mjs";
6
+ import { parseId } from "./parse-id-Dm8zjjx_.mjs";
7
+ import "./poll-DYp_Lzph.mjs";
8
+ import { checkDockerReady, readContainerCredentialsFile, requireWorkspaceContainerLocation } from "./docker-BcabfnHb.mjs";
9
+ import { WorkspaceCredentials } from "./workspace-credentials-DuTmzpvd.mjs";
10
10
  import { z } from "zod";
11
11
 
12
12
  //#region src/commands/workspace/credentials.ts
@@ -1,10 +1,10 @@
1
- import "./package-ROuZ4tbw.mjs";
1
+ import "./package-B4PhZz9R.mjs";
2
2
  import "./command-augment-D9pI9Vbh.mjs";
3
- import { renderItem } from "./render-CZNR2MNK.mjs";
3
+ import { renderItem } from "./render-BYWlZPEH.mjs";
4
4
  import "./errors-C6w1eZ1F.mjs";
5
- import { connectionFlags, defineMetabaseCommand, outputFlags, profileFlag } from "./runtime-8SAm0dHE.mjs";
6
- import { SyncTaskOrIdle, fetchCurrentTask, syncTaskIdleView, syncTaskView } from "./poll-task-BU0gpBIk.mjs";
7
- import "./poll-B5RO0ias.mjs";
5
+ import { connectionFlags, defineMetabaseCommand, outputFlags, profileFlag } from "./runtime-DyNvyYvx.mjs";
6
+ import { SyncTaskOrIdle, fetchCurrentTask, syncTaskIdleView, syncTaskView } from "./poll-task-kULwF-eM.mjs";
7
+ import "./poll-DYp_Lzph.mjs";
8
8
 
9
9
  //#region src/commands/sync/current-task.ts
10
10
  const CurrentTaskResult = SyncTaskOrIdle;
@@ -121,7 +121,9 @@ const DashboardCreateInput = z.object({
121
121
  parameters: z.array(z.unknown()).optional(),
122
122
  cache_ttl: z.number().int().positive().optional(),
123
123
  collection_id: z.number().int().positive().nullable().optional(),
124
- collection_position: z.number().int().positive().nullable().optional()
124
+ collection_position: z.number().int().positive().nullable().optional(),
125
+ dashcards: z.array(z.unknown()).optional(),
126
+ tabs: z.array(DashboardTab.partial()).optional()
125
127
  }).loose();
126
128
  const DashboardUpdateInput = z.object({
127
129
  name: z.string().min(1).optional(),
@@ -0,0 +1,20 @@
1
+ import { defineCommand } from "citty";
2
+
3
+ //#region src/commands/dashboard/index.ts
4
+ var dashboard_default = defineCommand({
5
+ meta: {
6
+ name: "dashboard",
7
+ description: "Manage Metabase dashboards"
8
+ },
9
+ subCommands: {
10
+ list: () => import("./list-BN1iCMfc.mjs").then((mod) => mod.default),
11
+ get: () => import("./get-Br99VIyw.mjs").then((mod) => mod.default),
12
+ cards: () => import("./cards-DbwnvuDl.mjs").then((mod) => mod.default),
13
+ create: () => import("./create-Iv9ear8t.mjs").then((mod) => mod.default),
14
+ update: () => import("./update-DK8856uS.mjs").then((mod) => mod.default),
15
+ "update-dashcard": () => import("./update-dashcard-BM3GfQot.mjs").then((mod) => mod.default)
16
+ }
17
+ });
18
+
19
+ //#endregion
20
+ export { dashboard_default as default };
@@ -7,9 +7,9 @@ var database_default = defineCommand({
7
7
  description: "Manage databases provisioned to a workspace"
8
8
  },
9
9
  subCommands: {
10
- provision: () => import("./provision-CH7aVxXn.mjs").then((mod) => mod.default),
11
- update: () => import("./update-CBaL4nmE.mjs").then((mod) => mod.default),
12
- deprovision: () => import("./deprovision-C_UQ1JgA.mjs").then((mod) => mod.default)
10
+ provision: () => import("./provision-DzsbOQoP.mjs").then((mod) => mod.default),
11
+ update: () => import("./update-voSJcEL1.mjs").then((mod) => mod.default),
12
+ deprovision: () => import("./deprovision-Dr32FAG9.mjs").then((mod) => mod.default)
13
13
  }
14
14
  });
15
15
 
@@ -8,8 +8,8 @@ var db_default = defineCommand({
8
8
  alias: "database"
9
9
  },
10
10
  subCommands: {
11
- list: () => import("./list-CeqlehZp.mjs").then((m) => m.default),
12
- get: () => import("./get-BrpB_58I.mjs").then((m) => m.default)
11
+ list: () => import("./list-CXUd-LO7.mjs").then((m) => m.default),
12
+ get: () => import("./get-gTFLoU81.mjs").then((m) => m.default)
13
13
  }
14
14
  });
15
15
 
@@ -1,11 +1,11 @@
1
- import "./package-ROuZ4tbw.mjs";
1
+ import "./package-B4PhZz9R.mjs";
2
2
  import "./command-augment-D9pI9Vbh.mjs";
3
- import "./render-CZNR2MNK.mjs";
3
+ import "./render-BYWlZPEH.mjs";
4
4
  import "./errors-C6w1eZ1F.mjs";
5
- import { connectionFlags, defineMetabaseCommand, outputFlags, profileFlag } from "./runtime-8SAm0dHE.mjs";
6
- import { parseId } from "./parse-id-CGyF8OPI.mjs";
7
- import "./prompt-D8p00XDp.mjs";
8
- import { DeleteResult, confirmAndDelete } from "./delete-runtime-ZDxlvZa6.mjs";
5
+ import { connectionFlags, defineMetabaseCommand, outputFlags, profileFlag } from "./runtime-DyNvyYvx.mjs";
6
+ import { parseId } from "./parse-id-Dm8zjjx_.mjs";
7
+ import "./prompt-k9s4Ntk5.mjs";
8
+ import { DeleteResult, confirmAndDelete } from "./delete-runtime-KieND_CX.mjs";
9
9
 
10
10
  //#region src/commands/transform-job/delete.ts
11
11
  var delete_default = defineMetabaseCommand({
@@ -1,11 +1,11 @@
1
- import "./package-ROuZ4tbw.mjs";
1
+ import "./package-B4PhZz9R.mjs";
2
2
  import "./command-augment-D9pI9Vbh.mjs";
3
- import "./render-CZNR2MNK.mjs";
3
+ import "./render-BYWlZPEH.mjs";
4
4
  import "./errors-C6w1eZ1F.mjs";
5
- import { connectionFlags, defineMetabaseCommand, outputFlags, profileFlag } from "./runtime-8SAm0dHE.mjs";
6
- import { parseId } from "./parse-id-CGyF8OPI.mjs";
7
- import "./prompt-D8p00XDp.mjs";
8
- import { DeleteResult, confirmAndDelete } from "./delete-runtime-ZDxlvZa6.mjs";
5
+ import { connectionFlags, defineMetabaseCommand, outputFlags, profileFlag } from "./runtime-DyNvyYvx.mjs";
6
+ import { parseId } from "./parse-id-Dm8zjjx_.mjs";
7
+ import "./prompt-k9s4Ntk5.mjs";
8
+ import { DeleteResult, confirmAndDelete } from "./delete-runtime-KieND_CX.mjs";
9
9
 
10
10
  //#region src/commands/transform/delete.ts
11
11
  var delete_default = defineMetabaseCommand({
@@ -1,6 +1,5 @@
1
- import { renderItem } from "./render-CZNR2MNK.mjs";
2
- import { ConfigError } from "./errors-C6w1eZ1F.mjs";
3
- import { promptConfirm } from "./prompt-D8p00XDp.mjs";
1
+ import { renderItem } from "./render-BYWlZPEH.mjs";
2
+ import { promptConfirm } from "./prompt-k9s4Ntk5.mjs";
4
3
  import { z } from "zod";
5
4
 
6
5
  //#region src/commands/delete-runtime.ts
@@ -27,8 +26,7 @@ const deleteResultView = {
27
26
  ]
28
27
  };
29
28
  async function confirmAndDelete(args) {
30
- if (!args.yes) {
31
- if (!process.stdin.isTTY) throw new ConfigError("--yes required to delete non-interactively");
29
+ if (!args.yes && process.stdin.isTTY === true) {
32
30
  const ok = await promptConfirm({
33
31
  message: args.promptMessage,
34
32
  initialValue: false
@@ -1,11 +1,11 @@
1
- import "./package-ROuZ4tbw.mjs";
1
+ import "./package-B4PhZz9R.mjs";
2
2
  import "./command-augment-D9pI9Vbh.mjs";
3
- import "./render-CZNR2MNK.mjs";
3
+ import "./render-BYWlZPEH.mjs";
4
4
  import "./errors-C6w1eZ1F.mjs";
5
- import { connectionFlags, defineMetabaseCommand, outputFlags, profileFlag } from "./runtime-8SAm0dHE.mjs";
6
- import { parseId } from "./parse-id-CGyF8OPI.mjs";
7
- import "./prompt-D8p00XDp.mjs";
8
- import { DeleteResult, confirmAndDelete } from "./delete-runtime-ZDxlvZa6.mjs";
5
+ import { connectionFlags, defineMetabaseCommand, outputFlags, profileFlag } from "./runtime-DyNvyYvx.mjs";
6
+ import { parseId } from "./parse-id-Dm8zjjx_.mjs";
7
+ import "./prompt-k9s4Ntk5.mjs";
8
+ import { DeleteResult, confirmAndDelete } from "./delete-runtime-KieND_CX.mjs";
9
9
 
10
10
  //#region src/commands/transform/delete-table.ts
11
11
  var delete_table_default = defineMetabaseCommand({
@@ -1,15 +1,15 @@
1
- import "./package-ROuZ4tbw.mjs";
1
+ import "./package-B4PhZz9R.mjs";
2
2
  import "./command-augment-D9pI9Vbh.mjs";
3
- import "./render-CZNR2MNK.mjs";
3
+ import "./render-BYWlZPEH.mjs";
4
4
  import "./errors-C6w1eZ1F.mjs";
5
- import { connectionFlags, defineMetabaseCommand, outputFlags, profileFlag } from "./runtime-8SAm0dHE.mjs";
6
- import { parseId } from "./parse-id-CGyF8OPI.mjs";
7
- import "./prompt-D8p00XDp.mjs";
8
- import "./poll-B5RO0ias.mjs";
9
- import { DeleteResult, confirmAndDelete } from "./delete-runtime-ZDxlvZa6.mjs";
10
- import { parseWaitFlags, waitFlags } from "./wait-flags-lGEHf-vx.mjs";
11
- import "./workspace-C3tGVQ6_.mjs";
12
- import { waitForDatabaseGone } from "./wait-BMxAPnb0.mjs";
5
+ import { connectionFlags, defineMetabaseCommand, outputFlags, profileFlag } from "./runtime-DyNvyYvx.mjs";
6
+ import { parseId } from "./parse-id-Dm8zjjx_.mjs";
7
+ import "./prompt-k9s4Ntk5.mjs";
8
+ import "./poll-DYp_Lzph.mjs";
9
+ import { DeleteResult, confirmAndDelete } from "./delete-runtime-KieND_CX.mjs";
10
+ import { parseWaitFlags, waitFlags } from "./wait-flags-jG_4uL02.mjs";
11
+ import "./workspace-C8Kgp6BZ.mjs";
12
+ import { waitForDatabaseGone } from "./wait-DwjJh_Jp.mjs";
13
13
 
14
14
  //#region src/commands/workspace/database/deprovision.ts
15
15
  var deprovision_default = defineMetabaseCommand({
@@ -1,10 +1,10 @@
1
- import "./package-ROuZ4tbw.mjs";
1
+ import "./package-B4PhZz9R.mjs";
2
2
  import "./command-augment-D9pI9Vbh.mjs";
3
- import { renderList } from "./render-CZNR2MNK.mjs";
3
+ import { renderList } from "./render-BYWlZPEH.mjs";
4
4
  import "./errors-C6w1eZ1F.mjs";
5
- import { connectionFlags, defineMetabaseCommand, listEnvelopeSchema, outputFlags, profileFlag, wrapList } from "./runtime-8SAm0dHE.mjs";
6
- import { REMOTE_SYNC_PATHS, SyncDirtyItem, SyncDirtyItemCompact, syncDirtyItemView } from "./poll-task-BU0gpBIk.mjs";
7
- import "./poll-B5RO0ias.mjs";
5
+ import { connectionFlags, defineMetabaseCommand, listEnvelopeSchema, outputFlags, profileFlag, wrapList } from "./runtime-DyNvyYvx.mjs";
6
+ import { REMOTE_SYNC_PATHS, SyncDirtyItem, SyncDirtyItemCompact, syncDirtyItemView } from "./poll-task-kULwF-eM.mjs";
7
+ import "./poll-DYp_Lzph.mjs";
8
8
  import { z } from "zod";
9
9
 
10
10
  //#region src/commands/sync/dirty.ts