Make location.href a getter This ensures that if user code changes directory, `Uri.base` stays up-to-date (as it does in pure Dart).
diff --git a/CHANGELOG.md b/CHANGELOG.md index c69791f..087f58b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md
@@ -1,3 +1,7 @@ +## 1.4.2 + +* Keep `Uri.base` up to date when the current working directory changes. + ## 1.4.1 * Make sure to replace all backslashes for cwd on Windows, not just the first.
diff --git a/lib/preamble.dart b/lib/preamble.dart index 48fa44b..3f50954 100644 --- a/lib/preamble.dart +++ b/lib/preamble.dart
@@ -1,6 +1,6 @@ library node_preamble; -final _minified = r"""var self=Object.create(global);self.location={href:"file://"+function(){var e=process.cwd();return"win32"!=process.platform?e:"/"+e.replace(/\\/g,"/")}()+"/"},self.scheduleImmediate=setImmediate,self.require=require,self.exports=exports,self.process=process,self.__dirname=__dirname,self.__filename=__filename,function(){var e=null;self.document={get currentScript(){return null==e&&(e={src:function(){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]}}()}),e}}}(),self.dartDeferredLibraryLoader=function(e,r,l){try{load(e),r()}catch(e){l(e)}};"""; +final _minified = r"""var self=Object.create(global);self.location={get href(){return"file://"+(e=process.cwd(),"win32"!=process.platform?e:"/"+e.replace(/\\/g,"/"))+"/";var e}},self.scheduleImmediate=setImmediate,self.require=require,self.exports=exports,self.process=process,self.__dirname=__dirname,self.__filename=__filename,function(){var e=null;self.document={get currentScript(){return null==e&&(e={src:function(){try{throw new Error}catch(a){var e=a.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]}}()}),e}}}(),self.dartDeferredLibraryLoader=function(e,r,l){try{load(e),r()}catch(e){l(e)}};"""; final _normal = r""" var self = Object.create(global); @@ -9,11 +9,13 @@ // for paths that contain characters that need to be escaped in URLs. Once // dart-lang/sdk#27979 is fixed, it should be possible to make it better. self.location = { - href: "file://" + (function() { - var cwd = process.cwd(); - if (process.platform != "win32") return cwd; - return "/" + cwd.replace(/\\/g, "/"); - })() + "/" + get href() { + return "file://" + (function() { + var cwd = process.cwd(); + if (process.platform != "win32") return cwd; + return "/" + cwd.replace(/\\/g, "/"); + })() + "/"; + } }; self.scheduleImmediate = setImmediate;
diff --git a/lib/preamble.js b/lib/preamble.js index 910337a..e229589 100644 --- a/lib/preamble.js +++ b/lib/preamble.js
@@ -4,11 +4,13 @@ // for paths that contain characters that need to be escaped in URLs. Once // dart-lang/sdk#27979 is fixed, it should be possible to make it better. self.location = { - href: "file://" + (function() { - var cwd = process.cwd(); - if (process.platform != "win32") return cwd; - return "/" + cwd.replace(/\\/g, "/"); - })() + "/" + get href() { + return "file://" + (function() { + var cwd = process.cwd(); + if (process.platform != "win32") return cwd; + return "/" + cwd.replace(/\\/g, "/"); + })() + "/"; + } }; self.scheduleImmediate = setImmediate;
diff --git a/lib/preamble.min.js b/lib/preamble.min.js index 5771bb0..93a7c3f 100644 --- a/lib/preamble.min.js +++ b/lib/preamble.min.js
@@ -1 +1 @@ -var self=Object.create(global);self.location={href:"file://"+function(){var e=process.cwd();return"win32"!=process.platform?e:"/"+e.replace(/\\/g,"/")}()+"/"},self.scheduleImmediate=setImmediate,self.require=require,self.exports=exports,self.process=process,self.__dirname=__dirname,self.__filename=__filename,function(){var e=null;self.document={get currentScript(){return null==e&&(e={src:function(){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]}}()}),e}}}(),self.dartDeferredLibraryLoader=function(e,r,l){try{load(e),r()}catch(e){l(e)}}; \ No newline at end of file +var self=Object.create(global);self.location={get href(){return"file://"+(e=process.cwd(),"win32"!=process.platform?e:"/"+e.replace(/\\/g,"/"))+"/";var e}},self.scheduleImmediate=setImmediate,self.require=require,self.exports=exports,self.process=process,self.__dirname=__dirname,self.__filename=__filename,function(){var e=null;self.document={get currentScript(){return null==e&&(e={src:function(){try{throw new Error}catch(a){var e=a.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]}}()}),e}}}(),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 94f76cc..24f7e1b 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.4.1 +version: 1.4.2 description: Better node.js preamble for dart2js, use it in your build system. dev_dependencies: http: '^0.11.0'