jsforce2 1.11.1
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/LICENSE +22 -0
- package/README.md +74 -0
- package/bin/jsforce +3 -0
- package/bower.json +30 -0
- package/build/jsforce-api-analytics.js +393 -0
- package/build/jsforce-api-analytics.min.js +2 -0
- package/build/jsforce-api-analytics.min.js.map +1 -0
- package/build/jsforce-api-apex.js +183 -0
- package/build/jsforce-api-apex.min.js +2 -0
- package/build/jsforce-api-apex.min.js.map +1 -0
- package/build/jsforce-api-bulk.js +1054 -0
- package/build/jsforce-api-bulk.min.js +2 -0
- package/build/jsforce-api-bulk.min.js.map +1 -0
- package/build/jsforce-api-chatter.js +320 -0
- package/build/jsforce-api-chatter.min.js +2 -0
- package/build/jsforce-api-chatter.min.js.map +1 -0
- package/build/jsforce-api-metadata.js +3020 -0
- package/build/jsforce-api-metadata.min.js +2 -0
- package/build/jsforce-api-metadata.min.js.map +1 -0
- package/build/jsforce-api-soap.js +403 -0
- package/build/jsforce-api-soap.min.js +2 -0
- package/build/jsforce-api-soap.min.js.map +1 -0
- package/build/jsforce-api-streaming.js +3479 -0
- package/build/jsforce-api-streaming.min.js +2 -0
- package/build/jsforce-api-streaming.min.js.map +1 -0
- package/build/jsforce-api-tooling.js +319 -0
- package/build/jsforce-api-tooling.min.js +2 -0
- package/build/jsforce-api-tooling.min.js.map +1 -0
- package/build/jsforce-core.js +25250 -0
- package/build/jsforce-core.min.js +2 -0
- package/build/jsforce-core.min.js.map +1 -0
- package/build/jsforce.js +31637 -0
- package/build/jsforce.min.js +2 -0
- package/build/jsforce.min.js.map +1 -0
- package/core.js +1 -0
- package/index.js +1 -0
- package/lib/VERSION.js +2 -0
- package/lib/_required.js +29 -0
- package/lib/api/analytics.js +387 -0
- package/lib/api/apex.js +177 -0
- package/lib/api/bulk.js +862 -0
- package/lib/api/chatter.js +314 -0
- package/lib/api/index.js +8 -0
- package/lib/api/metadata.js +848 -0
- package/lib/api/soap.js +397 -0
- package/lib/api/streaming-extension.js +136 -0
- package/lib/api/streaming.js +270 -0
- package/lib/api/tooling.js +313 -0
- package/lib/browser/canvas.js +90 -0
- package/lib/browser/client.js +241 -0
- package/lib/browser/core.js +5 -0
- package/lib/browser/jsforce.js +6 -0
- package/lib/browser/jsonp.js +52 -0
- package/lib/browser/request.js +70 -0
- package/lib/cache.js +252 -0
- package/lib/cli/cli.js +431 -0
- package/lib/cli/repl.js +337 -0
- package/lib/connection.js +1881 -0
- package/lib/core.js +16 -0
- package/lib/csv.js +50 -0
- package/lib/date.js +163 -0
- package/lib/http-api.js +300 -0
- package/lib/jsforce.js +10 -0
- package/lib/logger.js +52 -0
- package/lib/oauth2.js +206 -0
- package/lib/process.js +275 -0
- package/lib/promise.js +164 -0
- package/lib/query.js +881 -0
- package/lib/quick-action.js +90 -0
- package/lib/record-stream.js +305 -0
- package/lib/record.js +107 -0
- package/lib/registry/file-registry.js +48 -0
- package/lib/registry/index.js +3 -0
- package/lib/registry/registry.js +111 -0
- package/lib/require.js +14 -0
- package/lib/soap.js +207 -0
- package/lib/sobject.js +558 -0
- package/lib/soql-builder.js +236 -0
- package/lib/transport.js +233 -0
- package/package.json +110 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
(The MIT License)
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2011 Shinichi Tomita <shinichi.tomita@gmail.com>;
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
|
6
|
+
a copy of this software and associated documentation files (the
|
|
7
|
+
'Software'), to deal in the Software without restriction, including
|
|
8
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
|
9
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
|
10
|
+
permit persons to whom the Software is furnished to do so, subject to
|
|
11
|
+
the following conditions:
|
|
12
|
+
|
|
13
|
+
The above copyright notice and this permission notice shall be
|
|
14
|
+
included in all copies or substantial portions of the Software.
|
|
15
|
+
|
|
16
|
+
THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
|
|
17
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
|
18
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
|
19
|
+
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
|
20
|
+
CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
|
21
|
+
TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
|
22
|
+
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
# jsforce
|
|
2
|
+
|
|
3
|
+
Salesforce API Library for JavaScript applications (both on web browser and Node.js)
|
|
4
|
+
|
|
5
|
+
[](https://circleci.com/gh/jsforce/jsforce)
|
|
6
|
+
|
|
7
|
+
## Overview
|
|
8
|
+
|
|
9
|
+
JSforce (f.k.a. Node-Salesforce) is an isomorphic JavaScript Library utilizing Salesforce's API: It works both in the browser and with Node.js.
|
|
10
|
+
|
|
11
|
+
It capsulates the access to various APIs provided by Salesforce in asynchronous JavaScript function calls.
|
|
12
|
+
|
|
13
|
+
It also has command line interface (CLI) which gives interactive console (REPL), so you can learn the usage without hassle.
|
|
14
|
+
|
|
15
|
+
Supported Salesforce APIs are the following:
|
|
16
|
+
|
|
17
|
+
- REST API (SOQL, SOSL, describe, etc.)
|
|
18
|
+
- Apex REST
|
|
19
|
+
- Analytics API
|
|
20
|
+
- Bulk API
|
|
21
|
+
- Chatter API
|
|
22
|
+
- Metadata API
|
|
23
|
+
- SOAP API
|
|
24
|
+
- Streaming API
|
|
25
|
+
- Tooling API
|
|
26
|
+
|
|
27
|
+
## Documentation
|
|
28
|
+
|
|
29
|
+
See documentation in http://jsforce.github.io/ .
|
|
30
|
+
|
|
31
|
+
## Releases
|
|
32
|
+
|
|
33
|
+
See [Releases](https://github.com/jsforce/jsforce/releases).
|
|
34
|
+
|
|
35
|
+
## License
|
|
36
|
+
|
|
37
|
+
See [license](LICENSE) (MIT License).
|
|
38
|
+
|
|
39
|
+
## Authors
|
|
40
|
+
|
|
41
|
+
- Shinichi Tomita <shinichi.tomita@gmail.com>
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
## Notes
|
|
45
|
+
|
|
46
|
+
If you have any questions first file it on [issues](https://github.com/jsforce/jsforce/issues) before contacting authors via e-mail.
|
|
47
|
+
|
|
48
|
+
## Tests
|
|
49
|
+
|
|
50
|
+
In order to run tests you will need a [Salesforce Developer Org](https://developer.salesforce.com/signup)
|
|
51
|
+
|
|
52
|
+
You will also need to install the JsforceTestSuite package, which can be done by running:
|
|
53
|
+
|
|
54
|
+
SF_USERNAME=myusername SF_PASSWORD=password+securityToken ./test/bin/org-setup
|
|
55
|
+
|
|
56
|
+
You may need to run this more then once if you encounter timeouts or dropped connections/
|
|
57
|
+
|
|
58
|
+
Finally, to run the tests simply do:
|
|
59
|
+
|
|
60
|
+
SF_USERNAME=myusername SF_PASSWORD=password+securityToken npm run test:node
|
|
61
|
+
|
|
62
|
+
SF_USERNAME=myusername SF_PASSWORD=password+securityToken npm run test:browser
|
|
63
|
+
|
|
64
|
+
## Contributions
|
|
65
|
+
|
|
66
|
+
Your contributions are welcome: both by reporting issues on [GitHub issues](https://github.com/jsforce/jsforce/issues) or pull-requesting patches.
|
|
67
|
+
|
|
68
|
+
If you want to implement any additional features, to be added to JSforce to our master branch, which may or may not be merged please first check current [opening issues](https://github.com/jsforce/jsforce/issues?q=is%3Aopen) with milestones and confirm whether the feature is on road map or not.
|
|
69
|
+
|
|
70
|
+
If your feature implementation is brand-new or fixing unsupposed bugs in the library's test cases, please include addtional test codes in the `test/` directory.
|
|
71
|
+
|
|
72
|
+
|
|
73
|
+
|
|
74
|
+
|
package/bin/jsforce
ADDED
package/bower.json
ADDED
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "jsforce",
|
|
3
|
+
"version": "1.6.0",
|
|
4
|
+
"homepage": "https://github.com/jsforce/jsforce",
|
|
5
|
+
"authors": [
|
|
6
|
+
"Shinichi Tomita <shinichi.tomita@gmail.com>"
|
|
7
|
+
],
|
|
8
|
+
"description": "Salesforce API Library for JavaScript",
|
|
9
|
+
"main": "./build/jsforce.js",
|
|
10
|
+
"keywords": [
|
|
11
|
+
"salesforce",
|
|
12
|
+
"salesforce.com",
|
|
13
|
+
"sfdc",
|
|
14
|
+
"force.com",
|
|
15
|
+
"database.com"
|
|
16
|
+
],
|
|
17
|
+
"license": "MIT",
|
|
18
|
+
"ignore": [
|
|
19
|
+
"**/.*",
|
|
20
|
+
"package.json",
|
|
21
|
+
"Gruntfile.*",
|
|
22
|
+
"testem.json",
|
|
23
|
+
"node_modules",
|
|
24
|
+
"bower_components",
|
|
25
|
+
"bin",
|
|
26
|
+
"examples",
|
|
27
|
+
"lib",
|
|
28
|
+
"test"
|
|
29
|
+
]
|
|
30
|
+
}
|
|
@@ -0,0 +1,393 @@
|
|
|
1
|
+
(function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g=(g.jsforce||(g.jsforce = {}));g=(g.modules||(g.modules = {}));g=(g.api||(g.api = {}));g.Analytics = f()}})(function(){var define,module,exports;return (function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c="function"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error("Cannot find module '"+i+"'");throw a.code="MODULE_NOT_FOUND",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u="function"==typeof require&&require,i=0;i<t.length;i++)o(t[i]);return o}return r})()({1:[function(require,module,exports){
|
|
2
|
+
/**
|
|
3
|
+
* @file Manages Salesforce Analytics API
|
|
4
|
+
* @author Shinichi Tomita <shinichi.tomita@gmail.com>
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
'use strict';
|
|
8
|
+
|
|
9
|
+
var _ = window.jsforce.require('lodash/core'),
|
|
10
|
+
jsforce = window.jsforce.require('./core'),
|
|
11
|
+
Promise = window.jsforce.require('./promise');
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* Report instance to retrieving asynchronously executed result
|
|
15
|
+
*
|
|
16
|
+
* @protected
|
|
17
|
+
* @class Analytics~ReportInstance
|
|
18
|
+
* @param {Analytics~Report} report - Report
|
|
19
|
+
* @param {String} id - Report instance id
|
|
20
|
+
*/
|
|
21
|
+
var ReportInstance = function(report, id) {
|
|
22
|
+
this._report = report;
|
|
23
|
+
this._conn = report._conn;
|
|
24
|
+
this.id = id;
|
|
25
|
+
};
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* Retrieve report result asynchronously executed
|
|
29
|
+
*
|
|
30
|
+
* @method Analytics~ReportInstance#retrieve
|
|
31
|
+
* @param {Callback.<Analytics~ReportResult>} [callback] - Callback function
|
|
32
|
+
* @returns {Promise.<Analytics~ReportResult>}
|
|
33
|
+
*/
|
|
34
|
+
ReportInstance.prototype.retrieve = function(callback) {
|
|
35
|
+
var conn = this._conn,
|
|
36
|
+
report = this._report;
|
|
37
|
+
var url = [ conn._baseUrl(), "analytics", "reports", report.id, "instances", this.id ].join('/');
|
|
38
|
+
return conn.request(url).thenCall(callback);
|
|
39
|
+
};
|
|
40
|
+
|
|
41
|
+
/**
|
|
42
|
+
* Report object in Analytics API
|
|
43
|
+
*
|
|
44
|
+
* @protected
|
|
45
|
+
* @class Analytics~Report
|
|
46
|
+
* @param {Connection} conn Connection
|
|
47
|
+
*/
|
|
48
|
+
var Report = function(conn, id) {
|
|
49
|
+
this._conn = conn;
|
|
50
|
+
this.id = id;
|
|
51
|
+
};
|
|
52
|
+
|
|
53
|
+
/**
|
|
54
|
+
* Describe report metadata
|
|
55
|
+
*
|
|
56
|
+
* @method Analytics~Report#describe
|
|
57
|
+
* @param {Callback.<Analytics~ReportMetadata>} [callback] - Callback function
|
|
58
|
+
* @returns {Promise.<Analytics~ReportMetadata>}
|
|
59
|
+
*/
|
|
60
|
+
Report.prototype.describe = function(callback) {
|
|
61
|
+
var url = [ this._conn._baseUrl(), "analytics", "reports", this.id, "describe" ].join('/');
|
|
62
|
+
return this._conn.request(url).thenCall(callback);
|
|
63
|
+
};
|
|
64
|
+
|
|
65
|
+
/**
|
|
66
|
+
* Synonym of Analytics~Report#destroy()
|
|
67
|
+
*
|
|
68
|
+
* @method Analytics~Report#delete
|
|
69
|
+
* @param {Callback.<Analytics~ReportResult>} [callback] - Callback function
|
|
70
|
+
* @returns {Promise.<Analytics~ReportResult>}
|
|
71
|
+
*/
|
|
72
|
+
/**
|
|
73
|
+
* Synonym of Analytics~Report#destroy()
|
|
74
|
+
*
|
|
75
|
+
* @method Analytics~Report#del
|
|
76
|
+
* @param {Callback.<Analytics~ReportResult>} [callback] - Callback function
|
|
77
|
+
* @returns {Promise.<Analytics~ReportResult>}
|
|
78
|
+
*/
|
|
79
|
+
/**
|
|
80
|
+
* Destroy a report
|
|
81
|
+
*
|
|
82
|
+
* @method Analytics~Report#destroy
|
|
83
|
+
* @param {Callback.<Analytics~ReportResult>} [callback] - Callback function
|
|
84
|
+
* @returns {Promise.<Analytics~ReportResult>}
|
|
85
|
+
*/
|
|
86
|
+
Report.prototype["delete"] =
|
|
87
|
+
Report.prototype.del =
|
|
88
|
+
Report.prototype.destroy = function(callback) {
|
|
89
|
+
var url = [ this._conn._baseUrl(), "analytics", "reports", this.id ].join('/');
|
|
90
|
+
return this._conn.request({method: 'DELETE', url: url}).thenCall(callback);
|
|
91
|
+
};
|
|
92
|
+
|
|
93
|
+
/**
|
|
94
|
+
* Clones a given report
|
|
95
|
+
*
|
|
96
|
+
* @method Analytics~Report#clone
|
|
97
|
+
* @param {String} name - The name of the new report
|
|
98
|
+
* @param {Callback.<Analytics~ReportResult>} [callback] - Callback function
|
|
99
|
+
* @returns {Promise.<Analytics~ReportResult>}
|
|
100
|
+
*/
|
|
101
|
+
Report.prototype.clone = function(name, callback) {
|
|
102
|
+
var url = [ this._conn._baseUrl(), "analytics", "reports" ].join('/');
|
|
103
|
+
url += "?cloneId=" + this.id;
|
|
104
|
+
var data = { reportMetadata: { name: name } };
|
|
105
|
+
var params = { method : 'POST', url: url, headers: { "Content-Type" : "application/json" }, body: JSON.stringify(data)};
|
|
106
|
+
|
|
107
|
+
return this._conn.request(params).thenCall(callback);
|
|
108
|
+
};
|
|
109
|
+
|
|
110
|
+
/**
|
|
111
|
+
* Explain plan for executing report
|
|
112
|
+
*
|
|
113
|
+
* @method Analytics~Report#explain
|
|
114
|
+
* @param {Callback.<ExplainInfo>} [callback] - Callback function
|
|
115
|
+
* @returns {Promise.<ExplainInfo>}
|
|
116
|
+
*/
|
|
117
|
+
Report.prototype.explain = function(callback) {
|
|
118
|
+
var url = "/query/?explain=" + this.id;
|
|
119
|
+
return this._conn.request(url).thenCall(callback);
|
|
120
|
+
};
|
|
121
|
+
|
|
122
|
+
|
|
123
|
+
/**
|
|
124
|
+
* Run report synchronously
|
|
125
|
+
*
|
|
126
|
+
* @method Analytics~Report#execute
|
|
127
|
+
* @param {Object} [options] - Options
|
|
128
|
+
* @param {Boolean} options.details - Flag if include detail in result
|
|
129
|
+
* @param {Analytics~ReportMetadata} options.metadata - Overriding report metadata
|
|
130
|
+
* @param {Callback.<Analytics~ReportResult>} [callback] - Callback function
|
|
131
|
+
* @returns {Promise.<Analytics~ReportResult>}
|
|
132
|
+
*/
|
|
133
|
+
Report.prototype.run =
|
|
134
|
+
Report.prototype.exec =
|
|
135
|
+
Report.prototype.execute = function(options, callback) {
|
|
136
|
+
options = options || {};
|
|
137
|
+
if (_.isFunction(options)) {
|
|
138
|
+
callback = options;
|
|
139
|
+
options = {};
|
|
140
|
+
}
|
|
141
|
+
var url = [ this._conn._baseUrl(), "analytics", "reports", this.id ].join('/');
|
|
142
|
+
url += "?includeDetails=" + (options.details ? "true" : "false");
|
|
143
|
+
var params = { method : options.metadata ? 'POST' : 'GET', url : url };
|
|
144
|
+
if (options.metadata) {
|
|
145
|
+
params.headers = { "Content-Type" : "application/json" };
|
|
146
|
+
params.body = JSON.stringify(options.metadata);
|
|
147
|
+
}
|
|
148
|
+
return this._conn.request(params).thenCall(callback);
|
|
149
|
+
};
|
|
150
|
+
|
|
151
|
+
|
|
152
|
+
/**
|
|
153
|
+
* Run report asynchronously
|
|
154
|
+
*
|
|
155
|
+
* @method Analytics~Report#executeAsync
|
|
156
|
+
* @param {Object} [options] - Options
|
|
157
|
+
* @param {Boolean} options.details - Flag if include detail in result
|
|
158
|
+
* @param {Analytics~ReportMetadata} options.metadata - Overriding report metadata
|
|
159
|
+
* @param {Callback.<Analytics~ReportInstanceAttrs>} [callback] - Callback function
|
|
160
|
+
* @returns {Promise.<Analytics~ReportInstanceAttrs>}
|
|
161
|
+
*/
|
|
162
|
+
Report.prototype.executeAsync = function(options, callback) {
|
|
163
|
+
options = options || {};
|
|
164
|
+
if (_.isFunction(options)) {
|
|
165
|
+
callback = options;
|
|
166
|
+
options = {};
|
|
167
|
+
}
|
|
168
|
+
var url = [ this._conn._baseUrl(), "analytics", "reports", this.id, "instances" ].join('/');
|
|
169
|
+
if (options.details) {
|
|
170
|
+
url += "?includeDetails=true";
|
|
171
|
+
}
|
|
172
|
+
var params = { method : 'POST', url : url, body: "" };
|
|
173
|
+
if (options.metadata) {
|
|
174
|
+
params.headers = { "Content-Type" : "application/json" };
|
|
175
|
+
params.body = JSON.stringify(options.metadata);
|
|
176
|
+
}
|
|
177
|
+
return this._conn.request(params).thenCall(callback);
|
|
178
|
+
};
|
|
179
|
+
|
|
180
|
+
/**
|
|
181
|
+
* Get report instance for specified instance ID
|
|
182
|
+
*
|
|
183
|
+
* @method Analytics~Report#instance
|
|
184
|
+
* @param {String} id - Report instance ID
|
|
185
|
+
* @returns {Analytics~ReportInstance}
|
|
186
|
+
*/
|
|
187
|
+
Report.prototype.instance = function(id) {
|
|
188
|
+
return new ReportInstance(this, id);
|
|
189
|
+
};
|
|
190
|
+
|
|
191
|
+
/**
|
|
192
|
+
* List report instances which had been executed asynchronously
|
|
193
|
+
*
|
|
194
|
+
* @method Analytics~Report#instances
|
|
195
|
+
* @param {Callback.<Array.<Analytics~ReportInstanceAttrs>>} [callback] - Callback function
|
|
196
|
+
* @returns {Promise.<Array.<Analytics~ReportInstanceAttrs>>}
|
|
197
|
+
*/
|
|
198
|
+
Report.prototype.instances = function(callback) {
|
|
199
|
+
var url = [ this._conn._baseUrl(), "analytics", "reports", this.id, "instances" ].join('/');
|
|
200
|
+
return this._conn.request(url).thenCall(callback);
|
|
201
|
+
};
|
|
202
|
+
|
|
203
|
+
/**
|
|
204
|
+
* Dashboard object in the Analytics API
|
|
205
|
+
*
|
|
206
|
+
* @protected
|
|
207
|
+
* @class Analytics-Dashboard
|
|
208
|
+
* @param {Connection} conn Connection
|
|
209
|
+
* @param {String} id - The Id
|
|
210
|
+
*/
|
|
211
|
+
|
|
212
|
+
var Dashboard = function(conn, id) {
|
|
213
|
+
this._conn = conn;
|
|
214
|
+
this.id = id;
|
|
215
|
+
};
|
|
216
|
+
|
|
217
|
+
/**
|
|
218
|
+
* Describe dashboard metadata
|
|
219
|
+
*
|
|
220
|
+
* @method Analytics~Dashboard#describe
|
|
221
|
+
* @param {Callback.<Analytics-DashboardMetadata>} [callback] - Callback function
|
|
222
|
+
* @returns {Promise.<Analytics-DashboardMetadata>}
|
|
223
|
+
*/
|
|
224
|
+
Dashboard.prototype.describe = function(callback) {
|
|
225
|
+
var url = [ this._conn._baseUrl(), "analytics", "dashboards", this.id, "describe" ].join('/');
|
|
226
|
+
return this._conn.request(url).thenCall(callback);
|
|
227
|
+
};
|
|
228
|
+
|
|
229
|
+
/**
|
|
230
|
+
* Get details about dashboard components
|
|
231
|
+
*
|
|
232
|
+
* @method Analytics~Dashboard#components
|
|
233
|
+
* @param {Callback.<Analytics-DashboardComponentMetadata>} [callback] - Callback function
|
|
234
|
+
* @returns {Promise.<Analytics-DashboardComponentMetadata>}
|
|
235
|
+
*/
|
|
236
|
+
Dashboard.prototype.components = function(componentIds, callback) {
|
|
237
|
+
var url = [ this._conn._baseUrl(), "analytics", "dashboards", this.id].join('/');
|
|
238
|
+
var data = {};
|
|
239
|
+
if (_.isFunction(componentIds)) {
|
|
240
|
+
callback = componentIds;
|
|
241
|
+
} else if (_.isArray(componentIds)) {
|
|
242
|
+
data.componentIds = componentIds;
|
|
243
|
+
} else if (_.isString(componentIds)) {
|
|
244
|
+
data.componentIds = [ componentIds ];
|
|
245
|
+
}
|
|
246
|
+
var params = { method : 'POST', url : url, headers : { "Content-Type" : "application/json" }, body : JSON.stringify(data)};
|
|
247
|
+
return this._conn.request(params).thenCall(callback);
|
|
248
|
+
};
|
|
249
|
+
|
|
250
|
+
/**
|
|
251
|
+
* Get dashboard status
|
|
252
|
+
*
|
|
253
|
+
* @method Analytics~Dashboard#status
|
|
254
|
+
* @param {Callback.<Analytics-DashboardStatusMetadata>} [callback] - Callback function
|
|
255
|
+
* @returns {Promise.<Analytics-DashboardStatusMetadata>}
|
|
256
|
+
*/
|
|
257
|
+
Dashboard.prototype.status = function(callback) {
|
|
258
|
+
var url = [ this._conn._baseUrl(), "analytics", "dashboards", this.id, "status" ].join('/');
|
|
259
|
+
return this._conn.request(url).thenCall(callback);
|
|
260
|
+
};
|
|
261
|
+
|
|
262
|
+
/**
|
|
263
|
+
* Refresh a dashboard
|
|
264
|
+
*
|
|
265
|
+
* @method Analytics~Dashboard#refresh
|
|
266
|
+
* @param {Callback.<Analytics-DashboardStatusUrl>} [callback] - Callback function
|
|
267
|
+
* @returns {Promise.<Analytics-DashboardStatusUrl>}
|
|
268
|
+
*/
|
|
269
|
+
Dashboard.prototype.refresh = function(callback) {
|
|
270
|
+
var url = [ this._conn._baseUrl(), "analytics", "dashboards", this.id ].join('/');
|
|
271
|
+
var params = { method : 'PUT', url : url, body: '' };
|
|
272
|
+
return this._conn.request(params).thenCall(callback);
|
|
273
|
+
};
|
|
274
|
+
|
|
275
|
+
/**
|
|
276
|
+
* Clone a dashboard
|
|
277
|
+
*
|
|
278
|
+
* @method Analytics~Dashboard#clone
|
|
279
|
+
* @param {Callback.<Analytics-DashboardMetadata>} [callback] - Callback function
|
|
280
|
+
* @returns {Promise.<Analytics-DashboardMetadata>}
|
|
281
|
+
*/
|
|
282
|
+
Dashboard.prototype.clone = function(name, folderid, callback) {
|
|
283
|
+
var url = [ this._conn._baseUrl(), "analytics", "dashboards" ].join('/');
|
|
284
|
+
url += "?cloneId=" + this.id;
|
|
285
|
+
var data = {};
|
|
286
|
+
|
|
287
|
+
if (_.isObject(name)) {
|
|
288
|
+
data = name;
|
|
289
|
+
callback = folderid;
|
|
290
|
+
} else {
|
|
291
|
+
data.name = name;
|
|
292
|
+
data.folderId = folderid;
|
|
293
|
+
}
|
|
294
|
+
var params = { method : 'POST', url : url, headers : { "Content-Type" : "application/json" }, body : JSON.stringify(data)};
|
|
295
|
+
|
|
296
|
+
return this._conn.request(params).thenCall(callback);
|
|
297
|
+
};
|
|
298
|
+
|
|
299
|
+
/**
|
|
300
|
+
* Synonym of Analytics~Dashboard#destroy()
|
|
301
|
+
*
|
|
302
|
+
* @method Analytics~Dashboard#delete
|
|
303
|
+
* @param {Callback.<Analytics~DashboardResult>} [callback] - Callback function
|
|
304
|
+
* @returns {Promise.<Analytics~DashboardResult>}
|
|
305
|
+
*/
|
|
306
|
+
/**
|
|
307
|
+
* Synonym of Analytics~Dashboard#destroy()
|
|
308
|
+
*
|
|
309
|
+
* @method Analytics~Dashboard#del
|
|
310
|
+
* @param {Callback.<Analytics~DashboardResult>} [callback] - Callback function
|
|
311
|
+
* @returns {Promise.<Analytics~DashboardResult>}
|
|
312
|
+
*/
|
|
313
|
+
/**
|
|
314
|
+
* Destroy a dashboard
|
|
315
|
+
*
|
|
316
|
+
* @method Analytics~Dashboard#destroy
|
|
317
|
+
* @param {Callback.<Analytics~DashboardResult>} [callback] - Callback function
|
|
318
|
+
* @returns {Promise.<Analytics~DashboardResult>}
|
|
319
|
+
*/
|
|
320
|
+
Dashboard.prototype["delete"] =
|
|
321
|
+
Dashboard.prototype.del =
|
|
322
|
+
Dashboard.prototype.destroy = function(callback) {
|
|
323
|
+
var url = [ this._conn._baseUrl(), "analytics", "dashboards", this.id ].join('/');
|
|
324
|
+
return this._conn.request({method: 'DELETE', url: url}).thenCall(callback);
|
|
325
|
+
};
|
|
326
|
+
|
|
327
|
+
/**
|
|
328
|
+
* API class for Analytics API
|
|
329
|
+
*
|
|
330
|
+
* @class
|
|
331
|
+
* @param {Connection} conn Connection
|
|
332
|
+
*/
|
|
333
|
+
var Analytics = function(conn) {
|
|
334
|
+
this._conn = conn;
|
|
335
|
+
};
|
|
336
|
+
|
|
337
|
+
/**
|
|
338
|
+
* Get report object of Analytics API
|
|
339
|
+
*
|
|
340
|
+
* @param {String} id - Report Id
|
|
341
|
+
* @returns {Analytics~Report}
|
|
342
|
+
*/
|
|
343
|
+
Analytics.prototype.report = function(id) {
|
|
344
|
+
return new Report(this._conn, id);
|
|
345
|
+
};
|
|
346
|
+
|
|
347
|
+
/**
|
|
348
|
+
* Get recent report list
|
|
349
|
+
*
|
|
350
|
+
* @param {Callback.<Array.<Analytics~ReportInfo>>} [callback] - Callback function
|
|
351
|
+
* @returns {Promise.<Array.<Analytics~ReportInfo>>}
|
|
352
|
+
*/
|
|
353
|
+
Analytics.prototype.reports = function(callback) {
|
|
354
|
+
var url = [ this._conn._baseUrl(), "analytics", "reports" ].join('/');
|
|
355
|
+
return this._conn.request(url).thenCall(callback);
|
|
356
|
+
};
|
|
357
|
+
|
|
358
|
+
/**
|
|
359
|
+
* Get dashboard object of Analytics API
|
|
360
|
+
*
|
|
361
|
+
* @param {String} id - Dashboard Id
|
|
362
|
+
* @returns {Analytics~Dashboard}
|
|
363
|
+
*/
|
|
364
|
+
Analytics.prototype.dashboard = function(id) {
|
|
365
|
+
return new Dashboard(this._conn, id);
|
|
366
|
+
};
|
|
367
|
+
|
|
368
|
+
/**
|
|
369
|
+
* Get recent dashboard list
|
|
370
|
+
*
|
|
371
|
+
* @param {Callback.<Array.<Analytics~DashboardInfo>>} [callback] - Callback function
|
|
372
|
+
* @returns {Promise.<Array.<Analytics~DashboardInfo>>}
|
|
373
|
+
*/
|
|
374
|
+
Analytics.prototype.dashboards = function(callback) {
|
|
375
|
+
var url = [ this._conn._baseUrl(), "analytics", "dashboards" ].join('/');
|
|
376
|
+
return this._conn.request(url).thenCall(callback);
|
|
377
|
+
};
|
|
378
|
+
|
|
379
|
+
/*--------------------------------------------*/
|
|
380
|
+
/*
|
|
381
|
+
* Register hook in connection instantiation for dynamically adding this API module features
|
|
382
|
+
*/
|
|
383
|
+
jsforce.on('connection:new', function(conn) {
|
|
384
|
+
conn.analytics = new Analytics(conn);
|
|
385
|
+
});
|
|
386
|
+
|
|
387
|
+
|
|
388
|
+
module.exports = Analytics;
|
|
389
|
+
|
|
390
|
+
},{}]},{},[1])(1)
|
|
391
|
+
});
|
|
392
|
+
|
|
393
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm5vZGVfbW9kdWxlcy9icm93c2VyLXBhY2svX3ByZWx1ZGUuanMiLCJsaWIvYXBpL2FuYWx5dGljcy5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQ0FBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6ImdlbmVyYXRlZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzQ29udGVudCI6WyIoZnVuY3Rpb24oKXtmdW5jdGlvbiByKGUsbix0KXtmdW5jdGlvbiBvKGksZil7aWYoIW5baV0pe2lmKCFlW2ldKXt2YXIgYz1cImZ1bmN0aW9uXCI9PXR5cGVvZiByZXF1aXJlJiZyZXF1aXJlO2lmKCFmJiZjKXJldHVybiBjKGksITApO2lmKHUpcmV0dXJuIHUoaSwhMCk7dmFyIGE9bmV3IEVycm9yKFwiQ2Fubm90IGZpbmQgbW9kdWxlICdcIitpK1wiJ1wiKTt0aHJvdyBhLmNvZGU9XCJNT0RVTEVfTk9UX0ZPVU5EXCIsYX12YXIgcD1uW2ldPXtleHBvcnRzOnt9fTtlW2ldWzBdLmNhbGwocC5leHBvcnRzLGZ1bmN0aW9uKHIpe3ZhciBuPWVbaV1bMV1bcl07cmV0dXJuIG8obnx8cil9LHAscC5leHBvcnRzLHIsZSxuLHQpfXJldHVybiBuW2ldLmV4cG9ydHN9Zm9yKHZhciB1PVwiZnVuY3Rpb25cIj09dHlwZW9mIHJlcXVpcmUmJnJlcXVpcmUsaT0wO2k8dC5sZW5ndGg7aSsrKW8odFtpXSk7cmV0dXJuIG99cmV0dXJuIHJ9KSgpIiwiLyoqXG4gKiBAZmlsZSBNYW5hZ2VzIFNhbGVzZm9yY2UgQW5hbHl0aWNzIEFQSVxuICogQGF1dGhvciBTaGluaWNoaSBUb21pdGEgPHNoaW5pY2hpLnRvbWl0YUBnbWFpbC5jb20+XG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgXyA9IHdpbmRvdy5qc2ZvcmNlLnJlcXVpcmUoJ2xvZGFzaC9jb3JlJyksXG4gICAganNmb3JjZSA9IHdpbmRvdy5qc2ZvcmNlLnJlcXVpcmUoJy4vY29yZScpLFxuICAgIFByb21pc2UgID0gd2luZG93LmpzZm9yY2UucmVxdWlyZSgnLi9wcm9taXNlJyk7XG5cbi8qKlxuICogUmVwb3J0IGluc3RhbmNlIHRvIHJldHJpZXZpbmcgYXN5bmNocm9ub3VzbHkgZXhlY3V0ZWQgcmVzdWx0XG4gKlxuICogQHByb3RlY3RlZFxuICogQGNsYXNzIEFuYWx5dGljc35SZXBvcnRJbnN0YW5jZVxuICogQHBhcmFtIHtBbmFseXRpY3N+UmVwb3J0fSByZXBvcnQgLSBSZXBvcnRcbiAqIEBwYXJhbSB7U3RyaW5nfSBpZCAtIFJlcG9ydCBpbnN0YW5jZSBpZFxuICovXG52YXIgUmVwb3J0SW5zdGFuY2UgPSBmdW5jdGlvbihyZXBvcnQsIGlkKSB7XG4gIHRoaXMuX3JlcG9ydCA9IHJlcG9ydDtcbiAgdGhpcy5fY29ubiA9IHJlcG9ydC5fY29ubjtcbiAgdGhpcy5pZCA9IGlkO1xufTtcblxuLyoqXG4gKiBSZXRyaWV2ZSByZXBvcnQgcmVzdWx0IGFzeW5jaHJvbm91c2x5IGV4ZWN1dGVkXG4gKlxuICogQG1ldGhvZCBBbmFseXRpY3N+UmVwb3J0SW5zdGFuY2UjcmV0cmlldmVcbiAqIEBwYXJhbSB7Q2FsbGJhY2suPEFuYWx5dGljc35SZXBvcnRSZXN1bHQ+fSBbY2FsbGJhY2tdIC0gQ2FsbGJhY2sgZnVuY3Rpb25cbiAqIEByZXR1cm5zIHtQcm9taXNlLjxBbmFseXRpY3N+UmVwb3J0UmVzdWx0Pn1cbiAqL1xuUmVwb3J0SW5zdGFuY2UucHJvdG90eXBlLnJldHJpZXZlID0gZnVuY3Rpb24oY2FsbGJhY2spIHtcbiAgdmFyIGNvbm4gPSB0aGlzLl9jb25uLFxuICAgICAgcmVwb3J0ID0gdGhpcy5fcmVwb3J0O1xuICB2YXIgdXJsID0gWyBjb25uLl9iYXNlVXJsKCksIFwiYW5hbHl0aWNzXCIsIFwicmVwb3J0c1wiLCByZXBvcnQuaWQsIFwiaW5zdGFuY2VzXCIsIHRoaXMuaWQgXS5qb2luKCcvJyk7XG4gIHJldHVybiBjb25uLnJlcXVlc3QodXJsKS50aGVuQ2FsbChjYWxsYmFjayk7XG59O1xuXG4vKipcbiAqIFJlcG9ydCBvYmplY3QgaW4gQW5hbHl0aWNzIEFQSVxuICpcbiAqIEBwcm90ZWN0ZWRcbiAqIEBjbGFzcyBBbmFseXRpY3N+UmVwb3J0XG4gKiBAcGFyYW0ge0Nvbm5lY3Rpb259IGNvbm4gQ29ubmVjdGlvblxuICovXG52YXIgUmVwb3J0ID0gZnVuY3Rpb24oY29ubiwgaWQpIHtcbiAgdGhpcy5fY29ubiA9IGNvbm47XG4gIHRoaXMuaWQgPSBpZDtcbn07XG5cbi8qKlxuICogRGVzY3JpYmUgcmVwb3J0IG1ldGFkYXRhXG4gKlxuICogQG1ldGhvZCBBbmFseXRpY3N+UmVwb3J0I2Rlc2NyaWJlXG4gKiBAcGFyYW0ge0NhbGxiYWNrLjxBbmFseXRpY3N+UmVwb3J0TWV0YWRhdGE+fSBbY2FsbGJhY2tdIC0gQ2FsbGJhY2sgZnVuY3Rpb25cbiAqIEByZXR1cm5zIHtQcm9taXNlLjxBbmFseXRpY3N+UmVwb3J0TWV0YWRhdGE+fVxuICovXG5SZXBvcnQucHJvdG90eXBlLmRlc2NyaWJlID0gZnVuY3Rpb24oY2FsbGJhY2spIHtcbiAgdmFyIHVybCA9IFsgdGhpcy5fY29ubi5fYmFzZVVybCgpLCBcImFuYWx5dGljc1wiLCBcInJlcG9ydHNcIiwgdGhpcy5pZCwgXCJkZXNjcmliZVwiIF0uam9pbignLycpO1xuICByZXR1cm4gdGhpcy5fY29ubi5yZXF1ZXN0KHVybCkudGhlbkNhbGwoY2FsbGJhY2spO1xufTtcblxuLyoqXG4gKiBTeW5vbnltIG9mIEFuYWx5dGljc35SZXBvcnQjZGVzdHJveSgpXG4gKlxuICogQG1ldGhvZCBBbmFseXRpY3N+UmVwb3J0I2RlbGV0ZVxuICogQHBhcmFtIHtDYWxsYmFjay48QW5hbHl0aWNzflJlcG9ydFJlc3VsdD59IFtjYWxsYmFja10gLSBDYWxsYmFjayBmdW5jdGlvblxuICogQHJldHVybnMge1Byb21pc2UuPEFuYWx5dGljc35SZXBvcnRSZXN1bHQ+fVxuICovXG4vKipcbiAqIFN5bm9ueW0gb2YgQW5hbHl0aWNzflJlcG9ydCNkZXN0cm95KClcbiAqXG4gKiBAbWV0aG9kIEFuYWx5dGljc35SZXBvcnQjZGVsXG4gKiBAcGFyYW0ge0NhbGxiYWNrLjxBbmFseXRpY3N+UmVwb3J0UmVzdWx0Pn0gW2NhbGxiYWNrXSAtIENhbGxiYWNrIGZ1bmN0aW9uXG4gKiBAcmV0dXJucyB7UHJvbWlzZS48QW5hbHl0aWNzflJlcG9ydFJlc3VsdD59XG4gKi9cbi8qKlxuICogRGVzdHJveSBhIHJlcG9ydFxuICpcbiAqIEBtZXRob2QgQW5hbHl0aWNzflJlcG9ydCNkZXN0cm95XG4gKiBAcGFyYW0ge0NhbGxiYWNrLjxBbmFseXRpY3N+UmVwb3J0UmVzdWx0Pn0gW2NhbGxiYWNrXSAtIENhbGxiYWNrIGZ1bmN0aW9uXG4gKiBAcmV0dXJucyB7UHJvbWlzZS48QW5hbHl0aWNzflJlcG9ydFJlc3VsdD59XG4gKi9cblJlcG9ydC5wcm90b3R5cGVbXCJkZWxldGVcIl0gPVxuUmVwb3J0LnByb3RvdHlwZS5kZWwgPVxuUmVwb3J0LnByb3RvdHlwZS5kZXN0cm95ID0gZnVuY3Rpb24oY2FsbGJhY2spIHtcbiAgdmFyIHVybCA9IFsgdGhpcy5fY29ubi5fYmFzZVVybCgpLCBcImFuYWx5dGljc1wiLCBcInJlcG9ydHNcIiwgdGhpcy5pZCBdLmpvaW4oJy8nKTtcbiAgcmV0dXJuIHRoaXMuX2Nvbm4ucmVxdWVzdCh7bWV0aG9kOiAnREVMRVRFJywgdXJsOiB1cmx9KS50aGVuQ2FsbChjYWxsYmFjayk7XG59O1xuXG4vKipcbiAqIENsb25lcyBhIGdpdmVuIHJlcG9ydFxuICpcbiAqIEBtZXRob2QgQW5hbHl0aWNzflJlcG9ydCNjbG9uZVxuICogQHBhcmFtIHtTdHJpbmd9IG5hbWUgLSBUaGUgbmFtZSBvZiB0aGUgbmV3IHJlcG9ydFxuICogQHBhcmFtIHtDYWxsYmFjay48QW5hbHl0aWNzflJlcG9ydFJlc3VsdD59IFtjYWxsYmFja10gLSBDYWxsYmFjayBmdW5jdGlvblxuICogQHJldHVybnMge1Byb21pc2UuPEFuYWx5dGljc35SZXBvcnRSZXN1bHQ+fVxuICovXG5SZXBvcnQucHJvdG90eXBlLmNsb25lID0gZnVuY3Rpb24obmFtZSwgY2FsbGJhY2spIHtcbiAgdmFyIHVybCA9IFsgdGhpcy5fY29ubi5fYmFzZVVybCgpLCBcImFuYWx5dGljc1wiLCBcInJlcG9ydHNcIiBdLmpvaW4oJy8nKTtcbiAgdXJsICs9IFwiP2Nsb25lSWQ9XCIgKyB0aGlzLmlkO1xuICB2YXIgZGF0YSA9IHsgcmVwb3J0TWV0YWRhdGE6IHsgbmFtZTogbmFtZSB9IH07XG4gIHZhciBwYXJhbXMgPSB7IG1ldGhvZCA6ICdQT1NUJywgdXJsOiB1cmwsIGhlYWRlcnM6IHsgXCJDb250ZW50LVR5cGVcIiA6IFwiYXBwbGljYXRpb24vanNvblwiIH0sIGJvZHk6IEpTT04uc3RyaW5naWZ5KGRhdGEpfTtcblxuICByZXR1cm4gdGhpcy5fY29ubi5yZXF1ZXN0KHBhcmFtcykudGhlbkNhbGwoY2FsbGJhY2spO1xufTtcblxuLyoqXG4gKiBFeHBsYWluIHBsYW4gZm9yIGV4ZWN1dGluZyByZXBvcnRcbiAqXG4gKiBAbWV0aG9kIEFuYWx5dGljc35SZXBvcnQjZXhwbGFpblxuICogQHBhcmFtIHtDYWxsYmFjay48RXhwbGFpbkluZm8+fSBbY2FsbGJhY2tdIC0gQ2FsbGJhY2sgZnVuY3Rpb25cbiAqIEByZXR1cm5zIHtQcm9taXNlLjxFeHBsYWluSW5mbz59XG4gKi9cblJlcG9ydC5wcm90b3R5cGUuZXhwbGFpbiA9IGZ1bmN0aW9uKGNhbGxiYWNrKSB7XG4gIHZhciB1cmwgPSBcIi9xdWVyeS8/ZXhwbGFpbj1cIiArIHRoaXMuaWQ7XG4gIHJldHVybiB0aGlzLl9jb25uLnJlcXVlc3QodXJsKS50aGVuQ2FsbChjYWxsYmFjayk7XG59O1xuXG5cbi8qKlxuICogUnVuIHJlcG9ydCBzeW5jaHJvbm91c2x5XG4gKlxuICogQG1ldGhvZCBBbmFseXRpY3N+UmVwb3J0I2V4ZWN1dGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBbb3B0aW9uc10gLSBPcHRpb25zXG4gKiBAcGFyYW0ge0Jvb2xlYW59IG9wdGlvbnMuZGV0YWlscyAtIEZsYWcgaWYgaW5jbHVkZSBkZXRhaWwgaW4gcmVzdWx0XG4gKiBAcGFyYW0ge0FuYWx5dGljc35SZXBvcnRNZXRhZGF0YX0gb3B0aW9ucy5tZXRhZGF0YSAtIE92ZXJyaWRpbmcgcmVwb3J0IG1ldGFkYXRhXG4gKiBAcGFyYW0ge0NhbGxiYWNrLjxBbmFseXRpY3N+UmVwb3J0UmVzdWx0Pn0gW2NhbGxiYWNrXSAtIENhbGxiYWNrIGZ1bmN0aW9uXG4gKiBAcmV0dXJucyB7UHJvbWlzZS48QW5hbHl0aWNzflJlcG9ydFJlc3VsdD59XG4gKi9cblJlcG9ydC5wcm90b3R5cGUucnVuID1cblJlcG9ydC5wcm90b3R5cGUuZXhlYyA9XG5SZXBvcnQucHJvdG90eXBlLmV4ZWN1dGUgPSBmdW5jdGlvbihvcHRpb25zLCBjYWxsYmFjaykge1xuICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTtcbiAgaWYgKF8uaXNGdW5jdGlvbihvcHRpb25zKSkge1xuICAgIGNhbGxiYWNrID0gb3B0aW9ucztcbiAgICBvcHRpb25zID0ge307XG4gIH1cbiAgdmFyIHVybCA9IFsgdGhpcy5fY29ubi5fYmFzZVVybCgpLCBcImFuYWx5dGljc1wiLCBcInJlcG9ydHNcIiwgdGhpcy5pZCBdLmpvaW4oJy8nKTtcbiAgdXJsICs9IFwiP2luY2x1ZGVEZXRhaWxzPVwiICsgKG9wdGlvbnMuZGV0YWlscyA/IFwidHJ1ZVwiIDogXCJmYWxzZVwiKTtcbiAgdmFyIHBhcmFtcyA9IHsgbWV0aG9kIDogb3B0aW9ucy5tZXRhZGF0YSA/ICdQT1NUJyA6ICdHRVQnLCB1cmwgOiB1cmwgfTtcbiAgaWYgKG9wdGlvbnMubWV0YWRhdGEpIHtcbiAgICBwYXJhbXMuaGVhZGVycyA9IHsgXCJDb250ZW50LVR5cGVcIiA6IFwiYXBwbGljYXRpb24vanNvblwiIH07XG4gICAgcGFyYW1zLmJvZHkgPSBKU09OLnN0cmluZ2lmeShvcHRpb25zLm1ldGFkYXRhKTtcbiAgfVxuICByZXR1cm4gdGhpcy5fY29ubi5yZXF1ZXN0KHBhcmFtcykudGhlbkNhbGwoY2FsbGJhY2spO1xufTtcblxuXG4vKipcbiAqIFJ1biByZXBvcnQgYXN5bmNocm9ub3VzbHlcbiAqXG4gKiBAbWV0aG9kIEFuYWx5dGljc35SZXBvcnQjZXhlY3V0ZUFzeW5jXG4gKiBAcGFyYW0ge09iamVjdH0gW29wdGlvbnNdIC0gT3B0aW9uc1xuICogQHBhcmFtIHtCb29sZWFufSBvcHRpb25zLmRldGFpbHMgLSBGbGFnIGlmIGluY2x1ZGUgZGV0YWlsIGluIHJlc3VsdFxuICogQHBhcmFtIHtBbmFseXRpY3N+UmVwb3J0TWV0YWRhdGF9IG9wdGlvbnMubWV0YWRhdGEgLSBPdmVycmlkaW5nIHJlcG9ydCBtZXRhZGF0YVxuICogQHBhcmFtIHtDYWxsYmFjay48QW5hbHl0aWNzflJlcG9ydEluc3RhbmNlQXR0cnM+fSBbY2FsbGJhY2tdIC0gQ2FsbGJhY2sgZnVuY3Rpb25cbiAqIEByZXR1cm5zIHtQcm9taXNlLjxBbmFseXRpY3N+UmVwb3J0SW5zdGFuY2VBdHRycz59XG4gKi9cblJlcG9ydC5wcm90b3R5cGUuZXhlY3V0ZUFzeW5jID0gZnVuY3Rpb24ob3B0aW9ucywgY2FsbGJhY2spIHtcbiAgb3B0aW9ucyA9IG9wdGlvbnMgfHwge307XG4gIGlmIChfLmlzRnVuY3Rpb24ob3B0aW9ucykpIHtcbiAgICBjYWxsYmFjayA9IG9wdGlvbnM7XG4gICAgb3B0aW9ucyA9IHt9O1xuICB9XG4gIHZhciB1cmwgPSBbIHRoaXMuX2Nvbm4uX2Jhc2VVcmwoKSwgXCJhbmFseXRpY3NcIiwgXCJyZXBvcnRzXCIsIHRoaXMuaWQsIFwiaW5zdGFuY2VzXCIgXS5qb2luKCcvJyk7XG4gIGlmIChvcHRpb25zLmRldGFpbHMpIHtcbiAgICB1cmwgKz0gXCI/aW5jbHVkZURldGFpbHM9dHJ1ZVwiO1xuICB9XG4gIHZhciBwYXJhbXMgPSB7IG1ldGhvZCA6ICdQT1NUJywgdXJsIDogdXJsLCBib2R5OiBcIlwiIH07XG4gIGlmIChvcHRpb25zLm1ldGFkYXRhKSB7XG4gICAgcGFyYW1zLmhlYWRlcnMgPSB7IFwiQ29udGVudC1UeXBlXCIgOiBcImFwcGxpY2F0aW9uL2pzb25cIiB9O1xuICAgIHBhcmFtcy5ib2R5ID0gSlNPTi5zdHJpbmdpZnkob3B0aW9ucy5tZXRhZGF0YSk7XG4gIH1cbiAgcmV0dXJuIHRoaXMuX2Nvbm4ucmVxdWVzdChwYXJhbXMpLnRoZW5DYWxsKGNhbGxiYWNrKTtcbn07XG5cbi8qKlxuICogR2V0IHJlcG9ydCBpbnN0YW5jZSBmb3Igc3BlY2lmaWVkIGluc3RhbmNlIElEXG4gKlxuICogQG1ldGhvZCBBbmFseXRpY3N+UmVwb3J0I2luc3RhbmNlXG4gKiBAcGFyYW0ge1N0cmluZ30gaWQgLSBSZXBvcnQgaW5zdGFuY2UgSURcbiAqIEByZXR1cm5zIHtBbmFseXRpY3N+UmVwb3J0SW5zdGFuY2V9XG4gKi9cblJlcG9ydC5wcm90b3R5cGUuaW5zdGFuY2UgPSBmdW5jdGlvbihpZCkge1xuICByZXR1cm4gbmV3IFJlcG9ydEluc3RhbmNlKHRoaXMsIGlkKTtcbn07XG5cbi8qKlxuICogTGlzdCByZXBvcnQgaW5zdGFuY2VzIHdoaWNoIGhhZCBiZWVuIGV4ZWN1dGVkIGFzeW5jaHJvbm91c2x5XG4gKlxuICogQG1ldGhvZCBBbmFseXRpY3N+UmVwb3J0I2luc3RhbmNlc1xuICogQHBhcmFtIHtDYWxsYmFjay48QXJyYXkuPEFuYWx5dGljc35SZXBvcnRJbnN0YW5jZUF0dHJzPj59IFtjYWxsYmFja10gLSBDYWxsYmFjayBmdW5jdGlvblxuICogQHJldHVybnMge1Byb21pc2UuPEFycmF5LjxBbmFseXRpY3N+UmVwb3J0SW5zdGFuY2VBdHRycz4+fVxuICovXG5SZXBvcnQucHJvdG90eXBlLmluc3RhbmNlcyA9IGZ1bmN0aW9uKGNhbGxiYWNrKSB7XG4gIHZhciB1cmwgPSBbIHRoaXMuX2Nvbm4uX2Jhc2VVcmwoKSwgXCJhbmFseXRpY3NcIiwgXCJyZXBvcnRzXCIsIHRoaXMuaWQsIFwiaW5zdGFuY2VzXCIgXS5qb2luKCcvJyk7XG4gIHJldHVybiB0aGlzLl9jb25uLnJlcXVlc3QodXJsKS50aGVuQ2FsbChjYWxsYmFjayk7XG59O1xuXG4vKipcbiAqIERhc2hib2FyZCBvYmplY3QgaW4gdGhlIEFuYWx5dGljcyBBUElcbiAqXG4gKiBAcHJvdGVjdGVkXG4gKiBAY2xhc3MgQW5hbHl0aWNzLURhc2hib2FyZFxuICogQHBhcmFtIHtDb25uZWN0aW9ufSBjb25uIENvbm5lY3Rpb25cbiAqIEBwYXJhbSB7U3RyaW5nfSBpZCAtIFRoZSBJZFxuICovXG5cbnZhciBEYXNoYm9hcmQgPSBmdW5jdGlvbihjb25uLCBpZCkge1xuICB0aGlzLl9jb25uID0gY29ubjtcbiAgdGhpcy5pZCA9IGlkO1xufTtcblxuLyoqXG4gKiBEZXNjcmliZSBkYXNoYm9hcmQgbWV0YWRhdGFcbiAqXG4gKiBAbWV0aG9kIEFuYWx5dGljc35EYXNoYm9hcmQjZGVzY3JpYmVcbiAqIEBwYXJhbSB7Q2FsbGJhY2suPEFuYWx5dGljcy1EYXNoYm9hcmRNZXRhZGF0YT59IFtjYWxsYmFja10gLSBDYWxsYmFjayBmdW5jdGlvblxuICogQHJldHVybnMge1Byb21pc2UuPEFuYWx5dGljcy1EYXNoYm9hcmRNZXRhZGF0YT59XG4gKi9cbkRhc2hib2FyZC5wcm90b3R5cGUuZGVzY3JpYmUgPSBmdW5jdGlvbihjYWxsYmFjaykge1xuICB2YXIgdXJsID0gWyB0aGlzLl9jb25uLl9iYXNlVXJsKCksIFwiYW5hbHl0aWNzXCIsIFwiZGFzaGJvYXJkc1wiLCB0aGlzLmlkLCBcImRlc2NyaWJlXCIgXS5qb2luKCcvJyk7XG4gIHJldHVybiB0aGlzLl9jb25uLnJlcXVlc3QodXJsKS50aGVuQ2FsbChjYWxsYmFjayk7XG59O1xuXG4vKipcbiAqIEdldCBkZXRhaWxzIGFib3V0IGRhc2hib2FyZCBjb21wb25lbnRzXG4gKlxuICogQG1ldGhvZCBBbmFseXRpY3N+RGFzaGJvYXJkI2NvbXBvbmVudHNcbiAqIEBwYXJhbSB7Q2FsbGJhY2suPEFuYWx5dGljcy1EYXNoYm9hcmRDb21wb25lbnRNZXRhZGF0YT59IFtjYWxsYmFja10gLSBDYWxsYmFjayBmdW5jdGlvblxuICogQHJldHVybnMge1Byb21pc2UuPEFuYWx5dGljcy1EYXNoYm9hcmRDb21wb25lbnRNZXRhZGF0YT59XG4gKi9cbkRhc2hib2FyZC5wcm90b3R5cGUuY29tcG9uZW50cyA9IGZ1bmN0aW9uKGNvbXBvbmVudElkcywgY2FsbGJhY2spIHtcbiAgdmFyIHVybCA9IFsgdGhpcy5fY29ubi5fYmFzZVVybCgpLCBcImFuYWx5dGljc1wiLCBcImRhc2hib2FyZHNcIiwgdGhpcy5pZF0uam9pbignLycpO1xuICB2YXIgZGF0YSA9IHt9O1xuICBpZiAoXy5pc0Z1bmN0aW9uKGNvbXBvbmVudElkcykpIHtcbiAgICBjYWxsYmFjayA9IGNvbXBvbmVudElkcztcbiAgfSBlbHNlIGlmIChfLmlzQXJyYXkoY29tcG9uZW50SWRzKSkge1xuICAgIGRhdGEuY29tcG9uZW50SWRzID0gY29tcG9uZW50SWRzO1xuICB9IGVsc2UgaWYgKF8uaXNTdHJpbmcoY29tcG9uZW50SWRzKSkge1xuICAgIGRhdGEuY29tcG9uZW50SWRzID0gWyBjb21wb25lbnRJZHMgXTtcbiAgfVxuICB2YXIgcGFyYW1zID0geyBtZXRob2QgOiAnUE9TVCcsIHVybCA6IHVybCwgaGVhZGVycyA6IHsgXCJDb250ZW50LVR5cGVcIiA6IFwiYXBwbGljYXRpb24vanNvblwiIH0sIGJvZHkgOiBKU09OLnN0cmluZ2lmeShkYXRhKX07XG4gIHJldHVybiB0aGlzLl9jb25uLnJlcXVlc3QocGFyYW1zKS50aGVuQ2FsbChjYWxsYmFjayk7XG59O1xuXG4vKipcbiAqIEdldCBkYXNoYm9hcmQgc3RhdHVzXG4gKlxuICogQG1ldGhvZCBBbmFseXRpY3N+RGFzaGJvYXJkI3N0YXR1c1xuICogQHBhcmFtIHtDYWxsYmFjay48QW5hbHl0aWNzLURhc2hib2FyZFN0YXR1c01ldGFkYXRhPn0gW2NhbGxiYWNrXSAtIENhbGxiYWNrIGZ1bmN0aW9uXG4gKiBAcmV0dXJucyB7UHJvbWlzZS48QW5hbHl0aWNzLURhc2hib2FyZFN0YXR1c01ldGFkYXRhPn1cbiAqL1xuRGFzaGJvYXJkLnByb3RvdHlwZS5zdGF0dXMgPSBmdW5jdGlvbihjYWxsYmFjaykge1xuICB2YXIgdXJsID0gWyB0aGlzLl9jb25uLl9iYXNlVXJsKCksIFwiYW5hbHl0aWNzXCIsIFwiZGFzaGJvYXJkc1wiLCB0aGlzLmlkLCBcInN0YXR1c1wiIF0uam9pbignLycpO1xuICByZXR1cm4gdGhpcy5fY29ubi5yZXF1ZXN0KHVybCkudGhlbkNhbGwoY2FsbGJhY2spO1xufTtcblxuLyoqXG4gKiBSZWZyZXNoIGEgZGFzaGJvYXJkXG4gKlxuICogQG1ldGhvZCBBbmFseXRpY3N+RGFzaGJvYXJkI3JlZnJlc2hcbiAqIEBwYXJhbSB7Q2FsbGJhY2suPEFuYWx5dGljcy1EYXNoYm9hcmRTdGF0dXNVcmw+fSBbY2FsbGJhY2tdIC0gQ2FsbGJhY2sgZnVuY3Rpb25cbiAqIEByZXR1cm5zIHtQcm9taXNlLjxBbmFseXRpY3MtRGFzaGJvYXJkU3RhdHVzVXJsPn1cbiAqL1xuRGFzaGJvYXJkLnByb3RvdHlwZS5yZWZyZXNoID0gZnVuY3Rpb24oY2FsbGJhY2spIHtcbiAgdmFyIHVybCA9IFsgdGhpcy5fY29ubi5fYmFzZVVybCgpLCBcImFuYWx5dGljc1wiLCBcImRhc2hib2FyZHNcIiwgdGhpcy5pZCBdLmpvaW4oJy8nKTtcbiAgdmFyIHBhcmFtcyA9IHsgbWV0aG9kIDogJ1BVVCcsIHVybCA6IHVybCwgYm9keTogJycgfTtcbiAgcmV0dXJuIHRoaXMuX2Nvbm4ucmVxdWVzdChwYXJhbXMpLnRoZW5DYWxsKGNhbGxiYWNrKTtcbn07XG5cbi8qKlxuICogQ2xvbmUgYSBkYXNoYm9hcmRcbiAqXG4gKiBAbWV0aG9kIEFuYWx5dGljc35EYXNoYm9hcmQjY2xvbmVcbiAqIEBwYXJhbSB7Q2FsbGJhY2suPEFuYWx5dGljcy1EYXNoYm9hcmRNZXRhZGF0YT59IFtjYWxsYmFja10gLSBDYWxsYmFjayBmdW5jdGlvblxuICogQHJldHVybnMge1Byb21pc2UuPEFuYWx5dGljcy1EYXNoYm9hcmRNZXRhZGF0YT59XG4gKi9cbkRhc2hib2FyZC5wcm90b3R5cGUuY2xvbmUgPSBmdW5jdGlvbihuYW1lLCBmb2xkZXJpZCwgY2FsbGJhY2spIHtcbiAgdmFyIHVybCA9IFsgdGhpcy5fY29ubi5fYmFzZVVybCgpLCBcImFuYWx5dGljc1wiLCBcImRhc2hib2FyZHNcIiBdLmpvaW4oJy8nKTtcbiAgdXJsICs9IFwiP2Nsb25lSWQ9XCIgKyB0aGlzLmlkO1xuICB2YXIgZGF0YSA9IHt9O1xuXG4gIGlmIChfLmlzT2JqZWN0KG5hbWUpKSB7XG4gICAgZGF0YSA9IG5hbWU7XG4gICAgY2FsbGJhY2sgPSBmb2xkZXJpZDtcbiAgfSBlbHNlIHtcbiAgICBkYXRhLm5hbWUgPSBuYW1lO1xuICAgIGRhdGEuZm9sZGVySWQgPSBmb2xkZXJpZDtcbiAgfVxuICB2YXIgcGFyYW1zID0geyBtZXRob2QgOiAnUE9TVCcsIHVybCA6IHVybCwgaGVhZGVycyA6IHsgXCJDb250ZW50LVR5cGVcIiA6IFwiYXBwbGljYXRpb24vanNvblwiIH0sIGJvZHkgOiBKU09OLnN0cmluZ2lmeShkYXRhKX07XG5cbiAgcmV0dXJuIHRoaXMuX2Nvbm4ucmVxdWVzdChwYXJhbXMpLnRoZW5DYWxsKGNhbGxiYWNrKTtcbn07XG5cbi8qKlxuICogU3lub255bSBvZiBBbmFseXRpY3N+RGFzaGJvYXJkI2Rlc3Ryb3koKVxuICpcbiAqIEBtZXRob2QgQW5hbHl0aWNzfkRhc2hib2FyZCNkZWxldGVcbiAqIEBwYXJhbSB7Q2FsbGJhY2suPEFuYWx5dGljc35EYXNoYm9hcmRSZXN1bHQ+fSBbY2FsbGJhY2tdIC0gQ2FsbGJhY2sgZnVuY3Rpb25cbiAqIEByZXR1cm5zIHtQcm9taXNlLjxBbmFseXRpY3N+RGFzaGJvYXJkUmVzdWx0Pn1cbiAqL1xuLyoqXG4gKiBTeW5vbnltIG9mIEFuYWx5dGljc35EYXNoYm9hcmQjZGVzdHJveSgpXG4gKlxuICogQG1ldGhvZCBBbmFseXRpY3N+RGFzaGJvYXJkI2RlbFxuICogQHBhcmFtIHtDYWxsYmFjay48QW5hbHl0aWNzfkRhc2hib2FyZFJlc3VsdD59IFtjYWxsYmFja10gLSBDYWxsYmFjayBmdW5jdGlvblxuICogQHJldHVybnMge1Byb21pc2UuPEFuYWx5dGljc35EYXNoYm9hcmRSZXN1bHQ+fVxuICovXG4vKipcbiAqIERlc3Ryb3kgYSBkYXNoYm9hcmRcbiAqXG4gKiBAbWV0aG9kIEFuYWx5dGljc35EYXNoYm9hcmQjZGVzdHJveVxuICogQHBhcmFtIHtDYWxsYmFjay48QW5hbHl0aWNzfkRhc2hib2FyZFJlc3VsdD59IFtjYWxsYmFja10gLSBDYWxsYmFjayBmdW5jdGlvblxuICogQHJldHVybnMge1Byb21pc2UuPEFuYWx5dGljc35EYXNoYm9hcmRSZXN1bHQ+fVxuICovXG5EYXNoYm9hcmQucHJvdG90eXBlW1wiZGVsZXRlXCJdID1cbkRhc2hib2FyZC5wcm90b3R5cGUuZGVsID1cbkRhc2hib2FyZC5wcm90b3R5cGUuZGVzdHJveSA9IGZ1bmN0aW9uKGNhbGxiYWNrKSB7XG4gIHZhciB1cmwgPSBbIHRoaXMuX2Nvbm4uX2Jhc2VVcmwoKSwgXCJhbmFseXRpY3NcIiwgXCJkYXNoYm9hcmRzXCIsIHRoaXMuaWQgXS5qb2luKCcvJyk7XG4gIHJldHVybiB0aGlzLl9jb25uLnJlcXVlc3Qoe21ldGhvZDogJ0RFTEVURScsIHVybDogdXJsfSkudGhlbkNhbGwoY2FsbGJhY2spO1xufTtcblxuLyoqXG4gKiBBUEkgY2xhc3MgZm9yIEFuYWx5dGljcyBBUElcbiAqXG4gKiBAY2xhc3NcbiAqIEBwYXJhbSB7Q29ubmVjdGlvbn0gY29ubiBDb25uZWN0aW9uXG4gKi9cbnZhciBBbmFseXRpY3MgPSBmdW5jdGlvbihjb25uKSB7XG4gIHRoaXMuX2Nvbm4gPSBjb25uO1xufTtcblxuLyoqXG4gKiBHZXQgcmVwb3J0IG9iamVjdCBvZiBBbmFseXRpY3MgQVBJXG4gKlxuICogQHBhcmFtIHtTdHJpbmd9IGlkIC0gUmVwb3J0IElkXG4gKiBAcmV0dXJucyB7QW5hbHl0aWNzflJlcG9ydH1cbiAqL1xuQW5hbHl0aWNzLnByb3RvdHlwZS5yZXBvcnQgPSBmdW5jdGlvbihpZCkge1xuICByZXR1cm4gbmV3IFJlcG9ydCh0aGlzLl9jb25uLCBpZCk7XG59O1xuXG4vKipcbiAqIEdldCByZWNlbnQgcmVwb3J0IGxpc3RcbiAqXG4gKiBAcGFyYW0ge0NhbGxiYWNrLjxBcnJheS48QW5hbHl0aWNzflJlcG9ydEluZm8+Pn0gW2NhbGxiYWNrXSAtIENhbGxiYWNrIGZ1bmN0aW9uXG4gKiBAcmV0dXJucyB7UHJvbWlzZS48QXJyYXkuPEFuYWx5dGljc35SZXBvcnRJbmZvPj59XG4gKi9cbkFuYWx5dGljcy5wcm90b3R5cGUucmVwb3J0cyA9IGZ1bmN0aW9uKGNhbGxiYWNrKSB7XG4gIHZhciB1cmwgPSBbIHRoaXMuX2Nvbm4uX2Jhc2VVcmwoKSwgXCJhbmFseXRpY3NcIiwgXCJyZXBvcnRzXCIgXS5qb2luKCcvJyk7XG4gIHJldHVybiB0aGlzLl9jb25uLnJlcXVlc3QodXJsKS50aGVuQ2FsbChjYWxsYmFjayk7XG59O1xuXG4vKipcbiAqIEdldCBkYXNoYm9hcmQgb2JqZWN0IG9mIEFuYWx5dGljcyBBUElcbiAqXG4gKiBAcGFyYW0ge1N0cmluZ30gaWQgLSBEYXNoYm9hcmQgSWRcbiAqIEByZXR1cm5zIHtBbmFseXRpY3N+RGFzaGJvYXJkfVxuICovXG5BbmFseXRpY3MucHJvdG90eXBlLmRhc2hib2FyZCA9IGZ1bmN0aW9uKGlkKSB7XG4gIHJldHVybiBuZXcgRGFzaGJvYXJkKHRoaXMuX2Nvbm4sIGlkKTtcbn07XG5cbi8qKlxuICogR2V0IHJlY2VudCBkYXNoYm9hcmQgbGlzdFxuICpcbiAqIEBwYXJhbSB7Q2FsbGJhY2suPEFycmF5LjxBbmFseXRpY3N+RGFzaGJvYXJkSW5mbz4+fSBbY2FsbGJhY2tdIC0gQ2FsbGJhY2sgZnVuY3Rpb25cbiAqIEByZXR1cm5zIHtQcm9taXNlLjxBcnJheS48QW5hbHl0aWNzfkRhc2hib2FyZEluZm8+Pn1cbiAqL1xuQW5hbHl0aWNzLnByb3RvdHlwZS5kYXNoYm9hcmRzID0gZnVuY3Rpb24oY2FsbGJhY2spIHtcbiAgdmFyIHVybCA9IFsgdGhpcy5fY29ubi5fYmFzZVVybCgpLCBcImFuYWx5dGljc1wiLCBcImRhc2hib2FyZHNcIiBdLmpvaW4oJy8nKTtcbiAgcmV0dXJuIHRoaXMuX2Nvbm4ucmVxdWVzdCh1cmwpLnRoZW5DYWxsKGNhbGxiYWNrKTtcbn07XG5cbi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuLypcbiAqIFJlZ2lzdGVyIGhvb2sgaW4gY29ubmVjdGlvbiBpbnN0YW50aWF0aW9uIGZvciBkeW5hbWljYWxseSBhZGRpbmcgdGhpcyBBUEkgbW9kdWxlIGZlYXR1cmVzXG4gKi9cbmpzZm9yY2Uub24oJ2Nvbm5lY3Rpb246bmV3JywgZnVuY3Rpb24oY29ubikge1xuICBjb25uLmFuYWx5dGljcyA9IG5ldyBBbmFseXRpY3MoY29ubik7XG59KTtcblxuXG5tb2R1bGUuZXhwb3J0cyA9IEFuYWx5dGljcztcbiJdfQ==
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
!function(t){var n;"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):(n=(n=(n=(n="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this).jsforce||(n.jsforce={})).modules||(n.modules={})).api||(n.api={})).Analytics=t()}(function(){return function o(r,i,s){function a(n,t){if(!i[n]){if(!r[n]){var e="function"==typeof require&&require;if(!t&&e)return e(n,!0);if(c)return c(n,!0);throw(e=new Error("Cannot find module '"+n+"'")).code="MODULE_NOT_FOUND",e}e=i[n]={exports:{}},r[n][0].call(e.exports,function(t){return a(r[n][1][t]||t)},e,e.exports,o,r,i,s)}return i[n].exports}for(var c="function"==typeof require&&require,t=0;t<s.length;t++)a(s[t]);return a}({1:[function(t,n,e){"use strict";function o(t,n){this._report=t,this._conn=t._conn,this.id=n}var i=window.jsforce.require("lodash/core"),r=window.jsforce.require("./core");window.jsforce.require("./promise");o.prototype.retrieve=function(t){var n=this._conn,e=this._report,e=[n._baseUrl(),"analytics","reports",e.id,"instances",this.id].join("/");return n.request(e).thenCall(t)};function s(t,n){this._conn=t,this.id=n}s.prototype.describe=function(t){var n=[this._conn._baseUrl(),"analytics","reports",this.id,"describe"].join("/");return this._conn.request(n).thenCall(t)},s.prototype.delete=s.prototype.del=s.prototype.destroy=function(t){var n=[this._conn._baseUrl(),"analytics","reports",this.id].join("/");return this._conn.request({method:"DELETE",url:n}).thenCall(t)},s.prototype.clone=function(t,n){var e=[this._conn._baseUrl(),"analytics","reports"].join("/"),t={reportMetadata:{name:t}},t={method:"POST",url:e+="?cloneId="+this.id,headers:{"Content-Type":"application/json"},body:JSON.stringify(t)};return this._conn.request(t).thenCall(n)},s.prototype.explain=function(t){var n="/query/?explain="+this.id;return this._conn.request(n).thenCall(t)},s.prototype.run=s.prototype.exec=s.prototype.execute=function(t,n){t=t||{},i.isFunction(t)&&(n=t,t={});var e=[this._conn._baseUrl(),"analytics","reports",this.id].join("/");e+="?includeDetails="+(t.details?"true":"false");e={method:t.metadata?"POST":"GET",url:e};return t.metadata&&(e.headers={"Content-Type":"application/json"},e.body=JSON.stringify(t.metadata)),this._conn.request(e).thenCall(n)},s.prototype.executeAsync=function(t,n){t=t||{},i.isFunction(t)&&(n=t,t={});var e=[this._conn._baseUrl(),"analytics","reports",this.id,"instances"].join("/");t.details&&(e+="?includeDetails=true");e={method:"POST",url:e,body:""};return t.metadata&&(e.headers={"Content-Type":"application/json"},e.body=JSON.stringify(t.metadata)),this._conn.request(e).thenCall(n)},s.prototype.instance=function(t){return new o(this,t)},s.prototype.instances=function(t){var n=[this._conn._baseUrl(),"analytics","reports",this.id,"instances"].join("/");return this._conn.request(n).thenCall(t)};function a(t,n){this._conn=t,this.id=n}a.prototype.describe=function(t){var n=[this._conn._baseUrl(),"analytics","dashboards",this.id,"describe"].join("/");return this._conn.request(n).thenCall(t)},a.prototype.components=function(t,n){var e=[this._conn._baseUrl(),"analytics","dashboards",this.id].join("/"),o={};i.isFunction(t)?n=t:i.isArray(t)?o.componentIds=t:i.isString(t)&&(o.componentIds=[t]);o={method:"POST",url:e,headers:{"Content-Type":"application/json"},body:JSON.stringify(o)};return this._conn.request(o).thenCall(n)},a.prototype.status=function(t){var n=[this._conn._baseUrl(),"analytics","dashboards",this.id,"status"].join("/");return this._conn.request(n).thenCall(t)},a.prototype.refresh=function(t){var n={method:"PUT",url:[this._conn._baseUrl(),"analytics","dashboards",this.id].join("/"),body:""};return this._conn.request(n).thenCall(t)},a.prototype.clone=function(t,n,e){var o=[this._conn._baseUrl(),"analytics","dashboards"].join("/");o+="?cloneId="+this.id;var r={};i.isObject(t)?(r=t,e=n):(r.name=t,r.folderId=n);r={method:"POST",url:o,headers:{"Content-Type":"application/json"},body:JSON.stringify(r)};return this._conn.request(r).thenCall(e)},a.prototype.delete=a.prototype.del=a.prototype.destroy=function(t){var n=[this._conn._baseUrl(),"analytics","dashboards",this.id].join("/");return this._conn.request({method:"DELETE",url:n}).thenCall(t)};function c(t){this._conn=t}c.prototype.report=function(t){return new s(this._conn,t)},c.prototype.reports=function(t){var n=[this._conn._baseUrl(),"analytics","reports"].join("/");return this._conn.request(n).thenCall(t)},c.prototype.dashboard=function(t){return new a(this._conn,t)},c.prototype.dashboards=function(t){var n=[this._conn._baseUrl(),"analytics","dashboards"].join("/");return this._conn.request(n).thenCall(t)},r.on("connection:new",function(t){t.analytics=new c(t)}),n.exports=c},{}]},{},[1])(1)});
|
|
2
|
+
//# sourceMappingURL=jsforce-api-analytics.min.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["node_modules/browser-pack/_prelude.js","lib/api/analytics.js"],"names":["f","g","exports","module","define","amd","window","global","self","this","jsforce","modules","api","Analytics","r","e","n","t","o","i","c","require","u","a","Error","code","p","call","length","1","ReportInstance","report","id","_report","_conn","_","prototype","retrieve","callback","conn","url","_baseUrl","join","request","thenCall","Report","describe","del","destroy","method","clone","name","data","reportMetadata","params","headers","Content-Type","body","JSON","stringify","explain","run","exec","execute","options","isFunction","details","metadata","executeAsync","instance","instances","Dashboard","components","componentIds","isArray","isString","status","refresh","folderid","isObject","folderId","reports","dashboard","dashboards","on","analytics"],"mappings":"CAAA,SAAAA,GAAA,IAAAC,EAAA,iBAAAC,SAAA,oBAAAC,OAAAA,OAAAD,QAAAF,IAAA,mBAAAI,QAAAA,OAAAC,IAAAD,OAAA,GAAAJ,IAAAC,GAAAA,GAAAA,GAAAA,EAAA,oBAAAK,OAAAA,OAAA,oBAAAC,OAAAA,OAAA,oBAAAC,KAAAA,KAAAC,MAAAC,UAAAT,EAAAS,QAAA,KAAAC,UAAAV,EAAAU,QAAA,KAAAC,MAAAX,EAAAW,IAAA,KAAAC,UAAAb,IAAA,CAAA,WAAA,OAAA,SAAAc,EAAAC,EAAAC,EAAAC,GAAA,SAAAC,EAAAC,EAAAnB,GAAA,IAAAgB,EAAAG,GAAA,CAAA,IAAAJ,EAAAI,GAAA,CAAA,IAAAC,EAAA,mBAAAC,SAAAA,QAAA,IAAArB,GAAAoB,EAAA,OAAAA,EAAAD,GAAA,GAAA,GAAAG,EAAA,OAAAA,EAAAH,GAAA,GAAA,MAAAI,EAAA,IAAAC,MAAA,uBAAAL,EAAA,MAAAM,KAAA,mBAAAF,EAAAG,EAAAV,EAAAG,GAAA,CAAAjB,QAAA,IAAAa,EAAAI,GAAA,GAAAQ,KAAAD,EAAAxB,QAAA,SAAAY,GAAA,OAAAI,EAAAH,EAAAI,GAAA,GAAAL,IAAAA,IAAAY,EAAAA,EAAAxB,QAAAY,EAAAC,EAAAC,EAAAC,GAAA,OAAAD,EAAAG,GAAAjB,QAAA,IAAA,IAAAoB,EAAA,mBAAAD,SAAAA,QAAAF,EAAA,EAAAA,EAAAF,EAAAW,OAAAT,IAAAD,EAAAD,EAAAE,IAAA,OAAAD,EAAA,CAAA,CAAAW,EAAA,CAAA,SAAAR,EAAAlB,EAAAD,gBCmBA,SAAA4B,EAAAC,EAAAC,GACAvB,KAAAwB,QAAAF,EACAtB,KAAAyB,MAAAH,EAAAG,MACAzB,KAAAuB,GAAAA,EAfA,IAAAG,EAAA7B,OAAAI,QAAAW,QAAA,eACAX,EAAAJ,OAAAI,QAAAW,QAAA,UACAf,OAAAI,QAAAW,QAAA,aAuBAS,EAAAM,UAAAC,SAAA,SAAAC,GACA,IAAAC,EAAA9B,KAAAyB,MACAH,EAAAtB,KAAAwB,QACAO,EAAA,CAAAD,EAAAE,WAAA,YAAA,UAAAV,EAAAC,GAAA,YAAAvB,KAAAuB,IAAAU,KAAA,KACA,OAAAH,EAAAI,QAAAH,GAAAI,SAAAN,IAUA,SAAAO,EAAAN,EAAAP,GACAvB,KAAAyB,MAAAK,EACA9B,KAAAuB,GAAAA,EAUAa,EAAAT,UAAAU,SAAA,SAAAR,GACA,IAAAE,EAAA,CAAA/B,KAAAyB,MAAAO,WAAA,YAAA,UAAAhC,KAAAuB,GAAA,YAAAU,KAAA,KACA,OAAAjC,KAAAyB,MAAAS,QAAAH,GAAAI,SAAAN,IAwBAO,EAAAT,UAAA,OACAS,EAAAT,UAAAW,IACAF,EAAAT,UAAAY,QAAA,SAAAV,GACA,IAAAE,EAAA,CAAA/B,KAAAyB,MAAAO,WAAA,YAAA,UAAAhC,KAAAuB,IAAAU,KAAA,KACA,OAAAjC,KAAAyB,MAAAS,QAAA,CAAAM,OAAA,SAAAT,IAAAA,IAAAI,SAAAN,IAWAO,EAAAT,UAAAc,MAAA,SAAAC,EAAAb,GACA,IAAAE,EAAA,CAAA/B,KAAAyB,MAAAO,WAAA,YAAA,WAAAC,KAAA,KAEAU,EAAA,CAAAC,eAAA,CAAAF,KAAAA,IACAG,EAAA,CAAAL,OAAA,OAAAT,IAFAA,GAAA,YAAA/B,KAAAuB,GAEAuB,QAAA,CAAAC,eAAA,oBAAAC,KAAAC,KAAAC,UAAAP,IAEA,OAAA3C,KAAAyB,MAAAS,QAAAW,GAAAV,SAAAN,IAUAO,EAAAT,UAAAwB,QAAA,SAAAtB,GACA,IAAAE,EAAA,mBAAA/B,KAAAuB,GACA,OAAAvB,KAAAyB,MAAAS,QAAAH,GAAAI,SAAAN,IAcAO,EAAAT,UAAAyB,IACAhB,EAAAT,UAAA0B,KACAjB,EAAAT,UAAA2B,QAAA,SAAAC,EAAA1B,GACA0B,EAAAA,GAAA,GACA7B,EAAA8B,WAAAD,KACA1B,EAAA0B,EACAA,EAAA,IAEA,IAAAxB,EAAA,CAAA/B,KAAAyB,MAAAO,WAAA,YAAA,UAAAhC,KAAAuB,IAAAU,KAAA,KACAF,GAAA,oBAAAwB,EAAAE,QAAA,OAAA,SACAZ,EAAA,CAAAL,OAAAe,EAAAG,SAAA,OAAA,MAAA3B,IAAAA,GAKA,OAJAwB,EAAAG,WACAb,EAAAC,QAAA,CAAAC,eAAA,oBACAF,EAAAG,KAAAC,KAAAC,UAAAK,EAAAG,WAEA1D,KAAAyB,MAAAS,QAAAW,GAAAV,SAAAN,IAcAO,EAAAT,UAAAgC,aAAA,SAAAJ,EAAA1B,GACA0B,EAAAA,GAAA,GACA7B,EAAA8B,WAAAD,KACA1B,EAAA0B,EACAA,EAAA,IAEA,IAAAxB,EAAA,CAAA/B,KAAAyB,MAAAO,WAAA,YAAA,UAAAhC,KAAAuB,GAAA,aAAAU,KAAA,KACAsB,EAAAE,UACA1B,GAAA,wBAEAc,EAAA,CAAAL,OAAA,OAAAT,IAAAA,EAAAiB,KAAA,IAKA,OAJAO,EAAAG,WACAb,EAAAC,QAAA,CAAAC,eAAA,oBACAF,EAAAG,KAAAC,KAAAC,UAAAK,EAAAG,WAEA1D,KAAAyB,MAAAS,QAAAW,GAAAV,SAAAN,IAUAO,EAAAT,UAAAiC,SAAA,SAAArC,GACA,OAAA,IAAAF,EAAArB,KAAAuB,IAUAa,EAAAT,UAAAkC,UAAA,SAAAhC,GACA,IAAAE,EAAA,CAAA/B,KAAAyB,MAAAO,WAAA,YAAA,UAAAhC,KAAAuB,GAAA,aAAAU,KAAA,KACA,OAAAjC,KAAAyB,MAAAS,QAAAH,GAAAI,SAAAN,IAYA,SAAAiC,EAAAhC,EAAAP,GACAvB,KAAAyB,MAAAK,EACA9B,KAAAuB,GAAAA,EAUAuC,EAAAnC,UAAAU,SAAA,SAAAR,GACA,IAAAE,EAAA,CAAA/B,KAAAyB,MAAAO,WAAA,YAAA,aAAAhC,KAAAuB,GAAA,YAAAU,KAAA,KACA,OAAAjC,KAAAyB,MAAAS,QAAAH,GAAAI,SAAAN,IAUAiC,EAAAnC,UAAAoC,WAAA,SAAAC,EAAAnC,GACA,IAAAE,EAAA,CAAA/B,KAAAyB,MAAAO,WAAA,YAAA,aAAAhC,KAAAuB,IAAAU,KAAA,KACAU,EAAA,GACAjB,EAAA8B,WAAAQ,GACAnC,EAAAmC,EACAtC,EAAAuC,QAAAD,GACArB,EAAAqB,aAAAA,EACAtC,EAAAwC,SAAAF,KACArB,EAAAqB,aAAA,CAAAA,IAEAnB,EAAA,CAAAL,OAAA,OAAAT,IAAAA,EAAAe,QAAA,CAAAC,eAAA,oBAAAC,KAAAC,KAAAC,UAAAP,IACA,OAAA3C,KAAAyB,MAAAS,QAAAW,GAAAV,SAAAN,IAUAiC,EAAAnC,UAAAwC,OAAA,SAAAtC,GACA,IAAAE,EAAA,CAAA/B,KAAAyB,MAAAO,WAAA,YAAA,aAAAhC,KAAAuB,GAAA,UAAAU,KAAA,KACA,OAAAjC,KAAAyB,MAAAS,QAAAH,GAAAI,SAAAN,IAUAiC,EAAAnC,UAAAyC,QAAA,SAAAvC,GACA,IACAgB,EAAA,CAAAL,OAAA,MAAAT,IADA,CAAA/B,KAAAyB,MAAAO,WAAA,YAAA,aAAAhC,KAAAuB,IAAAU,KAAA,KACAe,KAAA,IACA,OAAAhD,KAAAyB,MAAAS,QAAAW,GAAAV,SAAAN,IAUAiC,EAAAnC,UAAAc,MAAA,SAAAC,EAAA2B,EAAAxC,GACA,IAAAE,EAAA,CAAA/B,KAAAyB,MAAAO,WAAA,YAAA,cAAAC,KAAA,KACAF,GAAA,YAAA/B,KAAAuB,GACA,IAAAoB,EAAA,GAEAjB,EAAA4C,SAAA5B,IACAC,EAAAD,EACAb,EAAAwC,IAEA1B,EAAAD,KAAAA,EACAC,EAAA4B,SAAAF,GAEAxB,EAAA,CAAAL,OAAA,OAAAT,IAAAA,EAAAe,QAAA,CAAAC,eAAA,oBAAAC,KAAAC,KAAAC,UAAAP,IAEA,OAAA3C,KAAAyB,MAAAS,QAAAW,GAAAV,SAAAN,IAwBAiC,EAAAnC,UAAA,OACAmC,EAAAnC,UAAAW,IACAwB,EAAAnC,UAAAY,QAAA,SAAAV,GACA,IAAAE,EAAA,CAAA/B,KAAAyB,MAAAO,WAAA,YAAA,aAAAhC,KAAAuB,IAAAU,KAAA,KACA,OAAAjC,KAAAyB,MAAAS,QAAA,CAAAM,OAAA,SAAAT,IAAAA,IAAAI,SAAAN,IASA,SAAAzB,EAAA0B,GACA9B,KAAAyB,MAAAK,EASA1B,EAAAuB,UAAAL,OAAA,SAAAC,GACA,OAAA,IAAAa,EAAApC,KAAAyB,MAAAF,IASAnB,EAAAuB,UAAA6C,QAAA,SAAA3C,GACA,IAAAE,EAAA,CAAA/B,KAAAyB,MAAAO,WAAA,YAAA,WAAAC,KAAA,KACA,OAAAjC,KAAAyB,MAAAS,QAAAH,GAAAI,SAAAN,IASAzB,EAAAuB,UAAA8C,UAAA,SAAAlD,GACA,OAAA,IAAAuC,EAAA9D,KAAAyB,MAAAF,IASAnB,EAAAuB,UAAA+C,WAAA,SAAA7C,GACA,IAAAE,EAAA,CAAA/B,KAAAyB,MAAAO,WAAA,YAAA,cAAAC,KAAA,KACA,OAAAjC,KAAAyB,MAAAS,QAAAH,GAAAI,SAAAN,IAOA5B,EAAA0E,GAAA,iBAAA,SAAA7C,GACAA,EAAA8C,UAAA,IAAAxE,EAAA0B,KAIApC,EAAAD,QAAAW,eDlYA","file":"jsforce-api-analytics.min.js","sourcesContent":["(function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c=\"function\"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error(\"Cannot find module '\"+i+\"'\");throw a.code=\"MODULE_NOT_FOUND\",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u=\"function\"==typeof require&&require,i=0;i<t.length;i++)o(t[i]);return o}return r})()","/**\n * @file Manages Salesforce Analytics API\n * @author Shinichi Tomita <shinichi.tomita@gmail.com>\n */\n\n'use strict';\n\nvar _ = window.jsforce.require('lodash/core'),\n jsforce = window.jsforce.require('./core'),\n Promise = window.jsforce.require('./promise');\n\n/**\n * Report instance to retrieving asynchronously executed result\n *\n * @protected\n * @class Analytics~ReportInstance\n * @param {Analytics~Report} report - Report\n * @param {String} id - Report instance id\n */\nvar ReportInstance = function(report, id) {\n this._report = report;\n this._conn = report._conn;\n this.id = id;\n};\n\n/**\n * Retrieve report result asynchronously executed\n *\n * @method Analytics~ReportInstance#retrieve\n * @param {Callback.<Analytics~ReportResult>} [callback] - Callback function\n * @returns {Promise.<Analytics~ReportResult>}\n */\nReportInstance.prototype.retrieve = function(callback) {\n var conn = this._conn,\n report = this._report;\n var url = [ conn._baseUrl(), \"analytics\", \"reports\", report.id, \"instances\", this.id ].join('/');\n return conn.request(url).thenCall(callback);\n};\n\n/**\n * Report object in Analytics API\n *\n * @protected\n * @class Analytics~Report\n * @param {Connection} conn Connection\n */\nvar Report = function(conn, id) {\n this._conn = conn;\n this.id = id;\n};\n\n/**\n * Describe report metadata\n *\n * @method Analytics~Report#describe\n * @param {Callback.<Analytics~ReportMetadata>} [callback] - Callback function\n * @returns {Promise.<Analytics~ReportMetadata>}\n */\nReport.prototype.describe = function(callback) {\n var url = [ this._conn._baseUrl(), \"analytics\", \"reports\", this.id, \"describe\" ].join('/');\n return this._conn.request(url).thenCall(callback);\n};\n\n/**\n * Synonym of Analytics~Report#destroy()\n *\n * @method Analytics~Report#delete\n * @param {Callback.<Analytics~ReportResult>} [callback] - Callback function\n * @returns {Promise.<Analytics~ReportResult>}\n */\n/**\n * Synonym of Analytics~Report#destroy()\n *\n * @method Analytics~Report#del\n * @param {Callback.<Analytics~ReportResult>} [callback] - Callback function\n * @returns {Promise.<Analytics~ReportResult>}\n */\n/**\n * Destroy a report\n *\n * @method Analytics~Report#destroy\n * @param {Callback.<Analytics~ReportResult>} [callback] - Callback function\n * @returns {Promise.<Analytics~ReportResult>}\n */\nReport.prototype[\"delete\"] =\nReport.prototype.del =\nReport.prototype.destroy = function(callback) {\n var url = [ this._conn._baseUrl(), \"analytics\", \"reports\", this.id ].join('/');\n return this._conn.request({method: 'DELETE', url: url}).thenCall(callback);\n};\n\n/**\n * Clones a given report\n *\n * @method Analytics~Report#clone\n * @param {String} name - The name of the new report\n * @param {Callback.<Analytics~ReportResult>} [callback] - Callback function\n * @returns {Promise.<Analytics~ReportResult>}\n */\nReport.prototype.clone = function(name, callback) {\n var url = [ this._conn._baseUrl(), \"analytics\", \"reports\" ].join('/');\n url += \"?cloneId=\" + this.id;\n var data = { reportMetadata: { name: name } };\n var params = { method : 'POST', url: url, headers: { \"Content-Type\" : \"application/json\" }, body: JSON.stringify(data)};\n\n return this._conn.request(params).thenCall(callback);\n};\n\n/**\n * Explain plan for executing report\n *\n * @method Analytics~Report#explain\n * @param {Callback.<ExplainInfo>} [callback] - Callback function\n * @returns {Promise.<ExplainInfo>}\n */\nReport.prototype.explain = function(callback) {\n var url = \"/query/?explain=\" + this.id;\n return this._conn.request(url).thenCall(callback);\n};\n\n\n/**\n * Run report synchronously\n *\n * @method Analytics~Report#execute\n * @param {Object} [options] - Options\n * @param {Boolean} options.details - Flag if include detail in result\n * @param {Analytics~ReportMetadata} options.metadata - Overriding report metadata\n * @param {Callback.<Analytics~ReportResult>} [callback] - Callback function\n * @returns {Promise.<Analytics~ReportResult>}\n */\nReport.prototype.run =\nReport.prototype.exec =\nReport.prototype.execute = function(options, callback) {\n options = options || {};\n if (_.isFunction(options)) {\n callback = options;\n options = {};\n }\n var url = [ this._conn._baseUrl(), \"analytics\", \"reports\", this.id ].join('/');\n url += \"?includeDetails=\" + (options.details ? \"true\" : \"false\");\n var params = { method : options.metadata ? 'POST' : 'GET', url : url };\n if (options.metadata) {\n params.headers = { \"Content-Type\" : \"application/json\" };\n params.body = JSON.stringify(options.metadata);\n }\n return this._conn.request(params).thenCall(callback);\n};\n\n\n/**\n * Run report asynchronously\n *\n * @method Analytics~Report#executeAsync\n * @param {Object} [options] - Options\n * @param {Boolean} options.details - Flag if include detail in result\n * @param {Analytics~ReportMetadata} options.metadata - Overriding report metadata\n * @param {Callback.<Analytics~ReportInstanceAttrs>} [callback] - Callback function\n * @returns {Promise.<Analytics~ReportInstanceAttrs>}\n */\nReport.prototype.executeAsync = function(options, callback) {\n options = options || {};\n if (_.isFunction(options)) {\n callback = options;\n options = {};\n }\n var url = [ this._conn._baseUrl(), \"analytics\", \"reports\", this.id, \"instances\" ].join('/');\n if (options.details) {\n url += \"?includeDetails=true\";\n }\n var params = { method : 'POST', url : url, body: \"\" };\n if (options.metadata) {\n params.headers = { \"Content-Type\" : \"application/json\" };\n params.body = JSON.stringify(options.metadata);\n }\n return this._conn.request(params).thenCall(callback);\n};\n\n/**\n * Get report instance for specified instance ID\n *\n * @method Analytics~Report#instance\n * @param {String} id - Report instance ID\n * @returns {Analytics~ReportInstance}\n */\nReport.prototype.instance = function(id) {\n return new ReportInstance(this, id);\n};\n\n/**\n * List report instances which had been executed asynchronously\n *\n * @method Analytics~Report#instances\n * @param {Callback.<Array.<Analytics~ReportInstanceAttrs>>} [callback] - Callback function\n * @returns {Promise.<Array.<Analytics~ReportInstanceAttrs>>}\n */\nReport.prototype.instances = function(callback) {\n var url = [ this._conn._baseUrl(), \"analytics\", \"reports\", this.id, \"instances\" ].join('/');\n return this._conn.request(url).thenCall(callback);\n};\n\n/**\n * Dashboard object in the Analytics API\n *\n * @protected\n * @class Analytics-Dashboard\n * @param {Connection} conn Connection\n * @param {String} id - The Id\n */\n\nvar Dashboard = function(conn, id) {\n this._conn = conn;\n this.id = id;\n};\n\n/**\n * Describe dashboard metadata\n *\n * @method Analytics~Dashboard#describe\n * @param {Callback.<Analytics-DashboardMetadata>} [callback] - Callback function\n * @returns {Promise.<Analytics-DashboardMetadata>}\n */\nDashboard.prototype.describe = function(callback) {\n var url = [ this._conn._baseUrl(), \"analytics\", \"dashboards\", this.id, \"describe\" ].join('/');\n return this._conn.request(url).thenCall(callback);\n};\n\n/**\n * Get details about dashboard components\n *\n * @method Analytics~Dashboard#components\n * @param {Callback.<Analytics-DashboardComponentMetadata>} [callback] - Callback function\n * @returns {Promise.<Analytics-DashboardComponentMetadata>}\n */\nDashboard.prototype.components = function(componentIds, callback) {\n var url = [ this._conn._baseUrl(), \"analytics\", \"dashboards\", this.id].join('/');\n var data = {};\n if (_.isFunction(componentIds)) {\n callback = componentIds;\n } else if (_.isArray(componentIds)) {\n data.componentIds = componentIds;\n } else if (_.isString(componentIds)) {\n data.componentIds = [ componentIds ];\n }\n var params = { method : 'POST', url : url, headers : { \"Content-Type\" : \"application/json\" }, body : JSON.stringify(data)};\n return this._conn.request(params).thenCall(callback);\n};\n\n/**\n * Get dashboard status\n *\n * @method Analytics~Dashboard#status\n * @param {Callback.<Analytics-DashboardStatusMetadata>} [callback] - Callback function\n * @returns {Promise.<Analytics-DashboardStatusMetadata>}\n */\nDashboard.prototype.status = function(callback) {\n var url = [ this._conn._baseUrl(), \"analytics\", \"dashboards\", this.id, \"status\" ].join('/');\n return this._conn.request(url).thenCall(callback);\n};\n\n/**\n * Refresh a dashboard\n *\n * @method Analytics~Dashboard#refresh\n * @param {Callback.<Analytics-DashboardStatusUrl>} [callback] - Callback function\n * @returns {Promise.<Analytics-DashboardStatusUrl>}\n */\nDashboard.prototype.refresh = function(callback) {\n var url = [ this._conn._baseUrl(), \"analytics\", \"dashboards\", this.id ].join('/');\n var params = { method : 'PUT', url : url, body: '' };\n return this._conn.request(params).thenCall(callback);\n};\n\n/**\n * Clone a dashboard\n *\n * @method Analytics~Dashboard#clone\n * @param {Callback.<Analytics-DashboardMetadata>} [callback] - Callback function\n * @returns {Promise.<Analytics-DashboardMetadata>}\n */\nDashboard.prototype.clone = function(name, folderid, callback) {\n var url = [ this._conn._baseUrl(), \"analytics\", \"dashboards\" ].join('/');\n url += \"?cloneId=\" + this.id;\n var data = {};\n\n if (_.isObject(name)) {\n data = name;\n callback = folderid;\n } else {\n data.name = name;\n data.folderId = folderid;\n }\n var params = { method : 'POST', url : url, headers : { \"Content-Type\" : \"application/json\" }, body : JSON.stringify(data)};\n\n return this._conn.request(params).thenCall(callback);\n};\n\n/**\n * Synonym of Analytics~Dashboard#destroy()\n *\n * @method Analytics~Dashboard#delete\n * @param {Callback.<Analytics~DashboardResult>} [callback] - Callback function\n * @returns {Promise.<Analytics~DashboardResult>}\n */\n/**\n * Synonym of Analytics~Dashboard#destroy()\n *\n * @method Analytics~Dashboard#del\n * @param {Callback.<Analytics~DashboardResult>} [callback] - Callback function\n * @returns {Promise.<Analytics~DashboardResult>}\n */\n/**\n * Destroy a dashboard\n *\n * @method Analytics~Dashboard#destroy\n * @param {Callback.<Analytics~DashboardResult>} [callback] - Callback function\n * @returns {Promise.<Analytics~DashboardResult>}\n */\nDashboard.prototype[\"delete\"] =\nDashboard.prototype.del =\nDashboard.prototype.destroy = function(callback) {\n var url = [ this._conn._baseUrl(), \"analytics\", \"dashboards\", this.id ].join('/');\n return this._conn.request({method: 'DELETE', url: url}).thenCall(callback);\n};\n\n/**\n * API class for Analytics API\n *\n * @class\n * @param {Connection} conn Connection\n */\nvar Analytics = function(conn) {\n this._conn = conn;\n};\n\n/**\n * Get report object of Analytics API\n *\n * @param {String} id - Report Id\n * @returns {Analytics~Report}\n */\nAnalytics.prototype.report = function(id) {\n return new Report(this._conn, id);\n};\n\n/**\n * Get recent report list\n *\n * @param {Callback.<Array.<Analytics~ReportInfo>>} [callback] - Callback function\n * @returns {Promise.<Array.<Analytics~ReportInfo>>}\n */\nAnalytics.prototype.reports = function(callback) {\n var url = [ this._conn._baseUrl(), \"analytics\", \"reports\" ].join('/');\n return this._conn.request(url).thenCall(callback);\n};\n\n/**\n * Get dashboard object of Analytics API\n *\n * @param {String} id - Dashboard Id\n * @returns {Analytics~Dashboard}\n */\nAnalytics.prototype.dashboard = function(id) {\n return new Dashboard(this._conn, id);\n};\n\n/**\n * Get recent dashboard list\n *\n * @param {Callback.<Array.<Analytics~DashboardInfo>>} [callback] - Callback function\n * @returns {Promise.<Array.<Analytics~DashboardInfo>>}\n */\nAnalytics.prototype.dashboards = function(callback) {\n var url = [ this._conn._baseUrl(), \"analytics\", \"dashboards\" ].join('/');\n return this._conn.request(url).thenCall(callback);\n};\n\n/*--------------------------------------------*/\n/*\n * Register hook in connection instantiation for dynamically adding this API module features\n */\njsforce.on('connection:new', function(conn) {\n conn.analytics = new Analytics(conn);\n});\n\n\nmodule.exports = Analytics;\n"]}
|