UNPKG

jsforce

Version:

Salesforce API Library for JavaScript

3 lines (2 loc) 11.8 kB
!function(t){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=t();else if("function"==typeof define&&define.amd)define([],t);else{var e;e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,e=e.jsforce||(e.jsforce={}),e=e.modules||(e.modules={}),e=e.api||(e.api={}),e.Bulk=t()}}(function(){return function t(e,o,n){function r(s,a){if(!o[s]){if(!e[s]){var u="function"==typeof require&&require;if(!a&&u)return u(s,!0);if(i)return i(s,!0);var c=new Error("Cannot find module '"+s+"'");throw c.code="MODULE_NOT_FOUND",c}var h=o[s]={exports:{}};e[s][0].call(h.exports,function(t){var o=e[s][1][t];return r(o?o:t)},h,h.exports,t,e,o,n)}return o[s].exports}for(var i="function"==typeof require&&require,s=0;s<n.length;s++)r(n[s]);return r}({1:[function(t,e,o){(function(t){"use strict";var o=window.jsforce.require("inherits"),n=window.jsforce.require("readable-stream"),r=n.Duplex,i=window.jsforce.require("events"),s=window.jsforce.require("lodash/core"),a=window.jsforce.require("multistream"),u=window.jsforce.require("./core"),c=window.jsforce.require("./record-stream"),h=window.jsforce.require("./promise"),p=window.jsforce.require("./http-api"),l=function(t,e,o,n,r){this._bulk=t,this.type=e,this.operation=o,this.options=n||{},this.id=r,this.state=this.id?"Open":"Unknown",this._batches={}};o(l,i.EventEmitter),l.prototype.info=function(t){return this._jobInfo||(this._jobInfo=this.check()),this._jobInfo.thenCall(t)},l.prototype.open=function(t){var e=this,o=this._bulk;o._logger;if(!this._jobInfo){var n=this.operation.toLowerCase();"harddelete"===n&&(n="hardDelete");var r=['<?xml version="1.0" encoding="UTF-8"?>','<jobInfo xmlns="http://www.force.com/2009/06/asyncapi/dataload">',"<operation>"+n+"</operation>","<object>"+this.type+"</object>",this.options.extIdField?"<externalIdFieldName>"+this.options.extIdField+"</externalIdFieldName>":"",this.options.concurrencyMode?"<concurrencyMode>"+this.options.concurrencyMode+"</concurrencyMode>":"",this.options.assignmentRuleId?"<assignmentRuleId>"+this.options.assignmentRuleId+"</assignmentRuleId>":"","<contentType>CSV</contentType>","</jobInfo>"].join("");this._jobInfo=o._request({method:"POST",path:"/job",body:r,headers:{"Content-Type":"application/xml; charset=utf-8"},responseType:"application/xml"}).then(function(t){return e.emit("open",t.jobInfo),e.id=t.jobInfo.id,e.state=t.jobInfo.state,t.jobInfo},function(t){throw e.emit("error",t),t})}return this._jobInfo.thenCall(t)},l.prototype.createBatch=function(){var t=new f(this),e=this;return t.on("queue",function(){e._batches[t.id]=t}),t},l.prototype.batch=function(t){var e=this._batches[t];return e||(e=new f(this,t),this._batches[t]=e),e},l.prototype.check=function(t){var e=this,o=this._bulk,n=o._logger;return this._jobInfo=this._waitAssign().then(function(){return o._request({method:"GET",path:"/job/"+e.id,responseType:"application/xml"})}).then(function(t){return n.debug(t.jobInfo),e.id=t.jobInfo.id,e.type=t.jobInfo.object,e.operation=t.jobInfo.operation,e.state=t.jobInfo.state,t.jobInfo}),this._jobInfo.thenCall(t)},l.prototype._waitAssign=function(t){return(this.id?h.resolve({id:this.id}):this.open()).thenCall(t)},l.prototype.list=function(t){var e=this,o=this._bulk,n=o._logger;return this._waitAssign().then(function(){return o._request({method:"GET",path:"/job/"+e.id+"/batch",responseType:"application/xml"})}).then(function(t){n.debug(t.batchInfoList.batchInfo);var e=t.batchInfoList;return e=s.isArray(e.batchInfo)?e.batchInfo:[e.batchInfo]}).thenCall(t)},l.prototype.close=function(){var t=this;return this._changeState("Closed").then(function(e){return t.id=null,t.emit("close",e),e},function(e){throw t.emit("error",e),e})},l.prototype.abort=function(){var t=this;return this._changeState("Aborted").then(function(e){return t.id=null,t.emit("abort",e),e},function(e){throw t.emit("error",e),e})},l.prototype._changeState=function(t,e){var o=this,n=this._bulk,r=n._logger;return this._jobInfo=this._waitAssign().then(function(){var e=['<?xml version="1.0" encoding="UTF-8"?>','<jobInfo xmlns="http://www.force.com/2009/06/asyncapi/dataload">',"<state>"+t+"</state>","</jobInfo>"].join("");return n._request({method:"POST",path:"/job/"+o.id,body:e,headers:{"Content-Type":"application/xml; charset=utf-8"},responseType:"application/xml"})}).then(function(t){return r.debug(t.jobInfo),o.state=t.jobInfo.state,t.jobInfo}),this._jobInfo.thenCall(e)};var f=function(t,e){f.super_.call(this,{objectMode:!0}),this.job=t,this.id=e,this._bulk=t._bulk,this._deferred=h.defer(),this._setupDataStreams()};o(f,n.Writable),f.prototype._setupDataStreams=function(){var t=this,e={nullValue:"#N/A"};this._uploadStream=new c.Serializable,this._uploadDataStream=this._uploadStream.stream("csv",e),this._downloadStream=new c.Parsable,this._downloadDataStream=this._downloadStream.stream("csv",e),this.on("finish",function(){t._uploadStream.end()}),this._uploadDataStream.once("readable",function(){t.job.open().then(function(){t._uploadDataStream.pipe(t._createRequestStream())})});var o=this._dataStream=new r;o._write=function(e,o,n){t._uploadDataStream.write(e,o,n)},o.on("finish",function(){t._uploadDataStream.end()}),this._downloadDataStream.on("readable",function(){o.read(0)}),this._downloadDataStream.on("end",function(){o.push(null)}),o._read=function(e){for(var n;null!==(n=t._downloadDataStream.read());)o.push(n)}},f.prototype._createRequestStream=function(){var t=this,e=t._bulk,o=e._logger;return e._request({method:"POST",path:"/job/"+t.job.id+"/batch",headers:{"Content-Type":"text/csv"},responseType:"application/xml"},function(e,n){e?t.emit("error",e):(o.debug(n.batchInfo),t.id=n.batchInfo.id,t.emit("queue",n.batchInfo))}).stream()},f.prototype._write=function(t,e,o){t=s.clone(t),"insert"===this.job.operation?delete t.Id:"delete"===this.job.operation&&(t={Id:t.Id}),delete t.type,delete t.attributes,this._uploadStream.write(t,e,o)},f.prototype.stream=function(){return this._dataStream},f.prototype.run=f.prototype.exec=f.prototype.execute=function(t,e){var o=this;if("function"==typeof t&&(e=t,t=null),this._result)throw new Error("Batch already executed.");var n=h.defer();if(this._result=n.promise,this._result.then(function(t){o._deferred.resolve(t)},function(t){o._deferred.reject(t)}),this.once("response",function(t){n.resolve(t)}),this.once("error",function(t){n.reject(t)}),s.isObject(t)&&s.isFunction(t.pipe))t.pipe(this._dataStream);else{var r;s.isArray(t)?(s.forEach(t,function(t){o.write(t)}),o.end()):s.isString(t)&&(r=t,this._dataStream.write(r,"utf8"),this._dataStream.end())}return this.thenCall(e)},f.prototype.then=function(t,e,o){return this._deferred.promise.then(t,e,o)},f.prototype.thenCall=function(e){return s.isFunction(e)&&this.then(function(o){t.nextTick(function(){e(null,o)})},function(o){t.nextTick(function(){e(o)})}),this},f.prototype.check=function(t){var e=this._bulk,o=e._logger,n=this.job.id,r=this.id;if(!n||!r)throw new Error("Batch not started.");return e._request({method:"GET",path:"/job/"+n+"/batch/"+r,responseType:"application/xml"}).then(function(t){return o.debug(t.batchInfo),t.batchInfo}).thenCall(t)},f.prototype.poll=function(t,e){var o=this,n=this.job.id,r=this.id;if(!n||!r)throw new Error("Batch not started.");var i=(new Date).getTime(),s=function(){var a=(new Date).getTime();if(i+e<a){var u=new Error("Polling time out. Job Id = "+n+" , batch Id = "+r);return u.name="PollingTimeout",void o.emit("error",u)}o.check(function(e,n){e?o.emit("error",e):"Failed"===n.state?parseInt(n.numberRecordsProcessed,10)>0?o.retrieve():o.emit("error",new Error(n.stateMessage)):"Completed"===n.state?o.retrieve():(o.emit("progress",n),setTimeout(s,t))})};setTimeout(s,t)},f.prototype.retrieve=function(t){var e=this,o=this._bulk,n=this.job.id,r=this.job,i=this.id;if(!n||!i)throw new Error("Batch not started.");return r.info().then(function(t){return o._request({method:"GET",path:"/job/"+n+"/batch/"+i+"/result"})}).then(function(t){var a;if("query"===r.operation){o._conn,t["result-list"].result;a=t["result-list"].result,a=s.map(s.isArray(a)?a:[a],function(t){return{id:t,batchId:i,jobId:n}})}else a=s.map(t,function(t){return{id:t.Id||null,success:"true"===t.Success,errors:t.Error?[t.Error]:[]}});return e.emit("response",a),a}).fail(function(t){throw e.emit("error",t),t}).thenCall(t)},f.prototype.result=function(t){var e=this.job.id,o=this.id;if(!e||!o)throw new Error("Batch not started.");var n=new c.Parsable,r=n.stream("csv");this._bulk._request({method:"GET",path:"/job/"+e+"/batch/"+o+"/result/"+t,responseType:"application/octet-stream"}).stream().pipe(r);return n};var d=function(){d.super_.apply(this,arguments)};o(d,p),d.prototype.beforeSend=function(t){t.headers=t.headers||{},t.headers["X-SFDC-SESSION"]=this._conn.accessToken},d.prototype.isSessionExpired=function(t){return 400===t.statusCode&&/<exceptionCode>InvalidSessionId<\/exceptionCode>/.test(t.body)},d.prototype.hasErrorInResponseBody=function(t){return!!t.error},d.prototype.parseError=function(t){return{errorCode:t.error.exceptionCode,message:t.error.exceptionMessage}};var b=function(t){this._conn=t,this._logger=t._logger};b.prototype.pollInterval=1e3,b.prototype.pollTimeout=1e4,b.prototype._request=function(t,e){var o=this._conn;t=s.clone(t);var n=[o.instanceUrl,"services/async",o.version].join("/");t.url=n+t.path;var r={responseType:t.responseType};return delete t.path,delete t.responseType,new d(this._conn,r).request(t).thenCall(e)},b.prototype.load=function(t,e,o,n,r){var i=this;if(!t||!e)throw new Error("Insufficient arguments. At least, 'type' and 'operation' are required.");s.isObject(o)&&o.constructor===Object||(r=n,n=o,o=null);var a=this.createJob(t,e,o);a.once("error",function(t){u&&u.emit("error",t)});var u=a.createBatch(),c=function(){u=null,a.close()},h=function(t){"PollingTimeout"!==t.name&&c()};return u.on("response",c),u.on("error",h),u.on("queue",function(){u.poll(i.pollInterval,i.pollTimeout)}),u.execute(n,r)},b.prototype.query=function(t){var e=t.replace(/\([\s\S]+\)/g,"").match(/FROM\s+(\w+)/i);if(!e)throw new Error("No sobject type found in query, maybe caused by invalid SOQL.");var o=e[1],n=this,r=new c.Parsable,i=r.stream("csv");return this.load(o,"query",t).then(function(t){var e=t.map(function(t){return n.job(t.jobId).batch(t.batchId).result(t.id).stream()});a(e).pipe(i)}).fail(function(t){r.emit("error",t)}),r},b.prototype.createJob=function(t,e,o){return new l(this,t,e,o)},b.prototype.job=function(t){return new l(this,null,null,null,t)},u.on("connection:new",function(t){t.bulk=new b(t)}),e.exports=b}).call(this,t("_process"))},{_process:2}],2:[function(t,e,o){function n(){l&&h&&(l=!1,h.length?p=h.concat(p):f=-1,p.length&&r())}function r(){if(!l){var t=a(n);l=!0;for(var e=p.length;e;){for(h=p,p=[];++f<e;)h&&h[f].run();f=-1,e=p.length}h=null,l=!1,u(t)}}function i(t,e){this.fun=t,this.array=e}function s(){}var a,u,c=e.exports={};!function(){try{a=setTimeout}catch(t){a=function(){throw new Error("setTimeout is not defined")}}try{u=clearTimeout}catch(t){u=function(){throw new Error("clearTimeout is not defined")}}}();var h,p=[],l=!1,f=-1;c.nextTick=function(t){var e=new Array(arguments.length-1);if(arguments.length>1)for(var o=1;o<arguments.length;o++)e[o-1]=arguments[o];p.push(new i(t,e)),1!==p.length||l||a(r,0)},i.prototype.run=function(){this.fun.apply(null,this.array)},c.title="browser",c.browser=!0,c.env={},c.argv=[],c.version="",c.versions={},c.on=s,c.addListener=s,c.once=s,c.off=s,c.removeListener=s,c.removeAllListeners=s,c.emit=s,c.binding=function(t){throw new Error("process.binding is not supported")},c.cwd=function(){return"/"},c.chdir=function(t){throw new Error("process.chdir is not supported")},c.umask=function(){return 0}},{}]},{},[1])(1)}); //# sourceMappingURL=jsforce-api-bulk.min.js.map