jsforce2 1.11.1 → 5.2.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.

Potentially problematic release.


This version of jsforce2 might be problematic. Click here for more details.

Files changed (80) hide show
  1. package/index.js +46 -1
  2. package/package.json +7 -105
  3. package/LICENSE +0 -22
  4. package/README.md +0 -74
  5. package/bin/jsforce +0 -3
  6. package/bower.json +0 -30
  7. package/build/jsforce-api-analytics.js +0 -393
  8. package/build/jsforce-api-analytics.min.js +0 -2
  9. package/build/jsforce-api-analytics.min.js.map +0 -1
  10. package/build/jsforce-api-apex.js +0 -183
  11. package/build/jsforce-api-apex.min.js +0 -2
  12. package/build/jsforce-api-apex.min.js.map +0 -1
  13. package/build/jsforce-api-bulk.js +0 -1054
  14. package/build/jsforce-api-bulk.min.js +0 -2
  15. package/build/jsforce-api-bulk.min.js.map +0 -1
  16. package/build/jsforce-api-chatter.js +0 -320
  17. package/build/jsforce-api-chatter.min.js +0 -2
  18. package/build/jsforce-api-chatter.min.js.map +0 -1
  19. package/build/jsforce-api-metadata.js +0 -3020
  20. package/build/jsforce-api-metadata.min.js +0 -2
  21. package/build/jsforce-api-metadata.min.js.map +0 -1
  22. package/build/jsforce-api-soap.js +0 -403
  23. package/build/jsforce-api-soap.min.js +0 -2
  24. package/build/jsforce-api-soap.min.js.map +0 -1
  25. package/build/jsforce-api-streaming.js +0 -3479
  26. package/build/jsforce-api-streaming.min.js +0 -2
  27. package/build/jsforce-api-streaming.min.js.map +0 -1
  28. package/build/jsforce-api-tooling.js +0 -319
  29. package/build/jsforce-api-tooling.min.js +0 -2
  30. package/build/jsforce-api-tooling.min.js.map +0 -1
  31. package/build/jsforce-core.js +0 -25250
  32. package/build/jsforce-core.min.js +0 -2
  33. package/build/jsforce-core.min.js.map +0 -1
  34. package/build/jsforce.js +0 -31637
  35. package/build/jsforce.min.js +0 -2
  36. package/build/jsforce.min.js.map +0 -1
  37. package/core.js +0 -1
  38. package/lib/VERSION.js +0 -2
  39. package/lib/_required.js +0 -29
  40. package/lib/api/analytics.js +0 -387
  41. package/lib/api/apex.js +0 -177
  42. package/lib/api/bulk.js +0 -862
  43. package/lib/api/chatter.js +0 -314
  44. package/lib/api/index.js +0 -8
  45. package/lib/api/metadata.js +0 -848
  46. package/lib/api/soap.js +0 -397
  47. package/lib/api/streaming-extension.js +0 -136
  48. package/lib/api/streaming.js +0 -270
  49. package/lib/api/tooling.js +0 -313
  50. package/lib/browser/canvas.js +0 -90
  51. package/lib/browser/client.js +0 -241
  52. package/lib/browser/core.js +0 -5
  53. package/lib/browser/jsforce.js +0 -6
  54. package/lib/browser/jsonp.js +0 -52
  55. package/lib/browser/request.js +0 -70
  56. package/lib/cache.js +0 -252
  57. package/lib/cli/cli.js +0 -431
  58. package/lib/cli/repl.js +0 -337
  59. package/lib/connection.js +0 -1881
  60. package/lib/core.js +0 -16
  61. package/lib/csv.js +0 -50
  62. package/lib/date.js +0 -163
  63. package/lib/http-api.js +0 -300
  64. package/lib/jsforce.js +0 -10
  65. package/lib/logger.js +0 -52
  66. package/lib/oauth2.js +0 -206
  67. package/lib/process.js +0 -275
  68. package/lib/promise.js +0 -164
  69. package/lib/query.js +0 -881
  70. package/lib/quick-action.js +0 -90
  71. package/lib/record-stream.js +0 -305
  72. package/lib/record.js +0 -107
  73. package/lib/registry/file-registry.js +0 -48
  74. package/lib/registry/index.js +0 -3
  75. package/lib/registry/registry.js +0 -111
  76. package/lib/require.js +0 -14
  77. package/lib/soap.js +0 -207
  78. package/lib/sobject.js +0 -558
  79. package/lib/soql-builder.js +0 -236
  80. package/lib/transport.js +0 -233
package/lib/core.js DELETED
@@ -1,16 +0,0 @@
1
- /**
2
- * @file JSforce Core
3
- * @author Shinichi Tomita <shinichi.tomita@gmail.com>
4
- */
5
- 'use strict';
6
-
7
- var EventEmitter = require('events').EventEmitter;
8
-
9
- var jsforce = module.exports = new EventEmitter();
10
- jsforce.VERSION = require('./VERSION');
11
- jsforce.Connection = require('./connection');
12
- jsforce.OAuth2 = require('./oauth2');
13
- jsforce.Date = jsforce.SfDate = require("./date");
14
- jsforce.RecordStream = require('./record-stream');
15
- jsforce.Promise = require('./promise');
16
- jsforce.require = require('./require');
package/lib/csv.js DELETED
@@ -1,50 +0,0 @@
1
- 'use strict';
2
-
3
- var _ = require('lodash/core'),
4
- csvParse = require('csv-parse/lib/es5'),
5
- csvParseSync = require('csv-parse/lib/es5/sync'),
6
- csvStringify = require('csv-stringify'),
7
- csvStringifySync = require('csv-stringify/lib/sync');
8
-
9
- /**
10
- * @private
11
- */
12
- function parseCSV(str, options) {
13
- options = _.extend({}, options, { columns: true });
14
- return csvParseSync(str, options);
15
- }
16
-
17
- /**
18
- * @private
19
- */
20
- function toCSV(records, options) {
21
- options = _.extend({}, options, { header: true });
22
- return csvStringifySync(records, options);
23
- }
24
-
25
- /**
26
- * @private
27
- */
28
- function parseCSVStream(options) {
29
- options = _.extend({}, options, { columns: true });
30
- return csvParse(options);
31
- }
32
-
33
- /**
34
- * @private
35
- */
36
- function serializeCSVStream(options) {
37
- options = _.extend({}, options, { header: true });
38
- return csvStringify(options);
39
- }
40
-
41
-
42
- /**
43
- * @protected
44
- */
45
- module.exports = {
46
- parseCSV: parseCSV,
47
- toCSV: toCSV,
48
- parseCSVStream: parseCSVStream,
49
- serializeCSVStream: serializeCSVStream
50
- };
package/lib/date.js DELETED
@@ -1,163 +0,0 @@
1
- 'use strict';
2
-
3
- var _ = require('lodash/core');
4
-
5
- /**
6
- * A date object to keep Salesforce date literal
7
- *
8
- * @class
9
- * @constructor
10
- * @see http://www.salesforce.com/us/developer/docs/soql_sosl/Content/sforce_api_calls_soql_select_dateformats.htm
11
- */
12
- var SfDate = module.exports = function(literal) {
13
- this._literal = literal;
14
- };
15
-
16
- /**
17
- * Returns literal when converted to string
18
- *
19
- * @override
20
- */
21
- SfDate.prototype.toString =
22
- SfDate.prototype.toJSON = function() { return this._literal; };
23
-
24
-
25
- /** @private **/
26
- function zeropad(n) { return (n<10 ? "0" : "") + n; }
27
-
28
- /**
29
- * Convert JavaScript date object to ISO8601 Date format (e.g. 2012-10-31)
30
- *
31
- * @param {String|Number|Date} date - Input date
32
- * @returns {SfDate} - Salesforce date literal with ISO8601 date format
33
- */
34
- SfDate.toDateLiteral = function(date) {
35
- if (_.isNumber(date)) {
36
- date = new Date(date);
37
- } else if (_.isString(date)) {
38
- date = SfDate.parseDate(date);
39
- }
40
- var yy = date.getFullYear();
41
- var mm = date.getMonth()+1;
42
- var dd = date.getDate();
43
- var dstr = [ yy, zeropad(mm), zeropad(dd) ].join("-");
44
- return new SfDate(dstr);
45
- };
46
-
47
- /**
48
- * Convert JavaScript date object to ISO8601 DateTime format
49
- * (e.g. 2012-10-31T12:34:56Z)
50
- *
51
- * @param {String|Number|Date} date - Input date
52
- * @returns {SfDate} - Salesforce date literal with ISO8601 datetime format
53
- */
54
- SfDate.toDateTimeLiteral = function(date) {
55
- if (_.isNumber(date)) {
56
- date = new Date(date);
57
- } else if (_.isString(date)) {
58
- date = SfDate.parseDate(date);
59
- }
60
- var yy = date.getUTCFullYear();
61
- var mm = date.getUTCMonth()+1;
62
- var dd = date.getUTCDate();
63
- var hh = date.getUTCHours();
64
- var mi = date.getUTCMinutes();
65
- var ss = date.getUTCSeconds();
66
- var dtstr =
67
- [ yy, zeropad(mm), zeropad(dd) ].join("-") + "T" +
68
- [ zeropad(hh), zeropad(mi), zeropad(ss) ].join(":") + "Z";
69
- return new SfDate(dtstr);
70
- };
71
-
72
- /**
73
- * Parse IS08601 date(time) formatted string and return date instance
74
- *
75
- * @param {String} str
76
- * @returns {Date}
77
- */
78
- SfDate.parseDate = function(str) {
79
- var d = new Date();
80
- var regexp = /^([\d]{4})-?([\d]{2})-?([\d]{2})(T([\d]{2}):?([\d]{2}):?([\d]{2})(.([\d]{3}))?(Z|([\+\-])([\d]{2}):?([\d]{2})))?$/;
81
- var m = str.match(regexp);
82
- if (m) {
83
- d = new Date(0);
84
- if (!m[4]) {
85
- d.setFullYear(parseInt(m[1], 10));
86
- d.setDate(parseInt(m[3], 10));
87
- d.setMonth(parseInt(m[2], 10) - 1);
88
- d.setHours(0);
89
- d.setMinutes(0);
90
- d.setSeconds(0);
91
- d.setMilliseconds(0);
92
- } else {
93
- d.setUTCFullYear(parseInt(m[1], 10));
94
- d.setUTCDate(parseInt(m[3], 10));
95
- d.setUTCMonth(parseInt(m[2], 10) - 1);
96
- d.setUTCHours(parseInt(m[5], 10));
97
- d.setUTCMinutes(parseInt(m[6], 10));
98
- d.setUTCSeconds(parseInt(m[7], 10));
99
- d.setUTCMilliseconds(parseInt(m[9] || '0', 10));
100
- if (m[10] && m[10] !== 'Z') {
101
- var offset = parseInt(m[12],10) * 60 + parseInt(m[13], 10);
102
- d.setTime((m[11] === '+' ? -1 : 1) * offset * 60 * 1000 +d.getTime());
103
- }
104
- }
105
- return d;
106
- } else {
107
- throw new Error("Invalid date format is specified : " + str);
108
- }
109
- };
110
-
111
- /*
112
- * Pre-defined Salesforce Date Literals
113
- */
114
- var SfDateLiterals = {
115
- YESTERDAY: 1,
116
- TODAY: 1,
117
- TOMORROW: 1,
118
- LAST_WEEK: 1,
119
- THIS_WEEK: 1,
120
- NEXT_WEEK: 1,
121
- LAST_MONTH: 1,
122
- THIS_MONTH: 1,
123
- NEXT_MONTH: 1,
124
- LAST_90_DAYS: 1,
125
- NEXT_90_DAYS: 1,
126
- LAST_N_DAYS: 2,
127
- NEXT_N_DAYS: 2,
128
- NEXT_N_WEEKS: 2,
129
- LAST_N_WEEKS: 2,
130
- NEXT_N_MONTHS: 2,
131
- LAST_N_MONTHS: 2,
132
- THIS_QUARTER: 1,
133
- LAST_QUARTER: 1,
134
- NEXT_QUARTER: 1,
135
- NEXT_N_QUARTERS: 2,
136
- LAST_N_QUARTERS: 2,
137
- THIS_YEAR: 1,
138
- LAST_YEAR: 1,
139
- NEXT_YEAR: 1,
140
- NEXT_N_YEARS: 2,
141
- LAST_N_YEARS: 2,
142
- THIS_FISCAL_QUARTER: 1,
143
- LAST_FISCAL_QUARTER: 1,
144
- NEXT_FISCAL_QUARTER: 1,
145
- NEXT_N_FISCAL_QUARTERS:2,
146
- LAST_N_FISCAL_QUARTERS:2,
147
- THIS_FISCAL_YEAR:1,
148
- LAST_FISCAL_YEAR:1,
149
- NEXT_FISCAL_YEAR:1,
150
- NEXT_N_FISCAL_YEARS: 2,
151
- LAST_N_FISCAL_YEARS: 2
152
- };
153
-
154
- for (var literal in SfDateLiterals) {
155
- var type = SfDateLiterals[literal];
156
- SfDate[literal] =
157
- type === 1 ? new SfDate(literal) : createLiteralBuilder(literal);
158
- }
159
-
160
- /** @private **/
161
- function createLiteralBuilder(literal) {
162
- return function(num) { return new SfDate(literal + ":" + num); };
163
- }
package/lib/http-api.js DELETED
@@ -1,300 +0,0 @@
1
- 'use strict';
2
-
3
- var inherits = require('inherits'),
4
- events = require('events'),
5
- _ = require('lodash/core'),
6
- Promise = require('./promise');
7
-
8
- /**
9
- * HTTP based API class with authorization hook
10
- *
11
- * @constructor
12
- * @extends events.EventEmitter
13
- * @param {Connection} conn - Connection object
14
- * @param {Object} [options] - Http API Options
15
- * @param {String} [options.responseType] - Overriding content mime-type in response
16
- * @param {Transport} [options.transport] - Transport for http api
17
- * @param {Object} [options.noContentResponse] - Alternative response when no content returned in response (= HTTP 204)
18
- */
19
- var HttpApi = function(conn, options) {
20
- options = options || {};
21
- this._conn = conn;
22
- this.on('resume', function(err) { conn.emit('resume', err); });
23
- this._responseType = options.responseType;
24
- this._transport = options.transport || conn._transport;
25
- this._noContentResponse = options.noContentResponse;
26
- };
27
-
28
- inherits(HttpApi, events.EventEmitter);
29
-
30
- /**
31
- * Callout to API endpoint using http
32
- *
33
- * @param {Object} request - Http Request object
34
- * @param {String} request.url - Endpoint URL to request
35
- * @param {String} request.method - Http method for request
36
- * @param {Object} [request.headers] - Http request headers in hash object
37
- * @param {Callback.<Object>} callback - Callback function
38
- * @returns {Promise.<Object>} -
39
- */
40
- HttpApi.prototype.request = function(request, callback) {
41
- var self = this;
42
- var conn = this._conn;
43
- var logger = conn._logger;
44
- var refreshDelegate = this.getRefreshDelegate();
45
- // remember previous instance url in case it changes after a refresh
46
- var lastInstanceUrl = conn.instanceUrl;
47
-
48
- var deferred = Promise.defer();
49
-
50
- var onResume = function(err) {
51
- if (err) {
52
- deferred.reject(err);
53
- return;
54
- }
55
- // check to see if the token refresh has changed the instance url
56
- if(lastInstanceUrl !== conn.instanceUrl){
57
- // if the instance url has changed
58
- // then replace the current request urls instance url fragment
59
- // with the updated instance url
60
- request.url = request.url.replace(lastInstanceUrl,conn.instanceUrl);
61
- }
62
-
63
- self.request(request).then(function(response) {
64
- deferred.resolve(response);
65
- }, function(err) {
66
- deferred.reject(err);
67
- });
68
- };
69
-
70
- if (refreshDelegate && refreshDelegate._refreshing) {
71
- refreshDelegate.once('resume', onResume);
72
- return deferred.promise.thenCall(callback);
73
- }
74
-
75
- // hook before sending
76
- self.beforeSend(request);
77
-
78
- self.emit('request', request);
79
- logger.debug("<request> method=" + request.method + ", url=" + request.url);
80
- var requestTime = Date.now();
81
-
82
- return this._transport.httpRequest(request).then(function(response) {
83
- var responseTime = Date.now();
84
- logger.debug("elapsed time : " + (responseTime - requestTime) + "msec");
85
- logger.debug("<response> status=" + response.statusCode + ", url=" + request.url);
86
-
87
- self.emit('response', response);
88
- // Refresh token if session has been expired and requires authentication
89
- // when session refresh delegate is available
90
- if (self.isSessionExpired(response) && refreshDelegate) {
91
- refreshDelegate.refresh(requestTime, onResume);
92
- return deferred.promise;
93
- }
94
- if (self.isErrorResponse(response)) {
95
- var err = self.getError(response);
96
- throw err;
97
- }
98
- return self.getResponseBody(response);
99
- }, function(err) {
100
- var responseTime = Date.now();
101
- logger.debug("elapsed time : " + (responseTime - requestTime) + "msec");
102
- logger.error(err);
103
- throw err;
104
- })
105
- .thenCall(callback);
106
- };
107
-
108
- /**
109
- * @protected
110
- */
111
- HttpApi.prototype.getRefreshDelegate = function() {
112
- return this._conn._refreshDelegate;
113
- };
114
-
115
- /**
116
- *
117
- * @protected
118
- */
119
- HttpApi.prototype.beforeSend = function(request) {
120
- request.headers = request.headers || {};
121
- if (this._conn.accessToken) {
122
- request.headers.Authorization = "Bearer " + this._conn.accessToken;
123
- }
124
- if (this._conn.callOptions) {
125
- var callOptions = [];
126
- for (var name in this._conn.callOptions) {
127
- callOptions.push(name + "=" + this._conn.callOptions[name]);
128
- }
129
- request.headers["Sforce-Call-Options"] = callOptions.join(', ');
130
- }
131
- };
132
-
133
- /**
134
- * Detect response content mime-type
135
- * @protected
136
- */
137
- HttpApi.prototype.getResponseContentType = function(response) {
138
- return this._responseType || response.headers && response.headers["content-type"];
139
- };
140
-
141
- /**
142
- *
143
- */
144
- HttpApi.prototype.parseResponseBody = function(response) {
145
- var contentType = this.getResponseContentType(response);
146
- var parseBody = /^(text|application)\/xml(;|$)/.test(contentType) ? parseXML :
147
- /^application\/json(;|$)/.test(contentType) ? parseJSON :
148
- /^text\/csv(;|$)/.test(contentType) ? parseCSV :
149
- parseText;
150
- try {
151
- return parseBody(response.body);
152
- } catch(e) {
153
- return response.body;
154
- }
155
- };
156
-
157
- /**
158
- * Get response body
159
- * @protected
160
- */
161
- HttpApi.prototype.getResponseBody = function(response) {
162
- if (response.statusCode === 204) { // No Content
163
- return this._noContentResponse;
164
- }
165
- var body = this.parseResponseBody(response);
166
- var err;
167
- if (this.hasErrorInResponseBody(body)) {
168
- err = this.getError(response, body);
169
- throw err;
170
- }
171
- if (response.statusCode === 300) { // Multiple Choices
172
- err = new Error('Multiple records found');
173
- err.name = "MULTIPLE_CHOICES";
174
- err.content = body;
175
- throw err;
176
- }
177
- return body;
178
- };
179
-
180
- /** @private */
181
- function parseJSON(str) {
182
- return JSON.parse(str);
183
- }
184
-
185
- /** @private */
186
- function parseXML(str) {
187
- var ret = {};
188
- require('xml2js').parseString(str, { explicitArray: false }, function(err, result) {
189
- ret = { error: err, result : result };
190
- });
191
- if (ret.error) { throw ret.error; }
192
- return ret.result;
193
- }
194
-
195
- /** @private */
196
- function parseCSV(str) {
197
- return require('./csv').parseCSV(str);
198
- }
199
-
200
- /** @private */
201
- function parseText(str) { return str; }
202
-
203
-
204
- /**
205
- * Detect session expiry
206
- * @protected
207
- */
208
- HttpApi.prototype.isSessionExpired = function(response) {
209
- return response.statusCode === 401;
210
- };
211
-
212
- /**
213
- * Detect error response
214
- * @protected
215
- */
216
- HttpApi.prototype.isErrorResponse = function(response) {
217
- return response.statusCode >= 400;
218
- };
219
-
220
- /**
221
- * Detect error in response body
222
- * @protected
223
- */
224
- HttpApi.prototype.hasErrorInResponseBody = function(body) {
225
- return false;
226
- };
227
-
228
- /**
229
- * Parsing error message in response
230
- * @protected
231
- */
232
- HttpApi.prototype.parseError = function(body) {
233
- var errors = body;
234
- return _.isArray(errors) ? errors[0] : errors;
235
- };
236
-
237
- /**
238
- * Get error message in response
239
- * @protected
240
- */
241
- HttpApi.prototype.getError = function(response, body) {
242
- var error;
243
- try {
244
- error = this.parseError(body || this.parseResponseBody(response));
245
- } catch(e) {}
246
- error = _.isObject(error) && _.isString(error.message) ? error : {
247
- errorCode: 'ERROR_HTTP_' + response.statusCode,
248
- message : response.body
249
- };
250
- var err = new Error(error.message);
251
- err.name = error.errorCode;
252
- for (var key in error) { err[key] = error[key]; }
253
- return err;
254
- };
255
-
256
- /*-------------------------------------------------------------------------*/
257
-
258
- /**
259
- * @protected
260
- */
261
- var SessionRefreshDelegate = function(conn, refreshFn) {
262
- this._conn = conn;
263
- this._refreshFn = refreshFn;
264
- this._refreshing = false;
265
- };
266
-
267
- inherits(SessionRefreshDelegate, events.EventEmitter);
268
-
269
- /**
270
- * Refresh access token
271
- * @private
272
- */
273
- SessionRefreshDelegate.prototype.refresh = function(since, callback) {
274
- // Callback immediately When refreshed after designated time
275
- if (this._lastRefreshedAt > since) { return callback(); }
276
- var self = this;
277
- var conn = this._conn;
278
- var logger = conn._logger;
279
- self.once('resume', callback);
280
- if (self._refreshing) { return; }
281
- logger.debug("<refresh token>");
282
- self._refreshing = true;
283
- return self._refreshFn(conn, function(err, accessToken, res) {
284
- if (!err) {
285
- logger.debug("Connection refresh completed.");
286
- conn.accessToken = accessToken;
287
- conn.emit("refresh", accessToken, res);
288
- }
289
- self._lastRefreshedAt = Date.now();
290
- self._refreshing = false;
291
- self.emit('resume', err);
292
- });
293
- };
294
-
295
-
296
- /**
297
- *
298
- */
299
- HttpApi.SessionRefreshDelegate = SessionRefreshDelegate;
300
- module.exports = HttpApi;
package/lib/jsforce.js DELETED
@@ -1,10 +0,0 @@
1
- /**
2
- * @file JSforce API root object
3
- * @author Shinichi Tomita <shinichi.tomita@gmail.com>
4
- */
5
-
6
- 'use strict';
7
-
8
- require('./api');
9
- require('./registry');
10
- module.exports = require('./core');
package/lib/logger.js DELETED
@@ -1,52 +0,0 @@
1
- 'use strict';
2
-
3
- /**
4
- * @protected
5
- * @class
6
- * @constructor
7
- * @param {String|Number} logLevel - Log level
8
- */
9
- var Logger = module.exports = function(logLevel) {
10
- if (typeof logLevel === 'string') {
11
- logLevel = LogLevels[logLevel];
12
- }
13
- if (!logLevel) {
14
- logLevel = LogLevels.INFO;
15
- }
16
- this._logLevel = logLevel;
17
- };
18
-
19
- /**
20
- * @memberof Logger
21
- */
22
- var LogLevels = Logger.LogLevels = {
23
- "DEBUG" : 1,
24
- "INFO" : 2,
25
- "WARN" : 3,
26
- "ERROR" : 4,
27
- "FATAL" : 5
28
- };
29
-
30
- /**
31
- * Output log
32
- *
33
- * @param {String} level - Logging target level
34
- * @param {String} message - Message to log
35
- */
36
- Logger.prototype.log = function(level, message) {
37
- if (this._logLevel <= level) {
38
- if (level < LogLevels.ERROR) {
39
- console.log(message);
40
- } else {
41
- console.error(message);
42
- }
43
- }
44
- };
45
-
46
- for (var level in LogLevels) {
47
- Logger.prototype[level.toLowerCase()] = createLoggerFunction(LogLevels[level]);
48
- }
49
-
50
- function createLoggerFunction(level) {
51
- return function(message) { this.log(level, message); };
52
- }