ember-legacy-class-transform
Version:
The default blueprint for ember-cli addons.
59 lines (50 loc) • 5.4 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 }; }
var defaultId = function () {
if (typeof require === 'function') {
try {
/* tslint:disable:no-require-imports */
var crypto = require('crypto');
/* tslint:enable:no-require-imports */
var idFn = function (src) {
var 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;
};
}();
var defaultOptions = {
id: defaultId,
meta: {}
};
function precompile(string) {
var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : defaultOptions;
var ast = (0, _syntax.preprocess)(string, options);
var _TemplateCompiler$com = _templateCompiler2.default.compile(options, ast),
block = _TemplateCompiler$com.block,
meta = _TemplateCompiler$com.meta;
var idFn = options.id || defaultId;
var blockJSON = JSON.stringify(block.toJSON());
var templateJSONObject = {
id: idFn(JSON.stringify(meta) + blockJSON),
block: blockJSON,
meta: meta
};
// JSON is javascript
return JSON.stringify(templateJSONObject);
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9jb21waWxlci5qcyJdLCJuYW1lcyI6WyJwcmVwcm9jZXNzIiwiVGVtcGxhdGVDb21waWxlciIsImRlZmF1bHRJZCIsInJlcXVpcmUiLCJjcnlwdG8iLCJpZEZuIiwiaGFzaCIsImNyZWF0ZUhhc2giLCJ1cGRhdGUiLCJzcmMiLCJkaWdlc3QiLCJzdWJzdHJpbmciLCJlIiwiZGVmYXVsdE9wdGlvbnMiLCJpZCIsIm1ldGEiLCJwcmVjb21waWxlIiwic3RyaW5nIiwib3B0aW9ucyIsImFzdCIsImNvbXBpbGUiLCJibG9jayIsImJsb2NrSlNPTiIsIkpTT04iLCJzdHJpbmdpZnkiLCJ0b0pTT04iLCJ0ZW1wbGF0ZUpTT05PYmplY3QiXSwibWFwcGluZ3MiOiI7Ozs7O1FBMEJPLEFBQVM7O0FBMUJoQixBQUFTLEFBQWtCOztBQUMzQixBQUFPLEFBQXNCOzs7Ozs7QUFDN0IsSUFBTSx3QkFBbUIsQUFDckI7UUFBSSxPQUFBLEFBQU8sWUFBWCxBQUF1QixZQUFZLEFBQy9CO1lBQUksQUFDQTtBQUNBO2dCQUFNLFNBQVMsUUFBZixBQUFlLEFBQVEsQUFDdkI7QUFDQTtnQkFBSSxPQUFPLGVBQU8sQUFDZDtvQkFBSSxPQUFPLE9BQUEsQUFBTyxXQUFsQixBQUFXLEFBQWtCLEFBQzdCO3FCQUFBLEFBQUssT0FBTCxBQUFZLEtBQVosQUFBaUIsQUFDakI7QUFDQTt1QkFBTyxLQUFBLEFBQUssT0FBTCxBQUFZLFVBQVosQUFBc0IsVUFBdEIsQUFBZ0MsR0FBdkMsQUFBTyxBQUFtQyxBQUM3QztBQUxELEFBTUE7aUJBQUEsQUFBSyxBQUNMO21CQUFBLEFBQU8sQUFDVjtBQVpELFVBWUUsT0FBQSxBQUFPLEdBQUcsQUFBRSxDQUNqQjtBQUNEO1dBQU8sU0FBQSxBQUFTLE9BQU8sQUFDbkI7ZUFBQSxBQUFPLEFBQ1Y7QUFGRCxBQUdIO0FBbkJELEFBQWtCLENBQUM7QUFvQm5CLElBQU07UUFBaUIsQUFDZixBQUNKO1VBRkosQUFBdUIsQUFFYixBQUVWO0FBSnVCLEFBQ25CO0FBR0csb0JBQUEsQUFBb0IsUUFBa0M7UUFBMUIsQUFBMEIsOEVBQWhCLEFBQWdCLEFBQ3pEOztRQUFJLE1BQU0sd0JBQUEsQUFBVyxRQURvQyxBQUN6RCxBQUFVLEFBQW1COztnQ0FDUCwyQkFBQSxBQUFpQixRQUFqQixBQUF5QixTQUZVLEFBRW5DLEFBQWtDO1FBRkMsQUFFbkQsOEJBRm1ELEFBRW5EO1FBRm1ELEFBRTVDLDZCQUY0QyxBQUU1QyxBQUNiOztRQUFJLE9BQU8sUUFBQSxBQUFRLE1BQW5CLEFBQXlCLEFBQ3pCO1FBQUksWUFBWSxLQUFBLEFBQUssVUFBVSxNQUEvQixBQUFnQixBQUFlLEFBQU0sQUFDckM7UUFBSTtZQUNJLEtBQUssS0FBQSxBQUFLLFVBQUwsQUFBZSxRQURILEFBQ2pCLEFBQTRCLEFBQ2hDO2VBRnFCLEFBRWQsQUFDUDtjQUhKLEFBQXlCLEFBS3pCO0FBTHlCLEFBQ3JCO0FBS0o7V0FBTyxLQUFBLEFBQUssVUFBWixBQUFPLEFBQWUsQUFDekIiLCJmaWxlIjoibGliL2NvbXBpbGVyLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgcHJlcHJvY2VzcyB9IGZyb20gXCJAZ2xpbW1lci9zeW50YXhcIjtcbmltcG9ydCBUZW1wbGF0ZUNvbXBpbGVyIGZyb20gXCIuL3RlbXBsYXRlLWNvbXBpbGVyXCI7XG5jb25zdCBkZWZhdWx0SWQgPSAoKCkgPT4ge1xuICAgIGlmICh0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgLyogdHNsaW50OmRpc2FibGU6bm8tcmVxdWlyZS1pbXBvcnRzICovXG4gICAgICAgICAgICBjb25zdCBjcnlwdG8gPSByZXF1aXJlKCdjcnlwdG8nKTtcbiAgICAgICAgICAgIC8qIHRzbGludDplbmFibGU6bm8tcmVxdWlyZS1pbXBvcnRzICovXG4gICAgICAgICAgICBsZXQgaWRGbiA9IHNyYyA9PiB7XG4gICAgICAgICAgICAgICAgbGV0IGhhc2ggPSBjcnlwdG8uY3JlYXRlSGFzaCgnc2hhMScpO1xuICAgICAgICAgICAgICAgIGhhc2gudXBkYXRlKHNyYywgJ3V0ZjgnKTtcbiAgICAgICAgICAgICAgICAvLyB0cmltIHRvIDYgYnl0ZXMgb2YgZGF0YSAoMl40OCAtIDEpXG4gICAgICAgICAgICAgICAgcmV0dXJuIGhhc2guZGlnZXN0KCdiYXNlNjQnKS5zdWJzdHJpbmcoMCwgOCk7XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgaWRGbihcInRlc3RcIik7XG4gICAgICAgICAgICByZXR1cm4gaWRGbjtcbiAgICAgICAgfSBjYXRjaCAoZSkge31cbiAgICB9XG4gICAgcmV0dXJuIGZ1bmN0aW9uIGlkRm4oKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH07XG59KSgpO1xuY29uc3QgZGVmYXVsdE9wdGlvbnMgPSB7XG4gICAgaWQ6IGRlZmF1bHRJZCxcbiAgICBtZXRhOiB7fVxufTtcbmV4cG9ydCBmdW5jdGlvbiBwcmVjb21waWxlKHN0cmluZywgb3B0aW9ucyA9IGRlZmF1bHRPcHRpb25zKSB7XG4gICAgbGV0IGFzdCA9IHByZXByb2Nlc3Moc3RyaW5nLCBvcHRpb25zKTtcbiAgICBsZXQgeyBibG9jaywgbWV0YSB9ID0gVGVtcGxhdGVDb21waWxlci5jb21waWxlKG9wdGlvbnMsIGFzdCk7XG4gICAgbGV0IGlkRm4gPSBvcHRpb25zLmlkIHx8IGRlZmF1bHRJZDtcbiAgICBsZXQgYmxvY2tKU09OID0gSlNPTi5zdHJpbmdpZnkoYmxvY2sudG9KU09OKCkpO1xuICAgIGxldCB0ZW1wbGF0ZUpTT05PYmplY3QgPSB7XG4gICAgICAgIGlkOiBpZEZuKEpTT04uc3RyaW5naWZ5KG1ldGEpICsgYmxvY2tKU09OKSxcbiAgICAgICAgYmxvY2s6IGJsb2NrSlNPTixcbiAgICAgICAgbWV0YVxuICAgIH07XG4gICAgLy8gSlNPTiBpcyBqYXZhc2NyaXB0XG4gICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHRlbXBsYXRlSlNPTk9iamVjdCk7XG59Il19