UNPKG

dts-jest

Version:

A preprocessor for Jest to snapshot test TypeScript declaration (.d.ts) files

72 lines (71 loc) 3.29 kB
"use strict"; exports.__esModule = true; var pretty_format = require("pretty-format"); var definitions_1 = require("./definitions"); var get_display_line_1 = require("./utils/get-display-line"); var get_trigger_line_1 = require("./utils/get-trigger-line"); var indent_1 = require("./utils/indent"); var Runtime = /** @class */ (function () { function Runtime(filename, config, triggers, snapshots) { var _this = this; this._data_map = new Map(); this._filename = filename; this._config = config; triggers.forEach(function (trigger) { var body_line = get_trigger_line_1.get_trigger_body_line(trigger.header.line); _this._data_map.set(body_line, { trigger: trigger }); }); snapshots.forEach(function (snapshot) { var data = _this._data_map.get(snapshot.line); data.snapshot = snapshot; }); } Runtime.prototype.get_type_inference_or_diagnostic = function (body_line) { var data = this._data_map.get(body_line); var snapshot = data.snapshot; return snapshot.diagnostic !== undefined ? snapshot.diagnostic : snapshot.inference; }; Runtime.prototype.get_type_inference_or_throw_diagnostic = function (body_line) { var data = this._data_map.get(body_line); var snapshot = data.snapshot; if (snapshot.diagnostic !== undefined) { throw new Error(snapshot.diagnostic); } return snapshot.inference; }; Runtime.prototype.get_type_report = function (body_line) { var trigger = this._data_map.get(body_line).trigger; try { return this._create_report('type', trigger, 'Inferred', 'to be', this.get_type_inference_or_throw_diagnostic(body_line)); } catch (error) { return this._create_report('type', trigger, 'Inferring', 'but throw', error.message); } }; Runtime.prototype.get_value_report = function (body_line, getter) { var trigger = this._data_map.get(body_line).trigger; try { return this._create_report('value', trigger, 'Evaluated', 'to be', pretty_format(getter())); } catch (error) { return this._create_report('value', trigger, 'Evaluating', 'but throw', error.message); } }; Runtime.prototype._create_report = function (kind, trigger, title1, title2, value) { var header = trigger.header, body = trigger.body; var description = header.description === undefined ? '' : "\n" + header.description + "\n"; var indented_expression = indent_1.indent(body.text, definitions_1.runtime_indent_spaces); var indented_value = indent_1.indent(value, definitions_1.runtime_indent_spaces); var line = get_display_line_1.get_display_line(kind === 'type' ? get_trigger_line_1.get_trigger_body_line(header.line) : trigger.footer.line); var line_info = this._config.transpile ? "\n(" + this._filename + ":" + line + ")\n" : ''; return "" + line_info + description + "\n" + title1 + "\n\n" + indented_expression + "\n\n" + title2 + "\n\n" + indented_value + "\n"; }; return Runtime; }()); exports.Runtime = Runtime;