electron-compile
Version:
Electron supporting package to compile JS and CSS in Electron applications
84 lines (64 loc) • 6.27 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
var _keys = require('babel-runtime/core-js/object/keys');
var _keys2 = _interopRequireDefault(_keys);
var _typeof2 = require('babel-runtime/helpers/typeof');
var _typeof3 = _interopRequireDefault(_typeof2);
exports.default = createDigestForObject;
var _crypto = require('crypto');
var _crypto2 = _interopRequireDefault(_crypto);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function updateDigestForJsonValue(shasum, value) {
// Implmentation is similar to that of pretty-printing a JSON object, except:
// * Strings are not escaped.
// * No effort is made to avoid trailing commas.
// These shortcuts should not affect the correctness of this function.
var type = typeof value === 'undefined' ? 'undefined' : (0, _typeof3.default)(value);
if (type === 'string') {
shasum.update('"', 'utf8');
shasum.update(value, 'utf8');
shasum.update('"', 'utf8');
return;
}
if (type === 'boolean' || type === 'number') {
shasum.update(value.toString(), 'utf8');
return;
}
if (!value) {
shasum.update('null', 'utf8');
return;
}
if (Array.isArray(value)) {
shasum.update('[', 'utf8');
for (var i = 0; i < value.length; i++) {
updateDigestForJsonValue(shasum, value[i]);
shasum.update(',', 'utf8');
}
shasum.update(']', 'utf8');
return;
}
// value must be an object: be sure to sort the keys.
var keys = (0, _keys2.default)(value);
keys.sort();
shasum.update('{', 'utf8');
for (var i = 0; i < keys.length; i++) {
updateDigestForJsonValue(shasum, keys[i]);
shasum.update(': ', 'utf8');
updateDigestForJsonValue(shasum, value[keys[i]]);
shasum.update(',', 'utf8');
}
shasum.update('}', 'utf8');
}
/**
* Creates a hash from a JS object
*
* @private
*/
function createDigestForObject(obj) {
var sha1 = _crypto2.default.createHash('sha1');
updateDigestForJsonValue(sha1, obj);
return sha1.digest('hex');
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9kaWdlc3QtZm9yLW9iamVjdC5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7OztrQkEwRHdCOzs7Ozs7OztBQXhEeEIsU0FBUyx3QkFBVCxDQUFrQyxNQUFsQyxFQUEwQyxLQUExQyxFQUFpRDs7Ozs7QUFLL0MsTUFBTSxjQUFjLGtFQUFkLENBTHlDOztBQU8vQyxNQUFJLFNBQVMsUUFBVCxFQUFtQjtBQUNyQixXQUFPLE1BQVAsQ0FBYyxHQUFkLEVBQW1CLE1BQW5CLEVBRHFCO0FBRXJCLFdBQU8sTUFBUCxDQUFjLEtBQWQsRUFBcUIsTUFBckIsRUFGcUI7QUFHckIsV0FBTyxNQUFQLENBQWMsR0FBZCxFQUFtQixNQUFuQixFQUhxQjtBQUlyQixXQUpxQjtHQUF2Qjs7QUFPQSxNQUFJLFNBQVMsU0FBVCxJQUFzQixTQUFTLFFBQVQsRUFBbUI7QUFDM0MsV0FBTyxNQUFQLENBQWMsTUFBTSxRQUFOLEVBQWQsRUFBZ0MsTUFBaEMsRUFEMkM7QUFFM0MsV0FGMkM7R0FBN0M7O0FBS0EsTUFBSSxDQUFDLEtBQUQsRUFBUTtBQUNWLFdBQU8sTUFBUCxDQUFjLE1BQWQsRUFBc0IsTUFBdEIsRUFEVTtBQUVWLFdBRlU7R0FBWjs7QUFLQSxNQUFJLE1BQU0sT0FBTixDQUFjLEtBQWQsQ0FBSixFQUEwQjtBQUN4QixXQUFPLE1BQVAsQ0FBYyxHQUFkLEVBQW1CLE1BQW5CLEVBRHdCO0FBRXhCLFNBQUssSUFBSSxJQUFFLENBQUYsRUFBSyxJQUFJLE1BQU0sTUFBTixFQUFjLEdBQWhDLEVBQXFDO0FBQ25DLCtCQUF5QixNQUF6QixFQUFpQyxNQUFNLENBQU4sQ0FBakMsRUFEbUM7QUFFbkMsYUFBTyxNQUFQLENBQWMsR0FBZCxFQUFtQixNQUFuQixFQUZtQztLQUFyQztBQUlBLFdBQU8sTUFBUCxDQUFjLEdBQWQsRUFBbUIsTUFBbkIsRUFOd0I7QUFPeEIsV0FQd0I7R0FBMUI7OztBQXhCK0MsTUFtQzNDLE9BQU8sb0JBQVksS0FBWixDQUFQLENBbkMyQztBQW9DL0MsT0FBSyxJQUFMLEdBcEMrQzs7QUFzQy9DLFNBQU8sTUFBUCxDQUFjLEdBQWQsRUFBbUIsTUFBbkIsRUF0QytDOztBQXdDL0MsT0FBSyxJQUFJLElBQUUsQ0FBRixFQUFLLElBQUksS0FBSyxNQUFMLEVBQWEsR0FBL0IsRUFBb0M7QUFDbEMsNkJBQXlCLE1BQXpCLEVBQWlDLEtBQUssQ0FBTCxDQUFqQyxFQURrQztBQUVsQyxXQUFPLE1BQVAsQ0FBYyxJQUFkLEVBQW9CLE1BQXBCLEVBRmtDO0FBR2xDLDZCQUF5QixNQUF6QixFQUFpQyxNQUFNLEtBQUssQ0FBTCxDQUFOLENBQWpDLEVBSGtDO0FBSWxDLFdBQU8sTUFBUCxDQUFjLEdBQWQsRUFBbUIsTUFBbkIsRUFKa0M7R0FBcEM7O0FBT0EsU0FBTyxNQUFQLENBQWMsR0FBZCxFQUFtQixNQUFuQixFQS9DK0M7Q0FBakQ7Ozs7Ozs7QUF3RGUsU0FBUyxxQkFBVCxDQUErQixHQUEvQixFQUFvQztBQUNqRCxNQUFJLE9BQU8saUJBQU8sVUFBUCxDQUFrQixNQUFsQixDQUFQLENBRDZDO0FBRWpELDJCQUF5QixJQUF6QixFQUErQixHQUEvQixFQUZpRDs7QUFJakQsU0FBTyxLQUFLLE1BQUwsQ0FBWSxLQUFaLENBQVAsQ0FKaUQ7Q0FBcEMiLCJmaWxlIjoiZGlnZXN0LWZvci1vYmplY3QuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgY3J5cHRvIGZyb20gJ2NyeXB0byc7XG5cbmZ1bmN0aW9uIHVwZGF0ZURpZ2VzdEZvckpzb25WYWx1ZShzaGFzdW0sIHZhbHVlKSB7XG4gIC8vIEltcGxtZW50YXRpb24gaXMgc2ltaWxhciB0byB0aGF0IG9mIHByZXR0eS1wcmludGluZyBhIEpTT04gb2JqZWN0LCBleGNlcHQ6XG4gIC8vICogU3RyaW5ncyBhcmUgbm90IGVzY2FwZWQuXG4gIC8vICogTm8gZWZmb3J0IGlzIG1hZGUgdG8gYXZvaWQgdHJhaWxpbmcgY29tbWFzLlxuICAvLyBUaGVzZSBzaG9ydGN1dHMgc2hvdWxkIG5vdCBhZmZlY3QgdGhlIGNvcnJlY3RuZXNzIG9mIHRoaXMgZnVuY3Rpb24uXG4gIGNvbnN0IHR5cGUgPSB0eXBlb2YodmFsdWUpO1xuXG4gIGlmICh0eXBlID09PSAnc3RyaW5nJykge1xuICAgIHNoYXN1bS51cGRhdGUoJ1wiJywgJ3V0ZjgnKTtcbiAgICBzaGFzdW0udXBkYXRlKHZhbHVlLCAndXRmOCcpO1xuICAgIHNoYXN1bS51cGRhdGUoJ1wiJywgJ3V0ZjgnKTtcbiAgICByZXR1cm47XG4gIH1cblxuICBpZiAodHlwZSA9PT0gJ2Jvb2xlYW4nIHx8IHR5cGUgPT09ICdudW1iZXInKSB7XG4gICAgc2hhc3VtLnVwZGF0ZSh2YWx1ZS50b1N0cmluZygpLCAndXRmOCcpO1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGlmICghdmFsdWUpIHtcbiAgICBzaGFzdW0udXBkYXRlKCdudWxsJywgJ3V0ZjgnKTtcbiAgICByZXR1cm47XG4gIH1cblxuICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICBzaGFzdW0udXBkYXRlKCdbJywgJ3V0ZjgnKTtcbiAgICBmb3IgKGxldCBpPTA7IGkgPCB2YWx1ZS5sZW5ndGg7IGkrKykge1xuICAgICAgdXBkYXRlRGlnZXN0Rm9ySnNvblZhbHVlKHNoYXN1bSwgdmFsdWVbaV0pO1xuICAgICAgc2hhc3VtLnVwZGF0ZSgnLCcsICd1dGY4Jyk7XG4gICAgfVxuICAgIHNoYXN1bS51cGRhdGUoJ10nLCAndXRmOCcpO1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8vIHZhbHVlIG11c3QgYmUgYW4gb2JqZWN0OiBiZSBzdXJlIHRvIHNvcnQgdGhlIGtleXMuXG4gIGxldCBrZXlzID0gT2JqZWN0LmtleXModmFsdWUpO1xuICBrZXlzLnNvcnQoKTtcblxuICBzaGFzdW0udXBkYXRlKCd7JywgJ3V0ZjgnKTtcblxuICBmb3IgKGxldCBpPTA7IGkgPCBrZXlzLmxlbmd0aDsgaSsrKSB7XG4gICAgdXBkYXRlRGlnZXN0Rm9ySnNvblZhbHVlKHNoYXN1bSwga2V5c1tpXSk7XG4gICAgc2hhc3VtLnVwZGF0ZSgnOiAnLCAndXRmOCcpO1xuICAgIHVwZGF0ZURpZ2VzdEZvckpzb25WYWx1ZShzaGFzdW0sIHZhbHVlW2tleXNbaV1dKTtcbiAgICBzaGFzdW0udXBkYXRlKCcsJywgJ3V0ZjgnKTtcbiAgfVxuXG4gIHNoYXN1bS51cGRhdGUoJ30nLCAndXRmOCcpO1xufVxuXG5cbi8qKlxuICogQ3JlYXRlcyBhIGhhc2ggZnJvbSBhIEpTIG9iamVjdFxuICogXG4gKiBAcHJpdmF0ZSAgXG4gKi8gXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBjcmVhdGVEaWdlc3RGb3JPYmplY3Qob2JqKSB7XG4gIGxldCBzaGExID0gY3J5cHRvLmNyZWF0ZUhhc2goJ3NoYTEnKTtcbiAgdXBkYXRlRGlnZXN0Rm9ySnNvblZhbHVlKHNoYTEsIG9iaik7XG4gIFxuICByZXR1cm4gc2hhMS5kaWdlc3QoJ2hleCcpO1xufVxuIl19