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'