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.
Files changed (80) hide show
  1. package/LICENSE +22 -0
  2. package/README.md +74 -0
  3. package/bin/jsforce +3 -0
  4. package/bower.json +30 -0
  5. package/build/jsforce-api-analytics.js +393 -0
  6. package/build/jsforce-api-analytics.min.js +2 -0
  7. package/build/jsforce-api-analytics.min.js.map +1 -0
  8. package/build/jsforce-api-apex.js +183 -0
  9. package/build/jsforce-api-apex.min.js +2 -0
  10. package/build/jsforce-api-apex.min.js.map +1 -0
  11. package/build/jsforce-api-bulk.js +1054 -0
  12. package/build/jsforce-api-bulk.min.js +2 -0
  13. package/build/jsforce-api-bulk.min.js.map +1 -0
  14. package/build/jsforce-api-chatter.js +320 -0
  15. package/build/jsforce-api-chatter.min.js +2 -0
  16. package/build/jsforce-api-chatter.min.js.map +1 -0
  17. package/build/jsforce-api-metadata.js +3020 -0
  18. package/build/jsforce-api-metadata.min.js +2 -0
  19. package/build/jsforce-api-metadata.min.js.map +1 -0
  20. package/build/jsforce-api-soap.js +403 -0
  21. package/build/jsforce-api-soap.min.js +2 -0
  22. package/build/jsforce-api-soap.min.js.map +1 -0
  23. package/build/jsforce-api-streaming.js +3479 -0
  24. package/build/jsforce-api-streaming.min.js +2 -0
  25. package/build/jsforce-api-streaming.min.js.map +1 -0
  26. package/build/jsforce-api-tooling.js +319 -0
  27. package/build/jsforce-api-tooling.min.js +2 -0
  28. package/build/jsforce-api-tooling.min.js.map +1 -0
  29. package/build/jsforce-core.js +25250 -0
  30. package/build/jsforce-core.min.js +2 -0
  31. package/build/jsforce-core.min.js.map +1 -0
  32. package/build/jsforce.js +31637 -0
  33. package/build/jsforce.min.js +2 -0
  34. package/build/jsforce.min.js.map +1 -0
  35. package/core.js +1 -0
  36. package/index.js +1 -0
  37. package/lib/VERSION.js +2 -0
  38. package/lib/_required.js +29 -0
  39. package/lib/api/analytics.js +387 -0
  40. package/lib/api/apex.js +177 -0
  41. package/lib/api/bulk.js +862 -0
  42. package/lib/api/chatter.js +314 -0
  43. package/lib/api/index.js +8 -0
  44. package/lib/api/metadata.js +848 -0
  45. package/lib/api/soap.js +397 -0
  46. package/lib/api/streaming-extension.js +136 -0
  47. package/lib/api/streaming.js +270 -0
  48. package/lib/api/tooling.js +313 -0
  49. package/lib/browser/canvas.js +90 -0
  50. package/lib/browser/client.js +241 -0
  51. package/lib/browser/core.js +5 -0
  52. package/lib/browser/jsforce.js +6 -0
  53. package/lib/browser/jsonp.js +52 -0
  54. package/lib/browser/request.js +70 -0
  55. package/lib/cache.js +252 -0
  56. package/lib/cli/cli.js +431 -0
  57. package/lib/cli/repl.js +337 -0
  58. package/lib/connection.js +1881 -0
  59. package/lib/core.js +16 -0
  60. package/lib/csv.js +50 -0
  61. package/lib/date.js +163 -0
  62. package/lib/http-api.js +300 -0
  63. package/lib/jsforce.js +10 -0
  64. package/lib/logger.js +52 -0
  65. package/lib/oauth2.js +206 -0
  66. package/lib/process.js +275 -0
  67. package/lib/promise.js +164 -0
  68. package/lib/query.js +881 -0
  69. package/lib/quick-action.js +90 -0
  70. package/lib/record-stream.js +305 -0
  71. package/lib/record.js +107 -0
  72. package/lib/registry/file-registry.js +48 -0
  73. package/lib/registry/index.js +3 -0
  74. package/lib/registry/registry.js +111 -0
  75. package/lib/require.js +14 -0
  76. package/lib/soap.js +207 -0
  77. package/lib/sobject.js +558 -0
  78. package/lib/soql-builder.js +236 -0
  79. package/lib/transport.js +233 -0
  80. 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
+ [![CircleCI](https://circleci.com/gh/jsforce/jsforce.svg?style=svg)](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
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ var cli = require('../lib/cli/cli.js');
3
+ cli.start();
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":"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","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"]}