ember-legacy-class-transform
Version:
The default blueprint for ember-cli addons.
46 lines (43 loc) • 5.22 kB
JavaScript
import { preprocess } from "@glimmer/syntax";
import TemplateCompiler from "./template-compiler";
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: {}
};
export function precompile(string) {
var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : defaultOptions;
var ast = preprocess(string, options);
var _TemplateCompiler$com = TemplateCompiler.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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9jb21waWxlci5qcyJdLCJuYW1lcyI6WyJwcmVwcm9jZXNzIiwiVGVtcGxhdGVDb21waWxlciIsImRlZmF1bHRJZCIsInJlcXVpcmUiLCJjcnlwdG8iLCJpZEZuIiwiaGFzaCIsImNyZWF0ZUhhc2giLCJ1cGRhdGUiLCJzcmMiLCJkaWdlc3QiLCJzdWJzdHJpbmciLCJlIiwiZGVmYXVsdE9wdGlvbnMiLCJpZCIsIm1ldGEiLCJwcmVjb21waWxlIiwic3RyaW5nIiwib3B0aW9ucyIsImFzdCIsImNvbXBpbGUiLCJibG9jayIsImJsb2NrSlNPTiIsIkpTT04iLCJzdHJpbmdpZnkiLCJ0b0pTT04iLCJ0ZW1wbGF0ZUpTT05PYmplY3QiXSwibWFwcGluZ3MiOiJBQUFBLFNBQVNBLFVBQVQsUUFBMkIsaUJBQTNCO0FBQ0EsT0FBT0MsZ0JBQVAsTUFBNkIscUJBQTdCO0FBQ0EsSUFBTUMsWUFBYSxZQUFNO0FBQ3JCLFFBQUksT0FBT0MsT0FBUCxLQUFtQixVQUF2QixFQUFtQztBQUMvQixZQUFJO0FBQ0E7QUFDQSxnQkFBTUMsU0FBU0QsUUFBUSxRQUFSLENBQWY7QUFDQTtBQUNBLGdCQUFJRSxPQUFPLGVBQU87QUFDZCxvQkFBSUMsT0FBT0YsT0FBT0csVUFBUCxDQUFrQixNQUFsQixDQUFYO0FBQ0FELHFCQUFLRSxNQUFMLENBQVlDLEdBQVosRUFBaUIsTUFBakI7QUFDQTtBQUNBLHVCQUFPSCxLQUFLSSxNQUFMLENBQVksUUFBWixFQUFzQkMsU0FBdEIsQ0FBZ0MsQ0FBaEMsRUFBbUMsQ0FBbkMsQ0FBUDtBQUNILGFBTEQ7QUFNQU4saUJBQUssTUFBTDtBQUNBLG1CQUFPQSxJQUFQO0FBQ0gsU0FaRCxDQVlFLE9BQU9PLENBQVAsRUFBVSxDQUFFO0FBQ2pCO0FBQ0QsV0FBTyxTQUFTUCxJQUFULEdBQWdCO0FBQ25CLGVBQU8sSUFBUDtBQUNILEtBRkQ7QUFHSCxDQW5CaUIsRUFBbEI7QUFvQkEsSUFBTVEsaUJBQWlCO0FBQ25CQyxRQUFJWixTQURlO0FBRW5CYSxVQUFNO0FBRmEsQ0FBdkI7QUFJQSxPQUFPLFNBQVNDLFVBQVQsQ0FBb0JDLE1BQXBCLEVBQXNEO0FBQUEsUUFBMUJDLE9BQTBCLHVFQUFoQkwsY0FBZ0I7O0FBQ3pELFFBQUlNLE1BQU1uQixXQUFXaUIsTUFBWCxFQUFtQkMsT0FBbkIsQ0FBVjs7QUFEeUQsZ0NBRW5DakIsaUJBQWlCbUIsT0FBakIsQ0FBeUJGLE9BQXpCLEVBQWtDQyxHQUFsQyxDQUZtQztBQUFBLFFBRW5ERSxLQUZtRCx5QkFFbkRBLEtBRm1EO0FBQUEsUUFFNUNOLElBRjRDLHlCQUU1Q0EsSUFGNEM7O0FBR3pELFFBQUlWLE9BQU9hLFFBQVFKLEVBQVIsSUFBY1osU0FBekI7QUFDQSxRQUFJb0IsWUFBWUMsS0FBS0MsU0FBTCxDQUFlSCxNQUFNSSxNQUFOLEVBQWYsQ0FBaEI7QUFDQSxRQUFJQyxxQkFBcUI7QUFDckJaLFlBQUlULEtBQUtrQixLQUFLQyxTQUFMLENBQWVULElBQWYsSUFBdUJPLFNBQTVCLENBRGlCO0FBRXJCRCxlQUFPQyxTQUZjO0FBR3JCUDtBQUhxQixLQUF6QjtBQUtBO0FBQ0EsV0FBT1EsS0FBS0MsU0FBTCxDQUFlRSxrQkFBZixDQUFQO0FBQ0giLCJmaWxlIjoibGliL2NvbXBpbGVyLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgcHJlcHJvY2VzcyB9IGZyb20gXCJAZ2xpbW1lci9zeW50YXhcIjtcbmltcG9ydCBUZW1wbGF0ZUNvbXBpbGVyIGZyb20gXCIuL3RlbXBsYXRlLWNvbXBpbGVyXCI7XG5jb25zdCBkZWZhdWx0SWQgPSAoKCkgPT4ge1xuICAgIGlmICh0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgLyogdHNsaW50OmRpc2FibGU6bm8tcmVxdWlyZS1pbXBvcnRzICovXG4gICAgICAgICAgICBjb25zdCBjcnlwdG8gPSByZXF1aXJlKCdjcnlwdG8nKTtcbiAgICAgICAgICAgIC8qIHRzbGludDplbmFibGU6bm8tcmVxdWlyZS1pbXBvcnRzICovXG4gICAgICAgICAgICBsZXQgaWRGbiA9IHNyYyA9PiB7XG4gICAgICAgICAgICAgICAgbGV0IGhhc2ggPSBjcnlwdG8uY3JlYXRlSGFzaCgnc2hhMScpO1xuICAgICAgICAgICAgICAgIGhhc2gudXBkYXRlKHNyYywgJ3V0ZjgnKTtcbiAgICAgICAgICAgICAgICAvLyB0cmltIHRvIDYgYnl0ZXMgb2YgZGF0YSAoMl40OCAtIDEpXG4gICAgICAgICAgICAgICAgcmV0dXJuIGhhc2guZGlnZXN0KCdiYXNlNjQnKS5zdWJzdHJpbmcoMCwgOCk7XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgaWRGbihcInRlc3RcIik7XG4gICAgICAgICAgICByZXR1cm4gaWRGbjtcbiAgICAgICAgfSBjYXRjaCAoZSkge31cbiAgICB9XG4gICAgcmV0dXJuIGZ1bmN0aW9uIGlkRm4oKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH07XG59KSgpO1xuY29uc3QgZGVmYXVsdE9wdGlvbnMgPSB7XG4gICAgaWQ6IGRlZmF1bHRJZCxcbiAgICBtZXRhOiB7fVxufTtcbmV4cG9ydCBmdW5jdGlvbiBwcmVjb21waWxlKHN0cmluZywgb3B0aW9ucyA9IGRlZmF1bHRPcHRpb25zKSB7XG4gICAgbGV0IGFzdCA9IHByZXByb2Nlc3Moc3RyaW5nLCBvcHRpb25zKTtcbiAgICBsZXQgeyBibG9jaywgbWV0YSB9ID0gVGVtcGxhdGVDb21waWxlci5jb21waWxlKG9wdGlvbnMsIGFzdCk7XG4gICAgbGV0IGlkRm4gPSBvcHRpb25zLmlkIHx8IGRlZmF1bHRJZDtcbiAgICBsZXQgYmxvY2tKU09OID0gSlNPTi5zdHJpbmdpZnkoYmxvY2sudG9KU09OKCkpO1xuICAgIGxldCB0ZW1wbGF0ZUpTT05PYmplY3QgPSB7XG4gICAgICAgIGlkOiBpZEZuKEpTT04uc3RyaW5naWZ5KG1ldGEpICsgYmxvY2tKU09OKSxcbiAgICAgICAgYmxvY2s6IGJsb2NrSlNPTixcbiAgICAgICAgbWV0YVxuICAgIH07XG4gICAgLy8gSlNPTiBpcyBqYXZhc2NyaXB0XG4gICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHRlbXBsYXRlSlNPTk9iamVjdCk7XG59Il19