From b230e2ad70f8e34f50203e51fd47bf54ae0876b4 Mon Sep 17 00:00:00 2001 From: Vincent Bitter Date: Wed, 20 Apr 2016 16:14:16 +0200 Subject: [PATCH] Add window.Node to support Angular 1.4.8+ --- dist/angular-workers.js | 1 + dist/angular-workers.min.js | 2 +- src/angular-workers.js | 1 + 3 files changed, 3 insertions(+), 1 deletion(-) diff --git a/dist/angular-workers.js b/dist/angular-workers.js index 78978af..492b271 100644 --- a/dist/angular-workers.js +++ b/dist/angular-workers.js @@ -10,6 +10,7 @@ angular.module('FredrikSandell.worker-pool', []).service('WorkerService', [ '', 'var window = self;', 'self.history = {};', + 'self.Node = function () {};', 'var document = {', ' readyState: \'complete\',', ' cookie: \'\',', diff --git a/dist/angular-workers.min.js b/dist/angular-workers.min.js index a7fae10..b0a681f 100644 --- a/dist/angular-workers.min.js +++ b/dist/angular-workers.min.js @@ -1 +1 @@ -angular.module("FredrikSandell.worker-pool",[]).service("WorkerService",["$q",function(a){function b(a){var b="";return angular.forEach(a,function(a){j[a]&&(b+="importScripts('"+j[a].url+"');")}),b}function c(a){var b=[];return angular.forEach(a,function(a){j[a]&&b.push("'"+j[a].moduleName+"'")}),b.join(",")}function d(a){var d=a.filter(function(a){return"input"!==a&&"output"!==a&&"$q"!==a}),e={dependencies:d,moduleList:c(d),angularDepsAsStrings:d.length>0?","+d.map(function(a){return"'"+a+"'"}).join(","):"",angularDepsAsParamList:d.length>0?","+d.join(","):"",servicesIncludeStatements:b(d)};return e.workerFuncParamList="input,output"+e.angularDepsAsParamList,e}function e(a,b){return k.replace("",h).replace("",b.servicesIncludeStatements).replace("",b.moduleList).replace("",b.angularDepsAsStrings).replace("",b.angularDepsAsParamList).replace("",a.toString())}function f(a){return a.slice(0,a.length-1)}function g(a,b){return"("+a.toString()+")("+b+")"}var h,i={},j={},k=["","var window = self;","self.history = {};","var document = {"," readyState: 'complete',"," cookie: '',"," querySelector: function () {},"," createElement: function () {"," return {"," pathname: '',"," setAttribute: function () {}"," };"," }","};","importScripts('');","","angular = window.angular;","var workerApp = angular.module('WorkerApp', []);","workerApp.run(['$q', function ($q) {"," self.addEventListener('message', function(e) {"," var input = e.data;"," var output = $q.defer();"," var promise = output.promise;"," promise.then(function(success) {"," self.postMessage({event:'success', data : success});"," }, function(reason) {"," self.postMessage({event:'failure', data : reason});"," }, function(update) {"," self.postMessage({event:'update', data : update});"," });"," ;"," });"," self.postMessage({event:'initDone'});","}]);","angular.bootstrap(null, ['WorkerApp']);"].join("\n");i.setAngularUrl=function(a){return h=a,i},i.addDependency=function(a,b,c){return j[a]={url:c,moduleName:b},i},i.createAngularWorker=function(b){if(!Array.isArray(b)||b.length<3||"function"!=typeof b[b.length-1])throw"Input needs to be: ['input','output'/*optional additional dependencies*/,\n function(workerInput, deferredOutput /*optional additional dependencies*/)\n {/*worker body*/}]";if("string"!=typeof h)throw"The url to angular must be defined before worker creation";var c=a.defer(),i=d(f(b)),j=(window.URL?URL:webkitURL).createObjectURL(new Blob([e(g(b[b.length-1],i.workerFuncParamList),i)],{type:"application/javascript"})),k=new Worker(j);return k.addEventListener("message",function(a){var b=a.data.event;"initDone"===b?c.resolve(l(k)):c.reject(a)}),c.promise};var l=function(b){var c={};return c.worker=b,c.run=function(c){var d=a.defer();return b.addEventListener("message",function(a){var b=a.data.event;if("initDone"===b)throw"Received worker initialization in run method. This should already have occurred!";"success"===b?d.resolve(a.data.data):"failure"===b?d.reject(a.data.data):"update"===b?d.notify(a.data.data):d.reject(a)}),b.postMessage(c),d.promise},c.terminate=function(){b.terminate()},c};return i}]); \ No newline at end of file +angular.module("FredrikSandell.worker-pool",[]).service("WorkerService",["$q",function(a){function b(a){var b="";return angular.forEach(a,function(a){j[a]&&(b+="importScripts('"+j[a].url+"');")}),b}function c(a){var b=[];return angular.forEach(a,function(a){j[a]&&b.push("'"+j[a].moduleName+"'")}),b.join(",")}function d(a){var d=a.filter(function(a){return"input"!==a&&"output"!==a&&"$q"!==a}),e={dependencies:d,moduleList:c(d),angularDepsAsStrings:d.length>0?","+d.map(function(a){return"'"+a+"'"}).join(","):"",angularDepsAsParamList:d.length>0?","+d.join(","):"",servicesIncludeStatements:b(d)};return e.workerFuncParamList="input,output"+e.angularDepsAsParamList,e}function e(a,b){return k.replace("",h).replace("",b.servicesIncludeStatements).replace("",b.moduleList).replace("",b.angularDepsAsStrings).replace("",b.angularDepsAsParamList).replace("",a.toString())}function f(a){return a.slice(0,a.length-1)}function g(a,b){return"("+a.toString()+")("+b+")"}var h,i={},j={},k=["","var window = self;","self.history = {};","self.Node = function(){};","var document = {"," readyState: 'complete',"," cookie: '',"," querySelector: function () {},"," createElement: function () {"," return {"," pathname: '',"," setAttribute: function () {}"," };"," }","};","importScripts('');","","angular = window.angular;","var workerApp = angular.module('WorkerApp', []);","workerApp.run(['$q', function ($q) {"," self.addEventListener('message', function(e) {"," var input = e.data;"," var output = $q.defer();"," var promise = output.promise;"," promise.then(function(success) {"," self.postMessage({event:'success', data : success});"," }, function(reason) {"," self.postMessage({event:'failure', data : reason});"," }, function(update) {"," self.postMessage({event:'update', data : update});"," });"," ;"," });"," self.postMessage({event:'initDone'});","}]);","angular.bootstrap(null, ['WorkerApp']);"].join("\n");i.setAngularUrl=function(a){return h=a,i},i.addDependency=function(a,b,c){return j[a]={url:c,moduleName:b},i},i.createAngularWorker=function(b){if(!Array.isArray(b)||b.length<3||"function"!=typeof b[b.length-1])throw"Input needs to be: ['input','output'/*optional additional dependencies*/,\n function(workerInput, deferredOutput /*optional additional dependencies*/)\n {/*worker body*/}]";if("string"!=typeof h)throw"The url to angular must be defined before worker creation";var c=a.defer(),i=d(f(b)),j=(window.URL?URL:webkitURL).createObjectURL(new Blob([e(g(b[b.length-1],i.workerFuncParamList),i)],{type:"application/javascript"})),k=new Worker(j);return k.addEventListener("message",function(a){var b=a.data.event;"initDone"===b?c.resolve(l(k)):c.reject(a)}),c.promise};var l=function(b){var c={};return c.worker=b,c.run=function(c){var d=a.defer();return b.addEventListener("message",function(a){var b=a.data.event;if("initDone"===b)throw"Received worker initialization in run method. This should already have occurred!";"success"===b?d.resolve(a.data.data):"failure"===b?d.reject(a.data.data):"update"===b?d.notify(a.data.data):d.reject(a)}),b.postMessage(c),d.promise},c.terminate=function(){b.terminate()},c};return i}]); \ No newline at end of file diff --git a/src/angular-workers.js b/src/angular-workers.js index 4c7d32b..e0c6820 100644 --- a/src/angular-workers.js +++ b/src/angular-workers.js @@ -10,6 +10,7 @@ angular.module('FredrikSandell.worker-pool', []) , "var window = self;" // Skeleton properties to get Angular to load and bootstrap. \ , "self.history = {};" + , "self.Node = function () {};" , "var document = {" , " readyState: 'complete'," , " cookie: '',"