(function () { /* Imports */ var Meteor = Package.meteor.Meteor; var _ = Package.underscore._; /* Package-scope variables */ var WebAppHashing; (function () { ////////////////////////////////////////////////////////////////////////////// // // // packages/webapp-hashing/webapp-hashing.js // // // ////////////////////////////////////////////////////////////////////////////// // var crypto = Npm.require("crypto"); // 1 // 2 WebAppHashing = {}; // 3 // 4 // Calculate a hash of all the client resources downloaded by the // 5 // browser, including the application HTML, runtime config, code, and // 6 // static files. // 7 // // 8 // This hash *must* change if any resources seen by the browser // 9 // change, and ideally *doesn't* change for any server-only changes // 10 // (but the second is a performance enhancement, not a hard // 11 // requirement). // 12 // 13 WebAppHashing.calculateClientHash = // 14 function (manifest, includeFilter, runtimeConfigOverride) { // 15 var hash = crypto.createHash('sha1'); // 16 // 17 // Omit the old hashed client values in the new hash. These may be // 18 // modified in the new boilerplate. // 19 var runtimeCfg = _.omit(__meteor_runtime_config__, // 20 ['autoupdateVersion', 'autoupdateVersionRefreshable', // 21 'autoupdateVersionCordova']); // 22 // 23 if (runtimeConfigOverride) { // 24 runtimeCfg = runtimeConfigOverride; // 25 } // 26 // 27 hash.update(JSON.stringify(runtimeCfg, 'utf8')); // 28 // 29 _.each(manifest, function (resource) { // 30 if ((! includeFilter || includeFilter(resource.type)) && // 31 (resource.where === 'client' || resource.where === 'internal')) { // 32 hash.update(resource.path); // 33 hash.update(resource.hash); // 34 } // 35 }); // 36 return hash.digest('hex'); // 37 }; // 38 // 39 // 40 ////////////////////////////////////////////////////////////////////////////// }).call(this); /* Exports */ if (typeof Package === 'undefined') Package = {}; Package['webapp-hashing'] = { WebAppHashing: WebAppHashing }; })(); //# sourceMappingURL=webapp-hashing.js.map