@glimmer/compiler
Version:
45 lines (42 loc) • 6.21 kB
JavaScript
import { preprocess } from '@glimmer/syntax';
import TemplateCompiler from './template-compiler';
export var defaultId = function () {
if (typeof require === 'function') {
try {
// eslint-disable-next-line @typescript-eslint/no-require-imports
var crypto = require('crypto');
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: {}
};
export function precompile(string) {
var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : defaultOptions;
var ast = preprocess(string, options);
var meta = options.meta;
var _TemplateCompiler$com = TemplateCompiler.compile(ast, string, 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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL2NvbXBpbGVyL2xpYi9jb21waWxlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxTQUFBLFVBQUEsUUFBQSxpQkFBQTtBQUNBLE9BQUEsZ0JBQUEsTUFBQSxxQkFBQTtBQWNBLE9BQU8sSUFBTSxZQUEyQixZQUFLO0FBQzNDLFFBQUksT0FBQSxPQUFBLEtBQUosVUFBQSxFQUFtQztBQUNqQyxZQUFJO0FBQ0Y7QUFDQSxnQkFBTSxTQUFTLFFBQWYsUUFBZSxDQUFmO0FBRUEsZ0JBQUksT0FBcUIsU0FBckIsSUFBcUIsTUFBTTtBQUM3QixvQkFBSSxPQUFPLE9BQUEsVUFBQSxDQUFYLE1BQVcsQ0FBWDtBQUNBLHFCQUFBLE1BQUEsQ0FBQSxHQUFBLEVBQUEsTUFBQTtBQUNBO0FBQ0EsdUJBQU8sS0FBQSxNQUFBLENBQUEsUUFBQSxFQUFBLFNBQUEsQ0FBQSxDQUFBLEVBQVAsQ0FBTyxDQUFQO0FBSkYsYUFBQTtBQU9BLGlCQUFBLE1BQUE7QUFFQSxtQkFBQSxJQUFBO0FBYkYsU0FBQSxDQWNFLE9BQUEsQ0FBQSxFQUFVLENBQUU7QUFDZjtBQUVELFdBQU8sU0FBQSxJQUFBLEdBQWE7QUFDbEIsZUFBQSxJQUFBO0FBREYsS0FBQTtBQW5CSyxDQUFnQyxFQUFoQztBQXdCUCxJQUFNLGlCQUFvQztBQUN4QyxRQUR3QyxTQUFBO0FBRXhDLFVBQU07QUFGa0MsQ0FBMUM7QUFvQkEsT0FBTSxTQUFBLFVBQUEsQ0FBQSxNQUFBLEVBRXVDO0FBQUEsUUFBM0MsT0FBMkMsdUVBRnZDLGNBRXVDOztBQUUzQyxRQUFJLE1BQU0sV0FBQSxNQUFBLEVBQVYsT0FBVSxDQUFWO0FBRjJDLFFBR3ZDLElBSHVDLEdBRzNDLE9BSDJDLENBR3ZDLElBSHVDOztBQUFBLGdDQUkzQixpQkFBQSxPQUFBLENBQUEsR0FBQSxFQUFBLE1BQUEsRUFBaEIsT0FBZ0IsQ0FKMkI7QUFBQSxRQUl2QyxLQUp1Qyx5QkFJdkMsS0FKdUM7O0FBSzNDLFFBQUksT0FBTyxRQUFBLEVBQUEsSUFBWCxTQUFBO0FBQ0EsUUFBSSxZQUFZLEtBQUEsU0FBQSxDQUFlLE1BQS9CLE1BQStCLEVBQWYsQ0FBaEI7QUFDQSxRQUFJLHFCQUErRDtBQUNqRSxZQUFJLEtBQUssS0FBQSxTQUFBLENBQUEsSUFBQSxJQUR3RCxTQUM3RCxDQUQ2RDtBQUVqRSxlQUZpRSxTQUFBO0FBR2pFO0FBSGlFLEtBQW5FO0FBTUE7QUFDQSxXQUFPLEtBQUEsU0FBQSxDQUFQLGtCQUFPLENBQVA7QUFDRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHByZXByb2Nlc3MgfSBmcm9tICdAZ2xpbW1lci9zeW50YXgnO1xuaW1wb3J0IFRlbXBsYXRlQ29tcGlsZXIsIHsgQ29tcGlsZU9wdGlvbnMgfSBmcm9tICcuL3RlbXBsYXRlLWNvbXBpbGVyJztcbmltcG9ydCB7IE9wdGlvbiwgVGVtcGxhdGVKYXZhc2NyaXB0LCBTZXJpYWxpemVkVGVtcGxhdGVXaXRoTGF6eUJsb2NrIH0gZnJvbSAnQGdsaW1tZXIvaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBQcmVwcm9jZXNzT3B0aW9ucyB9IGZyb20gJ0BnbGltbWVyL3N5bnRheCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgVGVtcGxhdGVJZEZuIHtcbiAgKHNyYzogc3RyaW5nKTogT3B0aW9uPHN0cmluZz47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHJlY29tcGlsZU9wdGlvbnMgZXh0ZW5kcyBDb21waWxlT3B0aW9ucywgUHJlcHJvY2Vzc09wdGlvbnMge1xuICBpZD86IFRlbXBsYXRlSWRGbjtcbn1cblxuZGVjbGFyZSBmdW5jdGlvbiByZXF1aXJlKGlkOiBzdHJpbmcpOiBhbnk7XG5cbmV4cG9ydCBjb25zdCBkZWZhdWx0SWQ6IFRlbXBsYXRlSWRGbiA9ICgoKSA9PiB7XG4gIGlmICh0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIHRyeSB7XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXJlcXVpcmUtaW1wb3J0c1xuICAgICAgY29uc3QgY3J5cHRvID0gcmVxdWlyZSgnY3J5cHRvJyk7XG5cbiAgICAgIGxldCBpZEZuOiBUZW1wbGF0ZUlkRm4gPSBzcmMgPT4ge1xuICAgICAgICBsZXQgaGFzaCA9IGNyeXB0by5jcmVhdGVIYXNoKCdzaGExJyk7XG4gICAgICAgIGhhc2gudXBkYXRlKHNyYywgJ3V0ZjgnKTtcbiAgICAgICAgLy8gdHJpbSB0byA2IGJ5dGVzIG9mIGRhdGEgKDJeNDggLSAxKVxuICAgICAgICByZXR1cm4gaGFzaC5kaWdlc3QoJ2Jhc2U2NCcpLnN1YnN0cmluZygwLCA4KTtcbiAgICAgIH07XG5cbiAgICAgIGlkRm4oJ3Rlc3QnKTtcblxuICAgICAgcmV0dXJuIGlkRm47XG4gICAgfSBjYXRjaCAoZSkge31cbiAgfVxuXG4gIHJldHVybiBmdW5jdGlvbiBpZEZuKCkge1xuICAgIHJldHVybiBudWxsO1xuICB9O1xufSkoKTtcblxuY29uc3QgZGVmYXVsdE9wdGlvbnM6IFByZWNvbXBpbGVPcHRpb25zID0ge1xuICBpZDogZGVmYXVsdElkLFxuICBtZXRhOiB7fSxcbn07XG5cbi8qXG4gKiBDb21waWxlIGEgc3RyaW5nIGludG8gYSB0ZW1wbGF0ZSBqYXZhc2NyaXB0IHN0cmluZy5cbiAqXG4gKiBFeGFtcGxlIHVzYWdlOlxuICogICAgIGltcG9ydCB7IHByZWNvbXBpbGUgfSBmcm9tICdAZ2xpbW1lci9jb21waWxlcic7XG4gKiAgICAgaW1wb3J0IHsgdGVtcGxhdGVGYWN0b3J5IH0gZnJvbSAnZ2xpbWVyLXJ1bnRpbWUnO1xuICogICAgIGxldCB0ZW1wbGF0ZUpzID0gcHJlY29tcGlsZShcIkhvd2R5IHt7bmFtZX19XCIpO1xuICogICAgIGxldCBmYWN0b3J5ID0gdGVtcGxhdGVGYWN0b3J5KG5ldyBGdW5jdGlvbihcInJldHVybiBcIiArIHRlbXBsYXRlSnMpKCkpO1xuICogICAgIGxldCB0ZW1wbGF0ZSA9IGZhY3RvcnkuY3JlYXRlKGVudik7XG4gKlxuICogQG1ldGhvZCBwcmVjb21waWxlXG4gKiBAcGFyYW0ge3N0cmluZ30gc3RyaW5nIGEgR2xpbW1lciB0ZW1wbGF0ZSBzdHJpbmdcbiAqIEByZXR1cm4ge3N0cmluZ30gYSB0ZW1wbGF0ZSBqYXZhc2NyaXB0IHN0cmluZ1xuICovXG5leHBvcnQgZnVuY3Rpb24gcHJlY29tcGlsZShzdHJpbmc6IHN0cmluZywgb3B0aW9ucz86IFByZWNvbXBpbGVPcHRpb25zKTogVGVtcGxhdGVKYXZhc2NyaXB0O1xuZXhwb3J0IGZ1bmN0aW9uIHByZWNvbXBpbGUoXG4gIHN0cmluZzogc3RyaW5nLFxuICBvcHRpb25zOiBQcmVjb21waWxlT3B0aW9ucyA9IGRlZmF1bHRPcHRpb25zXG4pOiBUZW1wbGF0ZUphdmFzY3JpcHQge1xuICBsZXQgYXN0ID0gcHJlcHJvY2VzcyhzdHJpbmcsIG9wdGlvbnMpO1xuICBsZXQgeyBtZXRhIH0gPSBvcHRpb25zO1xuICBsZXQgeyBibG9jayB9ID0gVGVtcGxhdGVDb21waWxlci5jb21waWxlKGFzdCwgc3RyaW5nLCBvcHRpb25zKTtcbiAgbGV0IGlkRm4gPSBvcHRpb25zLmlkIHx8IGRlZmF1bHRJZDtcbiAgbGV0IGJsb2NrSlNPTiA9IEpTT04uc3RyaW5naWZ5KGJsb2NrLnRvSlNPTigpKTtcbiAgbGV0IHRlbXBsYXRlSlNPTk9iamVjdDogU2VyaWFsaXplZFRlbXBsYXRlV2l0aExhenlCbG9jazx1bmtub3duPiA9IHtcbiAgICBpZDogaWRGbihKU09OLnN0cmluZ2lmeShtZXRhKSArIGJsb2NrSlNPTiksXG4gICAgYmxvY2s6IGJsb2NrSlNPTixcbiAgICBtZXRhLFxuICB9O1xuXG4gIC8vIEpTT04gaXMgamF2YXNjcmlwdFxuICByZXR1cm4gSlNPTi5zdHJpbmdpZnkodGVtcGxhdGVKU09OT2JqZWN0KTtcbn1cbiJdLCJzb3VyY2VSb290IjoiIn0=