@glimmer/compiler
Version:
60 lines (51 loc) • 6.63 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.defaultId = undefined;
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 = exports.defaultId = function () {
if (typeof require === 'function') {
try {
/* tslint:disable:no-require-imports */
var crypto = require('crypto');
/* tslint:enable:no-require-imports */
var idFn = function idFn(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 meta = options.meta;
var _TemplateCompiler$com = _templateCompiler2.default.compile(ast, options),
block = _TemplateCompiler$com.block;
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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL2NvbXBpbGVyL2xpYi9jb21waWxlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7UUE0RE0sVSxHQUFBLFU7Ozs7QUEzRE47Ozs7OztBQWNPLElBQU0sZ0NBQTJCLFlBQUs7QUFDM0MsUUFBSSxPQUFBLE9BQUEsS0FBSixVQUFBLEVBQW1DO0FBQ2pDLFlBQUk7QUFDRjtBQUNBLGdCQUFNLFNBQVMsUUFBZixRQUFlLENBQWY7QUFDQTtBQUVBLGdCQUFJLE9BQXFCLFNBQXJCLElBQXFCLENBQUEsR0FBQSxFQUFNO0FBQzdCLG9CQUFJLE9BQU8sT0FBQSxVQUFBLENBQVgsTUFBVyxDQUFYO0FBQ0EscUJBQUEsTUFBQSxDQUFBLEdBQUEsRUFBQSxNQUFBO0FBQ0E7QUFDQSx1QkFBTyxLQUFBLE1BQUEsQ0FBQSxRQUFBLEVBQUEsU0FBQSxDQUFBLENBQUEsRUFBUCxDQUFPLENBQVA7QUFKRixhQUFBO0FBT0EsaUJBQUEsTUFBQTtBQUVBLG1CQUFBLElBQUE7QUFkRixTQUFBLENBZUUsT0FBQSxDQUFBLEVBQVUsQ0FBRTtBQUNmO0FBRUQsV0FBTyxTQUFBLElBQUEsR0FBYTtBQUNsQixlQUFBLElBQUE7QUFERixLQUFBO0FBcEJLLENBQWlDLEVBQWpDO0FBeUJQLElBQU0saUJBQW9DO0FBQ3hDLFFBRHdDLFNBQUE7QUFFeEMsVUFBTTtBQUZrQyxDQUExQztBQW9CTSxTQUFBLFVBQUEsQ0FBQSxNQUFBLEVBRXVDO0FBQUEsUUFBM0MsVUFBMkMsVUFBQSxNQUFBLEdBQUEsQ0FBQSxJQUFBLFVBQUEsQ0FBQSxNQUFBLFNBQUEsR0FBQSxVQUFBLENBQUEsQ0FBQSxHQUZ2QyxjQUV1Qzs7QUFFM0MsUUFBSSxNQUFNLHdCQUFBLE1BQUEsRUFBVixPQUFVLENBQVY7QUFGMkMsUUFBQSxPQUFBLFFBQUEsSUFBQTs7QUFBQSxRQUFBLHdCQUkzQiwyQkFBQSxPQUFBLENBQUEsR0FBQSxFQUoyQixPQUkzQixDQUoyQjtBQUFBLFFBQUEsUUFBQSxzQkFBQSxLQUFBOztBQUszQyxRQUFJLE9BQU8sUUFBQSxFQUFBLElBQVgsU0FBQTtBQUNBLFFBQUksWUFBWSxLQUFBLFNBQUEsQ0FBZSxNQUEvQixNQUErQixFQUFmLENBQWhCO0FBQ0EsUUFBSSxxQkFBK0Q7QUFDakUsWUFBSSxLQUFLLEtBQUEsU0FBQSxDQUFBLElBQUEsSUFEd0QsU0FDN0QsQ0FENkQ7QUFFakUsZUFGaUUsU0FBQTtBQUdqRSxjQUFBO0FBSGlFLEtBQW5FO0FBTUE7QUFDQSxXQUFPLEtBQUEsU0FBQSxDQUFQLGtCQUFPLENBQVA7QUFDRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHByZXByb2Nlc3MgfSBmcm9tICdAZ2xpbW1lci9zeW50YXgnO1xuaW1wb3J0IFRlbXBsYXRlQ29tcGlsZXIsIHsgQ29tcGlsZU9wdGlvbnMgfSBmcm9tICcuL3RlbXBsYXRlLWNvbXBpbGVyJztcbmltcG9ydCB7IE9wdGlvbiwgVGVtcGxhdGVKYXZhc2NyaXB0LCBTZXJpYWxpemVkVGVtcGxhdGVXaXRoTGF6eUJsb2NrIH0gZnJvbSAnQGdsaW1tZXIvaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBQcmVwcm9jZXNzT3B0aW9ucyB9IGZyb20gJ0BnbGltbWVyL3N5bnRheCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgVGVtcGxhdGVJZEZuIHtcbiAgKHNyYzogc3RyaW5nKTogT3B0aW9uPHN0cmluZz47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHJlY29tcGlsZU9wdGlvbnMgZXh0ZW5kcyBDb21waWxlT3B0aW9ucywgUHJlcHJvY2Vzc09wdGlvbnMge1xuICBpZD86IFRlbXBsYXRlSWRGbjtcbn1cblxuZGVjbGFyZSBmdW5jdGlvbiByZXF1aXJlKGlkOiBzdHJpbmcpOiBhbnk7XG5cbmV4cG9ydCBjb25zdCBkZWZhdWx0SWQ6IFRlbXBsYXRlSWRGbiA9ICgoKSA9PiB7XG4gIGlmICh0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIHRyeSB7XG4gICAgICAvKiB0c2xpbnQ6ZGlzYWJsZTpuby1yZXF1aXJlLWltcG9ydHMgKi9cbiAgICAgIGNvbnN0IGNyeXB0byA9IHJlcXVpcmUoJ2NyeXB0bycpO1xuICAgICAgLyogdHNsaW50OmVuYWJsZTpuby1yZXF1aXJlLWltcG9ydHMgKi9cblxuICAgICAgbGV0IGlkRm46IFRlbXBsYXRlSWRGbiA9IHNyYyA9PiB7XG4gICAgICAgIGxldCBoYXNoID0gY3J5cHRvLmNyZWF0ZUhhc2goJ3NoYTEnKTtcbiAgICAgICAgaGFzaC51cGRhdGUoc3JjLCAndXRmOCcpO1xuICAgICAgICAvLyB0cmltIHRvIDYgYnl0ZXMgb2YgZGF0YSAoMl40OCAtIDEpXG4gICAgICAgIHJldHVybiBoYXNoLmRpZ2VzdCgnYmFzZTY0Jykuc3Vic3RyaW5nKDAsIDgpO1xuICAgICAgfTtcblxuICAgICAgaWRGbigndGVzdCcpO1xuXG4gICAgICByZXR1cm4gaWRGbjtcbiAgICB9IGNhdGNoIChlKSB7fVxuICB9XG5cbiAgcmV0dXJuIGZ1bmN0aW9uIGlkRm4oKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH07XG59KSgpO1xuXG5jb25zdCBkZWZhdWx0T3B0aW9uczogUHJlY29tcGlsZU9wdGlvbnMgPSB7XG4gIGlkOiBkZWZhdWx0SWQsXG4gIG1ldGE6IHt9LFxufTtcblxuLypcbiAqIENvbXBpbGUgYSBzdHJpbmcgaW50byBhIHRlbXBsYXRlIGphdmFzY3JpcHQgc3RyaW5nLlxuICpcbiAqIEV4YW1wbGUgdXNhZ2U6XG4gKiAgICAgaW1wb3J0IHsgcHJlY29tcGlsZSB9IGZyb20gJ0BnbGltbWVyL2NvbXBpbGVyJztcbiAqICAgICBpbXBvcnQgeyB0ZW1wbGF0ZUZhY3RvcnkgfSBmcm9tICdnbGltZXItcnVudGltZSc7XG4gKiAgICAgbGV0IHRlbXBsYXRlSnMgPSBwcmVjb21waWxlKFwiSG93ZHkge3tuYW1lfX1cIik7XG4gKiAgICAgbGV0IGZhY3RvcnkgPSB0ZW1wbGF0ZUZhY3RvcnkobmV3IEZ1bmN0aW9uKFwicmV0dXJuIFwiICsgdGVtcGxhdGVKcykoKSk7XG4gKiAgICAgbGV0IHRlbXBsYXRlID0gZmFjdG9yeS5jcmVhdGUoZW52KTtcbiAqXG4gKiBAbWV0aG9kIHByZWNvbXBpbGVcbiAqIEBwYXJhbSB7c3RyaW5nfSBzdHJpbmcgYSBHbGltbWVyIHRlbXBsYXRlIHN0cmluZ1xuICogQHJldHVybiB7c3RyaW5nfSBhIHRlbXBsYXRlIGphdmFzY3JpcHQgc3RyaW5nXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwcmVjb21waWxlKHN0cmluZzogc3RyaW5nLCBvcHRpb25zPzogUHJlY29tcGlsZU9wdGlvbnMpOiBUZW1wbGF0ZUphdmFzY3JpcHQ7XG5leHBvcnQgZnVuY3Rpb24gcHJlY29tcGlsZShcbiAgc3RyaW5nOiBzdHJpbmcsXG4gIG9wdGlvbnM6IFByZWNvbXBpbGVPcHRpb25zID0gZGVmYXVsdE9wdGlvbnNcbik6IFRlbXBsYXRlSmF2YXNjcmlwdCB7XG4gIGxldCBhc3QgPSBwcmVwcm9jZXNzKHN0cmluZywgb3B0aW9ucyk7XG4gIGxldCB7IG1ldGEgfSA9IG9wdGlvbnM7XG4gIGxldCB7IGJsb2NrIH0gPSBUZW1wbGF0ZUNvbXBpbGVyLmNvbXBpbGUoYXN0LCBvcHRpb25zKTtcbiAgbGV0IGlkRm4gPSBvcHRpb25zLmlkIHx8IGRlZmF1bHRJZDtcbiAgbGV0IGJsb2NrSlNPTiA9IEpTT04uc3RyaW5naWZ5KGJsb2NrLnRvSlNPTigpKTtcbiAgbGV0IHRlbXBsYXRlSlNPTk9iamVjdDogU2VyaWFsaXplZFRlbXBsYXRlV2l0aExhenlCbG9jazx1bmtub3duPiA9IHtcbiAgICBpZDogaWRGbihKU09OLnN0cmluZ2lmeShtZXRhKSArIGJsb2NrSlNPTiksXG4gICAgYmxvY2s6IGJsb2NrSlNPTixcbiAgICBtZXRhLFxuICB9O1xuXG4gIC8vIEpTT04gaXMgamF2YXNjcmlwdFxuICByZXR1cm4gSlNPTi5zdHJpbmdpZnkodGVtcGxhdGVKU09OT2JqZWN0KTtcbn1cbiJdLCJzb3VyY2VSb290IjoiIn0=