@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.
- package/CHANGELOG.md +25 -0
- package/LICENSE.txt +12 -0
- package/README.md +356 -80
- package/{dist → lib}/commands/analytics/app/create.d.ts +7 -7
- package/{dist → lib}/commands/analytics/app/create.js +60 -42
- package/lib/commands/analytics/app/create.js.map +1 -0
- package/{dist → lib}/commands/analytics/app/decouple.d.ts +2 -2
- package/{dist → lib}/commands/analytics/app/decouple.js +11 -2
- package/lib/commands/analytics/app/decouple.js.map +1 -0
- package/{dist → lib}/commands/analytics/app/delete.d.ts +2 -2
- package/{dist → lib}/commands/analytics/app/delete.js +12 -5
- package/lib/commands/analytics/app/delete.js.map +1 -0
- package/{dist → lib}/commands/analytics/app/display.d.ts +1 -1
- package/{dist → lib}/commands/analytics/app/display.js +14 -9
- package/lib/commands/analytics/app/display.js.map +1 -0
- package/{dist → lib}/commands/analytics/app/list.d.ts +5 -4
- package/{dist → lib}/commands/analytics/app/list.js +14 -7
- package/lib/commands/analytics/app/list.js.map +1 -0
- package/{dist → lib}/commands/analytics/app/update.d.ts +2 -2
- package/{dist → lib}/commands/analytics/app/update.js +11 -2
- package/lib/commands/analytics/app/update.js.map +1 -0
- package/{dist → lib}/commands/analytics/asset/publisher/create.d.ts +1 -1
- package/{dist → lib}/commands/analytics/asset/publisher/create.js +11 -4
- package/lib/commands/analytics/asset/publisher/create.js.map +1 -0
- package/{dist → lib}/commands/analytics/asset/publisher/delete.d.ts +2 -3
- package/{dist → lib}/commands/analytics/asset/publisher/delete.js +12 -8
- package/lib/commands/analytics/asset/publisher/delete.js.map +1 -0
- package/{dist → lib}/commands/analytics/asset/publisher/deleteall.d.ts +2 -2
- package/{dist → lib}/commands/analytics/asset/publisher/deleteall.js +12 -5
- package/lib/commands/analytics/asset/publisher/deleteall.js.map +1 -0
- package/{dist → lib}/commands/analytics/asset/publisher/list.d.ts +1 -1
- package/{dist → lib}/commands/analytics/asset/publisher/list.js +13 -6
- package/lib/commands/analytics/asset/publisher/list.js.map +1 -0
- package/{dist → lib}/commands/analytics/autoinstall/app/create.d.ts +3 -3
- package/{dist → lib}/commands/analytics/autoinstall/app/create.js +15 -7
- package/lib/commands/analytics/autoinstall/app/create.js.map +1 -0
- package/{dist → lib}/commands/analytics/autoinstall/app/delete.d.ts +1 -1
- package/{dist → lib}/commands/analytics/autoinstall/app/delete.js +12 -5
- package/lib/commands/analytics/autoinstall/app/delete.js.map +1 -0
- package/{dist → lib}/commands/analytics/autoinstall/app/update.d.ts +3 -3
- package/{dist → lib}/commands/analytics/autoinstall/app/update.js +14 -7
- package/lib/commands/analytics/autoinstall/app/update.js.map +1 -0
- package/{dist → lib}/commands/analytics/autoinstall/display.d.ts +1 -1
- package/{dist → lib}/commands/analytics/autoinstall/display.js +15 -11
- package/lib/commands/analytics/autoinstall/display.js.map +1 -0
- package/{dist → lib}/commands/analytics/autoinstall/list.d.ts +1 -1
- package/{dist → lib}/commands/analytics/autoinstall/list.js +19 -12
- package/lib/commands/analytics/autoinstall/list.js.map +1 -0
- package/{dist → lib}/commands/analytics/dashboard/history/list.d.ts +1 -1
- package/{dist → lib}/commands/analytics/dashboard/history/list.js +11 -4
- package/lib/commands/analytics/dashboard/history/list.js.map +1 -0
- package/{dist/commands/analytics/lens → lib/commands/analytics/dashboard}/history/revert.d.ts +3 -3
- package/{dist → lib}/commands/analytics/dashboard/history/revert.js +11 -4
- package/lib/commands/analytics/dashboard/history/revert.js.map +1 -0
- package/{dist → lib}/commands/analytics/dashboard/list.d.ts +0 -0
- package/{dist → lib}/commands/analytics/dashboard/list.js +13 -6
- package/lib/commands/analytics/dashboard/list.js.map +1 -0
- package/{dist → lib}/commands/analytics/dashboard/update.d.ts +2 -2
- package/{dist → lib}/commands/analytics/dashboard/update.js +11 -2
- package/lib/commands/analytics/dashboard/update.js.map +1 -0
- package/{dist → lib}/commands/analytics/dataflow/history/list.d.ts +1 -1
- package/{dist → lib}/commands/analytics/dataflow/history/list.js +11 -4
- package/lib/commands/analytics/dataflow/history/list.js.map +1 -0
- package/{dist → lib}/commands/analytics/dataflow/history/revert.d.ts +3 -3
- package/{dist → lib}/commands/analytics/dataflow/history/revert.js +11 -4
- package/lib/commands/analytics/dataflow/history/revert.js.map +1 -0
- package/{dist → lib}/commands/analytics/dataflow/list.d.ts +1 -0
- package/{dist → lib}/commands/analytics/dataflow/list.js +15 -7
- package/lib/commands/analytics/dataflow/list.js.map +1 -0
- package/{dist/commands/analytics/template → lib/commands/analytics/dataset}/display.d.ts +3 -3
- package/lib/commands/analytics/dataset/display.js +95 -0
- package/lib/commands/analytics/dataset/display.js.map +1 -0
- package/lib/commands/analytics/dataset/list.d.ts +18 -0
- package/lib/commands/analytics/dataset/list.js +45 -0
- package/lib/commands/analytics/dataset/list.js.map +1 -0
- package/lib/commands/analytics/dataset/rows/fetch.d.ts +16 -0
- package/lib/commands/analytics/dataset/rows/fetch.js +119 -0
- package/lib/commands/analytics/dataset/rows/fetch.js.map +1 -0
- package/{dist → lib}/commands/analytics/enable.d.ts +0 -0
- package/{dist → lib}/commands/analytics/enable.js +12 -5
- package/lib/commands/analytics/enable.js.map +1 -0
- package/{dist → lib}/commands/analytics/lens/history/list.d.ts +1 -1
- package/{dist → lib}/commands/analytics/lens/history/list.js +11 -4
- package/lib/commands/analytics/lens/history/list.js.map +1 -0
- package/{dist/commands/analytics/dashboard → lib/commands/analytics/lens}/history/revert.d.ts +3 -3
- package/{dist → lib}/commands/analytics/lens/history/revert.js +11 -4
- package/lib/commands/analytics/lens/history/revert.js.map +1 -0
- package/{dist → lib}/commands/analytics/lens/list.d.ts +1 -0
- package/{dist → lib}/commands/analytics/lens/list.js +15 -7
- package/lib/commands/analytics/lens/list.js.map +1 -0
- package/lib/commands/analytics/query.d.ts +20 -0
- package/lib/commands/analytics/query.js +125 -0
- package/lib/commands/analytics/query.js.map +1 -0
- package/{dist → lib}/commands/analytics/template/create.d.ts +3 -1
- package/{dist → lib}/commands/analytics/template/create.js +25 -5
- package/lib/commands/analytics/template/create.js.map +1 -0
- package/{dist → lib}/commands/analytics/template/delete.d.ts +1 -1
- package/{dist → lib}/commands/analytics/template/delete.js +14 -7
- package/lib/commands/analytics/template/delete.js.map +1 -0
- package/lib/commands/analytics/template/display.d.ts +13 -0
- package/{dist → lib}/commands/analytics/template/display.js +7 -4
- package/lib/commands/analytics/template/display.js.map +1 -0
- package/{dist → lib}/commands/analytics/template/list.d.ts +1 -1
- package/{dist → lib}/commands/analytics/template/list.js +12 -5
- package/lib/commands/analytics/template/list.js.map +1 -0
- package/{dist → lib}/commands/analytics/template/update.d.ts +9 -4
- package/{dist → lib}/commands/analytics/template/update.js +25 -12
- package/lib/commands/analytics/template/update.js.map +1 -0
- package/{dist → lib}/commands/analytics.d.ts +1 -2
- package/{dist → lib}/commands/analytics.js +16 -18
- package/lib/commands/analytics.js.map +1 -0
- package/lib/index.d.ts +2 -0
- package/lib/index.js +9 -0
- package/lib/index.js.map +1 -0
- package/{dist → lib}/lib/analytics/app/folder.d.ts +4 -6
- package/{dist → lib}/lib/analytics/app/folder.js +7 -14
- package/lib/lib/analytics/app/folder.js.map +1 -0
- package/{dist → lib}/lib/analytics/autoinstall/autoinstall.d.ts +24 -4
- package/{dist → lib}/lib/analytics/autoinstall/autoinstall.js +7 -16
- package/lib/lib/analytics/autoinstall/autoinstall.js.map +1 -0
- package/{dist → lib}/lib/analytics/constants.d.ts +0 -0
- package/{dist → lib}/lib/analytics/constants.js +1 -0
- package/lib/lib/analytics/constants.js.map +1 -0
- package/{dist → lib}/lib/analytics/dashboard/dashboard.d.ts +0 -1
- package/{dist → lib}/lib/analytics/dashboard/dashboard.js +5 -12
- package/lib/lib/analytics/dashboard/dashboard.js.map +1 -0
- package/{dist → lib}/lib/analytics/dataflow/dataflow.d.ts +1 -1
- package/{dist → lib}/lib/analytics/dataflow/dataflow.js +2 -15
- package/lib/lib/analytics/dataflow/dataflow.js.map +1 -0
- package/lib/lib/analytics/dataset/dataset.d.ts +71 -0
- package/lib/lib/analytics/dataset/dataset.js +82 -0
- package/lib/lib/analytics/dataset/dataset.js.map +1 -0
- package/{dist → lib}/lib/analytics/event/waveAssetEvent.d.ts +0 -0
- package/{dist → lib}/lib/analytics/event/waveAssetEvent.js +6 -0
- package/lib/lib/analytics/event/waveAssetEvent.js.map +1 -0
- package/{dist → lib}/lib/analytics/lens/lens.d.ts +1 -1
- package/{dist → lib}/lib/analytics/lens/lens.js +3 -10
- package/lib/lib/analytics/lens/lens.js.map +1 -0
- package/{dist → lib}/lib/analytics/publisher/publisher.d.ts +0 -1
- package/{dist → lib}/lib/analytics/publisher/publisher.js +7 -20
- package/lib/lib/analytics/publisher/publisher.js.map +1 -0
- package/lib/lib/analytics/query/query.d.ts +165 -0
- package/lib/lib/analytics/query/query.js +258 -0
- package/lib/lib/analytics/query/query.js.map +1 -0
- package/{dist → lib}/lib/analytics/request.d.ts +5 -4
- package/{dist → lib}/lib/analytics/request.js +32 -3
- package/lib/lib/analytics/request.js.map +1 -0
- package/{dist → lib}/lib/analytics/template/wavetemplate.d.ts +12 -8
- package/{dist → lib}/lib/analytics/template/wavetemplate.js +20 -31
- package/lib/lib/analytics/template/wavetemplate.js.map +1 -0
- package/{dist → lib}/lib/analytics/utils.d.ts +3 -1
- package/{dist → lib}/lib/analytics/utils.js +16 -1
- package/lib/lib/analytics/utils.js.map +1 -0
- package/messages/app.json +36 -34
- package/messages/asset.json +14 -14
- package/messages/autoinstall.json +41 -41
- package/messages/dashboard.json +13 -13
- package/messages/dataflow.json +3 -3
- package/messages/dataset.json +16 -0
- package/messages/history.json +9 -9
- package/messages/lens.json +4 -4
- package/messages/query.json +24 -0
- package/messages/template.json +33 -27
- package/oclif.manifest.json +1 -0
- package/package.json +105 -55
- package/.oclif.manifest.json +0 -1
- package/dist/commands/analytics/app/create.js.map +0 -1
- package/dist/commands/analytics/app/decouple.js.map +0 -1
- package/dist/commands/analytics/app/delete.js.map +0 -1
- package/dist/commands/analytics/app/display.js.map +0 -1
- package/dist/commands/analytics/app/list.js.map +0 -1
- package/dist/commands/analytics/app/update.js.map +0 -1
- package/dist/commands/analytics/asset/publisher/create.js.map +0 -1
- package/dist/commands/analytics/asset/publisher/delete.js.map +0 -1
- package/dist/commands/analytics/asset/publisher/deleteall.js.map +0 -1
- package/dist/commands/analytics/asset/publisher/list.js.map +0 -1
- package/dist/commands/analytics/autoinstall/app/create.js.map +0 -1
- package/dist/commands/analytics/autoinstall/app/delete.js.map +0 -1
- package/dist/commands/analytics/autoinstall/app/update.js.map +0 -1
- package/dist/commands/analytics/autoinstall/display.js.map +0 -1
- package/dist/commands/analytics/autoinstall/list.js.map +0 -1
- package/dist/commands/analytics/dashboard/history/list.js.map +0 -1
- package/dist/commands/analytics/dashboard/history/revert.js.map +0 -1
- package/dist/commands/analytics/dashboard/list.js.map +0 -1
- package/dist/commands/analytics/dashboard/update.js.map +0 -1
- package/dist/commands/analytics/dataflow/history/list.js.map +0 -1
- package/dist/commands/analytics/dataflow/history/revert.js.map +0 -1
- package/dist/commands/analytics/dataflow/list.js.map +0 -1
- package/dist/commands/analytics/enable.js.map +0 -1
- package/dist/commands/analytics/lens/history/list.js.map +0 -1
- package/dist/commands/analytics/lens/history/revert.js.map +0 -1
- package/dist/commands/analytics/lens/list.js.map +0 -1
- package/dist/commands/analytics/template/create.js.map +0 -1
- package/dist/commands/analytics/template/delete.js.map +0 -1
- package/dist/commands/analytics/template/display.js.map +0 -1
- package/dist/commands/analytics/template/list.js.map +0 -1
- package/dist/commands/analytics/template/update.js.map +0 -1
- package/dist/commands/analytics.js.map +0 -1
- package/dist/lib/analytics/app/folder.js.map +0 -1
- package/dist/lib/analytics/autoinstall/autoinstall.js.map +0 -1
- package/dist/lib/analytics/constants.js.map +0 -1
- package/dist/lib/analytics/dashboard/dashboard.js.map +0 -1
- package/dist/lib/analytics/dataflow/dataflow.js.map +0 -1
- package/dist/lib/analytics/event/waveAssetEvent.js.map +0 -1
- package/dist/lib/analytics/lens/lens.js.map +0 -1
- package/dist/lib/analytics/publisher/publisher.js.map +0 -1
- package/dist/lib/analytics/request.js.map +0 -1
- package/dist/lib/analytics/template/wavetemplate.js.map +0 -1
- package/dist/lib/analytics/utils.js.map +0 -1
- package/dist/test/commands/app/create.test.d.ts +0 -1
- package/dist/test/commands/app/create.test.js +0 -269
- package/dist/test/commands/app/create.test.js.map +0 -1
- package/dist/test/commands/app/decouple.test.d.ts +0 -1
- package/dist/test/commands/app/decouple.test.js +0 -22
- package/dist/test/commands/app/decouple.test.js.map +0 -1
- package/dist/test/commands/app/delete.test.d.ts +0 -1
- package/dist/test/commands/app/delete.test.js +0 -24
- package/dist/test/commands/app/delete.test.js.map +0 -1
- package/dist/test/commands/app/display.test.d.ts +0 -1
- package/dist/test/commands/app/display.test.js +0 -171
- package/dist/test/commands/app/display.test.js.map +0 -1
- package/dist/test/commands/app/list.test.d.ts +0 -1
- package/dist/test/commands/app/list.test.js +0 -103
- package/dist/test/commands/app/list.test.js.map +0 -1
- package/dist/test/commands/app/update.test.d.ts +0 -1
- package/dist/test/commands/app/update.test.js +0 -21
- package/dist/test/commands/app/update.test.js.map +0 -1
- package/dist/test/commands/asset/publisher/create.test.d.ts +0 -1
- package/dist/test/commands/asset/publisher/create.test.js +0 -21
- package/dist/test/commands/asset/publisher/create.test.js.map +0 -1
- package/dist/test/commands/asset/publisher/deleteall.test.d.ts +0 -1
- package/dist/test/commands/asset/publisher/deleteall.test.js +0 -24
- package/dist/test/commands/asset/publisher/deleteall.test.js.map +0 -1
- package/dist/test/commands/asset/publisher/list.test.d.ts +0 -1
- package/dist/test/commands/asset/publisher/list.test.js +0 -34
- package/dist/test/commands/asset/publisher/list.test.js.map +0 -1
- package/dist/test/commands/autoinstall/app/create.test.d.ts +0 -1
- package/dist/test/commands/autoinstall/app/create.test.js +0 -153
- package/dist/test/commands/autoinstall/app/create.test.js.map +0 -1
- package/dist/test/commands/autoinstall/app/delete.test.d.ts +0 -1
- package/dist/test/commands/autoinstall/app/delete.test.js +0 -153
- package/dist/test/commands/autoinstall/app/delete.test.js.map +0 -1
- package/dist/test/commands/autoinstall/app/update.test.d.ts +0 -1
- package/dist/test/commands/autoinstall/app/update.test.js +0 -153
- package/dist/test/commands/autoinstall/app/update.test.js.map +0 -1
- package/dist/test/commands/autoinstall/list.test.d.ts +0 -1
- package/dist/test/commands/autoinstall/list.test.js +0 -42
- package/dist/test/commands/autoinstall/list.test.js.map +0 -1
- package/dist/test/commands/dashboard/history/list.test.d.ts +0 -1
- package/dist/test/commands/dashboard/history/list.test.js +0 -33
- package/dist/test/commands/dashboard/history/list.test.js.map +0 -1
- package/dist/test/commands/dashboard/history/revert.test.d.ts +0 -1
- package/dist/test/commands/dashboard/history/revert.test.js +0 -22
- package/dist/test/commands/dashboard/history/revert.test.js.map +0 -1
- package/dist/test/commands/dashboard/list.test.d.ts +0 -1
- package/dist/test/commands/dashboard/list.test.js +0 -33
- package/dist/test/commands/dashboard/list.test.js.map +0 -1
- package/dist/test/commands/dashboard/update.test.d.ts +0 -1
- package/dist/test/commands/dashboard/update.test.js +0 -44
- package/dist/test/commands/dashboard/update.test.js.map +0 -1
- package/dist/test/commands/dataflow/history/list.test.d.ts +0 -1
- package/dist/test/commands/dataflow/history/list.test.js +0 -33
- package/dist/test/commands/dataflow/history/list.test.js.map +0 -1
- package/dist/test/commands/dataflow/history/revert.test.d.ts +0 -1
- package/dist/test/commands/dataflow/history/revert.test.js +0 -22
- package/dist/test/commands/dataflow/history/revert.test.js.map +0 -1
- package/dist/test/commands/dataflow/list.test.d.ts +0 -1
- package/dist/test/commands/dataflow/list.test.js +0 -32
- package/dist/test/commands/dataflow/list.test.js.map +0 -1
- package/dist/test/commands/enable.test.d.ts +0 -1
- package/dist/test/commands/enable.test.js +0 -156
- package/dist/test/commands/enable.test.js.map +0 -1
- package/dist/test/commands/lens/history/list.test.d.ts +0 -1
- package/dist/test/commands/lens/history/list.test.js +0 -33
- package/dist/test/commands/lens/history/list.test.js.map +0 -1
- package/dist/test/commands/lens/history/revert.test.d.ts +0 -1
- package/dist/test/commands/lens/history/revert.test.js +0 -22
- package/dist/test/commands/lens/history/revert.test.js.map +0 -1
- package/dist/test/commands/lens/list.test.d.ts +0 -1
- package/dist/test/commands/lens/list.test.js +0 -32
- package/dist/test/commands/lens/list.test.js.map +0 -1
- package/dist/test/commands/template/create.test.d.ts +0 -1
- package/dist/test/commands/template/create.test.js +0 -21
- package/dist/test/commands/template/create.test.js.map +0 -1
- package/dist/test/commands/template/delete.test.d.ts +0 -1
- package/dist/test/commands/template/delete.test.js +0 -139
- package/dist/test/commands/template/delete.test.js.map +0 -1
- package/dist/test/commands/template/display.test.d.ts +0 -1
- package/dist/test/commands/template/display.test.js +0 -56
- package/dist/test/commands/template/display.test.js.map +0 -1
- package/dist/test/commands/template/list.test.d.ts +0 -1
- package/dist/test/commands/template/list.test.js +0 -73
- package/dist/test/commands/template/list.test.js.map +0 -1
- package/dist/test/commands/template/update.test.d.ts +0 -1
- package/dist/test/commands/template/update.test.js +0 -82
- 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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"}
|
|
File without changes
|
|
@@ -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
|
|
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
|
-
|
|
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"}
|
|
@@ -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
|
-
|
|
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
|
-
|
|
33
|
+
utils_1.throwError(response);
|
|
41
34
|
}
|
|
42
35
|
}
|
|
43
|
-
|
|
44
|
-
|
|
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
|
-
|
|
50
|
-
|
|
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
|