lib/protractor.js
function getShaSalt() {
  var shaDeps = [__filename,
                 __dirname + '/protractor_api.dart'];
  return shaTextHexDigest.apply(shaDeps.map(utils.readTextFile));
}
function getShaSalt() {
  var shaDeps = [__filename,
                 __dirname + '/protractor_api.dart'];
  return shaTextHexDigest.apply(shaDeps.map(utils.readTextFile));
}
The generated JS files corresponding to the Dart files are also dependent on this codebase.  As an example, an earlier version fixed up some source map refs.  Another version introduced some bootstrap code, etc.  We make the SHA we use dependendant on our codebase by salting it with the SHA for our sourcecode.