ember-legacy-class-transform
Version:
The default blueprint for ember-cli addons.
53 lines (47 loc) • 5.19 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.precompile = precompile;
var _syntax = require("@glimmer/syntax");
var _templateCompiler = require("./template-compiler");
var _templateCompiler2 = _interopRequireDefault(_templateCompiler);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
const defaultId = (() => {
if (typeof require === 'function') {
try {
/* tslint:disable:no-require-imports */
const crypto = require('crypto');
/* tslint:enable:no-require-imports */
let idFn = src => {
let hash = crypto.createHash('sha1');
hash.update(src, 'utf8');
// trim to 6 bytes of data (2^48 - 1)
return hash.digest('base64').substring(0, 8);
};
idFn("test");
return idFn;
} catch (e) {}
}
return function idFn() {
return null;
};
})();
const defaultOptions = {
id: defaultId,
meta: {}
};
function precompile(string, options = defaultOptions) {
let ast = (0, _syntax.preprocess)(string, options);
let { block, meta } = _templateCompiler2.default.compile(options, ast);
let idFn = options.id || defaultId;
let blockJSON = JSON.stringify(block.toJSON());
let templateJSONObject = {
id: idFn(JSON.stringify(meta) + blockJSON),
block: blockJSON,
meta
};
// JSON is javascript
return JSON.stringify(templateJSONObject);
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9jb21waWxlci5qcyJdLCJuYW1lcyI6WyJwcmVjb21waWxlIiwiZGVmYXVsdElkIiwicmVxdWlyZSIsImNyeXB0byIsImlkRm4iLCJzcmMiLCJoYXNoIiwiY3JlYXRlSGFzaCIsInVwZGF0ZSIsImRpZ2VzdCIsInN1YnN0cmluZyIsImUiLCJkZWZhdWx0T3B0aW9ucyIsImlkIiwibWV0YSIsInN0cmluZyIsIm9wdGlvbnMiLCJhc3QiLCJibG9jayIsImNvbXBpbGUiLCJibG9ja0pTT04iLCJKU09OIiwic3RyaW5naWZ5IiwidG9KU09OIiwidGVtcGxhdGVKU09OT2JqZWN0Il0sIm1hcHBpbmdzIjoiOzs7OztRQTBCZ0JBLFUsR0FBQUEsVTs7QUExQmhCOztBQUNBOzs7Ozs7QUFDQSxNQUFNQyxZQUFZLENBQUMsTUFBTTtBQUNyQixRQUFJLE9BQU9DLE9BQVAsS0FBbUIsVUFBdkIsRUFBbUM7QUFDL0IsWUFBSTtBQUNBO0FBQ0Esa0JBQU1DLFNBQVNELFFBQVEsUUFBUixDQUFmO0FBQ0E7QUFDQSxnQkFBSUUsT0FBT0MsT0FBTztBQUNkLG9CQUFJQyxPQUFPSCxPQUFPSSxVQUFQLENBQWtCLE1BQWxCLENBQVg7QUFDQUQscUJBQUtFLE1BQUwsQ0FBWUgsR0FBWixFQUFpQixNQUFqQjtBQUNBO0FBQ0EsdUJBQU9DLEtBQUtHLE1BQUwsQ0FBWSxRQUFaLEVBQXNCQyxTQUF0QixDQUFnQyxDQUFoQyxFQUFtQyxDQUFuQyxDQUFQO0FBQ0gsYUFMRDtBQU1BTixpQkFBSyxNQUFMO0FBQ0EsbUJBQU9BLElBQVA7QUFDSCxTQVpELENBWUUsT0FBT08sQ0FBUCxFQUFVLENBQUU7QUFDakI7QUFDRCxXQUFPLFNBQVNQLElBQVQsR0FBZ0I7QUFDbkIsZUFBTyxJQUFQO0FBQ0gsS0FGRDtBQUdILENBbkJpQixHQUFsQjtBQW9CQSxNQUFNUSxpQkFBaUI7QUFDbkJDLFFBQUlaLFNBRGU7QUFFbkJhLFVBQU07QUFGYSxDQUF2QjtBQUlPLFNBQVNkLFVBQVQsQ0FBb0JlLE1BQXBCLEVBQTRCQyxVQUFVSixjQUF0QyxFQUFzRDtBQUN6RCxRQUFJSyxNQUFNLHdCQUFXRixNQUFYLEVBQW1CQyxPQUFuQixDQUFWO0FBQ0EsUUFBSSxFQUFFRSxLQUFGLEVBQVNKLElBQVQsS0FBa0IsMkJBQWlCSyxPQUFqQixDQUF5QkgsT0FBekIsRUFBa0NDLEdBQWxDLENBQXRCO0FBQ0EsUUFBSWIsT0FBT1ksUUFBUUgsRUFBUixJQUFjWixTQUF6QjtBQUNBLFFBQUltQixZQUFZQyxLQUFLQyxTQUFMLENBQWVKLE1BQU1LLE1BQU4sRUFBZixDQUFoQjtBQUNBLFFBQUlDLHFCQUFxQjtBQUNyQlgsWUFBSVQsS0FBS2lCLEtBQUtDLFNBQUwsQ0FBZVIsSUFBZixJQUF1Qk0sU0FBNUIsQ0FEaUI7QUFFckJGLGVBQU9FLFNBRmM7QUFHckJOO0FBSHFCLEtBQXpCO0FBS0E7QUFDQSxXQUFPTyxLQUFLQyxTQUFMLENBQWVFLGtCQUFmLENBQVA7QUFDSCIsImZpbGUiOiJsaWIvY29tcGlsZXIuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBwcmVwcm9jZXNzIH0gZnJvbSBcIkBnbGltbWVyL3N5bnRheFwiO1xuaW1wb3J0IFRlbXBsYXRlQ29tcGlsZXIgZnJvbSBcIi4vdGVtcGxhdGUtY29tcGlsZXJcIjtcbmNvbnN0IGRlZmF1bHRJZCA9ICgoKSA9PiB7XG4gICAgaWYgKHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICAvKiB0c2xpbnQ6ZGlzYWJsZTpuby1yZXF1aXJlLWltcG9ydHMgKi9cbiAgICAgICAgICAgIGNvbnN0IGNyeXB0byA9IHJlcXVpcmUoJ2NyeXB0bycpO1xuICAgICAgICAgICAgLyogdHNsaW50OmVuYWJsZTpuby1yZXF1aXJlLWltcG9ydHMgKi9cbiAgICAgICAgICAgIGxldCBpZEZuID0gc3JjID0+IHtcbiAgICAgICAgICAgICAgICBsZXQgaGFzaCA9IGNyeXB0by5jcmVhdGVIYXNoKCdzaGExJyk7XG4gICAgICAgICAgICAgICAgaGFzaC51cGRhdGUoc3JjLCAndXRmOCcpO1xuICAgICAgICAgICAgICAgIC8vIHRyaW0gdG8gNiBieXRlcyBvZiBkYXRhICgyXjQ4IC0gMSlcbiAgICAgICAgICAgICAgICByZXR1cm4gaGFzaC5kaWdlc3QoJ2Jhc2U2NCcpLnN1YnN0cmluZygwLCA4KTtcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBpZEZuKFwidGVzdFwiKTtcbiAgICAgICAgICAgIHJldHVybiBpZEZuO1xuICAgICAgICB9IGNhdGNoIChlKSB7fVxuICAgIH1cbiAgICByZXR1cm4gZnVuY3Rpb24gaWRGbigpIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfTtcbn0pKCk7XG5jb25zdCBkZWZhdWx0T3B0aW9ucyA9IHtcbiAgICBpZDogZGVmYXVsdElkLFxuICAgIG1ldGE6IHt9XG59O1xuZXhwb3J0IGZ1bmN0aW9uIHByZWNvbXBpbGUoc3RyaW5nLCBvcHRpb25zID0gZGVmYXVsdE9wdGlvbnMpIHtcbiAgICBsZXQgYXN0ID0gcHJlcHJvY2VzcyhzdHJpbmcsIG9wdGlvbnMpO1xuICAgIGxldCB7IGJsb2NrLCBtZXRhIH0gPSBUZW1wbGF0ZUNvbXBpbGVyLmNvbXBpbGUob3B0aW9ucywgYXN0KTtcbiAgICBsZXQgaWRGbiA9IG9wdGlvbnMuaWQgfHwgZGVmYXVsdElkO1xuICAgIGxldCBibG9ja0pTT04gPSBKU09OLnN0cmluZ2lmeShibG9jay50b0pTT04oKSk7XG4gICAgbGV0IHRlbXBsYXRlSlNPTk9iamVjdCA9IHtcbiAgICAgICAgaWQ6IGlkRm4oSlNPTi5zdHJpbmdpZnkobWV0YSkgKyBibG9ja0pTT04pLFxuICAgICAgICBibG9jazogYmxvY2tKU09OLFxuICAgICAgICBtZXRhXG4gICAgfTtcbiAgICAvLyBKU09OIGlzIGphdmFzY3JpcHRcbiAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkodGVtcGxhdGVKU09OT2JqZWN0KTtcbn0iXX0=