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
@@ -0,0 +1,314 @@
1
+ /**
2
+ * @file Manages Salesforce Chatter REST API calls
3
+ * @author Shinichi Tomita <shinichi.tomita@gmail.com>
4
+ */
5
+
6
+ 'use strict';
7
+
8
+ var inherits = require('inherits'),
9
+ _ = require('lodash/core'),
10
+ jsforce = require('../core'),
11
+ Promise = require('../promise');
12
+
13
+ /**
14
+ * API class for Chatter REST API call
15
+ *
16
+ * @class
17
+ * @param {Connection} conn Connection
18
+ */
19
+ var Chatter = module.exports = function(conn) {
20
+ this._conn = conn;
21
+ };
22
+
23
+ /**
24
+ * Sending request to API endpoint
25
+ * @private
26
+ */
27
+ Chatter.prototype._request = function(params, callback) {
28
+ if (/^(put|post|patch)$/i.test(params.method)) {
29
+ if (_.isObject(params.body)) {
30
+ params.headers = {
31
+ "Content-Type": "application/json"
32
+ };
33
+ params.body = JSON.stringify(params.body);
34
+ }
35
+ }
36
+ params.url = this._normalizeUrl(params.url);
37
+ return this._conn.request(params, callback);
38
+ };
39
+
40
+ /**
41
+ * Convert path to site root relative url
42
+ * @private
43
+ */
44
+ Chatter.prototype._normalizeUrl = function(url) {
45
+ if (url.indexOf('/chatter/') === 0 || url.indexOf('/connect/') === 0) {
46
+ return '/services/data/v' + this._conn.version + url;
47
+ } else if (/^\/v[\d]+\.[\d]+\//.test(url)) {
48
+ return '/services/data' + url;
49
+ } else if (url.indexOf('/services/') !== 0 && url[0] === '/') {
50
+ return '/services/data/v' + this._conn.version + '/chatter' + url;
51
+ } else {
52
+ return url;
53
+ }
54
+ };
55
+
56
+ /**
57
+ * @typedef {Object} Chatter~RequestParams
58
+ * @prop {String} method - HTTP method
59
+ * @prop {String} url - Resource URL
60
+ * @prop {String} [body] - HTTP body (in POST/PUT/PATCH methods)
61
+ */
62
+
63
+ /**
64
+ * @typedef {Object} Chatter~RequestResult
65
+ */
66
+
67
+ /**
68
+ * Make a request for chatter API resource
69
+ *
70
+ * @param {Chatter~RequestParams} params - Paramters representing HTTP request
71
+ * @param {Callback.<Chatter~RequestResult>} [callback] - Callback func
72
+ * @returns {Chatter~Request}
73
+ */
74
+ Chatter.prototype.request = function(params, callback) {
75
+ return new Request(this, params).thenCall(callback);
76
+ };
77
+
78
+ /**
79
+ * Make a resource request to chatter API
80
+ *
81
+ * @param {String} url - Resource URL
82
+ * @param {Object} [queryParams] - Query parameters (in hash object)
83
+ * @returns {Chatter~Resource}
84
+ */
85
+ Chatter.prototype.resource = function(url, queryParams) {
86
+ return new Resource(this, url, queryParams);
87
+ };
88
+
89
+ /**
90
+ * @typedef {Object} Chatter~BatchRequestResult
91
+ * @prop {Boolean} hasError - Flag if the batch has one or more errors
92
+ * @prop {Array.<Object>} results - Batch request results in array
93
+ * @prop {Number} results.statusCode - HTTP response status code
94
+ * @prop {Chatter~RequestResult} results.result - Parsed HTTP response body
95
+ */
96
+
97
+ /**
98
+ * Make a batch request to chatter API
99
+ *
100
+ * @params {Array.<Chatter~Request>} requests - Chatter API requests
101
+ * @param {Callback.<Chatter~BatchRequestResult>} [callback] - Callback func
102
+ * @returns {Promise.<Chatter~BatchRequestResult>}
103
+ */
104
+ Chatter.prototype.batch = function(requests, callback) {
105
+ var self = this;
106
+ var batchRequests = [], batchDeferreds = [];
107
+ _.forEach(requests, function(request) {
108
+ var deferred = Promise.defer();
109
+ request._promise = deferred.promise;
110
+ batchRequests.push(request.batchParams());
111
+ batchDeferreds.push(deferred);
112
+ });
113
+ var params = {
114
+ method: 'POST',
115
+ url: this._normalizeUrl('/connect/batch'),
116
+ body: {
117
+ batchRequests: batchRequests
118
+ }
119
+ };
120
+ return this.request(params).then(function(res) {
121
+ _.forEach(res.results, function(result, i) {
122
+ var deferred = batchDeferreds[i];
123
+ if (result.statusCode >= 400) {
124
+ deferred.reject(result.result);
125
+ } else {
126
+ deferred.resolve(result.result);
127
+ }
128
+ });
129
+ return res;
130
+ }).thenCall(callback);
131
+ };
132
+
133
+
134
+ /*--------------------------------------------*/
135
+ /**
136
+ * A class representing chatter API request
137
+ *
138
+ * @protected
139
+ * @class Chatter~Request
140
+ * @implements {Promise.<Chatter~RequestResult>}
141
+ * @param {Chatter} chatter - Chatter API object
142
+ * @param {Chatter~RequestParams} params - Paramters representing HTTP request
143
+ */
144
+ var Request = function(chatter, params) {
145
+ this._chatter = chatter;
146
+ this._params = params;
147
+ this._promise = null;
148
+ };
149
+
150
+ /**
151
+ * @typedef {Object} Chatter~BatchRequestParams
152
+ * @prop {String} method - HTTP method
153
+ * @prop {String} url - Resource URL
154
+ * @prop {String} [richInput] - HTTP body (in POST/PUT/PATCH methods)
155
+ */
156
+
157
+ /**
158
+ * Retrieve parameters in batch request form
159
+ *
160
+ * @method Chatter~Request#batchParams
161
+ * @returns {Chatter~BatchRequestParams}
162
+ */
163
+ Request.prototype.batchParams = function() {
164
+ var params = this._params;
165
+ var batchParams = {
166
+ method: params.method,
167
+ url: this._chatter._normalizeUrl(params.url)
168
+ };
169
+ if (this._params.body) {
170
+ batchParams.richInput = this._params.body;
171
+ }
172
+ return batchParams;
173
+ };
174
+
175
+ /**
176
+ * Retrieve parameters in batch request form
177
+ *
178
+ * @method Chatter~Request#promise
179
+ * @returns {Promise.<Chatter~RequestResult>}
180
+ */
181
+ Request.prototype.promise = function() {
182
+ return this._promise || this._chatter._request(this._params);
183
+ };
184
+
185
+ /**
186
+ * Returns Node.js Stream object for request
187
+ *
188
+ * @method Chatter~Request#stream
189
+ * @returns {stream.Stream}
190
+ */
191
+ Request.prototype.stream = function() {
192
+ return this._chatter._request(this._params).stream();
193
+ };
194
+
195
+ /**
196
+ * Promise/A+ interface
197
+ * http://promises-aplus.github.io/promises-spec/
198
+ *
199
+ * Delegate to deferred promise, return promise instance for batch result
200
+ *
201
+ * @method Chatter~Request#then
202
+ */
203
+ Request.prototype.then = function(onResolve, onReject) {
204
+ return this.promise().then(onResolve, onReject);
205
+ };
206
+
207
+ /**
208
+ * Promise/A+ extension
209
+ * Call "then" using given node-style callback function
210
+ *
211
+ * @method Chatter~Request#thenCall
212
+ */
213
+ Request.prototype.thenCall = function(callback) {
214
+ return _.isFunction(callback) ? this.promise().thenCall(callback) : this;
215
+ };
216
+
217
+
218
+ /*--------------------------------------------*/
219
+ /**
220
+ * A class representing chatter API resource
221
+ *
222
+ * @protected
223
+ * @class Chatter~Resource
224
+ * @extends Chatter~Request
225
+ * @param {Chatter} chatter - Chatter API object
226
+ * @param {String} url - Resource URL
227
+ * @param {Object} [queryParams] - Query parameters (in hash object)
228
+ */
229
+ var Resource = function(chatter, url, queryParams) {
230
+ if (queryParams) {
231
+ var qstring = _.map(_.keys(queryParams), function(name) {
232
+ return name + "=" + encodeURIComponent(queryParams[name]);
233
+ }).join('&');
234
+ url += (url.indexOf('?') > 0 ? '&' : '?') + qstring;
235
+ }
236
+ Resource.super_.call(this, chatter, { method: 'GET', url: url });
237
+ this._url = url;
238
+ };
239
+
240
+ inherits(Resource, Request);
241
+
242
+ /**
243
+ * Create a new resource
244
+ *
245
+ * @method Chatter~Resource#create
246
+ * @param {Object} data - Data to newly post
247
+ * @param {Callback.<Chatter~RequestResult>} [callback] - Callback function
248
+ * @returns {Chatter~Request}
249
+ */
250
+ Resource.prototype.create = function(data, callback) {
251
+ return this._chatter.request({
252
+ method: 'POST',
253
+ url: this._url,
254
+ body: data
255
+ }).thenCall(callback);
256
+ };
257
+
258
+ /**
259
+ * Retrieve resource content
260
+ *
261
+ * @method Chatter~Resource#retrieve
262
+ * @param {Callback.<Chatter~RequestResult>} [callback] - Callback function
263
+ * @returns {Chatter~Request}
264
+ */
265
+ Resource.prototype.retrieve = function(callback) {
266
+ return this.thenCall(callback);
267
+ };
268
+
269
+ /**
270
+ * Update specified resource
271
+ *
272
+ * @method Chatter~Resource#update
273
+ * @param {Object} data - Data to update
274
+ * @param {Callback.<Chatter~RequestResult>} [callback] - Callback function
275
+ * @returns {Chatter~Request}
276
+ */
277
+ Resource.prototype.update = function(data, callback) {
278
+ return this._chatter.request({
279
+ method: 'PATCH',
280
+ url: this._url,
281
+ body: data
282
+ }).thenCall(callback);
283
+ };
284
+
285
+ /**
286
+ * Synonym of Resource#delete()
287
+ *
288
+ * @method Chatter~Resource#del
289
+ * @param {Callback.<Chatter~RequestResult>} [callback] - Callback function
290
+ * @returns {Chatter~Request}
291
+ */
292
+ /**
293
+ * Delete specified resource
294
+ *
295
+ * @method Chatter~Resource#delete
296
+ * @param {Callback.<Chatter~RequestResult>} [callback] - Callback function
297
+ * @returns {Chatter~Request}
298
+ */
299
+ Resource.prototype.del =
300
+ Resource.prototype["delete"] = function(callback) {
301
+ return this._chatter.request({
302
+ method: 'DELETE',
303
+ url: this._url
304
+ }).thenCall(callback);
305
+ };
306
+
307
+
308
+ /*--------------------------------------------*/
309
+ /*
310
+ * Register hook in connection instantiation for dynamically adding this API module features
311
+ */
312
+ jsforce.on('connection:new', function(conn) {
313
+ conn.chatter = new Chatter(conn);
314
+ });
@@ -0,0 +1,8 @@
1
+ require('./analytics');
2
+ require('./apex');
3
+ require('./bulk');
4
+ require('./chatter');
5
+ require('./metadata');
6
+ require('./soap');
7
+ require('./streaming');
8
+ require('./tooling');