UNPKG

jsforce2

Version:

Salesforce API Library for JavaScript

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