UNPKG

premote

Version:

wrap javascript remote actions in a promise api

1 lines 1.31 kB
!function(a,b,c){"object"==typeof exports&&"object"==typeof module?module.exports=b(require("q")):"function"==typeof define&&"object"==typeof define.amd?define(["q"],b):c[a]=b(window.Q)}("Premote",function(a){"use strict";function b(b,c){return function(){var d,e=a.defer();d=arguments.length?Array.prototype.slice.apply(arguments):[];var f=function(a,b){if(b.status)e.resolve(a);else{var c=new Error(b.message);c.result=a,"exception"===b.type&&(c.apexStackTrace=b.where),e.reject(c)}};return d.push(f),c&&d.push(c),b.apply(null,d),e.promise}}var c,d={};if(!window||!window.Visualforce)throw new Error("Visualforce Remoting manager not found");return c=window.Visualforce,d.wrap=function(a,d){if(d&&"object"!=typeof d)throw new Error("options must be an object");if("object"==typeof a){var e={};for(var f in a)if(a.hasOwnProperty(f)&&"function"==typeof a[f]){var g=a[f],h=g.bind(a);e[f]=b(h,d)}return e}if("string"==typeof a){var i,j,k,l=a.split(".");if(3===l.length)i=l[0],j=l[1],k=l[2];else{if(2!==l.length)throw new Error("invalid remote action supplied: "+a);j=l[0],k=l[1]}var m=c.remoting.Manager,n=function(){var b;b=arguments.length?Array.prototype.slice.apply(arguments):[],b.splice(0,0,a),m.invokeAction.apply(m,b)};return b(n,d)}throw new Error("invalid remote action supplied: "+a)},d},this||{});