Merge branch 'angular-6-fix'
diff --git a/CHANGELOG.md b/CHANGELOG.md index 08fccce..fd3ba96 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md
@@ -1,9 +1,12 @@ ## 1.4.5 -Fixes for Angular 6+ applications using compiled Dart package w/ preamble: +* Improve `location.href` so that Dart's `Uri.current` works for more paths. + * Make `location.href` a getter so Dart's `Uri.current` changes along with the + process's working directory. -* Checks for global if it's not polyfilled, then try for window. -* Don't assume that since we have CommonJS we have process, __dirname, __filename. +* Fixes for Angular 6+ applications using compiled Dart package w/ preamble: + * Checks for global if it's not polyfilled, then try for window. + * Don't assume that since we have CommonJS we have process, __dirname, __filename. ## 1.4.4
diff --git a/lib/preamble.dart b/lib/preamble.dart index 1449403..f075043 100644 --- a/lib/preamble.dart +++ b/lib/preamble.dart
@@ -1,16 +1,13 @@ library node_preamble; -final _minified = r"""var dartNodePreambleHasGlobal="undefined"!=typeof global,dartNodePreambleSelf=dartNodePreambleHasGlobal?global:window,self=Object.create(dartNodePreambleSelf);self.scheduleImmediate=self.setImmediate?function(e){dartNodePreambleSelf.setImmediate(e)}:function(e){setTimeout(e,0)},self.require=require,self.exports=exports;var dartNodePreambleHasProcess="undefined"!=typeof process;dartNodePreambleHasProcess&&(self.process=process);var dartNodePreambleHasDirname="undefined"!=typeof __dirname;dartNodePreambleHasDirname&&(self.__dirname=__dirname);var dartNodePreambleHasFilename="undefined"!=typeof __filename;dartNodePreambleHasFilename&&(self.__filename=__filename),dartNodePreambleSelf.window||(self.location={get href(){return"file://"+(e=process.cwd(),"win32"!=process.platform?e:"/"+e.replace(/\\/g,"/"))+"/";var e}},function(){function e(){try{throw new Error}catch(t){var e=t.stack,r=new RegExp("^ *at [^(]*\\((.*):[0-9]*:[0-9]*\\)$","mg"),a=null;do{var l=r.exec(e);null!=l&&(a=l)}while(null!=l);return a[1]}}var r=null;self.document={get currentScript(){return null==r&&(r={src:e()}),r}}}(),self.dartDeferredLibraryLoader=function(e,r,a){try{load(e),r()}catch(e){a(e)}});"""; +final _minified = r"""var url=require("url"),dartNodePreambleSelf="undefined"!=typeof global?global:window,self=Object.create(dartNodePreambleSelf);self.scheduleImmediate=self.setImmediate?function(e){dartNodePreambleSelf.setImmediate(e)}:function(e){setTimeout(e,0)},self.require=require,self.exports=exports,"undefined"!=typeof process&&(self.process=process),"undefined"!=typeof __dirname&&(self.__dirname=__dirname),"undefined"!=typeof __filename&&(self.__filename=__filename),dartNodePreambleSelf.window||(self.location={get href(){return url.pathToFileURL(process.cwd()).href+"/"}},function(){function e(){try{throw new Error}catch(n){var e=n.stack,r=new RegExp("^ *at [^(]*\\((.*):[0-9]*:[0-9]*\\)$","mg"),l=null;do{var t=r.exec(e);null!=t&&(l=t)}while(null!=t);return l[1]}}var r=null;self.document={get currentScript(){return null==r&&(r={src:e()}),r}}}(),self.dartDeferredLibraryLoader=function(e,r,l){try{load(e),r()}catch(e){l(e)}});"""; final _normal = r""" // make sure to keep this as 'var' // we don't want block scoping -// Making typeof its own variable prevents Angular or Webpack -// from 'breaking guard' and ruining our check. -// https://github.com/medialize/sass.js/commit/6241c10dbe35b181ad78ecbd692fed5f86213ffb -var dartNodePreambleHasGlobal = typeof global !== "undefined"; -var dartNodePreambleSelf = dartNodePreambleHasGlobal ? global : window; +var url = require("url"); +var dartNodePreambleSelf = typeof global !== "undefined" ? global : window; var self = Object.create(dartNodePreambleSelf); @@ -28,18 +25,15 @@ // Node.js specific exports, check to see if they exist & or polyfilled -var dartNodePreambleHasProcess = typeof process !== "undefined"; -if (dartNodePreambleHasProcess) { +if (typeof process !== "undefined") { self.process = process; } -var dartNodePreambleHasDirname = typeof __dirname !== "undefined"; -if (dartNodePreambleHasDirname) { +if (typeof __dirname !== "undefined") { self.__dirname = __dirname; } -var dartNodePreambleHasFilename = typeof __filename !== "undefined"; -if (dartNodePreambleHasFilename) { +if (typeof __filename !== "undefined") { self.__filename = __filename; } @@ -51,11 +45,7 @@ // dart-lang/sdk#27979 is fixed, it should be possible to make it better. self.location = { get href() { - return "file://" + (function() { - var cwd = process.cwd(); - if (process.platform != "win32") return cwd; - return "/" + cwd.replace(/\\/g, "/"); - })() + "/"; + return url.pathToFileURL(process.cwd()).href + "/"; } };
diff --git a/lib/preamble.js b/lib/preamble.js index eaf6265..a0ac71c 100644 --- a/lib/preamble.js +++ b/lib/preamble.js
@@ -1,11 +1,8 @@ // make sure to keep this as 'var' // we don't want block scoping -// Making typeof its own variable prevents Angular or Webpack -// from 'breaking guard' and ruining our check. -// https://github.com/medialize/sass.js/commit/6241c10dbe35b181ad78ecbd692fed5f86213ffb -var dartNodePreambleHasGlobal = typeof global !== "undefined"; -var dartNodePreambleSelf = dartNodePreambleHasGlobal ? global : window; +var url = require("url"); +var dartNodePreambleSelf = typeof global !== "undefined" ? global : window; var self = Object.create(dartNodePreambleSelf); @@ -23,18 +20,15 @@ // Node.js specific exports, check to see if they exist & or polyfilled -var dartNodePreambleHasProcess = typeof process !== "undefined"; -if (dartNodePreambleHasProcess) { +if (typeof process !== "undefined") { self.process = process; } -var dartNodePreambleHasDirname = typeof __dirname !== "undefined"; -if (dartNodePreambleHasDirname) { +if (typeof __dirname !== "undefined") { self.__dirname = __dirname; } -var dartNodePreambleHasFilename = typeof __filename !== "undefined"; -if (dartNodePreambleHasFilename) { +if (typeof __filename !== "undefined") { self.__filename = __filename; } @@ -46,11 +40,7 @@ // dart-lang/sdk#27979 is fixed, it should be possible to make it better. self.location = { get href() { - return "file://" + (function() { - var cwd = process.cwd(); - if (process.platform != "win32") return cwd; - return "/" + cwd.replace(/\\/g, "/"); - })() + "/"; + return url.pathToFileURL(process.cwd()).href + "/"; } };
diff --git a/lib/preamble.min.js b/lib/preamble.min.js index 995a527..5b07aff 100644 --- a/lib/preamble.min.js +++ b/lib/preamble.min.js
@@ -1 +1 @@ -var dartNodePreambleHasGlobal="undefined"!=typeof global,dartNodePreambleSelf=dartNodePreambleHasGlobal?global:window,self=Object.create(dartNodePreambleSelf);self.scheduleImmediate=self.setImmediate?function(e){dartNodePreambleSelf.setImmediate(e)}:function(e){setTimeout(e,0)},self.require=require,self.exports=exports;var dartNodePreambleHasProcess="undefined"!=typeof process;dartNodePreambleHasProcess&&(self.process=process);var dartNodePreambleHasDirname="undefined"!=typeof __dirname;dartNodePreambleHasDirname&&(self.__dirname=__dirname);var dartNodePreambleHasFilename="undefined"!=typeof __filename;dartNodePreambleHasFilename&&(self.__filename=__filename),dartNodePreambleSelf.window||(self.location={get href(){return"file://"+(e=process.cwd(),"win32"!=process.platform?e:"/"+e.replace(/\\/g,"/"))+"/";var e}},function(){function e(){try{throw new Error}catch(t){var e=t.stack,r=new RegExp("^ *at [^(]*\\((.*):[0-9]*:[0-9]*\\)$","mg"),a=null;do{var l=r.exec(e);null!=l&&(a=l)}while(null!=l);return a[1]}}var r=null;self.document={get currentScript(){return null==r&&(r={src:e()}),r}}}(),self.dartDeferredLibraryLoader=function(e,r,a){try{load(e),r()}catch(e){a(e)}}); \ No newline at end of file +var url=require("url"),dartNodePreambleSelf="undefined"!=typeof global?global:window,self=Object.create(dartNodePreambleSelf);self.scheduleImmediate=self.setImmediate?function(e){dartNodePreambleSelf.setImmediate(e)}:function(e){setTimeout(e,0)},self.require=require,self.exports=exports,"undefined"!=typeof process&&(self.process=process),"undefined"!=typeof __dirname&&(self.__dirname=__dirname),"undefined"!=typeof __filename&&(self.__filename=__filename),dartNodePreambleSelf.window||(self.location={get href(){return url.pathToFileURL(process.cwd()).href+"/"}},function(){function e(){try{throw new Error}catch(n){var e=n.stack,r=new RegExp("^ *at [^(]*\\((.*):[0-9]*:[0-9]*\\)$","mg"),l=null;do{var t=r.exec(e);null!=t&&(l=t)}while(null!=t);return l[1]}}var r=null;self.document={get currentScript(){return null==r&&(r={src:e()}),r}}}(),self.dartDeferredLibraryLoader=function(e,r,l){try{load(e),r()}catch(e){l(e)}}); \ No newline at end of file
diff --git a/pubspec.yaml b/pubspec.yaml index 57b8378..4f2f215 100644 --- a/pubspec.yaml +++ b/pubspec.yaml
@@ -1,7 +1,7 @@ name: node_preamble author: Michael Bullington <mikebullingtn@gmail.com> homepage: https://github.com/mbullington/node_preamble.dart -version: 1.5.0 +version: 1.4.5 description: Better node.js preamble for dart2js, use it in your build system. environment: