@salesforce/analytics 0.23.0 → 1.0.2

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 (296) hide show
  1. package/CHANGELOG.md +25 -0
  2. package/LICENSE.txt +12 -0
  3. package/README.md +356 -80
  4. package/{dist → lib}/commands/analytics/app/create.d.ts +7 -7
  5. package/{dist → lib}/commands/analytics/app/create.js +60 -42
  6. package/lib/commands/analytics/app/create.js.map +1 -0
  7. package/{dist → lib}/commands/analytics/app/decouple.d.ts +2 -2
  8. package/{dist → lib}/commands/analytics/app/decouple.js +11 -2
  9. package/lib/commands/analytics/app/decouple.js.map +1 -0
  10. package/{dist → lib}/commands/analytics/app/delete.d.ts +2 -2
  11. package/{dist → lib}/commands/analytics/app/delete.js +12 -5
  12. package/lib/commands/analytics/app/delete.js.map +1 -0
  13. package/{dist → lib}/commands/analytics/app/display.d.ts +1 -1
  14. package/{dist → lib}/commands/analytics/app/display.js +14 -9
  15. package/lib/commands/analytics/app/display.js.map +1 -0
  16. package/{dist → lib}/commands/analytics/app/list.d.ts +5 -4
  17. package/{dist → lib}/commands/analytics/app/list.js +14 -7
  18. package/lib/commands/analytics/app/list.js.map +1 -0
  19. package/{dist → lib}/commands/analytics/app/update.d.ts +2 -2
  20. package/{dist → lib}/commands/analytics/app/update.js +11 -2
  21. package/lib/commands/analytics/app/update.js.map +1 -0
  22. package/{dist → lib}/commands/analytics/asset/publisher/create.d.ts +1 -1
  23. package/{dist → lib}/commands/analytics/asset/publisher/create.js +11 -4
  24. package/lib/commands/analytics/asset/publisher/create.js.map +1 -0
  25. package/{dist → lib}/commands/analytics/asset/publisher/delete.d.ts +2 -3
  26. package/{dist → lib}/commands/analytics/asset/publisher/delete.js +12 -8
  27. package/lib/commands/analytics/asset/publisher/delete.js.map +1 -0
  28. package/{dist → lib}/commands/analytics/asset/publisher/deleteall.d.ts +2 -2
  29. package/{dist → lib}/commands/analytics/asset/publisher/deleteall.js +12 -5
  30. package/lib/commands/analytics/asset/publisher/deleteall.js.map +1 -0
  31. package/{dist → lib}/commands/analytics/asset/publisher/list.d.ts +1 -1
  32. package/{dist → lib}/commands/analytics/asset/publisher/list.js +13 -6
  33. package/lib/commands/analytics/asset/publisher/list.js.map +1 -0
  34. package/{dist → lib}/commands/analytics/autoinstall/app/create.d.ts +3 -3
  35. package/{dist → lib}/commands/analytics/autoinstall/app/create.js +15 -7
  36. package/lib/commands/analytics/autoinstall/app/create.js.map +1 -0
  37. package/{dist → lib}/commands/analytics/autoinstall/app/delete.d.ts +1 -1
  38. package/{dist → lib}/commands/analytics/autoinstall/app/delete.js +12 -5
  39. package/lib/commands/analytics/autoinstall/app/delete.js.map +1 -0
  40. package/{dist → lib}/commands/analytics/autoinstall/app/update.d.ts +3 -3
  41. package/{dist → lib}/commands/analytics/autoinstall/app/update.js +14 -7
  42. package/lib/commands/analytics/autoinstall/app/update.js.map +1 -0
  43. package/{dist → lib}/commands/analytics/autoinstall/display.d.ts +1 -1
  44. package/{dist → lib}/commands/analytics/autoinstall/display.js +15 -11
  45. package/lib/commands/analytics/autoinstall/display.js.map +1 -0
  46. package/{dist → lib}/commands/analytics/autoinstall/list.d.ts +1 -1
  47. package/{dist → lib}/commands/analytics/autoinstall/list.js +19 -12
  48. package/lib/commands/analytics/autoinstall/list.js.map +1 -0
  49. package/{dist → lib}/commands/analytics/dashboard/history/list.d.ts +1 -1
  50. package/{dist → lib}/commands/analytics/dashboard/history/list.js +11 -4
  51. package/lib/commands/analytics/dashboard/history/list.js.map +1 -0
  52. package/{dist/commands/analytics/lens → lib/commands/analytics/dashboard}/history/revert.d.ts +3 -3
  53. package/{dist → lib}/commands/analytics/dashboard/history/revert.js +11 -4
  54. package/lib/commands/analytics/dashboard/history/revert.js.map +1 -0
  55. package/{dist → lib}/commands/analytics/dashboard/list.d.ts +0 -0
  56. package/{dist → lib}/commands/analytics/dashboard/list.js +13 -6
  57. package/lib/commands/analytics/dashboard/list.js.map +1 -0
  58. package/{dist → lib}/commands/analytics/dashboard/update.d.ts +2 -2
  59. package/{dist → lib}/commands/analytics/dashboard/update.js +11 -2
  60. package/lib/commands/analytics/dashboard/update.js.map +1 -0
  61. package/{dist → lib}/commands/analytics/dataflow/history/list.d.ts +1 -1
  62. package/{dist → lib}/commands/analytics/dataflow/history/list.js +11 -4
  63. package/lib/commands/analytics/dataflow/history/list.js.map +1 -0
  64. package/{dist → lib}/commands/analytics/dataflow/history/revert.d.ts +3 -3
  65. package/{dist → lib}/commands/analytics/dataflow/history/revert.js +11 -4
  66. package/lib/commands/analytics/dataflow/history/revert.js.map +1 -0
  67. package/{dist → lib}/commands/analytics/dataflow/list.d.ts +1 -0
  68. package/{dist → lib}/commands/analytics/dataflow/list.js +15 -7
  69. package/lib/commands/analytics/dataflow/list.js.map +1 -0
  70. package/{dist/commands/analytics/template → lib/commands/analytics/dataset}/display.d.ts +3 -3
  71. package/lib/commands/analytics/dataset/display.js +95 -0
  72. package/lib/commands/analytics/dataset/display.js.map +1 -0
  73. package/lib/commands/analytics/dataset/list.d.ts +18 -0
  74. package/lib/commands/analytics/dataset/list.js +45 -0
  75. package/lib/commands/analytics/dataset/list.js.map +1 -0
  76. package/lib/commands/analytics/dataset/rows/fetch.d.ts +16 -0
  77. package/lib/commands/analytics/dataset/rows/fetch.js +119 -0
  78. package/lib/commands/analytics/dataset/rows/fetch.js.map +1 -0
  79. package/{dist → lib}/commands/analytics/enable.d.ts +0 -0
  80. package/{dist → lib}/commands/analytics/enable.js +12 -5
  81. package/lib/commands/analytics/enable.js.map +1 -0
  82. package/{dist → lib}/commands/analytics/lens/history/list.d.ts +1 -1
  83. package/{dist → lib}/commands/analytics/lens/history/list.js +11 -4
  84. package/lib/commands/analytics/lens/history/list.js.map +1 -0
  85. package/{dist/commands/analytics/dashboard → lib/commands/analytics/lens}/history/revert.d.ts +3 -3
  86. package/{dist → lib}/commands/analytics/lens/history/revert.js +11 -4
  87. package/lib/commands/analytics/lens/history/revert.js.map +1 -0
  88. package/{dist → lib}/commands/analytics/lens/list.d.ts +1 -0
  89. package/{dist → lib}/commands/analytics/lens/list.js +15 -7
  90. package/lib/commands/analytics/lens/list.js.map +1 -0
  91. package/lib/commands/analytics/query.d.ts +20 -0
  92. package/lib/commands/analytics/query.js +125 -0
  93. package/lib/commands/analytics/query.js.map +1 -0
  94. package/{dist → lib}/commands/analytics/template/create.d.ts +3 -1
  95. package/{dist → lib}/commands/analytics/template/create.js +25 -5
  96. package/lib/commands/analytics/template/create.js.map +1 -0
  97. package/{dist → lib}/commands/analytics/template/delete.d.ts +1 -1
  98. package/{dist → lib}/commands/analytics/template/delete.js +14 -7
  99. package/lib/commands/analytics/template/delete.js.map +1 -0
  100. package/lib/commands/analytics/template/display.d.ts +13 -0
  101. package/{dist → lib}/commands/analytics/template/display.js +7 -4
  102. package/lib/commands/analytics/template/display.js.map +1 -0
  103. package/{dist → lib}/commands/analytics/template/list.d.ts +1 -1
  104. package/{dist → lib}/commands/analytics/template/list.js +12 -5
  105. package/lib/commands/analytics/template/list.js.map +1 -0
  106. package/{dist → lib}/commands/analytics/template/update.d.ts +9 -4
  107. package/{dist → lib}/commands/analytics/template/update.js +25 -12
  108. package/lib/commands/analytics/template/update.js.map +1 -0
  109. package/{dist → lib}/commands/analytics.d.ts +1 -2
  110. package/{dist → lib}/commands/analytics.js +16 -18
  111. package/lib/commands/analytics.js.map +1 -0
  112. package/lib/index.d.ts +2 -0
  113. package/lib/index.js +9 -0
  114. package/lib/index.js.map +1 -0
  115. package/{dist → lib}/lib/analytics/app/folder.d.ts +4 -6
  116. package/{dist → lib}/lib/analytics/app/folder.js +7 -14
  117. package/lib/lib/analytics/app/folder.js.map +1 -0
  118. package/{dist → lib}/lib/analytics/autoinstall/autoinstall.d.ts +24 -4
  119. package/{dist → lib}/lib/analytics/autoinstall/autoinstall.js +7 -16
  120. package/lib/lib/analytics/autoinstall/autoinstall.js.map +1 -0
  121. package/{dist → lib}/lib/analytics/constants.d.ts +0 -0
  122. package/{dist → lib}/lib/analytics/constants.js +1 -0
  123. package/lib/lib/analytics/constants.js.map +1 -0
  124. package/{dist → lib}/lib/analytics/dashboard/dashboard.d.ts +0 -1
  125. package/{dist → lib}/lib/analytics/dashboard/dashboard.js +5 -12
  126. package/lib/lib/analytics/dashboard/dashboard.js.map +1 -0
  127. package/{dist → lib}/lib/analytics/dataflow/dataflow.d.ts +1 -1
  128. package/{dist → lib}/lib/analytics/dataflow/dataflow.js +2 -15
  129. package/lib/lib/analytics/dataflow/dataflow.js.map +1 -0
  130. package/lib/lib/analytics/dataset/dataset.d.ts +71 -0
  131. package/lib/lib/analytics/dataset/dataset.js +82 -0
  132. package/lib/lib/analytics/dataset/dataset.js.map +1 -0
  133. package/{dist → lib}/lib/analytics/event/waveAssetEvent.d.ts +0 -0
  134. package/{dist → lib}/lib/analytics/event/waveAssetEvent.js +6 -0
  135. package/lib/lib/analytics/event/waveAssetEvent.js.map +1 -0
  136. package/{dist → lib}/lib/analytics/lens/lens.d.ts +1 -1
  137. package/{dist → lib}/lib/analytics/lens/lens.js +3 -10
  138. package/lib/lib/analytics/lens/lens.js.map +1 -0
  139. package/{dist → lib}/lib/analytics/publisher/publisher.d.ts +0 -1
  140. package/{dist → lib}/lib/analytics/publisher/publisher.js +7 -20
  141. package/lib/lib/analytics/publisher/publisher.js.map +1 -0
  142. package/lib/lib/analytics/query/query.d.ts +165 -0
  143. package/lib/lib/analytics/query/query.js +258 -0
  144. package/lib/lib/analytics/query/query.js.map +1 -0
  145. package/{dist → lib}/lib/analytics/request.d.ts +5 -4
  146. package/{dist → lib}/lib/analytics/request.js +32 -3
  147. package/lib/lib/analytics/request.js.map +1 -0
  148. package/{dist → lib}/lib/analytics/template/wavetemplate.d.ts +12 -8
  149. package/{dist → lib}/lib/analytics/template/wavetemplate.js +20 -31
  150. package/lib/lib/analytics/template/wavetemplate.js.map +1 -0
  151. package/{dist → lib}/lib/analytics/utils.d.ts +3 -1
  152. package/{dist → lib}/lib/analytics/utils.js +16 -1
  153. package/lib/lib/analytics/utils.js.map +1 -0
  154. package/messages/app.json +36 -34
  155. package/messages/asset.json +14 -14
  156. package/messages/autoinstall.json +41 -41
  157. package/messages/dashboard.json +13 -13
  158. package/messages/dataflow.json +3 -3
  159. package/messages/dataset.json +16 -0
  160. package/messages/history.json +9 -9
  161. package/messages/lens.json +4 -4
  162. package/messages/query.json +24 -0
  163. package/messages/template.json +33 -27
  164. package/oclif.manifest.json +1 -0
  165. package/package.json +105 -55
  166. package/.oclif.manifest.json +0 -1
  167. package/dist/commands/analytics/app/create.js.map +0 -1
  168. package/dist/commands/analytics/app/decouple.js.map +0 -1
  169. package/dist/commands/analytics/app/delete.js.map +0 -1
  170. package/dist/commands/analytics/app/display.js.map +0 -1
  171. package/dist/commands/analytics/app/list.js.map +0 -1
  172. package/dist/commands/analytics/app/update.js.map +0 -1
  173. package/dist/commands/analytics/asset/publisher/create.js.map +0 -1
  174. package/dist/commands/analytics/asset/publisher/delete.js.map +0 -1
  175. package/dist/commands/analytics/asset/publisher/deleteall.js.map +0 -1
  176. package/dist/commands/analytics/asset/publisher/list.js.map +0 -1
  177. package/dist/commands/analytics/autoinstall/app/create.js.map +0 -1
  178. package/dist/commands/analytics/autoinstall/app/delete.js.map +0 -1
  179. package/dist/commands/analytics/autoinstall/app/update.js.map +0 -1
  180. package/dist/commands/analytics/autoinstall/display.js.map +0 -1
  181. package/dist/commands/analytics/autoinstall/list.js.map +0 -1
  182. package/dist/commands/analytics/dashboard/history/list.js.map +0 -1
  183. package/dist/commands/analytics/dashboard/history/revert.js.map +0 -1
  184. package/dist/commands/analytics/dashboard/list.js.map +0 -1
  185. package/dist/commands/analytics/dashboard/update.js.map +0 -1
  186. package/dist/commands/analytics/dataflow/history/list.js.map +0 -1
  187. package/dist/commands/analytics/dataflow/history/revert.js.map +0 -1
  188. package/dist/commands/analytics/dataflow/list.js.map +0 -1
  189. package/dist/commands/analytics/enable.js.map +0 -1
  190. package/dist/commands/analytics/lens/history/list.js.map +0 -1
  191. package/dist/commands/analytics/lens/history/revert.js.map +0 -1
  192. package/dist/commands/analytics/lens/list.js.map +0 -1
  193. package/dist/commands/analytics/template/create.js.map +0 -1
  194. package/dist/commands/analytics/template/delete.js.map +0 -1
  195. package/dist/commands/analytics/template/display.js.map +0 -1
  196. package/dist/commands/analytics/template/list.js.map +0 -1
  197. package/dist/commands/analytics/template/update.js.map +0 -1
  198. package/dist/commands/analytics.js.map +0 -1
  199. package/dist/lib/analytics/app/folder.js.map +0 -1
  200. package/dist/lib/analytics/autoinstall/autoinstall.js.map +0 -1
  201. package/dist/lib/analytics/constants.js.map +0 -1
  202. package/dist/lib/analytics/dashboard/dashboard.js.map +0 -1
  203. package/dist/lib/analytics/dataflow/dataflow.js.map +0 -1
  204. package/dist/lib/analytics/event/waveAssetEvent.js.map +0 -1
  205. package/dist/lib/analytics/lens/lens.js.map +0 -1
  206. package/dist/lib/analytics/publisher/publisher.js.map +0 -1
  207. package/dist/lib/analytics/request.js.map +0 -1
  208. package/dist/lib/analytics/template/wavetemplate.js.map +0 -1
  209. package/dist/lib/analytics/utils.js.map +0 -1
  210. package/dist/test/commands/app/create.test.d.ts +0 -1
  211. package/dist/test/commands/app/create.test.js +0 -269
  212. package/dist/test/commands/app/create.test.js.map +0 -1
  213. package/dist/test/commands/app/decouple.test.d.ts +0 -1
  214. package/dist/test/commands/app/decouple.test.js +0 -22
  215. package/dist/test/commands/app/decouple.test.js.map +0 -1
  216. package/dist/test/commands/app/delete.test.d.ts +0 -1
  217. package/dist/test/commands/app/delete.test.js +0 -24
  218. package/dist/test/commands/app/delete.test.js.map +0 -1
  219. package/dist/test/commands/app/display.test.d.ts +0 -1
  220. package/dist/test/commands/app/display.test.js +0 -171
  221. package/dist/test/commands/app/display.test.js.map +0 -1
  222. package/dist/test/commands/app/list.test.d.ts +0 -1
  223. package/dist/test/commands/app/list.test.js +0 -103
  224. package/dist/test/commands/app/list.test.js.map +0 -1
  225. package/dist/test/commands/app/update.test.d.ts +0 -1
  226. package/dist/test/commands/app/update.test.js +0 -21
  227. package/dist/test/commands/app/update.test.js.map +0 -1
  228. package/dist/test/commands/asset/publisher/create.test.d.ts +0 -1
  229. package/dist/test/commands/asset/publisher/create.test.js +0 -21
  230. package/dist/test/commands/asset/publisher/create.test.js.map +0 -1
  231. package/dist/test/commands/asset/publisher/deleteall.test.d.ts +0 -1
  232. package/dist/test/commands/asset/publisher/deleteall.test.js +0 -24
  233. package/dist/test/commands/asset/publisher/deleteall.test.js.map +0 -1
  234. package/dist/test/commands/asset/publisher/list.test.d.ts +0 -1
  235. package/dist/test/commands/asset/publisher/list.test.js +0 -34
  236. package/dist/test/commands/asset/publisher/list.test.js.map +0 -1
  237. package/dist/test/commands/autoinstall/app/create.test.d.ts +0 -1
  238. package/dist/test/commands/autoinstall/app/create.test.js +0 -153
  239. package/dist/test/commands/autoinstall/app/create.test.js.map +0 -1
  240. package/dist/test/commands/autoinstall/app/delete.test.d.ts +0 -1
  241. package/dist/test/commands/autoinstall/app/delete.test.js +0 -153
  242. package/dist/test/commands/autoinstall/app/delete.test.js.map +0 -1
  243. package/dist/test/commands/autoinstall/app/update.test.d.ts +0 -1
  244. package/dist/test/commands/autoinstall/app/update.test.js +0 -153
  245. package/dist/test/commands/autoinstall/app/update.test.js.map +0 -1
  246. package/dist/test/commands/autoinstall/list.test.d.ts +0 -1
  247. package/dist/test/commands/autoinstall/list.test.js +0 -42
  248. package/dist/test/commands/autoinstall/list.test.js.map +0 -1
  249. package/dist/test/commands/dashboard/history/list.test.d.ts +0 -1
  250. package/dist/test/commands/dashboard/history/list.test.js +0 -33
  251. package/dist/test/commands/dashboard/history/list.test.js.map +0 -1
  252. package/dist/test/commands/dashboard/history/revert.test.d.ts +0 -1
  253. package/dist/test/commands/dashboard/history/revert.test.js +0 -22
  254. package/dist/test/commands/dashboard/history/revert.test.js.map +0 -1
  255. package/dist/test/commands/dashboard/list.test.d.ts +0 -1
  256. package/dist/test/commands/dashboard/list.test.js +0 -33
  257. package/dist/test/commands/dashboard/list.test.js.map +0 -1
  258. package/dist/test/commands/dashboard/update.test.d.ts +0 -1
  259. package/dist/test/commands/dashboard/update.test.js +0 -44
  260. package/dist/test/commands/dashboard/update.test.js.map +0 -1
  261. package/dist/test/commands/dataflow/history/list.test.d.ts +0 -1
  262. package/dist/test/commands/dataflow/history/list.test.js +0 -33
  263. package/dist/test/commands/dataflow/history/list.test.js.map +0 -1
  264. package/dist/test/commands/dataflow/history/revert.test.d.ts +0 -1
  265. package/dist/test/commands/dataflow/history/revert.test.js +0 -22
  266. package/dist/test/commands/dataflow/history/revert.test.js.map +0 -1
  267. package/dist/test/commands/dataflow/list.test.d.ts +0 -1
  268. package/dist/test/commands/dataflow/list.test.js +0 -32
  269. package/dist/test/commands/dataflow/list.test.js.map +0 -1
  270. package/dist/test/commands/enable.test.d.ts +0 -1
  271. package/dist/test/commands/enable.test.js +0 -156
  272. package/dist/test/commands/enable.test.js.map +0 -1
  273. package/dist/test/commands/lens/history/list.test.d.ts +0 -1
  274. package/dist/test/commands/lens/history/list.test.js +0 -33
  275. package/dist/test/commands/lens/history/list.test.js.map +0 -1
  276. package/dist/test/commands/lens/history/revert.test.d.ts +0 -1
  277. package/dist/test/commands/lens/history/revert.test.js +0 -22
  278. package/dist/test/commands/lens/history/revert.test.js.map +0 -1
  279. package/dist/test/commands/lens/list.test.d.ts +0 -1
  280. package/dist/test/commands/lens/list.test.js +0 -32
  281. package/dist/test/commands/lens/list.test.js.map +0 -1
  282. package/dist/test/commands/template/create.test.d.ts +0 -1
  283. package/dist/test/commands/template/create.test.js +0 -21
  284. package/dist/test/commands/template/create.test.js.map +0 -1
  285. package/dist/test/commands/template/delete.test.d.ts +0 -1
  286. package/dist/test/commands/template/delete.test.js +0 -139
  287. package/dist/test/commands/template/delete.test.js.map +0 -1
  288. package/dist/test/commands/template/display.test.d.ts +0 -1
  289. package/dist/test/commands/template/display.test.js +0 -56
  290. package/dist/test/commands/template/display.test.js.map +0 -1
  291. package/dist/test/commands/template/list.test.d.ts +0 -1
  292. package/dist/test/commands/template/list.test.js +0 -73
  293. package/dist/test/commands/template/list.test.js.map +0 -1
  294. package/dist/test/commands/template/update.test.d.ts +0 -1
  295. package/dist/test/commands/template/update.test.js +0 -82
  296. package/dist/test/commands/template/update.test.js.map +0 -1
@@ -0,0 +1,82 @@
1
+ "use strict";
2
+ /*
3
+ * Copyright (c) 2021, salesforce.com, inc.
4
+ * All rights reserved.
5
+ * Licensed under the BSD 3-Clause license.
6
+ * For full license text, see LICENSE.txt file in the repo root or https://opensource.org/licenses/BSD-3-Clause
7
+ */
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.fetchFieldNames = void 0;
10
+ const core_1 = require("@salesforce/core");
11
+ const request_1 = require("../request");
12
+ class DatasetSvc {
13
+ constructor(connection) {
14
+ this.connection = connection;
15
+ this.datasetsUrl = `${this.connection.baseUrl()}/wave/datasets`;
16
+ }
17
+ list() {
18
+ return request_1.fetchAllPages(this.connection, this.datasetsUrl, 'datasets');
19
+ }
20
+ async fetch(idOrApiName) {
21
+ const response = await request_1.connectRequest(this.connection, this.datasetsUrl + '/' + encodeURIComponent(idOrApiName));
22
+ if (response) {
23
+ return response;
24
+ }
25
+ else {
26
+ throw new core_1.SfdxError('Missing response');
27
+ }
28
+ }
29
+ async fetchXmd(idOrApiName, versionId, xmdType = 'main') {
30
+ const xmd = await request_1.connectRequest(this.connection, this.datasetsUrl +
31
+ '/' +
32
+ encodeURIComponent(idOrApiName) +
33
+ '/versions/' +
34
+ encodeURIComponent(versionId) +
35
+ `/xmds/${xmdType}`);
36
+ if (xmd) {
37
+ return xmd;
38
+ }
39
+ else {
40
+ throw new core_1.SfdxError('Missing response');
41
+ }
42
+ }
43
+ /** Fetch the queryable field names from the specified dataset version */
44
+ async fetchFieldNames(idOrApiName, versionId) {
45
+ const xmd = await this.fetchXmd(idOrApiName, versionId, 'main');
46
+ return fetchFieldNames(xmd);
47
+ }
48
+ /** Fetch the field names for the specified external connector dataset. */
49
+ async fetchLiveDatasetFieldNames(connectorIdOrApiName, sourceObjectName) {
50
+ const { fields } = await request_1.connectRequest(this.connection, `${this.connection.baseUrl()}/wave/dataConnectors/${encodeURIComponent(connectorIdOrApiName)}/sourceObjects/${encodeURIComponent(sourceObjectName)}/fields`);
51
+ if (Array.isArray(fields)) {
52
+ return fields.map(f => f.name).filter(n => !!n);
53
+ }
54
+ else {
55
+ throw new core_1.SfdxError(`Missing fields for ${connectorIdOrApiName}/${sourceObjectName}`);
56
+ }
57
+ }
58
+ }
59
+ exports.default = DatasetSvc;
60
+ /** Fetch the queryable field names from the specified xmd. */
61
+ function fetchFieldNames(xmd) {
62
+ var _a, _b, _c;
63
+ const fieldsFromDates = (_a = xmd.dates) === null || _a === void 0 ? void 0 : _a.map(d => d.fields);
64
+ const fieldNames = [];
65
+ [...(((_b = xmd.dimensions) === null || _b === void 0 ? void 0 : _b.map(dim => dim.field)) || []), ...(((_c = xmd.measures) === null || _c === void 0 ? void 0 : _c.map(measure => measure.field)) || [])].forEach(fieldName => {
66
+ if (!fieldName) {
67
+ return;
68
+ }
69
+ // it's the original field
70
+ if (fieldsFromDates === null || fieldsFromDates === void 0 ? void 0 : fieldsFromDates.map(d => d === null || d === void 0 ? void 0 : d.fullField).includes(fieldName)) {
71
+ fieldNames.push(fieldName);
72
+ return;
73
+ }
74
+ const isDerived = fieldsFromDates === null || fieldsFromDates === void 0 ? void 0 : fieldsFromDates.some(d => d && Object.values(d).includes(fieldName));
75
+ if (!isDerived) {
76
+ fieldNames.push(fieldName);
77
+ }
78
+ });
79
+ return fieldNames;
80
+ }
81
+ exports.fetchFieldNames = fetchFieldNames;
82
+ //# sourceMappingURL=dataset.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dataset.js","sourceRoot":"","sources":["../../../../src/lib/analytics/dataset/dataset.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,10 @@
1
1
  "use strict";
2
+ /*
3
+ * Copyright (c) 2021, salesforce.com, inc.
4
+ * All rights reserved.
5
+ * Licensed under the BSD 3-Clause license.
6
+ * For full license text, see LICENSE.txt file in the repo root or https://opensource.org/licenses/BSD-3-Clause
7
+ */
2
8
  Object.defineProperty(exports, "__esModule", { value: true });
3
9
  const ts_types_1 = require("@salesforce/ts-types");
4
10
  class WaveAssetEvent {
@@ -0,0 +1 @@
1
+ {"version":3,"file":"waveAssetEvent.js","sourceRoot":"","sources":["../../../../src/lib/analytics/event/waveAssetEvent.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;AAEH,mDAA+D;AAE/D,MAAqB,cAAc;IAYjC,YAAmB,KAAc;QAC/B,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,cAAG,CAAC,KAAK,EAAE,iBAAiB,CAAC,CAAC,CAAC;QACrD,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,cAAG,CAAC,KAAK,EAAE,gBAAgB,CAAC,CAAC,CAAC;QACnD,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,cAAG,CAAC,KAAK,EAAE,mBAAmB,CAAC,CAAC,CAAC;QACzD,IAAI,CAAC,KAAK,GAAG,oBAAS,CAAC,KAAK,EAAE,eAAe,CAAC,IAAI,CAAC,CAAC;QACpD,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,cAAG,CAAC,KAAK,EAAE,kBAAkB,CAAC,CAAC,CAAC;QACvD,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,cAAG,CAAC,KAAK,EAAE,gBAAgB,CAAC,CAAC,CAAC;QACnD,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,cAAG,CAAC,KAAK,EAAE,uBAAuB,CAAC,CAAC,CAAC;QAC7D,IAAI,CAAC,KAAK,GAAG,oBAAS,CAAC,KAAK,EAAE,eAAe,CAAC,IAAI,CAAC,CAAC;QACpD,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,cAAG,CAAC,KAAK,EAAE,kBAAkB,CAAC,CAAC,CAAC;QACnD,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,cAAG,CAAC,KAAK,EAAE,mBAAmB,CAAC,CAAC,CAAC;IACvD,CAAC;CACF;AAxBD,iCAwBC"}
@@ -7,6 +7,7 @@ export declare type LensHistoryType = {
7
7
  export declare type LensType = {
8
8
  id?: string;
9
9
  name?: string;
10
+ namespace?: string;
10
11
  label?: string;
11
12
  };
12
13
  export default class Lens {
@@ -16,5 +17,4 @@ export default class Lens {
16
17
  list(): Promise<LensType[]>;
17
18
  getHistories(lensId: string): Promise<LensHistoryType[]>;
18
19
  revertToHistory(lensId: string, historyId: string, historyLabel?: string): Promise<string | undefined>;
19
- private throwError;
20
20
  }
@@ -3,12 +3,11 @@
3
3
  * Copyright (c) 2016, salesforce.com, inc.
4
4
  * All rights reserved.
5
5
  * Licensed under the BSD 3-Clause license.
6
- * For full license text, see LICENSE.txt file in the repo root or https://opensource.org/licenses/BSD-3-Clause
6
+ * For full license text, see LICENSE.txt file in the repo root or https://opensource.org/licenses/BSD-3-Clause
7
7
  */
8
8
  Object.defineProperty(exports, "__esModule", { value: true });
9
- const core_1 = require("@salesforce/core");
10
- const _ = require("lodash");
11
9
  const request_1 = require("../request");
10
+ const utils_1 = require("../utils");
12
11
  class Lens {
13
12
  constructor(organization) {
14
13
  this.connection = organization.getConnection();
@@ -38,15 +37,9 @@ class Lens {
38
37
  return (_a = response.asset) === null || _a === void 0 ? void 0 : _a.id;
39
38
  }
40
39
  else {
41
- this.throwError(response);
40
+ utils_1.throwError(response);
42
41
  }
43
42
  }
44
- throwError(response) {
45
- // For Gacks, the error message is on response.body[0].message but for handled errors
46
- // the error message is on response.body.Errors[0].description.
47
- const errMessage = _.get(response, 'Errors[0].description') || _.get(response, '[0].message') || 'Unknown Error';
48
- throw new core_1.SfdxError(errMessage);
49
- }
50
43
  }
51
44
  exports.default = Lens;
52
45
  //# sourceMappingURL=lens.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lens.js","sourceRoot":"","sources":["../../../../src/lib/analytics/lens/lens.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;AAGH,wCAA2D;AAC3D,oCAAsC;AAuBtC,MAAqB,IAAI;IAIvB,YAAmB,YAAiB;QAClC,IAAI,CAAC,UAAU,GAAG,YAAY,CAAC,aAAa,EAAE,CAAC;QAC/C,IAAI,CAAC,SAAS,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,eAAe,CAAC;IAC/D,CAAC;IAEM,IAAI;QACT,OAAO,uBAAa,CAAW,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;IAC5E,CAAC;IAEM,YAAY,CAAC,MAAc;QAChC,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,GAAG,kBAAkB,CAAC,MAAM,CAAC,GAAG,YAAY,CAAC;QAC9E,yGAAyG;QACzG,+GAA+G;QAC/G,OAAO,uBAAa,CAAkB,IAAI,CAAC,UAAU,EAAE,UAAU,EAAE,WAAW,CAAC,CAAC;IAClF,CAAC;IAEM,KAAK,CAAC,eAAe,CAAC,MAAc,EAAE,SAAiB,EAAE,YAAqB;;QACnF,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,GAAG,kBAAkB,CAAC,MAAM,CAAC,GAAG,SAAS,CAAC;QAC1E,MAAM,QAAQ,GAAG,MAAM,wBAAc,CAAiB,IAAI,CAAC,UAAU,EAAE;YACrE,MAAM,EAAE,KAAK;YACb,GAAG,EAAE,SAAS;YACd,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;gBACnB,SAAS;gBACT,YAAY;aACb,CAAC;SACH,CAAC,CAAC;QAEH,IAAI,QAAQ,EAAE;YACZ,OAAO,MAAA,QAAQ,CAAC,KAAK,0CAAE,EAAE,CAAC;SAC3B;aAAM;YACL,kBAAU,CAAC,QAAQ,CAAC,CAAC;SACtB;IACH,CAAC;CACF;AArCD,uBAqCC"}
@@ -16,5 +16,4 @@ export default class Publisher {
16
16
  list(assetId: string): Promise<PublisherType[] | undefined>;
17
17
  deleteAll(assetId: string): Promise<void>;
18
18
  delete(assetId: string, id: string): Promise<void>;
19
- private throwError;
20
19
  }
@@ -1,14 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- /*
4
- * Copyright (c) 2016, salesforce.com, inc.
5
- * All rights reserved.
6
- * Licensed under the BSD 3-Clause license.
7
- * For full license text, see LICENSE.txt file in the repo root or https://opensource.org/licenses/BSD-3-Clause
8
- */
9
- const core_1 = require("@salesforce/core");
10
- const _ = require("lodash");
11
3
  const request_1 = require("../request");
4
+ const utils_1 = require("../utils");
12
5
  class Publisher {
13
6
  constructor(organization) {
14
7
  this.connection = organization.getConnection();
@@ -25,7 +18,7 @@ class Publisher {
25
18
  return response.id;
26
19
  }
27
20
  else {
28
- this.throwError(response);
21
+ utils_1.throwError(response);
29
22
  }
30
23
  }
31
24
  async list(assetId) {
@@ -37,27 +30,21 @@ class Publisher {
37
30
  return response.publishers;
38
31
  }
39
32
  else {
40
- this.throwError(response);
33
+ utils_1.throwError(response);
41
34
  }
42
35
  }
43
- async deleteAll(assetId) {
44
- await request_1.connectRequest(this.connection, {
36
+ deleteAll(assetId) {
37
+ return request_1.connectRequest(this.connection, {
45
38
  method: 'DELETE',
46
39
  url: this.publishersUrl + assetId + '/' + this.endpointName
47
40
  });
48
41
  }
49
- async delete(assetId, id) {
50
- await request_1.connectRequest(this.connection, {
42
+ delete(assetId, id) {
43
+ return request_1.connectRequest(this.connection, {
51
44
  method: 'DELETE',
52
45
  url: this.publishersUrl + encodeURIComponent(assetId) + '/' + this.endpointName + '/' + encodeURIComponent(id)
53
46
  });
54
47
  }
55
- throwError(response) {
56
- // For Gacks, the error message is on response.body[0].message but for handled errors
57
- // the error message is on response.body.Errors[0].description.
58
- const errMessage = _.get(response, 'Errors[0].description') || _.get(response, '[0].message') || 'Unknown Error';
59
- throw new core_1.SfdxError(errMessage);
60
- }
61
48
  }
62
49
  exports.default = Publisher;
63
50
  //# sourceMappingURL=publisher.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"publisher.js","sourceRoot":"","sources":["../../../../src/lib/analytics/publisher/publisher.ts"],"names":[],"mappings":";;AAOA,wCAA4C;AAC5C,oCAAsC;AAQtC,MAAqB,SAAS;IAK5B,YAAmB,YAAiB;QAClC,IAAI,CAAC,UAAU,GAAG,YAAY,CAAC,aAAa,EAAE,CAAC;QAC/C,IAAI,CAAC,aAAa,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,mBAAmB,CAAC;QACrE,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;IACnC,CAAC;IAEM,KAAK,CAAC,MAAM,CAAC,WAAmB;QACrC,MAAM,QAAQ,GAAG,MAAM,wBAAc,CAAgB,IAAI,CAAC,UAAU,EAAE;YACpE,MAAM,EAAE,MAAM;YACd,GAAG,EAAE,IAAI,CAAC,aAAa,GAAG,kBAAkB,CAAC,WAAW,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,YAAY;YACnF,IAAI,EAAE,IAAI;SACX,CAAC,CAAC;QACH,IAAI,QAAQ,EAAE;YACZ,OAAO,QAAQ,CAAC,EAAE,CAAC;SACpB;aAAM;YACL,kBAAU,CAAC,QAAQ,CAAC,CAAC;SACtB;IACH,CAAC;IAEM,KAAK,CAAC,IAAI,CAAC,OAAe;QAC/B,MAAM,QAAQ,GAAG,MAAM,wBAAc,CAAmC,IAAI,CAAC,UAAU,EAAE;YACvF,MAAM,EAAE,KAAK;YACb,GAAG,EAAE,IAAI,CAAC,aAAa,GAAG,kBAAkB,CAAC,OAAO,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,YAAY;SAChF,CAAC,CAAC;QACH,IAAI,QAAQ,EAAE;YACZ,OAAO,QAAQ,CAAC,UAAU,CAAC;SAC5B;aAAM;YACL,kBAAU,CAAC,QAAQ,CAAC,CAAC;SACtB;IACH,CAAC;IAEM,SAAS,CAAC,OAAe;QAC9B,OAAO,wBAAc,CAAC,IAAI,CAAC,UAAU,EAAE;YACrC,MAAM,EAAE,QAAQ;YAChB,GAAG,EAAE,IAAI,CAAC,aAAa,GAAG,OAAO,GAAG,GAAG,GAAG,IAAI,CAAC,YAAY;SAC5D,CAAC,CAAC;IACL,CAAC;IAEM,MAAM,CAAC,OAAe,EAAE,EAAU;QACvC,OAAO,wBAAc,CAAC,IAAI,CAAC,UAAU,EAAE;YACrC,MAAM,EAAE,QAAQ;YAChB,GAAG,EAAE,IAAI,CAAC,aAAa,GAAG,kBAAkB,CAAC,OAAO,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,YAAY,GAAG,GAAG,GAAG,kBAAkB,CAAC,EAAE,CAAC;SAC/G,CAAC,CAAC;IACL,CAAC;CACF;AAjDD,4BAiDC"}
@@ -0,0 +1,165 @@
1
+ import { flags, UX } from '@salesforce/command';
2
+ import { Connection } from '@salesforce/core';
3
+ export declare const LIMIT_FLAG: flags.Discriminated<flags.Number>;
4
+ export declare const RESULT_FORMAT_FLAG: flags.Discriminated<flags.Enum<string>>;
5
+ export declare const DRYRUN_FLAG: flags.Discriminated<flags.Boolean<boolean>>;
6
+ export declare type QueryLanguage = 'Saql' | 'Sql';
7
+ export declare type QueryRequest = {
8
+ query: string;
9
+ queryLanguage?: QueryLanguage;
10
+ timezone?: string;
11
+ };
12
+ declare type ExtraProps = Record<string, unknown>;
13
+ export declare type QueryResults = ExtraProps & {
14
+ metadata: SaqlMetadata[] | SqlMetadata[] | SqlLiveMetadata;
15
+ records: Row[];
16
+ };
17
+ export declare type QueryResponse = QueryResults | (ExtraProps & {
18
+ query: string;
19
+ responseId: string;
20
+ responseTime: number;
21
+ action: string;
22
+ results: QueryResults;
23
+ });
24
+ export declare type SaqlMetadata = ExtraProps & {
25
+ lineage: SaqlLineageNode;
26
+ queryLanguage?: 'SAQL' | string;
27
+ };
28
+ export declare type SaqlLineageNode = SaqlGroupNode | SaqlForeachNode | SaqlUnionNode;
29
+ export declare type SaqlGroup = ExtraProps & {
30
+ id: string;
31
+ datePart?: string;
32
+ };
33
+ export declare type SaqlGroupNode = ExtraProps & {
34
+ type: 'group';
35
+ groups: SaqlGroup[];
36
+ };
37
+ export declare type SaqlInput = ExtraProps & {
38
+ id: string;
39
+ function?: string;
40
+ };
41
+ declare type SaqlField = ExtraProps & {
42
+ id: string;
43
+ type?: 'string' | 'numeric' | 'boolean' | 'date' | 'dateonly' | 'datetime' | 'unknown';
44
+ };
45
+ declare type SaqlProjection = ExtraProps & {
46
+ field: SaqlField;
47
+ inputs?: SaqlInput[];
48
+ };
49
+ export declare type SaqlForeachNode = ExtraProps & {
50
+ type: 'foreach';
51
+ projections: SaqlProjection[];
52
+ input?: SaqlLineageNode;
53
+ };
54
+ export declare type SaqlUnionNode = ExtraProps & {
55
+ type: 'union';
56
+ inputs: Array<SaqlForeachNode | SaqlUnionNode>;
57
+ };
58
+ export declare type SqlMetadata = ExtraProps & {
59
+ columns: Array<ExtraProps & {
60
+ columnLabel: string;
61
+ columnType: string;
62
+ }>;
63
+ queryLanguage?: 'SQL' | string;
64
+ };
65
+ export declare type SqlLiveMetadata = ExtraProps & {
66
+ columns: Array<ExtraProps & {
67
+ label: string;
68
+ type: string;
69
+ }>;
70
+ queryLanguage?: 'SQL' | string;
71
+ };
72
+ declare type SingleValue = number | string | boolean | null;
73
+ export declare type Row = {
74
+ [key: string]: SingleValue | SingleValue[];
75
+ };
76
+ /** A query request to an external data connector (e.g. Live Dataset). */
77
+ export declare type ExternalQueryRequest = {
78
+ query: string;
79
+ connectorIdOrApiName: string;
80
+ };
81
+ export default class QuerySvc {
82
+ private readonly connection;
83
+ private readonly queryUrl;
84
+ constructor(connection: Connection);
85
+ execute(query: QueryRequest): Promise<QueryResponse>;
86
+ /** Make a query against an external data connector (i.e. Live Dataset). */
87
+ executeExternal(query: ExternalQueryRequest): Promise<QueryResponse>;
88
+ /** Convert any datanames names in the SAQL query to the dataset id/currentVersionId format, using
89
+ * a {@link DatasetSvc} to fetch the datasets.
90
+ */
91
+ mapDatasetNames(query: string): Promise<string>;
92
+ computeColumnNames(response: QueryResponse): string[];
93
+ /** Run a query-ish sfdx command and possibly do some output
94
+ *
95
+ * @param query the query request
96
+ * @param ux the command UX, or undefined to do no output
97
+ * @param limit the max number of rows to output and return (undefined for all)
98
+ * @param resultforamt 'json', 'csv', or anything else for an sfdx table
99
+ * @return the query response
100
+ */
101
+ runQueryCommand(query: QueryRequest, params: {
102
+ ux?: UX;
103
+ limit?: number;
104
+ resultformat?: string;
105
+ dryrun?: false;
106
+ }): Promise<QueryResponse>;
107
+ runQueryCommand(query: QueryRequest, params: {
108
+ ux?: UX;
109
+ limit?: number;
110
+ resultformat?: string;
111
+ dryrun: true;
112
+ }): Promise<undefined>;
113
+ runQueryCommand(query: QueryRequest, { ux, limit, resultformat, dryrun }: {
114
+ ux?: UX;
115
+ limit?: number;
116
+ resultformat?: string;
117
+ dryrun: boolean;
118
+ }): Promise<QueryResponse | undefined>;
119
+ /** Run an external query-ish sfdx command and possibly do some output
120
+ *
121
+ * @param query the query request
122
+ * @param ux the command UX, or undefined to do no output
123
+ * @param limit the max number of rows to output and return (undefined for all)
124
+ * @param resultforamt 'json', 'csv', or anything else for an sfdx table
125
+ * @return the query response
126
+ */
127
+ runExternalQueryCommand(query: ExternalQueryRequest, params: {
128
+ ux?: UX;
129
+ limit?: number;
130
+ resultformat?: string;
131
+ dryrun?: false;
132
+ }): Promise<QueryResponse>;
133
+ runExternalQueryCommand(query: ExternalQueryRequest, params: {
134
+ ux?: UX;
135
+ limit?: number;
136
+ resultformat?: string;
137
+ dryrun: true;
138
+ }): Promise<undefined>;
139
+ runExternalQueryCommand(query: ExternalQueryRequest, { ux, limit, resultformat, dryrun }: {
140
+ ux?: UX;
141
+ limit?: number;
142
+ resultformat?: string;
143
+ dryrun: boolean;
144
+ }): Promise<QueryResponse | undefined>;
145
+ /** Process a query response, possibly doing some output.
146
+ *
147
+ * @param query the query request
148
+ * @param ux the command UX, or undefined to do no output
149
+ * @param limit the max number of rows to output and return (undefined for all)
150
+ * @param resultforamt 'json', 'csv', or anything else for an sfdx table
151
+ * @return the query response
152
+ */
153
+ private processQueryCommandResponse;
154
+ }
155
+ export declare function convertRowValue(value: unknown): string;
156
+ /** Convert any datanames names in the SAQL query to the dataset id/currentVersionId format.
157
+ *
158
+ * @param query the saql text.
159
+ * @param nameToRef function to map dataset name to "id/versionId" ref format, should throw an error if
160
+ * the dataset is unavailable.
161
+ */
162
+ export declare function mapDatasetNames(query: string, nameToRef: (name: string) => Promise<string>): Promise<string>;
163
+ /** Compute the set of columns names from the query response metadata. */
164
+ export declare function computeColumnNames(response: QueryResponse): string[];
165
+ export {};
@@ -0,0 +1,258 @@
1
+ "use strict";
2
+ /*
3
+ * Copyright (c) 2021, salesforce.com, inc.
4
+ * All rights reserved.
5
+ * Licensed under the BSD 3-Clause license.
6
+ * For full license text, see LICENSE.txt file in the repo root or https://opensource.org/licenses/BSD-3-Clause
7
+ */
8
+ var __importDefault = (this && this.__importDefault) || function (mod) {
9
+ return (mod && mod.__esModule) ? mod : { "default": mod };
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.computeColumnNames = exports.mapDatasetNames = exports.convertRowValue = exports.DRYRUN_FLAG = exports.RESULT_FORMAT_FLAG = exports.LIMIT_FLAG = void 0;
13
+ const command_1 = require("@salesforce/command");
14
+ const core_1 = require("@salesforce/core");
15
+ const dataset_1 = __importDefault(require("../dataset/dataset"));
16
+ const request_1 = require("../request");
17
+ core_1.Messages.importMessagesDirectory(__dirname);
18
+ const messages = core_1.Messages.loadMessages('@salesforce/analytics', 'query');
19
+ exports.LIMIT_FLAG = command_1.flags.number({
20
+ description: messages.getMessage('limitDescription'),
21
+ longDescription: messages.getMessage('limitLongDescription'),
22
+ min: 0
23
+ });
24
+ exports.RESULT_FORMAT_FLAG = command_1.flags.enum({
25
+ char: 'r',
26
+ description: messages.getMessage('resultformatDescription'),
27
+ longDescription: messages.getMessage('resultformatLongDescription'),
28
+ options: ['human', 'csv', 'json'],
29
+ default: 'human'
30
+ });
31
+ exports.DRYRUN_FLAG = command_1.flags.boolean({
32
+ hidden: true,
33
+ description: "Show the resulting query that would be executed, but don't run it",
34
+ default: false
35
+ });
36
+ class QuerySvc {
37
+ constructor(connection) {
38
+ this.connection = connection;
39
+ this.queryUrl = `${this.connection.baseUrl()}/wave/query`;
40
+ }
41
+ async execute(query) {
42
+ const response = await request_1.connectRequest(this.connection, {
43
+ method: 'POST',
44
+ url: this.queryUrl,
45
+ body: JSON.stringify(query)
46
+ });
47
+ if (response) {
48
+ return response;
49
+ }
50
+ else {
51
+ throw new core_1.SfdxError('Empty http response');
52
+ }
53
+ }
54
+ /** Make a query against an external data connector (i.e. Live Dataset). */
55
+ async executeExternal(query) {
56
+ const response = await request_1.connectRequest(this.connection, {
57
+ method: 'POST',
58
+ url: `${this.connection.baseUrl()}/wave/dataConnectors/${encodeURIComponent(query.connectorIdOrApiName)}/query`,
59
+ body: JSON.stringify({ query: query.query })
60
+ });
61
+ if (response) {
62
+ return response;
63
+ }
64
+ else {
65
+ throw new core_1.SfdxError('Empty http response');
66
+ }
67
+ }
68
+ /** Convert any datanames names in the SAQL query to the dataset id/currentVersionId format, using
69
+ * a {@link DatasetSvc} to fetch the datasets.
70
+ */
71
+ async mapDatasetNames(query) {
72
+ const dsSvc = new dataset_1.default(this.connection);
73
+ return mapDatasetNames(query, async (name) => {
74
+ let dataset;
75
+ try {
76
+ dataset = await dsSvc.fetch(name);
77
+ }
78
+ catch (error) {
79
+ const msg = error instanceof Error ? error.message : String(error);
80
+ throw new core_1.SfdxError(`Unable to fetch dataset ${name}: ${msg}`);
81
+ }
82
+ if (!dataset.currentVersionId) {
83
+ throw new core_1.SfdxError(`Dataset ${name} (${dataset.id}) does not have a current version id`);
84
+ }
85
+ return `${dataset.id}/${dataset.currentVersionId}`;
86
+ });
87
+ }
88
+ computeColumnNames(response) {
89
+ return computeColumnNames(response);
90
+ }
91
+ async runQueryCommand(query, { ux, limit, resultformat, dryrun = false }) {
92
+ if (dryrun) {
93
+ ux === null || ux === void 0 ? void 0 : ux.log(messages.getMessage('dryrunHeader'));
94
+ ux === null || ux === void 0 ? void 0 : ux.logJson(query);
95
+ return undefined;
96
+ }
97
+ return this.processQueryCommandResponse(await this.execute(query), { ux, limit, resultformat });
98
+ }
99
+ async runExternalQueryCommand(query, { ux, limit, resultformat, dryrun = false }) {
100
+ if (dryrun) {
101
+ ux === null || ux === void 0 ? void 0 : ux.log(messages.getMessage('dryrunHeader'));
102
+ ux === null || ux === void 0 ? void 0 : ux.log(query.query);
103
+ return undefined;
104
+ }
105
+ return this.processQueryCommandResponse(await this.executeExternal(query), { ux, limit, resultformat });
106
+ }
107
+ /** Process a query response, possibly doing some output.
108
+ *
109
+ * @param query the query request
110
+ * @param ux the command UX, or undefined to do no output
111
+ * @param limit the max number of rows to output and return (undefined for all)
112
+ * @param resultforamt 'json', 'csv', or anything else for an sfdx table
113
+ * @return the query response
114
+ */
115
+ processQueryCommandResponse(response, { ux, limit, resultformat }) {
116
+ const results = getQueryResults(response);
117
+ const records = results && Array.isArray(results === null || results === void 0 ? void 0 : results.records) ? results.records : [];
118
+ if (typeof limit === 'number' && limit >= 0 && records.length > limit) {
119
+ records.length = limit;
120
+ }
121
+ if (ux) {
122
+ if (resultformat === 'json') {
123
+ ux.logJson(response);
124
+ }
125
+ else {
126
+ const columnNames = this.computeColumnNames(response);
127
+ if (resultformat === 'csv') {
128
+ writeCsvLine(ux, columnNames);
129
+ records.forEach(record => {
130
+ const values = columnNames.map(columnName => record[columnName]);
131
+ writeCsvLine(ux, values);
132
+ });
133
+ }
134
+ else {
135
+ // resultformat === 'human', do a table
136
+ if (columnNames.length <= 0) {
137
+ ux.log(messages.getMessage('noResultsMesg'));
138
+ }
139
+ else {
140
+ ux.table(records, {
141
+ columns: columnNames.map(name => {
142
+ return {
143
+ key: name,
144
+ label: name,
145
+ format: convertRowValue
146
+ };
147
+ })
148
+ });
149
+ ux.styledHeader(messages.getMessage('rowsFound', [records.length]));
150
+ }
151
+ }
152
+ }
153
+ }
154
+ return response;
155
+ }
156
+ }
157
+ exports.default = QuerySvc;
158
+ function convertRowValue(value) {
159
+ return Array.isArray(value) ? '[' + value.join(',') + ']' : typeof value === 'string' ? value : String(value);
160
+ }
161
+ exports.convertRowValue = convertRowValue;
162
+ function writeCsvLine(ux, values, delim = ',') {
163
+ let line = '';
164
+ for (let i = 0; i < values.length; i++) {
165
+ if (i !== 0) {
166
+ line += delim;
167
+ }
168
+ if (values[i]) {
169
+ const value = convertRowValue(values[i]).replace(/"/g, '""');
170
+ if (value.indexOf(delim) >= 0 || value.indexOf('\n') >= 0) {
171
+ line += `"${value}"`;
172
+ }
173
+ else {
174
+ line += value;
175
+ }
176
+ }
177
+ }
178
+ ux.log(line);
179
+ }
180
+ const LOAD_RE = /load(\s+)"([^"]+)"/;
181
+ /** Convert any datanames names in the SAQL query to the dataset id/currentVersionId format.
182
+ *
183
+ * @param query the saql text.
184
+ * @param nameToRef function to map dataset name to "id/versionId" ref format, should throw an error if
185
+ * the dataset is unavailable.
186
+ */
187
+ async function mapDatasetNames(query, nameToRef) {
188
+ // go through each expression in the saql
189
+ const lines = query.split(';');
190
+ for (let i = 0, len = lines.length; i < len; i++) {
191
+ // see if it's a '... load "DatasetName"'
192
+ const matches = LOAD_RE.exec(lines[i]);
193
+ if (!matches || !matches[2]) {
194
+ continue;
195
+ }
196
+ // pull the dataset name from that
197
+ const name = matches[2];
198
+ // if it's not already of the "id/versionid" form, fetch the dataset and string sub
199
+ if (name.indexOf('/') < 0) {
200
+ const ref = await nameToRef(name);
201
+ lines[i] = lines[i].replace(matches[0], `load${matches[1]}"${ref}"`);
202
+ }
203
+ }
204
+ return lines.join(';');
205
+ }
206
+ exports.mapDatasetNames = mapDatasetNames;
207
+ function getQueryResults(response) {
208
+ return typeof response.metadata === 'object' || typeof response.records === 'object'
209
+ ? response
210
+ : response.results;
211
+ }
212
+ /** Compute the set of columns names from the query response metadata. */
213
+ function computeColumnNames(response) {
214
+ const names = new Set();
215
+ const results = getQueryResults(response);
216
+ if (results && Array.isArray(results === null || results === void 0 ? void 0 : results.metadata)) {
217
+ results.metadata.forEach((md) => {
218
+ var _a;
219
+ // SqlMetadata
220
+ if (Array.isArray(md === null || md === void 0 ? void 0 : md.columns)) {
221
+ md.columns.forEach((c) => {
222
+ if (c.columnLabel) {
223
+ names.add(c.columnLabel);
224
+ }
225
+ });
226
+ }
227
+ else if (Array.isArray((_a = md === null || md === void 0 ? void 0 : md.lineage) === null || _a === void 0 ? void 0 : _a.projections)) {
228
+ // SaqlMetadata
229
+ md.lineage.projections.forEach((p) => {
230
+ var _a;
231
+ if ((_a = p.field) === null || _a === void 0 ? void 0 : _a.id) {
232
+ let name = p.field.id;
233
+ const index = name.indexOf('.');
234
+ if (index >= 0) {
235
+ name = name.substring(index + 1);
236
+ }
237
+ names.add(name);
238
+ }
239
+ });
240
+ }
241
+ });
242
+ }
243
+ else if (typeof (results === null || results === void 0 ? void 0 : results.metadata) === 'object' && Array.isArray(results.metadata.columns)) {
244
+ // SqlLiveMetadata
245
+ results.metadata.columns.forEach((col) => {
246
+ if (col.label) {
247
+ names.add(col.label);
248
+ }
249
+ });
250
+ }
251
+ // if the metadata didn't match anything, just use the keys in the first result record
252
+ if (names.size <= 0 && results && Array.isArray(results.records) && results.records[0]) {
253
+ return Object.keys(results.records[0]);
254
+ }
255
+ return Array.from(names);
256
+ }
257
+ exports.computeColumnNames = computeColumnNames;
258
+ //# sourceMappingURL=query.js.map