UNPKG

ember-legacy-class-transform

Version:
53 lines (47 loc) 5.19 kB
"use strict"; 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=