@decohere/forge 0.0.1-dev.65 → 0.0.1-dev.66

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -13,6 +13,7 @@ _export_star(require("./link.action.js"), exports);
13
13
  _export_star(require("./publish.action.js"), exports);
14
14
  _export_star(require("./sync-lock-file.action.js"), exports);
15
15
  _export_star(require("./tag.action.js"), exports);
16
+ _export_star(require("./typecheck.action.js"), exports);
16
17
  _export_star(require("./unlink.action.js"), exports);
17
18
  _export_star(require("./version.action.js"), exports);
18
19
  _export_star(require("./watch.action.js"), exports);
@@ -30,4 +31,4 @@ function _export_star(from, to) {
30
31
  return from;
31
32
  }
32
33
 
33
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL2ZvcmdlL3NyYy9hY3Rpb25zL2luZGV4LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gXCIuL2J1aWxkLmFjdGlvbi5qc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vY2xlYW4uYWN0aW9uLmpzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9jb21taXQuYWN0aW9uLmpzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9jb3B5LmFjdGlvbi5qc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vZGVwZW5kZW5jeS1yZXBvcnQuYWN0aW9uLmpzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9kZXBlbmRlbmN5LXN5bmMuYWN0aW9uLmpzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9kb2NrZXIuYWN0aW9uLmpzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9saW5rLmFjdGlvbi5qc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vcHVibGlzaC5hY3Rpb24uanNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3N5bmMtbG9jay1maWxlLmFjdGlvbi5qc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vdGFnLmFjdGlvbi5qc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vdW5saW5rLmFjdGlvbi5qc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vdmVyc2lvbi5hY3Rpb24uanNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3dhdGNoLmFjdGlvbi5qc1wiO1xuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7cUJBQWM7cUJBQ0E7cUJBQ0E7cUJBQ0E7cUJBQ0E7cUJBQ0E7cUJBQ0E7cUJBQ0E7cUJBQ0E7cUJBQ0E7cUJBQ0E7cUJBQ0E7cUJBQ0E7cUJBQ0EifQ==
34
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL2ZvcmdlL3NyYy9hY3Rpb25zL2luZGV4LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gXCIuL2J1aWxkLmFjdGlvbi5qc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vY2xlYW4uYWN0aW9uLmpzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9jb21taXQuYWN0aW9uLmpzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9jb3B5LmFjdGlvbi5qc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vZGVwZW5kZW5jeS1yZXBvcnQuYWN0aW9uLmpzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9kZXBlbmRlbmN5LXN5bmMuYWN0aW9uLmpzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9kb2NrZXIuYWN0aW9uLmpzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9saW5rLmFjdGlvbi5qc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vcHVibGlzaC5hY3Rpb24uanNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3N5bmMtbG9jay1maWxlLmFjdGlvbi5qc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vdGFnLmFjdGlvbi5qc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vdHlwZWNoZWNrLmFjdGlvbi5qc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vdW5saW5rLmFjdGlvbi5qc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vdmVyc2lvbi5hY3Rpb24uanNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3dhdGNoLmFjdGlvbi5qc1wiO1xuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7cUJBQWM7cUJBQ0E7cUJBQ0E7cUJBQ0E7cUJBQ0E7cUJBQ0E7cUJBQ0E7cUJBQ0E7cUJBQ0E7cUJBQ0E7cUJBQ0E7cUJBQ0E7cUJBQ0E7cUJBQ0E7cUJBQ0EifQ==
@@ -0,0 +1,69 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ Object.defineProperty(exports, "TypeCheck", {
6
+ enumerable: true,
7
+ get: function() {
8
+ return TypeCheck;
9
+ }
10
+ });
11
+ const _decorators = require("@decohere/crucible/decorators");
12
+ const _mesh = require("@decohere/mesh");
13
+ const _cli = require("@decohere/nexus/cli");
14
+ const _diagnostics = require("@decohere/nexus/diagnostics");
15
+ const _scribe = require("@decohere/scribe");
16
+ const _typescript = /*#__PURE__*/ _interop_require_default(require("typescript"));
17
+ const _errors = require("../errors.js");
18
+ const _typeemitter = require("../services/type-emitter.js");
19
+ function _interop_require_default(obj) {
20
+ return obj && obj.__esModule ? obj : {
21
+ default: obj
22
+ };
23
+ }
24
+ function _ts_decorate(decorators, target, key, desc) {
25
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
26
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
27
+ else for(var i = decorators.length - 1; i >= 0; i--)if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
28
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
29
+ }
30
+ function _ts_metadata(k, v) {
31
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
32
+ }
33
+ class TypeCheck {
34
+ workspace;
35
+ typeEmitter;
36
+ #logger = _scribe.scribe.logger(TypeCheck.name);
37
+ constructor(workspace, typeEmitter){
38
+ this.workspace = workspace;
39
+ this.typeEmitter = typeEmitter;
40
+ }
41
+ run = async (options)=>{
42
+ const projects = this.workspace.getProjects(options.configuration);
43
+ for (const project of projects){
44
+ this.#logger.info(`Type-checking ${project.name}`);
45
+ }
46
+ const { diagnostics, formatted } = await this.typeEmitter.checkProject([
47
+ ...projects
48
+ ]);
49
+ const errors = diagnostics.filter((diagnostic)=>diagnostic.category === _typescript.default.DiagnosticCategory.Error);
50
+ if (errors.length > 0) {
51
+ throw new _errors.ForgeError(formatted || "Type check failed");
52
+ }
53
+ if (formatted.length > 0) {
54
+ this.#logger.info(formatted);
55
+ }
56
+ return _cli.ActionResponse.Success(TypeCheck.name);
57
+ };
58
+ }
59
+ TypeCheck = _ts_decorate([
60
+ _diagnostics.Trace,
61
+ (0, _decorators.injectable)(),
62
+ _ts_metadata("design:type", Function),
63
+ _ts_metadata("design:paramtypes", [
64
+ typeof _mesh.Workspace === "undefined" ? Object : _mesh.Workspace,
65
+ typeof _typeemitter.TypeEmitter === "undefined" ? Object : _typeemitter.TypeEmitter
66
+ ])
67
+ ], TypeCheck);
68
+
69
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL2ZvcmdlL3NyYy9hY3Rpb25zL3R5cGVjaGVjay5hY3Rpb24udHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaW5qZWN0YWJsZSB9IGZyb20gXCJAZGVjb2hlcmUvY3J1Y2libGUvZGVjb3JhdG9yc1wiO1xuLy8gYmlvbWUtaWdub3JlIGxpbnQvc3R5bGUvdXNlSW1wb3J0VHlwZTogPERJPlxuaW1wb3J0IHsgV29ya3NwYWNlIH0gZnJvbSBcIkBkZWNvaGVyZS9tZXNoXCI7XG5pbXBvcnQgdHlwZSB7IEFjdGlvbiB9IGZyb20gXCJAZGVjb2hlcmUvbmV4dXMvY2xpXCI7XG5pbXBvcnQgeyBBY3Rpb25SZXNwb25zZSB9IGZyb20gXCJAZGVjb2hlcmUvbmV4dXMvY2xpXCI7XG5pbXBvcnQgeyBUcmFjZSB9IGZyb20gXCJAZGVjb2hlcmUvbmV4dXMvZGlhZ25vc3RpY3NcIjtcbmltcG9ydCB7IHNjcmliZSB9IGZyb20gXCJAZGVjb2hlcmUvc2NyaWJlXCI7XG5pbXBvcnQgdHMgZnJvbSBcInR5cGVzY3JpcHRcIjtcbmltcG9ydCB7IEZvcmdlRXJyb3IgfSBmcm9tIFwiLi4vZXJyb3JzLmpzXCI7XG4vLyBiaW9tZS1pZ25vcmUgbGludC9zdHlsZS91c2VJbXBvcnRUeXBlOiA8REk+XG5pbXBvcnQgeyBUeXBlRW1pdHRlciB9IGZyb20gXCIuLi9zZXJ2aWNlcy90eXBlLWVtaXR0ZXIuanNcIjtcblxuZXhwb3J0IHR5cGUgVHlwZUNoZWNrT3B0aW9ucyA9IHtcblx0Y29uZmlndXJhdGlvbjogc3RyaW5nO1xufTtcblxuQFRyYWNlXG5AaW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgVHlwZUNoZWNrIGltcGxlbWVudHMgQWN0aW9uPFR5cGVDaGVja09wdGlvbnM+IHtcblx0I2xvZ2dlciA9IHNjcmliZS5sb2dnZXIoVHlwZUNoZWNrLm5hbWUpO1xuXG5cdHB1YmxpYyBjb25zdHJ1Y3Rvcihcblx0XHRwcml2YXRlIHJlYWRvbmx5IHdvcmtzcGFjZTogV29ya3NwYWNlLFxuXHRcdHByaXZhdGUgcmVhZG9ubHkgdHlwZUVtaXR0ZXI6IFR5cGVFbWl0dGVyLFxuXHQpIHt9XG5cblx0cHVibGljIHJ1biA9IGFzeW5jIChvcHRpb25zOiBUeXBlQ2hlY2tPcHRpb25zKTogUHJvbWlzZTxBY3Rpb25SZXNwb25zZT4gPT4ge1xuXHRcdGNvbnN0IHByb2plY3RzID0gdGhpcy53b3Jrc3BhY2UuZ2V0UHJvamVjdHMob3B0aW9ucy5jb25maWd1cmF0aW9uKTtcblx0XHRmb3IgKGNvbnN0IHByb2plY3Qgb2YgcHJvamVjdHMpIHtcblx0XHRcdHRoaXMuI2xvZ2dlci5pbmZvKGBUeXBlLWNoZWNraW5nICR7cHJvamVjdC5uYW1lfWApO1xuXHRcdH1cblxuXHRcdGNvbnN0IHsgZGlhZ25vc3RpY3MsIGZvcm1hdHRlZCB9ID0gYXdhaXQgdGhpcy50eXBlRW1pdHRlci5jaGVja1Byb2plY3QoWy4uLnByb2plY3RzXSk7XG5cdFx0Y29uc3QgZXJyb3JzID0gZGlhZ25vc3RpY3MuZmlsdGVyKFxuXHRcdFx0KGRpYWdub3N0aWMpID0+IGRpYWdub3N0aWMuY2F0ZWdvcnkgPT09IHRzLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcblx0XHQpO1xuXG5cdFx0aWYgKGVycm9ycy5sZW5ndGggPiAwKSB7XG5cdFx0XHR0aHJvdyBuZXcgRm9yZ2VFcnJvcihmb3JtYXR0ZWQgfHwgXCJUeXBlIGNoZWNrIGZhaWxlZFwiKTtcblx0XHR9XG5cblx0XHRpZiAoZm9ybWF0dGVkLmxlbmd0aCA+IDApIHtcblx0XHRcdHRoaXMuI2xvZ2dlci5pbmZvKGZvcm1hdHRlZCk7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIEFjdGlvblJlc3BvbnNlLlN1Y2Nlc3MoVHlwZUNoZWNrLm5hbWUpO1xuXHR9O1xufVxuIl0sIm5hbWVzIjpbIlR5cGVDaGVjayIsInNjcmliZSIsImxvZ2dlciIsIm5hbWUiLCJ3b3Jrc3BhY2UiLCJ0eXBlRW1pdHRlciIsInJ1biIsIm9wdGlvbnMiLCJwcm9qZWN0cyIsImdldFByb2plY3RzIiwiY29uZmlndXJhdGlvbiIsInByb2plY3QiLCJpbmZvIiwiZGlhZ25vc3RpY3MiLCJmb3JtYXR0ZWQiLCJjaGVja1Byb2plY3QiLCJlcnJvcnMiLCJmaWx0ZXIiLCJkaWFnbm9zdGljIiwiY2F0ZWdvcnkiLCJ0cyIsIkRpYWdub3N0aWNDYXRlZ29yeSIsIkVycm9yIiwibGVuZ3RoIiwiRm9yZ2VFcnJvciIsIkFjdGlvblJlc3BvbnNlIiwiU3VjY2VzcyJdLCJtYXBwaW5ncyI6Ijs7OzsrQkFrQmFBOzs7ZUFBQUE7Ozs0QkFsQmM7c0JBRUQ7cUJBRUs7NkJBQ1Q7d0JBQ0M7bUVBQ1I7d0JBQ1k7NkJBRUM7Ozs7Ozs7Ozs7Ozs7OztBQVFyQixNQUFNQTs7O0lBQ1osQ0FBQSxNQUFPLEdBQUdDLGNBQU0sQ0FBQ0MsTUFBTSxDQUFDRixVQUFVRyxJQUFJLEVBQUU7SUFFeEMsWUFDQyxBQUFpQkMsU0FBb0IsRUFDckMsQUFBaUJDLFdBQXdCLENBQ3hDO2FBRmdCRCxZQUFBQTthQUNBQyxjQUFBQTtJQUNmO0lBRUlDLE1BQU0sT0FBT0M7UUFDbkIsTUFBTUMsV0FBVyxJQUFJLENBQUNKLFNBQVMsQ0FBQ0ssV0FBVyxDQUFDRixRQUFRRyxhQUFhO1FBQ2pFLEtBQUssTUFBTUMsV0FBV0gsU0FBVTtZQUMvQixJQUFJLENBQUMsQ0FBQSxNQUFPLENBQUNJLElBQUksQ0FBQyxDQUFDLGNBQWMsRUFBRUQsUUFBUVIsSUFBSSxFQUFFO1FBQ2xEO1FBRUEsTUFBTSxFQUFFVSxXQUFXLEVBQUVDLFNBQVMsRUFBRSxHQUFHLE1BQU0sSUFBSSxDQUFDVCxXQUFXLENBQUNVLFlBQVksQ0FBQztlQUFJUDtTQUFTO1FBQ3BGLE1BQU1RLFNBQVNILFlBQVlJLE1BQU0sQ0FDaEMsQ0FBQ0MsYUFBZUEsV0FBV0MsUUFBUSxLQUFLQyxtQkFBRSxDQUFDQyxrQkFBa0IsQ0FBQ0MsS0FBSztRQUdwRSxJQUFJTixPQUFPTyxNQUFNLEdBQUcsR0FBRztZQUN0QixNQUFNLElBQUlDLGtCQUFVLENBQUNWLGFBQWE7UUFDbkM7UUFFQSxJQUFJQSxVQUFVUyxNQUFNLEdBQUcsR0FBRztZQUN6QixJQUFJLENBQUMsQ0FBQSxNQUFPLENBQUNYLElBQUksQ0FBQ0U7UUFDbkI7UUFFQSxPQUFPVyxtQkFBYyxDQUFDQyxPQUFPLENBQUMxQixVQUFVRyxJQUFJO0lBQzdDLEVBQUU7QUFDSCJ9
@@ -9,6 +9,7 @@ _export_star(require("./forge.command.js"), exports);
9
9
  _export_star(require("./link.command.js"), exports);
10
10
  _export_star(require("./publish.command.js"), exports);
11
11
  _export_star(require("./tag.command.js"), exports);
12
+ _export_star(require("./typecheck.command.js"), exports);
12
13
  _export_star(require("./version.command.js"), exports);
13
14
  function _export_star(from, to) {
14
15
  Object.keys(from).forEach(function(k) {
@@ -24,4 +25,4 @@ function _export_star(from, to) {
24
25
  return from;
25
26
  }
26
27
 
27
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL2ZvcmdlL3NyYy9jb21tYW5kcy9pbmRleC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tIFwiLi9idWlsZC5jb21tYW5kLmpzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9kZXBlbmRlbmN5LmNvbW1hbmQuanNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2RvY2tlci5jb21tYW5kLmpzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9mb3JnZS5jb21tYW5kLmpzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9saW5rLmNvbW1hbmQuanNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3B1Ymxpc2guY29tbWFuZC5qc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vdGFnLmNvbW1hbmQuanNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3ZlcnNpb24uY29tbWFuZC5qc1wiO1xuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7cUJBQWM7cUJBQ0E7cUJBQ0E7cUJBQ0E7cUJBQ0E7cUJBQ0E7cUJBQ0E7cUJBQ0EifQ==
28
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL2ZvcmdlL3NyYy9jb21tYW5kcy9pbmRleC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tIFwiLi9idWlsZC5jb21tYW5kLmpzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9kZXBlbmRlbmN5LmNvbW1hbmQuanNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2RvY2tlci5jb21tYW5kLmpzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9mb3JnZS5jb21tYW5kLmpzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9saW5rLmNvbW1hbmQuanNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3B1Ymxpc2guY29tbWFuZC5qc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vdGFnLmNvbW1hbmQuanNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3R5cGVjaGVjay5jb21tYW5kLmpzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi92ZXJzaW9uLmNvbW1hbmQuanNcIjtcbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O3FCQUFjO3FCQUNBO3FCQUNBO3FCQUNBO3FCQUNBO3FCQUNBO3FCQUNBO3FCQUNBO3FCQUNBIn0=
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ Object.defineProperty(exports, "TypeCheckCommand", {
6
+ enumerable: true,
7
+ get: function() {
8
+ return TypeCheckCommand;
9
+ }
10
+ });
11
+ const _cli = require("@decohere/nexus/cli");
12
+ const _typecheckaction = require("../actions/typecheck.action.js");
13
+ class TypeCheckCommand extends _cli.DecohereCommand {
14
+ get actions() {
15
+ return [
16
+ _typecheckaction.TypeCheck
17
+ ];
18
+ }
19
+ constructor(name){
20
+ super(name);
21
+ this.description("Type-check workspace projects without emitting files");
22
+ this.addOption(new _cli.ConfigurationOption("debug"));
23
+ }
24
+ }
25
+
26
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL2ZvcmdlL3NyYy9jb21tYW5kcy90eXBlY2hlY2suY29tbWFuZC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb25maWd1cmF0aW9uT3B0aW9uLCBEZWNvaGVyZUNvbW1hbmQgfSBmcm9tIFwiQGRlY29oZXJlL25leHVzL2NsaVwiO1xuaW1wb3J0IHsgVHlwZUNoZWNrIH0gZnJvbSBcIi4uL2FjdGlvbnMvdHlwZWNoZWNrLmFjdGlvbi5qc1wiO1xuXG5leHBvcnQgY2xhc3MgVHlwZUNoZWNrQ29tbWFuZCBleHRlbmRzIERlY29oZXJlQ29tbWFuZCB7XG5cdHB1YmxpYyBvdmVycmlkZSBnZXQgYWN0aW9ucygpIHtcblx0XHRyZXR1cm4gW1R5cGVDaGVja107XG5cdH1cblxuXHRwdWJsaWMgY29uc3RydWN0b3IobmFtZTogc3RyaW5nKSB7XG5cdFx0c3VwZXIobmFtZSk7XG5cdFx0dGhpcy5kZXNjcmlwdGlvbihcIlR5cGUtY2hlY2sgd29ya3NwYWNlIHByb2plY3RzIHdpdGhvdXQgZW1pdHRpbmcgZmlsZXNcIik7XG5cdFx0dGhpcy5hZGRPcHRpb24obmV3IENvbmZpZ3VyYXRpb25PcHRpb24oXCJkZWJ1Z1wiKSk7XG5cdH1cbn1cbiJdLCJuYW1lcyI6WyJUeXBlQ2hlY2tDb21tYW5kIiwiRGVjb2hlcmVDb21tYW5kIiwiYWN0aW9ucyIsIlR5cGVDaGVjayIsIm5hbWUiLCJkZXNjcmlwdGlvbiIsImFkZE9wdGlvbiIsIkNvbmZpZ3VyYXRpb25PcHRpb24iXSwibWFwcGluZ3MiOiI7Ozs7K0JBR2FBOzs7ZUFBQUE7OztxQkFId0M7aUNBQzNCO0FBRW5CLE1BQU1BLHlCQUF5QkMsb0JBQWU7SUFDcEQsSUFBb0JDLFVBQVU7UUFDN0IsT0FBTztZQUFDQywwQkFBUztTQUFDO0lBQ25CO0lBRUEsWUFBbUJDLElBQVksQ0FBRTtRQUNoQyxLQUFLLENBQUNBO1FBQ04sSUFBSSxDQUFDQyxXQUFXLENBQUM7UUFDakIsSUFBSSxDQUFDQyxTQUFTLENBQUMsSUFBSUMsd0JBQW1CLENBQUM7SUFDeEM7QUFDRCJ9
@@ -74,6 +74,7 @@ class ForgeModule extends _cli.ModuleManifest {
74
74
  reportDependencies: _index.ReportDependencies,
75
75
  version: _index.Version,
76
76
  tag: _index.Tag,
77
+ typecheck: _index.TypeCheck,
77
78
  commitFiles: _index.CommitFiles,
78
79
  link: _index.Link,
79
80
  unlink: _index.Unlink
@@ -85,10 +86,12 @@ class ForgeModule extends _cli.ModuleManifest {
85
86
  docker: _index1.DockerCommand,
86
87
  version: _index1.VersionCommand,
87
88
  tag: _index1.TagCommand,
89
+ typecheck: _index1.TypeCheckCommand,
88
90
  link: _index1.LinkCommand,
89
91
  unlink: _index1.UnlinkCommand
90
92
  };
91
93
  registerServices(builder) {
94
+ builder.registerSingleton(_typeemitter.TypeEmitter);
92
95
  builder.registerSingleton(_transformertype.TransformerKey, _swctranspiler.SwcTranspiler);
93
96
  builder.registerSingleton(_transformertype.TransformerKey, _typeemitter.TypeEmitter);
94
97
  builder.registerSingleton(_dependencyresolverservice.DependencyResolver);
@@ -112,4 +115,4 @@ class ForgeModule extends _cli.ModuleManifest {
112
115
  }
113
116
  }
114
117
 
115
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL2ZvcmdlL3NyYy9mb3JnZS5tb2R1bGUudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVXNlckNvbmZpZ0ZhY3RvcnksIFdvcmtzcGFjZUZhY3RvcnkgfSBmcm9tIFwiQGRlY29oZXJlL21lc2hcIjtcbmltcG9ydCB0eXBlIHsgV29ya3NwYWNlRmFjdG9yeU9wdGlvbnMgfSBmcm9tIFwiQGRlY29oZXJlL25leHVzL2NsaVwiO1xuaW1wb3J0IHsgTW9kdWxlTWFuaWZlc3QgfSBmcm9tIFwiQGRlY29oZXJlL25leHVzL2NsaVwiO1xuaW1wb3J0IHR5cGUgeyBDb250YWluZXJCdWlsZGVyIH0gZnJvbSBcIkBkZWNvaGVyZS9uZXh1cy9jb21wb3NpdGlvblwiO1xuaW1wb3J0ICogYXMgQWN0aW9ucyBmcm9tIFwiLi9hY3Rpb25zL2luZGV4LmpzXCI7XG5pbXBvcnQgKiBhcyBDb21tYW5kcyBmcm9tIFwiLi9jb21tYW5kcy9pbmRleC5qc1wiO1xuaW1wb3J0IHsgRGVwZW5kZW5jeVJlc29sdmVyIH0gZnJvbSBcIi4vc2VydmljZXMvZGVwZW5kZW5jeS1yZXNvbHZlci5zZXJ2aWNlLmpzXCI7XG5pbXBvcnQgeyBGaWxlV3JpdGVyU2VydmljZSB9IGZyb20gXCIuL3NlcnZpY2VzL2ZpbGUtd3JpdGVyLnNlcnZpY2UuanNcIjtcbmltcG9ydCB7IFN3Y1RyYW5zcGlsZXIgfSBmcm9tIFwiLi9zZXJ2aWNlcy9zd2MtdHJhbnNwaWxlci5qc1wiO1xuaW1wb3J0IHsgVHlwZUVtaXR0ZXIgfSBmcm9tIFwiLi9zZXJ2aWNlcy90eXBlLWVtaXR0ZXIuanNcIjtcbmltcG9ydCB7IFRyYW5zZm9ybWVyS2V5IH0gZnJvbSBcIi4vdHlwZXMvdHJhbnNmb3JtZXIudHlwZS5qc1wiO1xuaW1wb3J0IHsgRGVmYXVsdENvbmZpZ3VyYXRpb25zLCBXb3Jrc3BhY2VEZWZhdWx0cyB9IGZyb20gXCIuL3dvcmtzcGFjZS5jb25maWcuanNcIjtcblxuZXhwb3J0IGNsYXNzIEZvcmdlTW9kdWxlIGV4dGVuZHMgTW9kdWxlTWFuaWZlc3Qge1xuXHRwdWJsaWMgcmVhZG9ubHkgaWQgPSBcImZvcmdlXCI7XG5cdHB1YmxpYyByZWFkb25seSBjb21tYW5kID0gQ29tbWFuZHMuRm9yZ2VDb21tYW5kO1xuXHRwdWJsaWMgcmVhZG9ubHkgYWN0aW9ucyA9IHtcblx0XHRjbGVhbjogQWN0aW9ucy5DbGVhbixcblx0XHRjb3B5OiBBY3Rpb25zLkNvcHksXG5cdFx0ZG9ja2VyOiBBY3Rpb25zLkRvY2tlcixcblx0XHRidWlsZDogQWN0aW9ucy5CdWlsZCxcblx0XHR3YXRjaDogQWN0aW9ucy5XYXRjaCxcblx0XHRwdWJsaXNoOiBBY3Rpb25zLlB1Ymxpc2gsXG5cdFx0c3luY0RlcGVuZGVuY2llczogQWN0aW9ucy5TeW5jRGVwZW5kZW5jaWVzLFxuXHRcdHN5bmNMb2NrRmlsZTogQWN0aW9ucy5TeW5jTG9ja0ZpbGUsXG5cdFx0cmVwb3J0RGVwZW5kZW5jaWVzOiBBY3Rpb25zLlJlcG9ydERlcGVuZGVuY2llcyxcblx0XHR2ZXJzaW9uOiBBY3Rpb25zLlZlcnNpb24sXG5cdFx0dGFnOiBBY3Rpb25zLlRhZyxcblx0XHRjb21taXRGaWxlczogQWN0aW9ucy5Db21taXRGaWxlcyxcblx0XHRsaW5rOiBBY3Rpb25zLkxpbmssXG5cdFx0dW5saW5rOiBBY3Rpb25zLlVubGluayxcblx0fTtcblx0cHVibGljIHJlYWRvbmx5IGNvbW1hbmRzID0ge1xuXHRcdGJ1aWxkOiBDb21tYW5kcy5CdWlsZENvbW1hbmQsXG5cdFx0cHVibGlzaDogQ29tbWFuZHMuUHVibGlzaENvbW1hbmQsXG5cdFx0ZGVwZW5kZW5jaWVzOiBDb21tYW5kcy5EZXBlbmRlbmN5Q29tbWFuZCxcblx0XHRkb2NrZXI6IENvbW1hbmRzLkRvY2tlckNvbW1hbmQsXG5cdFx0dmVyc2lvbjogQ29tbWFuZHMuVmVyc2lvbkNvbW1hbmQsXG5cdFx0dGFnOiBDb21tYW5kcy5UYWdDb21tYW5kLFxuXHRcdGxpbms6IENvbW1hbmRzLkxpbmtDb21tYW5kLFxuXHRcdHVubGluazogQ29tbWFuZHMuVW5saW5rQ29tbWFuZCxcblx0fTtcblxuXHRwdWJsaWMgcmVnaXN0ZXJTZXJ2aWNlcyhidWlsZGVyOiBDb250YWluZXJCdWlsZGVyKSB7XG5cdFx0YnVpbGRlci5yZWdpc3RlclNpbmdsZXRvbihUcmFuc2Zvcm1lcktleSwgU3djVHJhbnNwaWxlcik7XG5cdFx0YnVpbGRlci5yZWdpc3RlclNpbmdsZXRvbihUcmFuc2Zvcm1lcktleSwgVHlwZUVtaXR0ZXIpO1xuXHRcdGJ1aWxkZXIucmVnaXN0ZXJTaW5nbGV0b24oRGVwZW5kZW5jeVJlc29sdmVyKTtcblx0XHRidWlsZGVyLnJlZ2lzdGVyU2luZ2xldG9uKEZpbGVXcml0ZXJTZXJ2aWNlKTtcblx0fVxuXG5cdHB1YmxpYyBvdmVycmlkZSBhc3luYyBjcmVhdGVXb3Jrc3BhY2Uob3B0aW9uczogV29ya3NwYWNlRmFjdG9yeU9wdGlvbnMpIHtcblx0XHRjb25zdCB7IGNvbmZpZ3VyYXRpb25zOiBfLCAuLi5mb3JnZURlZmF1bHRzIH0gPSBXb3Jrc3BhY2VEZWZhdWx0cztcblx0XHRjb25zdCB1c2VyQ29uZmlnID0gYXdhaXQgVXNlckNvbmZpZ0ZhY3RvcnkuZ2V0VXNlckNvbmZpZyhvcHRpb25zLmNvbmZpZ0ZpbGUpO1xuXHRcdC8vIE9ubHkgYXBwbHkgZm9yZ2UgZGVmYXVsdCBjb25maWd1cmF0aW9ucyB3aGVuIHVzZXIgY29uZmlnIGRvZXNuJ3QgcHJvdmlkZSBhbnkuXG5cdFx0Ly8gVGhpcyBlbnN1cmVzIHVzZXItZGVmaW5lZCBjb25maWd1cmF0aW9ucyB0YWtlIHByaW9yaXR5IHdoaWxlIHN0aWxsIHByb3ZpZGluZ1xuXHRcdC8vIHNlbnNpYmxlIGRlZmF1bHRzIChkZWJ1ZyArIHJlbGVhc2UpIHdoZW4gbm8gY29uZmlnIGZpbGUgaXMgcHJlc2VudC5cblx0XHRjb25zdCBjb25maWd1cmF0aW9ucyA9IHVzZXJDb25maWcuY29uZmlndXJhdGlvbnM/Lmxlbmd0aFxuXHRcdFx0PyB1bmRlZmluZWRcblx0XHRcdDogRGVmYXVsdENvbmZpZ3VyYXRpb25zO1xuXHRcdHJldHVybiBXb3Jrc3BhY2VGYWN0b3J5LmNyZWF0ZSh7XG5cdFx0XHQuLi5mb3JnZURlZmF1bHRzLFxuXHRcdFx0Li4uKGNvbmZpZ3VyYXRpb25zID8geyBjb25maWd1cmF0aW9ucyB9IDoge30pLFxuXHRcdFx0Y29uZmlnRmlsZTogb3B0aW9ucy5jb25maWdGaWxlLFxuXHRcdFx0cm9vdERpcjogb3B0aW9ucy5yb290RGlyID8/IFdvcmtzcGFjZURlZmF1bHRzLnJvb3REaXIsXG5cdFx0fSk7XG5cdH1cbn1cbiJdLCJuYW1lcyI6WyJGb3JnZU1vZHVsZSIsIk1vZHVsZU1hbmlmZXN0IiwiaWQiLCJjb21tYW5kIiwiQ29tbWFuZHMiLCJGb3JnZUNvbW1hbmQiLCJhY3Rpb25zIiwiY2xlYW4iLCJBY3Rpb25zIiwiQ2xlYW4iLCJjb3B5IiwiQ29weSIsImRvY2tlciIsIkRvY2tlciIsImJ1aWxkIiwiQnVpbGQiLCJ3YXRjaCIsIldhdGNoIiwicHVibGlzaCIsIlB1Ymxpc2giLCJzeW5jRGVwZW5kZW5jaWVzIiwiU3luY0RlcGVuZGVuY2llcyIsInN5bmNMb2NrRmlsZSIsIlN5bmNMb2NrRmlsZSIsInJlcG9ydERlcGVuZGVuY2llcyIsIlJlcG9ydERlcGVuZGVuY2llcyIsInZlcnNpb24iLCJWZXJzaW9uIiwidGFnIiwiVGFnIiwiY29tbWl0RmlsZXMiLCJDb21taXRGaWxlcyIsImxpbmsiLCJMaW5rIiwidW5saW5rIiwiVW5saW5rIiwiY29tbWFuZHMiLCJCdWlsZENvbW1hbmQiLCJQdWJsaXNoQ29tbWFuZCIsImRlcGVuZGVuY2llcyIsIkRlcGVuZGVuY3lDb21tYW5kIiwiRG9ja2VyQ29tbWFuZCIsIlZlcnNpb25Db21tYW5kIiwiVGFnQ29tbWFuZCIsIkxpbmtDb21tYW5kIiwiVW5saW5rQ29tbWFuZCIsInJlZ2lzdGVyU2VydmljZXMiLCJidWlsZGVyIiwicmVnaXN0ZXJTaW5nbGV0b24iLCJUcmFuc2Zvcm1lcktleSIsIlN3Y1RyYW5zcGlsZXIiLCJUeXBlRW1pdHRlciIsIkRlcGVuZGVuY3lSZXNvbHZlciIsIkZpbGVXcml0ZXJTZXJ2aWNlIiwiY3JlYXRlV29ya3NwYWNlIiwib3B0aW9ucyIsImNvbmZpZ3VyYXRpb25zIiwiXyIsImZvcmdlRGVmYXVsdHMiLCJXb3Jrc3BhY2VEZWZhdWx0cyIsInVzZXJDb25maWciLCJVc2VyQ29uZmlnRmFjdG9yeSIsImdldFVzZXJDb25maWciLCJjb25maWdGaWxlIiwibGVuZ3RoIiwidW5kZWZpbmVkIiwiRGVmYXVsdENvbmZpZ3VyYXRpb25zIiwiV29ya3NwYWNlRmFjdG9yeSIsImNyZWF0ZSIsInJvb3REaXIiXSwibWFwcGluZ3MiOiI7Ozs7K0JBYWFBOzs7ZUFBQUE7OztzQkFidUM7cUJBRXJCOytEQUVOO2dFQUNDOzJDQUNTO21DQUNEOytCQUNKOzZCQUNGO2lDQUNHO2lDQUMwQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRWxELE1BQU1BLG9CQUFvQkMsbUJBQWM7SUFDOUJDLEtBQUssUUFBUTtJQUNiQyxVQUFVQyxRQUFTQyxZQUFZLENBQUM7SUFDaENDLFVBQVU7UUFDekJDLE9BQU9DLE9BQVFDLEtBQUs7UUFDcEJDLE1BQU1GLE9BQVFHLElBQUk7UUFDbEJDLFFBQVFKLE9BQVFLLE1BQU07UUFDdEJDLE9BQU9OLE9BQVFPLEtBQUs7UUFDcEJDLE9BQU9SLE9BQVFTLEtBQUs7UUFDcEJDLFNBQVNWLE9BQVFXLE9BQU87UUFDeEJDLGtCQUFrQlosT0FBUWEsZ0JBQWdCO1FBQzFDQyxjQUFjZCxPQUFRZSxZQUFZO1FBQ2xDQyxvQkFBb0JoQixPQUFRaUIsa0JBQWtCO1FBQzlDQyxTQUFTbEIsT0FBUW1CLE9BQU87UUFDeEJDLEtBQUtwQixPQUFRcUIsR0FBRztRQUNoQkMsYUFBYXRCLE9BQVF1QixXQUFXO1FBQ2hDQyxNQUFNeEIsT0FBUXlCLElBQUk7UUFDbEJDLFFBQVExQixPQUFRMkIsTUFBTTtJQUN2QixFQUFFO0lBQ2NDLFdBQVc7UUFDMUJ0QixPQUFPVixRQUFTaUMsWUFBWTtRQUM1Qm5CLFNBQVNkLFFBQVNrQyxjQUFjO1FBQ2hDQyxjQUFjbkMsUUFBU29DLGlCQUFpQjtRQUN4QzVCLFFBQVFSLFFBQVNxQyxhQUFhO1FBQzlCZixTQUFTdEIsUUFBU3NDLGNBQWM7UUFDaENkLEtBQUt4QixRQUFTdUMsVUFBVTtRQUN4QlgsTUFBTTVCLFFBQVN3QyxXQUFXO1FBQzFCVixRQUFROUIsUUFBU3lDLGFBQWE7SUFDL0IsRUFBRTtJQUVLQyxpQkFBaUJDLE9BQXlCLEVBQUU7UUFDbERBLFFBQVFDLGlCQUFpQixDQUFDQywrQkFBYyxFQUFFQyw0QkFBYTtRQUN2REgsUUFBUUMsaUJBQWlCLENBQUNDLCtCQUFjLEVBQUVFLHdCQUFXO1FBQ3JESixRQUFRQyxpQkFBaUIsQ0FBQ0ksNkNBQWtCO1FBQzVDTCxRQUFRQyxpQkFBaUIsQ0FBQ0ssb0NBQWlCO0lBQzVDO0lBRUEsTUFBc0JDLGdCQUFnQkMsT0FBZ0MsRUFBRTtRQUN2RSxNQUFNLEVBQUVDLGdCQUFnQkMsQ0FBQyxFQUFFLEdBQUdDLGVBQWUsR0FBR0Msa0NBQWlCO1FBQ2pFLE1BQU1DLGFBQWEsTUFBTUMsdUJBQWlCLENBQUNDLGFBQWEsQ0FBQ1AsUUFBUVEsVUFBVTtRQUMzRSxnRkFBZ0Y7UUFDaEYsK0VBQStFO1FBQy9FLHNFQUFzRTtRQUN0RSxNQUFNUCxpQkFBaUJJLFdBQVdKLGNBQWMsRUFBRVEsU0FDL0NDLFlBQ0FDLHNDQUFxQjtRQUN4QixPQUFPQyxzQkFBZ0IsQ0FBQ0MsTUFBTSxDQUFDO1lBQzlCLEdBQUdWLGFBQWE7WUFDaEIsR0FBSUYsaUJBQWlCO2dCQUFFQTtZQUFlLElBQUksQ0FBQyxDQUFDO1lBQzVDTyxZQUFZUixRQUFRUSxVQUFVO1lBQzlCTSxTQUFTZCxRQUFRYyxPQUFPLElBQUlWLGtDQUFpQixDQUFDVSxPQUFPO1FBQ3REO0lBQ0Q7QUFDRCJ9
118
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL2ZvcmdlL3NyYy9mb3JnZS5tb2R1bGUudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVXNlckNvbmZpZ0ZhY3RvcnksIFdvcmtzcGFjZUZhY3RvcnkgfSBmcm9tIFwiQGRlY29oZXJlL21lc2hcIjtcbmltcG9ydCB0eXBlIHsgV29ya3NwYWNlRmFjdG9yeU9wdGlvbnMgfSBmcm9tIFwiQGRlY29oZXJlL25leHVzL2NsaVwiO1xuaW1wb3J0IHsgTW9kdWxlTWFuaWZlc3QgfSBmcm9tIFwiQGRlY29oZXJlL25leHVzL2NsaVwiO1xuaW1wb3J0IHR5cGUgeyBDb250YWluZXJCdWlsZGVyIH0gZnJvbSBcIkBkZWNvaGVyZS9uZXh1cy9jb21wb3NpdGlvblwiO1xuaW1wb3J0ICogYXMgQWN0aW9ucyBmcm9tIFwiLi9hY3Rpb25zL2luZGV4LmpzXCI7XG5pbXBvcnQgKiBhcyBDb21tYW5kcyBmcm9tIFwiLi9jb21tYW5kcy9pbmRleC5qc1wiO1xuaW1wb3J0IHsgRGVwZW5kZW5jeVJlc29sdmVyIH0gZnJvbSBcIi4vc2VydmljZXMvZGVwZW5kZW5jeS1yZXNvbHZlci5zZXJ2aWNlLmpzXCI7XG5pbXBvcnQgeyBGaWxlV3JpdGVyU2VydmljZSB9IGZyb20gXCIuL3NlcnZpY2VzL2ZpbGUtd3JpdGVyLnNlcnZpY2UuanNcIjtcbmltcG9ydCB7IFN3Y1RyYW5zcGlsZXIgfSBmcm9tIFwiLi9zZXJ2aWNlcy9zd2MtdHJhbnNwaWxlci5qc1wiO1xuaW1wb3J0IHsgVHlwZUVtaXR0ZXIgfSBmcm9tIFwiLi9zZXJ2aWNlcy90eXBlLWVtaXR0ZXIuanNcIjtcbmltcG9ydCB7IFRyYW5zZm9ybWVyS2V5IH0gZnJvbSBcIi4vdHlwZXMvdHJhbnNmb3JtZXIudHlwZS5qc1wiO1xuaW1wb3J0IHsgRGVmYXVsdENvbmZpZ3VyYXRpb25zLCBXb3Jrc3BhY2VEZWZhdWx0cyB9IGZyb20gXCIuL3dvcmtzcGFjZS5jb25maWcuanNcIjtcblxuZXhwb3J0IGNsYXNzIEZvcmdlTW9kdWxlIGV4dGVuZHMgTW9kdWxlTWFuaWZlc3Qge1xuXHRwdWJsaWMgcmVhZG9ubHkgaWQgPSBcImZvcmdlXCI7XG5cdHB1YmxpYyByZWFkb25seSBjb21tYW5kID0gQ29tbWFuZHMuRm9yZ2VDb21tYW5kO1xuXHRwdWJsaWMgcmVhZG9ubHkgYWN0aW9ucyA9IHtcblx0XHRjbGVhbjogQWN0aW9ucy5DbGVhbixcblx0XHRjb3B5OiBBY3Rpb25zLkNvcHksXG5cdFx0ZG9ja2VyOiBBY3Rpb25zLkRvY2tlcixcblx0XHRidWlsZDogQWN0aW9ucy5CdWlsZCxcblx0XHR3YXRjaDogQWN0aW9ucy5XYXRjaCxcblx0XHRwdWJsaXNoOiBBY3Rpb25zLlB1Ymxpc2gsXG5cdFx0c3luY0RlcGVuZGVuY2llczogQWN0aW9ucy5TeW5jRGVwZW5kZW5jaWVzLFxuXHRcdHN5bmNMb2NrRmlsZTogQWN0aW9ucy5TeW5jTG9ja0ZpbGUsXG5cdFx0cmVwb3J0RGVwZW5kZW5jaWVzOiBBY3Rpb25zLlJlcG9ydERlcGVuZGVuY2llcyxcblx0XHR2ZXJzaW9uOiBBY3Rpb25zLlZlcnNpb24sXG5cdFx0dGFnOiBBY3Rpb25zLlRhZyxcblx0XHR0eXBlY2hlY2s6IEFjdGlvbnMuVHlwZUNoZWNrLFxuXHRcdGNvbW1pdEZpbGVzOiBBY3Rpb25zLkNvbW1pdEZpbGVzLFxuXHRcdGxpbms6IEFjdGlvbnMuTGluayxcblx0XHR1bmxpbms6IEFjdGlvbnMuVW5saW5rLFxuXHR9O1xuXHRwdWJsaWMgcmVhZG9ubHkgY29tbWFuZHMgPSB7XG5cdFx0YnVpbGQ6IENvbW1hbmRzLkJ1aWxkQ29tbWFuZCxcblx0XHRwdWJsaXNoOiBDb21tYW5kcy5QdWJsaXNoQ29tbWFuZCxcblx0XHRkZXBlbmRlbmNpZXM6IENvbW1hbmRzLkRlcGVuZGVuY3lDb21tYW5kLFxuXHRcdGRvY2tlcjogQ29tbWFuZHMuRG9ja2VyQ29tbWFuZCxcblx0XHR2ZXJzaW9uOiBDb21tYW5kcy5WZXJzaW9uQ29tbWFuZCxcblx0XHR0YWc6IENvbW1hbmRzLlRhZ0NvbW1hbmQsXG5cdFx0dHlwZWNoZWNrOiBDb21tYW5kcy5UeXBlQ2hlY2tDb21tYW5kLFxuXHRcdGxpbms6IENvbW1hbmRzLkxpbmtDb21tYW5kLFxuXHRcdHVubGluazogQ29tbWFuZHMuVW5saW5rQ29tbWFuZCxcblx0fTtcblxuXHRwdWJsaWMgcmVnaXN0ZXJTZXJ2aWNlcyhidWlsZGVyOiBDb250YWluZXJCdWlsZGVyKSB7XG5cdFx0YnVpbGRlci5yZWdpc3RlclNpbmdsZXRvbihUeXBlRW1pdHRlcik7XG5cdFx0YnVpbGRlci5yZWdpc3RlclNpbmdsZXRvbihUcmFuc2Zvcm1lcktleSwgU3djVHJhbnNwaWxlcik7XG5cdFx0YnVpbGRlci5yZWdpc3RlclNpbmdsZXRvbihUcmFuc2Zvcm1lcktleSwgVHlwZUVtaXR0ZXIpO1xuXHRcdGJ1aWxkZXIucmVnaXN0ZXJTaW5nbGV0b24oRGVwZW5kZW5jeVJlc29sdmVyKTtcblx0XHRidWlsZGVyLnJlZ2lzdGVyU2luZ2xldG9uKEZpbGVXcml0ZXJTZXJ2aWNlKTtcblx0fVxuXG5cdHB1YmxpYyBvdmVycmlkZSBhc3luYyBjcmVhdGVXb3Jrc3BhY2Uob3B0aW9uczogV29ya3NwYWNlRmFjdG9yeU9wdGlvbnMpIHtcblx0XHRjb25zdCB7IGNvbmZpZ3VyYXRpb25zOiBfLCAuLi5mb3JnZURlZmF1bHRzIH0gPSBXb3Jrc3BhY2VEZWZhdWx0cztcblx0XHRjb25zdCB1c2VyQ29uZmlnID0gYXdhaXQgVXNlckNvbmZpZ0ZhY3RvcnkuZ2V0VXNlckNvbmZpZyhvcHRpb25zLmNvbmZpZ0ZpbGUpO1xuXHRcdC8vIE9ubHkgYXBwbHkgZm9yZ2UgZGVmYXVsdCBjb25maWd1cmF0aW9ucyB3aGVuIHVzZXIgY29uZmlnIGRvZXNuJ3QgcHJvdmlkZSBhbnkuXG5cdFx0Ly8gVGhpcyBlbnN1cmVzIHVzZXItZGVmaW5lZCBjb25maWd1cmF0aW9ucyB0YWtlIHByaW9yaXR5IHdoaWxlIHN0aWxsIHByb3ZpZGluZ1xuXHRcdC8vIHNlbnNpYmxlIGRlZmF1bHRzIChkZWJ1ZyArIHJlbGVhc2UpIHdoZW4gbm8gY29uZmlnIGZpbGUgaXMgcHJlc2VudC5cblx0XHRjb25zdCBjb25maWd1cmF0aW9ucyA9IHVzZXJDb25maWcuY29uZmlndXJhdGlvbnM/Lmxlbmd0aFxuXHRcdFx0PyB1bmRlZmluZWRcblx0XHRcdDogRGVmYXVsdENvbmZpZ3VyYXRpb25zO1xuXHRcdHJldHVybiBXb3Jrc3BhY2VGYWN0b3J5LmNyZWF0ZSh7XG5cdFx0XHQuLi5mb3JnZURlZmF1bHRzLFxuXHRcdFx0Li4uKGNvbmZpZ3VyYXRpb25zID8geyBjb25maWd1cmF0aW9ucyB9IDoge30pLFxuXHRcdFx0Y29uZmlnRmlsZTogb3B0aW9ucy5jb25maWdGaWxlLFxuXHRcdFx0cm9vdERpcjogb3B0aW9ucy5yb290RGlyID8/IFdvcmtzcGFjZURlZmF1bHRzLnJvb3REaXIsXG5cdFx0fSk7XG5cdH1cbn1cbiJdLCJuYW1lcyI6WyJGb3JnZU1vZHVsZSIsIk1vZHVsZU1hbmlmZXN0IiwiaWQiLCJjb21tYW5kIiwiQ29tbWFuZHMiLCJGb3JnZUNvbW1hbmQiLCJhY3Rpb25zIiwiY2xlYW4iLCJBY3Rpb25zIiwiQ2xlYW4iLCJjb3B5IiwiQ29weSIsImRvY2tlciIsIkRvY2tlciIsImJ1aWxkIiwiQnVpbGQiLCJ3YXRjaCIsIldhdGNoIiwicHVibGlzaCIsIlB1Ymxpc2giLCJzeW5jRGVwZW5kZW5jaWVzIiwiU3luY0RlcGVuZGVuY2llcyIsInN5bmNMb2NrRmlsZSIsIlN5bmNMb2NrRmlsZSIsInJlcG9ydERlcGVuZGVuY2llcyIsIlJlcG9ydERlcGVuZGVuY2llcyIsInZlcnNpb24iLCJWZXJzaW9uIiwidGFnIiwiVGFnIiwidHlwZWNoZWNrIiwiVHlwZUNoZWNrIiwiY29tbWl0RmlsZXMiLCJDb21taXRGaWxlcyIsImxpbmsiLCJMaW5rIiwidW5saW5rIiwiVW5saW5rIiwiY29tbWFuZHMiLCJCdWlsZENvbW1hbmQiLCJQdWJsaXNoQ29tbWFuZCIsImRlcGVuZGVuY2llcyIsIkRlcGVuZGVuY3lDb21tYW5kIiwiRG9ja2VyQ29tbWFuZCIsIlZlcnNpb25Db21tYW5kIiwiVGFnQ29tbWFuZCIsIlR5cGVDaGVja0NvbW1hbmQiLCJMaW5rQ29tbWFuZCIsIlVubGlua0NvbW1hbmQiLCJyZWdpc3RlclNlcnZpY2VzIiwiYnVpbGRlciIsInJlZ2lzdGVyU2luZ2xldG9uIiwiVHlwZUVtaXR0ZXIiLCJUcmFuc2Zvcm1lcktleSIsIlN3Y1RyYW5zcGlsZXIiLCJEZXBlbmRlbmN5UmVzb2x2ZXIiLCJGaWxlV3JpdGVyU2VydmljZSIsImNyZWF0ZVdvcmtzcGFjZSIsIm9wdGlvbnMiLCJjb25maWd1cmF0aW9ucyIsIl8iLCJmb3JnZURlZmF1bHRzIiwiV29ya3NwYWNlRGVmYXVsdHMiLCJ1c2VyQ29uZmlnIiwiVXNlckNvbmZpZ0ZhY3RvcnkiLCJnZXRVc2VyQ29uZmlnIiwiY29uZmlnRmlsZSIsImxlbmd0aCIsInVuZGVmaW5lZCIsIkRlZmF1bHRDb25maWd1cmF0aW9ucyIsIldvcmtzcGFjZUZhY3RvcnkiLCJjcmVhdGUiLCJyb290RGlyIl0sIm1hcHBpbmdzIjoiOzs7OytCQWFhQTs7O2VBQUFBOzs7c0JBYnVDO3FCQUVyQjsrREFFTjtnRUFDQzsyQ0FDUzttQ0FDRDsrQkFDSjs2QkFDRjtpQ0FDRztpQ0FDMEI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVsRCxNQUFNQSxvQkFBb0JDLG1CQUFjO0lBQzlCQyxLQUFLLFFBQVE7SUFDYkMsVUFBVUMsUUFBU0MsWUFBWSxDQUFDO0lBQ2hDQyxVQUFVO1FBQ3pCQyxPQUFPQyxPQUFRQyxLQUFLO1FBQ3BCQyxNQUFNRixPQUFRRyxJQUFJO1FBQ2xCQyxRQUFRSixPQUFRSyxNQUFNO1FBQ3RCQyxPQUFPTixPQUFRTyxLQUFLO1FBQ3BCQyxPQUFPUixPQUFRUyxLQUFLO1FBQ3BCQyxTQUFTVixPQUFRVyxPQUFPO1FBQ3hCQyxrQkFBa0JaLE9BQVFhLGdCQUFnQjtRQUMxQ0MsY0FBY2QsT0FBUWUsWUFBWTtRQUNsQ0Msb0JBQW9CaEIsT0FBUWlCLGtCQUFrQjtRQUM5Q0MsU0FBU2xCLE9BQVFtQixPQUFPO1FBQ3hCQyxLQUFLcEIsT0FBUXFCLEdBQUc7UUFDaEJDLFdBQVd0QixPQUFRdUIsU0FBUztRQUM1QkMsYUFBYXhCLE9BQVF5QixXQUFXO1FBQ2hDQyxNQUFNMUIsT0FBUTJCLElBQUk7UUFDbEJDLFFBQVE1QixPQUFRNkIsTUFBTTtJQUN2QixFQUFFO0lBQ2NDLFdBQVc7UUFDMUJ4QixPQUFPVixRQUFTbUMsWUFBWTtRQUM1QnJCLFNBQVNkLFFBQVNvQyxjQUFjO1FBQ2hDQyxjQUFjckMsUUFBU3NDLGlCQUFpQjtRQUN4QzlCLFFBQVFSLFFBQVN1QyxhQUFhO1FBQzlCakIsU0FBU3RCLFFBQVN3QyxjQUFjO1FBQ2hDaEIsS0FBS3hCLFFBQVN5QyxVQUFVO1FBQ3hCZixXQUFXMUIsUUFBUzBDLGdCQUFnQjtRQUNwQ1osTUFBTTlCLFFBQVMyQyxXQUFXO1FBQzFCWCxRQUFRaEMsUUFBUzRDLGFBQWE7SUFDL0IsRUFBRTtJQUVLQyxpQkFBaUJDLE9BQXlCLEVBQUU7UUFDbERBLFFBQVFDLGlCQUFpQixDQUFDQyx3QkFBVztRQUNyQ0YsUUFBUUMsaUJBQWlCLENBQUNFLCtCQUFjLEVBQUVDLDRCQUFhO1FBQ3ZESixRQUFRQyxpQkFBaUIsQ0FBQ0UsK0JBQWMsRUFBRUQsd0JBQVc7UUFDckRGLFFBQVFDLGlCQUFpQixDQUFDSSw2Q0FBa0I7UUFDNUNMLFFBQVFDLGlCQUFpQixDQUFDSyxvQ0FBaUI7SUFDNUM7SUFFQSxNQUFzQkMsZ0JBQWdCQyxPQUFnQyxFQUFFO1FBQ3ZFLE1BQU0sRUFBRUMsZ0JBQWdCQyxDQUFDLEVBQUUsR0FBR0MsZUFBZSxHQUFHQyxrQ0FBaUI7UUFDakUsTUFBTUMsYUFBYSxNQUFNQyx1QkFBaUIsQ0FBQ0MsYUFBYSxDQUFDUCxRQUFRUSxVQUFVO1FBQzNFLGdGQUFnRjtRQUNoRiwrRUFBK0U7UUFDL0Usc0VBQXNFO1FBQ3RFLE1BQU1QLGlCQUFpQkksV0FBV0osY0FBYyxFQUFFUSxTQUMvQ0MsWUFDQUMsc0NBQXFCO1FBQ3hCLE9BQU9DLHNCQUFnQixDQUFDQyxNQUFNLENBQUM7WUFDOUIsR0FBR1YsYUFBYTtZQUNoQixHQUFJRixpQkFBaUI7Z0JBQUVBO1lBQWUsSUFBSSxDQUFDLENBQUM7WUFDNUNPLFlBQVlSLFFBQVFRLFVBQVU7WUFDOUJNLFNBQVNkLFFBQVFjLE9BQU8sSUFBSVYsa0NBQWlCLENBQUNVLE9BQU87UUFDdEQ7SUFDRDtBQUNEIn0=
@@ -57,13 +57,13 @@ class TsProgramHost {
57
57
  host.getDirectories = (directoryName)=>this.getDirectories(directoryName);
58
58
  return host;
59
59
  }
60
- createProgram(files, compilerOptions, host, oldProgram) {
60
+ createProgram(files, compilerOptions, host, oldProgram, requiredOptions = _typeemitter.REQUIRED_TYPE_EMITTER_OPTIONS) {
61
61
  const filePaths = files.map((f)=>f.fullPath);
62
62
  this.#invalidated.clear();
63
63
  return (0, _typescript.createProgram)(filePaths, {
64
64
  ..._typeemitter.DEFAULT_TYPE_EMITTER_OPTIONS,
65
65
  ...compilerOptions,
66
- ..._typeemitter.REQUIRED_TYPE_EMITTER_OPTIONS
66
+ ...requiredOptions
67
67
  }, host, oldProgram);
68
68
  }
69
69
  readFileFromDisk(fileName) {
@@ -132,4 +132,4 @@ TsProgramHost = _ts_decorate([
132
132
  _diagnostics.Trace
133
133
  ], TsProgramHost);
134
134
 
135
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL2ZvcmdlL3NyYy9zZXJ2aWNlcy90cy1wcm9ncmFtLWhvc3QudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGZzIGZyb20gXCJub2RlOmZzXCI7XG5pbXBvcnQgeyBjYWNoZSB9IGZyb20gXCJAZGVjb2hlcmUvbmV4dXMvY2FjaGluZ1wiO1xuaW1wb3J0IHsgVHJhY2UgfSBmcm9tIFwiQGRlY29oZXJlL25leHVzL2RpYWdub3N0aWNzXCI7XG5pbXBvcnQgdHlwZSB7IEZpbGVFeCB9IGZyb20gXCJAZGVjb2hlcmUvbmV4dXMvaW9cIjtcbmltcG9ydCB0eXBlIHRzIGZyb20gXCJ0eXBlc2NyaXB0XCI7XG5pbXBvcnQgeyBjcmVhdGVDb21waWxlckhvc3QsIGNyZWF0ZVByb2dyYW0gfSBmcm9tIFwidHlwZXNjcmlwdFwiO1xuaW1wb3J0IHtcblx0REVGQVVMVF9UWVBFX0VNSVRURVJfT1BUSU9OUyxcblx0UkVRVUlSRURfVFlQRV9FTUlUVEVSX09QVElPTlMsXG59IGZyb20gXCIuLi9zZXJ2aWNlcy90eXBlLWVtaXR0ZXIuanNcIjtcblxuLyoqXG4gKiBXcmFwcyBhIFR5cGVTY3JpcHQgQ29tcGlsZXJIb3N0IHdpdGggY2FjaGVkIGZpbGUtc3lzdGVtIGNhbGxzIHNvIHRoYXRcbiAqIHJlcGVhdGVkIHJlYWRzIGR1cmluZyBhIHNpbmdsZSBidWlsZCBkbyBub3QgaGl0IHRoZSBkaXNrIG11bHRpcGxlIHRpbWVzLlxuICpcbiAqIFNlcGFyYXRpbmcgdGhpcyBmcm9tIFR5cGVFbWl0dGVyIGtlZXBzIHRoZSB0cmFuc2Zvcm1lciBsb2dpYyByZWFkYWJsZSBhbmRcbiAqIGxldHMgdGhlIGNhY2hpbmcvcHJvZ3JhbS1jcmVhdGlvbiBjb25jZXJucyBsaXZlIGluIG9uZSBmb2N1c2VkIHBsYWNlLlxuICovXG5AVHJhY2VcbmV4cG9ydCBjbGFzcyBUc1Byb2dyYW1Ib3N0IHtcblx0I2ludmFsaWRhdGVkID0gbmV3IFNldDxzdHJpbmc+KCk7XG5cblx0cHVibGljIGludmFsaWRhdGVTb3VyY2VGaWxlKGZpbGVOYW1lOiBzdHJpbmcpOiB2b2lkIHtcblx0XHR0aGlzLiNpbnZhbGlkYXRlZC5hZGQoZmlsZU5hbWUpO1xuXHR9XG5cblx0cHVibGljIGhhc0ludmFsaWRhdGVkKCk6IGJvb2xlYW4ge1xuXHRcdHJldHVybiB0aGlzLiNpbnZhbGlkYXRlZC5zaXplID4gMDtcblx0fVxuXG5cdC8qKiBSZXR1cm5zIGEgc3RhYmxlIHN0cmluZyBrZXkgZm9yIGEgc2V0IG9mIGNvbXBpbGVyIG9wdGlvbnMgdGhhdCBhZmZlY3QgaG9zdCBiZWhhdmlvdXIuICovXG5cdHB1YmxpYyBob3N0S2V5KG9wdHM6IHRzLkNvbXBpbGVyT3B0aW9ucyk6IHN0cmluZyB7XG5cdFx0cmV0dXJuIEpTT04uc3RyaW5naWZ5KHtcblx0XHRcdHRhcmdldDogb3B0cy50YXJnZXQsXG5cdFx0XHRsaWI6IG9wdHMubGliLFxuXHRcdFx0dHlwZVJvb3RzOiBvcHRzLnR5cGVSb290cyxcblx0XHRcdHR5cGVzOiBvcHRzLnR5cGVzLFxuXHRcdFx0bW9kdWxlUmVzb2x1dGlvbjogb3B0cy5tb2R1bGVSZXNvbHV0aW9uLFxuXHRcdFx0YmFzZVVybDogb3B0cy5iYXNlVXJsLFxuXHRcdFx0cGF0aHM6IG9wdHMucGF0aHMsXG5cdFx0XHRtb2R1bGU6IG9wdHMubW9kdWxlLFxuXHRcdFx0cm9vdERpcjogb3B0cy5yb290RGlyLFxuXHRcdFx0cm9vdERpcnM6IG9wdHMucm9vdERpcnMsXG5cdFx0fSk7XG5cdH1cblxuXHRwdWJsaWMgY3JlYXRlSG9zdChjb21waWxlck9wdGlvbnM6IHRzLkNvbXBpbGVyT3B0aW9ucyk6IHRzLkNvbXBpbGVySG9zdCB7XG5cdFx0Y29uc3QgaG9zdCA9IGNyZWF0ZUNvbXBpbGVySG9zdChjb21waWxlck9wdGlvbnMpO1xuXHRcdGhvc3QuZmlsZUV4aXN0cyA9IChmaWxlTmFtZSkgPT4gdGhpcy5maWxlRXhpc3RzT25EaXNrKGZpbGVOYW1lKTtcblx0XHRob3N0LnJlYWRGaWxlID0gKGZpbGVOYW1lKSA9PiB0aGlzLnJlYWRGaWxlRnJvbURpc2soZmlsZU5hbWUpO1xuXHRcdGhvc3QuZGlyZWN0b3J5RXhpc3RzID0gKGRpcmVjdG9yeU5hbWUpID0+IHRoaXMuZGlyZWN0b3J5RXhpc3RzKGRpcmVjdG9yeU5hbWUpO1xuXHRcdGhvc3QuZ2V0RGlyZWN0b3JpZXMgPSAoZGlyZWN0b3J5TmFtZSkgPT4gdGhpcy5nZXREaXJlY3RvcmllcyhkaXJlY3RvcnlOYW1lKTtcblx0XHRyZXR1cm4gaG9zdDtcblx0fVxuXG5cdHB1YmxpYyBjcmVhdGVQcm9ncmFtKFxuXHRcdGZpbGVzOiBGaWxlRXhbXSxcblx0XHRjb21waWxlck9wdGlvbnM6IHRzLkNvbXBpbGVyT3B0aW9ucyxcblx0XHRob3N0OiB0cy5Db21waWxlckhvc3QsXG5cdFx0b2xkUHJvZ3JhbT86IHRzLlByb2dyYW0sXG5cdCk6IHRzLlByb2dyYW0ge1xuXHRcdGNvbnN0IGZpbGVQYXRocyA9IGZpbGVzLm1hcCgoZikgPT4gZi5mdWxsUGF0aCk7XG5cdFx0dGhpcy4jaW52YWxpZGF0ZWQuY2xlYXIoKTtcblx0XHRyZXR1cm4gY3JlYXRlUHJvZ3JhbShcblx0XHRcdGZpbGVQYXRocyxcblx0XHRcdHtcblx0XHRcdFx0Li4uREVGQVVMVF9UWVBFX0VNSVRURVJfT1BUSU9OUyxcblx0XHRcdFx0Li4uY29tcGlsZXJPcHRpb25zLFxuXHRcdFx0XHQuLi5SRVFVSVJFRF9UWVBFX0VNSVRURVJfT1BUSU9OUyxcblx0XHRcdH0sXG5cdFx0XHRob3N0LFxuXHRcdFx0b2xkUHJvZ3JhbSxcblx0XHQpO1xuXHR9XG5cblx0QGNhY2hlKHsgbmFtZTogXCJGSUxFX0NPTlRFTlRcIiwga2V5Rm46ICguLi5hcmdzKSA9PiBhcmdzWzBdIGFzIHN0cmluZyB9KVxuXHRwdWJsaWMgcmVhZEZpbGVGcm9tRGlzayhmaWxlTmFtZTogc3RyaW5nKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcblx0XHR0cnkge1xuXHRcdFx0cmV0dXJuIGZzLnJlYWRGaWxlU3luYyhmaWxlTmFtZSwgXCJ1dGY4XCIpO1xuXHRcdH0gY2F0Y2gge1xuXHRcdFx0cmV0dXJuIHVuZGVmaW5lZDtcblx0XHR9XG5cdH1cblxuXHRAY2FjaGUoKVxuXHRwdWJsaWMgZmlsZUV4aXN0c09uRGlzayhmaWxlTmFtZTogc3RyaW5nKTogYm9vbGVhbiB7XG5cdFx0cmV0dXJuIGZzLmV4aXN0c1N5bmMoZmlsZU5hbWUpO1xuXHR9XG5cblx0QGNhY2hlKClcblx0cHVibGljIGRpcmVjdG9yeUV4aXN0cyhkaXJlY3RvcnlOYW1lOiBzdHJpbmcpOiBib29sZWFuIHtcblx0XHR0cnkge1xuXHRcdFx0cmV0dXJuIGZzLnN0YXRTeW5jKGRpcmVjdG9yeU5hbWUpLmlzRGlyZWN0b3J5KCk7XG5cdFx0fSBjYXRjaCB7XG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0fVxuXHR9XG5cblx0QGNhY2hlKClcblx0cHVibGljIGdldERpcmVjdG9yaWVzKGRpcmVjdG9yeU5hbWU6IHN0cmluZyk6IHN0cmluZ1tdIHtcblx0XHR0cnkge1xuXHRcdFx0cmV0dXJuIGZzXG5cdFx0XHRcdC5yZWFkZGlyU3luYyhkaXJlY3RvcnlOYW1lLCB7IHdpdGhGaWxlVHlwZXM6IHRydWUgfSlcblx0XHRcdFx0LmZpbHRlcigoZW50cnkpID0+IGVudHJ5LmlzRGlyZWN0b3J5KCkpXG5cdFx0XHRcdC5tYXAoKGVudHJ5KSA9PiBlbnRyeS5uYW1lKTtcblx0XHR9IGNhdGNoIHtcblx0XHRcdHJldHVybiBbXTtcblx0XHR9XG5cdH1cbn1cbiJdLCJuYW1lcyI6WyJUc1Byb2dyYW1Ib3N0IiwiU2V0IiwiaW52YWxpZGF0ZVNvdXJjZUZpbGUiLCJmaWxlTmFtZSIsImFkZCIsImhhc0ludmFsaWRhdGVkIiwic2l6ZSIsImhvc3RLZXkiLCJvcHRzIiwiSlNPTiIsInN0cmluZ2lmeSIsInRhcmdldCIsImxpYiIsInR5cGVSb290cyIsInR5cGVzIiwibW9kdWxlUmVzb2x1dGlvbiIsImJhc2VVcmwiLCJwYXRocyIsIm1vZHVsZSIsInJvb3REaXIiLCJyb290RGlycyIsImNyZWF0ZUhvc3QiLCJjb21waWxlck9wdGlvbnMiLCJob3N0IiwiY3JlYXRlQ29tcGlsZXJIb3N0IiwiZmlsZUV4aXN0cyIsImZpbGVFeGlzdHNPbkRpc2siLCJyZWFkRmlsZSIsInJlYWRGaWxlRnJvbURpc2siLCJkaXJlY3RvcnlFeGlzdHMiLCJkaXJlY3RvcnlOYW1lIiwiZ2V0RGlyZWN0b3JpZXMiLCJjcmVhdGVQcm9ncmFtIiwiZmlsZXMiLCJvbGRQcm9ncmFtIiwiZmlsZVBhdGhzIiwibWFwIiwiZiIsImZ1bGxQYXRoIiwiY2xlYXIiLCJERUZBVUxUX1RZUEVfRU1JVFRFUl9PUFRJT05TIiwiUkVRVUlSRURfVFlQRV9FTUlUVEVSX09QVElPTlMiLCJmcyIsInJlYWRGaWxlU3luYyIsInVuZGVmaW5lZCIsImV4aXN0c1N5bmMiLCJzdGF0U3luYyIsImlzRGlyZWN0b3J5IiwicmVhZGRpclN5bmMiLCJ3aXRoRmlsZVR5cGVzIiwiZmlsdGVyIiwiZW50cnkiLCJuYW1lIiwia2V5Rm4iLCJhcmdzIl0sIm1hcHBpbmdzIjoiOzs7OytCQW1CYUE7OztlQUFBQTs7OytEQW5CRTt5QkFDTzs2QkFDQTs0QkFHNEI7NkJBSTNDOzs7Ozs7Ozs7Ozs7Ozs7QUFVQSxNQUFNQTtJQUNaLENBQUEsV0FBWSxHQUFHLElBQUlDLE1BQWM7SUFFMUJDLHFCQUFxQkMsUUFBZ0IsRUFBUTtRQUNuRCxJQUFJLENBQUMsQ0FBQSxXQUFZLENBQUNDLEdBQUcsQ0FBQ0Q7SUFDdkI7SUFFT0UsaUJBQTBCO1FBQ2hDLE9BQU8sSUFBSSxDQUFDLENBQUEsV0FBWSxDQUFDQyxJQUFJLEdBQUc7SUFDakM7SUFFQSwwRkFBMEYsR0FDMUYsQUFBT0MsUUFBUUMsSUFBd0IsRUFBVTtRQUNoRCxPQUFPQyxLQUFLQyxTQUFTLENBQUM7WUFDckJDLFFBQVFILEtBQUtHLE1BQU07WUFDbkJDLEtBQUtKLEtBQUtJLEdBQUc7WUFDYkMsV0FBV0wsS0FBS0ssU0FBUztZQUN6QkMsT0FBT04sS0FBS00sS0FBSztZQUNqQkMsa0JBQWtCUCxLQUFLTyxnQkFBZ0I7WUFDdkNDLFNBQVNSLEtBQUtRLE9BQU87WUFDckJDLE9BQU9ULEtBQUtTLEtBQUs7WUFDakJDLFFBQVFWLEtBQUtVLE1BQU07WUFDbkJDLFNBQVNYLEtBQUtXLE9BQU87WUFDckJDLFVBQVVaLEtBQUtZLFFBQVE7UUFDeEI7SUFDRDtJQUVPQyxXQUFXQyxlQUFtQyxFQUFtQjtRQUN2RSxNQUFNQyxPQUFPQyxJQUFBQSw4QkFBa0IsRUFBQ0Y7UUFDaENDLEtBQUtFLFVBQVUsR0FBRyxDQUFDdEIsV0FBYSxJQUFJLENBQUN1QixnQkFBZ0IsQ0FBQ3ZCO1FBQ3REb0IsS0FBS0ksUUFBUSxHQUFHLENBQUN4QixXQUFhLElBQUksQ0FBQ3lCLGdCQUFnQixDQUFDekI7UUFDcERvQixLQUFLTSxlQUFlLEdBQUcsQ0FBQ0MsZ0JBQWtCLElBQUksQ0FBQ0QsZUFBZSxDQUFDQztRQUMvRFAsS0FBS1EsY0FBYyxHQUFHLENBQUNELGdCQUFrQixJQUFJLENBQUNDLGNBQWMsQ0FBQ0Q7UUFDN0QsT0FBT1A7SUFDUjtJQUVPUyxjQUNOQyxLQUFlLEVBQ2ZYLGVBQW1DLEVBQ25DQyxJQUFxQixFQUNyQlcsVUFBdUIsRUFDVjtRQUNiLE1BQU1DLFlBQVlGLE1BQU1HLEdBQUcsQ0FBQyxDQUFDQyxJQUFNQSxFQUFFQyxRQUFRO1FBQzdDLElBQUksQ0FBQyxDQUFBLFdBQVksQ0FBQ0MsS0FBSztRQUN2QixPQUFPUCxJQUFBQSx5QkFBYSxFQUNuQkcsV0FDQTtZQUNDLEdBQUdLLHlDQUE0QjtZQUMvQixHQUFHbEIsZUFBZTtZQUNsQixHQUFHbUIsMENBQTZCO1FBQ2pDLEdBQ0FsQixNQUNBVztJQUVGO0lBR09OLGlCQUFpQnpCLFFBQWdCLEVBQXNCO1FBQzdELElBQUk7WUFDSCxPQUFPdUMsZUFBRSxDQUFDQyxZQUFZLENBQUN4QyxVQUFVO1FBQ2xDLEVBQUUsT0FBTTtZQUNQLE9BQU95QztRQUNSO0lBQ0Q7SUFHT2xCLGlCQUFpQnZCLFFBQWdCLEVBQVc7UUFDbEQsT0FBT3VDLGVBQUUsQ0FBQ0csVUFBVSxDQUFDMUM7SUFDdEI7SUFHTzBCLGdCQUFnQkMsYUFBcUIsRUFBVztRQUN0RCxJQUFJO1lBQ0gsT0FBT1ksZUFBRSxDQUFDSSxRQUFRLENBQUNoQixlQUFlaUIsV0FBVztRQUM5QyxFQUFFLE9BQU07WUFDUCxPQUFPO1FBQ1I7SUFDRDtJQUdPaEIsZUFBZUQsYUFBcUIsRUFBWTtRQUN0RCxJQUFJO1lBQ0gsT0FBT1ksZUFBRSxDQUNQTSxXQUFXLENBQUNsQixlQUFlO2dCQUFFbUIsZUFBZTtZQUFLLEdBQ2pEQyxNQUFNLENBQUMsQ0FBQ0MsUUFBVUEsTUFBTUosV0FBVyxJQUNuQ1gsR0FBRyxDQUFDLENBQUNlLFFBQVVBLE1BQU1DLElBQUk7UUFDNUIsRUFBRSxPQUFNO1lBQ1AsT0FBTyxFQUFFO1FBQ1Y7SUFDRDtBQUNEOzs7UUFsQ1VBLE1BQU07UUFBZ0JDLE9BQU8sQ0FBQyxHQUFHQyxPQUFTQSxJQUFJLENBQUMsRUFBRSJ9
135
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL2ZvcmdlL3NyYy9zZXJ2aWNlcy90cy1wcm9ncmFtLWhvc3QudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGZzIGZyb20gXCJub2RlOmZzXCI7XG5pbXBvcnQgeyBjYWNoZSB9IGZyb20gXCJAZGVjb2hlcmUvbmV4dXMvY2FjaGluZ1wiO1xuaW1wb3J0IHsgVHJhY2UgfSBmcm9tIFwiQGRlY29oZXJlL25leHVzL2RpYWdub3N0aWNzXCI7XG5pbXBvcnQgdHlwZSB7IEZpbGVFeCB9IGZyb20gXCJAZGVjb2hlcmUvbmV4dXMvaW9cIjtcbmltcG9ydCB0eXBlIHRzIGZyb20gXCJ0eXBlc2NyaXB0XCI7XG5pbXBvcnQgeyBjcmVhdGVDb21waWxlckhvc3QsIGNyZWF0ZVByb2dyYW0gfSBmcm9tIFwidHlwZXNjcmlwdFwiO1xuaW1wb3J0IHtcblx0REVGQVVMVF9UWVBFX0VNSVRURVJfT1BUSU9OUyxcblx0UkVRVUlSRURfVFlQRV9FTUlUVEVSX09QVElPTlMsXG59IGZyb20gXCIuLi9zZXJ2aWNlcy90eXBlLWVtaXR0ZXIuanNcIjtcblxuLyoqXG4gKiBXcmFwcyBhIFR5cGVTY3JpcHQgQ29tcGlsZXJIb3N0IHdpdGggY2FjaGVkIGZpbGUtc3lzdGVtIGNhbGxzIHNvIHRoYXRcbiAqIHJlcGVhdGVkIHJlYWRzIGR1cmluZyBhIHNpbmdsZSBidWlsZCBkbyBub3QgaGl0IHRoZSBkaXNrIG11bHRpcGxlIHRpbWVzLlxuICpcbiAqIFNlcGFyYXRpbmcgdGhpcyBmcm9tIFR5cGVFbWl0dGVyIGtlZXBzIHRoZSB0cmFuc2Zvcm1lciBsb2dpYyByZWFkYWJsZSBhbmRcbiAqIGxldHMgdGhlIGNhY2hpbmcvcHJvZ3JhbS1jcmVhdGlvbiBjb25jZXJucyBsaXZlIGluIG9uZSBmb2N1c2VkIHBsYWNlLlxuICovXG5AVHJhY2VcbmV4cG9ydCBjbGFzcyBUc1Byb2dyYW1Ib3N0IHtcblx0I2ludmFsaWRhdGVkID0gbmV3IFNldDxzdHJpbmc+KCk7XG5cblx0cHVibGljIGludmFsaWRhdGVTb3VyY2VGaWxlKGZpbGVOYW1lOiBzdHJpbmcpOiB2b2lkIHtcblx0XHR0aGlzLiNpbnZhbGlkYXRlZC5hZGQoZmlsZU5hbWUpO1xuXHR9XG5cblx0cHVibGljIGhhc0ludmFsaWRhdGVkKCk6IGJvb2xlYW4ge1xuXHRcdHJldHVybiB0aGlzLiNpbnZhbGlkYXRlZC5zaXplID4gMDtcblx0fVxuXG5cdC8qKiBSZXR1cm5zIGEgc3RhYmxlIHN0cmluZyBrZXkgZm9yIGEgc2V0IG9mIGNvbXBpbGVyIG9wdGlvbnMgdGhhdCBhZmZlY3QgaG9zdCBiZWhhdmlvdXIuICovXG5cdHB1YmxpYyBob3N0S2V5KG9wdHM6IHRzLkNvbXBpbGVyT3B0aW9ucyk6IHN0cmluZyB7XG5cdFx0cmV0dXJuIEpTT04uc3RyaW5naWZ5KHtcblx0XHRcdHRhcmdldDogb3B0cy50YXJnZXQsXG5cdFx0XHRsaWI6IG9wdHMubGliLFxuXHRcdFx0dHlwZVJvb3RzOiBvcHRzLnR5cGVSb290cyxcblx0XHRcdHR5cGVzOiBvcHRzLnR5cGVzLFxuXHRcdFx0bW9kdWxlUmVzb2x1dGlvbjogb3B0cy5tb2R1bGVSZXNvbHV0aW9uLFxuXHRcdFx0YmFzZVVybDogb3B0cy5iYXNlVXJsLFxuXHRcdFx0cGF0aHM6IG9wdHMucGF0aHMsXG5cdFx0XHRtb2R1bGU6IG9wdHMubW9kdWxlLFxuXHRcdFx0cm9vdERpcjogb3B0cy5yb290RGlyLFxuXHRcdFx0cm9vdERpcnM6IG9wdHMucm9vdERpcnMsXG5cdFx0fSk7XG5cdH1cblxuXHRwdWJsaWMgY3JlYXRlSG9zdChjb21waWxlck9wdGlvbnM6IHRzLkNvbXBpbGVyT3B0aW9ucyk6IHRzLkNvbXBpbGVySG9zdCB7XG5cdFx0Y29uc3QgaG9zdCA9IGNyZWF0ZUNvbXBpbGVySG9zdChjb21waWxlck9wdGlvbnMpO1xuXHRcdGhvc3QuZmlsZUV4aXN0cyA9IChmaWxlTmFtZSkgPT4gdGhpcy5maWxlRXhpc3RzT25EaXNrKGZpbGVOYW1lKTtcblx0XHRob3N0LnJlYWRGaWxlID0gKGZpbGVOYW1lKSA9PiB0aGlzLnJlYWRGaWxlRnJvbURpc2soZmlsZU5hbWUpO1xuXHRcdGhvc3QuZGlyZWN0b3J5RXhpc3RzID0gKGRpcmVjdG9yeU5hbWUpID0+IHRoaXMuZGlyZWN0b3J5RXhpc3RzKGRpcmVjdG9yeU5hbWUpO1xuXHRcdGhvc3QuZ2V0RGlyZWN0b3JpZXMgPSAoZGlyZWN0b3J5TmFtZSkgPT4gdGhpcy5nZXREaXJlY3RvcmllcyhkaXJlY3RvcnlOYW1lKTtcblx0XHRyZXR1cm4gaG9zdDtcblx0fVxuXG5cdHB1YmxpYyBjcmVhdGVQcm9ncmFtKFxuXHRcdGZpbGVzOiBGaWxlRXhbXSxcblx0XHRjb21waWxlck9wdGlvbnM6IHRzLkNvbXBpbGVyT3B0aW9ucyxcblx0XHRob3N0OiB0cy5Db21waWxlckhvc3QsXG5cdFx0b2xkUHJvZ3JhbT86IHRzLlByb2dyYW0sXG5cdFx0cmVxdWlyZWRPcHRpb25zOiB0cy5Db21waWxlck9wdGlvbnMgPSBSRVFVSVJFRF9UWVBFX0VNSVRURVJfT1BUSU9OUyxcblx0KTogdHMuUHJvZ3JhbSB7XG5cdFx0Y29uc3QgZmlsZVBhdGhzID0gZmlsZXMubWFwKChmKSA9PiBmLmZ1bGxQYXRoKTtcblx0XHR0aGlzLiNpbnZhbGlkYXRlZC5jbGVhcigpO1xuXHRcdHJldHVybiBjcmVhdGVQcm9ncmFtKFxuXHRcdFx0ZmlsZVBhdGhzLFxuXHRcdFx0e1xuXHRcdFx0XHQuLi5ERUZBVUxUX1RZUEVfRU1JVFRFUl9PUFRJT05TLFxuXHRcdFx0XHQuLi5jb21waWxlck9wdGlvbnMsXG5cdFx0XHRcdC4uLnJlcXVpcmVkT3B0aW9ucyxcblx0XHRcdH0sXG5cdFx0XHRob3N0LFxuXHRcdFx0b2xkUHJvZ3JhbSxcblx0XHQpO1xuXHR9XG5cblx0QGNhY2hlKHsgbmFtZTogXCJGSUxFX0NPTlRFTlRcIiwga2V5Rm46ICguLi5hcmdzKSA9PiBhcmdzWzBdIGFzIHN0cmluZyB9KVxuXHRwdWJsaWMgcmVhZEZpbGVGcm9tRGlzayhmaWxlTmFtZTogc3RyaW5nKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcblx0XHR0cnkge1xuXHRcdFx0cmV0dXJuIGZzLnJlYWRGaWxlU3luYyhmaWxlTmFtZSwgXCJ1dGY4XCIpO1xuXHRcdH0gY2F0Y2gge1xuXHRcdFx0cmV0dXJuIHVuZGVmaW5lZDtcblx0XHR9XG5cdH1cblxuXHRAY2FjaGUoKVxuXHRwdWJsaWMgZmlsZUV4aXN0c09uRGlzayhmaWxlTmFtZTogc3RyaW5nKTogYm9vbGVhbiB7XG5cdFx0cmV0dXJuIGZzLmV4aXN0c1N5bmMoZmlsZU5hbWUpO1xuXHR9XG5cblx0QGNhY2hlKClcblx0cHVibGljIGRpcmVjdG9yeUV4aXN0cyhkaXJlY3RvcnlOYW1lOiBzdHJpbmcpOiBib29sZWFuIHtcblx0XHR0cnkge1xuXHRcdFx0cmV0dXJuIGZzLnN0YXRTeW5jKGRpcmVjdG9yeU5hbWUpLmlzRGlyZWN0b3J5KCk7XG5cdFx0fSBjYXRjaCB7XG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0fVxuXHR9XG5cblx0QGNhY2hlKClcblx0cHVibGljIGdldERpcmVjdG9yaWVzKGRpcmVjdG9yeU5hbWU6IHN0cmluZyk6IHN0cmluZ1tdIHtcblx0XHR0cnkge1xuXHRcdFx0cmV0dXJuIGZzXG5cdFx0XHRcdC5yZWFkZGlyU3luYyhkaXJlY3RvcnlOYW1lLCB7IHdpdGhGaWxlVHlwZXM6IHRydWUgfSlcblx0XHRcdFx0LmZpbHRlcigoZW50cnkpID0+IGVudHJ5LmlzRGlyZWN0b3J5KCkpXG5cdFx0XHRcdC5tYXAoKGVudHJ5KSA9PiBlbnRyeS5uYW1lKTtcblx0XHR9IGNhdGNoIHtcblx0XHRcdHJldHVybiBbXTtcblx0XHR9XG5cdH1cbn1cbiJdLCJuYW1lcyI6WyJUc1Byb2dyYW1Ib3N0IiwiU2V0IiwiaW52YWxpZGF0ZVNvdXJjZUZpbGUiLCJmaWxlTmFtZSIsImFkZCIsImhhc0ludmFsaWRhdGVkIiwic2l6ZSIsImhvc3RLZXkiLCJvcHRzIiwiSlNPTiIsInN0cmluZ2lmeSIsInRhcmdldCIsImxpYiIsInR5cGVSb290cyIsInR5cGVzIiwibW9kdWxlUmVzb2x1dGlvbiIsImJhc2VVcmwiLCJwYXRocyIsIm1vZHVsZSIsInJvb3REaXIiLCJyb290RGlycyIsImNyZWF0ZUhvc3QiLCJjb21waWxlck9wdGlvbnMiLCJob3N0IiwiY3JlYXRlQ29tcGlsZXJIb3N0IiwiZmlsZUV4aXN0cyIsImZpbGVFeGlzdHNPbkRpc2siLCJyZWFkRmlsZSIsInJlYWRGaWxlRnJvbURpc2siLCJkaXJlY3RvcnlFeGlzdHMiLCJkaXJlY3RvcnlOYW1lIiwiZ2V0RGlyZWN0b3JpZXMiLCJjcmVhdGVQcm9ncmFtIiwiZmlsZXMiLCJvbGRQcm9ncmFtIiwicmVxdWlyZWRPcHRpb25zIiwiUkVRVUlSRURfVFlQRV9FTUlUVEVSX09QVElPTlMiLCJmaWxlUGF0aHMiLCJtYXAiLCJmIiwiZnVsbFBhdGgiLCJjbGVhciIsIkRFRkFVTFRfVFlQRV9FTUlUVEVSX09QVElPTlMiLCJmcyIsInJlYWRGaWxlU3luYyIsInVuZGVmaW5lZCIsImV4aXN0c1N5bmMiLCJzdGF0U3luYyIsImlzRGlyZWN0b3J5IiwicmVhZGRpclN5bmMiLCJ3aXRoRmlsZVR5cGVzIiwiZmlsdGVyIiwiZW50cnkiLCJuYW1lIiwia2V5Rm4iLCJhcmdzIl0sIm1hcHBpbmdzIjoiOzs7OytCQW1CYUE7OztlQUFBQTs7OytEQW5CRTt5QkFDTzs2QkFDQTs0QkFHNEI7NkJBSTNDOzs7Ozs7Ozs7Ozs7Ozs7QUFVQSxNQUFNQTtJQUNaLENBQUEsV0FBWSxHQUFHLElBQUlDLE1BQWM7SUFFMUJDLHFCQUFxQkMsUUFBZ0IsRUFBUTtRQUNuRCxJQUFJLENBQUMsQ0FBQSxXQUFZLENBQUNDLEdBQUcsQ0FBQ0Q7SUFDdkI7SUFFT0UsaUJBQTBCO1FBQ2hDLE9BQU8sSUFBSSxDQUFDLENBQUEsV0FBWSxDQUFDQyxJQUFJLEdBQUc7SUFDakM7SUFFQSwwRkFBMEYsR0FDMUYsQUFBT0MsUUFBUUMsSUFBd0IsRUFBVTtRQUNoRCxPQUFPQyxLQUFLQyxTQUFTLENBQUM7WUFDckJDLFFBQVFILEtBQUtHLE1BQU07WUFDbkJDLEtBQUtKLEtBQUtJLEdBQUc7WUFDYkMsV0FBV0wsS0FBS0ssU0FBUztZQUN6QkMsT0FBT04sS0FBS00sS0FBSztZQUNqQkMsa0JBQWtCUCxLQUFLTyxnQkFBZ0I7WUFDdkNDLFNBQVNSLEtBQUtRLE9BQU87WUFDckJDLE9BQU9ULEtBQUtTLEtBQUs7WUFDakJDLFFBQVFWLEtBQUtVLE1BQU07WUFDbkJDLFNBQVNYLEtBQUtXLE9BQU87WUFDckJDLFVBQVVaLEtBQUtZLFFBQVE7UUFDeEI7SUFDRDtJQUVPQyxXQUFXQyxlQUFtQyxFQUFtQjtRQUN2RSxNQUFNQyxPQUFPQyxJQUFBQSw4QkFBa0IsRUFBQ0Y7UUFDaENDLEtBQUtFLFVBQVUsR0FBRyxDQUFDdEIsV0FBYSxJQUFJLENBQUN1QixnQkFBZ0IsQ0FBQ3ZCO1FBQ3REb0IsS0FBS0ksUUFBUSxHQUFHLENBQUN4QixXQUFhLElBQUksQ0FBQ3lCLGdCQUFnQixDQUFDekI7UUFDcERvQixLQUFLTSxlQUFlLEdBQUcsQ0FBQ0MsZ0JBQWtCLElBQUksQ0FBQ0QsZUFBZSxDQUFDQztRQUMvRFAsS0FBS1EsY0FBYyxHQUFHLENBQUNELGdCQUFrQixJQUFJLENBQUNDLGNBQWMsQ0FBQ0Q7UUFDN0QsT0FBT1A7SUFDUjtJQUVPUyxjQUNOQyxLQUFlLEVBQ2ZYLGVBQW1DLEVBQ25DQyxJQUFxQixFQUNyQlcsVUFBdUIsRUFDdkJDLGtCQUFzQ0MsMENBQTZCLEVBQ3REO1FBQ2IsTUFBTUMsWUFBWUosTUFBTUssR0FBRyxDQUFDLENBQUNDLElBQU1BLEVBQUVDLFFBQVE7UUFDN0MsSUFBSSxDQUFDLENBQUEsV0FBWSxDQUFDQyxLQUFLO1FBQ3ZCLE9BQU9ULElBQUFBLHlCQUFhLEVBQ25CSyxXQUNBO1lBQ0MsR0FBR0sseUNBQTRCO1lBQy9CLEdBQUdwQixlQUFlO1lBQ2xCLEdBQUdhLGVBQWU7UUFDbkIsR0FDQVosTUFDQVc7SUFFRjtJQUdPTixpQkFBaUJ6QixRQUFnQixFQUFzQjtRQUM3RCxJQUFJO1lBQ0gsT0FBT3dDLGVBQUUsQ0FBQ0MsWUFBWSxDQUFDekMsVUFBVTtRQUNsQyxFQUFFLE9BQU07WUFDUCxPQUFPMEM7UUFDUjtJQUNEO0lBR09uQixpQkFBaUJ2QixRQUFnQixFQUFXO1FBQ2xELE9BQU93QyxlQUFFLENBQUNHLFVBQVUsQ0FBQzNDO0lBQ3RCO0lBR08wQixnQkFBZ0JDLGFBQXFCLEVBQVc7UUFDdEQsSUFBSTtZQUNILE9BQU9hLGVBQUUsQ0FBQ0ksUUFBUSxDQUFDakIsZUFBZWtCLFdBQVc7UUFDOUMsRUFBRSxPQUFNO1lBQ1AsT0FBTztRQUNSO0lBQ0Q7SUFHT2pCLGVBQWVELGFBQXFCLEVBQVk7UUFDdEQsSUFBSTtZQUNILE9BQU9hLGVBQUUsQ0FDUE0sV0FBVyxDQUFDbkIsZUFBZTtnQkFBRW9CLGVBQWU7WUFBSyxHQUNqREMsTUFBTSxDQUFDLENBQUNDLFFBQVVBLE1BQU1KLFdBQVcsSUFDbkNWLEdBQUcsQ0FBQyxDQUFDYyxRQUFVQSxNQUFNQyxJQUFJO1FBQzVCLEVBQUUsT0FBTTtZQUNQLE9BQU8sRUFBRTtRQUNWO0lBQ0Q7QUFDRDs7O1FBbENVQSxNQUFNO1FBQWdCQyxPQUFPLENBQUMsR0FBR0MsT0FBU0EsSUFBSSxDQUFDLEVBQUUifQ==
@@ -10,6 +10,7 @@ Object.defineProperty(exports, "TypeEmissionProgram", {
10
10
  });
11
11
  const _nodepath = /*#__PURE__*/ _interop_require_default(require("node:path"));
12
12
  const _diagnostics = require("@decohere/nexus/diagnostics");
13
+ const _typescript = /*#__PURE__*/ _interop_require_default(require("typescript"));
13
14
  const _transformresponsemodel = require("../types/transform-response.model.js");
14
15
  function _interop_require_default(obj) {
15
16
  return obj && obj.__esModule ? obj : {
@@ -34,16 +35,25 @@ class TypeEmissionProgram {
34
35
  #compilerHost;
35
36
  #allFiles;
36
37
  #compilerOptions;
37
- constructor(group, hostFactory){
38
+ #requiredOptions;
39
+ constructor(group, hostFactory, requiredOptions){
38
40
  this.#group = group;
39
41
  const targets = this.buildTargetMaps(group);
40
42
  this.#targetsByDtsPath = targets.byDtsPath;
41
43
  this.#targetsByEmittedPath = targets.byEmittedPath;
42
44
  this.#host = hostFactory;
43
45
  this.#compilerOptions = group[0].tsconfig.compilerOptions;
46
+ this.#requiredOptions = requiredOptions;
44
47
  this.#allFiles = group.flatMap(({ files })=>files);
45
48
  this.#compilerHost = hostFactory.createHost(this.#compilerOptions);
46
- this.#program = hostFactory.createProgram(this.#allFiles, this.#compilerOptions, this.#compilerHost);
49
+ this.#program = this.createProgram();
50
+ }
51
+ check() {
52
+ this.refreshProgramIfNeeded();
53
+ return _typescript.default.getPreEmitDiagnostics(this.#program);
54
+ }
55
+ formatDiagnostics(diagnostics) {
56
+ return _typescript.default.formatDiagnosticsWithColorAndContext(diagnostics, this.#compilerHost);
47
57
  }
48
58
  toEmissionTarget(groupProject, file, outBaseDir) {
49
59
  const extName = _nodepath.default.extname(file.relativePath);
@@ -89,14 +99,20 @@ class TypeEmissionProgram {
89
99
  this.#host.invalidateSourceFile(file.fullPath);
90
100
  }
91
101
  async emit(fileFilter, onOutput) {
92
- if (this.#host.hasInvalidated()) {
93
- this.#program = this.#host.createProgram(this.#allFiles, this.#compilerOptions, this.#compilerHost, this.#program);
94
- }
102
+ this.refreshProgramIfNeeded();
95
103
  if (fileFilter == null) {
96
104
  return this.emitAll(onOutput);
97
105
  }
98
106
  return this.emitFiltered(fileFilter, onOutput);
99
107
  }
108
+ createProgram(oldProgram) {
109
+ return this.#host.createProgram(this.#allFiles, this.#compilerOptions, this.#compilerHost, oldProgram, this.#requiredOptions);
110
+ }
111
+ refreshProgramIfNeeded() {
112
+ if (this.#host.hasInvalidated()) {
113
+ this.#program = this.createProgram(this.#program);
114
+ }
115
+ }
100
116
  emitAll(onOutput) {
101
117
  const responses = [];
102
118
  this.#program.emit(undefined, (emittedPath, content)=>{
@@ -153,8 +169,9 @@ TypeEmissionProgram = _ts_decorate([
153
169
  _ts_metadata("design:type", Function),
154
170
  _ts_metadata("design:paramtypes", [
155
171
  Array,
156
- typeof TsProgramHost === "undefined" ? Object : TsProgramHost
172
+ typeof TsProgramHost === "undefined" ? Object : TsProgramHost,
173
+ typeof _typescript.default === "undefined" || typeof _typescript.default.CompilerOptions === "undefined" ? Object : _typescript.default.CompilerOptions
157
174
  ])
158
175
  ], TypeEmissionProgram);
159
176
 
160
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL2ZvcmdlL3NyYy9zZXJ2aWNlcy90eXBlLWVtaXNzaW9uLXByb2dyYW0udHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHBhdGggZnJvbSBcIm5vZGU6cGF0aFwiO1xuaW1wb3J0IHR5cGUgeyBQcm9qZWN0LCBUc2NvbmZpZyB9IGZyb20gXCJAZGVjb2hlcmUvbWVzaFwiO1xuaW1wb3J0IHsgVHJhY2UgfSBmcm9tIFwiQGRlY29oZXJlL25leHVzL2RpYWdub3N0aWNzXCI7XG5pbXBvcnQgdHlwZSB7IEZpbGVFeCB9IGZyb20gXCJAZGVjb2hlcmUvbmV4dXMvaW9cIjtcbmltcG9ydCB0eXBlIHRzIGZyb20gXCJ0eXBlc2NyaXB0XCI7XG5pbXBvcnQgdHlwZSB7IFRzUHJvZ3JhbUhvc3QgfSBmcm9tIFwiLi4vc2VydmljZXMvdHMtcHJvZ3JhbS1ob3N0LmpzXCI7XG5pbXBvcnQgeyBUcmFuc2Zvcm1SZXNwb25zZSB9IGZyb20gXCIuLi90eXBlcy90cmFuc2Zvcm0tcmVzcG9uc2UubW9kZWwuanNcIjtcblxuZXhwb3J0IHR5cGUgVHlwZVByb2dyYW1Qcm9qZWN0ID0ge1xuXHRwcm9qZWN0OiBQcm9qZWN0O1xuXHRmaWxlczogRmlsZUV4W107XG5cdHRzY29uZmlnOiBUc2NvbmZpZztcbn07XG5cbnR5cGUgRW1pc3Npb25UYXJnZXQgPSB7XG5cdGZpbGU6IEZpbGVFeDtcblx0dHNjb25maWc6IFRzY29uZmlnO1xuXHRwcm9qZWN0OiBQcm9qZWN0O1xuXHRvdXRwdXRQYXRoOiBzdHJpbmc7XG5cdG91dHB1dERpcjogc3RyaW5nO1xuXHRkdHNSZWxhdGl2ZTogc3RyaW5nO1xufTtcblxuQFRyYWNlXG5leHBvcnQgY2xhc3MgVHlwZUVtaXNzaW9uUHJvZ3JhbSB7XG5cdCNwcm9ncmFtOiB0cy5Qcm9ncmFtO1xuXHQjZ3JvdXA6IFR5cGVQcm9ncmFtUHJvamVjdFtdO1xuXHQjdGFyZ2V0c0J5RHRzUGF0aDogTWFwPHN0cmluZywgRW1pc3Npb25UYXJnZXQ+O1xuXHQjdGFyZ2V0c0J5RW1pdHRlZFBhdGg6IE1hcDxzdHJpbmcsIEVtaXNzaW9uVGFyZ2V0Pjtcblx0I2hvc3Q6IFRzUHJvZ3JhbUhvc3Q7XG5cdCNjb21waWxlckhvc3Q6IHRzLkNvbXBpbGVySG9zdDtcblx0I2FsbEZpbGVzOiBGaWxlRXhbXTtcblx0I2NvbXBpbGVyT3B0aW9uczogdHMuQ29tcGlsZXJPcHRpb25zO1xuXG5cdHB1YmxpYyBjb25zdHJ1Y3Rvcihncm91cDogVHlwZVByb2dyYW1Qcm9qZWN0W10sIGhvc3RGYWN0b3J5OiBUc1Byb2dyYW1Ib3N0KSB7XG5cdFx0dGhpcy4jZ3JvdXAgPSBncm91cDtcblx0XHRjb25zdCB0YXJnZXRzID0gdGhpcy5idWlsZFRhcmdldE1hcHMoZ3JvdXApO1xuXHRcdHRoaXMuI3RhcmdldHNCeUR0c1BhdGggPSB0YXJnZXRzLmJ5RHRzUGF0aDtcblx0XHR0aGlzLiN0YXJnZXRzQnlFbWl0dGVkUGF0aCA9IHRhcmdldHMuYnlFbWl0dGVkUGF0aDtcblx0XHR0aGlzLiNob3N0ID0gaG9zdEZhY3Rvcnk7XG5cdFx0dGhpcy4jY29tcGlsZXJPcHRpb25zID0gZ3JvdXBbMF0udHNjb25maWcuY29tcGlsZXJPcHRpb25zO1xuXHRcdHRoaXMuI2FsbEZpbGVzID0gZ3JvdXAuZmxhdE1hcCgoeyBmaWxlcyB9KSA9PiBmaWxlcyk7XG5cdFx0dGhpcy4jY29tcGlsZXJIb3N0ID0gaG9zdEZhY3RvcnkuY3JlYXRlSG9zdCh0aGlzLiNjb21waWxlck9wdGlvbnMpO1xuXHRcdHRoaXMuI3Byb2dyYW0gPSBob3N0RmFjdG9yeS5jcmVhdGVQcm9ncmFtKFxuXHRcdFx0dGhpcy4jYWxsRmlsZXMsXG5cdFx0XHR0aGlzLiNjb21waWxlck9wdGlvbnMsXG5cdFx0XHR0aGlzLiNjb21waWxlckhvc3QsXG5cdFx0KTtcblx0fVxuXG5cdHByaXZhdGUgdG9FbWlzc2lvblRhcmdldChcblx0XHRncm91cFByb2plY3Q6IFR5cGVQcm9ncmFtUHJvamVjdCxcblx0XHRmaWxlOiBGaWxlRXgsXG5cdFx0b3V0QmFzZURpcjogc3RyaW5nLFxuXHQpOiBFbWlzc2lvblRhcmdldCB7XG5cdFx0Y29uc3QgZXh0TmFtZSA9IHBhdGguZXh0bmFtZShmaWxlLnJlbGF0aXZlUGF0aCk7XG5cdFx0Y29uc3QgZHRzUmVsYXRpdmUgPSBmaWxlLnJlbGF0aXZlUGF0aC5yZXBsYWNlKG5ldyBSZWdFeHAoYCR7ZXh0TmFtZX0kYCksIFwiLmQudHNcIik7XG5cdFx0Y29uc3Qgb3V0cHV0UGF0aCA9IHBhdGguam9pbihvdXRCYXNlRGlyLCBkdHNSZWxhdGl2ZSk7XG5cdFx0cmV0dXJuIHtcblx0XHRcdGZpbGUsXG5cdFx0XHR0c2NvbmZpZzogZ3JvdXBQcm9qZWN0LnRzY29uZmlnLFxuXHRcdFx0cHJvamVjdDogZ3JvdXBQcm9qZWN0LnByb2plY3QsXG5cdFx0XHRvdXRwdXRQYXRoLFxuXHRcdFx0b3V0cHV0RGlyOiBwYXRoLmRpcm5hbWUob3V0cHV0UGF0aCksXG5cdFx0XHRkdHNSZWxhdGl2ZSxcblx0XHR9O1xuXHR9XG5cblx0cHJpdmF0ZSBlbWl0dGVkS2V5KGZpbGU6IEZpbGVFeCk6IHN0cmluZyB7XG5cdFx0cmV0dXJuIGZpbGUuZnVsbFBhdGgucmVwbGFjZSgvXFwuW14uXSskLywgXCIuZC50c1wiKTtcblx0fVxuXG5cdHByaXZhdGUgYnVpbGRUYXJnZXRNYXBzKGdyb3VwOiBUeXBlUHJvZ3JhbVByb2plY3RbXSk6IHtcblx0XHRieUR0c1BhdGg6IE1hcDxzdHJpbmcsIEVtaXNzaW9uVGFyZ2V0Pjtcblx0XHRieUVtaXR0ZWRQYXRoOiBNYXA8c3RyaW5nLCBFbWlzc2lvblRhcmdldD47XG5cdH0ge1xuXHRcdGNvbnN0IGJ5RHRzUGF0aCA9IG5ldyBNYXA8c3RyaW5nLCBFbWlzc2lvblRhcmdldD4oKTtcblx0XHRjb25zdCBieUVtaXR0ZWRQYXRoID0gbmV3IE1hcDxzdHJpbmcsIEVtaXNzaW9uVGFyZ2V0PigpO1xuXG5cdFx0Zm9yIChjb25zdCBncm91cFByb2plY3Qgb2YgZ3JvdXApIHtcblx0XHRcdGNvbnN0IG91dEJhc2VEaXIgPSBncm91cFByb2plY3QucHJvamVjdC5nZXRPdXREaXIoXCJ0eXBlc1wiKTtcblx0XHRcdGZvciAoY29uc3QgZmlsZSBvZiBncm91cFByb2plY3QuZmlsZXMpIHtcblx0XHRcdFx0Y29uc3QgdGFyZ2V0ID0gdGhpcy50b0VtaXNzaW9uVGFyZ2V0KGdyb3VwUHJvamVjdCwgZmlsZSwgb3V0QmFzZURpcik7XG5cdFx0XHRcdGJ5RHRzUGF0aC5zZXQodGFyZ2V0LmR0c1JlbGF0aXZlLCB0YXJnZXQpO1xuXHRcdFx0XHRieUVtaXR0ZWRQYXRoLnNldCh0aGlzLmVtaXR0ZWRLZXkoZmlsZSksIHRhcmdldCk7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHsgYnlEdHNQYXRoLCBieUVtaXR0ZWRQYXRoIH07XG5cdH1cblxuXHRwdWJsaWMgYWRkRmlsZShmaWxlOiBGaWxlRXgsIHByb2plY3Q6IFByb2plY3QpOiB2b2lkIHtcblx0XHRjb25zdCBncm91cFByb2plY3QgPSB0aGlzLiNncm91cC5maW5kKChnKSA9PiBnLnByb2plY3QgPT09IHByb2plY3QpO1xuXHRcdGlmIChncm91cFByb2plY3QgPT0gbnVsbCkgcmV0dXJuO1xuXG5cdFx0Z3JvdXBQcm9qZWN0LmZpbGVzLnB1c2goZmlsZSk7XG5cdFx0dGhpcy4jYWxsRmlsZXMucHVzaChmaWxlKTtcblxuXHRcdGNvbnN0IG91dEJhc2VEaXIgPSBncm91cFByb2plY3QucHJvamVjdC5nZXRPdXREaXIoXCJ0eXBlc1wiKTtcblx0XHRjb25zdCB0YXJnZXQgPSB0aGlzLnRvRW1pc3Npb25UYXJnZXQoZ3JvdXBQcm9qZWN0LCBmaWxlLCBvdXRCYXNlRGlyKTtcblx0XHR0aGlzLiN0YXJnZXRzQnlEdHNQYXRoLnNldCh0YXJnZXQuZHRzUmVsYXRpdmUsIHRhcmdldCk7XG5cdFx0dGhpcy4jdGFyZ2V0c0J5RW1pdHRlZFBhdGguc2V0KHRoaXMuZW1pdHRlZEtleShmaWxlKSwgdGFyZ2V0KTtcblx0XHR0aGlzLiNob3N0LmludmFsaWRhdGVTb3VyY2VGaWxlKGZpbGUuZnVsbFBhdGgpO1xuXHR9XG5cblx0cHVibGljIGFzeW5jIGVtaXQoXG5cdFx0ZmlsZUZpbHRlcj86IChwcm9qZWN0OiBQcm9qZWN0KSA9PiBQcm9taXNlPEZpbGVFeFtdPixcblx0XHRvbk91dHB1dD86IChyZXNwb25zZTogVHJhbnNmb3JtUmVzcG9uc2UpID0+IHZvaWQsXG5cdCk6IFByb21pc2U8VHJhbnNmb3JtUmVzcG9uc2VbXT4ge1xuXHRcdGlmICh0aGlzLiNob3N0Lmhhc0ludmFsaWRhdGVkKCkpIHtcblx0XHRcdHRoaXMuI3Byb2dyYW0gPSB0aGlzLiNob3N0LmNyZWF0ZVByb2dyYW0oXG5cdFx0XHRcdHRoaXMuI2FsbEZpbGVzLFxuXHRcdFx0XHR0aGlzLiNjb21waWxlck9wdGlvbnMsXG5cdFx0XHRcdHRoaXMuI2NvbXBpbGVySG9zdCxcblx0XHRcdFx0dGhpcy4jcHJvZ3JhbSxcblx0XHRcdCk7XG5cdFx0fVxuXHRcdGlmIChmaWxlRmlsdGVyID09IG51bGwpIHtcblx0XHRcdHJldHVybiB0aGlzLmVtaXRBbGwob25PdXRwdXQpO1xuXHRcdH1cblx0XHRyZXR1cm4gdGhpcy5lbWl0RmlsdGVyZWQoZmlsZUZpbHRlciwgb25PdXRwdXQpO1xuXHR9XG5cblx0cHJpdmF0ZSBlbWl0QWxsKG9uT3V0cHV0PzogKHJlc3BvbnNlOiBUcmFuc2Zvcm1SZXNwb25zZSkgPT4gdm9pZCk6IFRyYW5zZm9ybVJlc3BvbnNlW10ge1xuXHRcdGNvbnN0IHJlc3BvbnNlczogVHJhbnNmb3JtUmVzcG9uc2VbXSA9IFtdO1xuXHRcdHRoaXMuI3Byb2dyYW0uZW1pdCh1bmRlZmluZWQsIChlbWl0dGVkUGF0aCwgY29udGVudCkgPT4ge1xuXHRcdFx0aWYgKCFlbWl0dGVkUGF0aC5lbmRzV2l0aChcIi5kLnRzXCIpKSB7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblx0XHRcdGNvbnN0IHJlc3BvbnNlID0gdGhpcy50b1RyYW5zZm9ybVJlc3BvbnNlKGVtaXR0ZWRQYXRoLCBjb250ZW50KTtcblx0XHRcdHJlc3BvbnNlcy5wdXNoKHJlc3BvbnNlKTtcblx0XHRcdG9uT3V0cHV0Py4ocmVzcG9uc2UpO1xuXHRcdH0pO1xuXHRcdHJldHVybiByZXNwb25zZXM7XG5cdH1cblxuXHRwcml2YXRlIGFzeW5jIGVtaXRGaWx0ZXJlZChcblx0XHRmaWxlRmlsdGVyOiAocHJvamVjdDogUHJvamVjdCkgPT4gUHJvbWlzZTxGaWxlRXhbXT4sXG5cdFx0b25PdXRwdXQ/OiAocmVzcG9uc2U6IFRyYW5zZm9ybVJlc3BvbnNlKSA9PiB2b2lkLFxuXHQpOiBQcm9taXNlPFRyYW5zZm9ybVJlc3BvbnNlW10+IHtcblx0XHRjb25zdCBmaWxlcyA9IGF3YWl0IFByb21pc2UuYWxsKHRoaXMuI2dyb3VwLm1hcCgoeyBwcm9qZWN0IH0pID0+IGZpbGVGaWx0ZXIocHJvamVjdCkpKTtcblx0XHRjb25zdCBzb3VyY2VGaWxlcyA9IGZpbGVzXG5cdFx0XHQuZmxhdCgpXG5cdFx0XHQubWFwKChmaWxlKSA9PiB0aGlzLiNwcm9ncmFtLmdldFNvdXJjZUZpbGUoZmlsZS5mdWxsUGF0aCkpXG5cdFx0XHQuZmlsdGVyKChzZik6IHNmIGlzIHRzLlNvdXJjZUZpbGUgPT4gc2YgIT0gbnVsbCk7XG5cblx0XHRjb25zdCByZXNwb25zZXM6IFRyYW5zZm9ybVJlc3BvbnNlW10gPSBbXTtcblxuXHRcdGZvciAoY29uc3Qgc291cmNlRmlsZSBvZiBzb3VyY2VGaWxlcykge1xuXHRcdFx0dGhpcy4jcHJvZ3JhbS5lbWl0KHNvdXJjZUZpbGUsIChlbWl0dGVkUGF0aCwgY29udGVudCkgPT4ge1xuXHRcdFx0XHRpZiAoIWVtaXR0ZWRQYXRoLmVuZHNXaXRoKFwiLmQudHNcIikpIHtcblx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdH1cblx0XHRcdFx0Y29uc3QgcmVzcG9uc2UgPSB0aGlzLnRvVHJhbnNmb3JtUmVzcG9uc2UoZW1pdHRlZFBhdGgsIGNvbnRlbnQpO1xuXHRcdFx0XHRyZXNwb25zZXMucHVzaChyZXNwb25zZSk7XG5cdFx0XHRcdG9uT3V0cHV0Py4ocmVzcG9uc2UpO1xuXHRcdFx0fSk7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHJlc3BvbnNlcztcblx0fVxuXG5cdHByaXZhdGUgdG9UcmFuc2Zvcm1SZXNwb25zZShlbWl0dGVkUGF0aDogc3RyaW5nLCBjb250ZW50OiBzdHJpbmcpOiBUcmFuc2Zvcm1SZXNwb25zZSB7XG5cdFx0Y29uc3QgdGFyZ2V0ID0gdGhpcy4jdGFyZ2V0c0J5RW1pdHRlZFBhdGguZ2V0KGVtaXR0ZWRQYXRoKTtcblx0XHRpZiAodGFyZ2V0ID09IG51bGwpIHtcblx0XHRcdHRocm93IG5ldyBFcnJvcihgTm8gbWF0Y2hpbmcgZW1pc3Npb24gdGFyZ2V0IGZvcjogJHtlbWl0dGVkUGF0aH1gKTtcblx0XHR9XG5cdFx0cmV0dXJuIHRoaXMudG9UcmFuc2Zvcm1SZXNwb25zZUZyb21UYXJnZXQodGFyZ2V0LCBjb250ZW50KTtcblx0fVxuXG5cdHByaXZhdGUgdG9UcmFuc2Zvcm1SZXNwb25zZUZyb21UYXJnZXQoXG5cdFx0dGFyZ2V0OiBFbWlzc2lvblRhcmdldCxcblx0XHRjb250ZW50OiBzdHJpbmcsXG5cdCk6IFRyYW5zZm9ybVJlc3BvbnNlIHtcblx0XHRjb25zdCB7IGZpbGUsIHRzY29uZmlnLCBwcm9qZWN0LCBvdXRwdXRQYXRoLCBvdXRwdXREaXIsIGR0c1JlbGF0aXZlIH0gPSB0YXJnZXQ7XG5cdFx0cmV0dXJuIFRyYW5zZm9ybVJlc3BvbnNlLmZyb20oe1xuXHRcdFx0ZmlsZSxcblx0XHRcdGNvbmZpZzogdHNjb25maWcsXG5cdFx0XHRvdXRjb21lOiBcInN1Y2Nlc3NcIixcblx0XHRcdGZpbGVOYW1lOiBkdHNSZWxhdGl2ZSxcblx0XHRcdGNvZGU6IGNvbnRlbnQsXG5cdFx0XHR0YXJnZXQ6IFwidHlwZXNcIixcblx0XHRcdG1lc3NhZ2VzOiBbXSxcblx0XHRcdHByb2plY3QsXG5cdFx0XHRvdXRwdXREaXIsXG5cdFx0XHRvdXRwdXRQYXRoLFxuXHRcdH0pO1xuXHR9XG59XG4iXSwibmFtZXMiOlsiVHlwZUVtaXNzaW9uUHJvZ3JhbSIsImdyb3VwIiwiaG9zdEZhY3RvcnkiLCJ0YXJnZXRzIiwiYnVpbGRUYXJnZXRNYXBzIiwiYnlEdHNQYXRoIiwiYnlFbWl0dGVkUGF0aCIsInRzY29uZmlnIiwiY29tcGlsZXJPcHRpb25zIiwiZmxhdE1hcCIsImZpbGVzIiwiY3JlYXRlSG9zdCIsImNyZWF0ZVByb2dyYW0iLCJ0b0VtaXNzaW9uVGFyZ2V0IiwiZ3JvdXBQcm9qZWN0IiwiZmlsZSIsIm91dEJhc2VEaXIiLCJleHROYW1lIiwicGF0aCIsImV4dG5hbWUiLCJyZWxhdGl2ZVBhdGgiLCJkdHNSZWxhdGl2ZSIsInJlcGxhY2UiLCJSZWdFeHAiLCJvdXRwdXRQYXRoIiwiam9pbiIsInByb2plY3QiLCJvdXRwdXREaXIiLCJkaXJuYW1lIiwiZW1pdHRlZEtleSIsImZ1bGxQYXRoIiwiTWFwIiwiZ2V0T3V0RGlyIiwidGFyZ2V0Iiwic2V0IiwiYWRkRmlsZSIsImZpbmQiLCJnIiwicHVzaCIsImludmFsaWRhdGVTb3VyY2VGaWxlIiwiZW1pdCIsImZpbGVGaWx0ZXIiLCJvbk91dHB1dCIsImhhc0ludmFsaWRhdGVkIiwiZW1pdEFsbCIsImVtaXRGaWx0ZXJlZCIsInJlc3BvbnNlcyIsInVuZGVmaW5lZCIsImVtaXR0ZWRQYXRoIiwiY29udGVudCIsImVuZHNXaXRoIiwicmVzcG9uc2UiLCJ0b1RyYW5zZm9ybVJlc3BvbnNlIiwiUHJvbWlzZSIsImFsbCIsIm1hcCIsInNvdXJjZUZpbGVzIiwiZmxhdCIsImdldFNvdXJjZUZpbGUiLCJmaWx0ZXIiLCJzZiIsInNvdXJjZUZpbGUiLCJnZXQiLCJFcnJvciIsInRvVHJhbnNmb3JtUmVzcG9uc2VGcm9tVGFyZ2V0IiwiVHJhbnNmb3JtUmVzcG9uc2UiLCJmcm9tIiwiY29uZmlnIiwib3V0Y29tZSIsImZpbGVOYW1lIiwiY29kZSIsIm1lc3NhZ2VzIl0sIm1h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
177
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL2ZvcmdlL3NyYy9zZXJ2aWNlcy90eXBlLWVtaXNzaW9uLXByb2dyYW0udHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHBhdGggZnJvbSBcIm5vZGU6cGF0aFwiO1xuaW1wb3J0IHR5cGUgeyBQcm9qZWN0LCBUc2NvbmZpZyB9IGZyb20gXCJAZGVjb2hlcmUvbWVzaFwiO1xuaW1wb3J0IHsgVHJhY2UgfSBmcm9tIFwiQGRlY29oZXJlL25leHVzL2RpYWdub3N0aWNzXCI7XG5pbXBvcnQgdHlwZSB7IEZpbGVFeCB9IGZyb20gXCJAZGVjb2hlcmUvbmV4dXMvaW9cIjtcbmltcG9ydCB0cyBmcm9tIFwidHlwZXNjcmlwdFwiO1xuaW1wb3J0IHR5cGUgeyBUc1Byb2dyYW1Ib3N0IH0gZnJvbSBcIi4uL3NlcnZpY2VzL3RzLXByb2dyYW0taG9zdC5qc1wiO1xuaW1wb3J0IHsgVHJhbnNmb3JtUmVzcG9uc2UgfSBmcm9tIFwiLi4vdHlwZXMvdHJhbnNmb3JtLXJlc3BvbnNlLm1vZGVsLmpzXCI7XG5cbmV4cG9ydCB0eXBlIFR5cGVQcm9ncmFtUHJvamVjdCA9IHtcblx0cHJvamVjdDogUHJvamVjdDtcblx0ZmlsZXM6IEZpbGVFeFtdO1xuXHR0c2NvbmZpZzogVHNjb25maWc7XG59O1xuXG50eXBlIEVtaXNzaW9uVGFyZ2V0ID0ge1xuXHRmaWxlOiBGaWxlRXg7XG5cdHRzY29uZmlnOiBUc2NvbmZpZztcblx0cHJvamVjdDogUHJvamVjdDtcblx0b3V0cHV0UGF0aDogc3RyaW5nO1xuXHRvdXRwdXREaXI6IHN0cmluZztcblx0ZHRzUmVsYXRpdmU6IHN0cmluZztcbn07XG5cbkBUcmFjZVxuZXhwb3J0IGNsYXNzIFR5cGVFbWlzc2lvblByb2dyYW0ge1xuXHQjcHJvZ3JhbTogdHMuUHJvZ3JhbTtcblx0I2dyb3VwOiBUeXBlUHJvZ3JhbVByb2plY3RbXTtcblx0I3RhcmdldHNCeUR0c1BhdGg6IE1hcDxzdHJpbmcsIEVtaXNzaW9uVGFyZ2V0Pjtcblx0I3RhcmdldHNCeUVtaXR0ZWRQYXRoOiBNYXA8c3RyaW5nLCBFbWlzc2lvblRhcmdldD47XG5cdCNob3N0OiBUc1Byb2dyYW1Ib3N0O1xuXHQjY29tcGlsZXJIb3N0OiB0cy5Db21waWxlckhvc3Q7XG5cdCNhbGxGaWxlczogRmlsZUV4W107XG5cdCNjb21waWxlck9wdGlvbnM6IHRzLkNvbXBpbGVyT3B0aW9ucztcblx0I3JlcXVpcmVkT3B0aW9uczogdHMuQ29tcGlsZXJPcHRpb25zO1xuXG5cdHB1YmxpYyBjb25zdHJ1Y3Rvcihcblx0XHRncm91cDogVHlwZVByb2dyYW1Qcm9qZWN0W10sXG5cdFx0aG9zdEZhY3Rvcnk6IFRzUHJvZ3JhbUhvc3QsXG5cdFx0cmVxdWlyZWRPcHRpb25zOiB0cy5Db21waWxlck9wdGlvbnMsXG5cdCkge1xuXHRcdHRoaXMuI2dyb3VwID0gZ3JvdXA7XG5cdFx0Y29uc3QgdGFyZ2V0cyA9IHRoaXMuYnVpbGRUYXJnZXRNYXBzKGdyb3VwKTtcblx0XHR0aGlzLiN0YXJnZXRzQnlEdHNQYXRoID0gdGFyZ2V0cy5ieUR0c1BhdGg7XG5cdFx0dGhpcy4jdGFyZ2V0c0J5RW1pdHRlZFBhdGggPSB0YXJnZXRzLmJ5RW1pdHRlZFBhdGg7XG5cdFx0dGhpcy4jaG9zdCA9IGhvc3RGYWN0b3J5O1xuXHRcdHRoaXMuI2NvbXBpbGVyT3B0aW9ucyA9IGdyb3VwWzBdLnRzY29uZmlnLmNvbXBpbGVyT3B0aW9ucztcblx0XHR0aGlzLiNyZXF1aXJlZE9wdGlvbnMgPSByZXF1aXJlZE9wdGlvbnM7XG5cdFx0dGhpcy4jYWxsRmlsZXMgPSBncm91cC5mbGF0TWFwKCh7IGZpbGVzIH0pID0+IGZpbGVzKTtcblx0XHR0aGlzLiNjb21waWxlckhvc3QgPSBob3N0RmFjdG9yeS5jcmVhdGVIb3N0KHRoaXMuI2NvbXBpbGVyT3B0aW9ucyk7XG5cdFx0dGhpcy4jcHJvZ3JhbSA9IHRoaXMuY3JlYXRlUHJvZ3JhbSgpO1xuXHR9XG5cblx0cHVibGljIGNoZWNrKCk6IHJlYWRvbmx5IHRzLkRpYWdub3N0aWNbXSB7XG5cdFx0dGhpcy5yZWZyZXNoUHJvZ3JhbUlmTmVlZGVkKCk7XG5cdFx0cmV0dXJuIHRzLmdldFByZUVtaXREaWFnbm9zdGljcyh0aGlzLiNwcm9ncmFtKTtcblx0fVxuXG5cdHB1YmxpYyBmb3JtYXREaWFnbm9zdGljcyhkaWFnbm9zdGljczogcmVhZG9ubHkgdHMuRGlhZ25vc3RpY1tdKTogc3RyaW5nIHtcblx0XHRyZXR1cm4gdHMuZm9ybWF0RGlhZ25vc3RpY3NXaXRoQ29sb3JBbmRDb250ZXh0KGRpYWdub3N0aWNzLCB0aGlzLiNjb21waWxlckhvc3QpO1xuXHR9XG5cblx0cHJpdmF0ZSB0b0VtaXNzaW9uVGFyZ2V0KFxuXHRcdGdyb3VwUHJvamVjdDogVHlwZVByb2dyYW1Qcm9qZWN0LFxuXHRcdGZpbGU6IEZpbGVFeCxcblx0XHRvdXRCYXNlRGlyOiBzdHJpbmcsXG5cdCk6IEVtaXNzaW9uVGFyZ2V0IHtcblx0XHRjb25zdCBleHROYW1lID0gcGF0aC5leHRuYW1lKGZpbGUucmVsYXRpdmVQYXRoKTtcblx0XHRjb25zdCBkdHNSZWxhdGl2ZSA9IGZpbGUucmVsYXRpdmVQYXRoLnJlcGxhY2UobmV3IFJlZ0V4cChgJHtleHROYW1lfSRgKSwgXCIuZC50c1wiKTtcblx0XHRjb25zdCBvdXRwdXRQYXRoID0gcGF0aC5qb2luKG91dEJhc2VEaXIsIGR0c1JlbGF0aXZlKTtcblx0XHRyZXR1cm4ge1xuXHRcdFx0ZmlsZSxcblx0XHRcdHRzY29uZmlnOiBncm91cFByb2plY3QudHNjb25maWcsXG5cdFx0XHRwcm9qZWN0OiBncm91cFByb2plY3QucHJvamVjdCxcblx0XHRcdG91dHB1dFBhdGgsXG5cdFx0XHRvdXRwdXREaXI6IHBhdGguZGlybmFtZShvdXRwdXRQYXRoKSxcblx0XHRcdGR0c1JlbGF0aXZlLFxuXHRcdH07XG5cdH1cblxuXHRwcml2YXRlIGVtaXR0ZWRLZXkoZmlsZTogRmlsZUV4KTogc3RyaW5nIHtcblx0XHRyZXR1cm4gZmlsZS5mdWxsUGF0aC5yZXBsYWNlKC9cXC5bXi5dKyQvLCBcIi5kLnRzXCIpO1xuXHR9XG5cblx0cHJpdmF0ZSBidWlsZFRhcmdldE1hcHMoZ3JvdXA6IFR5cGVQcm9ncmFtUHJvamVjdFtdKToge1xuXHRcdGJ5RHRzUGF0aDogTWFwPHN0cmluZywgRW1pc3Npb25UYXJnZXQ+O1xuXHRcdGJ5RW1pdHRlZFBhdGg6IE1hcDxzdHJpbmcsIEVtaXNzaW9uVGFyZ2V0Pjtcblx0fSB7XG5cdFx0Y29uc3QgYnlEdHNQYXRoID0gbmV3IE1hcDxzdHJpbmcsIEVtaXNzaW9uVGFyZ2V0PigpO1xuXHRcdGNvbnN0IGJ5RW1pdHRlZFBhdGggPSBuZXcgTWFwPHN0cmluZywgRW1pc3Npb25UYXJnZXQ+KCk7XG5cblx0XHRmb3IgKGNvbnN0IGdyb3VwUHJvamVjdCBvZiBncm91cCkge1xuXHRcdFx0Y29uc3Qgb3V0QmFzZURpciA9IGdyb3VwUHJvamVjdC5wcm9qZWN0LmdldE91dERpcihcInR5cGVzXCIpO1xuXHRcdFx0Zm9yIChjb25zdCBmaWxlIG9mIGdyb3VwUHJvamVjdC5maWxlcykge1xuXHRcdFx0XHRjb25zdCB0YXJnZXQgPSB0aGlzLnRvRW1pc3Npb25UYXJnZXQoZ3JvdXBQcm9qZWN0LCBmaWxlLCBvdXRCYXNlRGlyKTtcblx0XHRcdFx0YnlEdHNQYXRoLnNldCh0YXJnZXQuZHRzUmVsYXRpdmUsIHRhcmdldCk7XG5cdFx0XHRcdGJ5RW1pdHRlZFBhdGguc2V0KHRoaXMuZW1pdHRlZEtleShmaWxlKSwgdGFyZ2V0KTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHRyZXR1cm4geyBieUR0c1BhdGgsIGJ5RW1pdHRlZFBhdGggfTtcblx0fVxuXG5cdHB1YmxpYyBhZGRGaWxlKGZpbGU6IEZpbGVFeCwgcHJvamVjdDogUHJvamVjdCk6IHZvaWQge1xuXHRcdGNvbnN0IGdyb3VwUHJvamVjdCA9IHRoaXMuI2dyb3VwLmZpbmQoKGcpID0+IGcucHJvamVjdCA9PT0gcHJvamVjdCk7XG5cdFx0aWYgKGdyb3VwUHJvamVjdCA9PSBudWxsKSByZXR1cm47XG5cblx0XHRncm91cFByb2plY3QuZmlsZXMucHVzaChmaWxlKTtcblx0XHR0aGlzLiNhbGxGaWxlcy5wdXNoKGZpbGUpO1xuXG5cdFx0Y29uc3Qgb3V0QmFzZURpciA9IGdyb3VwUHJvamVjdC5wcm9qZWN0LmdldE91dERpcihcInR5cGVzXCIpO1xuXHRcdGNvbnN0IHRhcmdldCA9IHRoaXMudG9FbWlzc2lvblRhcmdldChncm91cFByb2plY3QsIGZpbGUsIG91dEJhc2VEaXIpO1xuXHRcdHRoaXMuI3RhcmdldHNCeUR0c1BhdGguc2V0KHRhcmdldC5kdHNSZWxhdGl2ZSwgdGFyZ2V0KTtcblx0XHR0aGlzLiN0YXJnZXRzQnlFbWl0dGVkUGF0aC5zZXQodGhpcy5lbWl0dGVkS2V5KGZpbGUpLCB0YXJnZXQpO1xuXHRcdHRoaXMuI2hvc3QuaW52YWxpZGF0ZVNvdXJjZUZpbGUoZmlsZS5mdWxsUGF0aCk7XG5cdH1cblxuXHRwdWJsaWMgYXN5bmMgZW1pdChcblx0XHRmaWxlRmlsdGVyPzogKHByb2plY3Q6IFByb2plY3QpID0+IFByb21pc2U8RmlsZUV4W10+LFxuXHRcdG9uT3V0cHV0PzogKHJlc3BvbnNlOiBUcmFuc2Zvcm1SZXNwb25zZSkgPT4gdm9pZCxcblx0KTogUHJvbWlzZTxUcmFuc2Zvcm1SZXNwb25zZVtdPiB7XG5cdFx0dGhpcy5yZWZyZXNoUHJvZ3JhbUlmTmVlZGVkKCk7XG5cdFx0aWYgKGZpbGVGaWx0ZXIgPT0gbnVsbCkge1xuXHRcdFx0cmV0dXJuIHRoaXMuZW1pdEFsbChvbk91dHB1dCk7XG5cdFx0fVxuXHRcdHJldHVybiB0aGlzLmVtaXRGaWx0ZXJlZChmaWxlRmlsdGVyLCBvbk91dHB1dCk7XG5cdH1cblxuXHRwcml2YXRlIGNyZWF0ZVByb2dyYW0ob2xkUHJvZ3JhbT86IHRzLlByb2dyYW0pOiB0cy5Qcm9ncmFtIHtcblx0XHRyZXR1cm4gdGhpcy4jaG9zdC5jcmVhdGVQcm9ncmFtKFxuXHRcdFx0dGhpcy4jYWxsRmlsZXMsXG5cdFx0XHR0aGlzLiNjb21waWxlck9wdGlvbnMsXG5cdFx0XHR0aGlzLiNjb21waWxlckhvc3QsXG5cdFx0XHRvbGRQcm9ncmFtLFxuXHRcdFx0dGhpcy4jcmVxdWlyZWRPcHRpb25zLFxuXHRcdCk7XG5cdH1cblxuXHRwcml2YXRlIHJlZnJlc2hQcm9ncmFtSWZOZWVkZWQoKTogdm9pZCB7XG5cdFx0aWYgKHRoaXMuI2hvc3QuaGFzSW52YWxpZGF0ZWQoKSkge1xuXHRcdFx0dGhpcy4jcHJvZ3JhbSA9IHRoaXMuY3JlYXRlUHJvZ3JhbSh0aGlzLiNwcm9ncmFtKTtcblx0XHR9XG5cdH1cblxuXHRwcml2YXRlIGVtaXRBbGwob25PdXRwdXQ/OiAocmVzcG9uc2U6IFRyYW5zZm9ybVJlc3BvbnNlKSA9PiB2b2lkKTogVHJhbnNmb3JtUmVzcG9uc2VbXSB7XG5cdFx0Y29uc3QgcmVzcG9uc2VzOiBUcmFuc2Zvcm1SZXNwb25zZVtdID0gW107XG5cdFx0dGhpcy4jcHJvZ3JhbS5lbWl0KHVuZGVmaW5lZCwgKGVtaXR0ZWRQYXRoLCBjb250ZW50KSA9PiB7XG5cdFx0XHRpZiAoIWVtaXR0ZWRQYXRoLmVuZHNXaXRoKFwiLmQudHNcIikpIHtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXHRcdFx0Y29uc3QgcmVzcG9uc2UgPSB0aGlzLnRvVHJhbnNmb3JtUmVzcG9uc2UoZW1pdHRlZFBhdGgsIGNvbnRlbnQpO1xuXHRcdFx0cmVzcG9uc2VzLnB1c2gocmVzcG9uc2UpO1xuXHRcdFx0b25PdXRwdXQ/LihyZXNwb25zZSk7XG5cdFx0fSk7XG5cdFx0cmV0dXJuIHJlc3BvbnNlcztcblx0fVxuXG5cdHByaXZhdGUgYXN5bmMgZW1pdEZpbHRlcmVkKFxuXHRcdGZpbGVGaWx0ZXI6IChwcm9qZWN0OiBQcm9qZWN0KSA9PiBQcm9taXNlPEZpbGVFeFtdPixcblx0XHRvbk91dHB1dD86IChyZXNwb25zZTogVHJhbnNmb3JtUmVzcG9uc2UpID0+IHZvaWQsXG5cdCk6IFByb21pc2U8VHJhbnNmb3JtUmVzcG9uc2VbXT4ge1xuXHRcdGNvbnN0IGZpbGVzID0gYXdhaXQgUHJvbWlzZS5hbGwodGhpcy4jZ3JvdXAubWFwKCh7IHByb2plY3QgfSkgPT4gZmlsZUZpbHRlcihwcm9qZWN0KSkpO1xuXHRcdGNvbnN0IHNvdXJjZUZpbGVzID0gZmlsZXNcblx0XHRcdC5mbGF0KClcblx0XHRcdC5tYXAoKGZpbGUpID0+IHRoaXMuI3Byb2dyYW0uZ2V0U291cmNlRmlsZShmaWxlLmZ1bGxQYXRoKSlcblx0XHRcdC5maWx0ZXIoKHNmKTogc2YgaXMgdHMuU291cmNlRmlsZSA9PiBzZiAhPSBudWxsKTtcblxuXHRcdGNvbnN0IHJlc3BvbnNlczogVHJhbnNmb3JtUmVzcG9uc2VbXSA9IFtdO1xuXG5cdFx0Zm9yIChjb25zdCBzb3VyY2VGaWxlIG9mIHNvdXJjZUZpbGVzKSB7XG5cdFx0XHR0aGlzLiNwcm9ncmFtLmVtaXQoc291cmNlRmlsZSwgKGVtaXR0ZWRQYXRoLCBjb250ZW50KSA9PiB7XG5cdFx0XHRcdGlmICghZW1pdHRlZFBhdGguZW5kc1dpdGgoXCIuZC50c1wiKSkge1xuXHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0fVxuXHRcdFx0XHRjb25zdCByZXNwb25zZSA9IHRoaXMudG9UcmFuc2Zvcm1SZXNwb25zZShlbWl0dGVkUGF0aCwgY29udGVudCk7XG5cdFx0XHRcdHJlc3BvbnNlcy5wdXNoKHJlc3BvbnNlKTtcblx0XHRcdFx0b25PdXRwdXQ/LihyZXNwb25zZSk7XG5cdFx0XHR9KTtcblx0XHR9XG5cblx0XHRyZXR1cm4gcmVzcG9uc2VzO1xuXHR9XG5cblx0cHJpdmF0ZSB0b1RyYW5zZm9ybVJlc3BvbnNlKGVtaXR0ZWRQYXRoOiBzdHJpbmcsIGNvbnRlbnQ6IHN0cmluZyk6IFRyYW5zZm9ybVJlc3BvbnNlIHtcblx0XHRjb25zdCB0YXJnZXQgPSB0aGlzLiN0YXJnZXRzQnlFbWl0dGVkUGF0aC5nZXQoZW1pdHRlZFBhdGgpO1xuXHRcdGlmICh0YXJnZXQgPT0gbnVsbCkge1xuXHRcdFx0dGhyb3cgbmV3IEVycm9yKGBObyBtYXRjaGluZyBlbWlzc2lvbiB0YXJnZXQgZm9yOiAke2VtaXR0ZWRQYXRofWApO1xuXHRcdH1cblx0XHRyZXR1cm4gdGhpcy50b1RyYW5zZm9ybVJlc3BvbnNlRnJvbVRhcmdldCh0YXJnZXQsIGNvbnRlbnQpO1xuXHR9XG5cblx0cHJpdmF0ZSB0b1RyYW5zZm9ybVJlc3BvbnNlRnJvbVRhcmdldChcblx0XHR0YXJnZXQ6IEVtaXNzaW9uVGFyZ2V0LFxuXHRcdGNvbnRlbnQ6IHN0cmluZyxcblx0KTogVHJhbnNmb3JtUmVzcG9uc2Uge1xuXHRcdGNvbnN0IHsgZmlsZSwgdHNjb25maWcsIHByb2plY3QsIG91dHB1dFBhdGgsIG91dHB1dERpciwgZHRzUmVsYXRpdmUgfSA9IHRhcmdldDtcblx0XHRyZXR1cm4gVHJhbnNmb3JtUmVzcG9uc2UuZnJvbSh7XG5cdFx0XHRmaWxlLFxuXHRcdFx0Y29uZmlnOiB0c2NvbmZpZyxcblx0XHRcdG91dGNvbWU6IFwic3VjY2Vzc1wiLFxuXHRcdFx0ZmlsZU5hbWU6IGR0c1JlbGF0aXZlLFxuXHRcdFx0Y29kZTogY29udGVudCxcblx0XHRcdHRhcmdldDogXCJ0eXBlc1wiLFxuXHRcdFx0bWVzc2FnZXM6IFtdLFxuXHRcdFx0cHJvamVjdCxcblx0XHRcdG91dHB1dERpcixcblx0XHRcdG91dHB1dFBhdGgsXG5cdFx0fSk7XG5cdH1cbn1cbiJdLCJuYW1lcyI6WyJUeXBlRW1pc3Npb25Qcm9ncmFtIiwiZ3JvdXAiLCJob3N0RmFjdG9yeSIsInJlcXVpcmVkT3B0aW9ucyIsInRhcmdldHMiLCJidWlsZFRhcmdldE1hcHMiLCJieUR0c1BhdGgiLCJieUVtaXR0ZWRQYXRoIiwidHNjb25maWciLCJjb21waWxlck9wdGlvbnMiLCJmbGF0TWFwIiwiZmlsZXMiLCJjcmVhdGVIb3N0IiwiY3JlYXRlUHJvZ3JhbSIsImNoZWNrIiwicmVmcmVzaFByb2dyYW1JZk5lZWRlZCIsInRzIiwiZ2V0UHJlRW1pdERpYWdub3N0aWNzIiwiZm9ybWF0RGlhZ25vc3RpY3MiLCJkaWFnbm9zdGljcyIsImZvcm1hdERpYWdub3N0aWNzV2l0aENvbG9yQW5kQ29udGV4dCIsInRvRW1pc3Npb25UYXJnZXQiLCJncm91cFByb2plY3QiLCJmaWxlIiwib3V0QmFzZURpciIsImV4dE5hbWUiLCJwYXRoIiwiZXh0bmFtZSIsInJlbGF0aXZlUGF0aCIsImR0c1JlbGF0aXZlIiwicmVwbGFjZSIsIlJlZ0V4cCIsIm91dHB1dFBhdGgiLCJqb2luIiwicHJvamVjdCIsIm91dHB1dERpciIsImRpcm5hbWUiLCJlbWl0dGVkS2V5IiwiZnVsbFBhdGgiLCJNYXAiLCJnZXRPdXREaXIiLCJ0YXJnZXQiLCJzZXQiLCJhZGRGaWxlIiwiZmluZCIsImciLCJwdXNoIiwiaW52YWxpZGF0ZVNvdXJjZUZpbGUiLCJlbWl0IiwiZmlsZUZpbHRlciIsIm9uT3V0cHV0IiwiZW1pdEFsbCIsImVtaXRGaWx0ZXJlZCIsIm9sZFByb2dyYW0iLCJoYXNJbnZhbGlkYXRlZCIsInJlc3BvbnNlcyIsInVuZGVmaW5lZCIsImVtaXR0ZWRQYXRoIiwiY29udGVudCIsImVuZHNXaXRoIiwicmVzcG9uc2UiLCJ0b1RyYW5zZm9ybVJlc3BvbnNlIiwiUHJvbWlzZSIsImFsbCIsIm1hcCIsInNvdXJjZUZpbGVzIiwiZmxhdCIsImdldFNvdXJjZUZpbGUiLCJmaWx0ZXIiLCJzZiIsInNvdXJjZUZpbGUiLCJnZXQiLCJFcnJvciIsInRvVHJhbnNmb3JtUmVzcG9uc2VGcm9tVGFyZ2V0IiwiVHJhbnNmb3JtUmVzcG9uc2UiLCJmcm9tIiwiY29uZmlnIiwib3V0Y29tZSIsImZpbGVOYW1lIiwiY29kZSIsIm1lc3NhZ2VzIl0sIm1hcHBpbmdzIjoiOzs7OytCQXdCYUE7OztlQUFBQTs7O2lFQXhCSTs2QkFFSzttRUFFUDt3Q0FFbUI7Ozs7Ozs7Ozs7Ozs7OztBQWtCM0IsTUFBTUE7SUFDWixDQUFBLE9BQVEsQ0FBYTtJQUNyQixDQUFBLEtBQU0sQ0FBdUI7SUFDN0IsQ0FBQSxnQkFBaUIsQ0FBOEI7SUFD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
@@ -12,6 +12,9 @@ _export(exports, {
12
12
  get DEFAULT_TYPE_EMITTER_OPTIONS () {
13
13
  return DEFAULT_TYPE_EMITTER_OPTIONS;
14
14
  },
15
+ get REQUIRED_TYPE_CHECK_OPTIONS () {
16
+ return REQUIRED_TYPE_CHECK_OPTIONS;
17
+ },
15
18
  get REQUIRED_TYPE_EMITTER_OPTIONS () {
16
19
  return REQUIRED_TYPE_EMITTER_OPTIONS;
17
20
  },
@@ -49,6 +52,9 @@ const REQUIRED_TYPE_EMITTER_OPTIONS = {
49
52
  emitDeclarationOnly: true,
50
53
  declaration: true
51
54
  };
55
+ const REQUIRED_TYPE_CHECK_OPTIONS = {
56
+ noEmit: true
57
+ };
52
58
  class TypeEmitter extends (0, _extensibility.mixwith)(_cachesoutputsmixin.CachesOutputs, _incrementaltransformmixin.IncrementalTransform) {
53
59
  buildTargets = [
54
60
  _buildtargettype.BuildTargets.types
@@ -76,11 +82,34 @@ class TypeEmitter extends (0, _extensibility.mixwith)(_cachesoutputsmixin.Caches
76
82
  this.cacheOutputs(responses);
77
83
  return responses;
78
84
  }
79
- async preparePrograms(projectArrayLike) {
85
+ /**
86
+ * Type-check projects without emitting files. Includes every Mesh project, not
87
+ * only those with a `types` build target (debug is es6-only).
88
+ */ async checkProject(projectArrayLike) {
89
+ const programs = await this.preparePrograms(projectArrayLike, {
90
+ includeAllProjects: true,
91
+ requiredCompilerOptions: REQUIRED_TYPE_CHECK_OPTIONS
92
+ });
93
+ const diagnostics = [];
94
+ const formattedParts = [];
95
+ for (const program of programs){
96
+ const programDiagnostics = program.check();
97
+ if (programDiagnostics.length === 0) {
98
+ continue;
99
+ }
100
+ diagnostics.push(...programDiagnostics);
101
+ formattedParts.push(program.formatDiagnostics(programDiagnostics));
102
+ }
103
+ return {
104
+ diagnostics,
105
+ formatted: formattedParts.join("")
106
+ };
107
+ }
108
+ async preparePrograms(projectArrayLike, options = {}) {
80
109
  const allProjects = Array.isArray(projectArrayLike) ? projectArrayLike : [
81
110
  projectArrayLike
82
111
  ];
83
- const projects = allProjects.filter((proj)=>proj.getForgeConfiguration().targets.includes(_buildtargettype.BuildTargets.types));
112
+ const projects = options.includeAllProjects ? allProjects : allProjects.filter((proj)=>proj.getForgeConfiguration().targets.includes(_buildtargettype.BuildTargets.types));
84
113
  if (projects.length === 0) {
85
114
  return [];
86
115
  }
@@ -96,9 +125,10 @@ class TypeEmitter extends (0, _extensibility.mixwith)(_cachesoutputsmixin.Caches
96
125
  // files are compiled together, matching v1's single-program approach which
97
126
  // avoids re-parsing lib/node_modules .d.ts files per project.
98
127
  const groups = Map.groupBy(projectData, ({ tsconfig })=>this.#host.hostKey(tsconfig.compilerOptions));
128
+ const requiredCompilerOptions = options.requiredCompilerOptions ?? REQUIRED_TYPE_EMITTER_OPTIONS;
99
129
  return [
100
130
  ...groups.values()
101
- ].map((group)=>new _typeemissionprogram.TypeEmissionProgram(group, this.#host));
131
+ ].map((group)=>new _typeemissionprogram.TypeEmissionProgram(group, this.#host, requiredCompilerOptions));
102
132
  }
103
133
  async onIncrementalFileEvent(evt) {
104
134
  const { file, project } = evt;
@@ -138,4 +168,4 @@ TypeEmitter = _ts_decorate([
138
168
  _diagnostics.Trace
139
169
  ], TypeEmitter);
140
170
 
141
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL2ZvcmdlL3NyYy9zZXJ2aWNlcy90eXBlLWVtaXR0ZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBQcm9qZWN0LCBQcm9qZWN0RmlsZUV2ZW50IH0gZnJvbSBcIkBkZWNvaGVyZS9tZXNoXCI7XG5pbXBvcnQgeyBpbnZhbGlkYXRlQ2FjaGUgfSBmcm9tIFwiQGRlY29oZXJlL25leHVzL2NhY2hpbmdcIjtcbmltcG9ydCB7IFRyYWNlIH0gZnJvbSBcIkBkZWNvaGVyZS9uZXh1cy9kaWFnbm9zdGljc1wiO1xuaW1wb3J0IHsgbWl4d2l0aCB9IGZyb20gXCJAZGVjb2hlcmUvbmV4dXMvZXh0ZW5zaWJpbGl0eVwiO1xuaW1wb3J0IHR5cGUgeyBGaWxlRXggfSBmcm9tIFwiQGRlY29oZXJlL25leHVzL2lvXCI7XG5pbXBvcnQgeyBpbyB9IGZyb20gXCJAZGVjb2hlcmUvbmV4dXMvaW9cIjtcbmltcG9ydCB0eXBlIHRzIGZyb20gXCJ0eXBlc2NyaXB0XCI7XG5pbXBvcnQgXCIuLi9leHRlbnNpb25zL3Byb2plY3QuZXh0ZW5zaW9ucy5qc1wiO1xuaW1wb3J0IHsgQ2FjaGVzT3V0cHV0cyB9IGZyb20gXCIuLi9taXhpbnMvY2FjaGVzLW91dHB1dHMubWl4aW4uanNcIjtcbmltcG9ydCB7IEluY3JlbWVudGFsVHJhbnNmb3JtIH0gZnJvbSBcIi4uL21peGlucy9pbmNyZW1lbnRhbC10cmFuc2Zvcm0ubWl4aW4uanNcIjtcbmltcG9ydCB7IFRzUHJvZ3JhbUhvc3QgfSBmcm9tIFwiLi4vc2VydmljZXMvdHMtcHJvZ3JhbS1ob3N0LmpzXCI7XG5pbXBvcnQge1xuXHRUeXBlRW1pc3Npb25Qcm9ncmFtLFxuXHR0eXBlIFR5cGVQcm9ncmFtUHJvamVjdCxcbn0gZnJvbSBcIi4uL3NlcnZpY2VzL3R5cGUtZW1pc3Npb24tcHJvZ3JhbS5qc1wiO1xuaW1wb3J0IHsgdHlwZSBCdWlsZFRhcmdldCwgQnVpbGRUYXJnZXRzIH0gZnJvbSBcIi4uL3R5cGVzL2J1aWxkLXRhcmdldC50eXBlLmpzXCI7XG5pbXBvcnQgdHlwZSB7IFRyYW5zZm9ybVJlc3BvbnNlIH0gZnJvbSBcIi4uL3R5cGVzL3RyYW5zZm9ybS1yZXNwb25zZS5tb2RlbC5qc1wiO1xuaW1wb3J0IHR5cGUgeyBUcmFuc2Zvcm1lciB9IGZyb20gXCIuLi90eXBlcy90cmFuc2Zvcm1lci50eXBlLmpzXCI7XG5cbi8qKlxuICogQ29tcGlsZXIgb3B0aW9uIGRlZmF1bHRzIGFwcGxpZWQgYmVmb3JlIHRoZSB1c2VyJ3MgdHNjb25maWcg4oCUIHRoZSB1c2VyJ3MgdmFsdWVzIG92ZXJyaWRlIHRoZXNlLlxuICpcbiAqIGxpYjogRVMyMDIyIOKAlCBhdm9pZHMgbG9hZGluZyBsaWIuZG9tLmQudHMgKDEuOCBNQikgd2hpY2ggVFMgaW5jbHVkZXMgYnkgZGVmYXVsdFxuICogd2hlbiBubyBgbGliYCBpcyBzZXQuIEJhY2tlbmQgcGFja2FnZXMgaGF2ZSBubyB1c2UgZm9yIGJyb3dzZXIgQVBJcy5cbiAqXG4gKiB0eXBlczogW10g4oCUIGRpc2FibGVzIGFtYmllbnQgQHR5cGVzIGF1dG8tZGlzY292ZXJ5LiBXaXRob3V0IHRoaXMsIFRTIHNjYW5zXG4gKiBldmVyeSBAdHlwZXMvKiBwYWNrYWdlIGluIHRoZSBub2RlX21vZHVsZXMgaGllcmFyY2h5OyBpbiBhIG1vbm9yZXBvIHRoYXQgY2FuXG4gKiBwdWxsIGluIGRvemVucyBvZiB1bnJlbGF0ZWQgcGFja2FnZXMuIEV4cGxpY2l0bHkgaW1wb3J0ZWQgdHlwZXMgc3RpbGwgcmVzb2x2ZVxuICogbm9ybWFsbHk7IG9ubHkgYW1iaWVudCBnbG9iYWxzIChlLmcuIEJ1ZmZlciwgcHJvY2VzcykgYXJlIHN1cHByZXNzZWQg4oCUIGFkZFxuICogYHR5cGVzOiBbXCJub2RlXCJdYCB0byBhIHByb2plY3QncyB0c2NvbmZpZyB0byByZXN0b3JlIHRoZW0uXG4gKi9cbmV4cG9ydCBjb25zdCBERUZBVUxUX1RZUEVfRU1JVFRFUl9PUFRJT05TOiBSZWFkb25seTx0cy5Db21waWxlck9wdGlvbnM+ID0ge1xuXHRsaWI6IFtcImxpYi5lczIwMjIuZC50c1wiXSxcblx0dHlwZXM6IFtdLFxuXHRza2lwTGliQ2hlY2s6IHRydWUsXG59O1xuXG4vKipcbiAqIENvbXBpbGVyIG9wdGlvbnMgdGhhdCBUeXBlRW1pdHRlciBhbHdheXMgZW5mb3JjZXMgcmVnYXJkbGVzcyBvZiB3aGF0IHRoZSB1c2VyJ3NcbiAqIHRzY29uZmlnIHNwZWNpZmllcy4gQXBwbGllZCBhZnRlciB0aGUgdXNlciBzcHJlYWQgc28gdGhleSBjYW5ub3QgYmUgb3ZlcnJpZGRlbi5cbiAqL1xuZXhwb3J0IGNvbnN0IFJFUVVJUkVEX1RZUEVfRU1JVFRFUl9PUFRJT05TOiBSZWFkb25seTx0cy5Db21waWxlck9wdGlvbnM+ID0ge1xuXHRlbWl0RGVjbGFyYXRpb25Pbmx5OiB0cnVlLFxuXHRkZWNsYXJhdGlvbjogdHJ1ZSxcbn07XG5cbkBUcmFjZVxuZXhwb3J0IGNsYXNzIFR5cGVFbWl0dGVyXG5cdGV4dGVuZHMgbWl4d2l0aChDYWNoZXNPdXRwdXRzLCBJbmNyZW1lbnRhbFRyYW5zZm9ybSlcblx0aW1wbGVtZW50cyBUcmFuc2Zvcm1lclxue1xuXHRwdWJsaWMgYnVpbGRUYXJnZXRzOiBCdWlsZFRhcmdldFtdID0gW0J1aWxkVGFyZ2V0cy50eXBlc107XG5cdC8qKiBQcmVwYXJlZCBwcm9ncmFtcyBmcm9tIGluaXQoKSwgY29uc3VtZWQgb25jZSBieSB0aGUgbmV4dCB0cmFuc2Zvcm1Qcm9qZWN0KCkgY2FsbC4gKi9cblx0I3Byb2dyYW1zOiBUeXBlRW1pc3Npb25Qcm9ncmFtW10gfCB1bmRlZmluZWQ7XG5cdCNob3N0ID0gbmV3IFRzUHJvZ3JhbUhvc3QoKTtcblxuXHQvKipcblx0ICogUGhhc2UgMTogZmV0Y2ggZmlsZXMsIGNyZWF0ZSBUeXBlU2NyaXB0IHByb2dyYW1zIHNlcXVlbnRpYWxseS5cblx0ICogQ2FsbGVkIGJlZm9yZSB0cmFuc2Zvcm1Qcm9qZWN0KCkgc28gdGhhdCB0aGUgaGVhdnkgY3JlYXRlUHJvZ3JhbSB3b3JrXG5cdCAqIGNvbXBsZXRlcyBiZWZvcmUgb3RoZXIgdHJhbnNmb3JtZXJzIChTV0MvUmF5b24pIHN0YXJ0IHJ1bm5pbmcgaW4gcGFyYWxsZWwuXG5cdCAqL1xuXHRwdWJsaWMgYXN5bmMgaW5pdChcblx0XHRwcm9qZWN0QXJyYXlMaWtlOiBQcm9qZWN0W10gfCBQcm9qZWN0LFxuXHRcdF9maWx0ZXI/OiAocHJvamVjdDogUHJvamVjdCkgPT4gUHJvbWlzZTxGaWxlRXhbXT4sXG5cdCk6IFByb21pc2U8dm9pZD4ge1xuXHRcdGlmICh0aGlzLiNwcm9ncmFtcyA9PSBudWxsKSB7XG5cdFx0XHR0aGlzLiNwcm9ncmFtcyA9IGF3YWl0IHRoaXMucHJlcGFyZVByb2dyYW1zKHByb2plY3RBcnJheUxpa2UpO1xuXHRcdH1cblx0fVxuXG5cdHB1YmxpYyBhc3luYyB0cmFuc2Zvcm1Qcm9qZWN0KFxuXHRcdHByb2plY3RBcnJheUxpa2U6IFByb2plY3RbXSB8IFByb2plY3QsXG5cdFx0ZmlsdGVyPzogKHByb2plY3Q6IFByb2plY3QpID0+IFByb21pc2U8RmlsZUV4W10+LFxuXHRcdG9uT3V0cHV0PzogKHJlc3BvbnNlOiBUcmFuc2Zvcm1SZXNwb25zZSkgPT4gdm9pZCxcblx0KTogUHJvbWlzZTxUcmFuc2Zvcm1SZXNwb25zZVtdPiB7XG5cdFx0Ly8gQ29uc3VtZSBwcmVwYXJlZCBzdGF0ZSBmcm9tIGluaXQoKSBpZiBhdmFpbGFibGU7IG90aGVyd2lzZSBkbyBmdWxsIHNldHVwXG5cdFx0Ly8gKGUuZy4gd2F0Y2gtbW9kZSBzaW5nbGUtZmlsZSByZWJ1aWxkcyB0aGF0IHNraXAgdGhlIGluaXQgcGhhc2UpLlxuXHRcdGNvbnN0IHByb2dyYW1zID0gdGhpcy4jcHJvZ3JhbXMgPz8gKGF3YWl0IHRoaXMucHJlcGFyZVByb2dyYW1zKHByb2plY3RBcnJheUxpa2UpKTtcblx0XHR0aGlzLiNwcm9ncmFtcyA9IHByb2dyYW1zO1xuXG5cdFx0aWYgKHByb2dyYW1zLmxlbmd0aCA9PT0gMCkge1xuXHRcdFx0cmV0dXJuIFtdO1xuXHRcdH1cblxuXHRcdGNvbnN0IHJlc3BvbnNlcyA9IChcblx0XHRcdGF3YWl0IFByb21pc2UuYWxsKHByb2dyYW1zLm1hcCgocHJvZ3JhbSkgPT4gcHJvZ3JhbS5lbWl0KGZpbHRlciwgb25PdXRwdXQpKSlcblx0XHQpLmZsYXQoKTtcblx0XHR0aGlzLmNhY2hlT3V0cHV0cyhyZXNwb25zZXMpO1xuXHRcdHJldHVybiByZXNwb25zZXM7XG5cdH1cblxuXHRwcml2YXRlIGFzeW5jIHByZXBhcmVQcm9ncmFtcyhcblx0XHRwcm9qZWN0QXJyYXlMaWtlOiBQcm9qZWN0W10gfCBQcm9qZWN0LFxuXHQpOiBQcm9taXNlPFR5cGVFbWlzc2lvblByb2dyYW1bXT4ge1xuXHRcdGNvbnN0IGFsbFByb2plY3RzID0gQXJyYXkuaXNBcnJheShwcm9qZWN0QXJyYXlMaWtlKVxuXHRcdFx0PyBwcm9qZWN0QXJyYXlMaWtlXG5cdFx0XHQ6IFtwcm9qZWN0QXJyYXlMaWtlXTtcblx0XHRjb25zdCBwcm9qZWN0cyA9IGFsbFByb2plY3RzLmZpbHRlcigocHJvaikgPT5cblx0XHRcdHByb2ouZ2V0Rm9yZ2VDb25maWd1cmF0aW9uKCkudGFyZ2V0cy5pbmNsdWRlcyhCdWlsZFRhcmdldHMudHlwZXMpLFxuXHRcdCk7XG5cdFx0aWYgKHByb2plY3RzLmxlbmd0aCA9PT0gMCkge1xuXHRcdFx0cmV0dXJuIFtdO1xuXHRcdH1cblxuXHRcdC8vIFByZS1mZXRjaCBhbGwgZmlsZXMgYW5kIHRzY29uZmlncyBpbiBwYXJhbGxlbCBhY3Jvc3MgYWxsIHByb2plY3RzXG5cdFx0Y29uc3QgcHJvamVjdERhdGE6IFR5cGVQcm9ncmFtUHJvamVjdFtdID0gYXdhaXQgUHJvbWlzZS5hbGwoXG5cdFx0XHRwcm9qZWN0cy5tYXAoYXN5bmMgKHByb2opID0+ICh7XG5cdFx0XHRcdHByb2plY3Q6IHByb2osXG5cdFx0XHRcdGZpbGVzOiBhd2FpdCBwcm9qLmdldEFsbEZpbGVzKCksXG5cdFx0XHRcdHRzY29uZmlnOiBhd2FpdCBwcm9qLmdldFRzQ29uZmlnKCksXG5cdFx0XHR9KSksXG5cdFx0KTtcblxuXHRcdC8vIEdyb3VwIHByb2plY3RzIGJ5IHRoZSByZXNvbHZlZCBjb21waWxlciBvcHRpb25zIHRoYXQgYWZmZWN0IHRoZSBjb21waWxlclxuXHRcdC8vIGhvc3QgKGxpYiBsb2FkaW5nLCBtb2R1bGUgcmVzb2x1dGlvbiwgcGF0aCBhbGlhc2VzKS4gUHJvamVjdHMgc2hhcmluZyB0aGVcblx0XHQvLyBzYW1lIHJlc29sdmVkIHZhbHVlcyBnZXQgb25lIHNoYXJlZCBob3N0IEFORCBvbmUgc2hhcmVkIHByb2dyYW0g4oCUIGFsbCB0aGVpclxuXHRcdC8vIGZpbGVzIGFyZSBjb21waWxlZCB0b2dldGhlciwgbWF0Y2hpbmcgdjEncyBzaW5nbGUtcHJvZ3JhbSBhcHByb2FjaCB3aGljaFxuXHRcdC8vIGF2b2lkcyByZS1wYXJzaW5nIGxpYi9ub2RlX21vZHVsZXMgLmQudHMgZmlsZXMgcGVyIHByb2plY3QuXG5cdFx0Y29uc3QgZ3JvdXBzID0gTWFwLmdyb3VwQnkocHJvamVjdERhdGEsICh7IHRzY29uZmlnIH0pID0+XG5cdFx0XHR0aGlzLiNob3N0Lmhvc3RLZXkodHNjb25maWcuY29tcGlsZXJPcHRpb25zKSxcblx0XHQpO1xuXG5cdFx0cmV0dXJuIFsuLi5ncm91cHMudmFsdWVzKCldLm1hcCgoZ3JvdXApID0+IG5ldyBUeXBlRW1pc3Npb25Qcm9ncmFtKGdyb3VwLCB0aGlzLiNob3N0KSk7XG5cdH1cblxuXHRwcm90ZWN0ZWQgYXN5bmMgb25JbmNyZW1lbnRhbEZpbGVFdmVudChldnQ6IFByb2plY3RGaWxlRXZlbnQpOiBQcm9taXNlPFRyYW5zZm9ybVJlc3BvbnNlW10+IHtcblx0XHRjb25zdCB7IGZpbGUsIHByb2plY3QgfSA9IGV2dDtcblx0XHRpZiAoZXZ0LmV2ZW50TmFtZSA9PT0gaW8uV2F0Y2hFdmVudHMudW5saW5rKSB7XG5cdFx0XHR0aGlzLmRlbGV0ZUNhY2hlZE91dHB1dHMoZmlsZS5mdWxsUGF0aCk7XG5cdFx0XHRyZXR1cm4gW107XG5cdFx0fVxuXHRcdGlmICghcHJvamVjdC5pc1NvdXJjZUZpbGUoZmlsZSkpIHtcblx0XHRcdHJldHVybiBbXTtcblx0XHR9XG5cdFx0aWYgKGV2dC5ldmVudE5hbWUgPT09IGlvLldhdGNoRXZlbnRzLmFkZCkge1xuXHRcdFx0dGhpcy4jcHJvZ3JhbXM/LmZvckVhY2goKHApID0+IHtcblx0XHRcdFx0cC5hZGRGaWxlKGZpbGUsIHByb2plY3QpO1xuXHRcdFx0fSk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHRoaXMuaW52YWxpZGF0ZVJlYWRGaWxlQ2FjaGUoZmlsZS5mdWxsUGF0aCk7XG5cdFx0XHR0aGlzLiNob3N0LmludmFsaWRhdGVTb3VyY2VGaWxlKGZpbGUuZnVsbFBhdGgpO1xuXHRcdH1cblx0XHRyZXR1cm4gdGhpcy50cmFuc2Zvcm1Qcm9qZWN0KHByb2plY3QsICgpID0+IFByb21pc2UucmVzb2x2ZShbZmlsZV0pKTtcblx0fVxuXG5cdEBpbnZhbGlkYXRlQ2FjaGUoVHNQcm9ncmFtSG9zdC5wcm90b3R5cGUucmVhZEZpbGVGcm9tRGlzaywge1xuXHRcdG5hbWU6IFwiRklMRV9DT05URU5UXCIsXG5cdFx0a2V5Rm46ICguLi5hcmdzKSA9PiBhcmdzWzBdIGFzIHN0cmluZyxcblx0fSlcblx0cHJpdmF0ZSBpbnZhbGlkYXRlUmVhZEZpbGVDYWNoZShfcGF0aDogc3RyaW5nKTogdm9pZCB7fVxufVxuIl0sIm5hbWVzIjpbIkRFRkFVTFRfVFlQRV9FTUlUVEVSX09QVElPTlMiLCJSRVFVSVJFRF9UWVBFX0VNSVRURVJfT1BUSU9OUyIsIlR5cGVFbWl0dGVyIiwibGliIiwidHlwZXMiLCJza2lwTGliQ2hlY2siLCJlbWl0RGVjbGFyYXRpb25Pbmx5IiwiZGVjbGFyYXRpb24iLCJtaXh3aXRoIiwiQ2FjaGVzT3V0cHV0cyIsIkluY3JlbWVudGFsVHJhbnNmb3JtIiwiYnVpbGRUYXJnZXRzIiwiQnVpbGRUYXJnZXRzIiwiVHNQcm9ncmFtSG9zdCIsImluaXQiLCJwcm9qZWN0QXJyYXlMaWtlIiwiX2ZpbHRlciIsInByZXBhcmVQcm9ncmFtcyIsInRyYW5zZm9ybVByb2plY3QiLCJmaWx0ZXIiLCJvbk91dHB1dCIsInByb2dyYW1zIiwibGVuZ3RoIiwicmVzcG9uc2VzIiwiUHJvbWlzZSIsImFsbCIsIm1hcCIsInByb2dyYW0iLCJlbWl0IiwiZmxhdCIsImNhY2hlT3V0cHV0cyIsImFsbFByb2plY3RzIiwiQXJyYXkiLCJpc0FycmF5IiwicHJvamVjdHMiLCJwcm9qIiwiZ2V0Rm9yZ2VDb25maWd1cmF0aW9uIiwidGFyZ2V0cyIsImluY2x1ZGVzIiwicHJvamVjdERhdGEiLCJwcm9qZWN0IiwiZmlsZXMiLCJnZXRBbGxGaWxlcyIsInRzY29uZmlnIiwiZ2V0VHNDb25maWciLCJncm91cHMiLCJNYXAiLCJncm91cEJ5IiwiaG9zdEtleSIsImNvbXBpbGVyT3B0aW9ucyIsInZhbHVlcyIsImdyb3VwIiwiVHlwZUVtaXNzaW9uUHJvZ3JhbSIsIm9uSW5jcmVtZW50YWxGaWxlRXZlbnQiLCJldnQiLCJmaWxlIiwiZXZlbnROYW1lIiwiaW8iLCJXYXRjaEV2ZW50cyIsInVubGluayIsImRlbGV0ZUNhY2hlZE91dHB1dHMiLCJmdWxsUGF0aCIsImlzU291cmNlRmlsZSIsImFkZCIsImZvckVhY2giLCJwIiwiYWRkRmlsZSIsImludmFsaWRhdGVSZWFkRmlsZUNhY2hlIiwiaW52YWxpZGF0ZVNvdXJjZUZpbGUiLCJyZXNvbHZlIiwiX3BhdGgiLCJwcm90b3R5cGUiLCJyZWFkRmlsZUZyb21EaXNrIiwibmFtZSIsImtleUZuIiwiYXJncyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7UUErQmFBO2VBQUFBOztRQVVBQztlQUFBQTs7UUFNQUM7ZUFBQUE7Ozt5QkE5Q21COzZCQUNWOytCQUNFO29CQUVMO1FBRVo7b0NBQ3VCOzJDQUNPOytCQUNQO3FDQUl2QjtpQ0FDd0M7Ozs7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
171
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL2ZvcmdlL3NyYy9zZXJ2aWNlcy90eXBlLWVtaXR0ZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBQcm9qZWN0LCBQcm9qZWN0RmlsZUV2ZW50IH0gZnJvbSBcIkBkZWNvaGVyZS9tZXNoXCI7XG5pbXBvcnQgeyBpbnZhbGlkYXRlQ2FjaGUgfSBmcm9tIFwiQGRlY29oZXJlL25leHVzL2NhY2hpbmdcIjtcbmltcG9ydCB7IFRyYWNlIH0gZnJvbSBcIkBkZWNvaGVyZS9uZXh1cy9kaWFnbm9zdGljc1wiO1xuaW1wb3J0IHsgbWl4d2l0aCB9IGZyb20gXCJAZGVjb2hlcmUvbmV4dXMvZXh0ZW5zaWJpbGl0eVwiO1xuaW1wb3J0IHR5cGUgeyBGaWxlRXggfSBmcm9tIFwiQGRlY29oZXJlL25leHVzL2lvXCI7XG5pbXBvcnQgeyBpbyB9IGZyb20gXCJAZGVjb2hlcmUvbmV4dXMvaW9cIjtcbmltcG9ydCB0eXBlIHRzIGZyb20gXCJ0eXBlc2NyaXB0XCI7XG5pbXBvcnQgXCIuLi9leHRlbnNpb25zL3Byb2plY3QuZXh0ZW5zaW9ucy5qc1wiO1xuaW1wb3J0IHsgQ2FjaGVzT3V0cHV0cyB9IGZyb20gXCIuLi9taXhpbnMvY2FjaGVzLW91dHB1dHMubWl4aW4uanNcIjtcbmltcG9ydCB7IEluY3JlbWVudGFsVHJhbnNmb3JtIH0gZnJvbSBcIi4uL21peGlucy9pbmNyZW1lbnRhbC10cmFuc2Zvcm0ubWl4aW4uanNcIjtcbmltcG9ydCB7IFRzUHJvZ3JhbUhvc3QgfSBmcm9tIFwiLi4vc2VydmljZXMvdHMtcHJvZ3JhbS1ob3N0LmpzXCI7XG5pbXBvcnQge1xuXHRUeXBlRW1pc3Npb25Qcm9ncmFtLFxuXHR0eXBlIFR5cGVQcm9ncmFtUHJvamVjdCxcbn0gZnJvbSBcIi4uL3NlcnZpY2VzL3R5cGUtZW1pc3Npb24tcHJvZ3JhbS5qc1wiO1xuaW1wb3J0IHsgdHlwZSBCdWlsZFRhcmdldCwgQnVpbGRUYXJnZXRzIH0gZnJvbSBcIi4uL3R5cGVzL2J1aWxkLXRhcmdldC50eXBlLmpzXCI7XG5pbXBvcnQgdHlwZSB7IFRyYW5zZm9ybVJlc3BvbnNlIH0gZnJvbSBcIi4uL3R5cGVzL3RyYW5zZm9ybS1yZXNwb25zZS5tb2RlbC5qc1wiO1xuaW1wb3J0IHR5cGUgeyBUcmFuc2Zvcm1lciB9IGZyb20gXCIuLi90eXBlcy90cmFuc2Zvcm1lci50eXBlLmpzXCI7XG5cbi8qKlxuICogQ29tcGlsZXIgb3B0aW9uIGRlZmF1bHRzIGFwcGxpZWQgYmVmb3JlIHRoZSB1c2VyJ3MgdHNjb25maWcg4oCUIHRoZSB1c2VyJ3MgdmFsdWVzIG92ZXJyaWRlIHRoZXNlLlxuICpcbiAqIGxpYjogRVMyMDIyIOKAlCBhdm9pZHMgbG9hZGluZyBsaWIuZG9tLmQudHMgKDEuOCBNQikgd2hpY2ggVFMgaW5jbHVkZXMgYnkgZGVmYXVsdFxuICogd2hlbiBubyBgbGliYCBpcyBzZXQuIEJhY2tlbmQgcGFja2FnZXMgaGF2ZSBubyB1c2UgZm9yIGJyb3dzZXIgQVBJcy5cbiAqXG4gKiB0eXBlczogW10g4oCUIGRpc2FibGVzIGFtYmllbnQgQHR5cGVzIGF1dG8tZGlzY292ZXJ5LiBXaXRob3V0IHRoaXMsIFRTIHNjYW5zXG4gKiBldmVyeSBAdHlwZXMvKiBwYWNrYWdlIGluIHRoZSBub2RlX21vZHVsZXMgaGllcmFyY2h5OyBpbiBhIG1vbm9yZXBvIHRoYXQgY2FuXG4gKiBwdWxsIGluIGRvemVucyBvZiB1bnJlbGF0ZWQgcGFja2FnZXMuIEV4cGxpY2l0bHkgaW1wb3J0ZWQgdHlwZXMgc3RpbGwgcmVzb2x2ZVxuICogbm9ybWFsbHk7IG9ubHkgYW1iaWVudCBnbG9iYWxzIChlLmcuIEJ1ZmZlciwgcHJvY2VzcykgYXJlIHN1cHByZXNzZWQg4oCUIGFkZFxuICogYHR5cGVzOiBbXCJub2RlXCJdYCB0byBhIHByb2plY3QncyB0c2NvbmZpZyB0byByZXN0b3JlIHRoZW0uXG4gKi9cbmV4cG9ydCBjb25zdCBERUZBVUxUX1RZUEVfRU1JVFRFUl9PUFRJT05TOiBSZWFkb25seTx0cy5Db21waWxlck9wdGlvbnM+ID0ge1xuXHRsaWI6IFtcImxpYi5lczIwMjIuZC50c1wiXSxcblx0dHlwZXM6IFtdLFxuXHRza2lwTGliQ2hlY2s6IHRydWUsXG59O1xuXG4vKipcbiAqIENvbXBpbGVyIG9wdGlvbnMgdGhhdCBUeXBlRW1pdHRlciBhbHdheXMgZW5mb3JjZXMgcmVnYXJkbGVzcyBvZiB3aGF0IHRoZSB1c2VyJ3NcbiAqIHRzY29uZmlnIHNwZWNpZmllcy4gQXBwbGllZCBhZnRlciB0aGUgdXNlciBzcHJlYWQgc28gdGhleSBjYW5ub3QgYmUgb3ZlcnJpZGRlbi5cbiAqL1xuZXhwb3J0IGNvbnN0IFJFUVVJUkVEX1RZUEVfRU1JVFRFUl9PUFRJT05TOiBSZWFkb25seTx0cy5Db21waWxlck9wdGlvbnM+ID0ge1xuXHRlbWl0RGVjbGFyYXRpb25Pbmx5OiB0cnVlLFxuXHRkZWNsYXJhdGlvbjogdHJ1ZSxcbn07XG5cbi8qKiBDb21waWxlciBvcHRpb25zIGVuZm9yY2VkIGZvciBgZm9yZ2UgdHlwZWNoZWNrYCDigJQgbmV2ZXIgZW1pdCBKUyBvciBkZWNsYXJhdGlvbnMuICovXG5leHBvcnQgY29uc3QgUkVRVUlSRURfVFlQRV9DSEVDS19PUFRJT05TOiBSZWFkb25seTx0cy5Db21waWxlck9wdGlvbnM+ID0ge1xuXHRub0VtaXQ6IHRydWUsXG59O1xuXG5leHBvcnQgdHlwZSBQcmVwYXJlUHJvZ3JhbXNPcHRpb25zID0ge1xuXHRpbmNsdWRlQWxsUHJvamVjdHM/OiBib29sZWFuO1xuXHRyZXF1aXJlZENvbXBpbGVyT3B0aW9ucz86IHRzLkNvbXBpbGVyT3B0aW9ucztcbn07XG5cbkBUcmFjZVxuZXhwb3J0IGNsYXNzIFR5cGVFbWl0dGVyXG5cdGV4dGVuZHMgbWl4d2l0aChDYWNoZXNPdXRwdXRzLCBJbmNyZW1lbnRhbFRyYW5zZm9ybSlcblx0aW1wbGVtZW50cyBUcmFuc2Zvcm1lclxue1xuXHRwdWJsaWMgYnVpbGRUYXJnZXRzOiBCdWlsZFRhcmdldFtdID0gW0J1aWxkVGFyZ2V0cy50eXBlc107XG5cdC8qKiBQcmVwYXJlZCBwcm9ncmFtcyBmcm9tIGluaXQoKSwgY29uc3VtZWQgb25jZSBieSB0aGUgbmV4dCB0cmFuc2Zvcm1Qcm9qZWN0KCkgY2FsbC4gKi9cblx0I3Byb2dyYW1zOiBUeXBlRW1pc3Npb25Qcm9ncmFtW10gfCB1bmRlZmluZWQ7XG5cdCNob3N0ID0gbmV3IFRzUHJvZ3JhbUhvc3QoKTtcblxuXHQvKipcblx0ICogUGhhc2UgMTogZmV0Y2ggZmlsZXMsIGNyZWF0ZSBUeXBlU2NyaXB0IHByb2dyYW1zIHNlcXVlbnRpYWxseS5cblx0ICogQ2FsbGVkIGJlZm9yZSB0cmFuc2Zvcm1Qcm9qZWN0KCkgc28gdGhhdCB0aGUgaGVhdnkgY3JlYXRlUHJvZ3JhbSB3b3JrXG5cdCAqIGNvbXBsZXRlcyBiZWZvcmUgb3RoZXIgdHJhbnNmb3JtZXJzIChTV0MvUmF5b24pIHN0YXJ0IHJ1bm5pbmcgaW4gcGFyYWxsZWwuXG5cdCAqL1xuXHRwdWJsaWMgYXN5bmMgaW5pdChcblx0XHRwcm9qZWN0QXJyYXlMaWtlOiBQcm9qZWN0W10gfCBQcm9qZWN0LFxuXHRcdF9maWx0ZXI/OiAocHJvamVjdDogUHJvamVjdCkgPT4gUHJvbWlzZTxGaWxlRXhbXT4sXG5cdCk6IFByb21pc2U8dm9pZD4ge1xuXHRcdGlmICh0aGlzLiNwcm9ncmFtcyA9PSBudWxsKSB7XG5cdFx0XHR0aGlzLiNwcm9ncmFtcyA9IGF3YWl0IHRoaXMucHJlcGFyZVByb2dyYW1zKHByb2plY3RBcnJheUxpa2UpO1xuXHRcdH1cblx0fVxuXG5cdHB1YmxpYyBhc3luYyB0cmFuc2Zvcm1Qcm9qZWN0KFxuXHRcdHByb2plY3RBcnJheUxpa2U6IFByb2plY3RbXSB8IFByb2plY3QsXG5cdFx0ZmlsdGVyPzogKHByb2plY3Q6IFByb2plY3QpID0+IFByb21pc2U8RmlsZUV4W10+LFxuXHRcdG9uT3V0cHV0PzogKHJlc3BvbnNlOiBUcmFuc2Zvcm1SZXNwb25zZSkgPT4gdm9pZCxcblx0KTogUHJvbWlzZTxUcmFuc2Zvcm1SZXNwb25zZVtdPiB7XG5cdFx0Ly8gQ29uc3VtZSBwcmVwYXJlZCBzdGF0ZSBmcm9tIGluaXQoKSBpZiBhdmFpbGFibGU7IG90aGVyd2lzZSBkbyBmdWxsIHNldHVwXG5cdFx0Ly8gKGUuZy4gd2F0Y2gtbW9kZSBzaW5nbGUtZmlsZSByZWJ1aWxkcyB0aGF0IHNraXAgdGhlIGluaXQgcGhhc2UpLlxuXHRcdGNvbnN0IHByb2dyYW1zID0gdGhpcy4jcHJvZ3JhbXMgPz8gKGF3YWl0IHRoaXMucHJlcGFyZVByb2dyYW1zKHByb2plY3RBcnJheUxpa2UpKTtcblx0XHR0aGlzLiNwcm9ncmFtcyA9IHByb2dyYW1zO1xuXG5cdFx0aWYgKHByb2dyYW1zLmxlbmd0aCA9PT0gMCkge1xuXHRcdFx0cmV0dXJuIFtdO1xuXHRcdH1cblxuXHRcdGNvbnN0IHJlc3BvbnNlcyA9IChcblx0XHRcdGF3YWl0IFByb21pc2UuYWxsKHByb2dyYW1zLm1hcCgocHJvZ3JhbSkgPT4gcHJvZ3JhbS5lbWl0KGZpbHRlciwgb25PdXRwdXQpKSlcblx0XHQpLmZsYXQoKTtcblx0XHR0aGlzLmNhY2hlT3V0cHV0cyhyZXNwb25zZXMpO1xuXHRcdHJldHVybiByZXNwb25zZXM7XG5cdH1cblxuXHQvKipcblx0ICogVHlwZS1jaGVjayBwcm9qZWN0cyB3aXRob3V0IGVtaXR0aW5nIGZpbGVzLiBJbmNsdWRlcyBldmVyeSBNZXNoIHByb2plY3QsIG5vdFxuXHQgKiBvbmx5IHRob3NlIHdpdGggYSBgdHlwZXNgIGJ1aWxkIHRhcmdldCAoZGVidWcgaXMgZXM2LW9ubHkpLlxuXHQgKi9cblx0cHVibGljIGFzeW5jIGNoZWNrUHJvamVjdChcblx0XHRwcm9qZWN0QXJyYXlMaWtlOiBQcm9qZWN0W10gfCBQcm9qZWN0LFxuXHQpOiBQcm9taXNlPHsgZGlhZ25vc3RpY3M6IHRzLkRpYWdub3N0aWNbXTsgZm9ybWF0dGVkOiBzdHJpbmcgfT4ge1xuXHRcdGNvbnN0IHByb2dyYW1zID0gYXdhaXQgdGhpcy5wcmVwYXJlUHJvZ3JhbXMocHJvamVjdEFycmF5TGlrZSwge1xuXHRcdFx0aW5jbHVkZUFsbFByb2plY3RzOiB0cnVlLFxuXHRcdFx0cmVxdWlyZWRDb21waWxlck9wdGlvbnM6IFJFUVVJUkVEX1RZUEVfQ0hFQ0tfT1BUSU9OUyxcblx0XHR9KTtcblx0XHRjb25zdCBkaWFnbm9zdGljczogdHMuRGlhZ25vc3RpY1tdID0gW107XG5cdFx0Y29uc3QgZm9ybWF0dGVkUGFydHM6IHN0cmluZ1tdID0gW107XG5cdFx0Zm9yIChjb25zdCBwcm9ncmFtIG9mIHByb2dyYW1zKSB7XG5cdFx0XHRjb25zdCBwcm9ncmFtRGlhZ25vc3RpY3MgPSBwcm9ncmFtLmNoZWNrKCk7XG5cdFx0XHRpZiAocHJvZ3JhbURpYWdub3N0aWNzLmxlbmd0aCA9PT0gMCkge1xuXHRcdFx0XHRjb250aW51ZTtcblx0XHRcdH1cblx0XHRcdGRpYWdub3N0aWNzLnB1c2goLi4ucHJvZ3JhbURpYWdub3N0aWNzKTtcblx0XHRcdGZvcm1hdHRlZFBhcnRzLnB1c2gocHJvZ3JhbS5mb3JtYXREaWFnbm9zdGljcyhwcm9ncmFtRGlhZ25vc3RpY3MpKTtcblx0XHR9XG5cdFx0cmV0dXJuIHsgZGlhZ25vc3RpY3MsIGZvcm1hdHRlZDogZm9ybWF0dGVkUGFydHMuam9pbihcIlwiKSB9O1xuXHR9XG5cblx0cHJpdmF0ZSBhc3luYyBwcmVwYXJlUHJvZ3JhbXMoXG5cdFx0cHJvamVjdEFycmF5TGlrZTogUHJvamVjdFtdIHwgUHJvamVjdCxcblx0XHRvcHRpb25zOiBQcmVwYXJlUHJvZ3JhbXNPcHRpb25zID0ge30sXG5cdCk6IFByb21pc2U8VHlwZUVtaXNzaW9uUHJvZ3JhbVtdPiB7XG5cdFx0Y29uc3QgYWxsUHJvamVjdHMgPSBBcnJheS5pc0FycmF5KHByb2plY3RBcnJheUxpa2UpXG5cdFx0XHQ/IHByb2plY3RBcnJheUxpa2Vcblx0XHRcdDogW3Byb2plY3RBcnJheUxpa2VdO1xuXHRcdGNvbnN0IHByb2plY3RzID0gb3B0aW9ucy5pbmNsdWRlQWxsUHJvamVjdHNcblx0XHRcdD8gYWxsUHJvamVjdHNcblx0XHRcdDogYWxsUHJvamVjdHMuZmlsdGVyKChwcm9qKSA9PlxuXHRcdFx0XHRcdHByb2ouZ2V0Rm9yZ2VDb25maWd1cmF0aW9uKCkudGFyZ2V0cy5pbmNsdWRlcyhCdWlsZFRhcmdldHMudHlwZXMpLFxuXHRcdFx0XHQpO1xuXHRcdGlmIChwcm9qZWN0cy5sZW5ndGggPT09IDApIHtcblx0XHRcdHJldHVybiBbXTtcblx0XHR9XG5cblx0XHQvLyBQcmUtZmV0Y2ggYWxsIGZpbGVzIGFuZCB0c2NvbmZpZ3MgaW4gcGFyYWxsZWwgYWNyb3NzIGFsbCBwcm9qZWN0c1xuXHRcdGNvbnN0IHByb2plY3REYXRhOiBUeXBlUHJvZ3JhbVByb2plY3RbXSA9IGF3YWl0IFByb21pc2UuYWxsKFxuXHRcdFx0cHJvamVjdHMubWFwKGFzeW5jIChwcm9qKSA9PiAoe1xuXHRcdFx0XHRwcm9qZWN0OiBwcm9qLFxuXHRcdFx0XHRmaWxlczogYXdhaXQgcHJvai5nZXRBbGxGaWxlcygpLFxuXHRcdFx0XHR0c2NvbmZpZzogYXdhaXQgcHJvai5nZXRUc0NvbmZpZygpLFxuXHRcdFx0fSkpLFxuXHRcdCk7XG5cblx0XHQvLyBHcm91cCBwcm9qZWN0cyBieSB0aGUgcmVzb2x2ZWQgY29tcGlsZXIgb3B0aW9ucyB0aGF0IGFmZmVjdCB0aGUgY29tcGlsZXJcblx0XHQvLyBob3N0IChsaWIgbG9hZGluZywgbW9kdWxlIHJlc29sdXRpb24sIHBhdGggYWxpYXNlcykuIFByb2plY3RzIHNoYXJpbmcgdGhlXG5cdFx0Ly8gc2FtZSByZXNvbHZlZCB2YWx1ZXMgZ2V0IG9uZSBzaGFyZWQgaG9zdCBBTkQgb25lIHNoYXJlZCBwcm9ncmFtIOKAlCBhbGwgdGhlaXJcblx0XHQvLyBmaWxlcyBhcmUgY29tcGlsZWQgdG9nZXRoZXIsIG1hdGNoaW5nIHYxJ3Mgc2luZ2xlLXByb2dyYW0gYXBwcm9hY2ggd2hpY2hcblx0XHQvLyBhdm9pZHMgcmUtcGFyc2luZyBsaWIvbm9kZV9tb2R1bGVzIC5kLnRzIGZpbGVzIHBlciBwcm9qZWN0LlxuXHRcdGNvbnN0IGdyb3VwcyA9IE1hcC5ncm91cEJ5KHByb2plY3REYXRhLCAoeyB0c2NvbmZpZyB9KSA9PlxuXHRcdFx0dGhpcy4jaG9zdC5ob3N0S2V5KHRzY29uZmlnLmNvbXBpbGVyT3B0aW9ucyksXG5cdFx0KTtcblxuXHRcdGNvbnN0IHJlcXVpcmVkQ29tcGlsZXJPcHRpb25zID1cblx0XHRcdG9wdGlvbnMucmVxdWlyZWRDb21waWxlck9wdGlvbnMgPz8gUkVRVUlSRURfVFlQRV9FTUlUVEVSX09QVElPTlM7XG5cdFx0cmV0dXJuIFsuLi5ncm91cHMudmFsdWVzKCldLm1hcChcblx0XHRcdChncm91cCkgPT4gbmV3IFR5cGVFbWlzc2lvblByb2dyYW0oZ3JvdXAsIHRoaXMuI2hvc3QsIHJlcXVpcmVkQ29tcGlsZXJPcHRpb25zKSxcblx0XHQpO1xuXHR9XG5cblx0cHJvdGVjdGVkIGFzeW5jIG9uSW5jcmVtZW50YWxGaWxlRXZlbnQoZXZ0OiBQcm9qZWN0RmlsZUV2ZW50KTogUHJvbWlzZTxUcmFuc2Zvcm1SZXNwb25zZVtdPiB7XG5cdFx0Y29uc3QgeyBmaWxlLCBwcm9qZWN0IH0gPSBldnQ7XG5cdFx0aWYgKGV2dC5ldmVudE5hbWUgPT09IGlvLldhdGNoRXZlbnRzLnVubGluaykge1xuXHRcdFx0dGhpcy5kZWxldGVDYWNoZWRPdXRwdXRzKGZpbGUuZnVsbFBhdGgpO1xuXHRcdFx0cmV0dXJuIFtdO1xuXHRcdH1cblx0XHRpZiAoIXByb2plY3QuaXNTb3VyY2VGaWxlKGZpbGUpKSB7XG5cdFx0XHRyZXR1cm4gW107XG5cdFx0fVxuXHRcdGlmIChldnQuZXZlbnROYW1lID09PSBpby5XYXRjaEV2ZW50cy5hZGQpIHtcblx0XHRcdHRoaXMuI3Byb2dyYW1zPy5mb3JFYWNoKChwKSA9PiB7XG5cdFx0XHRcdHAuYWRkRmlsZShmaWxlLCBwcm9qZWN0KTtcblx0XHRcdH0pO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aGlzLmludmFsaWRhdGVSZWFkRmlsZUNhY2hlKGZpbGUuZnVsbFBhdGgpO1xuXHRcdFx0dGhpcy4jaG9zdC5pbnZhbGlkYXRlU291cmNlRmlsZShmaWxlLmZ1bGxQYXRoKTtcblx0XHR9XG5cdFx0cmV0dXJuIHRoaXMudHJhbnNmb3JtUHJvamVjdChwcm9qZWN0LCAoKSA9PiBQcm9taXNlLnJlc29sdmUoW2ZpbGVdKSk7XG5cdH1cblxuXHRAaW52YWxpZGF0ZUNhY2hlKFRzUHJvZ3JhbUhvc3QucHJvdG90eXBlLnJlYWRGaWxlRnJvbURpc2ssIHtcblx0XHRuYW1lOiBcIkZJTEVfQ09OVEVOVFwiLFxuXHRcdGtleUZuOiAoLi4uYXJncykgPT4gYXJnc1swXSBhcyBzdHJpbmcsXG5cdH0pXG5cdHByaXZhdGUgaW52YWxpZGF0ZVJlYWRGaWxlQ2FjaGUoX3BhdGg6IHN0cmluZyk6IHZvaWQge31cbn1cbiJdLCJuYW1lcyI6WyJERUZBVUxUX1RZUEVfRU1JVFRFUl9PUFRJT05TIiwiUkVRVUlSRURfVFlQRV9DSEVDS19PUFRJT05TIiwiUkVRVUlSRURfVFlQRV9FTUlUVEVSX09QVElPTlMiLCJUeXBlRW1pdHRlciIsImxpYiIsInR5cGVzIiwic2tpcExpYkNoZWNrIiwiZW1pdERlY2xhcmF0aW9uT25seSIsImRlY2xhcmF0aW9uIiwibm9FbWl0IiwibWl4d2l0aCIsIkNhY2hlc091dHB1dHMiLCJJbmNyZW1lbnRhbFRyYW5zZm9ybSIsImJ1aWxkVGFyZ2V0cyIsIkJ1aWxkVGFyZ2V0cyIsIlRzUHJvZ3JhbUhvc3QiLCJpbml0IiwicHJvamVjdEFycmF5TGlrZSIsIl9maWx0ZXIiLCJwcmVwYXJlUHJvZ3JhbXMiLCJ0cmFuc2Zvcm1Qcm9qZWN0IiwiZmlsdGVyIiwib25PdXRwdXQiLCJwcm9ncmFtcyIsImxlbmd0aCIsInJlc3BvbnNlcyIsIlByb21pc2UiLCJhbGwiLCJtYXAiLCJwcm9ncmFtIiwiZW1pdCIsImZsYXQiLCJjYWNoZU91dHB1dHMiLCJjaGVja1Byb2plY3QiLCJpbmNsdWRlQWxsUHJvamVjdHMiLCJyZXF1aXJlZENvbXBpbGVyT3B0aW9ucyIsImRpYWdub3N0aWNzIiwiZm9ybWF0dGVkUGFydHMiLCJwcm9ncmFtRGlhZ25vc3RpY3MiLCJjaGVjayIsInB1c2giLCJmb3JtYXREaWFnbm9zdGljcyIsImZvcm1hdHRlZCIsImpvaW4iLCJvcHRpb25zIiwiYWxsUHJvamVjdHMiLCJBcnJheSIsImlzQXJyYXkiLCJwcm9qZWN0cyIsInByb2oiLCJnZXRGb3JnZUNvbmZpZ3VyYXRpb24iLCJ0YXJnZXRzIiwiaW5jbHVkZXMiLCJwcm9qZWN0RGF0YSIsInByb2plY3QiLCJmaWxlcyIsImdldEFsbEZpbGVzIiwidHNjb25maWciLCJnZXRUc0NvbmZpZyIsImdyb3VwcyIsIk1hcCIsImdyb3VwQnkiLCJob3N0S2V5IiwiY29tcGlsZXJPcHRpb25zIiwidmFsdWVzIiwiZ3JvdXAiLCJUeXBlRW1pc3Npb25Qcm9ncmFtIiwib25JbmNyZW1lbnRhbEZpbGVFdmVudCIsImV2dCIsImZpbGUiLCJldmVudE5hbWUiLCJpbyIsIldhdGNoRXZlbnRzIiwidW5saW5rIiwiZGVsZXRlQ2FjaGVkT3V0cHV0cyIsImZ1bGxQYXRoIiwiaXNTb3VyY2VGaWxlIiwiYWRkIiwiZm9yRWFjaCIsInAiLCJhZGRGaWxlIiwiaW52YWxpZGF0ZVJlYWRGaWxlQ2FjaGUiLCJpbnZhbGlkYXRlU291cmNlRmlsZSIsInJlc29sdmUiLCJfcGF0aCIsInByb3RvdHlwZSIsInJlYWRGaWxlRnJvbURpc2siLCJuYW1lIiwia2V5Rm4iLCJhcmdzIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztRQStCYUE7ZUFBQUE7O1FBZ0JBQztlQUFBQTs7UUFOQUM7ZUFBQUE7O1FBZ0JBQztlQUFBQTs7O3lCQXhEbUI7NkJBQ1Y7K0JBQ0U7b0JBRUw7UUFFWjtvQ0FDdUI7MkNBQ087K0JBQ1A7cUNBSXZCO2lDQUN3Qzs7Ozs7Ozs7OztBQWdCeEMsTUFBTUgsK0JBQTZEO0lBQ3pFSSxLQUFLO1FBQUM7S0FBa0I7SUFDeEJDLE9B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
@@ -9,8 +9,9 @@ export * from "./link.action.js";
9
9
  export * from "./publish.action.js";
10
10
  export * from "./sync-lock-file.action.js";
11
11
  export * from "./tag.action.js";
12
+ export * from "./typecheck.action.js";
12
13
  export * from "./unlink.action.js";
13
14
  export * from "./version.action.js";
14
15
  export * from "./watch.action.js";
15
16
 
16
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL2ZvcmdlL3NyYy9hY3Rpb25zL2luZGV4LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gXCIuL2J1aWxkLmFjdGlvbi5qc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vY2xlYW4uYWN0aW9uLmpzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9jb21taXQuYWN0aW9uLmpzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9jb3B5LmFjdGlvbi5qc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vZGVwZW5kZW5jeS1yZXBvcnQuYWN0aW9uLmpzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9kZXBlbmRlbmN5LXN5bmMuYWN0aW9uLmpzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9kb2NrZXIuYWN0aW9uLmpzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9saW5rLmFjdGlvbi5qc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vcHVibGlzaC5hY3Rpb24uanNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3N5bmMtbG9jay1maWxlLmFjdGlvbi5qc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vdGFnLmFjdGlvbi5qc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vdW5saW5rLmFjdGlvbi5qc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vdmVyc2lvbi5hY3Rpb24uanNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3dhdGNoLmFjdGlvbi5qc1wiO1xuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsb0JBQW9CO0FBQ2xDLGNBQWMsb0JBQW9CO0FBQ2xDLGNBQWMscUJBQXFCO0FBQ25DLGNBQWMsbUJBQW1CO0FBQ2pDLGNBQWMsZ0NBQWdDO0FBQzlDLGNBQWMsOEJBQThCO0FBQzVDLGNBQWMscUJBQXFCO0FBQ25DLGNBQWMsbUJBQW1CO0FBQ2pDLGNBQWMsc0JBQXNCO0FBQ3BDLGNBQWMsNkJBQTZCO0FBQzNDLGNBQWMsa0JBQWtCO0FBQ2hDLGNBQWMscUJBQXFCO0FBQ25DLGNBQWMsc0JBQXNCO0FBQ3BDLGNBQWMsb0JBQW9CIn0=
17
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL2ZvcmdlL3NyYy9hY3Rpb25zL2luZGV4LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gXCIuL2J1aWxkLmFjdGlvbi5qc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vY2xlYW4uYWN0aW9uLmpzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9jb21taXQuYWN0aW9uLmpzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9jb3B5LmFjdGlvbi5qc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vZGVwZW5kZW5jeS1yZXBvcnQuYWN0aW9uLmpzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9kZXBlbmRlbmN5LXN5bmMuYWN0aW9uLmpzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9kb2NrZXIuYWN0aW9uLmpzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9saW5rLmFjdGlvbi5qc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vcHVibGlzaC5hY3Rpb24uanNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3N5bmMtbG9jay1maWxlLmFjdGlvbi5qc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vdGFnLmFjdGlvbi5qc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vdHlwZWNoZWNrLmFjdGlvbi5qc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vdW5saW5rLmFjdGlvbi5qc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vdmVyc2lvbi5hY3Rpb24uanNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3dhdGNoLmFjdGlvbi5qc1wiO1xuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsb0JBQW9CO0FBQ2xDLGNBQWMsb0JBQW9CO0FBQ2xDLGNBQWMscUJBQXFCO0FBQ25DLGNBQWMsbUJBQW1CO0FBQ2pDLGNBQWMsZ0NBQWdDO0FBQzlDLGNBQWMsOEJBQThCO0FBQzVDLGNBQWMscUJBQXFCO0FBQ25DLGNBQWMsbUJBQW1CO0FBQ2pDLGNBQWMsc0JBQXNCO0FBQ3BDLGNBQWMsNkJBQTZCO0FBQzNDLGNBQWMsa0JBQWtCO0FBQ2hDLGNBQWMsd0JBQXdCO0FBQ3RDLGNBQWMscUJBQXFCO0FBQ25DLGNBQWMsc0JBQXNCO0FBQ3BDLGNBQWMsb0JBQW9CIn0=
@@ -0,0 +1,56 @@
1
+ function _ts_decorate(decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for(var i = decorators.length - 1; i >= 0; i--)if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ }
7
+ function _ts_metadata(k, v) {
8
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
+ }
10
+ import { injectable } from "@decohere/crucible/decorators";
11
+ // biome-ignore lint/style/useImportType: <DI>
12
+ import { Workspace } from "@decohere/mesh";
13
+ import { ActionResponse } from "@decohere/nexus/cli";
14
+ import { Trace } from "@decohere/nexus/diagnostics";
15
+ import { scribe } from "@decohere/scribe";
16
+ import ts from "typescript";
17
+ import { ForgeError } from "../errors.js";
18
+ // biome-ignore lint/style/useImportType: <DI>
19
+ import { TypeEmitter } from "../services/type-emitter.js";
20
+ export class TypeCheck {
21
+ workspace;
22
+ typeEmitter;
23
+ #logger = scribe.logger(TypeCheck.name);
24
+ constructor(workspace, typeEmitter){
25
+ this.workspace = workspace;
26
+ this.typeEmitter = typeEmitter;
27
+ }
28
+ run = async (options)=>{
29
+ const projects = this.workspace.getProjects(options.configuration);
30
+ for (const project of projects){
31
+ this.#logger.info(`Type-checking ${project.name}`);
32
+ }
33
+ const { diagnostics, formatted } = await this.typeEmitter.checkProject([
34
+ ...projects
35
+ ]);
36
+ const errors = diagnostics.filter((diagnostic)=>diagnostic.category === ts.DiagnosticCategory.Error);
37
+ if (errors.length > 0) {
38
+ throw new ForgeError(formatted || "Type check failed");
39
+ }
40
+ if (formatted.length > 0) {
41
+ this.#logger.info(formatted);
42
+ }
43
+ return ActionResponse.Success(TypeCheck.name);
44
+ };
45
+ }
46
+ TypeCheck = _ts_decorate([
47
+ Trace,
48
+ injectable(),
49
+ _ts_metadata("design:type", Function),
50
+ _ts_metadata("design:paramtypes", [
51
+ typeof Workspace === "undefined" ? Object : Workspace,
52
+ typeof TypeEmitter === "undefined" ? Object : TypeEmitter
53
+ ])
54
+ ], TypeCheck);
55
+
56
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL2ZvcmdlL3NyYy9hY3Rpb25zL3R5cGVjaGVjay5hY3Rpb24udHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaW5qZWN0YWJsZSB9IGZyb20gXCJAZGVjb2hlcmUvY3J1Y2libGUvZGVjb3JhdG9yc1wiO1xuLy8gYmlvbWUtaWdub3JlIGxpbnQvc3R5bGUvdXNlSW1wb3J0VHlwZTogPERJPlxuaW1wb3J0IHsgV29ya3NwYWNlIH0gZnJvbSBcIkBkZWNvaGVyZS9tZXNoXCI7XG5pbXBvcnQgdHlwZSB7IEFjdGlvbiB9IGZyb20gXCJAZGVjb2hlcmUvbmV4dXMvY2xpXCI7XG5pbXBvcnQgeyBBY3Rpb25SZXNwb25zZSB9IGZyb20gXCJAZGVjb2hlcmUvbmV4dXMvY2xpXCI7XG5pbXBvcnQgeyBUcmFjZSB9IGZyb20gXCJAZGVjb2hlcmUvbmV4dXMvZGlhZ25vc3RpY3NcIjtcbmltcG9ydCB7IHNjcmliZSB9IGZyb20gXCJAZGVjb2hlcmUvc2NyaWJlXCI7XG5pbXBvcnQgdHMgZnJvbSBcInR5cGVzY3JpcHRcIjtcbmltcG9ydCB7IEZvcmdlRXJyb3IgfSBmcm9tIFwiLi4vZXJyb3JzLmpzXCI7XG4vLyBiaW9tZS1pZ25vcmUgbGludC9zdHlsZS91c2VJbXBvcnRUeXBlOiA8REk+XG5pbXBvcnQgeyBUeXBlRW1pdHRlciB9IGZyb20gXCIuLi9zZXJ2aWNlcy90eXBlLWVtaXR0ZXIuanNcIjtcblxuZXhwb3J0IHR5cGUgVHlwZUNoZWNrT3B0aW9ucyA9IHtcblx0Y29uZmlndXJhdGlvbjogc3RyaW5nO1xufTtcblxuQFRyYWNlXG5AaW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgVHlwZUNoZWNrIGltcGxlbWVudHMgQWN0aW9uPFR5cGVDaGVja09wdGlvbnM+IHtcblx0I2xvZ2dlciA9IHNjcmliZS5sb2dnZXIoVHlwZUNoZWNrLm5hbWUpO1xuXG5cdHB1YmxpYyBjb25zdHJ1Y3Rvcihcblx0XHRwcml2YXRlIHJlYWRvbmx5IHdvcmtzcGFjZTogV29ya3NwYWNlLFxuXHRcdHByaXZhdGUgcmVhZG9ubHkgdHlwZUVtaXR0ZXI6IFR5cGVFbWl0dGVyLFxuXHQpIHt9XG5cblx0cHVibGljIHJ1biA9IGFzeW5jIChvcHRpb25zOiBUeXBlQ2hlY2tPcHRpb25zKTogUHJvbWlzZTxBY3Rpb25SZXNwb25zZT4gPT4ge1xuXHRcdGNvbnN0IHByb2plY3RzID0gdGhpcy53b3Jrc3BhY2UuZ2V0UHJvamVjdHMob3B0aW9ucy5jb25maWd1cmF0aW9uKTtcblx0XHRmb3IgKGNvbnN0IHByb2plY3Qgb2YgcHJvamVjdHMpIHtcblx0XHRcdHRoaXMuI2xvZ2dlci5pbmZvKGBUeXBlLWNoZWNraW5nICR7cHJvamVjdC5uYW1lfWApO1xuXHRcdH1cblxuXHRcdGNvbnN0IHsgZGlhZ25vc3RpY3MsIGZvcm1hdHRlZCB9ID0gYXdhaXQgdGhpcy50eXBlRW1pdHRlci5jaGVja1Byb2plY3QoWy4uLnByb2plY3RzXSk7XG5cdFx0Y29uc3QgZXJyb3JzID0gZGlhZ25vc3RpY3MuZmlsdGVyKFxuXHRcdFx0KGRpYWdub3N0aWMpID0+IGRpYWdub3N0aWMuY2F0ZWdvcnkgPT09IHRzLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcblx0XHQpO1xuXG5cdFx0aWYgKGVycm9ycy5sZW5ndGggPiAwKSB7XG5cdFx0XHR0aHJvdyBuZXcgRm9yZ2VFcnJvcihmb3JtYXR0ZWQgfHwgXCJUeXBlIGNoZWNrIGZhaWxlZFwiKTtcblx0XHR9XG5cblx0XHRpZiAoZm9ybWF0dGVkLmxlbmd0aCA+IDApIHtcblx0XHRcdHRoaXMuI2xvZ2dlci5pbmZvKGZvcm1hdHRlZCk7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIEFjdGlvblJlc3BvbnNlLlN1Y2Nlc3MoVHlwZUNoZWNrLm5hbWUpO1xuXHR9O1xufVxuIl0sIm5hbWVzIjpbImluamVjdGFibGUiLCJXb3Jrc3BhY2UiLCJBY3Rpb25SZXNwb25zZSIsIlRyYWNlIiwic2NyaWJlIiwidHMiLCJGb3JnZUVycm9yIiwiVHlwZUVtaXR0ZXIiLCJUeXBlQ2hlY2siLCJsb2dnZXIiLCJuYW1lIiwid29ya3NwYWNlIiwidHlwZUVtaXR0ZXIiLCJydW4iLCJvcHRpb25zIiwicHJvamVjdHMiLCJnZXRQcm9qZWN0cyIsImNvbmZpZ3VyYXRpb24iLCJwcm9qZWN0IiwiaW5mbyIsImRpYWdub3N0aWNzIiwiZm9ybWF0dGVkIiwiY2hlY2tQcm9qZWN0IiwiZXJyb3JzIiwiZmlsdGVyIiwiZGlhZ25vc3RpYyIsImNhdGVnb3J5IiwiRGlhZ25vc3RpY0NhdGVnb3J5IiwiRXJyb3IiLCJsZW5ndGgiLCJTdWNjZXNzIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQSxTQUFTQSxVQUFVLFFBQVEsZ0NBQWdDO0FBQzNELDhDQUE4QztBQUM5QyxTQUFTQyxTQUFTLFFBQVEsaUJBQWlCO0FBRTNDLFNBQVNDLGNBQWMsUUFBUSxzQkFBc0I7QUFDckQsU0FBU0MsS0FBSyxRQUFRLDhCQUE4QjtBQUNwRCxTQUFTQyxNQUFNLFFBQVEsbUJBQW1CO0FBQzFDLE9BQU9DLFFBQVEsYUFBYTtBQUM1QixTQUFTQyxVQUFVLFFBQVEsZUFBZTtBQUMxQyw4Q0FBOEM7QUFDOUMsU0FBU0MsV0FBVyxRQUFRLDhCQUE4QjtBQVExRCxPQUFPLE1BQU1DOzs7SUFDWixDQUFBLE1BQU8sR0FBR0osT0FBT0ssTUFBTSxDQUFDRCxVQUFVRSxJQUFJLEVBQUU7SUFFeEMsWUFDQyxBQUFpQkMsU0FBb0IsRUFDckMsQUFBaUJDLFdBQXdCLENBQ3hDO2FBRmdCRCxZQUFBQTthQUNBQyxjQUFBQTtJQUNmO0lBRUlDLE1BQU0sT0FBT0M7UUFDbkIsTUFBTUMsV0FBVyxJQUFJLENBQUNKLFNBQVMsQ0FBQ0ssV0FBVyxDQUFDRixRQUFRRyxhQUFhO1FBQ2pFLEtBQUssTUFBTUMsV0FBV0gsU0FBVTtZQUMvQixJQUFJLENBQUMsQ0FBQSxNQUFPLENBQUNJLElBQUksQ0FBQyxDQUFDLGNBQWMsRUFBRUQsUUFBUVIsSUFBSSxFQUFFO1FBQ2xEO1FBRUEsTUFBTSxFQUFFVSxXQUFXLEVBQUVDLFNBQVMsRUFBRSxHQUFHLE1BQU0sSUFBSSxDQUFDVCxXQUFXLENBQUNVLFlBQVksQ0FBQztlQUFJUDtTQUFTO1FBQ3BGLE1BQU1RLFNBQVNILFlBQVlJLE1BQU0sQ0FDaEMsQ0FBQ0MsYUFBZUEsV0FBV0MsUUFBUSxLQUFLckIsR0FBR3NCLGtCQUFrQixDQUFDQyxLQUFLO1FBR3BFLElBQUlMLE9BQU9NLE1BQU0sR0FBRyxHQUFHO1lBQ3RCLE1BQU0sSUFBSXZCLFdBQVdlLGFBQWE7UUFDbkM7UUFFQSxJQUFJQSxVQUFVUSxNQUFNLEdBQUcsR0FBRztZQUN6QixJQUFJLENBQUMsQ0FBQSxNQUFPLENBQUNWLElBQUksQ0FBQ0U7UUFDbkI7UUFFQSxPQUFPbkIsZUFBZTRCLE9BQU8sQ0FBQ3RCLFVBQVVFLElBQUk7SUFDN0MsRUFBRTtBQUNIIn0=
@@ -5,6 +5,7 @@ export * from "./forge.command.js";
5
5
  export * from "./link.command.js";
6
6
  export * from "./publish.command.js";
7
7
  export * from "./tag.command.js";
8
+ export * from "./typecheck.command.js";
8
9
  export * from "./version.command.js";
9
10
 
10
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL2ZvcmdlL3NyYy9jb21tYW5kcy9pbmRleC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tIFwiLi9idWlsZC5jb21tYW5kLmpzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9kZXBlbmRlbmN5LmNvbW1hbmQuanNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2RvY2tlci5jb21tYW5kLmpzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9mb3JnZS5jb21tYW5kLmpzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9saW5rLmNvbW1hbmQuanNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3B1Ymxpc2guY29tbWFuZC5qc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vdGFnLmNvbW1hbmQuanNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3ZlcnNpb24uY29tbWFuZC5qc1wiO1xuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMscUJBQXFCO0FBQ25DLGNBQWMsMEJBQTBCO0FBQ3hDLGNBQWMsc0JBQXNCO0FBQ3BDLGNBQWMscUJBQXFCO0FBQ25DLGNBQWMsb0JBQW9CO0FBQ2xDLGNBQWMsdUJBQXVCO0FBQ3JDLGNBQWMsbUJBQW1CO0FBQ2pDLGNBQWMsdUJBQXVCIn0=
11
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL2ZvcmdlL3NyYy9jb21tYW5kcy9pbmRleC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tIFwiLi9idWlsZC5jb21tYW5kLmpzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9kZXBlbmRlbmN5LmNvbW1hbmQuanNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2RvY2tlci5jb21tYW5kLmpzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9mb3JnZS5jb21tYW5kLmpzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9saW5rLmNvbW1hbmQuanNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3B1Ymxpc2guY29tbWFuZC5qc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vdGFnLmNvbW1hbmQuanNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3R5cGVjaGVjay5jb21tYW5kLmpzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi92ZXJzaW9uLmNvbW1hbmQuanNcIjtcbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLHFCQUFxQjtBQUNuQyxjQUFjLDBCQUEwQjtBQUN4QyxjQUFjLHNCQUFzQjtBQUNwQyxjQUFjLHFCQUFxQjtBQUNuQyxjQUFjLG9CQUFvQjtBQUNsQyxjQUFjLHVCQUF1QjtBQUNyQyxjQUFjLG1CQUFtQjtBQUNqQyxjQUFjLHlCQUF5QjtBQUN2QyxjQUFjLHVCQUF1QiJ9
@@ -0,0 +1,16 @@
1
+ import { ConfigurationOption, DecohereCommand } from "@decohere/nexus/cli";
2
+ import { TypeCheck } from "../actions/typecheck.action.js";
3
+ export class TypeCheckCommand extends DecohereCommand {
4
+ get actions() {
5
+ return [
6
+ TypeCheck
7
+ ];
8
+ }
9
+ constructor(name){
10
+ super(name);
11
+ this.description("Type-check workspace projects without emitting files");
12
+ this.addOption(new ConfigurationOption("debug"));
13
+ }
14
+ }
15
+
16
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL2ZvcmdlL3NyYy9jb21tYW5kcy90eXBlY2hlY2suY29tbWFuZC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb25maWd1cmF0aW9uT3B0aW9uLCBEZWNvaGVyZUNvbW1hbmQgfSBmcm9tIFwiQGRlY29oZXJlL25leHVzL2NsaVwiO1xuaW1wb3J0IHsgVHlwZUNoZWNrIH0gZnJvbSBcIi4uL2FjdGlvbnMvdHlwZWNoZWNrLmFjdGlvbi5qc1wiO1xuXG5leHBvcnQgY2xhc3MgVHlwZUNoZWNrQ29tbWFuZCBleHRlbmRzIERlY29oZXJlQ29tbWFuZCB7XG5cdHB1YmxpYyBvdmVycmlkZSBnZXQgYWN0aW9ucygpIHtcblx0XHRyZXR1cm4gW1R5cGVDaGVja107XG5cdH1cblxuXHRwdWJsaWMgY29uc3RydWN0b3IobmFtZTogc3RyaW5nKSB7XG5cdFx0c3VwZXIobmFtZSk7XG5cdFx0dGhpcy5kZXNjcmlwdGlvbihcIlR5cGUtY2hlY2sgd29ya3NwYWNlIHByb2plY3RzIHdpdGhvdXQgZW1pdHRpbmcgZmlsZXNcIik7XG5cdFx0dGhpcy5hZGRPcHRpb24obmV3IENvbmZpZ3VyYXRpb25PcHRpb24oXCJkZWJ1Z1wiKSk7XG5cdH1cbn1cbiJdLCJuYW1lcyI6WyJDb25maWd1cmF0aW9uT3B0aW9uIiwiRGVjb2hlcmVDb21tYW5kIiwiVHlwZUNoZWNrIiwiVHlwZUNoZWNrQ29tbWFuZCIsImFjdGlvbnMiLCJuYW1lIiwiZGVzY3JpcHRpb24iLCJhZGRPcHRpb24iXSwibWFwcGluZ3MiOiJBQUFBLFNBQVNBLG1CQUFtQixFQUFFQyxlQUFlLFFBQVEsc0JBQXNCO0FBQzNFLFNBQVNDLFNBQVMsUUFBUSxpQ0FBaUM7QUFFM0QsT0FBTyxNQUFNQyx5QkFBeUJGO0lBQ3JDLElBQW9CRyxVQUFVO1FBQzdCLE9BQU87WUFBQ0Y7U0FBVTtJQUNuQjtJQUVBLFlBQW1CRyxJQUFZLENBQUU7UUFDaEMsS0FBSyxDQUFDQTtRQUNOLElBQUksQ0FBQ0MsV0FBVyxDQUFDO1FBQ2pCLElBQUksQ0FBQ0MsU0FBUyxDQUFDLElBQUlQLG9CQUFvQjtJQUN4QztBQUNEIn0=
@@ -23,6 +23,7 @@ export class ForgeModule extends ModuleManifest {
23
23
  reportDependencies: Actions.ReportDependencies,
24
24
  version: Actions.Version,
25
25
  tag: Actions.Tag,
26
+ typecheck: Actions.TypeCheck,
26
27
  commitFiles: Actions.CommitFiles,
27
28
  link: Actions.Link,
28
29
  unlink: Actions.Unlink
@@ -34,10 +35,12 @@ export class ForgeModule extends ModuleManifest {
34
35
  docker: Commands.DockerCommand,
35
36
  version: Commands.VersionCommand,
36
37
  tag: Commands.TagCommand,
38
+ typecheck: Commands.TypeCheckCommand,
37
39
  link: Commands.LinkCommand,
38
40
  unlink: Commands.UnlinkCommand
39
41
  };
40
42
  registerServices(builder) {
43
+ builder.registerSingleton(TypeEmitter);
41
44
  builder.registerSingleton(TransformerKey, SwcTranspiler);
42
45
  builder.registerSingleton(TransformerKey, TypeEmitter);
43
46
  builder.registerSingleton(DependencyResolver);
@@ -61,4 +64,4 @@ export class ForgeModule extends ModuleManifest {
61
64
  }
62
65
  }
63
66
 
64
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL2ZvcmdlL3NyYy9mb3JnZS5tb2R1bGUudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVXNlckNvbmZpZ0ZhY3RvcnksIFdvcmtzcGFjZUZhY3RvcnkgfSBmcm9tIFwiQGRlY29oZXJlL21lc2hcIjtcbmltcG9ydCB0eXBlIHsgV29ya3NwYWNlRmFjdG9yeU9wdGlvbnMgfSBmcm9tIFwiQGRlY29oZXJlL25leHVzL2NsaVwiO1xuaW1wb3J0IHsgTW9kdWxlTWFuaWZlc3QgfSBmcm9tIFwiQGRlY29oZXJlL25leHVzL2NsaVwiO1xuaW1wb3J0IHR5cGUgeyBDb250YWluZXJCdWlsZGVyIH0gZnJvbSBcIkBkZWNvaGVyZS9uZXh1cy9jb21wb3NpdGlvblwiO1xuaW1wb3J0ICogYXMgQWN0aW9ucyBmcm9tIFwiLi9hY3Rpb25zL2luZGV4LmpzXCI7XG5pbXBvcnQgKiBhcyBDb21tYW5kcyBmcm9tIFwiLi9jb21tYW5kcy9pbmRleC5qc1wiO1xuaW1wb3J0IHsgRGVwZW5kZW5jeVJlc29sdmVyIH0gZnJvbSBcIi4vc2VydmljZXMvZGVwZW5kZW5jeS1yZXNvbHZlci5zZXJ2aWNlLmpzXCI7XG5pbXBvcnQgeyBGaWxlV3JpdGVyU2VydmljZSB9IGZyb20gXCIuL3NlcnZpY2VzL2ZpbGUtd3JpdGVyLnNlcnZpY2UuanNcIjtcbmltcG9ydCB7IFN3Y1RyYW5zcGlsZXIgfSBmcm9tIFwiLi9zZXJ2aWNlcy9zd2MtdHJhbnNwaWxlci5qc1wiO1xuaW1wb3J0IHsgVHlwZUVtaXR0ZXIgfSBmcm9tIFwiLi9zZXJ2aWNlcy90eXBlLWVtaXR0ZXIuanNcIjtcbmltcG9ydCB7IFRyYW5zZm9ybWVyS2V5IH0gZnJvbSBcIi4vdHlwZXMvdHJhbnNmb3JtZXIudHlwZS5qc1wiO1xuaW1wb3J0IHsgRGVmYXVsdENvbmZpZ3VyYXRpb25zLCBXb3Jrc3BhY2VEZWZhdWx0cyB9IGZyb20gXCIuL3dvcmtzcGFjZS5jb25maWcuanNcIjtcblxuZXhwb3J0IGNsYXNzIEZvcmdlTW9kdWxlIGV4dGVuZHMgTW9kdWxlTWFuaWZlc3Qge1xuXHRwdWJsaWMgcmVhZG9ubHkgaWQgPSBcImZvcmdlXCI7XG5cdHB1YmxpYyByZWFkb25seSBjb21tYW5kID0gQ29tbWFuZHMuRm9yZ2VDb21tYW5kO1xuXHRwdWJsaWMgcmVhZG9ubHkgYWN0aW9ucyA9IHtcblx0XHRjbGVhbjogQWN0aW9ucy5DbGVhbixcblx0XHRjb3B5OiBBY3Rpb25zLkNvcHksXG5cdFx0ZG9ja2VyOiBBY3Rpb25zLkRvY2tlcixcblx0XHRidWlsZDogQWN0aW9ucy5CdWlsZCxcblx0XHR3YXRjaDogQWN0aW9ucy5XYXRjaCxcblx0XHRwdWJsaXNoOiBBY3Rpb25zLlB1Ymxpc2gsXG5cdFx0c3luY0RlcGVuZGVuY2llczogQWN0aW9ucy5TeW5jRGVwZW5kZW5jaWVzLFxuXHRcdHN5bmNMb2NrRmlsZTogQWN0aW9ucy5TeW5jTG9ja0ZpbGUsXG5cdFx0cmVwb3J0RGVwZW5kZW5jaWVzOiBBY3Rpb25zLlJlcG9ydERlcGVuZGVuY2llcyxcblx0XHR2ZXJzaW9uOiBBY3Rpb25zLlZlcnNpb24sXG5cdFx0dGFnOiBBY3Rpb25zLlRhZyxcblx0XHRjb21taXRGaWxlczogQWN0aW9ucy5Db21taXRGaWxlcyxcblx0XHRsaW5rOiBBY3Rpb25zLkxpbmssXG5cdFx0dW5saW5rOiBBY3Rpb25zLlVubGluayxcblx0fTtcblx0cHVibGljIHJlYWRvbmx5IGNvbW1hbmRzID0ge1xuXHRcdGJ1aWxkOiBDb21tYW5kcy5CdWlsZENvbW1hbmQsXG5cdFx0cHVibGlzaDogQ29tbWFuZHMuUHVibGlzaENvbW1hbmQsXG5cdFx0ZGVwZW5kZW5jaWVzOiBDb21tYW5kcy5EZXBlbmRlbmN5Q29tbWFuZCxcblx0XHRkb2NrZXI6IENvbW1hbmRzLkRvY2tlckNvbW1hbmQsXG5cdFx0dmVyc2lvbjogQ29tbWFuZHMuVmVyc2lvbkNvbW1hbmQsXG5cdFx0dGFnOiBDb21tYW5kcy5UYWdDb21tYW5kLFxuXHRcdGxpbms6IENvbW1hbmRzLkxpbmtDb21tYW5kLFxuXHRcdHVubGluazogQ29tbWFuZHMuVW5saW5rQ29tbWFuZCxcblx0fTtcblxuXHRwdWJsaWMgcmVnaXN0ZXJTZXJ2aWNlcyhidWlsZGVyOiBDb250YWluZXJCdWlsZGVyKSB7XG5cdFx0YnVpbGRlci5yZWdpc3RlclNpbmdsZXRvbihUcmFuc2Zvcm1lcktleSwgU3djVHJhbnNwaWxlcik7XG5cdFx0YnVpbGRlci5yZWdpc3RlclNpbmdsZXRvbihUcmFuc2Zvcm1lcktleSwgVHlwZUVtaXR0ZXIpO1xuXHRcdGJ1aWxkZXIucmVnaXN0ZXJTaW5nbGV0b24oRGVwZW5kZW5jeVJlc29sdmVyKTtcblx0XHRidWlsZGVyLnJlZ2lzdGVyU2luZ2xldG9uKEZpbGVXcml0ZXJTZXJ2aWNlKTtcblx0fVxuXG5cdHB1YmxpYyBvdmVycmlkZSBhc3luYyBjcmVhdGVXb3Jrc3BhY2Uob3B0aW9uczogV29ya3NwYWNlRmFjdG9yeU9wdGlvbnMpIHtcblx0XHRjb25zdCB7IGNvbmZpZ3VyYXRpb25zOiBfLCAuLi5mb3JnZURlZmF1bHRzIH0gPSBXb3Jrc3BhY2VEZWZhdWx0cztcblx0XHRjb25zdCB1c2VyQ29uZmlnID0gYXdhaXQgVXNlckNvbmZpZ0ZhY3RvcnkuZ2V0VXNlckNvbmZpZyhvcHRpb25zLmNvbmZpZ0ZpbGUpO1xuXHRcdC8vIE9ubHkgYXBwbHkgZm9yZ2UgZGVmYXVsdCBjb25maWd1cmF0aW9ucyB3aGVuIHVzZXIgY29uZmlnIGRvZXNuJ3QgcHJvdmlkZSBhbnkuXG5cdFx0Ly8gVGhpcyBlbnN1cmVzIHVzZXItZGVmaW5lZCBjb25maWd1cmF0aW9ucyB0YWtlIHByaW9yaXR5IHdoaWxlIHN0aWxsIHByb3ZpZGluZ1xuXHRcdC8vIHNlbnNpYmxlIGRlZmF1bHRzIChkZWJ1ZyArIHJlbGVhc2UpIHdoZW4gbm8gY29uZmlnIGZpbGUgaXMgcHJlc2VudC5cblx0XHRjb25zdCBjb25maWd1cmF0aW9ucyA9IHVzZXJDb25maWcuY29uZmlndXJhdGlvbnM/Lmxlbmd0aFxuXHRcdFx0PyB1bmRlZmluZWRcblx0XHRcdDogRGVmYXVsdENvbmZpZ3VyYXRpb25zO1xuXHRcdHJldHVybiBXb3Jrc3BhY2VGYWN0b3J5LmNyZWF0ZSh7XG5cdFx0XHQuLi5mb3JnZURlZmF1bHRzLFxuXHRcdFx0Li4uKGNvbmZpZ3VyYXRpb25zID8geyBjb25maWd1cmF0aW9ucyB9IDoge30pLFxuXHRcdFx0Y29uZmlnRmlsZTogb3B0aW9ucy5jb25maWdGaWxlLFxuXHRcdFx0cm9vdERpcjogb3B0aW9ucy5yb290RGlyID8/IFdvcmtzcGFjZURlZmF1bHRzLnJvb3REaXIsXG5cdFx0fSk7XG5cdH1cbn1cbiJdLCJuYW1lcyI6WyJVc2VyQ29uZmlnRmFjdG9yeSIsIldvcmtzcGFjZUZhY3RvcnkiLCJNb2R1bGVNYW5pZmVzdCIsIkFjdGlvbnMiLCJDb21tYW5kcyIsIkRlcGVuZGVuY3lSZXNvbHZlciIsIkZpbGVXcml0ZXJTZXJ2aWNlIiwiU3djVHJhbnNwaWxlciIsIlR5cGVFbWl0dGVyIiwiVHJhbnNmb3JtZXJLZXkiLCJEZWZhdWx0Q29uZmlndXJhdGlvbnMiLCJXb3Jrc3BhY2VEZWZhdWx0cyIsIkZvcmdlTW9kdWxlIiwiaWQiLCJjb21tYW5kIiwiRm9yZ2VDb21tYW5kIiwiYWN0aW9ucyIsImNsZWFuIiwiQ2xlYW4iLCJjb3B5IiwiQ29weSIsImRvY2tlciIsIkRvY2tlciIsImJ1aWxkIiwiQnVpbGQiLCJ3YXRjaCIsIldhdGNoIiwicHVibGlzaCIsIlB1Ymxpc2giLCJzeW5jRGVwZW5kZW5jaWVzIiwiU3luY0RlcGVuZGVuY2llcyIsInN5bmNMb2NrRmlsZSIsIlN5bmNMb2NrRmlsZSIsInJlcG9ydERlcGVuZGVuY2llcyIsIlJlcG9ydERlcGVuZGVuY2llcyIsInZlcnNpb24iLCJWZXJzaW9uIiwidGFnIiwiVGFnIiwiY29tbWl0RmlsZXMiLCJDb21taXRGaWxlcyIsImxpbmsiLCJMaW5rIiwidW5saW5rIiwiVW5saW5rIiwiY29tbWFuZHMiLCJCdWlsZENvbW1hbmQiLCJQdWJsaXNoQ29tbWFuZCIsImRlcGVuZGVuY2llcyIsIkRlcGVuZGVuY3lDb21tYW5kIiwiRG9ja2VyQ29tbWFuZCIsIlZlcnNpb25Db21tYW5kIiwiVGFnQ29tbWFuZCIsIkxpbmtDb21tYW5kIiwiVW5saW5rQ29tbWFuZCIsInJlZ2lzdGVyU2VydmljZXMiLCJidWlsZGVyIiwicmVnaXN0ZXJTaW5nbGV0b24iLCJjcmVhdGVXb3Jrc3BhY2UiLCJvcHRpb25zIiwiY29uZmlndXJhdGlvbnMiLCJfIiwiZm9yZ2VEZWZhdWx0cyIsInVzZXJDb25maWciLCJnZXRVc2VyQ29uZmlnIiwiY29uZmlnRmlsZSIsImxlbmd0aCIsInVuZGVmaW5lZCIsImNyZWF0ZSIsInJvb3REaXIiXSwibWFwcGluZ3MiOiJBQUFBLFNBQVNBLGlCQUFpQixFQUFFQyxnQkFBZ0IsUUFBUSxpQkFBaUI7QUFFckUsU0FBU0MsY0FBYyxRQUFRLHNCQUFzQjtBQUVyRCxZQUFZQyxhQUFhLHFCQUFxQjtBQUM5QyxZQUFZQyxjQUFjLHNCQUFzQjtBQUNoRCxTQUFTQyxrQkFBa0IsUUFBUSw0Q0FBNEM7QUFDL0UsU0FBU0MsaUJBQWlCLFFBQVEsb0NBQW9DO0FBQ3RFLFNBQVNDLGFBQWEsUUFBUSwrQkFBK0I7QUFDN0QsU0FBU0MsV0FBVyxRQUFRLDZCQUE2QjtBQUN6RCxTQUFTQyxjQUFjLFFBQVEsOEJBQThCO0FBQzdELFNBQVNDLHFCQUFxQixFQUFFQyxpQkFBaUIsUUFBUSx3QkFBd0I7QUFFakYsT0FBTyxNQUFNQyxvQkFBb0JWO0lBQ2hCVyxLQUFLLFFBQVE7SUFDYkMsVUFBVVYsU0FBU1csWUFBWSxDQUFDO0lBQ2hDQyxVQUFVO1FBQ3pCQyxPQUFPZCxRQUFRZSxLQUFLO1FBQ3BCQyxNQUFNaEIsUUFBUWlCLElBQUk7UUFDbEJDLFFBQVFsQixRQUFRbUIsTUFBTTtRQUN0QkMsT0FBT3BCLFFBQVFxQixLQUFLO1FBQ3BCQyxPQUFPdEIsUUFBUXVCLEtBQUs7UUFDcEJDLFNBQVN4QixRQUFReUIsT0FBTztRQUN4QkMsa0JBQWtCMUIsUUFBUTJCLGdCQUFnQjtRQUMxQ0MsY0FBYzVCLFFBQVE2QixZQUFZO1FBQ2xDQyxvQkFBb0I5QixRQUFRK0Isa0JBQWtCO1FBQzlDQyxTQUFTaEMsUUFBUWlDLE9BQU87UUFDeEJDLEtBQUtsQyxRQUFRbUMsR0FBRztRQUNoQkMsYUFBYXBDLFFBQVFxQyxXQUFXO1FBQ2hDQyxNQUFNdEMsUUFBUXVDLElBQUk7UUFDbEJDLFFBQVF4QyxRQUFReUMsTUFBTTtJQUN2QixFQUFFO0lBQ2NDLFdBQVc7UUFDMUJ0QixPQUFPbkIsU0FBUzBDLFlBQVk7UUFDNUJuQixTQUFTdkIsU0FBUzJDLGNBQWM7UUFDaENDLGNBQWM1QyxTQUFTNkMsaUJBQWlCO1FBQ3hDNUIsUUFBUWpCLFNBQVM4QyxhQUFhO1FBQzlCZixTQUFTL0IsU0FBUytDLGNBQWM7UUFDaENkLEtBQUtqQyxTQUFTZ0QsVUFBVTtRQUN4QlgsTUFBTXJDLFNBQVNpRCxXQUFXO1FBQzFCVixRQUFRdkMsU0FBU2tELGFBQWE7SUFDL0IsRUFBRTtJQUVLQyxpQkFBaUJDLE9BQXlCLEVBQUU7UUFDbERBLFFBQVFDLGlCQUFpQixDQUFDaEQsZ0JBQWdCRjtRQUMxQ2lELFFBQVFDLGlCQUFpQixDQUFDaEQsZ0JBQWdCRDtRQUMxQ2dELFFBQVFDLGlCQUFpQixDQUFDcEQ7UUFDMUJtRCxRQUFRQyxpQkFBaUIsQ0FBQ25EO0lBQzNCO0lBRUEsTUFBc0JvRCxnQkFBZ0JDLE9BQWdDLEVBQUU7UUFDdkUsTUFBTSxFQUFFQyxnQkFBZ0JDLENBQUMsRUFBRSxHQUFHQyxlQUFlLEdBQUduRDtRQUNoRCxNQUFNb0QsYUFBYSxNQUFNL0Qsa0JBQWtCZ0UsYUFBYSxDQUFDTCxRQUFRTSxVQUFVO1FBQzNFLGdGQUFnRjtRQUNoRiwrRUFBK0U7UUFDL0Usc0VBQXNFO1FBQ3RFLE1BQU1MLGlCQUFpQkcsV0FBV0gsY0FBYyxFQUFFTSxTQUMvQ0MsWUFDQXpEO1FBQ0gsT0FBT1QsaUJBQWlCbUUsTUFBTSxDQUFDO1lBQzlCLEdBQUdOLGFBQWE7WUFDaEIsR0FBSUYsaUJBQWlCO2dCQUFFQTtZQUFlLElBQUksQ0FBQyxDQUFDO1lBQzVDSyxZQUFZTixRQUFRTSxVQUFVO1lBQzlCSSxTQUFTVixRQUFRVSxPQUFPLElBQUkxRCxrQkFBa0IwRCxPQUFPO1FBQ3REO0lBQ0Q7QUFDRCJ9
67
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL2ZvcmdlL3NyYy9mb3JnZS5tb2R1bGUudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVXNlckNvbmZpZ0ZhY3RvcnksIFdvcmtzcGFjZUZhY3RvcnkgfSBmcm9tIFwiQGRlY29oZXJlL21lc2hcIjtcbmltcG9ydCB0eXBlIHsgV29ya3NwYWNlRmFjdG9yeU9wdGlvbnMgfSBmcm9tIFwiQGRlY29oZXJlL25leHVzL2NsaVwiO1xuaW1wb3J0IHsgTW9kdWxlTWFuaWZlc3QgfSBmcm9tIFwiQGRlY29oZXJlL25leHVzL2NsaVwiO1xuaW1wb3J0IHR5cGUgeyBDb250YWluZXJCdWlsZGVyIH0gZnJvbSBcIkBkZWNvaGVyZS9uZXh1cy9jb21wb3NpdGlvblwiO1xuaW1wb3J0ICogYXMgQWN0aW9ucyBmcm9tIFwiLi9hY3Rpb25zL2luZGV4LmpzXCI7XG5pbXBvcnQgKiBhcyBDb21tYW5kcyBmcm9tIFwiLi9jb21tYW5kcy9pbmRleC5qc1wiO1xuaW1wb3J0IHsgRGVwZW5kZW5jeVJlc29sdmVyIH0gZnJvbSBcIi4vc2VydmljZXMvZGVwZW5kZW5jeS1yZXNvbHZlci5zZXJ2aWNlLmpzXCI7XG5pbXBvcnQgeyBGaWxlV3JpdGVyU2VydmljZSB9IGZyb20gXCIuL3NlcnZpY2VzL2ZpbGUtd3JpdGVyLnNlcnZpY2UuanNcIjtcbmltcG9ydCB7IFN3Y1RyYW5zcGlsZXIgfSBmcm9tIFwiLi9zZXJ2aWNlcy9zd2MtdHJhbnNwaWxlci5qc1wiO1xuaW1wb3J0IHsgVHlwZUVtaXR0ZXIgfSBmcm9tIFwiLi9zZXJ2aWNlcy90eXBlLWVtaXR0ZXIuanNcIjtcbmltcG9ydCB7IFRyYW5zZm9ybWVyS2V5IH0gZnJvbSBcIi4vdHlwZXMvdHJhbnNmb3JtZXIudHlwZS5qc1wiO1xuaW1wb3J0IHsgRGVmYXVsdENvbmZpZ3VyYXRpb25zLCBXb3Jrc3BhY2VEZWZhdWx0cyB9IGZyb20gXCIuL3dvcmtzcGFjZS5jb25maWcuanNcIjtcblxuZXhwb3J0IGNsYXNzIEZvcmdlTW9kdWxlIGV4dGVuZHMgTW9kdWxlTWFuaWZlc3Qge1xuXHRwdWJsaWMgcmVhZG9ubHkgaWQgPSBcImZvcmdlXCI7XG5cdHB1YmxpYyByZWFkb25seSBjb21tYW5kID0gQ29tbWFuZHMuRm9yZ2VDb21tYW5kO1xuXHRwdWJsaWMgcmVhZG9ubHkgYWN0aW9ucyA9IHtcblx0XHRjbGVhbjogQWN0aW9ucy5DbGVhbixcblx0XHRjb3B5OiBBY3Rpb25zLkNvcHksXG5cdFx0ZG9ja2VyOiBBY3Rpb25zLkRvY2tlcixcblx0XHRidWlsZDogQWN0aW9ucy5CdWlsZCxcblx0XHR3YXRjaDogQWN0aW9ucy5XYXRjaCxcblx0XHRwdWJsaXNoOiBBY3Rpb25zLlB1Ymxpc2gsXG5cdFx0c3luY0RlcGVuZGVuY2llczogQWN0aW9ucy5TeW5jRGVwZW5kZW5jaWVzLFxuXHRcdHN5bmNMb2NrRmlsZTogQWN0aW9ucy5TeW5jTG9ja0ZpbGUsXG5cdFx0cmVwb3J0RGVwZW5kZW5jaWVzOiBBY3Rpb25zLlJlcG9ydERlcGVuZGVuY2llcyxcblx0XHR2ZXJzaW9uOiBBY3Rpb25zLlZlcnNpb24sXG5cdFx0dGFnOiBBY3Rpb25zLlRhZyxcblx0XHR0eXBlY2hlY2s6IEFjdGlvbnMuVHlwZUNoZWNrLFxuXHRcdGNvbW1pdEZpbGVzOiBBY3Rpb25zLkNvbW1pdEZpbGVzLFxuXHRcdGxpbms6IEFjdGlvbnMuTGluayxcblx0XHR1bmxpbms6IEFjdGlvbnMuVW5saW5rLFxuXHR9O1xuXHRwdWJsaWMgcmVhZG9ubHkgY29tbWFuZHMgPSB7XG5cdFx0YnVpbGQ6IENvbW1hbmRzLkJ1aWxkQ29tbWFuZCxcblx0XHRwdWJsaXNoOiBDb21tYW5kcy5QdWJsaXNoQ29tbWFuZCxcblx0XHRkZXBlbmRlbmNpZXM6IENvbW1hbmRzLkRlcGVuZGVuY3lDb21tYW5kLFxuXHRcdGRvY2tlcjogQ29tbWFuZHMuRG9ja2VyQ29tbWFuZCxcblx0XHR2ZXJzaW9uOiBDb21tYW5kcy5WZXJzaW9uQ29tbWFuZCxcblx0XHR0YWc6IENvbW1hbmRzLlRhZ0NvbW1hbmQsXG5cdFx0dHlwZWNoZWNrOiBDb21tYW5kcy5UeXBlQ2hlY2tDb21tYW5kLFxuXHRcdGxpbms6IENvbW1hbmRzLkxpbmtDb21tYW5kLFxuXHRcdHVubGluazogQ29tbWFuZHMuVW5saW5rQ29tbWFuZCxcblx0fTtcblxuXHRwdWJsaWMgcmVnaXN0ZXJTZXJ2aWNlcyhidWlsZGVyOiBDb250YWluZXJCdWlsZGVyKSB7XG5cdFx0YnVpbGRlci5yZWdpc3RlclNpbmdsZXRvbihUeXBlRW1pdHRlcik7XG5cdFx0YnVpbGRlci5yZWdpc3RlclNpbmdsZXRvbihUcmFuc2Zvcm1lcktleSwgU3djVHJhbnNwaWxlcik7XG5cdFx0YnVpbGRlci5yZWdpc3RlclNpbmdsZXRvbihUcmFuc2Zvcm1lcktleSwgVHlwZUVtaXR0ZXIpO1xuXHRcdGJ1aWxkZXIucmVnaXN0ZXJTaW5nbGV0b24oRGVwZW5kZW5jeVJlc29sdmVyKTtcblx0XHRidWlsZGVyLnJlZ2lzdGVyU2luZ2xldG9uKEZpbGVXcml0ZXJTZXJ2aWNlKTtcblx0fVxuXG5cdHB1YmxpYyBvdmVycmlkZSBhc3luYyBjcmVhdGVXb3Jrc3BhY2Uob3B0aW9uczogV29ya3NwYWNlRmFjdG9yeU9wdGlvbnMpIHtcblx0XHRjb25zdCB7IGNvbmZpZ3VyYXRpb25zOiBfLCAuLi5mb3JnZURlZmF1bHRzIH0gPSBXb3Jrc3BhY2VEZWZhdWx0cztcblx0XHRjb25zdCB1c2VyQ29uZmlnID0gYXdhaXQgVXNlckNvbmZpZ0ZhY3RvcnkuZ2V0VXNlckNvbmZpZyhvcHRpb25zLmNvbmZpZ0ZpbGUpO1xuXHRcdC8vIE9ubHkgYXBwbHkgZm9yZ2UgZGVmYXVsdCBjb25maWd1cmF0aW9ucyB3aGVuIHVzZXIgY29uZmlnIGRvZXNuJ3QgcHJvdmlkZSBhbnkuXG5cdFx0Ly8gVGhpcyBlbnN1cmVzIHVzZXItZGVmaW5lZCBjb25maWd1cmF0aW9ucyB0YWtlIHByaW9yaXR5IHdoaWxlIHN0aWxsIHByb3ZpZGluZ1xuXHRcdC8vIHNlbnNpYmxlIGRlZmF1bHRzIChkZWJ1ZyArIHJlbGVhc2UpIHdoZW4gbm8gY29uZmlnIGZpbGUgaXMgcHJlc2VudC5cblx0XHRjb25zdCBjb25maWd1cmF0aW9ucyA9IHVzZXJDb25maWcuY29uZmlndXJhdGlvbnM/Lmxlbmd0aFxuXHRcdFx0PyB1bmRlZmluZWRcblx0XHRcdDogRGVmYXVsdENvbmZpZ3VyYXRpb25zO1xuXHRcdHJldHVybiBXb3Jrc3BhY2VGYWN0b3J5LmNyZWF0ZSh7XG5cdFx0XHQuLi5mb3JnZURlZmF1bHRzLFxuXHRcdFx0Li4uKGNvbmZpZ3VyYXRpb25zID8geyBjb25maWd1cmF0aW9ucyB9IDoge30pLFxuXHRcdFx0Y29uZmlnRmlsZTogb3B0aW9ucy5jb25maWdGaWxlLFxuXHRcdFx0cm9vdERpcjogb3B0aW9ucy5yb290RGlyID8/IFdvcmtzcGFjZURlZmF1bHRzLnJvb3REaXIsXG5cdFx0fSk7XG5cdH1cbn1cbiJdLCJuYW1lcyI6WyJVc2VyQ29uZmlnRmFjdG9yeSIsIldvcmtzcGFjZUZhY3RvcnkiLCJNb2R1bGVNYW5pZmVzdCIsIkFjdGlvbnMiLCJDb21tYW5kcyIsIkRlcGVuZGVuY3lSZXNvbHZlciIsIkZpbGVXcml0ZXJTZXJ2aWNlIiwiU3djVHJhbnNwaWxlciIsIlR5cGVFbWl0dGVyIiwiVHJhbnNmb3JtZXJLZXkiLCJEZWZhdWx0Q29uZmlndXJhdGlvbnMiLCJXb3Jrc3BhY2VEZWZhdWx0cyIsIkZvcmdlTW9kdWxlIiwiaWQiLCJjb21tYW5kIiwiRm9yZ2VDb21tYW5kIiwiYWN0aW9ucyIsImNsZWFuIiwiQ2xlYW4iLCJjb3B5IiwiQ29weSIsImRvY2tlciIsIkRvY2tlciIsImJ1aWxkIiwiQnVpbGQiLCJ3YXRjaCIsIldhdGNoIiwicHVibGlzaCIsIlB1Ymxpc2giLCJzeW5jRGVwZW5kZW5jaWVzIiwiU3luY0RlcGVuZGVuY2llcyIsInN5bmNMb2NrRmlsZSIsIlN5bmNMb2NrRmlsZSIsInJlcG9ydERlcGVuZGVuY2llcyIsIlJlcG9ydERlcGVuZGVuY2llcyIsInZlcnNpb24iLCJWZXJzaW9uIiwidGFnIiwiVGFnIiwidHlwZWNoZWNrIiwiVHlwZUNoZWNrIiwiY29tbWl0RmlsZXMiLCJDb21taXRGaWxlcyIsImxpbmsiLCJMaW5rIiwidW5saW5rIiwiVW5saW5rIiwiY29tbWFuZHMiLCJCdWlsZENvbW1hbmQiLCJQdWJsaXNoQ29tbWFuZCIsImRlcGVuZGVuY2llcyIsIkRlcGVuZGVuY3lDb21tYW5kIiwiRG9ja2VyQ29tbWFuZCIsIlZlcnNpb25Db21tYW5kIiwiVGFnQ29tbWFuZCIsIlR5cGVDaGVja0NvbW1hbmQiLCJMaW5rQ29tbWFuZCIsIlVubGlua0NvbW1hbmQiLCJyZWdpc3RlclNlcnZpY2VzIiwiYnVpbGRlciIsInJlZ2lzdGVyU2luZ2xldG9uIiwiY3JlYXRlV29ya3NwYWNlIiwib3B0aW9ucyIsImNvbmZpZ3VyYXRpb25zIiwiXyIsImZvcmdlRGVmYXVsdHMiLCJ1c2VyQ29uZmlnIiwiZ2V0VXNlckNvbmZpZyIsImNvbmZpZ0ZpbGUiLCJsZW5ndGgiLCJ1bmRlZmluZWQiLCJjcmVhdGUiLCJyb290RGlyIl0sIm1hcHBpbmdzIjoiQUFBQSxTQUFTQSxpQkFBaUIsRUFBRUMsZ0JBQWdCLFFBQVEsaUJBQWlCO0FBRXJFLFNBQVNDLGNBQWMsUUFBUSxzQkFBc0I7QUFFckQsWUFBWUMsYUFBYSxxQkFBcUI7QUFDOUMsWUFBWUMsY0FBYyxzQkFBc0I7QUFDaEQsU0FBU0Msa0JBQWtCLFFBQVEsNENBQTRDO0FBQy9FLFNBQVNDLGlCQUFpQixRQUFRLG9DQUFvQztBQUN0RSxTQUFTQyxhQUFhLFFBQVEsK0JBQStCO0FBQzdELFNBQVNDLFdBQVcsUUFBUSw2QkFBNkI7QUFDekQsU0FBU0MsY0FBYyxRQUFRLDhCQUE4QjtBQUM3RCxTQUFTQyxxQkFBcUIsRUFBRUMsaUJBQWlCLFFBQVEsd0JBQXdCO0FBRWpGLE9BQU8sTUFBTUMsb0JBQW9CVjtJQUNoQlcsS0FBSyxRQUFRO0lBQ2JDLFVBQVVWLFNBQVNXLFlBQVksQ0FBQztJQUNoQ0MsVUFBVTtRQUN6QkMsT0FBT2QsUUFBUWUsS0FBSztRQUNwQkMsTUFBTWhCLFFBQVFpQixJQUFJO1FBQ2xCQyxRQUFRbEIsUUFBUW1CLE1BQU07UUFDdEJDLE9BQU9wQixRQUFRcUIsS0FBSztRQUNwQkMsT0FBT3RCLFFBQVF1QixLQUFLO1FBQ3BCQyxTQUFTeEIsUUFBUXlCLE9BQU87UUFDeEJDLGtCQUFrQjFCLFFBQVEyQixnQkFBZ0I7UUFDMUNDLGNBQWM1QixRQUFRNkIsWUFBWTtRQUNsQ0Msb0JBQW9COUIsUUFBUStCLGtCQUFrQjtRQUM5Q0MsU0FBU2hDLFFBQVFpQyxPQUFPO1FBQ3hCQyxLQUFLbEMsUUFBUW1DLEdBQUc7UUFDaEJDLFdBQVdwQyxRQUFRcUMsU0FBUztRQUM1QkMsYUFBYXRDLFFBQVF1QyxXQUFXO1FBQ2hDQyxNQUFNeEMsUUFBUXlDLElBQUk7UUFDbEJDLFFBQVExQyxRQUFRMkMsTUFBTTtJQUN2QixFQUFFO0lBQ2NDLFdBQVc7UUFDMUJ4QixPQUFPbkIsU0FBUzRDLFlBQVk7UUFDNUJyQixTQUFTdkIsU0FBUzZDLGNBQWM7UUFDaENDLGNBQWM5QyxTQUFTK0MsaUJBQWlCO1FBQ3hDOUIsUUFBUWpCLFNBQVNnRCxhQUFhO1FBQzlCakIsU0FBUy9CLFNBQVNpRCxjQUFjO1FBQ2hDaEIsS0FBS2pDLFNBQVNrRCxVQUFVO1FBQ3hCZixXQUFXbkMsU0FBU21ELGdCQUFnQjtRQUNwQ1osTUFBTXZDLFNBQVNvRCxXQUFXO1FBQzFCWCxRQUFRekMsU0FBU3FELGFBQWE7SUFDL0IsRUFBRTtJQUVLQyxpQkFBaUJDLE9BQXlCLEVBQUU7UUFDbERBLFFBQVFDLGlCQUFpQixDQUFDcEQ7UUFDMUJtRCxRQUFRQyxpQkFBaUIsQ0FBQ25ELGdCQUFnQkY7UUFDMUNvRCxRQUFRQyxpQkFBaUIsQ0FBQ25ELGdCQUFnQkQ7UUFDMUNtRCxRQUFRQyxpQkFBaUIsQ0FBQ3ZEO1FBQzFCc0QsUUFBUUMsaUJBQWlCLENBQUN0RDtJQUMzQjtJQUVBLE1BQXNCdUQsZ0JBQWdCQyxPQUFnQyxFQUFFO1FBQ3ZFLE1BQU0sRUFBRUMsZ0JBQWdCQyxDQUFDLEVBQUUsR0FBR0MsZUFBZSxHQUFHdEQ7UUFDaEQsTUFBTXVELGFBQWEsTUFBTWxFLGtCQUFrQm1FLGFBQWEsQ0FBQ0wsUUFBUU0sVUFBVTtRQUMzRSxnRkFBZ0Y7UUFDaEYsK0VBQStFO1FBQy9FLHNFQUFzRTtRQUN0RSxNQUFNTCxpQkFBaUJHLFdBQVdILGNBQWMsRUFBRU0sU0FDL0NDLFlBQ0E1RDtRQUNILE9BQU9ULGlCQUFpQnNFLE1BQU0sQ0FBQztZQUM5QixHQUFHTixhQUFhO1lBQ2hCLEdBQUlGLGlCQUFpQjtnQkFBRUE7WUFBZSxJQUFJLENBQUMsQ0FBQztZQUM1Q0ssWUFBWU4sUUFBUU0sVUFBVTtZQUM5QkksU0FBU1YsUUFBUVUsT0FBTyxJQUFJN0Qsa0JBQWtCNkQsT0FBTztRQUN0RDtJQUNEO0FBQ0QifQ==
@@ -42,13 +42,13 @@ export class TsProgramHost {
42
42
  host.getDirectories = (directoryName)=>this.getDirectories(directoryName);
43
43
  return host;
44
44
  }
45
- createProgram(files, compilerOptions, host, oldProgram) {
45
+ createProgram(files, compilerOptions, host, oldProgram, requiredOptions = REQUIRED_TYPE_EMITTER_OPTIONS) {
46
46
  const filePaths = files.map((f)=>f.fullPath);
47
47
  this.#invalidated.clear();
48
48
  return createProgram(filePaths, {
49
49
  ...DEFAULT_TYPE_EMITTER_OPTIONS,
50
50
  ...compilerOptions,
51
- ...REQUIRED_TYPE_EMITTER_OPTIONS
51
+ ...requiredOptions
52
52
  }, host, oldProgram);
53
53
  }
54
54
  readFileFromDisk(fileName) {
@@ -117,4 +117,4 @@ TsProgramHost = _ts_decorate([
117
117
  Trace
118
118
  ], TsProgramHost);
119
119
 
120
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL2ZvcmdlL3NyYy9zZXJ2aWNlcy90cy1wcm9ncmFtLWhvc3QudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGZzIGZyb20gXCJub2RlOmZzXCI7XG5pbXBvcnQgeyBjYWNoZSB9IGZyb20gXCJAZGVjb2hlcmUvbmV4dXMvY2FjaGluZ1wiO1xuaW1wb3J0IHsgVHJhY2UgfSBmcm9tIFwiQGRlY29oZXJlL25leHVzL2RpYWdub3N0aWNzXCI7XG5pbXBvcnQgdHlwZSB7IEZpbGVFeCB9IGZyb20gXCJAZGVjb2hlcmUvbmV4dXMvaW9cIjtcbmltcG9ydCB0eXBlIHRzIGZyb20gXCJ0eXBlc2NyaXB0XCI7XG5pbXBvcnQgeyBjcmVhdGVDb21waWxlckhvc3QsIGNyZWF0ZVByb2dyYW0gfSBmcm9tIFwidHlwZXNjcmlwdFwiO1xuaW1wb3J0IHtcblx0REVGQVVMVF9UWVBFX0VNSVRURVJfT1BUSU9OUyxcblx0UkVRVUlSRURfVFlQRV9FTUlUVEVSX09QVElPTlMsXG59IGZyb20gXCIuLi9zZXJ2aWNlcy90eXBlLWVtaXR0ZXIuanNcIjtcblxuLyoqXG4gKiBXcmFwcyBhIFR5cGVTY3JpcHQgQ29tcGlsZXJIb3N0IHdpdGggY2FjaGVkIGZpbGUtc3lzdGVtIGNhbGxzIHNvIHRoYXRcbiAqIHJlcGVhdGVkIHJlYWRzIGR1cmluZyBhIHNpbmdsZSBidWlsZCBkbyBub3QgaGl0IHRoZSBkaXNrIG11bHRpcGxlIHRpbWVzLlxuICpcbiAqIFNlcGFyYXRpbmcgdGhpcyBmcm9tIFR5cGVFbWl0dGVyIGtlZXBzIHRoZSB0cmFuc2Zvcm1lciBsb2dpYyByZWFkYWJsZSBhbmRcbiAqIGxldHMgdGhlIGNhY2hpbmcvcHJvZ3JhbS1jcmVhdGlvbiBjb25jZXJucyBsaXZlIGluIG9uZSBmb2N1c2VkIHBsYWNlLlxuICovXG5AVHJhY2VcbmV4cG9ydCBjbGFzcyBUc1Byb2dyYW1Ib3N0IHtcblx0I2ludmFsaWRhdGVkID0gbmV3IFNldDxzdHJpbmc+KCk7XG5cblx0cHVibGljIGludmFsaWRhdGVTb3VyY2VGaWxlKGZpbGVOYW1lOiBzdHJpbmcpOiB2b2lkIHtcblx0XHR0aGlzLiNpbnZhbGlkYXRlZC5hZGQoZmlsZU5hbWUpO1xuXHR9XG5cblx0cHVibGljIGhhc0ludmFsaWRhdGVkKCk6IGJvb2xlYW4ge1xuXHRcdHJldHVybiB0aGlzLiNpbnZhbGlkYXRlZC5zaXplID4gMDtcblx0fVxuXG5cdC8qKiBSZXR1cm5zIGEgc3RhYmxlIHN0cmluZyBrZXkgZm9yIGEgc2V0IG9mIGNvbXBpbGVyIG9wdGlvbnMgdGhhdCBhZmZlY3QgaG9zdCBiZWhhdmlvdXIuICovXG5cdHB1YmxpYyBob3N0S2V5KG9wdHM6IHRzLkNvbXBpbGVyT3B0aW9ucyk6IHN0cmluZyB7XG5cdFx0cmV0dXJuIEpTT04uc3RyaW5naWZ5KHtcblx0XHRcdHRhcmdldDogb3B0cy50YXJnZXQsXG5cdFx0XHRsaWI6IG9wdHMubGliLFxuXHRcdFx0dHlwZVJvb3RzOiBvcHRzLnR5cGVSb290cyxcblx0XHRcdHR5cGVzOiBvcHRzLnR5cGVzLFxuXHRcdFx0bW9kdWxlUmVzb2x1dGlvbjogb3B0cy5tb2R1bGVSZXNvbHV0aW9uLFxuXHRcdFx0YmFzZVVybDogb3B0cy5iYXNlVXJsLFxuXHRcdFx0cGF0aHM6IG9wdHMucGF0aHMsXG5cdFx0XHRtb2R1bGU6IG9wdHMubW9kdWxlLFxuXHRcdFx0cm9vdERpcjogb3B0cy5yb290RGlyLFxuXHRcdFx0cm9vdERpcnM6IG9wdHMucm9vdERpcnMsXG5cdFx0fSk7XG5cdH1cblxuXHRwdWJsaWMgY3JlYXRlSG9zdChjb21waWxlck9wdGlvbnM6IHRzLkNvbXBpbGVyT3B0aW9ucyk6IHRzLkNvbXBpbGVySG9zdCB7XG5cdFx0Y29uc3QgaG9zdCA9IGNyZWF0ZUNvbXBpbGVySG9zdChjb21waWxlck9wdGlvbnMpO1xuXHRcdGhvc3QuZmlsZUV4aXN0cyA9IChmaWxlTmFtZSkgPT4gdGhpcy5maWxlRXhpc3RzT25EaXNrKGZpbGVOYW1lKTtcblx0XHRob3N0LnJlYWRGaWxlID0gKGZpbGVOYW1lKSA9PiB0aGlzLnJlYWRGaWxlRnJvbURpc2soZmlsZU5hbWUpO1xuXHRcdGhvc3QuZGlyZWN0b3J5RXhpc3RzID0gKGRpcmVjdG9yeU5hbWUpID0+IHRoaXMuZGlyZWN0b3J5RXhpc3RzKGRpcmVjdG9yeU5hbWUpO1xuXHRcdGhvc3QuZ2V0RGlyZWN0b3JpZXMgPSAoZGlyZWN0b3J5TmFtZSkgPT4gdGhpcy5nZXREaXJlY3RvcmllcyhkaXJlY3RvcnlOYW1lKTtcblx0XHRyZXR1cm4gaG9zdDtcblx0fVxuXG5cdHB1YmxpYyBjcmVhdGVQcm9ncmFtKFxuXHRcdGZpbGVzOiBGaWxlRXhbXSxcblx0XHRjb21waWxlck9wdGlvbnM6IHRzLkNvbXBpbGVyT3B0aW9ucyxcblx0XHRob3N0OiB0cy5Db21waWxlckhvc3QsXG5cdFx0b2xkUHJvZ3JhbT86IHRzLlByb2dyYW0sXG5cdCk6IHRzLlByb2dyYW0ge1xuXHRcdGNvbnN0IGZpbGVQYXRocyA9IGZpbGVzLm1hcCgoZikgPT4gZi5mdWxsUGF0aCk7XG5cdFx0dGhpcy4jaW52YWxpZGF0ZWQuY2xlYXIoKTtcblx0XHRyZXR1cm4gY3JlYXRlUHJvZ3JhbShcblx0XHRcdGZpbGVQYXRocyxcblx0XHRcdHtcblx0XHRcdFx0Li4uREVGQVVMVF9UWVBFX0VNSVRURVJfT1BUSU9OUyxcblx0XHRcdFx0Li4uY29tcGlsZXJPcHRpb25zLFxuXHRcdFx0XHQuLi5SRVFVSVJFRF9UWVBFX0VNSVRURVJfT1BUSU9OUyxcblx0XHRcdH0sXG5cdFx0XHRob3N0LFxuXHRcdFx0b2xkUHJvZ3JhbSxcblx0XHQpO1xuXHR9XG5cblx0QGNhY2hlKHsgbmFtZTogXCJGSUxFX0NPTlRFTlRcIiwga2V5Rm46ICguLi5hcmdzKSA9PiBhcmdzWzBdIGFzIHN0cmluZyB9KVxuXHRwdWJsaWMgcmVhZEZpbGVGcm9tRGlzayhmaWxlTmFtZTogc3RyaW5nKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcblx0XHR0cnkge1xuXHRcdFx0cmV0dXJuIGZzLnJlYWRGaWxlU3luYyhmaWxlTmFtZSwgXCJ1dGY4XCIpO1xuXHRcdH0gY2F0Y2gge1xuXHRcdFx0cmV0dXJuIHVuZGVmaW5lZDtcblx0XHR9XG5cdH1cblxuXHRAY2FjaGUoKVxuXHRwdWJsaWMgZmlsZUV4aXN0c09uRGlzayhmaWxlTmFtZTogc3RyaW5nKTogYm9vbGVhbiB7XG5cdFx0cmV0dXJuIGZzLmV4aXN0c1N5bmMoZmlsZU5hbWUpO1xuXHR9XG5cblx0QGNhY2hlKClcblx0cHVibGljIGRpcmVjdG9yeUV4aXN0cyhkaXJlY3RvcnlOYW1lOiBzdHJpbmcpOiBib29sZWFuIHtcblx0XHR0cnkge1xuXHRcdFx0cmV0dXJuIGZzLnN0YXRTeW5jKGRpcmVjdG9yeU5hbWUpLmlzRGlyZWN0b3J5KCk7XG5cdFx0fSBjYXRjaCB7XG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0fVxuXHR9XG5cblx0QGNhY2hlKClcblx0cHVibGljIGdldERpcmVjdG9yaWVzKGRpcmVjdG9yeU5hbWU6IHN0cmluZyk6IHN0cmluZ1tdIHtcblx0XHR0cnkge1xuXHRcdFx0cmV0dXJuIGZzXG5cdFx0XHRcdC5yZWFkZGlyU3luYyhkaXJlY3RvcnlOYW1lLCB7IHdpdGhGaWxlVHlwZXM6IHRydWUgfSlcblx0XHRcdFx0LmZpbHRlcigoZW50cnkpID0+IGVudHJ5LmlzRGlyZWN0b3J5KCkpXG5cdFx0XHRcdC5tYXAoKGVudHJ5KSA9PiBlbnRyeS5uYW1lKTtcblx0XHR9IGNhdGNoIHtcblx0XHRcdHJldHVybiBbXTtcblx0XHR9XG5cdH1cbn1cbiJdLCJuYW1lcyI6WyJmcyIsImNhY2hlIiwiVHJhY2UiLCJjcmVhdGVDb21waWxlckhvc3QiLCJjcmVhdGVQcm9ncmFtIiwiREVGQVVMVF9UWVBFX0VNSVRURVJfT1BUSU9OUyIsIlJFUVVJUkVEX1RZUEVfRU1JVFRFUl9PUFRJT05TIiwiVHNQcm9ncmFtSG9zdCIsIlNldCIsImludmFsaWRhdGVTb3VyY2VGaWxlIiwiZmlsZU5hbWUiLCJhZGQiLCJoYXNJbnZhbGlkYXRlZCIsInNpemUiLCJob3N0S2V5Iiwib3B0cyIsIkpTT04iLCJzdHJpbmdpZnkiLCJ0YXJnZXQiLCJsaWIiLCJ0eXBlUm9vdHMiLCJ0eXBlcyIsIm1vZHVsZVJlc29sdXRpb24iLCJiYXNlVXJsIiwicGF0aHMiLCJtb2R1bGUiLCJyb290RGlyIiwicm9vdERpcnMiLCJjcmVhdGVIb3N0IiwiY29tcGlsZXJPcHRpb25zIiwiaG9zdCIsImZpbGVFeGlzdHMiLCJmaWxlRXhpc3RzT25EaXNrIiwicmVhZEZpbGUiLCJyZWFkRmlsZUZyb21EaXNrIiwiZGlyZWN0b3J5RXhpc3RzIiwiZGlyZWN0b3J5TmFtZSIsImdldERpcmVjdG9yaWVzIiwiZmlsZXMiLCJvbGRQcm9ncmFtIiwiZmlsZVBhdGhzIiwibWFwIiwiZiIsImZ1bGxQYXRoIiwiY2xlYXIiLCJyZWFkRmlsZVN5bmMiLCJ1bmRlZmluZWQiLCJleGlzdHNTeW5jIiwic3RhdFN5bmMiLCJpc0RpcmVjdG9yeSIsInJlYWRkaXJTeW5jIiwid2l0aEZpbGVUeXBlcyIsImZpbHRlciIsImVudHJ5IiwibmFtZSIsImtleUZuIiwiYXJncyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUEsT0FBT0EsUUFBUSxVQUFVO0FBQ3pCLFNBQVNDLEtBQUssUUFBUSwwQkFBMEI7QUFDaEQsU0FBU0MsS0FBSyxRQUFRLDhCQUE4QjtBQUdwRCxTQUFTQyxrQkFBa0IsRUFBRUMsYUFBYSxRQUFRLGFBQWE7QUFDL0QsU0FDQ0MsNEJBQTRCLEVBQzVCQyw2QkFBNkIsUUFDdkIsb0JBQThCO0FBVXJDLE9BQU8sTUFBTUM7SUFDWixDQUFBLFdBQVksR0FBRyxJQUFJQyxNQUFjO0lBRTFCQyxxQkFBcUJDLFFBQWdCLEVBQVE7UUFDbkQsSUFBSSxDQUFDLENBQUEsV0FBWSxDQUFDQyxHQUFHLENBQUNEO0lBQ3ZCO0lBRU9FLGlCQUEwQjtRQUNoQyxPQUFPLElBQUksQ0FBQyxDQUFBLFdBQVksQ0FBQ0MsSUFBSSxHQUFHO0lBQ2pDO0lBRUEsMEZBQTBGLEdBQzFGLEFBQU9DLFFBQVFDLElBQXdCLEVBQVU7UUFDaEQsT0FBT0MsS0FBS0MsU0FBUyxDQUFDO1lBQ3JCQyxRQUFRSCxLQUFLRyxNQUFNO1lBQ25CQyxLQUFLSixLQUFLSSxHQUFHO1lBQ2JDLFdBQVdMLEtBQUtLLFNBQVM7WUFDekJDLE9BQU9OLEtBQUtNLEtBQUs7WUFDakJDLGtCQUFrQlAsS0FBS08sZ0JBQWdCO1lBQ3ZDQyxTQUFTUixLQUFLUSxPQUFPO1lBQ3JCQyxPQUFPVCxLQUFLUyxLQUFLO1lBQ2pCQyxRQUFRVixLQUFLVSxNQUFNO1lBQ25CQyxTQUFTWCxLQUFLVyxPQUFPO1lBQ3JCQyxVQUFVWixLQUFLWSxRQUFRO1FBQ3hCO0lBQ0Q7SUFFT0MsV0FBV0MsZUFBbUMsRUFBbUI7UUFDdkUsTUFBTUMsT0FBTzNCLG1CQUFtQjBCO1FBQ2hDQyxLQUFLQyxVQUFVLEdBQUcsQ0FBQ3JCLFdBQWEsSUFBSSxDQUFDc0IsZ0JBQWdCLENBQUN0QjtRQUN0RG9CLEtBQUtHLFFBQVEsR0FBRyxDQUFDdkIsV0FBYSxJQUFJLENBQUN3QixnQkFBZ0IsQ0FBQ3hCO1FBQ3BEb0IsS0FBS0ssZUFBZSxHQUFHLENBQUNDLGdCQUFrQixJQUFJLENBQUNELGVBQWUsQ0FBQ0M7UUFDL0ROLEtBQUtPLGNBQWMsR0FBRyxDQUFDRCxnQkFBa0IsSUFBSSxDQUFDQyxjQUFjLENBQUNEO1FBQzdELE9BQU9OO0lBQ1I7SUFFTzFCLGNBQ05rQyxLQUFlLEVBQ2ZULGVBQW1DLEVBQ25DQyxJQUFxQixFQUNyQlMsVUFBdUIsRUFDVjtRQUNiLE1BQU1DLFlBQVlGLE1BQU1HLEdBQUcsQ0FBQyxDQUFDQyxJQUFNQSxFQUFFQyxRQUFRO1FBQzdDLElBQUksQ0FBQyxDQUFBLFdBQVksQ0FBQ0MsS0FBSztRQUN2QixPQUFPeEMsY0FDTm9DLFdBQ0E7WUFDQyxHQUFHbkMsNEJBQTRCO1lBQy9CLEdBQUd3QixlQUFlO1lBQ2xCLEdBQUd2Qiw2QkFBNkI7UUFDakMsR0FDQXdCLE1BQ0FTO0lBRUY7SUFHT0wsaUJBQWlCeEIsUUFBZ0IsRUFBc0I7UUFDN0QsSUFBSTtZQUNILE9BQU9WLEdBQUc2QyxZQUFZLENBQUNuQyxVQUFVO1FBQ2xDLEVBQUUsT0FBTTtZQUNQLE9BQU9vQztRQUNSO0lBQ0Q7SUFHT2QsaUJBQWlCdEIsUUFBZ0IsRUFBVztRQUNsRCxPQUFPVixHQUFHK0MsVUFBVSxDQUFDckM7SUFDdEI7SUFHT3lCLGdCQUFnQkMsYUFBcUIsRUFBVztRQUN0RCxJQUFJO1lBQ0gsT0FBT3BDLEdBQUdnRCxRQUFRLENBQUNaLGVBQWVhLFdBQVc7UUFDOUMsRUFBRSxPQUFNO1lBQ1AsT0FBTztRQUNSO0lBQ0Q7SUFHT1osZUFBZUQsYUFBcUIsRUFBWTtRQUN0RCxJQUFJO1lBQ0gsT0FBT3BDLEdBQ0xrRCxXQUFXLENBQUNkLGVBQWU7Z0JBQUVlLGVBQWU7WUFBSyxHQUNqREMsTUFBTSxDQUFDLENBQUNDLFFBQVVBLE1BQU1KLFdBQVcsSUFDbkNSLEdBQUcsQ0FBQyxDQUFDWSxRQUFVQSxNQUFNQyxJQUFJO1FBQzVCLEVBQUUsT0FBTTtZQUNQLE9BQU8sRUFBRTtRQUNWO0lBQ0Q7QUFDRDs7O1FBbENVQSxNQUFNO1FBQWdCQyxPQUFPLENBQUMsR0FBR0MsT0FBU0EsSUFBSSxDQUFDLEVBQUUifQ==
120
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL2ZvcmdlL3NyYy9zZXJ2aWNlcy90cy1wcm9ncmFtLWhvc3QudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGZzIGZyb20gXCJub2RlOmZzXCI7XG5pbXBvcnQgeyBjYWNoZSB9IGZyb20gXCJAZGVjb2hlcmUvbmV4dXMvY2FjaGluZ1wiO1xuaW1wb3J0IHsgVHJhY2UgfSBmcm9tIFwiQGRlY29oZXJlL25leHVzL2RpYWdub3N0aWNzXCI7XG5pbXBvcnQgdHlwZSB7IEZpbGVFeCB9IGZyb20gXCJAZGVjb2hlcmUvbmV4dXMvaW9cIjtcbmltcG9ydCB0eXBlIHRzIGZyb20gXCJ0eXBlc2NyaXB0XCI7XG5pbXBvcnQgeyBjcmVhdGVDb21waWxlckhvc3QsIGNyZWF0ZVByb2dyYW0gfSBmcm9tIFwidHlwZXNjcmlwdFwiO1xuaW1wb3J0IHtcblx0REVGQVVMVF9UWVBFX0VNSVRURVJfT1BUSU9OUyxcblx0UkVRVUlSRURfVFlQRV9FTUlUVEVSX09QVElPTlMsXG59IGZyb20gXCIuLi9zZXJ2aWNlcy90eXBlLWVtaXR0ZXIuanNcIjtcblxuLyoqXG4gKiBXcmFwcyBhIFR5cGVTY3JpcHQgQ29tcGlsZXJIb3N0IHdpdGggY2FjaGVkIGZpbGUtc3lzdGVtIGNhbGxzIHNvIHRoYXRcbiAqIHJlcGVhdGVkIHJlYWRzIGR1cmluZyBhIHNpbmdsZSBidWlsZCBkbyBub3QgaGl0IHRoZSBkaXNrIG11bHRpcGxlIHRpbWVzLlxuICpcbiAqIFNlcGFyYXRpbmcgdGhpcyBmcm9tIFR5cGVFbWl0dGVyIGtlZXBzIHRoZSB0cmFuc2Zvcm1lciBsb2dpYyByZWFkYWJsZSBhbmRcbiAqIGxldHMgdGhlIGNhY2hpbmcvcHJvZ3JhbS1jcmVhdGlvbiBjb25jZXJucyBsaXZlIGluIG9uZSBmb2N1c2VkIHBsYWNlLlxuICovXG5AVHJhY2VcbmV4cG9ydCBjbGFzcyBUc1Byb2dyYW1Ib3N0IHtcblx0I2ludmFsaWRhdGVkID0gbmV3IFNldDxzdHJpbmc+KCk7XG5cblx0cHVibGljIGludmFsaWRhdGVTb3VyY2VGaWxlKGZpbGVOYW1lOiBzdHJpbmcpOiB2b2lkIHtcblx0XHR0aGlzLiNpbnZhbGlkYXRlZC5hZGQoZmlsZU5hbWUpO1xuXHR9XG5cblx0cHVibGljIGhhc0ludmFsaWRhdGVkKCk6IGJvb2xlYW4ge1xuXHRcdHJldHVybiB0aGlzLiNpbnZhbGlkYXRlZC5zaXplID4gMDtcblx0fVxuXG5cdC8qKiBSZXR1cm5zIGEgc3RhYmxlIHN0cmluZyBrZXkgZm9yIGEgc2V0IG9mIGNvbXBpbGVyIG9wdGlvbnMgdGhhdCBhZmZlY3QgaG9zdCBiZWhhdmlvdXIuICovXG5cdHB1YmxpYyBob3N0S2V5KG9wdHM6IHRzLkNvbXBpbGVyT3B0aW9ucyk6IHN0cmluZyB7XG5cdFx0cmV0dXJuIEpTT04uc3RyaW5naWZ5KHtcblx0XHRcdHRhcmdldDogb3B0cy50YXJnZXQsXG5cdFx0XHRsaWI6IG9wdHMubGliLFxuXHRcdFx0dHlwZVJvb3RzOiBvcHRzLnR5cGVSb290cyxcblx0XHRcdHR5cGVzOiBvcHRzLnR5cGVzLFxuXHRcdFx0bW9kdWxlUmVzb2x1dGlvbjogb3B0cy5tb2R1bGVSZXNvbHV0aW9uLFxuXHRcdFx0YmFzZVVybDogb3B0cy5iYXNlVXJsLFxuXHRcdFx0cGF0aHM6IG9wdHMucGF0aHMsXG5cdFx0XHRtb2R1bGU6IG9wdHMubW9kdWxlLFxuXHRcdFx0cm9vdERpcjogb3B0cy5yb290RGlyLFxuXHRcdFx0cm9vdERpcnM6IG9wdHMucm9vdERpcnMsXG5cdFx0fSk7XG5cdH1cblxuXHRwdWJsaWMgY3JlYXRlSG9zdChjb21waWxlck9wdGlvbnM6IHRzLkNvbXBpbGVyT3B0aW9ucyk6IHRzLkNvbXBpbGVySG9zdCB7XG5cdFx0Y29uc3QgaG9zdCA9IGNyZWF0ZUNvbXBpbGVySG9zdChjb21waWxlck9wdGlvbnMpO1xuXHRcdGhvc3QuZmlsZUV4aXN0cyA9IChmaWxlTmFtZSkgPT4gdGhpcy5maWxlRXhpc3RzT25EaXNrKGZpbGVOYW1lKTtcblx0XHRob3N0LnJlYWRGaWxlID0gKGZpbGVOYW1lKSA9PiB0aGlzLnJlYWRGaWxlRnJvbURpc2soZmlsZU5hbWUpO1xuXHRcdGhvc3QuZGlyZWN0b3J5RXhpc3RzID0gKGRpcmVjdG9yeU5hbWUpID0+IHRoaXMuZGlyZWN0b3J5RXhpc3RzKGRpcmVjdG9yeU5hbWUpO1xuXHRcdGhvc3QuZ2V0RGlyZWN0b3JpZXMgPSAoZGlyZWN0b3J5TmFtZSkgPT4gdGhpcy5nZXREaXJlY3RvcmllcyhkaXJlY3RvcnlOYW1lKTtcblx0XHRyZXR1cm4gaG9zdDtcblx0fVxuXG5cdHB1YmxpYyBjcmVhdGVQcm9ncmFtKFxuXHRcdGZpbGVzOiBGaWxlRXhbXSxcblx0XHRjb21waWxlck9wdGlvbnM6IHRzLkNvbXBpbGVyT3B0aW9ucyxcblx0XHRob3N0OiB0cy5Db21waWxlckhvc3QsXG5cdFx0b2xkUHJvZ3JhbT86IHRzLlByb2dyYW0sXG5cdFx0cmVxdWlyZWRPcHRpb25zOiB0cy5Db21waWxlck9wdGlvbnMgPSBSRVFVSVJFRF9UWVBFX0VNSVRURVJfT1BUSU9OUyxcblx0KTogdHMuUHJvZ3JhbSB7XG5cdFx0Y29uc3QgZmlsZVBhdGhzID0gZmlsZXMubWFwKChmKSA9PiBmLmZ1bGxQYXRoKTtcblx0XHR0aGlzLiNpbnZhbGlkYXRlZC5jbGVhcigpO1xuXHRcdHJldHVybiBjcmVhdGVQcm9ncmFtKFxuXHRcdFx0ZmlsZVBhdGhzLFxuXHRcdFx0e1xuXHRcdFx0XHQuLi5ERUZBVUxUX1RZUEVfRU1JVFRFUl9PUFRJT05TLFxuXHRcdFx0XHQuLi5jb21waWxlck9wdGlvbnMsXG5cdFx0XHRcdC4uLnJlcXVpcmVkT3B0aW9ucyxcblx0XHRcdH0sXG5cdFx0XHRob3N0LFxuXHRcdFx0b2xkUHJvZ3JhbSxcblx0XHQpO1xuXHR9XG5cblx0QGNhY2hlKHsgbmFtZTogXCJGSUxFX0NPTlRFTlRcIiwga2V5Rm46ICguLi5hcmdzKSA9PiBhcmdzWzBdIGFzIHN0cmluZyB9KVxuXHRwdWJsaWMgcmVhZEZpbGVGcm9tRGlzayhmaWxlTmFtZTogc3RyaW5nKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcblx0XHR0cnkge1xuXHRcdFx0cmV0dXJuIGZzLnJlYWRGaWxlU3luYyhmaWxlTmFtZSwgXCJ1dGY4XCIpO1xuXHRcdH0gY2F0Y2gge1xuXHRcdFx0cmV0dXJuIHVuZGVmaW5lZDtcblx0XHR9XG5cdH1cblxuXHRAY2FjaGUoKVxuXHRwdWJsaWMgZmlsZUV4aXN0c09uRGlzayhmaWxlTmFtZTogc3RyaW5nKTogYm9vbGVhbiB7XG5cdFx0cmV0dXJuIGZzLmV4aXN0c1N5bmMoZmlsZU5hbWUpO1xuXHR9XG5cblx0QGNhY2hlKClcblx0cHVibGljIGRpcmVjdG9yeUV4aXN0cyhkaXJlY3RvcnlOYW1lOiBzdHJpbmcpOiBib29sZWFuIHtcblx0XHR0cnkge1xuXHRcdFx0cmV0dXJuIGZzLnN0YXRTeW5jKGRpcmVjdG9yeU5hbWUpLmlzRGlyZWN0b3J5KCk7XG5cdFx0fSBjYXRjaCB7XG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0fVxuXHR9XG5cblx0QGNhY2hlKClcblx0cHVibGljIGdldERpcmVjdG9yaWVzKGRpcmVjdG9yeU5hbWU6IHN0cmluZyk6IHN0cmluZ1tdIHtcblx0XHR0cnkge1xuXHRcdFx0cmV0dXJuIGZzXG5cdFx0XHRcdC5yZWFkZGlyU3luYyhkaXJlY3RvcnlOYW1lLCB7IHdpdGhGaWxlVHlwZXM6IHRydWUgfSlcblx0XHRcdFx0LmZpbHRlcigoZW50cnkpID0+IGVudHJ5LmlzRGlyZWN0b3J5KCkpXG5cdFx0XHRcdC5tYXAoKGVudHJ5KSA9PiBlbnRyeS5uYW1lKTtcblx0XHR9IGNhdGNoIHtcblx0XHRcdHJldHVybiBbXTtcblx0XHR9XG5cdH1cbn1cbiJdLCJuYW1lcyI6WyJmcyIsImNhY2hlIiwiVHJhY2UiLCJjcmVhdGVDb21waWxlckhvc3QiLCJjcmVhdGVQcm9ncmFtIiwiREVGQVVMVF9UWVBFX0VNSVRURVJfT1BUSU9OUyIsIlJFUVVJUkVEX1RZUEVfRU1JVFRFUl9PUFRJT05TIiwiVHNQcm9ncmFtSG9zdCIsIlNldCIsImludmFsaWRhdGVTb3VyY2VGaWxlIiwiZmlsZU5hbWUiLCJhZGQiLCJoYXNJbnZhbGlkYXRlZCIsInNpemUiLCJob3N0S2V5Iiwib3B0cyIsIkpTT04iLCJzdHJpbmdpZnkiLCJ0YXJnZXQiLCJsaWIiLCJ0eXBlUm9vdHMiLCJ0eXBlcyIsIm1vZHVsZVJlc29sdXRpb24iLCJiYXNlVXJsIiwicGF0aHMiLCJtb2R1bGUiLCJyb290RGlyIiwicm9vdERpcnMiLCJjcmVhdGVIb3N0IiwiY29tcGlsZXJPcHRpb25zIiwiaG9zdCIsImZpbGVFeGlzdHMiLCJmaWxlRXhpc3RzT25EaXNrIiwicmVhZEZpbGUiLCJyZWFkRmlsZUZyb21EaXNrIiwiZGlyZWN0b3J5RXhpc3RzIiwiZGlyZWN0b3J5TmFtZSIsImdldERpcmVjdG9yaWVzIiwiZmlsZXMiLCJvbGRQcm9ncmFtIiwicmVxdWlyZWRPcHRpb25zIiwiZmlsZVBhdGhzIiwibWFwIiwiZiIsImZ1bGxQYXRoIiwiY2xlYXIiLCJyZWFkRmlsZVN5bmMiLCJ1bmRlZmluZWQiLCJleGlzdHNTeW5jIiwic3RhdFN5bmMiLCJpc0RpcmVjdG9yeSIsInJlYWRkaXJTeW5jIiwid2l0aEZpbGVUeXBlcyIsImZpbHRlciIsImVudHJ5IiwibmFtZSIsImtleUZuIiwiYXJncyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUEsT0FBT0EsUUFBUSxVQUFVO0FBQ3pCLFNBQVNDLEtBQUssUUFBUSwwQkFBMEI7QUFDaEQsU0FBU0MsS0FBSyxRQUFRLDhCQUE4QjtBQUdwRCxTQUFTQyxrQkFBa0IsRUFBRUMsYUFBYSxRQUFRLGFBQWE7QUFDL0QsU0FDQ0MsNEJBQTRCLEVBQzVCQyw2QkFBNkIsUUFDdkIsb0JBQThCO0FBVXJDLE9BQU8sTUFBTUM7SUFDWixDQUFBLFdBQVksR0FBRyxJQUFJQyxNQUFjO0lBRTFCQyxxQkFBcUJDLFFBQWdCLEVBQVE7UUFDbkQsSUFBSSxDQUFDLENBQUEsV0FBWSxDQUFDQyxHQUFHLENB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
@@ -9,6 +9,7 @@ function _ts_metadata(k, v) {
9
9
  }
10
10
  import path from "node:path";
11
11
  import { Trace } from "@decohere/nexus/diagnostics";
12
+ import ts from "typescript";
12
13
  import { TransformResponse } from "../types/transform-response.model.js";
13
14
  export class TypeEmissionProgram {
14
15
  #program;
@@ -19,16 +20,25 @@ export class TypeEmissionProgram {
19
20
  #compilerHost;
20
21
  #allFiles;
21
22
  #compilerOptions;
22
- constructor(group, hostFactory){
23
+ #requiredOptions;
24
+ constructor(group, hostFactory, requiredOptions){
23
25
  this.#group = group;
24
26
  const targets = this.buildTargetMaps(group);
25
27
  this.#targetsByDtsPath = targets.byDtsPath;
26
28
  this.#targetsByEmittedPath = targets.byEmittedPath;
27
29
  this.#host = hostFactory;
28
30
  this.#compilerOptions = group[0].tsconfig.compilerOptions;
31
+ this.#requiredOptions = requiredOptions;
29
32
  this.#allFiles = group.flatMap(({ files })=>files);
30
33
  this.#compilerHost = hostFactory.createHost(this.#compilerOptions);
31
- this.#program = hostFactory.createProgram(this.#allFiles, this.#compilerOptions, this.#compilerHost);
34
+ this.#program = this.createProgram();
35
+ }
36
+ check() {
37
+ this.refreshProgramIfNeeded();
38
+ return ts.getPreEmitDiagnostics(this.#program);
39
+ }
40
+ formatDiagnostics(diagnostics) {
41
+ return ts.formatDiagnosticsWithColorAndContext(diagnostics, this.#compilerHost);
32
42
  }
33
43
  toEmissionTarget(groupProject, file, outBaseDir) {
34
44
  const extName = path.extname(file.relativePath);
@@ -74,14 +84,20 @@ export class TypeEmissionProgram {
74
84
  this.#host.invalidateSourceFile(file.fullPath);
75
85
  }
76
86
  async emit(fileFilter, onOutput) {
77
- if (this.#host.hasInvalidated()) {
78
- this.#program = this.#host.createProgram(this.#allFiles, this.#compilerOptions, this.#compilerHost, this.#program);
79
- }
87
+ this.refreshProgramIfNeeded();
80
88
  if (fileFilter == null) {
81
89
  return this.emitAll(onOutput);
82
90
  }
83
91
  return this.emitFiltered(fileFilter, onOutput);
84
92
  }
93
+ createProgram(oldProgram) {
94
+ return this.#host.createProgram(this.#allFiles, this.#compilerOptions, this.#compilerHost, oldProgram, this.#requiredOptions);
95
+ }
96
+ refreshProgramIfNeeded() {
97
+ if (this.#host.hasInvalidated()) {
98
+ this.#program = this.createProgram(this.#program);
99
+ }
100
+ }
85
101
  emitAll(onOutput) {
86
102
  const responses = [];
87
103
  this.#program.emit(undefined, (emittedPath, content)=>{
@@ -138,8 +154,9 @@ TypeEmissionProgram = _ts_decorate([
138
154
  _ts_metadata("design:type", Function),
139
155
  _ts_metadata("design:paramtypes", [
140
156
  Array,
141
- typeof TsProgramHost === "undefined" ? Object : TsProgramHost
157
+ typeof TsProgramHost === "undefined" ? Object : TsProgramHost,
158
+ typeof ts === "undefined" || typeof ts.CompilerOptions === "undefined" ? Object : ts.CompilerOptions
142
159
  ])
143
160
  ], TypeEmissionProgram);
144
161
 
145
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL2ZvcmdlL3NyYy9zZXJ2aWNlcy90eXBlLWVtaXNzaW9uLXByb2dyYW0udHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHBhdGggZnJvbSBcIm5vZGU6cGF0aFwiO1xuaW1wb3J0IHR5cGUgeyBQcm9qZWN0LCBUc2NvbmZpZyB9IGZyb20gXCJAZGVjb2hlcmUvbWVzaFwiO1xuaW1wb3J0IHsgVHJhY2UgfSBmcm9tIFwiQGRlY29oZXJlL25leHVzL2RpYWdub3N0aWNzXCI7XG5pbXBvcnQgdHlwZSB7IEZpbGVFeCB9IGZyb20gXCJAZGVjb2hlcmUvbmV4dXMvaW9cIjtcbmltcG9ydCB0eXBlIHRzIGZyb20gXCJ0eXBlc2NyaXB0XCI7XG5pbXBvcnQgdHlwZSB7IFRzUHJvZ3JhbUhvc3QgfSBmcm9tIFwiLi4vc2VydmljZXMvdHMtcHJvZ3JhbS1ob3N0LmpzXCI7XG5pbXBvcnQgeyBUcmFuc2Zvcm1SZXNwb25zZSB9IGZyb20gXCIuLi90eXBlcy90cmFuc2Zvcm0tcmVzcG9uc2UubW9kZWwuanNcIjtcblxuZXhwb3J0IHR5cGUgVHlwZVByb2dyYW1Qcm9qZWN0ID0ge1xuXHRwcm9qZWN0OiBQcm9qZWN0O1xuXHRmaWxlczogRmlsZUV4W107XG5cdHRzY29uZmlnOiBUc2NvbmZpZztcbn07XG5cbnR5cGUgRW1pc3Npb25UYXJnZXQgPSB7XG5cdGZpbGU6IEZpbGVFeDtcblx0dHNjb25maWc6IFRzY29uZmlnO1xuXHRwcm9qZWN0OiBQcm9qZWN0O1xuXHRvdXRwdXRQYXRoOiBzdHJpbmc7XG5cdG91dHB1dERpcjogc3RyaW5nO1xuXHRkdHNSZWxhdGl2ZTogc3RyaW5nO1xufTtcblxuQFRyYWNlXG5leHBvcnQgY2xhc3MgVHlwZUVtaXNzaW9uUHJvZ3JhbSB7XG5cdCNwcm9ncmFtOiB0cy5Qcm9ncmFtO1xuXHQjZ3JvdXA6IFR5cGVQcm9ncmFtUHJvamVjdFtdO1xuXHQjdGFyZ2V0c0J5RHRzUGF0aDogTWFwPHN0cmluZywgRW1pc3Npb25UYXJnZXQ+O1xuXHQjdGFyZ2V0c0J5RW1pdHRlZFBhdGg6IE1hcDxzdHJpbmcsIEVtaXNzaW9uVGFyZ2V0Pjtcblx0I2hvc3Q6IFRzUHJvZ3JhbUhvc3Q7XG5cdCNjb21waWxlckhvc3Q6IHRzLkNvbXBpbGVySG9zdDtcblx0I2FsbEZpbGVzOiBGaWxlRXhbXTtcblx0I2NvbXBpbGVyT3B0aW9uczogdHMuQ29tcGlsZXJPcHRpb25zO1xuXG5cdHB1YmxpYyBjb25zdHJ1Y3Rvcihncm91cDogVHlwZVByb2dyYW1Qcm9qZWN0W10sIGhvc3RGYWN0b3J5OiBUc1Byb2dyYW1Ib3N0KSB7XG5cdFx0dGhpcy4jZ3JvdXAgPSBncm91cDtcblx0XHRjb25zdCB0YXJnZXRzID0gdGhpcy5idWlsZFRhcmdldE1hcHMoZ3JvdXApO1xuXHRcdHRoaXMuI3RhcmdldHNCeUR0c1BhdGggPSB0YXJnZXRzLmJ5RHRzUGF0aDtcblx0XHR0aGlzLiN0YXJnZXRzQnlFbWl0dGVkUGF0aCA9IHRhcmdldHMuYnlFbWl0dGVkUGF0aDtcblx0XHR0aGlzLiNob3N0ID0gaG9zdEZhY3Rvcnk7XG5cdFx0dGhpcy4jY29tcGlsZXJPcHRpb25zID0gZ3JvdXBbMF0udHNjb25maWcuY29tcGlsZXJPcHRpb25zO1xuXHRcdHRoaXMuI2FsbEZpbGVzID0gZ3JvdXAuZmxhdE1hcCgoeyBmaWxlcyB9KSA9PiBmaWxlcyk7XG5cdFx0dGhpcy4jY29tcGlsZXJIb3N0ID0gaG9zdEZhY3RvcnkuY3JlYXRlSG9zdCh0aGlzLiNjb21waWxlck9wdGlvbnMpO1xuXHRcdHRoaXMuI3Byb2dyYW0gPSBob3N0RmFjdG9yeS5jcmVhdGVQcm9ncmFtKFxuXHRcdFx0dGhpcy4jYWxsRmlsZXMsXG5cdFx0XHR0aGlzLiNjb21waWxlck9wdGlvbnMsXG5cdFx0XHR0aGlzLiNjb21waWxlckhvc3QsXG5cdFx0KTtcblx0fVxuXG5cdHByaXZhdGUgdG9FbWlzc2lvblRhcmdldChcblx0XHRncm91cFByb2plY3Q6IFR5cGVQcm9ncmFtUHJvamVjdCxcblx0XHRmaWxlOiBGaWxlRXgsXG5cdFx0b3V0QmFzZURpcjogc3RyaW5nLFxuXHQpOiBFbWlzc2lvblRhcmdldCB7XG5cdFx0Y29uc3QgZXh0TmFtZSA9IHBhdGguZXh0bmFtZShmaWxlLnJlbGF0aXZlUGF0aCk7XG5cdFx0Y29uc3QgZHRzUmVsYXRpdmUgPSBmaWxlLnJlbGF0aXZlUGF0aC5yZXBsYWNlKG5ldyBSZWdFeHAoYCR7ZXh0TmFtZX0kYCksIFwiLmQudHNcIik7XG5cdFx0Y29uc3Qgb3V0cHV0UGF0aCA9IHBhdGguam9pbihvdXRCYXNlRGlyLCBkdHNSZWxhdGl2ZSk7XG5cdFx0cmV0dXJuIHtcblx0XHRcdGZpbGUsXG5cdFx0XHR0c2NvbmZpZzogZ3JvdXBQcm9qZWN0LnRzY29uZmlnLFxuXHRcdFx0cHJvamVjdDogZ3JvdXBQcm9qZWN0LnByb2plY3QsXG5cdFx0XHRvdXRwdXRQYXRoLFxuXHRcdFx0b3V0cHV0RGlyOiBwYXRoLmRpcm5hbWUob3V0cHV0UGF0aCksXG5cdFx0XHRkdHNSZWxhdGl2ZSxcblx0XHR9O1xuXHR9XG5cblx0cHJpdmF0ZSBlbWl0dGVkS2V5KGZpbGU6IEZpbGVFeCk6IHN0cmluZyB7XG5cdFx0cmV0dXJuIGZpbGUuZnVsbFBhdGgucmVwbGFjZSgvXFwuW14uXSskLywgXCIuZC50c1wiKTtcblx0fVxuXG5cdHByaXZhdGUgYnVpbGRUYXJnZXRNYXBzKGdyb3VwOiBUeXBlUHJvZ3JhbVByb2plY3RbXSk6IHtcblx0XHRieUR0c1BhdGg6IE1hcDxzdHJpbmcsIEVtaXNzaW9uVGFyZ2V0Pjtcblx0XHRieUVtaXR0ZWRQYXRoOiBNYXA8c3RyaW5nLCBFbWlzc2lvblRhcmdldD47XG5cdH0ge1xuXHRcdGNvbnN0IGJ5RHRzUGF0aCA9IG5ldyBNYXA8c3RyaW5nLCBFbWlzc2lvblRhcmdldD4oKTtcblx0XHRjb25zdCBieUVtaXR0ZWRQYXRoID0gbmV3IE1hcDxzdHJpbmcsIEVtaXNzaW9uVGFyZ2V0PigpO1xuXG5cdFx0Zm9yIChjb25zdCBncm91cFByb2plY3Qgb2YgZ3JvdXApIHtcblx0XHRcdGNvbnN0IG91dEJhc2VEaXIgPSBncm91cFByb2plY3QucHJvamVjdC5nZXRPdXREaXIoXCJ0eXBlc1wiKTtcblx0XHRcdGZvciAoY29uc3QgZmlsZSBvZiBncm91cFByb2plY3QuZmlsZXMpIHtcblx0XHRcdFx0Y29uc3QgdGFyZ2V0ID0gdGhpcy50b0VtaXNzaW9uVGFyZ2V0KGdyb3VwUHJvamVjdCwgZmlsZSwgb3V0QmFzZURpcik7XG5cdFx0XHRcdGJ5RHRzUGF0aC5zZXQodGFyZ2V0LmR0c1JlbGF0aXZlLCB0YXJnZXQpO1xuXHRcdFx0XHRieUVtaXR0ZWRQYXRoLnNldCh0aGlzLmVtaXR0ZWRLZXkoZmlsZSksIHRhcmdldCk7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHsgYnlEdHNQYXRoLCBieUVtaXR0ZWRQYXRoIH07XG5cdH1cblxuXHRwdWJsaWMgYWRkRmlsZShmaWxlOiBGaWxlRXgsIHByb2plY3Q6IFByb2plY3QpOiB2b2lkIHtcblx0XHRjb25zdCBncm91cFByb2plY3QgPSB0aGlzLiNncm91cC5maW5kKChnKSA9PiBnLnByb2plY3QgPT09IHByb2plY3QpO1xuXHRcdGlmIChncm91cFByb2plY3QgPT0gbnVsbCkgcmV0dXJuO1xuXG5cdFx0Z3JvdXBQcm9qZWN0LmZpbGVzLnB1c2goZmlsZSk7XG5cdFx0dGhpcy4jYWxsRmlsZXMucHVzaChmaWxlKTtcblxuXHRcdGNvbnN0IG91dEJhc2VEaXIgPSBncm91cFByb2plY3QucHJvamVjdC5nZXRPdXREaXIoXCJ0eXBlc1wiKTtcblx0XHRjb25zdCB0YXJnZXQgPSB0aGlzLnRvRW1pc3Npb25UYXJnZXQoZ3JvdXBQcm9qZWN0LCBmaWxlLCBvdXRCYXNlRGlyKTtcblx0XHR0aGlzLiN0YXJnZXRzQnlEdHNQYXRoLnNldCh0YXJnZXQuZHRzUmVsYXRpdmUsIHRhcmdldCk7XG5cdFx0dGhpcy4jdGFyZ2V0c0J5RW1pdHRlZFBhdGguc2V0KHRoaXMuZW1pdHRlZEtleShmaWxlKSwgdGFyZ2V0KTtcblx0XHR0aGlzLiNob3N0LmludmFsaWRhdGVTb3VyY2VGaWxlKGZpbGUuZnVsbFBhdGgpO1xuXHR9XG5cblx0cHVibGljIGFzeW5jIGVtaXQoXG5cdFx0ZmlsZUZpbHRlcj86IChwcm9qZWN0OiBQcm9qZWN0KSA9PiBQcm9taXNlPEZpbGVFeFtdPixcblx0XHRvbk91dHB1dD86IChyZXNwb25zZTogVHJhbnNmb3JtUmVzcG9uc2UpID0+IHZvaWQsXG5cdCk6IFByb21pc2U8VHJhbnNmb3JtUmVzcG9uc2VbXT4ge1xuXHRcdGlmICh0aGlzLiNob3N0Lmhhc0ludmFsaWRhdGVkKCkpIHtcblx0XHRcdHRoaXMuI3Byb2dyYW0gPSB0aGlzLiNob3N0LmNyZWF0ZVByb2dyYW0oXG5cdFx0XHRcdHRoaXMuI2FsbEZpbGVzLFxuXHRcdFx0XHR0aGlzLiNjb21waWxlck9wdGlvbnMsXG5cdFx0XHRcdHRoaXMuI2NvbXBpbGVySG9zdCxcblx0XHRcdFx0dGhpcy4jcHJvZ3JhbSxcblx0XHRcdCk7XG5cdFx0fVxuXHRcdGlmIChmaWxlRmlsdGVyID09IG51bGwpIHtcblx0XHRcdHJldHVybiB0aGlzLmVtaXRBbGwob25PdXRwdXQpO1xuXHRcdH1cblx0XHRyZXR1cm4gdGhpcy5lbWl0RmlsdGVyZWQoZmlsZUZpbHRlciwgb25PdXRwdXQpO1xuXHR9XG5cblx0cHJpdmF0ZSBlbWl0QWxsKG9uT3V0cHV0PzogKHJlc3BvbnNlOiBUcmFuc2Zvcm1SZXNwb25zZSkgPT4gdm9pZCk6IFRyYW5zZm9ybVJlc3BvbnNlW10ge1xuXHRcdGNvbnN0IHJlc3BvbnNlczogVHJhbnNmb3JtUmVzcG9uc2VbXSA9IFtdO1xuXHRcdHRoaXMuI3Byb2dyYW0uZW1pdCh1bmRlZmluZWQsIChlbWl0dGVkUGF0aCwgY29udGVudCkgPT4ge1xuXHRcdFx0aWYgKCFlbWl0dGVkUGF0aC5lbmRzV2l0aChcIi5kLnRzXCIpKSB7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblx0XHRcdGNvbnN0IHJlc3BvbnNlID0gdGhpcy50b1RyYW5zZm9ybVJlc3BvbnNlKGVtaXR0ZWRQYXRoLCBjb250ZW50KTtcblx0XHRcdHJlc3BvbnNlcy5wdXNoKHJlc3BvbnNlKTtcblx0XHRcdG9uT3V0cHV0Py4ocmVzcG9uc2UpO1xuXHRcdH0pO1xuXHRcdHJldHVybiByZXNwb25zZXM7XG5cdH1cblxuXHRwcml2YXRlIGFzeW5jIGVtaXRGaWx0ZXJlZChcblx0XHRmaWxlRmlsdGVyOiAocHJvamVjdDogUHJvamVjdCkgPT4gUHJvbWlzZTxGaWxlRXhbXT4sXG5cdFx0b25PdXRwdXQ/OiAocmVzcG9uc2U6IFRyYW5zZm9ybVJlc3BvbnNlKSA9PiB2b2lkLFxuXHQpOiBQcm9taXNlPFRyYW5zZm9ybVJlc3BvbnNlW10+IHtcblx0XHRjb25zdCBmaWxlcyA9IGF3YWl0IFByb21pc2UuYWxsKHRoaXMuI2dyb3VwLm1hcCgoeyBwcm9qZWN0IH0pID0+IGZpbGVGaWx0ZXIocHJvamVjdCkpKTtcblx0XHRjb25zdCBzb3VyY2VGaWxlcyA9IGZpbGVzXG5cdFx0XHQuZmxhdCgpXG5cdFx0XHQubWFwKChmaWxlKSA9PiB0aGlzLiNwcm9ncmFtLmdldFNvdXJjZUZpbGUoZmlsZS5mdWxsUGF0aCkpXG5cdFx0XHQuZmlsdGVyKChzZik6IHNmIGlzIHRzLlNvdXJjZUZpbGUgPT4gc2YgIT0gbnVsbCk7XG5cblx0XHRjb25zdCByZXNwb25zZXM6IFRyYW5zZm9ybVJlc3BvbnNlW10gPSBbXTtcblxuXHRcdGZvciAoY29uc3Qgc291cmNlRmlsZSBvZiBzb3VyY2VGaWxlcykge1xuXHRcdFx0dGhpcy4jcHJvZ3JhbS5lbWl0KHNvdXJjZUZpbGUsIChlbWl0dGVkUGF0aCwgY29udGVudCkgPT4ge1xuXHRcdFx0XHRpZiAoIWVtaXR0ZWRQYXRoLmVuZHNXaXRoKFwiLmQudHNcIikpIHtcblx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdH1cblx0XHRcdFx0Y29uc3QgcmVzcG9uc2UgPSB0aGlzLnRvVHJhbnNmb3JtUmVzcG9uc2UoZW1pdHRlZFBhdGgsIGNvbnRlbnQpO1xuXHRcdFx0XHRyZXNwb25zZXMucHVzaChyZXNwb25zZSk7XG5cdFx0XHRcdG9uT3V0cHV0Py4ocmVzcG9uc2UpO1xuXHRcdFx0fSk7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHJlc3BvbnNlcztcblx0fVxuXG5cdHByaXZhdGUgdG9UcmFuc2Zvcm1SZXNwb25zZShlbWl0dGVkUGF0aDogc3RyaW5nLCBjb250ZW50OiBzdHJpbmcpOiBUcmFuc2Zvcm1SZXNwb25zZSB7XG5cdFx0Y29uc3QgdGFyZ2V0ID0gdGhpcy4jdGFyZ2V0c0J5RW1pdHRlZFBhdGguZ2V0KGVtaXR0ZWRQYXRoKTtcblx0XHRpZiAodGFyZ2V0ID09IG51bGwpIHtcblx0XHRcdHRocm93IG5ldyBFcnJvcihgTm8gbWF0Y2hpbmcgZW1pc3Npb24gdGFyZ2V0IGZvcjogJHtlbWl0dGVkUGF0aH1gKTtcblx0XHR9XG5cdFx0cmV0dXJuIHRoaXMudG9UcmFuc2Zvcm1SZXNwb25zZUZyb21UYXJnZXQodGFyZ2V0LCBjb250ZW50KTtcblx0fVxuXG5cdHByaXZhdGUgdG9UcmFuc2Zvcm1SZXNwb25zZUZyb21UYXJnZXQoXG5cdFx0dGFyZ2V0OiBFbWlzc2lvblRhcmdldCxcblx0XHRjb250ZW50OiBzdHJpbmcsXG5cdCk6IFRyYW5zZm9ybVJlc3BvbnNlIHtcblx0XHRjb25zdCB7IGZpbGUsIHRzY29uZmlnLCBwcm9qZWN0LCBvdXRwdXRQYXRoLCBvdXRwdXREaXIsIGR0c1JlbGF0aXZlIH0gPSB0YXJnZXQ7XG5cdFx0cmV0dXJuIFRyYW5zZm9ybVJlc3BvbnNlLmZyb20oe1xuXHRcdFx0ZmlsZSxcblx0XHRcdGNvbmZpZzogdHNjb25maWcsXG5cdFx0XHRvdXRjb21lOiBcInN1Y2Nlc3NcIixcblx0XHRcdGZpbGVOYW1lOiBkdHNSZWxhdGl2ZSxcblx0XHRcdGNvZGU6IGNvbnRlbnQsXG5cdFx0XHR0YXJnZXQ6IFwidHlwZXNcIixcblx0XHRcdG1lc3NhZ2VzOiBbXSxcblx0XHRcdHByb2plY3QsXG5cdFx0XHRvdXRwdXREaXIsXG5cdFx0XHRvdXRwdXRQYXRoLFxuXHRcdH0pO1xuXHR9XG59XG4iXSwibmFtZXMiOlsicGF0aCIsIlRyYWNlIiwiVHJhbnNmb3JtUmVzcG9uc2UiLCJUeXBlRW1pc3Npb25Qcm9ncmFtIiwiZ3JvdXAiLCJob3N0RmFjdG9yeSIsInRhcmdldHMiLCJidWlsZFRhcmdldE1hcHMiLCJieUR0c1BhdGgiLCJieUVtaXR0ZWRQYXRoIiwidHNjb25maWciLCJjb21waWxlck9wdGlvbnMiLCJmbGF0TWFwIiwiZmlsZXMiLCJjcmVhdGVIb3N0IiwiY3JlYXRlUHJvZ3JhbSIsInRvRW1pc3Npb25UYXJnZXQiLCJncm91cFByb2plY3QiLCJmaWxlIiwib3V0QmFzZURpciIsImV4dE5hbWUiLCJleHRuYW1lIiwicmVsYXRpdmVQYXRoIiwiZHRzUmVsYXRpdmUiLCJyZXBsYWNlIiwiUmVnRXhwIiwib3V0cHV0UGF0aCIsImpvaW4iLCJwcm9qZWN0Iiwib3V0cHV0RGlyIiwiZGlybmFtZSIsImVtaXR0ZWRLZXkiLCJmdWxsUGF0aCIsIk1hcCIsImdldE91dERpciIsInRhcmdldCIsInNldCIsImFkZEZpbGUiLCJmaW5kIiwiZyIsInB1c2giLCJpbnZhbGlkYXRlU291cmNlRmlsZSIsImVtaXQiLCJmaWxlRmlsdGVyIiwib25PdXRwdXQiLCJoYXNJbnZhbGlkYXRlZCIsImVtaXRBbGwiLCJlbWl0RmlsdGVyZWQiLCJyZXNwb25zZXMiLCJ1bmRlZmluZWQiLCJlbWl0dGVkUGF0aCIsImNvbnRlbnQiLCJlbmRzV2l0aCIsInJlc3BvbnNlIiwidG9UcmFuc2Zvcm1SZXNwb25zZSIsIlByb21pc2UiLCJhbGwiLCJtYXAiLCJzb3VyY2VGaWxlcyIsImZsYXQiLCJnZXRTb3VyY2VGaWxlIiwiZmlsdGVyIiwic2YiLCJzb3VyY2VGaWxlIiwiZ2V0IiwiRXJyb3IiLCJ0b1RyYW5zZm9ybVJlc3BvbnNlRnJvbVRhcmdldCIsImZyb20iLCJjb25maWciLCJvdXRjb21lIiwiZmlsZU5hbWUiLCJjb2RlIiwibWVzc2Fn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
162
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL2ZvcmdlL3NyYy9zZXJ2aWNlcy90eXBlLWVtaXNzaW9uLXByb2dyYW0udHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHBhdGggZnJvbSBcIm5vZGU6cGF0aFwiO1xuaW1wb3J0IHR5cGUgeyBQcm9qZWN0LCBUc2NvbmZpZyB9IGZyb20gXCJAZGVjb2hlcmUvbWVzaFwiO1xuaW1wb3J0IHsgVHJhY2UgfSBmcm9tIFwiQGRlY29oZXJlL25leHVzL2RpYWdub3N0aWNzXCI7XG5pbXBvcnQgdHlwZSB7IEZpbGVFeCB9IGZyb20gXCJAZGVjb2hlcmUvbmV4dXMvaW9cIjtcbmltcG9ydCB0cyBmcm9tIFwidHlwZXNjcmlwdFwiO1xuaW1wb3J0IHR5cGUgeyBUc1Byb2dyYW1Ib3N0IH0gZnJvbSBcIi4uL3NlcnZpY2VzL3RzLXByb2dyYW0taG9zdC5qc1wiO1xuaW1wb3J0IHsgVHJhbnNmb3JtUmVzcG9uc2UgfSBmcm9tIFwiLi4vdHlwZXMvdHJhbnNmb3JtLXJlc3BvbnNlLm1vZGVsLmpzXCI7XG5cbmV4cG9ydCB0eXBlIFR5cGVQcm9ncmFtUHJvamVjdCA9IHtcblx0cHJvamVjdDogUHJvamVjdDtcblx0ZmlsZXM6IEZpbGVFeFtdO1xuXHR0c2NvbmZpZzogVHNjb25maWc7XG59O1xuXG50eXBlIEVtaXNzaW9uVGFyZ2V0ID0ge1xuXHRmaWxlOiBGaWxlRXg7XG5cdHRzY29uZmlnOiBUc2NvbmZpZztcblx0cHJvamVjdDogUHJvamVjdDtcblx0b3V0cHV0UGF0aDogc3RyaW5nO1xuXHRvdXRwdXREaXI6IHN0cmluZztcblx0ZHRzUmVsYXRpdmU6IHN0cmluZztcbn07XG5cbkBUcmFjZVxuZXhwb3J0IGNsYXNzIFR5cGVFbWlzc2lvblByb2dyYW0ge1xuXHQjcHJvZ3JhbTogdHMuUHJvZ3JhbTtcblx0I2dyb3VwOiBUeXBlUHJvZ3JhbVByb2plY3RbXTtcblx0I3RhcmdldHNCeUR0c1BhdGg6IE1hcDxzdHJpbmcsIEVtaXNzaW9uVGFyZ2V0Pjtcblx0I3RhcmdldHNCeUVtaXR0ZWRQYXRoOiBNYXA8c3RyaW5nLCBFbWlzc2lvblRhcmdldD47XG5cdCNob3N0OiBUc1Byb2dyYW1Ib3N0O1xuXHQjY29tcGlsZXJIb3N0OiB0cy5Db21waWxlckhvc3Q7XG5cdCNhbGxGaWxlczogRmlsZUV4W107XG5cdCNjb21waWxlck9wdGlvbnM6IHRzLkNvbXBpbGVyT3B0aW9ucztcblx0I3JlcXVpcmVkT3B0aW9uczogdHMuQ29tcGlsZXJPcHRpb25zO1xuXG5cdHB1YmxpYyBjb25zdHJ1Y3Rvcihcblx0XHRncm91cDogVHlwZVByb2dyYW1Qcm9qZWN0W10sXG5cdFx0aG9zdEZhY3Rvcnk6IFRzUHJvZ3JhbUhvc3QsXG5cdFx0cmVxdWlyZWRPcHRpb25zOiB0cy5Db21waWxlck9wdGlvbnMsXG5cdCkge1xuXHRcdHRoaXMuI2dyb3VwID0gZ3JvdXA7XG5cdFx0Y29uc3QgdGFyZ2V0cyA9IHRoaXMuYnVpbGRUYXJnZXRNYXBzKGdyb3VwKTtcblx0XHR0aGlzLiN0YXJnZXRzQnlEdHNQYXRoID0gdGFyZ2V0cy5ieUR0c1BhdGg7XG5cdFx0dGhpcy4jdGFyZ2V0c0J5RW1pdHRlZFBhdGggPSB0YXJnZXRzLmJ5RW1pdHRlZFBhdGg7XG5cdFx0dGhpcy4jaG9zdCA9IGhvc3RGYWN0b3J5O1xuXHRcdHRoaXMuI2NvbXBpbGVyT3B0aW9ucyA9IGdyb3VwWzBdLnRzY29uZmlnLmNvbXBpbGVyT3B0aW9ucztcblx0XHR0aGlzLiNyZXF1aXJlZE9wdGlvbnMgPSByZXF1aXJlZE9wdGlvbnM7XG5cdFx0dGhpcy4jYWxsRmlsZXMgPSBncm91cC5mbGF0TWFwKCh7IGZpbGVzIH0pID0+IGZpbGVzKTtcblx0XHR0aGlzLiNjb21waWxlckhvc3QgPSBob3N0RmFjdG9yeS5jcmVhdGVIb3N0KHRoaXMuI2NvbXBpbGVyT3B0aW9ucyk7XG5cdFx0dGhpcy4jcHJvZ3JhbSA9IHRoaXMuY3JlYXRlUHJvZ3JhbSgpO1xuXHR9XG5cblx0cHVibGljIGNoZWNrKCk6IHJlYWRvbmx5IHRzLkRpYWdub3N0aWNbXSB7XG5cdFx0dGhpcy5yZWZyZXNoUHJvZ3JhbUlmTmVlZGVkKCk7XG5cdFx0cmV0dXJuIHRzLmdldFByZUVtaXREaWFnbm9zdGljcyh0aGlzLiNwcm9ncmFtKTtcblx0fVxuXG5cdHB1YmxpYyBmb3JtYXREaWFnbm9zdGljcyhkaWFnbm9zdGljczogcmVhZG9ubHkgdHMuRGlhZ25vc3RpY1tdKTogc3RyaW5nIHtcblx0XHRyZXR1cm4gdHMuZm9ybWF0RGlhZ25vc3RpY3NXaXRoQ29sb3JBbmRDb250ZXh0KGRpYWdub3N0aWNzLCB0aGlzLiNjb21waWxlckhvc3QpO1xuXHR9XG5cblx0cHJpdmF0ZSB0b0VtaXNzaW9uVGFyZ2V0KFxuXHRcdGdyb3VwUHJvamVjdDogVHlwZVByb2dyYW1Qcm9qZWN0LFxuXHRcdGZpbGU6IEZpbGVFeCxcblx0XHRvdXRCYXNlRGlyOiBzdHJpbmcsXG5cdCk6IEVtaXNzaW9uVGFyZ2V0IHtcblx0XHRjb25zdCBleHROYW1lID0gcGF0aC5leHRuYW1lKGZpbGUucmVsYXRpdmVQYXRoKTtcblx0XHRjb25zdCBkdHNSZWxhdGl2ZSA9IGZpbGUucmVsYXRpdmVQYXRoLnJlcGxhY2UobmV3IFJlZ0V4cChgJHtleHROYW1lfSRgKSwgXCIuZC50c1wiKTtcblx0XHRjb25zdCBvdXRwdXRQYXRoID0gcGF0aC5qb2luKG91dEJhc2VEaXIsIGR0c1JlbGF0aXZlKTtcblx0XHRyZXR1cm4ge1xuXHRcdFx0ZmlsZSxcblx0XHRcdHRzY29uZmlnOiBncm91cFByb2plY3QudHNjb25maWcsXG5cdFx0XHRwcm9qZWN0OiBncm91cFByb2plY3QucHJvamVjdCxcblx0XHRcdG91dHB1dFBhdGgsXG5cdFx0XHRvdXRwdXREaXI6IHBhdGguZGlybmFtZShvdXRwdXRQYXRoKSxcblx0XHRcdGR0c1JlbGF0aXZlLFxuXHRcdH07XG5cdH1cblxuXHRwcml2YXRlIGVtaXR0ZWRLZXkoZmlsZTogRmlsZUV4KTogc3RyaW5nIHtcblx0XHRyZXR1cm4gZmlsZS5mdWxsUGF0aC5yZXBsYWNlKC9cXC5bXi5dKyQvLCBcIi5kLnRzXCIpO1xuXHR9XG5cblx0cHJpdmF0ZSBidWlsZFRhcmdldE1hcHMoZ3JvdXA6IFR5cGVQcm9ncmFtUHJvamVjdFtdKToge1xuXHRcdGJ5RHRzUGF0aDogTWFwPHN0cmluZywgRW1pc3Npb25UYXJnZXQ+O1xuXHRcdGJ5RW1pdHRlZFBhdGg6IE1hcDxzdHJpbmcsIEVtaXNzaW9uVGFyZ2V0Pjtcblx0fSB7XG5cdFx0Y29uc3QgYnlEdHNQYXRoID0gbmV3IE1hcDxzdHJpbmcsIEVtaXNzaW9uVGFyZ2V0PigpO1xuXHRcdGNvbnN0IGJ5RW1pdHRlZFBhdGggPSBuZXcgTWFwPHN0cmluZywgRW1pc3Npb25UYXJnZXQ+KCk7XG5cblx0XHRmb3IgKGNvbnN0IGdyb3VwUHJvamVjdCBvZiBncm91cCkge1xuXHRcdFx0Y29uc3Qgb3V0QmFzZURpciA9IGdyb3VwUHJvamVjdC5wcm9qZWN0LmdldE91dERpcihcInR5cGVzXCIpO1xuXHRcdFx0Zm9yIChjb25zdCBmaWxlIG9mIGdyb3VwUHJvamVjdC5maWxlcykge1xuXHRcdFx0XHRjb25zdCB0YXJnZXQgPSB0aGlzLnRvRW1pc3Npb25UYXJnZXQoZ3JvdXBQcm9qZWN0LCBmaWxlLCBvdXRCYXNlRGlyKTtcblx0XHRcdFx0YnlEdHNQYXRoLnNldCh0YXJnZXQuZHRzUmVsYXRpdmUsIHRhcmdldCk7XG5cdFx0XHRcdGJ5RW1pdHRlZFBhdGguc2V0KHRoaXMuZW1pdHRlZEtleShmaWxlKSwgdGFyZ2V0KTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHRyZXR1cm4geyBieUR0c1BhdGgsIGJ5RW1pdHRlZFBhdGggfTtcblx0fVxuXG5cdHB1YmxpYyBhZGRGaWxlKGZpbGU6IEZpbGVFeCwgcHJvamVjdDogUHJvamVjdCk6IHZvaWQge1xuXHRcdGNvbnN0IGdyb3VwUHJvamVjdCA9IHRoaXMuI2dyb3VwLmZpbmQoKGcpID0+IGcucHJvamVjdCA9PT0gcHJvamVjdCk7XG5cdFx0aWYgKGdyb3VwUHJvamVjdCA9PSBudWxsKSByZXR1cm47XG5cblx0XHRncm91cFByb2plY3QuZmlsZXMucHVzaChmaWxlKTtcblx0XHR0aGlzLiNhbGxGaWxlcy5wdXNoKGZpbGUpO1xuXG5cdFx0Y29uc3Qgb3V0QmFzZURpciA9IGdyb3VwUHJvamVjdC5wcm9qZWN0LmdldE91dERpcihcInR5cGVzXCIpO1xuXHRcdGNvbnN0IHRhcmdldCA9IHRoaXMudG9FbWlzc2lvblRhcmdldChncm91cFByb2plY3QsIGZpbGUsIG91dEJhc2VEaXIpO1xuXHRcdHRoaXMuI3RhcmdldHNCeUR0c1BhdGguc2V0KHRhcmdldC5kdHNSZWxhdGl2ZSwgdGFyZ2V0KTtcblx0XHR0aGlzLiN0YXJnZXRzQnlFbWl0dGVkUGF0aC5zZXQodGhpcy5lbWl0dGVkS2V5KGZpbGUpLCB0YXJnZXQpO1xuXHRcdHRoaXMuI2hvc3QuaW52YWxpZGF0ZVNvdXJjZUZpbGUoZmlsZS5mdWxsUGF0aCk7XG5cdH1cblxuXHRwdWJsaWMgYXN5bmMgZW1pdChcblx0XHRmaWxlRmlsdGVyPzogKHByb2plY3Q6IFByb2plY3QpID0+IFByb21pc2U8RmlsZUV4W10+LFxuXHRcdG9uT3V0cHV0PzogKHJlc3BvbnNlOiBUcmFuc2Zvcm1SZXNwb25zZSkgPT4gdm9pZCxcblx0KTogUHJvbWlzZTxUcmFuc2Zvcm1SZXNwb25zZVtdPiB7XG5cdFx0dGhpcy5yZWZyZXNoUHJvZ3JhbUlmTmVlZGVkKCk7XG5cdFx0aWYgKGZpbGVGaWx0ZXIgPT0gbnVsbCkge1xuXHRcdFx0cmV0dXJuIHRoaXMuZW1pdEFsbChvbk91dHB1dCk7XG5cdFx0fVxuXHRcdHJldHVybiB0aGlzLmVtaXRGaWx0ZXJlZChmaWxlRmlsdGVyLCBvbk91dHB1dCk7XG5cdH1cblxuXHRwcml2YXRlIGNyZWF0ZVByb2dyYW0ob2xkUHJvZ3JhbT86IHRzLlByb2dyYW0pOiB0cy5Qcm9ncmFtIHtcblx0XHRyZXR1cm4gdGhpcy4jaG9zdC5jcmVhdGVQcm9ncmFtKFxuXHRcdFx0dGhpcy4jYWxsRmlsZXMsXG5cdFx0XHR0aGlzLiNjb21waWxlck9wdGlvbnMsXG5cdFx0XHR0aGlzLiNjb21waWxlckhvc3QsXG5cdFx0XHRvbGRQcm9ncmFtLFxuXHRcdFx0dGhpcy4jcmVxdWlyZWRPcHRpb25zLFxuXHRcdCk7XG5cdH1cblxuXHRwcml2YXRlIHJlZnJlc2hQcm9ncmFtSWZOZWVkZWQoKTogdm9pZCB7XG5cdFx0aWYgKHRoaXMuI2hvc3QuaGFzSW52YWxpZGF0ZWQoKSkge1xuXHRcdFx0dGhpcy4jcHJvZ3JhbSA9IHRoaXMuY3JlYXRlUHJvZ3JhbSh0aGlzLiNwcm9ncmFtKTtcblx0XHR9XG5cdH1cblxuXHRwcml2YXRlIGVtaXRBbGwob25PdXRwdXQ/OiAocmVzcG9uc2U6IFRyYW5zZm9ybVJlc3BvbnNlKSA9PiB2b2lkKTogVHJhbnNmb3JtUmVzcG9uc2VbXSB7XG5cdFx0Y29uc3QgcmVzcG9uc2VzOiBUcmFuc2Zvcm1SZXNwb25zZVtdID0gW107XG5cdFx0dGhpcy4jcHJvZ3JhbS5lbWl0KHVuZGVmaW5lZCwgKGVtaXR0ZWRQYXRoLCBjb250ZW50KSA9PiB7XG5cdFx0XHRpZiAoIWVtaXR0ZWRQYXRoLmVuZHNXaXRoKFwiLmQudHNcIikpIHtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXHRcdFx0Y29uc3QgcmVzcG9uc2UgPSB0aGlzLnRvVHJhbnNmb3JtUmVzcG9uc2UoZW1pdHRlZFBhdGgsIGNvbnRlbnQpO1xuXHRcdFx0cmVzcG9uc2VzLnB1c2gocmVzcG9uc2UpO1xuXHRcdFx0b25PdXRwdXQ/LihyZXNwb25zZSk7XG5cdFx0fSk7XG5cdFx0cmV0dXJuIHJlc3BvbnNlcztcblx0fVxuXG5cdHByaXZhdGUgYXN5bmMgZW1pdEZpbHRlcmVkKFxuXHRcdGZpbGVGaWx0ZXI6IChwcm9qZWN0OiBQcm9qZWN0KSA9PiBQcm9taXNlPEZpbGVFeFtdPixcblx0XHRvbk91dHB1dD86IChyZXNwb25zZTogVHJhbnNmb3JtUmVzcG9uc2UpID0+IHZvaWQsXG5cdCk6IFByb21pc2U8VHJhbnNmb3JtUmVzcG9uc2VbXT4ge1xuXHRcdGNvbnN0IGZpbGVzID0gYXdhaXQgUHJvbWlzZS5hbGwodGhpcy4jZ3JvdXAubWFwKCh7IHByb2plY3QgfSkgPT4gZmlsZUZpbHRlcihwcm9qZWN0KSkpO1xuXHRcdGNvbnN0IHNvdXJjZUZpbGVzID0gZmlsZXNcblx0XHRcdC5mbGF0KClcblx0XHRcdC5tYXAoKGZpbGUpID0+IHRoaXMuI3Byb2dyYW0uZ2V0U291cmNlRmlsZShmaWxlLmZ1bGxQYXRoKSlcblx0XHRcdC5maWx0ZXIoKHNmKTogc2YgaXMgdHMuU291cmNlRmlsZSA9PiBzZiAhPSBudWxsKTtcblxuXHRcdGNvbnN0IHJlc3BvbnNlczogVHJhbnNmb3JtUmVzcG9uc2VbXSA9IFtdO1xuXG5cdFx0Zm9yIChjb25zdCBzb3VyY2VGaWxlIG9mIHNvdXJjZUZpbGVzKSB7XG5cdFx0XHR0aGlzLiNwcm9ncmFtLmVtaXQoc291cmNlRmlsZSwgKGVtaXR0ZWRQYXRoLCBjb250ZW50KSA9PiB7XG5cdFx0XHRcdGlmICghZW1pdHRlZFBhdGguZW5kc1dpdGgoXCIuZC50c1wiKSkge1xuXHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0fVxuXHRcdFx0XHRjb25zdCByZXNwb25zZSA9IHRoaXMudG9UcmFuc2Zvcm1SZXNwb25zZShlbWl0dGVkUGF0aCwgY29udGVudCk7XG5cdFx0XHRcdHJlc3BvbnNlcy5wdXNoKHJlc3BvbnNlKTtcblx0XHRcdFx0b25PdXRwdXQ/LihyZXNwb25zZSk7XG5cdFx0XHR9KTtcblx0XHR9XG5cblx0XHRyZXR1cm4gcmVzcG9uc2VzO1xuXHR9XG5cblx0cHJpdmF0ZSB0b1RyYW5zZm9ybVJlc3BvbnNlKGVtaXR0ZWRQYXRoOiBzdHJpbmcsIGNvbnRlbnQ6IHN0cmluZyk6IFRyYW5zZm9ybVJlc3BvbnNlIHtcblx0XHRjb25zdCB0YXJnZXQgPSB0aGlzLiN0YXJnZXRzQnlFbWl0dGVkUGF0aC5nZXQoZW1pdHRlZFBhdGgpO1xuXHRcdGlmICh0YXJnZXQgPT0gbnVsbCkge1xuXHRcdFx0dGhyb3cgbmV3IEVycm9yKGBObyBtYXRjaGluZyBlbWlzc2lvbiB0YXJnZXQgZm9yOiAke2VtaXR0ZWRQYXRofWApO1xuXHRcdH1cblx0XHRyZXR1cm4gdGhpcy50b1RyYW5zZm9ybVJlc3BvbnNlRnJvbVRhcmdldCh0YXJnZXQsIGNvbnRlbnQpO1xuXHR9XG5cblx0cHJpdmF0ZSB0b1RyYW5zZm9ybVJlc3BvbnNlRnJvbVRhcmdldChcblx0XHR0YXJnZXQ6IEVtaXNzaW9uVGFyZ2V0LFxuXHRcdGNvbnRlbnQ6IHN0cmluZyxcblx0KTogVHJhbnNmb3JtUmVzcG9uc2Uge1xuXHRcdGNvbnN0IHsgZmlsZSwgdHNjb25maWcsIHByb2plY3QsIG91dHB1dFBhdGgsIG91dHB1dERpciwgZHRzUmVsYXRpdmUgfSA9IHRhcmdldDtcblx0XHRyZXR1cm4gVHJhbnNmb3JtUmVzcG9uc2UuZnJvbSh7XG5cdFx0XHRmaWxlLFxuXHRcdFx0Y29uZmlnOiB0c2NvbmZpZyxcblx0XHRcdG91dGNvbWU6IFwic3VjY2Vzc1wiLFxuXHRcdFx0ZmlsZU5hbWU6IGR0c1JlbGF0aXZlLFxuXHRcdFx0Y29kZTogY29udGVudCxcblx0XHRcdHRhcmdldDogXCJ0eXBlc1wiLFxuXHRcdFx0bWVzc2FnZXM6IFtdLFxuXHRcdFx0cHJvamVjdCxcblx0XHRcdG91dHB1dERpcixcblx0XHRcdG91dHB1dFBhdGgsXG5cdFx0fSk7XG5cdH1cbn1cbiJdLCJuYW1lcyI6WyJwYXRoIiwiVHJhY2UiLCJ0cyIsIlRyYW5zZm9ybVJlc3BvbnNlIiwiVHlwZUVtaXNzaW9uUHJvZ3JhbSIsImdyb3VwIiwiaG9zdEZhY3RvcnkiLCJyZXF1aXJlZE9wdGlvbnMiLCJ0YXJnZXRzIiwiYnVpbGRUYXJnZXRNYXBzIiwiYnlEdHNQYXRoIiwiYnlFbWl0dGVkUGF0aCIsInRzY29uZmlnIiwiY29tcGlsZXJPcHRpb25zIiwiZmxhdE1hcCIsImZpbGVzIiwiY3JlYXRlSG9zdCIsImNyZWF0ZVByb2dyYW0iLCJjaGVjayIsInJlZnJlc2hQcm9ncmFtSWZOZWVkZWQiLCJnZXRQcmVFbWl0RGlhZ25vc3RpY3MiLCJmb3JtYXREaWFnbm9zdGljcyIsImRpYWdub3N0aWNzIiwiZm9ybWF0RGlhZ25vc3RpY3NXaXRoQ29sb3JBbmRDb250ZXh0IiwidG9FbWlzc2lvblRhcmdldCIsImdyb3VwUHJvamVjdCIsImZpbGUiLCJvdXRCYXNlRGlyIiwiZXh0TmFtZSIsImV4dG5hbWUiLCJyZWxhdGl2ZVBhdGgiLCJkdHNSZWxhdGl2ZSIsInJlcGxhY2UiLCJSZWdFeHAiLCJvdXRwdXRQYXRoIiwiam9pbiIsInByb2plY3QiLCJvdXRwdXREaXIiLCJkaXJuYW1lIiwiZW1pdHRlZEtleSIsImZ1bGxQYXRoIiwiTWFwIiwiZ2V0T3V0RGlyIiwidGFyZ2V0Iiwic2V0IiwiYWRkRmlsZSIsImZpbmQiLCJnIiwicHVzaCIsImludmFsaWRhdGVTb3VyY2VGaWxlIiwiZW1pdCIsImZpbGVGaWx0ZXIiLCJvbk91dHB1dCIsImVtaXRBbGwiLCJlbWl0RmlsdGVyZWQiLCJvbGRQcm9ncmFtIiwiaGFzSW52YWxpZGF0ZWQiLCJyZXNwb25zZXMiLCJ1bmRlZmluZWQiLCJlbWl0dGVkUGF0aCIsImNvbnRlbnQiLCJlbmRzV2l0aCIsInJlc3BvbnNlIiwidG9UcmFuc2Zvcm1SZXNwb25zZSIsIlByb21pc2UiLCJhbGwiLCJtYXAiLCJzb3VyY2VGaWxlcyIsImZsYXQiLCJnZXRTb3VyY2VGaWxlIiwiZmlsdGVyIiwic2YiLCJzb3VyY2VGaWxlIiwiZ2V0IiwiRXJyb3IiLCJ0b1RyYW5zZm9ybVJlc3BvbnNlRnJvbVRhcmdldCIsImZyb20iLCJjb25maWciLCJvdXRjb21lIiwiZmlsZU5hbWUiLCJjb2RlIiwibWVzc2FnZXMiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBLE9BQU9BLFVBQVUsWUFBWTtBQUU3QixTQUFTQyxLQUFLLFFBQVEsOEJBQThCO0FBRXBELE9BQU9DLFFBQVEsYUFBYTtBQUU1QixTQUFTQyxpQkFBaUIsUUFBUSx1Q0FBdUM7QUFrQnpFLE9BQU8sTUFBTUM7SUFDWixD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
@@ -42,6 +42,9 @@ import { BuildTargets } from "../types/build-target.type.js";
42
42
  emitDeclarationOnly: true,
43
43
  declaration: true
44
44
  };
45
+ /** Compiler options enforced for `forge typecheck` — never emit JS or declarations. */ export const REQUIRED_TYPE_CHECK_OPTIONS = {
46
+ noEmit: true
47
+ };
45
48
  export class TypeEmitter extends mixwith(CachesOutputs, IncrementalTransform) {
46
49
  buildTargets = [
47
50
  BuildTargets.types
@@ -69,11 +72,34 @@ export class TypeEmitter extends mixwith(CachesOutputs, IncrementalTransform) {
69
72
  this.cacheOutputs(responses);
70
73
  return responses;
71
74
  }
72
- async preparePrograms(projectArrayLike) {
75
+ /**
76
+ * Type-check projects without emitting files. Includes every Mesh project, not
77
+ * only those with a `types` build target (debug is es6-only).
78
+ */ async checkProject(projectArrayLike) {
79
+ const programs = await this.preparePrograms(projectArrayLike, {
80
+ includeAllProjects: true,
81
+ requiredCompilerOptions: REQUIRED_TYPE_CHECK_OPTIONS
82
+ });
83
+ const diagnostics = [];
84
+ const formattedParts = [];
85
+ for (const program of programs){
86
+ const programDiagnostics = program.check();
87
+ if (programDiagnostics.length === 0) {
88
+ continue;
89
+ }
90
+ diagnostics.push(...programDiagnostics);
91
+ formattedParts.push(program.formatDiagnostics(programDiagnostics));
92
+ }
93
+ return {
94
+ diagnostics,
95
+ formatted: formattedParts.join("")
96
+ };
97
+ }
98
+ async preparePrograms(projectArrayLike, options = {}) {
73
99
  const allProjects = Array.isArray(projectArrayLike) ? projectArrayLike : [
74
100
  projectArrayLike
75
101
  ];
76
- const projects = allProjects.filter((proj)=>proj.getForgeConfiguration().targets.includes(BuildTargets.types));
102
+ const projects = options.includeAllProjects ? allProjects : allProjects.filter((proj)=>proj.getForgeConfiguration().targets.includes(BuildTargets.types));
77
103
  if (projects.length === 0) {
78
104
  return [];
79
105
  }
@@ -89,9 +115,10 @@ export class TypeEmitter extends mixwith(CachesOutputs, IncrementalTransform) {
89
115
  // files are compiled together, matching v1's single-program approach which
90
116
  // avoids re-parsing lib/node_modules .d.ts files per project.
91
117
  const groups = Map.groupBy(projectData, ({ tsconfig })=>this.#host.hostKey(tsconfig.compilerOptions));
118
+ const requiredCompilerOptions = options.requiredCompilerOptions ?? REQUIRED_TYPE_EMITTER_OPTIONS;
92
119
  return [
93
120
  ...groups.values()
94
- ].map((group)=>new TypeEmissionProgram(group, this.#host));
121
+ ].map((group)=>new TypeEmissionProgram(group, this.#host, requiredCompilerOptions));
95
122
  }
96
123
  async onIncrementalFileEvent(evt) {
97
124
  const { file, project } = evt;
@@ -131,4 +158,4 @@ TypeEmitter = _ts_decorate([
131
158
  Trace
132
159
  ], TypeEmitter);
133
160
 
134
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL2ZvcmdlL3NyYy9zZXJ2aWNlcy90eXBlLWVtaXR0ZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBQcm9qZWN0LCBQcm9qZWN0RmlsZUV2ZW50IH0gZnJvbSBcIkBkZWNvaGVyZS9tZXNoXCI7XG5pbXBvcnQgeyBpbnZhbGlkYXRlQ2FjaGUgfSBmcm9tIFwiQGRlY29oZXJlL25leHVzL2NhY2hpbmdcIjtcbmltcG9ydCB7IFRyYWNlIH0gZnJvbSBcIkBkZWNvaGVyZS9uZXh1cy9kaWFnbm9zdGljc1wiO1xuaW1wb3J0IHsgbWl4d2l0aCB9IGZyb20gXCJAZGVjb2hlcmUvbmV4dXMvZXh0ZW5zaWJpbGl0eVwiO1xuaW1wb3J0IHR5cGUgeyBGaWxlRXggfSBmcm9tIFwiQGRlY29oZXJlL25leHVzL2lvXCI7XG5pbXBvcnQgeyBpbyB9IGZyb20gXCJAZGVjb2hlcmUvbmV4dXMvaW9cIjtcbmltcG9ydCB0eXBlIHRzIGZyb20gXCJ0eXBlc2NyaXB0XCI7XG5pbXBvcnQgXCIuLi9leHRlbnNpb25zL3Byb2plY3QuZXh0ZW5zaW9ucy5qc1wiO1xuaW1wb3J0IHsgQ2FjaGVzT3V0cHV0cyB9IGZyb20gXCIuLi9taXhpbnMvY2FjaGVzLW91dHB1dHMubWl4aW4uanNcIjtcbmltcG9ydCB7IEluY3JlbWVudGFsVHJhbnNmb3JtIH0gZnJvbSBcIi4uL21peGlucy9pbmNyZW1lbnRhbC10cmFuc2Zvcm0ubWl4aW4uanNcIjtcbmltcG9ydCB7IFRzUHJvZ3JhbUhvc3QgfSBmcm9tIFwiLi4vc2VydmljZXMvdHMtcHJvZ3JhbS1ob3N0LmpzXCI7XG5pbXBvcnQge1xuXHRUeXBlRW1pc3Npb25Qcm9ncmFtLFxuXHR0eXBlIFR5cGVQcm9ncmFtUHJvamVjdCxcbn0gZnJvbSBcIi4uL3NlcnZpY2VzL3R5cGUtZW1pc3Npb24tcHJvZ3JhbS5qc1wiO1xuaW1wb3J0IHsgdHlwZSBCdWlsZFRhcmdldCwgQnVpbGRUYXJnZXRzIH0gZnJvbSBcIi4uL3R5cGVzL2J1aWxkLXRhcmdldC50eXBlLmpzXCI7XG5pbXBvcnQgdHlwZSB7IFRyYW5zZm9ybVJlc3BvbnNlIH0gZnJvbSBcIi4uL3R5cGVzL3RyYW5zZm9ybS1yZXNwb25zZS5tb2RlbC5qc1wiO1xuaW1wb3J0IHR5cGUgeyBUcmFuc2Zvcm1lciB9IGZyb20gXCIuLi90eXBlcy90cmFuc2Zvcm1lci50eXBlLmpzXCI7XG5cbi8qKlxuICogQ29tcGlsZXIgb3B0aW9uIGRlZmF1bHRzIGFwcGxpZWQgYmVmb3JlIHRoZSB1c2VyJ3MgdHNjb25maWcg4oCUIHRoZSB1c2VyJ3MgdmFsdWVzIG92ZXJyaWRlIHRoZXNlLlxuICpcbiAqIGxpYjogRVMyMDIyIOKAlCBhdm9pZHMgbG9hZGluZyBsaWIuZG9tLmQudHMgKDEuOCBNQikgd2hpY2ggVFMgaW5jbHVkZXMgYnkgZGVmYXVsdFxuICogd2hlbiBubyBgbGliYCBpcyBzZXQuIEJhY2tlbmQgcGFja2FnZXMgaGF2ZSBubyB1c2UgZm9yIGJyb3dzZXIgQVBJcy5cbiAqXG4gKiB0eXBlczogW10g4oCUIGRpc2FibGVzIGFtYmllbnQgQHR5cGVzIGF1dG8tZGlzY292ZXJ5LiBXaXRob3V0IHRoaXMsIFRTIHNjYW5zXG4gKiBldmVyeSBAdHlwZXMvKiBwYWNrYWdlIGluIHRoZSBub2RlX21vZHVsZXMgaGllcmFyY2h5OyBpbiBhIG1vbm9yZXBvIHRoYXQgY2FuXG4gKiBwdWxsIGluIGRvemVucyBvZiB1bnJlbGF0ZWQgcGFja2FnZXMuIEV4cGxpY2l0bHkgaW1wb3J0ZWQgdHlwZXMgc3RpbGwgcmVzb2x2ZVxuICogbm9ybWFsbHk7IG9ubHkgYW1iaWVudCBnbG9iYWxzIChlLmcuIEJ1ZmZlciwgcHJvY2VzcykgYXJlIHN1cHByZXNzZWQg4oCUIGFkZFxuICogYHR5cGVzOiBbXCJub2RlXCJdYCB0byBhIHByb2plY3QncyB0c2NvbmZpZyB0byByZXN0b3JlIHRoZW0uXG4gKi9cbmV4cG9ydCBjb25zdCBERUZBVUxUX1RZUEVfRU1JVFRFUl9PUFRJT05TOiBSZWFkb25seTx0cy5Db21waWxlck9wdGlvbnM+ID0ge1xuXHRsaWI6IFtcImxpYi5lczIwMjIuZC50c1wiXSxcblx0dHlwZXM6IFtdLFxuXHRza2lwTGliQ2hlY2s6IHRydWUsXG59O1xuXG4vKipcbiAqIENvbXBpbGVyIG9wdGlvbnMgdGhhdCBUeXBlRW1pdHRlciBhbHdheXMgZW5mb3JjZXMgcmVnYXJkbGVzcyBvZiB3aGF0IHRoZSB1c2VyJ3NcbiAqIHRzY29uZmlnIHNwZWNpZmllcy4gQXBwbGllZCBhZnRlciB0aGUgdXNlciBzcHJlYWQgc28gdGhleSBjYW5ub3QgYmUgb3ZlcnJpZGRlbi5cbiAqL1xuZXhwb3J0IGNvbnN0IFJFUVVJUkVEX1RZUEVfRU1JVFRFUl9PUFRJT05TOiBSZWFkb25seTx0cy5Db21waWxlck9wdGlvbnM+ID0ge1xuXHRlbWl0RGVjbGFyYXRpb25Pbmx5OiB0cnVlLFxuXHRkZWNsYXJhdGlvbjogdHJ1ZSxcbn07XG5cbkBUcmFjZVxuZXhwb3J0IGNsYXNzIFR5cGVFbWl0dGVyXG5cdGV4dGVuZHMgbWl4d2l0aChDYWNoZXNPdXRwdXRzLCBJbmNyZW1lbnRhbFRyYW5zZm9ybSlcblx0aW1wbGVtZW50cyBUcmFuc2Zvcm1lclxue1xuXHRwdWJsaWMgYnVpbGRUYXJnZXRzOiBCdWlsZFRhcmdldFtdID0gW0J1aWxkVGFyZ2V0cy50eXBlc107XG5cdC8qKiBQcmVwYXJlZCBwcm9ncmFtcyBmcm9tIGluaXQoKSwgY29uc3VtZWQgb25jZSBieSB0aGUgbmV4dCB0cmFuc2Zvcm1Qcm9qZWN0KCkgY2FsbC4gKi9cblx0I3Byb2dyYW1zOiBUeXBlRW1pc3Npb25Qcm9ncmFtW10gfCB1bmRlZmluZWQ7XG5cdCNob3N0ID0gbmV3IFRzUHJvZ3JhbUhvc3QoKTtcblxuXHQvKipcblx0ICogUGhhc2UgMTogZmV0Y2ggZmlsZXMsIGNyZWF0ZSBUeXBlU2NyaXB0IHByb2dyYW1zIHNlcXVlbnRpYWxseS5cblx0ICogQ2FsbGVkIGJlZm9yZSB0cmFuc2Zvcm1Qcm9qZWN0KCkgc28gdGhhdCB0aGUgaGVhdnkgY3JlYXRlUHJvZ3JhbSB3b3JrXG5cdCAqIGNvbXBsZXRlcyBiZWZvcmUgb3RoZXIgdHJhbnNmb3JtZXJzIChTV0MvUmF5b24pIHN0YXJ0IHJ1bm5pbmcgaW4gcGFyYWxsZWwuXG5cdCAqL1xuXHRwdWJsaWMgYXN5bmMgaW5pdChcblx0XHRwcm9qZWN0QXJyYXlMaWtlOiBQcm9qZWN0W10gfCBQcm9qZWN0LFxuXHRcdF9maWx0ZXI/OiAocHJvamVjdDogUHJvamVjdCkgPT4gUHJvbWlzZTxGaWxlRXhbXT4sXG5cdCk6IFByb21pc2U8dm9pZD4ge1xuXHRcdGlmICh0aGlzLiNwcm9ncmFtcyA9PSBudWxsKSB7XG5cdFx0XHR0aGlzLiNwcm9ncmFtcyA9IGF3YWl0IHRoaXMucHJlcGFyZVByb2dyYW1zKHByb2plY3RBcnJheUxpa2UpO1xuXHRcdH1cblx0fVxuXG5cdHB1YmxpYyBhc3luYyB0cmFuc2Zvcm1Qcm9qZWN0KFxuXHRcdHByb2plY3RBcnJheUxpa2U6IFByb2plY3RbXSB8IFByb2plY3QsXG5cdFx0ZmlsdGVyPzogKHByb2plY3Q6IFByb2plY3QpID0+IFByb21pc2U8RmlsZUV4W10+LFxuXHRcdG9uT3V0cHV0PzogKHJlc3BvbnNlOiBUcmFuc2Zvcm1SZXNwb25zZSkgPT4gdm9pZCxcblx0KTogUHJvbWlzZTxUcmFuc2Zvcm1SZXNwb25zZVtdPiB7XG5cdFx0Ly8gQ29uc3VtZSBwcmVwYXJlZCBzdGF0ZSBmcm9tIGluaXQoKSBpZiBhdmFpbGFibGU7IG90aGVyd2lzZSBkbyBmdWxsIHNldHVwXG5cdFx0Ly8gKGUuZy4gd2F0Y2gtbW9kZSBzaW5nbGUtZmlsZSByZWJ1aWxkcyB0aGF0IHNraXAgdGhlIGluaXQgcGhhc2UpLlxuXHRcdGNvbnN0IHByb2dyYW1zID0gdGhpcy4jcHJvZ3JhbXMgPz8gKGF3YWl0IHRoaXMucHJlcGFyZVByb2dyYW1zKHByb2plY3RBcnJheUxpa2UpKTtcblx0XHR0aGlzLiNwcm9ncmFtcyA9IHByb2dyYW1zO1xuXG5cdFx0aWYgKHByb2dyYW1zLmxlbmd0aCA9PT0gMCkge1xuXHRcdFx0cmV0dXJuIFtdO1xuXHRcdH1cblxuXHRcdGNvbnN0IHJlc3BvbnNlcyA9IChcblx0XHRcdGF3YWl0IFByb21pc2UuYWxsKHByb2dyYW1zLm1hcCgocHJvZ3JhbSkgPT4gcHJvZ3JhbS5lbWl0KGZpbHRlciwgb25PdXRwdXQpKSlcblx0XHQpLmZsYXQoKTtcblx0XHR0aGlzLmNhY2hlT3V0cHV0cyhyZXNwb25zZXMpO1xuXHRcdHJldHVybiByZXNwb25zZXM7XG5cdH1cblxuXHRwcml2YXRlIGFzeW5jIHByZXBhcmVQcm9ncmFtcyhcblx0XHRwcm9qZWN0QXJyYXlMaWtlOiBQcm9qZWN0W10gfCBQcm9qZWN0LFxuXHQpOiBQcm9taXNlPFR5cGVFbWlzc2lvblByb2dyYW1bXT4ge1xuXHRcdGNvbnN0IGFsbFByb2plY3RzID0gQXJyYXkuaXNBcnJheShwcm9qZWN0QXJyYXlMaWtlKVxuXHRcdFx0PyBwcm9qZWN0QXJyYXlMaWtlXG5cdFx0XHQ6IFtwcm9qZWN0QXJyYXlMaWtlXTtcblx0XHRjb25zdCBwcm9qZWN0cyA9IGFsbFByb2plY3RzLmZpbHRlcigocHJvaikgPT5cblx0XHRcdHByb2ouZ2V0Rm9yZ2VDb25maWd1cmF0aW9uKCkudGFyZ2V0cy5pbmNsdWRlcyhCdWlsZFRhcmdldHMudHlwZXMpLFxuXHRcdCk7XG5cdFx0aWYgKHByb2plY3RzLmxlbmd0aCA9PT0gMCkge1xuXHRcdFx0cmV0dXJuIFtdO1xuXHRcdH1cblxuXHRcdC8vIFByZS1mZXRjaCBhbGwgZmlsZXMgYW5kIHRzY29uZmlncyBpbiBwYXJhbGxlbCBhY3Jvc3MgYWxsIHByb2plY3RzXG5cdFx0Y29uc3QgcHJvamVjdERhdGE6IFR5cGVQcm9ncmFtUHJvamVjdFtdID0gYXdhaXQgUHJvbWlzZS5hbGwoXG5cdFx0XHRwcm9qZWN0cy5tYXAoYXN5bmMgKHByb2opID0+ICh7XG5cdFx0XHRcdHByb2plY3Q6IHByb2osXG5cdFx0XHRcdGZpbGVzOiBhd2FpdCBwcm9qLmdldEFsbEZpbGVzKCksXG5cdFx0XHRcdHRzY29uZmlnOiBhd2FpdCBwcm9qLmdldFRzQ29uZmlnKCksXG5cdFx0XHR9KSksXG5cdFx0KTtcblxuXHRcdC8vIEdyb3VwIHByb2plY3RzIGJ5IHRoZSByZXNvbHZlZCBjb21waWxlciBvcHRpb25zIHRoYXQgYWZmZWN0IHRoZSBjb21waWxlclxuXHRcdC8vIGhvc3QgKGxpYiBsb2FkaW5nLCBtb2R1bGUgcmVzb2x1dGlvbiwgcGF0aCBhbGlhc2VzKS4gUHJvamVjdHMgc2hhcmluZyB0aGVcblx0XHQvLyBzYW1lIHJlc29sdmVkIHZhbHVlcyBnZXQgb25lIHNoYXJlZCBob3N0IEFORCBvbmUgc2hhcmVkIHByb2dyYW0g4oCUIGFsbCB0aGVpclxuXHRcdC8vIGZpbGVzIGFyZSBjb21waWxlZCB0b2dldGhlciwgbWF0Y2hpbmcgdjEncyBzaW5nbGUtcHJvZ3JhbSBhcHByb2FjaCB3aGljaFxuXHRcdC8vIGF2b2lkcyByZS1wYXJzaW5nIGxpYi9ub2RlX21vZHVsZXMgLmQudHMgZmlsZXMgcGVyIHByb2plY3QuXG5cdFx0Y29uc3QgZ3JvdXBzID0gTWFwLmdyb3VwQnkocHJvamVjdERhdGEsICh7IHRzY29uZmlnIH0pID0+XG5cdFx0XHR0aGlzLiNob3N0Lmhvc3RLZXkodHNjb25maWcuY29tcGlsZXJPcHRpb25zKSxcblx0XHQpO1xuXG5cdFx0cmV0dXJuIFsuLi5ncm91cHMudmFsdWVzKCldLm1hcCgoZ3JvdXApID0+IG5ldyBUeXBlRW1pc3Npb25Qcm9ncmFtKGdyb3VwLCB0aGlzLiNob3N0KSk7XG5cdH1cblxuXHRwcm90ZWN0ZWQgYXN5bmMgb25JbmNyZW1lbnRhbEZpbGVFdmVudChldnQ6IFByb2plY3RGaWxlRXZlbnQpOiBQcm9taXNlPFRyYW5zZm9ybVJlc3BvbnNlW10+IHtcblx0XHRjb25zdCB7IGZpbGUsIHByb2plY3QgfSA9IGV2dDtcblx0XHRpZiAoZXZ0LmV2ZW50TmFtZSA9PT0gaW8uV2F0Y2hFdmVudHMudW5saW5rKSB7XG5cdFx0XHR0aGlzLmRlbGV0ZUNhY2hlZE91dHB1dHMoZmlsZS5mdWxsUGF0aCk7XG5cdFx0XHRyZXR1cm4gW107XG5cdFx0fVxuXHRcdGlmICghcHJvamVjdC5pc1NvdXJjZUZpbGUoZmlsZSkpIHtcblx0XHRcdHJldHVybiBbXTtcblx0XHR9XG5cdFx0aWYgKGV2dC5ldmVudE5hbWUgPT09IGlvLldhdGNoRXZlbnRzLmFkZCkge1xuXHRcdFx0dGhpcy4jcHJvZ3JhbXM/LmZvckVhY2goKHApID0+IHtcblx0XHRcdFx0cC5hZGRGaWxlKGZpbGUsIHByb2plY3QpO1xuXHRcdFx0fSk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHRoaXMuaW52YWxpZGF0ZVJlYWRGaWxlQ2FjaGUoZmlsZS5mdWxsUGF0aCk7XG5cdFx0XHR0aGlzLiNob3N0LmludmFsaWRhdGVTb3VyY2VGaWxlKGZpbGUuZnVsbFBhdGgpO1xuXHRcdH1cblx0XHRyZXR1cm4gdGhpcy50cmFuc2Zvcm1Qcm9qZWN0KHByb2plY3QsICgpID0+IFByb21pc2UucmVzb2x2ZShbZmlsZV0pKTtcblx0fVxuXG5cdEBpbnZhbGlkYXRlQ2FjaGUoVHNQcm9ncmFtSG9zdC5wcm90b3R5cGUucmVhZEZpbGVGcm9tRGlzaywge1xuXHRcdG5hbWU6IFwiRklMRV9DT05URU5UXCIsXG5cdFx0a2V5Rm46ICguLi5hcmdzKSA9PiBhcmdzWzBdIGFzIHN0cmluZyxcblx0fSlcblx0cHJpdmF0ZSBpbnZhbGlkYXRlUmVhZEZpbGVDYWNoZShfcGF0aDogc3RyaW5nKTogdm9pZCB7fVxufVxuIl0sIm5hbWVzIjpbImludmFsaWRhdGVDYWNoZSIsIlRyYWNlIiwibWl4d2l0aCIsImlvIiwiQ2FjaGVzT3V0cHV0cyIsIkluY3JlbWVudGFsVHJhbnNmb3JtIiwiVHNQcm9ncmFtSG9zdCIsIlR5cGVFbWlzc2lvblByb2dyYW0iLCJCdWlsZFRhcmdldHMiLCJERUZBVUxUX1RZUEVfRU1JVFRFUl9PUFRJT05TIiwibGliIiwidHlwZXMiLCJza2lwTGliQ2hlY2siLCJSRVFVSVJFRF9UWVBFX0VNSVRURVJfT1BUSU9OUyIsImVtaXREZWNsYXJhdGlvbk9ubHkiLCJkZWNsYXJhdGlvbiIsIlR5cGVFbWl0dGVyIiwiYnVpbGRUYXJnZXRzIiwiaW5pdCIsInByb2plY3RBcnJheUxpa2UiLCJfZmlsdGVyIiwicHJlcGFyZVByb2dyYW1zIiwidHJhbnNmb3JtUHJvamVjdCIsImZpbHRlciIsIm9uT3V0cHV0IiwicHJvZ3JhbXMiLCJsZW5ndGgiLCJyZXNwb25zZXMiLCJQcm9taXNlIiwiYWxsIiwibWFwIiwicHJvZ3JhbSIsImVtaXQiLCJmbGF0IiwiY2FjaGVPdXRwdXRzIiwiYWxsUHJvamVjdHMiLCJBcnJheSIsImlzQXJyYXkiLCJwcm9qZWN0cyIsInByb2oiLCJnZXRGb3JnZUNvbmZpZ3VyYXRpb24iLCJ0YXJnZXRzIiwiaW5jbHVkZXMiLCJwcm9qZWN0RGF0YSIsInByb2plY3QiLCJmaWxlcyIsImdldEFsbEZpbGVzIiwidHNjb25maWciLCJnZXRUc0NvbmZpZyIsImdyb3VwcyIsIk1hcCIsImdyb3VwQnkiLCJob3N0S2V5IiwiY29tcGlsZXJPcHRpb25zIiwidmFsdWVzIiwiZ3JvdXAiLCJvbkluY3JlbWVudGFsRmlsZUV2ZW50IiwiZXZ0IiwiZmlsZSIsImV2ZW50TmFtZSIsIldhdGNoRXZlbnRzIiwidW5saW5rIiwiZGVsZXRlQ2FjaGVkT3V0cHV0cyIsImZ1bGxQYXRoIiwiaXNTb3VyY2VGaWxlIiwiYWRkIiwiZm9yRWFjaCIsInAiLCJhZGRGaWxlIiwiaW52YWxpZGF0ZVJlYWRGaWxlQ2FjaGUiLCJpbnZhbGlkYXRlU291cmNlRmlsZSIsInJlc29sdmUiLCJfcGF0aCIsInByb3RvdHlwZSIsInJlYWRGaWxlRnJvbURpc2siLCJuYW1lIiwia2V5Rm4iLCJhcmdzIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFDQSxTQUFTQSxlQUFlLFFBQVEsMEJBQTBCO0FBQzFELFNBQVNDLEtBQUssUUFBUSw4QkFBOEI7QUFDcEQsU0FBU0MsT0FBTyxRQUFRLGdDQUFn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
161
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL2ZvcmdlL3NyYy9zZXJ2aWNlcy90eXBlLWVtaXR0ZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBQcm9qZWN0LCBQcm9qZWN0RmlsZUV2ZW50IH0gZnJvbSBcIkBkZWNvaGVyZS9tZXNoXCI7XG5pbXBvcnQgeyBpbnZhbGlkYXRlQ2FjaGUgfSBmcm9tIFwiQGRlY29oZXJlL25leHVzL2NhY2hpbmdcIjtcbmltcG9ydCB7IFRyYWNlIH0gZnJvbSBcIkBkZWNvaGVyZS9uZXh1cy9kaWFnbm9zdGljc1wiO1xuaW1wb3J0IHsgbWl4d2l0aCB9IGZyb20gXCJAZGVjb2hlcmUvbmV4dXMvZXh0ZW5zaWJpbGl0eVwiO1xuaW1wb3J0IHR5cGUgeyBGaWxlRXggfSBmcm9tIFwiQGRlY29oZXJlL25leHVzL2lvXCI7XG5pbXBvcnQgeyBpbyB9IGZyb20gXCJAZGVjb2hlcmUvbmV4dXMvaW9cIjtcbmltcG9ydCB0eXBlIHRzIGZyb20gXCJ0eXBlc2NyaXB0XCI7XG5pbXBvcnQgXCIuLi9leHRlbnNpb25zL3Byb2plY3QuZXh0ZW5zaW9ucy5qc1wiO1xuaW1wb3J0IHsgQ2FjaGVzT3V0cHV0cyB9IGZyb20gXCIuLi9taXhpbnMvY2FjaGVzLW91dHB1dHMubWl4aW4uanNcIjtcbmltcG9ydCB7IEluY3JlbWVudGFsVHJhbnNmb3JtIH0gZnJvbSBcIi4uL21peGlucy9pbmNyZW1lbnRhbC10cmFuc2Zvcm0ubWl4aW4uanNcIjtcbmltcG9ydCB7IFRzUHJvZ3JhbUhvc3QgfSBmcm9tIFwiLi4vc2VydmljZXMvdHMtcHJvZ3JhbS1ob3N0LmpzXCI7XG5pbXBvcnQge1xuXHRUeXBlRW1pc3Npb25Qcm9ncmFtLFxuXHR0eXBlIFR5cGVQcm9ncmFtUHJvamVjdCxcbn0gZnJvbSBcIi4uL3NlcnZpY2VzL3R5cGUtZW1pc3Npb24tcHJvZ3JhbS5qc1wiO1xuaW1wb3J0IHsgdHlwZSBCdWlsZFRhcmdldCwgQnVpbGRUYXJnZXRzIH0gZnJvbSBcIi4uL3R5cGVzL2J1aWxkLXRhcmdldC50eXBlLmpzXCI7XG5pbXBvcnQgdHlwZSB7IFRyYW5zZm9ybVJlc3BvbnNlIH0gZnJvbSBcIi4uL3R5cGVzL3RyYW5zZm9ybS1yZXNwb25zZS5tb2RlbC5qc1wiO1xuaW1wb3J0IHR5cGUgeyBUcmFuc2Zvcm1lciB9IGZyb20gXCIuLi90eXBlcy90cmFuc2Zvcm1lci50eXBlLmpzXCI7XG5cbi8qKlxuICogQ29tcGlsZXIgb3B0aW9uIGRlZmF1bHRzIGFwcGxpZWQgYmVmb3JlIHRoZSB1c2VyJ3MgdHNjb25maWcg4oCUIHRoZSB1c2VyJ3MgdmFsdWVzIG92ZXJyaWRlIHRoZXNlLlxuICpcbiAqIGxpYjogRVMyMDIyIOKAlCBhdm9pZHMgbG9hZGluZyBsaWIuZG9tLmQudHMgKDEuOCBNQikgd2hpY2ggVFMgaW5jbHVkZXMgYnkgZGVmYXVsdFxuICogd2hlbiBubyBgbGliYCBpcyBzZXQuIEJhY2tlbmQgcGFja2FnZXMgaGF2ZSBubyB1c2UgZm9yIGJyb3dzZXIgQVBJcy5cbiAqXG4gKiB0eXBlczogW10g4oCUIGRpc2FibGVzIGFtYmllbnQgQHR5cGVzIGF1dG8tZGlzY292ZXJ5LiBXaXRob3V0IHRoaXMsIFRTIHNjYW5zXG4gKiBldmVyeSBAdHlwZXMvKiBwYWNrYWdlIGluIHRoZSBub2RlX21vZHVsZXMgaGllcmFyY2h5OyBpbiBhIG1vbm9yZXBvIHRoYXQgY2FuXG4gKiBwdWxsIGluIGRvemVucyBvZiB1bnJlbGF0ZWQgcGFja2FnZXMuIEV4cGxpY2l0bHkgaW1wb3J0ZWQgdHlwZXMgc3RpbGwgcmVzb2x2ZVxuICogbm9ybWFsbHk7IG9ubHkgYW1iaWVudCBnbG9iYWxzIChlLmcuIEJ1ZmZlciwgcHJvY2VzcykgYXJlIHN1cHByZXNzZWQg4oCUIGFkZFxuICogYHR5cGVzOiBbXCJub2RlXCJdYCB0byBhIHByb2plY3QncyB0c2NvbmZpZyB0byByZXN0b3JlIHRoZW0uXG4gKi9cbmV4cG9ydCBjb25zdCBERUZBVUxUX1RZUEVfRU1JVFRFUl9PUFRJT05TOiBSZWFkb25seTx0cy5Db21waWxlck9wdGlvbnM+ID0ge1xuXHRsaWI6IFtcImxpYi5lczIwMjIuZC50c1wiXSxcblx0dHlwZXM6IFtdLFxuXHRza2lwTGliQ2hlY2s6IHRydWUsXG59O1xuXG4vKipcbiAqIENvbXBpbGVyIG9wdGlvbnMgdGhhdCBUeXBlRW1pdHRlciBhbHdheXMgZW5mb3JjZXMgcmVnYXJkbGVzcyBvZiB3aGF0IHRoZSB1c2VyJ3NcbiAqIHRzY29uZmlnIHNwZWNpZmllcy4gQXBwbGllZCBhZnRlciB0aGUgdXNlciBzcHJlYWQgc28gdGhleSBjYW5ub3QgYmUgb3ZlcnJpZGRlbi5cbiAqL1xuZXhwb3J0IGNvbnN0IFJFUVVJUkVEX1RZUEVfRU1JVFRFUl9PUFRJT05TOiBSZWFkb25seTx0cy5Db21waWxlck9wdGlvbnM+ID0ge1xuXHRlbWl0RGVjbGFyYXRpb25Pbmx5OiB0cnVlLFxuXHRkZWNsYXJhdGlvbjogdHJ1ZSxcbn07XG5cbi8qKiBDb21waWxlciBvcHRpb25zIGVuZm9yY2VkIGZvciBgZm9yZ2UgdHlwZWNoZWNrYCDigJQgbmV2ZXIgZW1pdCBKUyBvciBkZWNsYXJhdGlvbnMuICovXG5leHBvcnQgY29uc3QgUkVRVUlSRURfVFlQRV9DSEVDS19PUFRJT05TOiBSZWFkb25seTx0cy5Db21waWxlck9wdGlvbnM+ID0ge1xuXHRub0VtaXQ6IHRydWUsXG59O1xuXG5leHBvcnQgdHlwZSBQcmVwYXJlUHJvZ3JhbXNPcHRpb25zID0ge1xuXHRpbmNsdWRlQWxsUHJvamVjdHM/OiBib29sZWFuO1xuXHRyZXF1aXJlZENvbXBpbGVyT3B0aW9ucz86IHRzLkNvbXBpbGVyT3B0aW9ucztcbn07XG5cbkBUcmFjZVxuZXhwb3J0IGNsYXNzIFR5cGVFbWl0dGVyXG5cdGV4dGVuZHMgbWl4d2l0aChDYWNoZXNPdXRwdXRzLCBJbmNyZW1lbnRhbFRyYW5zZm9ybSlcblx0aW1wbGVtZW50cyBUcmFuc2Zvcm1lclxue1xuXHRwdWJsaWMgYnVpbGRUYXJnZXRzOiBCdWlsZFRhcmdldFtdID0gW0J1aWxkVGFyZ2V0cy50eXBlc107XG5cdC8qKiBQcmVwYXJlZCBwcm9ncmFtcyBmcm9tIGluaXQoKSwgY29uc3VtZWQgb25jZSBieSB0aGUgbmV4dCB0cmFuc2Zvcm1Qcm9qZWN0KCkgY2FsbC4gKi9cblx0I3Byb2dyYW1zOiBUeXBlRW1pc3Npb25Qcm9ncmFtW10gfCB1bmRlZmluZWQ7XG5cdCNob3N0ID0gbmV3IFRzUHJvZ3JhbUhvc3QoKTtcblxuXHQvKipcblx0ICogUGhhc2UgMTogZmV0Y2ggZmlsZXMsIGNyZWF0ZSBUeXBlU2NyaXB0IHByb2dyYW1zIHNlcXVlbnRpYWxseS5cblx0ICogQ2FsbGVkIGJlZm9yZSB0cmFuc2Zvcm1Qcm9qZWN0KCkgc28gdGhhdCB0aGUgaGVhdnkgY3JlYXRlUHJvZ3JhbSB3b3JrXG5cdCAqIGNvbXBsZXRlcyBiZWZvcmUgb3RoZXIgdHJhbnNmb3JtZXJzIChTV0MvUmF5b24pIHN0YXJ0IHJ1bm5pbmcgaW4gcGFyYWxsZWwuXG5cdCAqL1xuXHRwdWJsaWMgYXN5bmMgaW5pdChcblx0XHRwcm9qZWN0QXJyYXlMaWtlOiBQcm9qZWN0W10gfCBQcm9qZWN0LFxuXHRcdF9maWx0ZXI/OiAocHJvamVjdDogUHJvamVjdCkgPT4gUHJvbWlzZTxGaWxlRXhbXT4sXG5cdCk6IFByb21pc2U8dm9pZD4ge1xuXHRcdGlmICh0aGlzLiNwcm9ncmFtcyA9PSBudWxsKSB7XG5cdFx0XHR0aGlzLiNwcm9ncmFtcyA9IGF3YWl0IHRoaXMucHJlcGFyZVByb2dyYW1zKHByb2plY3RBcnJheUxpa2UpO1xuXHRcdH1cblx0fVxuXG5cdHB1YmxpYyBhc3luYyB0cmFuc2Zvcm1Qcm9qZWN0KFxuXHRcdHByb2plY3RBcnJheUxpa2U6IFByb2plY3RbXSB8IFByb2plY3QsXG5cdFx0ZmlsdGVyPzogKHByb2plY3Q6IFByb2plY3QpID0+IFByb21pc2U8RmlsZUV4W10+LFxuXHRcdG9uT3V0cHV0PzogKHJlc3BvbnNlOiBUcmFuc2Zvcm1SZXNwb25zZSkgPT4gdm9pZCxcblx0KTogUHJvbWlzZTxUcmFuc2Zvcm1SZXNwb25zZVtdPiB7XG5cdFx0Ly8gQ29uc3VtZSBwcmVwYXJlZCBzdGF0ZSBmcm9tIGluaXQoKSBpZiBhdmFpbGFibGU7IG90aGVyd2lzZSBkbyBmdWxsIHNldHVwXG5cdFx0Ly8gKGUuZy4gd2F0Y2gtbW9kZSBzaW5nbGUtZmlsZSByZWJ1aWxkcyB0aGF0IHNraXAgdGhlIGluaXQgcGhhc2UpLlxuXHRcdGNvbnN0IHByb2dyYW1zID0gdGhpcy4jcHJvZ3JhbXMgPz8gKGF3YWl0IHRoaXMucHJlcGFyZVByb2dyYW1zKHByb2plY3RBcnJheUxpa2UpKTtcblx0XHR0aGlzLiNwcm9ncmFtcyA9IHByb2dyYW1zO1xuXG5cdFx0aWYgKHByb2dyYW1zLmxlbmd0aCA9PT0gMCkge1xuXHRcdFx0cmV0dXJuIFtdO1xuXHRcdH1cblxuXHRcdGNvbnN0IHJlc3BvbnNlcyA9IChcblx0XHRcdGF3YWl0IFByb21pc2UuYWxsKHByb2dyYW1zLm1hcCgocHJvZ3JhbSkgPT4gcHJvZ3JhbS5lbWl0KGZpbHRlciwgb25PdXRwdXQpKSlcblx0XHQpLmZsYXQoKTtcblx0XHR0aGlzLmNhY2hlT3V0cHV0cyhyZXNwb25zZXMpO1xuXHRcdHJldHVybiByZXNwb25zZXM7XG5cdH1cblxuXHQvKipcblx0ICogVHlwZS1jaGVjayBwcm9qZWN0cyB3aXRob3V0IGVtaXR0aW5nIGZpbGVzLiBJbmNsdWRlcyBldmVyeSBNZXNoIHByb2plY3QsIG5vdFxuXHQgKiBvbmx5IHRob3NlIHdpdGggYSBgdHlwZXNgIGJ1aWxkIHRhcmdldCAoZGVidWcgaXMgZXM2LW9ubHkpLlxuXHQgKi9cblx0cHVibGljIGFzeW5jIGNoZWNrUHJvamVjdChcblx0XHRwcm9qZWN0QXJyYXlMaWtlOiBQcm9qZWN0W10gfCBQcm9qZWN0LFxuXHQpOiBQcm9taXNlPHsgZGlhZ25vc3RpY3M6IHRzLkRpYWdub3N0aWNbXTsgZm9ybWF0dGVkOiBzdHJpbmcgfT4ge1xuXHRcdGNvbnN0IHByb2dyYW1zID0gYXdhaXQgdGhpcy5wcmVwYXJlUHJvZ3JhbXMocHJvamVjdEFycmF5TGlrZSwge1xuXHRcdFx0aW5jbHVkZUFsbFByb2plY3RzOiB0cnVlLFxuXHRcdFx0cmVxdWlyZWRDb21waWxlck9wdGlvbnM6IFJFUVVJUkVEX1RZUEVfQ0hFQ0tfT1BUSU9OUyxcblx0XHR9KTtcblx0XHRjb25zdCBkaWFnbm9zdGljczogdHMuRGlhZ25vc3RpY1tdID0gW107XG5cdFx0Y29uc3QgZm9ybWF0dGVkUGFydHM6IHN0cmluZ1tdID0gW107XG5cdFx0Zm9yIChjb25zdCBwcm9ncmFtIG9mIHByb2dyYW1zKSB7XG5cdFx0XHRjb25zdCBwcm9ncmFtRGlhZ25vc3RpY3MgPSBwcm9ncmFtLmNoZWNrKCk7XG5cdFx0XHRpZiAocHJvZ3JhbURpYWdub3N0aWNzLmxlbmd0aCA9PT0gMCkge1xuXHRcdFx0XHRjb250aW51ZTtcblx0XHRcdH1cblx0XHRcdGRpYWdub3N0aWNzLnB1c2goLi4ucHJvZ3JhbURpYWdub3N0aWNzKTtcblx0XHRcdGZvcm1hdHRlZFBhcnRzLnB1c2gocHJvZ3JhbS5mb3JtYXREaWFnbm9zdGljcyhwcm9ncmFtRGlhZ25vc3RpY3MpKTtcblx0XHR9XG5cdFx0cmV0dXJuIHsgZGlhZ25vc3RpY3MsIGZvcm1hdHRlZDogZm9ybWF0dGVkUGFydHMuam9pbihcIlwiKSB9O1xuXHR9XG5cblx0cHJpdmF0ZSBhc3luYyBwcmVwYXJlUHJvZ3JhbXMoXG5cdFx0cHJvamVjdEFycmF5TGlrZTogUHJvamVjdFtdIHwgUHJvamVjdCxcblx0XHRvcHRpb25zOiBQcmVwYXJlUHJvZ3JhbXNPcHRpb25zID0ge30sXG5cdCk6IFByb21pc2U8VHlwZUVtaXNzaW9uUHJvZ3JhbVtdPiB7XG5cdFx0Y29uc3QgYWxsUHJvamVjdHMgPSBBcnJheS5pc0FycmF5KHByb2plY3RBcnJheUxpa2UpXG5cdFx0XHQ/IHByb2plY3RBcnJheUxpa2Vcblx0XHRcdDogW3Byb2plY3RBcnJheUxpa2VdO1xuXHRcdGNvbnN0IHByb2plY3RzID0gb3B0aW9ucy5pbmNsdWRlQWxsUHJvamVjdHNcblx0XHRcdD8gYWxsUHJvamVjdHNcblx0XHRcdDogYWxsUHJvamVjdHMuZmlsdGVyKChwcm9qKSA9PlxuXHRcdFx0XHRcdHByb2ouZ2V0Rm9yZ2VDb25maWd1cmF0aW9uKCkudGFyZ2V0cy5pbmNsdWRlcyhCdWlsZFRhcmdldHMudHlwZXMpLFxuXHRcdFx0XHQpO1xuXHRcdGlmIChwcm9qZWN0cy5sZW5ndGggPT09IDApIHtcblx0XHRcdHJldHVybiBbXTtcblx0XHR9XG5cblx0XHQvLyBQcmUtZmV0Y2ggYWxsIGZpbGVzIGFuZCB0c2NvbmZpZ3MgaW4gcGFyYWxsZWwgYWNyb3NzIGFsbCBwcm9qZWN0c1xuXHRcdGNvbnN0IHByb2plY3REYXRhOiBUeXBlUHJvZ3JhbVByb2plY3RbXSA9IGF3YWl0IFByb21pc2UuYWxsKFxuXHRcdFx0cHJvamVjdHMubWFwKGFzeW5jIChwcm9qKSA9PiAoe1xuXHRcdFx0XHRwcm9qZWN0OiBwcm9qLFxuXHRcdFx0XHRmaWxlczogYXdhaXQgcHJvai5nZXRBbGxGaWxlcygpLFxuXHRcdFx0XHR0c2NvbmZpZzogYXdhaXQgcHJvai5nZXRUc0NvbmZpZygpLFxuXHRcdFx0fSkpLFxuXHRcdCk7XG5cblx0XHQvLyBHcm91cCBwcm9qZWN0cyBieSB0aGUgcmVzb2x2ZWQgY29tcGlsZXIgb3B0aW9ucyB0aGF0IGFmZmVjdCB0aGUgY29tcGlsZXJcblx0XHQvLyBob3N0IChsaWIgbG9hZGluZywgbW9kdWxlIHJlc29sdXRpb24sIHBhdGggYWxpYXNlcykuIFByb2plY3RzIHNoYXJpbmcgdGhlXG5cdFx0Ly8gc2FtZSByZXNvbHZlZCB2YWx1ZXMgZ2V0IG9uZSBzaGFyZWQgaG9zdCBBTkQgb25lIHNoYXJlZCBwcm9ncmFtIOKAlCBhbGwgdGhlaXJcblx0XHQvLyBmaWxlcyBhcmUgY29tcGlsZWQgdG9nZXRoZXIsIG1hdGNoaW5nIHYxJ3Mgc2luZ2xlLXByb2dyYW0gYXBwcm9hY2ggd2hpY2hcblx0XHQvLyBhdm9pZHMgcmUtcGFyc2luZyBsaWIvbm9kZV9tb2R1bGVzIC5kLnRzIGZpbGVzIHBlciBwcm9qZWN0LlxuXHRcdGNvbnN0IGdyb3VwcyA9IE1hcC5ncm91cEJ5KHByb2plY3REYXRhLCAoeyB0c2NvbmZpZyB9KSA9PlxuXHRcdFx0dGhpcy4jaG9zdC5ob3N0S2V5KHRzY29uZmlnLmNvbXBpbGVyT3B0aW9ucyksXG5cdFx0KTtcblxuXHRcdGNvbnN0IHJlcXVpcmVkQ29tcGlsZXJPcHRpb25zID1cblx0XHRcdG9wdGlvbnMucmVxdWlyZWRDb21waWxlck9wdGlvbnMgPz8gUkVRVUlSRURfVFlQRV9FTUlUVEVSX09QVElPTlM7XG5cdFx0cmV0dXJuIFsuLi5ncm91cHMudmFsdWVzKCldLm1hcChcblx0XHRcdChncm91cCkgPT4gbmV3IFR5cGVFbWlzc2lvblByb2dyYW0oZ3JvdXAsIHRoaXMuI2hvc3QsIHJlcXVpcmVkQ29tcGlsZXJPcHRpb25zKSxcblx0XHQpO1xuXHR9XG5cblx0cHJvdGVjdGVkIGFzeW5jIG9uSW5jcmVtZW50YWxGaWxlRXZlbnQoZXZ0OiBQcm9qZWN0RmlsZUV2ZW50KTogUHJvbWlzZTxUcmFuc2Zvcm1SZXNwb25zZVtdPiB7XG5cdFx0Y29uc3QgeyBmaWxlLCBwcm9qZWN0IH0gPSBldnQ7XG5cdFx0aWYgKGV2dC5ldmVudE5hbWUgPT09IGlvLldhdGNoRXZlbnRzLnVubGluaykge1xuXHRcdFx0dGhpcy5kZWxldGVDYWNoZWRPdXRwdXRzKGZpbGUuZnVsbFBhdGgpO1xuXHRcdFx0cmV0dXJuIFtdO1xuXHRcdH1cblx0XHRpZiAoIXByb2plY3QuaXNTb3VyY2VGaWxlKGZpbGUpKSB7XG5cdFx0XHRyZXR1cm4gW107XG5cdFx0fVxuXHRcdGlmIChldnQuZXZlbnROYW1lID09PSBpby5XYXRjaEV2ZW50cy5hZGQpIHtcblx0XHRcdHRoaXMuI3Byb2dyYW1zPy5mb3JFYWNoKChwKSA9PiB7XG5cdFx0XHRcdHAuYWRkRmlsZShmaWxlLCBwcm9qZWN0KTtcblx0XHRcdH0pO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aGlzLmludmFsaWRhdGVSZWFkRmlsZUNhY2hlKGZpbGUuZnVsbFBhdGgpO1xuXHRcdFx0dGhpcy4jaG9zdC5pbnZhbGlkYXRlU291cmNlRmlsZShmaWxlLmZ1bGxQYXRoKTtcblx0XHR9XG5cdFx0cmV0dXJuIHRoaXMudHJhbnNmb3JtUHJvamVjdChwcm9qZWN0LCAoKSA9PiBQcm9taXNlLnJlc29sdmUoW2ZpbGVdKSk7XG5cdH1cblxuXHRAaW52YWxpZGF0ZUNhY2hlKFRzUHJvZ3JhbUhvc3QucHJvdG90eXBlLnJlYWRGaWxlRnJvbURpc2ssIHtcblx0XHRuYW1lOiBcIkZJTEVfQ09OVEVOVFwiLFxuXHRcdGtleUZuOiAoLi4uYXJncykgPT4gYXJnc1swXSBhcyBzdHJpbmcsXG5cdH0pXG5cdHByaXZhdGUgaW52YWxpZGF0ZVJlYWRGaWxlQ2FjaGUoX3BhdGg6IHN0cmluZyk6IHZvaWQge31cbn1cbiJdLCJuYW1lcyI6WyJpbnZhbGlkYXRlQ2FjaGUiLCJUcmFjZSIsIm1peHdpdGgiLCJpbyIsIkNhY2hlc091dHB1dHMiLCJJbmNyZW1lbnRhbFRyYW5zZm9ybSIsIlRzUHJvZ3JhbUhvc3QiLCJUeXBlRW1pc3Npb25Qcm9ncmFtIiwiQnVpbGRUYXJnZXRzIiwiREVGQVVMVF9UWVBFX0VNSVRURVJfT1BUSU9OUyIsImxpYiIsInR5cGVzIiwic2tpcExpYkNoZWNrIiwiUkVRVUlSRURfVFlQRV9FTUlUVEVSX09QVElPTlMiLCJlbWl0RGVjbGFyYXRpb25Pbmx5IiwiZGVjbGFyYXRpb24iLCJSRVFVSVJFRF9UWVBFX0NIRUNLX09QVElPTlMiLCJub0VtaXQiLCJUeXBlRW1pdHRlciIsImJ1aWxkVGFyZ2V0cyIsImluaXQiLCJwcm9qZWN0QXJyYXlMaWtlIiwiX2ZpbHRlciIsInByZXBhcmVQcm9ncmFtcyIsInRyYW5zZm9ybVByb2plY3QiLCJmaWx0ZXIiLCJvbk91dHB1dCIsInByb2dyYW1zIiwibGVuZ3RoIiwicmVzcG9uc2VzIiwiUHJvbWlzZSIsImFsbCIsIm1hcCIsInByb2dyYW0iLCJlbWl0IiwiZmxhdCIsImNhY2hlT3V0cHV0cyIsImNoZWNrUHJvamVjdCIsImluY2x1ZGVBbGxQcm9qZWN0cyIsInJlcXVpcmVkQ29tcGlsZXJPcHRpb25zIiwiZGlhZ25vc3RpY3MiLCJmb3JtYXR0ZWRQYXJ0cyIsInByb2dyYW1EaWFnbm9zdGljcyIsImNoZWNrIiwicHVzaCIsImZvcm1hdERpYWdub3N0aWNzIiwiZm9ybWF0dGVkIiwiam9pbiIsIm9wdGlvbnMiLCJhbGxQcm9qZWN0cyIsIkFycmF5IiwiaXNBcnJheSIsInByb2plY3RzIiwicHJvaiIsImdldEZvcmdlQ29uZmlndXJhdGlvbiIsInRhcmdldHMiLCJpbmNsdWRlcyIsInByb2plY3REYXRhIiwicHJvamVjdCIsImZpbGVzIiwiZ2V0QWxsRmlsZXMiLCJ0c2NvbmZpZyIsImdldFRzQ29uZmlnIiwiZ3JvdXBzIiwiTWFwIiwiZ3JvdXBCeSIsImhvc3RLZXkiLCJjb21waWxlck9wdGlvbnMiLCJ2YWx1ZXMiLCJncm91cCIsIm9uSW5jcmVtZW50YWxGaWxlRXZlbnQiLCJldnQiLCJmaWxlIiwiZXZlbnROYW1lIiwiV2F0Y2hFdmVudHMiLCJ1bmxpbmsiLCJkZWxldGVDYWNoZWRPdXRwdXRzIiwiZnVsbFBhdGgiLCJpc1NvdXJjZUZpbGUiLCJhZGQiLCJmb3JFYWNoIiwicCIsImFkZEZpbGUiLCJpbnZhbGlkYXRlUmVhZEZpbGVDYWNoZSIsImludmFsaWRhdGVTb3VyY2VGaWxlIiwicmVzb2x2ZSIsIl9wYXRoIiwicHJvdG90eXBlIiwicmVhZEZpbGVGcm9tRGlzayIsIm5hbWUiLCJrZXlGbiIsImFyZ3MiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUNBLFNBQVNBLGVBQWUsUUFBUSwwQkFBMEI7QUFDMUQsU0FBU0MsS0FBSyxRQUFRLDhCQUE4QjtBQUNwRCxTQUFTQyxPQUFPLFFBQVEsZ0NBQWdDO0FBRXhELFNBQVNDLEVBQUUsUUFBUSxxQkFBcUI7QUFFeEMsT0FBTyxzQ0FBc0M7QUFDN0MsU0FBU0MsYUFBYSxRQUFRLG9D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
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@decohere/forge",
3
- "version": "0.0.1-dev.65",
3
+ "version": "0.0.1-dev.66",
4
4
  "description": "TypeScript monorepo build system — zero config, fast compilation, streamlined developer workflow",
5
5
  "keywords": [
6
6
  "typescript",
@@ -29,10 +29,10 @@
29
29
  "test": "echo \"Error: no test specified\" && exit 1"
30
30
  },
31
31
  "dependencies": {
32
- "@decohere/crucible": "0.0.1-dev.65",
33
- "@decohere/mesh": "0.0.1-dev.65",
34
- "@decohere/nexus": "0.0.1-dev.65",
35
- "@decohere/scribe": "0.0.1-dev.65",
32
+ "@decohere/crucible": "0.0.1-dev.66",
33
+ "@decohere/mesh": "0.0.1-dev.66",
34
+ "@decohere/nexus": "0.0.1-dev.66",
35
+ "@decohere/scribe": "0.0.1-dev.66",
36
36
  "@swc/core": "^1.11.11",
37
37
  "async": "^3.2.6",
38
38
  "parse-imports": "^2.2.1",
@@ -9,6 +9,7 @@ export * from "./link.action.js";
9
9
  export * from "./publish.action.js";
10
10
  export * from "./sync-lock-file.action.js";
11
11
  export * from "./tag.action.js";
12
+ export * from "./typecheck.action.js";
12
13
  export * from "./unlink.action.js";
13
14
  export * from "./version.action.js";
14
15
  export * from "./watch.action.js";
@@ -0,0 +1,14 @@
1
+ import { Workspace } from "@decohere/mesh";
2
+ import type { Action } from "@decohere/nexus/cli";
3
+ import { ActionResponse } from "@decohere/nexus/cli";
4
+ import { TypeEmitter } from "../services/type-emitter.js";
5
+ export type TypeCheckOptions = {
6
+ configuration: string;
7
+ };
8
+ export declare class TypeCheck implements Action<TypeCheckOptions> {
9
+ #private;
10
+ private readonly workspace;
11
+ private readonly typeEmitter;
12
+ constructor(workspace: Workspace, typeEmitter: TypeEmitter);
13
+ run: (options: TypeCheckOptions) => Promise<ActionResponse>;
14
+ }
@@ -5,4 +5,5 @@ export * from "./forge.command.js";
5
5
  export * from "./link.command.js";
6
6
  export * from "./publish.command.js";
7
7
  export * from "./tag.command.js";
8
+ export * from "./typecheck.command.js";
8
9
  export * from "./version.command.js";
@@ -0,0 +1,6 @@
1
+ import { DecohereCommand } from "@decohere/nexus/cli";
2
+ import { TypeCheck } from "../actions/typecheck.action.js";
3
+ export declare class TypeCheckCommand extends DecohereCommand {
4
+ get actions(): (typeof TypeCheck)[];
5
+ constructor(name: string);
6
+ }
@@ -18,6 +18,7 @@ export declare class ForgeModule extends ModuleManifest {
18
18
  reportDependencies: typeof Actions.ReportDependencies;
19
19
  version: typeof Actions.Version;
20
20
  tag: typeof Actions.Tag;
21
+ typecheck: typeof Actions.TypeCheck;
21
22
  commitFiles: typeof Actions.CommitFiles;
22
23
  link: typeof Actions.Link;
23
24
  unlink: typeof Actions.Unlink;
@@ -29,6 +30,7 @@ export declare class ForgeModule extends ModuleManifest {
29
30
  docker: typeof Commands.DockerCommand;
30
31
  version: typeof Commands.VersionCommand;
31
32
  tag: typeof Commands.TagCommand;
33
+ typecheck: typeof Commands.TypeCheckCommand;
32
34
  link: typeof Commands.LinkCommand;
33
35
  unlink: typeof Commands.UnlinkCommand;
34
36
  };
@@ -14,7 +14,7 @@ export declare class TsProgramHost {
14
14
  /** Returns a stable string key for a set of compiler options that affect host behaviour. */
15
15
  hostKey(opts: ts.CompilerOptions): string;
16
16
  createHost(compilerOptions: ts.CompilerOptions): ts.CompilerHost;
17
- createProgram(files: FileEx[], compilerOptions: ts.CompilerOptions, host: ts.CompilerHost, oldProgram?: ts.Program): ts.Program;
17
+ createProgram(files: FileEx[], compilerOptions: ts.CompilerOptions, host: ts.CompilerHost, oldProgram?: ts.Program, requiredOptions?: ts.CompilerOptions): ts.Program;
18
18
  readFileFromDisk(fileName: string): string | undefined;
19
19
  fileExistsOnDisk(fileName: string): boolean;
20
20
  directoryExists(directoryName: string): boolean;
@@ -1,5 +1,6 @@
1
1
  import type { Project, Tsconfig } from "@decohere/mesh";
2
2
  import type { FileEx } from "@decohere/nexus/io";
3
+ import ts from "typescript";
3
4
  import type { TsProgramHost } from "../services/ts-program-host.js";
4
5
  import { TransformResponse } from "../types/transform-response.model.js";
5
6
  export type TypeProgramProject = {
@@ -9,12 +10,16 @@ export type TypeProgramProject = {
9
10
  };
10
11
  export declare class TypeEmissionProgram {
11
12
  #private;
12
- constructor(group: TypeProgramProject[], hostFactory: TsProgramHost);
13
+ constructor(group: TypeProgramProject[], hostFactory: TsProgramHost, requiredOptions: ts.CompilerOptions);
14
+ check(): readonly ts.Diagnostic[];
15
+ formatDiagnostics(diagnostics: readonly ts.Diagnostic[]): string;
13
16
  private toEmissionTarget;
14
17
  private emittedKey;
15
18
  private buildTargetMaps;
16
19
  addFile(file: FileEx, project: Project): void;
17
20
  emit(fileFilter?: (project: Project) => Promise<FileEx[]>, onOutput?: (response: TransformResponse) => void): Promise<TransformResponse[]>;
21
+ private createProgram;
22
+ private refreshProgramIfNeeded;
18
23
  private emitAll;
19
24
  private emitFiltered;
20
25
  private toTransformResponse;
@@ -25,6 +25,12 @@ export declare const DEFAULT_TYPE_EMITTER_OPTIONS: Readonly<ts.CompilerOptions>;
25
25
  * tsconfig specifies. Applied after the user spread so they cannot be overridden.
26
26
  */
27
27
  export declare const REQUIRED_TYPE_EMITTER_OPTIONS: Readonly<ts.CompilerOptions>;
28
+ /** Compiler options enforced for `forge typecheck` — never emit JS or declarations. */
29
+ export declare const REQUIRED_TYPE_CHECK_OPTIONS: Readonly<ts.CompilerOptions>;
30
+ export type PrepareProgramsOptions = {
31
+ includeAllProjects?: boolean;
32
+ requiredCompilerOptions?: ts.CompilerOptions;
33
+ };
28
34
  declare const TypeEmitter_base: abstract new (...args: unknown[]) => CachesOutputs & IncrementalTransform;
29
35
  export declare class TypeEmitter extends TypeEmitter_base implements Transformer {
30
36
  #private;
@@ -36,6 +42,14 @@ export declare class TypeEmitter extends TypeEmitter_base implements Transformer
36
42
  */
37
43
  init(projectArrayLike: Project[] | Project, _filter?: (project: Project) => Promise<FileEx[]>): Promise<void>;
38
44
  transformProject(projectArrayLike: Project[] | Project, filter?: (project: Project) => Promise<FileEx[]>, onOutput?: (response: TransformResponse) => void): Promise<TransformResponse[]>;
45
+ /**
46
+ * Type-check projects without emitting files. Includes every Mesh project, not
47
+ * only those with a `types` build target (debug is es6-only).
48
+ */
49
+ checkProject(projectArrayLike: Project[] | Project): Promise<{
50
+ diagnostics: ts.Diagnostic[];
51
+ formatted: string;
52
+ }>;
39
53
  private preparePrograms;
40
54
  protected onIncrementalFileEvent(evt: ProjectFileEvent): Promise<TransformResponse[]>;
41
55
  private invalidateReadFileCache;