@matter/tools 0.12.2 → 0.12.3-alpha.0-20250205-ad3416ca3

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.
Files changed (225) hide show
  1. package/dist/cjs/ansi-text/chars.d.ts +11 -0
  2. package/dist/cjs/ansi-text/chars.d.ts.map +1 -0
  3. package/dist/cjs/ansi-text/chars.js +57 -0
  4. package/dist/cjs/ansi-text/chars.js.map +6 -0
  5. package/dist/cjs/ansi-text/consumer.d.ts +45 -0
  6. package/dist/cjs/ansi-text/consumer.d.ts.map +1 -0
  7. package/dist/cjs/ansi-text/consumer.js +22 -0
  8. package/dist/cjs/ansi-text/consumer.js.map +6 -0
  9. package/dist/cjs/ansi-text/contiguous-output-segment.d.ts +31 -0
  10. package/dist/cjs/ansi-text/contiguous-output-segment.d.ts.map +1 -0
  11. package/dist/cjs/ansi-text/contiguous-output-segment.js +156 -0
  12. package/dist/cjs/ansi-text/contiguous-output-segment.js.map +6 -0
  13. package/dist/cjs/ansi-text/index.d.ts +12 -0
  14. package/dist/cjs/ansi-text/index.d.ts.map +1 -0
  15. package/dist/cjs/ansi-text/index.js +29 -0
  16. package/dist/cjs/ansi-text/index.js.map +6 -0
  17. package/dist/cjs/ansi-text/printer.d.ts +24 -0
  18. package/dist/cjs/ansi-text/printer.d.ts.map +1 -0
  19. package/dist/cjs/ansi-text/printer.js +81 -0
  20. package/dist/cjs/ansi-text/printer.js.map +6 -0
  21. package/dist/cjs/ansi-text/producer.d.ts +17 -0
  22. package/dist/cjs/ansi-text/producer.d.ts.map +1 -0
  23. package/dist/cjs/ansi-text/producer.js +45 -0
  24. package/dist/cjs/ansi-text/producer.js.map +6 -0
  25. package/dist/cjs/ansi-text/screen.d.ts +13 -0
  26. package/dist/cjs/ansi-text/screen.d.ts.map +1 -0
  27. package/dist/cjs/ansi-text/screen.js +38 -0
  28. package/dist/cjs/ansi-text/screen.js.map +6 -0
  29. package/dist/cjs/ansi-text/sgr.d.ts +100 -0
  30. package/dist/cjs/ansi-text/sgr.d.ts.map +1 -0
  31. package/dist/cjs/ansi-text/sgr.js +140 -0
  32. package/dist/cjs/ansi-text/sgr.js.map +6 -0
  33. package/dist/cjs/ansi-text/std.d.ts +17 -0
  34. package/dist/cjs/ansi-text/std.d.ts.map +1 -0
  35. package/dist/cjs/ansi-text/std.js +43 -0
  36. package/dist/cjs/ansi-text/std.js.map +6 -0
  37. package/dist/cjs/ansi-text/style.d.ts +88 -0
  38. package/dist/cjs/ansi-text/style.d.ts.map +1 -0
  39. package/dist/cjs/ansi-text/style.js +257 -0
  40. package/dist/cjs/ansi-text/style.js.map +6 -0
  41. package/dist/cjs/ansi-text/text-builder.d.ts +78 -0
  42. package/dist/cjs/ansi-text/text-builder.d.ts.map +1 -0
  43. package/dist/cjs/ansi-text/text-builder.js +164 -0
  44. package/dist/cjs/ansi-text/text-builder.js.map +6 -0
  45. package/dist/cjs/ansi-text/text-writer.d.ts +30 -0
  46. package/dist/cjs/ansi-text/text-writer.d.ts.map +1 -0
  47. package/dist/cjs/ansi-text/text-writer.js +317 -0
  48. package/dist/cjs/ansi-text/text-writer.js.map +6 -0
  49. package/dist/cjs/ansi-text/token.d.ts +61 -0
  50. package/dist/cjs/ansi-text/token.d.ts.map +1 -0
  51. package/dist/cjs/ansi-text/token.js +22 -0
  52. package/dist/cjs/ansi-text/token.js.map +6 -0
  53. package/dist/cjs/ansi-text/tokenize.d.ts +11 -0
  54. package/dist/cjs/ansi-text/tokenize.d.ts.map +1 -0
  55. package/dist/cjs/ansi-text/tokenize.js +190 -0
  56. package/dist/cjs/ansi-text/tokenize.js.map +6 -0
  57. package/dist/cjs/ansi-text/truncator.d.ts +20 -0
  58. package/dist/cjs/ansi-text/truncator.d.ts.map +1 -0
  59. package/dist/cjs/ansi-text/truncator.js +72 -0
  60. package/dist/cjs/ansi-text/truncator.js.map +6 -0
  61. package/dist/cjs/ansi-text/visible-width-of.d.ts +10 -0
  62. package/dist/cjs/ansi-text/visible-width-of.d.ts.map +1 -0
  63. package/dist/cjs/ansi-text/visible-width-of.js +55 -0
  64. package/dist/cjs/ansi-text/visible-width-of.js.map +6 -0
  65. package/dist/cjs/ansi-text/wrapper.d.ts +34 -0
  66. package/dist/cjs/ansi-text/wrapper.d.ts.map +1 -0
  67. package/dist/cjs/ansi-text/wrapper.js +208 -0
  68. package/dist/cjs/ansi-text/wrapper.js.map +6 -0
  69. package/dist/cjs/building/cli.js +6 -6
  70. package/dist/cjs/building/cli.js.map +1 -1
  71. package/dist/cjs/building/graph.d.ts +2 -2
  72. package/dist/cjs/building/graph.d.ts.map +1 -1
  73. package/dist/cjs/building/graph.js.map +1 -1
  74. package/dist/cjs/building/project-builder.d.ts +38 -0
  75. package/dist/cjs/building/project-builder.d.ts.map +1 -0
  76. package/dist/cjs/building/project-builder.js +200 -0
  77. package/dist/cjs/building/project-builder.js.map +6 -0
  78. package/dist/cjs/building/tsconfig.js +1 -1
  79. package/dist/cjs/building/tsconfig.js.map +1 -1
  80. package/dist/cjs/index.d.ts +4 -6
  81. package/dist/cjs/index.d.ts.map +1 -1
  82. package/dist/cjs/index.js +4 -6
  83. package/dist/cjs/index.js.map +1 -1
  84. package/dist/cjs/running/ensure-compiled.js +2 -2
  85. package/dist/cjs/running/ensure-compiled.js.map +1 -1
  86. package/dist/cjs/util/commander.d.ts.map +1 -1
  87. package/dist/cjs/util/commander.js +4 -5
  88. package/dist/cjs/util/commander.js.map +2 -2
  89. package/dist/cjs/util/index.d.ts +1 -0
  90. package/dist/cjs/util/index.d.ts.map +1 -1
  91. package/dist/cjs/util/index.js +1 -0
  92. package/dist/cjs/util/index.js.map +1 -1
  93. package/dist/cjs/util/progress.d.ts +2 -2
  94. package/dist/cjs/util/progress.d.ts.map +1 -1
  95. package/dist/cjs/util/progress.js +25 -53
  96. package/dist/cjs/util/progress.js.map +2 -2
  97. package/dist/cjs/versioning/versioner.js +2 -12
  98. package/dist/cjs/versioning/versioner.js.map +2 -2
  99. package/dist/esm/ansi-text/chars.d.ts +11 -0
  100. package/dist/esm/ansi-text/chars.d.ts.map +1 -0
  101. package/dist/esm/ansi-text/chars.js +37 -0
  102. package/dist/esm/ansi-text/chars.js.map +6 -0
  103. package/dist/esm/ansi-text/consumer.d.ts +45 -0
  104. package/dist/esm/ansi-text/consumer.d.ts.map +1 -0
  105. package/dist/esm/ansi-text/consumer.js +6 -0
  106. package/dist/esm/ansi-text/consumer.js.map +6 -0
  107. package/dist/esm/ansi-text/contiguous-output-segment.d.ts +31 -0
  108. package/dist/esm/ansi-text/contiguous-output-segment.d.ts.map +1 -0
  109. package/dist/esm/ansi-text/contiguous-output-segment.js +136 -0
  110. package/dist/esm/ansi-text/contiguous-output-segment.js.map +6 -0
  111. package/dist/esm/ansi-text/index.d.ts +12 -0
  112. package/dist/esm/ansi-text/index.d.ts.map +1 -0
  113. package/dist/esm/ansi-text/index.js +12 -0
  114. package/dist/esm/ansi-text/index.js.map +6 -0
  115. package/dist/esm/ansi-text/printer.d.ts +24 -0
  116. package/dist/esm/ansi-text/printer.d.ts.map +1 -0
  117. package/dist/esm/ansi-text/printer.js +61 -0
  118. package/dist/esm/ansi-text/printer.js.map +6 -0
  119. package/dist/esm/ansi-text/producer.d.ts +17 -0
  120. package/dist/esm/ansi-text/producer.d.ts.map +1 -0
  121. package/dist/esm/ansi-text/producer.js +25 -0
  122. package/dist/esm/ansi-text/producer.js.map +6 -0
  123. package/dist/esm/ansi-text/screen.d.ts +13 -0
  124. package/dist/esm/ansi-text/screen.d.ts.map +1 -0
  125. package/dist/esm/ansi-text/screen.js +18 -0
  126. package/dist/esm/ansi-text/screen.js.map +6 -0
  127. package/dist/esm/ansi-text/sgr.d.ts +100 -0
  128. package/dist/esm/ansi-text/sgr.d.ts.map +1 -0
  129. package/dist/esm/ansi-text/sgr.js +120 -0
  130. package/dist/esm/ansi-text/sgr.js.map +6 -0
  131. package/dist/esm/ansi-text/std.d.ts +17 -0
  132. package/dist/esm/ansi-text/std.d.ts.map +1 -0
  133. package/dist/esm/ansi-text/std.js +23 -0
  134. package/dist/esm/ansi-text/std.js.map +6 -0
  135. package/dist/esm/ansi-text/style.d.ts +88 -0
  136. package/dist/esm/ansi-text/style.d.ts.map +1 -0
  137. package/dist/esm/ansi-text/style.js +245 -0
  138. package/dist/esm/ansi-text/style.js.map +6 -0
  139. package/dist/esm/ansi-text/text-builder.d.ts +78 -0
  140. package/dist/esm/ansi-text/text-builder.d.ts.map +1 -0
  141. package/dist/esm/ansi-text/text-builder.js +150 -0
  142. package/dist/esm/ansi-text/text-builder.js.map +6 -0
  143. package/dist/esm/ansi-text/text-writer.d.ts +30 -0
  144. package/dist/esm/ansi-text/text-writer.d.ts.map +1 -0
  145. package/dist/esm/ansi-text/text-writer.js +297 -0
  146. package/dist/esm/ansi-text/text-writer.js.map +6 -0
  147. package/dist/esm/ansi-text/token.d.ts +61 -0
  148. package/dist/esm/ansi-text/token.d.ts.map +1 -0
  149. package/dist/esm/ansi-text/token.js +6 -0
  150. package/dist/esm/ansi-text/token.js.map +6 -0
  151. package/dist/esm/ansi-text/tokenize.d.ts +11 -0
  152. package/dist/esm/ansi-text/tokenize.d.ts.map +1 -0
  153. package/dist/esm/ansi-text/tokenize.js +170 -0
  154. package/dist/esm/ansi-text/tokenize.js.map +6 -0
  155. package/dist/esm/ansi-text/truncator.d.ts +20 -0
  156. package/dist/esm/ansi-text/truncator.d.ts.map +1 -0
  157. package/dist/esm/ansi-text/truncator.js +52 -0
  158. package/dist/esm/ansi-text/truncator.js.map +6 -0
  159. package/dist/esm/ansi-text/visible-width-of.d.ts +10 -0
  160. package/dist/esm/ansi-text/visible-width-of.d.ts.map +1 -0
  161. package/dist/esm/ansi-text/visible-width-of.js +35 -0
  162. package/dist/esm/ansi-text/visible-width-of.js.map +6 -0
  163. package/dist/esm/ansi-text/wrapper.d.ts +34 -0
  164. package/dist/esm/ansi-text/wrapper.d.ts.map +1 -0
  165. package/dist/esm/ansi-text/wrapper.js +188 -0
  166. package/dist/esm/ansi-text/wrapper.js.map +6 -0
  167. package/dist/esm/building/cli.js +3 -3
  168. package/dist/esm/building/cli.js.map +1 -1
  169. package/dist/esm/building/graph.d.ts +2 -2
  170. package/dist/esm/building/graph.d.ts.map +1 -1
  171. package/dist/esm/building/graph.js +1 -1
  172. package/dist/esm/building/graph.js.map +1 -1
  173. package/dist/esm/building/project-builder.d.ts +38 -0
  174. package/dist/esm/building/project-builder.d.ts.map +1 -0
  175. package/dist/esm/building/project-builder.js +180 -0
  176. package/dist/esm/building/project-builder.js.map +6 -0
  177. package/dist/esm/building/tsconfig.js +2 -2
  178. package/dist/esm/building/tsconfig.js.map +1 -1
  179. package/dist/esm/index.d.ts +4 -6
  180. package/dist/esm/index.d.ts.map +1 -1
  181. package/dist/esm/index.js +5 -7
  182. package/dist/esm/index.js.map +1 -1
  183. package/dist/esm/running/ensure-compiled.js +3 -3
  184. package/dist/esm/running/ensure-compiled.js.map +1 -1
  185. package/dist/esm/util/commander.d.ts.map +1 -1
  186. package/dist/esm/util/commander.js +5 -6
  187. package/dist/esm/util/commander.js.map +1 -1
  188. package/dist/esm/util/index.d.ts +1 -0
  189. package/dist/esm/util/index.d.ts.map +1 -1
  190. package/dist/esm/util/index.js +2 -1
  191. package/dist/esm/util/index.js.map +1 -1
  192. package/dist/esm/util/progress.d.ts +2 -2
  193. package/dist/esm/util/progress.d.ts.map +1 -1
  194. package/dist/esm/util/progress.js +26 -44
  195. package/dist/esm/util/progress.js.map +1 -1
  196. package/dist/esm/versioning/versioner.js +3 -3
  197. package/dist/esm/versioning/versioner.js.map +1 -1
  198. package/package.json +11 -1
  199. package/src/ansi-text/chars.ts +31 -0
  200. package/src/ansi-text/consumer.ts +53 -0
  201. package/src/ansi-text/contiguous-output-segment.ts +181 -0
  202. package/src/ansi-text/index.ts +14 -0
  203. package/src/ansi-text/printer.ts +86 -0
  204. package/src/ansi-text/producer.ts +29 -0
  205. package/src/ansi-text/screen.ts +18 -0
  206. package/src/ansi-text/sgr.ts +154 -0
  207. package/src/ansi-text/std.ts +28 -0
  208. package/src/ansi-text/style.ts +369 -0
  209. package/src/ansi-text/text-builder.ts +261 -0
  210. package/src/ansi-text/text-writer.ts +363 -0
  211. package/src/ansi-text/token.ts +76 -0
  212. package/src/ansi-text/tokenize.ts +212 -0
  213. package/src/ansi-text/truncator.ts +63 -0
  214. package/src/ansi-text/visible-width-of.ts +39 -0
  215. package/src/ansi-text/wrapper.ts +244 -0
  216. package/src/building/cli.ts +2 -2
  217. package/src/building/graph.ts +2 -2
  218. package/src/building/project-builder.ts +230 -0
  219. package/src/building/tsconfig.ts +2 -4
  220. package/src/index.ts +4 -6
  221. package/src/running/ensure-compiled.ts +2 -2
  222. package/src/util/commander.ts +4 -6
  223. package/src/util/index.ts +1 -0
  224. package/src/util/progress.ts +24 -61
  225. package/src/versioning/versioner.ts +2 -2
@@ -3,13 +3,14 @@
3
3
  * Copyright 2022-2025 Matter.js Authors
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
- import colors from "ansi-colors";
7
6
  import { stderr, stdout } from "process";
8
- const CLEAR = "\x1B[K";
7
+ import { screen } from "../ansi-text/screen.js";
8
+ import { std } from "../ansi-text/std.js";
9
+ import { ansi } from "../ansi-text/text-builder.js";
9
10
  const SPINNER = "\u25D0\u25D3\u25D1\u25D2";
10
11
  const SPINNER_INTERVAL = 100;
11
12
  function packageIdentity(pkg) {
12
- let identity = colors.bold(pkg.json.name);
13
+ let identity = ansi.bold(pkg.json.name).toString();
13
14
  if (pkg.json.version) {
14
15
  identity = `${identity}@${pkg.json.version}`;
15
16
  }
@@ -35,21 +36,19 @@ const writeStatus = (() => {
35
36
  intercept(stdout);
36
37
  intercept(stderr);
37
38
  return function writeStatus2(text, willOverwrite = false) {
38
- const columns = process.stdout.columns;
39
- if (willOverwrite && columns !== void 0 && text.length > columns - 2) {
40
- text = filterAnsi(text, columns - 2) + "\u2026";
41
- }
42
- text += willOverwrite ? "\r" : "\n";
39
+ text += willOverwrite ? `${screen.erase.toEol}\r` : `${screen.erase.toEol}
40
+ `;
43
41
  if (text === lastStatus) {
44
42
  return;
45
43
  }
46
- if (lastStatus) {
47
- lastStatus = void 0;
48
- stdout.write(CLEAR);
49
- } else if (needNewline && !text.startsWith("\n")) {
50
- stdout.write("\n");
51
- }
52
- stdout.write(text);
44
+ std.out.state({ buffer: true }, () => {
45
+ if (lastStatus) {
46
+ lastStatus = void 0;
47
+ } else if (needNewline && !text.startsWith("\n")) {
48
+ std.out("\n");
49
+ }
50
+ std.out.writeTruncated(text);
51
+ });
53
52
  lastStatus = text;
54
53
  };
55
54
  })();
@@ -65,13 +64,13 @@ class Progress {
65
64
  constructor() {
66
65
  }
67
66
  emphasize(text) {
68
- return colors.bold(`${text}`);
67
+ return ansi.bold(`${text}`);
69
68
  }
70
69
  deemphasize(text) {
71
- return colors.dim(`${text}`);
70
+ return ansi.dim(`${text}`);
72
71
  }
73
72
  skip(why, pkg) {
74
- stdout.write(colors.dim(`Skip ${packageIdentity(pkg)}: ${why}
73
+ std.out.write(ansi.dim(`Skip ${packageIdentity(pkg)}: ${why}
75
74
 
76
75
  `));
77
76
  }
@@ -104,27 +103,27 @@ class Progress {
104
103
  if (!this.#ongoingText) {
105
104
  return;
106
105
  }
107
- const subtask = this.#subtasks.length ? colors.dim(` (${colors.dim(this.#subtasks[this.#subtasks.length - 1])})`) : "";
108
- writeStatus(` ${colors.yellow(this.#spinner)} ${this.#ongoingText}${subtask}`, true);
106
+ const subtask = this.#subtasks.length ? ansi.dim(` (${this.#subtasks[this.#subtasks.length - 1]})`) : "";
107
+ writeStatus(` ${ansi.yellow(this.#spinner)} ${this.#ongoingText}${subtask}`, true);
109
108
  }
110
109
  success(text) {
111
110
  this.status = Progress.Status.Success;
112
- writeStatus(` ${colors.green("\u2713")} ${text} ${this.#duration}`);
111
+ writeStatus(` ${ansi.green("\u2713")} ${text} ${this.#duration}`);
113
112
  this.#start = this.#ongoingText = void 0;
114
113
  }
115
114
  failure(text) {
116
115
  this.status = Progress.Status.Failure;
117
- writeStatus(` ${colors.redBright("\u2717")} ${text} ${this.#duration}`);
116
+ writeStatus(` ${ansi.bright.red("\u2717")} ${text} ${this.#duration}`);
118
117
  this.#start = this.#ongoingText = void 0;
119
118
  }
120
119
  info(label, value) {
121
120
  if (value) {
122
- label = `${colors.dim(label)} ${value}`;
121
+ label = `${ansi.dim(label)} ${value}`;
123
122
  }
124
- writeStatus(` ${colors.dim("\u2023")} ${label}`);
123
+ writeStatus(` ${ansi.dim("\u2023")} ${label}`);
125
124
  }
126
125
  warn(text) {
127
- stdout.write(` ${colors.yellow("Warning:")} ${text}
126
+ std.out.write(` ${ansi.yellow("Warning:")} ${text}
128
127
  `);
129
128
  }
130
129
  shutdown() {
@@ -181,7 +180,7 @@ class Progress {
181
180
  } else {
182
181
  ms = Math.trunc(ms / 1e3);
183
182
  }
184
- return colors.dim.yellow(`(${ms}s)`);
183
+ return `${ansi.dim.yellow}(${ms}s)${ansi.not.dim.not.yellow}`;
185
184
  }
186
185
  }
187
186
  ((Progress2) => {
@@ -193,24 +192,7 @@ class Progress {
193
192
  Status2["Failure"] = "failure";
194
193
  })(Status = Progress2.Status || (Progress2.Status = {}));
195
194
  })(Progress || (Progress = {}));
196
- function filterAnsi(str, len) {
197
- if (!len || len < 10) return str;
198
- let count = 0, esc = false, longesc = false;
199
- let outp = true;
200
- return str.split("").filter(function(c) {
201
- if (esc && !longesc && c == "[") longesc = true;
202
- if (c == "\x1B") esc = true;
203
- outp = count < len || esc;
204
- if (!esc && !longesc) count++;
205
- if (esc && !longesc && c != "\x1B") esc = false;
206
- if (longesc && c != "[" && c >= "@" && c <= "~") {
207
- esc = false;
208
- longesc = false;
209
- }
210
- return outp;
211
- }).join("");
212
- }
213
195
  export {
214
196
  Progress
215
197
  };
216
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL3V0aWwvcHJvZ3Jlc3MudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCAyMDIyLTIwMjUgTWF0dGVyLmpzIEF1dGhvcnNcbiAqIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG4gKi9cblxuaW1wb3J0IGNvbG9ycyBmcm9tIFwiYW5zaS1jb2xvcnNcIjtcbmltcG9ydCB7IHN0ZGVyciwgc3Rkb3V0IH0gZnJvbSBcInByb2Nlc3NcIjtcbmltcG9ydCB7IFBhY2thZ2UgfSBmcm9tIFwiLi9wYWNrYWdlLmpzXCI7XG5cbmNvbnN0IENMRUFSID0gXCJcXHgxYltLXCI7XG5jb25zdCBTUElOTkVSID0gXCJcdTI1RDBcdTI1RDNcdTI1RDFcdTI1RDJcIjsgLy9cIlx1Mjg1Q1x1MjgxNFx1MjgyMlx1MjhBM1wiOyAvL1tcIlx1MjZBQlx1RkUwRVwiLCBcIlx1MjZBQVx1RkUwRVwiXTsgXCJcdTI4NDhcdTI4MTRcdTI4MjJcdTI4ODFcIjtcbmNvbnN0IFNQSU5ORVJfSU5URVJWQUwgPSAxMDA7XG5cbmZ1bmN0aW9uIHBhY2thZ2VJZGVudGl0eShwa2c6IFBhY2thZ2UpIHtcbiAgICBsZXQgaWRlbnRpdHkgPSBjb2xvcnMuYm9sZChwa2cuanNvbi5uYW1lKTtcbiAgICBpZiAocGtnLmpzb24udmVyc2lvbikge1xuICAgICAgICBpZGVudGl0eSA9IGAke2lkZW50aXR5fUAke3BrZy5qc29uLnZlcnNpb259YDtcbiAgICB9XG4gICAgcmV0dXJuIGlkZW50aXR5O1xufVxuXG4vKipcbiAqIEludGVyY2VwdCB3cml0ZXMgdG8gc3RkZXJyIGFuZCBzdGRvdXQgc28gd2UgY2FuIGVuc3VyZSBvdXIgdXBkYXRlcyBhcHBlYXIgb24gZGlmZmVyZW50IGxpbmVzIGZyb20gb3RoZXIgb3V0cHV0LlxuICovXG5jb25zdCB3cml0ZVN0YXR1cyA9ICgoKSA9PiB7XG4gICAgbGV0IGxhc3RTdGF0dXM6IHVuZGVmaW5lZCB8IHN0cmluZztcbiAgICBsZXQgbmVlZE5ld2xpbmUgPSBmYWxzZTtcblxuICAgIGZ1bmN0aW9uIGludGVyY2VwdChzdHJlYW06IE5vZGVKUy5Xcml0ZVN0cmVhbSkge1xuICAgICAgICBjb25zdCBhY3R1YWxXcml0ZSA9IHN0cmVhbS53cml0ZTtcbiAgICAgICAgc3RyZWFtLndyaXRlID0gKHBheWxvYWQ6IFVpbnQ4QXJyYXkgfCBzdHJpbmcsIC4uLnBhcmFtczogYW55W10pID0+IHtcbiAgICAgICAgICAgIGlmIChsYXN0U3RhdHVzKSB7XG4gICAgICAgICAgICAgICAgYWN0dWFsV3JpdGUuY2FsbChzdHJlYW0sIFwiXFxuXCIpO1xuICAgICAgICAgICAgICAgIGxhc3RTdGF0dXMgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICghcGF5bG9hZC5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gUmVxdWlyZSBhIG5ld2xpbmUgZm9yIHN0YXR1cyB1cGRhdGVzIGFueSB0aW1lIHRoZSBjdXJzb3IgZG9lcyBub3QgZW5kIGF0IHRoZSBiZWdpbm5pbmcgb2YgYSBsaW5lXG4gICAgICAgICAgICBuZWVkTmV3bGluZSA9IHBheWxvYWRbcGF5bG9hZC5sZW5ndGggLSAxXSAhPT0gXCJcXG5cIiAmJiBwYXlsb2FkW3BheWxvYWQubGVuZ3RoIC0gMV0gIT09IFwiXFxyXCI7XG5cbiAgICAgICAgICAgIHJldHVybiBhY3R1YWxXcml0ZS5jYWxsKHN0cmVhbSwgcGF5bG9hZCwgLi4ucGFyYW1zKTtcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBpbnRlcmNlcHQoc3Rkb3V0KTtcbiAgICBpbnRlcmNlcHQoc3RkZXJyKTtcblxuICAgIHJldHVybiBmdW5jdGlvbiB3cml0ZVN0YXR1cyh0ZXh0OiBzdHJpbmcsIHdpbGxPdmVyd3JpdGUgPSBmYWxzZSkge1xuICAgICAgICBjb25zdCBjb2x1bW5zID0gcHJvY2Vzcy5zdGRvdXQuY29sdW1ucztcbiAgICAgICAgaWYgKHdpbGxPdmVyd3JpdGUgJiYgY29sdW1ucyAhPT0gdW5kZWZpbmVkICYmIHRleHQubGVuZ3RoID4gY29sdW1ucyAtIDIpIHtcbiAgICAgICAgICAgIHRleHQgPSBmaWx0ZXJBbnNpKHRleHQsIGNvbHVtbnMgLSAyKSArIFwiXHUyMDI2XCI7XG4gICAgICAgIH1cblxuICAgICAgICB0ZXh0ICs9IHdpbGxPdmVyd3JpdGUgPyBcIlxcclwiIDogXCJcXG5cIjtcbiAgICAgICAgaWYgKHRleHQgPT09IGxhc3RTdGF0dXMpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChsYXN0U3RhdHVzKSB7XG4gICAgICAgICAgICBsYXN0U3RhdHVzID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgc3Rkb3V0LndyaXRlKENMRUFSKTtcbiAgICAgICAgfSBlbHNlIGlmIChuZWVkTmV3bGluZSAmJiAhdGV4dC5zdGFydHNXaXRoKFwiXFxuXCIpKSB7XG4gICAgICAgICAgICBzdGRvdXQud3JpdGUoXCJcXG5cIik7XG4gICAgICAgIH1cblxuICAgICAgICBzdGRvdXQud3JpdGUodGV4dCk7XG5cbiAgICAgICAgbGFzdFN0YXR1cyA9IHRleHQ7XG4gICAgfTtcbn0pKCk7XG5cbmV4cG9ydCBjbGFzcyBQcm9ncmVzcyB7XG4gICAgc3RhdHVzID0gUHJvZ3Jlc3MuU3RhdHVzLlN0YXJ0dXA7XG4gICAgI29uZ29pbmdUZXh0Pzogc3RyaW5nO1xuICAgICNzdGFydD86IG51bWJlcjtcbiAgICAjc3Bpbm5lciA9IFwiXHUyOUQ3XCI7XG4gICAgI3JlZnJlc2hJbnRlcnZhbD86IFJldHVyblR5cGU8dHlwZW9mIHNldEludGVydmFsPjtcbiAgICAjc3Bpbm5lclBvc2l0aW9uID0gMDtcbiAgICAjc3Bpbm5lcldpbmRvdz86IG51bWJlcjtcbiAgICAjc3VidGFza3MgPSBBcnJheTxzdHJpbmc+KCk7XG5cbiAgICBjb25zdHJ1Y3RvcigpIHt9XG5cbiAgICBlbXBoYXNpemUodGV4dDogdW5rbm93bikge1xuICAgICAgICByZXR1cm4gY29sb3JzLmJvbGQoYCR7dGV4dH1gKTtcbiAgICB9XG5cbiAgICBkZWVtcGhhc2l6ZSh0ZXh0OiB1bmtub3duKSB7XG4gICAgICAgIHJldHVybiBjb2xvcnMuZGltKGAke3RleHR9YCk7XG4gICAgfVxuXG4gICAgc2tpcCh3aHk6IHN0cmluZywgcGtnOiBQYWNrYWdlKSB7XG4gICAgICAgIHN0ZG91dC53cml0ZShjb2xvcnMuZGltKGBTa2lwICR7cGFja2FnZUlkZW50aXR5KHBrZyl9OiAke3doeX1cXG5cXG5gKSk7XG4gICAgfVxuXG4gICAgc3RhcnR1cCh3aGF0OiBzdHJpbmcsIHBrZ09yT3ZlcndyaXRlPzogUGFja2FnZSB8IGJvb2xlYW4pIHtcbiAgICAgICAgaWYgKHByb2Nlc3Muc3Rkb3V0LmlzVFRZKSB7XG4gICAgICAgICAgICB0aGlzLiN1cGRhdGVTcGlubmVyKCk7XG4gICAgICAgICAgICB0aGlzLiNyZWZyZXNoSW50ZXJ2YWwgPSBzZXRJbnRlcnZhbCh0aGlzLnJlZnJlc2guYmluZCh0aGlzKSwgU1BJTk5FUl9JTlRFUlZBTCk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnN0YXR1cyA9IFByb2dyZXNzLlN0YXR1cy5TdGFydHVwO1xuICAgICAgICBpZiAocGtnT3JPdmVyd3JpdGUgPT09IHVuZGVmaW5lZCB8fCB0eXBlb2YgcGtnT3JPdmVyd3JpdGUgPT09IFwiYm9vbGVhblwiKSB7XG4gICAgICAgICAgICB3cml0ZVN0YXR1cyh3aGF0LCBwa2dPck92ZXJ3cml0ZSA/PyB0cnVlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHdyaXRlU3RhdHVzKGAke3doYXR9ICR7cGFja2FnZUlkZW50aXR5KHBrZ09yT3ZlcndyaXRlKX1gKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHVwZGF0ZSh0ZXh0OiBzdHJpbmcsIGV4dHJhPzogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuc3RhdHVzID0gUHJvZ3Jlc3MuU3RhdHVzLk9uZ29pbmc7XG4gICAgICAgIGxldCBkdXJhdGlvbjtcbiAgICAgICAgaWYgKHRoaXMuI3N0YXJ0ID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHRoaXMuI3N0YXJ0ID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XG4gICAgICAgICAgICBkdXJhdGlvbiA9IFwiXCI7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBkdXJhdGlvbiA9IHRoaXMuI2R1cmF0aW9uO1xuICAgICAgICB9XG4gICAgICAgIGV4dHJhID0gZXh0cmEgPT09IHVuZGVmaW5lZCA/IFwiXCIgOiBgICR7ZXh0cmF9YDtcbiAgICAgICAgdGhpcy4jb25nb2luZ1RleHQgPSBgJHt0ZXh0fSAke2R1cmF0aW9ufSR7ZXh0cmF9YDtcbiAgICAgICAgdGhpcy4jd3JpdGVPbmdvaW5nKCk7XG4gICAgfVxuXG4gICAgI3dyaXRlT25nb2luZygpIHtcbiAgICAgICAgaWYgKCF0aGlzLiNvbmdvaW5nVGV4dCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qgc3VidGFzayA9IHRoaXMuI3N1YnRhc2tzLmxlbmd0aFxuICAgICAgICAgICAgPyBjb2xvcnMuZGltKGAgKCR7Y29sb3JzLmRpbSh0aGlzLiNzdWJ0YXNrc1t0aGlzLiNzdWJ0YXNrcy5sZW5ndGggLSAxXSl9KWApXG4gICAgICAgICAgICA6IFwiXCI7XG5cbiAgICAgICAgd3JpdGVTdGF0dXMoYCAgJHtjb2xvcnMueWVsbG93KHRoaXMuI3NwaW5uZXIpfSAke3RoaXMuI29uZ29pbmdUZXh0fSR7c3VidGFza31gLCB0cnVlKTtcbiAgICB9XG5cbiAgICBzdWNjZXNzKHRleHQ6IHN0cmluZykge1xuICAgICAgICB0aGlzLnN0YXR1cyA9IFByb2dyZXNzLlN0YXR1cy5TdWNjZXNzO1xuICAgICAgICB3cml0ZVN0YXR1cyhgICAke2NvbG9ycy5ncmVlbihcIlx1MjcxM1wiKX0gJHt0ZXh0fSAke3RoaXMuI2R1cmF0aW9ufWApO1xuICAgICAgICB0aGlzLiNzdGFydCA9IHRoaXMuI29uZ29pbmdUZXh0ID0gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIGZhaWx1cmUodGV4dDogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuc3RhdHVzID0gUHJvZ3Jlc3MuU3RhdHVzLkZhaWx1cmU7XG4gICAgICAgIHdyaXRlU3RhdHVzKGAgICR7Y29sb3JzLnJlZEJyaWdodChcIlx1MjcxN1wiKX0gJHt0ZXh0fSAke3RoaXMuI2R1cmF0aW9ufWApO1xuICAgICAgICB0aGlzLiNzdGFydCA9IHRoaXMuI29uZ29pbmdUZXh0ID0gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIGluZm8obGFiZWw6IHN0cmluZywgdmFsdWU/OiBhbnkpIHtcbiAgICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgICAgICBsYWJlbCA9IGAke2NvbG9ycy5kaW0obGFiZWwpfSAke3ZhbHVlfWA7XG4gICAgICAgIH1cbiAgICAgICAgd3JpdGVTdGF0dXMoYCAgJHtjb2xvcnMuZGltKFwiXHUyMDIzXCIpfSAke2xhYmVsfWApO1xuICAgIH1cblxuICAgIHdhcm4odGV4dDogc3RyaW5nKSB7XG4gICAgICAgIHN0ZG91dC53cml0ZShgICAgICR7Y29sb3JzLnllbGxvdyhcIldhcm5pbmc6XCIpfSAke3RleHR9XFxuYCk7XG4gICAgfVxuXG4gICAgc2h1dGRvd24oKSB7XG4gICAgICAgIGlmICh0aGlzLiNyZWZyZXNoSW50ZXJ2YWwpIHtcbiAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwodGhpcy4jcmVmcmVzaEludGVydmFsKTtcbiAgICAgICAgICAgIHRoaXMuI3JlZnJlc2hJbnRlcnZhbCA9IHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgICB3cml0ZVN0YXR1cyhcIlwiKTtcbiAgICB9XG5cbiAgICByZWZyZXNoKCkge1xuICAgICAgICBpZiAodGhpcy4jdXBkYXRlU3Bpbm5lcigpKSB7XG4gICAgICAgICAgICB0aGlzLiN3cml0ZU9uZ29pbmcoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGFzeW5jIHN1YnRhc2sodGV4dDogc3RyaW5nLCBmbjogKCkgPT4gUHJvbWlzZTx2b2lkPikge1xuICAgICAgICB0aGlzLiNzdWJ0YXNrcy5wdXNoKHRleHQpO1xuXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBhd2FpdCBmbigpO1xuICAgICAgICB9IGZpbmFsbHkge1xuICAgICAgICAgICAgdGhpcy4jc3VidGFza3MucG9wKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAjdXBkYXRlU3Bpbm5lcigpIHtcbiAgICAgICAgaWYgKCFzdGRvdXQuaXNUVFkpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHdpbmRvdyA9IE1hdGguZmxvb3IobmV3IERhdGUoKS5nZXRUaW1lKCkgLyBTUElOTkVSX0lOVEVSVkFMKTtcbiAgICAgICAgaWYgKHRoaXMuI3NwaW5uZXJXaW5kb3cgPT09IHdpbmRvdykge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuI3NwaW5uZXJXaW5kb3cgPSB3aW5kb3c7XG5cbiAgICAgICAgdGhpcy4jc3Bpbm5lclBvc2l0aW9uID0gKHRoaXMuI3NwaW5uZXJQb3NpdGlvbiArIDEpICUgU1BJTk5FUi5sZW5ndGg7XG4gICAgICAgIHRoaXMuI3NwaW5uZXIgPSBTUElOTkVSW3RoaXMuI3NwaW5uZXJQb3NpdGlvbl07XG5cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgYXN5bmMgcnVuPFQ+KHdoYXQ6IHN0cmluZywgZm46ICgpID0+IFQgfCBQcm9taXNlPFQ+KSB7XG4gICAgICAgIHRoaXMudXBkYXRlKHdoYXQpO1xuICAgICAgICBsZXQgcmVzdWx0OiBUO1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgcmVzdWx0ID0gYXdhaXQgZm4oKTtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgdGhpcy5mYWlsdXJlKHdoYXQpO1xuICAgICAgICAgICAgdGhyb3cgZTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnN1Y2Nlc3Mod2hhdCk7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgZ2V0ICNkdXJhdGlvbigpIHtcbiAgICAgICAgbGV0IG1zID0gdGhpcy4jc3RhcnQgPyBuZXcgRGF0ZSgpLmdldFRpbWUoKSAtIHRoaXMuI3N0YXJ0IDogMDtcbiAgICAgICAgaWYgKG1zIDwgMTAwMCkge1xuICAgICAgICAgICAgbXMgPSBNYXRoLnJvdW5kKG1zIC8gMTApIC8gMTAwO1xuICAgICAgICB9IGVsc2UgaWYgKG1zIDwgMTAwMDApIHtcbiAgICAgICAgICAgIG1zID0gTWF0aC5yb3VuZChtcyAvIDEwMCkgLyAxMDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIG1zID0gTWF0aC50cnVuYyhtcyAvIDEwMDApO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBjb2xvcnMuZGltLnllbGxvdyhgKCR7bXN9cylgKTtcbiAgICB9XG59XG5cbmV4cG9ydCBuYW1lc3BhY2UgUHJvZ3Jlc3Mge1xuICAgIGV4cG9ydCBlbnVtIFN0YXR1cyB7XG4gICAgICAgIFN0YXJ0dXAgPSBcInN0YXJ0dXBcIixcbiAgICAgICAgT25nb2luZyA9IFwib25nb2luZ1wiLFxuICAgICAgICBTdWNjZXNzID0gXCJzdWNjZXNzXCIsXG4gICAgICAgIEZhaWx1cmUgPSBcImZhaWx1cmVcIixcbiAgICB9XG59XG5cbi8vIFNlZSBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy8yNjIzODU1My9ob3ctY2FuLWktdHJ1bmNhdGUtYS1zdHJpbmctdG8tYS1tYXhpbXVtLWxlbmd0aC13aXRob3V0LWJyZWFraW5nLWFuc2ktZXNjYXBlLWNvZFxuLy8gVE9ETyAtIHRoaXMgZnVuY3Rpb24gZG9lc24ndCBzZWVtIGVudGlyZWx5IGNvcnJlY3QsIHN0aWxsIHNlZW1zIHRvIHRydW5jYXRlIHRvbyBtdWNoXG4vLyBDcm9wIHRoZSBsZW5ndGggb2YgbGluZXMsIEFOU0kgZXNjYXBlIGNvZGUgYXdhcmVcbi8vIEFsd2F5cyBvdXRwdXRzIGV2ZXJ5IGVzY2FwZSBjaGFyLCByZWdhcmRsZXNzIG9mIGxlbmd0aCAoc28gd2UgYWx3YXlzIGVuZCB1cCB3aXRoIGEgc2FuZSBzdGF0ZSlcbi8vIFZpc2libGUgY2hhcmFjdGVycyBhcmUgZmlsdGVyZWQgb3V0IG9uY2UgbGVuZ3RoIGlzIGV4Y2VlZGVkXG5mdW5jdGlvbiBmaWx0ZXJBbnNpKHN0cjogc3RyaW5nLCBsZW46IG51bWJlcikge1xuICAgIGlmICghbGVuIHx8IGxlbiA8IDEwKSByZXR1cm4gc3RyOyAvLyBwcm9iYWJseSBub3QgYSB2YWxpZCBjb25zb2xlIC0tIHNlbmQgYmFjayB0aGUgd2hvbGUgbGluZVxuICAgIGxldCBjb3VudCA9IDAsIC8vIG51bWJlciBvZiB2aXNpYmxlIGNoYXJzIG9uIGxpbmUgc28gZmFyXG4gICAgICAgIGVzYyA9IGZhbHNlLCAvLyBpbiBhbiBlc2NhcGUgc2VxdWVuY2VcbiAgICAgICAgbG9uZ2VzYyA9IGZhbHNlOyAvLyBpbiBhIG11bHRpLWNoYXJhY3RlciBlc2NhcGUgc2VxdWVuY2VcbiAgICBsZXQgb3V0cCA9IHRydWU7IC8vIHNob3VsZCBvdXRwdXQgdGhpcyBjaGFyYWN0ZXJcbiAgICByZXR1cm4gc3RyXG4gICAgICAgIC5zcGxpdChcIlwiKVxuICAgICAgICAuZmlsdGVyKGZ1bmN0aW9uIChjKSB7XG4gICAgICAgICAgICAvLyBmaWx0ZXIgY2hhcmFjdGVycy4uLlxuICAgICAgICAgICAgaWYgKGVzYyAmJiAhbG9uZ2VzYyAmJiBjID09IFwiW1wiKSBsb25nZXNjID0gdHJ1ZTsgLy8gaGF2ZSBzZWVuIGFuIGVzY2FwZSwgbm93ICdbJywgc3RhcnQgbXVsdGktY2hhciBlc2NhcGVcbiAgICAgICAgICAgIGlmIChjID09IFwiXFx4MWJcIikgZXNjID0gdHJ1ZTsgLy8gc3RhcnQgb2YgZXNjYXBlIHNlcXVlbmNlXG5cbiAgICAgICAgICAgIG91dHAgPSBjb3VudCA8IGxlbiB8fCBlc2M7IC8vIGlmIGxlbmd0aCBleGNlZWRlZCwgZG9uJ3Qgb3V0cHV0IG5vbi1lc2NhcGUgY2hhcnNcbiAgICAgICAgICAgIGlmICghZXNjICYmICFsb25nZXNjKSBjb3VudCsrOyAvLyBpZiBub3QgaW4gZXNjYXBlLCBjb3VudCB2aXNpYmxlIGNoYXJcblxuICAgICAgICAgICAgaWYgKGVzYyAmJiAhbG9uZ2VzYyAmJiBjICE9IFwiXFx4MWJcIikgZXNjID0gZmFsc2U7IC8vIG91dCBvZiBzaW5nbGUgY2hhciBlc2NhcGVcbiAgICAgICAgICAgIGlmIChsb25nZXNjICYmIGMgIT0gXCJbXCIgJiYgYyA+PSBcIkBcIiAmJiBjIDw9IFwiflwiKSB7XG4gICAgICAgICAgICAgICAgZXNjID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgbG9uZ2VzYyA9IGZhbHNlO1xuICAgICAgICAgICAgfSAvLyBlbmQgb2YgbXVsdGktY2hhciBlc2NhcGVcblxuICAgICAgICAgICAgcmV0dXJuIG91dHA7IC8vIHJlc3VsdCBmb3IgZmlsdGVyXG4gICAgICAgIH0pXG4gICAgICAgIC5qb2luKFwiXCIpOyAvLyBnbHVlIGNoYXJzIGJhY2sgaW50byBzdHJpbmdcbn1cbiJdLAogICJtYXBwaW5ncyI6ICJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFNQSxPQUFPLFlBQVk7QUFDbkIsU0FBUyxRQUFRLGNBQWM7QUFHL0IsTUFBTSxRQUFRO0FBQ2QsTUFBTSxVQUFVO0FBQ2hCLE1BQU0sbUJBQW1CO0FBRXpCLFNBQVMsZ0JBQWdCLEtBQWM7QUFDbkMsTUFBSSxXQUFXLE9BQU8sS0FBSyxJQUFJLEtBQUssSUFBSTtBQUN4QyxNQUFJLElBQUksS0FBSyxTQUFTO0FBQ2xCLGVBQVcsR0FBRyxRQUFRLElBQUksSUFBSSxLQUFLLE9BQU87QUFBQSxFQUM5QztBQUNBLFNBQU87QUFDWDtBQUtBLE1BQU0s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
198
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL3V0aWwvcHJvZ3Jlc3MudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCAyMDIyLTIwMjUgTWF0dGVyLmpzIEF1dGhvcnNcbiAqIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG4gKi9cblxuaW1wb3J0IHsgc3RkZXJyLCBzdGRvdXQgfSBmcm9tIFwicHJvY2Vzc1wiO1xuaW1wb3J0IHsgc2NyZWVuIH0gZnJvbSBcIi4uL2Fuc2ktdGV4dC9zY3JlZW4uanNcIjtcbmltcG9ydCB7IHN0ZCB9IGZyb20gXCIuLi9hbnNpLXRleHQvc3RkLmpzXCI7XG5pbXBvcnQgeyBhbnNpIH0gZnJvbSBcIi4uL2Fuc2ktdGV4dC90ZXh0LWJ1aWxkZXIuanNcIjtcbmltcG9ydCB7IFBhY2thZ2UgfSBmcm9tIFwiLi9wYWNrYWdlLmpzXCI7XG5cbmNvbnN0IFNQSU5ORVIgPSBcIlx1MjVEMFx1MjVEM1x1MjVEMVx1MjVEMlwiOyAvL1wiXHUyODVDXHUyODE0XHUyODIyXHUyOEEzXCI7IC8vW1wiXHUyNkFCXHVGRTBFXCIsIFwiXHUyNkFBXHVGRTBFXCJdOyBcIlx1Mjg0OFx1MjgxNFx1MjgyMlx1Mjg4MVwiO1xuY29uc3QgU1BJTk5FUl9JTlRFUlZBTCA9IDEwMDtcblxuZnVuY3Rpb24gcGFja2FnZUlkZW50aXR5KHBrZzogUGFja2FnZSkge1xuICAgIGxldCBpZGVudGl0eSA9IGFuc2kuYm9sZChwa2cuanNvbi5uYW1lKS50b1N0cmluZygpO1xuICAgIGlmIChwa2cuanNvbi52ZXJzaW9uKSB7XG4gICAgICAgIGlkZW50aXR5ID0gYCR7aWRlbnRpdHl9QCR7cGtnLmpzb24udmVyc2lvbn1gO1xuICAgIH1cbiAgICByZXR1cm4gaWRlbnRpdHk7XG59XG5cbi8qKlxuICogSW50ZXJjZXB0IHdyaXRlcyB0byBzdGRlcnIgYW5kIHN0ZG91dCBzbyB3ZSBjYW4gZW5zdXJlIG91ciB1cGRhdGVzIGFwcGVhciBvbiBkaWZmZXJlbnQgbGluZXMgZnJvbSBvdGhlciBvdXRwdXQuXG4gKi9cbmNvbnN0IHdyaXRlU3RhdHVzID0gKCgpID0+IHtcbiAgICBsZXQgbGFzdFN0YXR1czogdW5kZWZpbmVkIHwgc3RyaW5nO1xuICAgIGxldCBuZWVkTmV3bGluZSA9IGZhbHNlO1xuXG4gICAgZnVuY3Rpb24gaW50ZXJjZXB0KHN0cmVhbTogTm9kZUpTLldyaXRlU3RyZWFtKSB7XG4gICAgICAgIGNvbnN0IGFjdHVhbFdyaXRlID0gc3RyZWFtLndyaXRlO1xuICAgICAgICBzdHJlYW0ud3JpdGUgPSAocGF5bG9hZDogVWludDhBcnJheSB8IHN0cmluZywgLi4ucGFyYW1zOiBhbnlbXSkgPT4ge1xuICAgICAgICAgICAgaWYgKGxhc3RTdGF0dXMpIHtcbiAgICAgICAgICAgICAgICBhY3R1YWxXcml0ZS5jYWxsKHN0cmVhbSwgXCJcXG5cIik7XG4gICAgICAgICAgICAgICAgbGFzdFN0YXR1cyA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKCFwYXlsb2FkLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBSZXF1aXJlIGEgbmV3bGluZSBmb3Igc3RhdHVzIHVwZGF0ZXMgYW55IHRpbWUgdGhlIGN1cnNvciBkb2VzIG5vdCBlbmQgYXQgdGhlIGJlZ2lubmluZyBvZiBhIGxpbmVcbiAgICAgICAgICAgIG5lZWROZXdsaW5lID0gcGF5bG9hZFtwYXlsb2FkLmxlbmd0aCAtIDFdICE9PSBcIlxcblwiICYmIHBheWxvYWRbcGF5bG9hZC5sZW5ndGggLSAxXSAhPT0gXCJcXHJcIjtcblxuICAgICAgICAgICAgcmV0dXJuIGFjdHVhbFdyaXRlLmNhbGwoc3RyZWFtLCBwYXlsb2FkLCAuLi5wYXJhbXMpO1xuICAgICAgICB9O1xuICAgIH1cblxuICAgIGludGVyY2VwdChzdGRvdXQpO1xuICAgIGludGVyY2VwdChzdGRlcnIpO1xuXG4gICAgcmV0dXJuIGZ1bmN0aW9uIHdyaXRlU3RhdHVzKHRleHQ6IHN0cmluZywgd2lsbE92ZXJ3cml0ZSA9IGZhbHNlKSB7XG4gICAgICAgIHRleHQgKz0gd2lsbE92ZXJ3cml0ZSA/IGAke3NjcmVlbi5lcmFzZS50b0VvbH1cXHJgIDogYCR7c2NyZWVuLmVyYXNlLnRvRW9sfVxcbmA7XG4gICAgICAgIGlmICh0ZXh0ID09PSBsYXN0U3RhdHVzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBzdGQub3V0LnN0YXRlKHsgYnVmZmVyOiB0cnVlIH0sICgpID0+IHtcbiAgICAgICAgICAgIGlmIChsYXN0U3RhdHVzKSB7XG4gICAgICAgICAgICAgICAgbGFzdFN0YXR1cyA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAobmVlZE5ld2xpbmUgJiYgIXRleHQuc3RhcnRzV2l0aChcIlxcblwiKSkge1xuICAgICAgICAgICAgICAgIHN0ZC5vdXQoXCJcXG5cIik7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHN0ZC5vdXQud3JpdGVUcnVuY2F0ZWQodGV4dCk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGxhc3RTdGF0dXMgPSB0ZXh0O1xuICAgIH07XG59KSgpO1xuXG5leHBvcnQgY2xhc3MgUHJvZ3Jlc3Mge1xuICAgIHN0YXR1cyA9IFByb2dyZXNzLlN0YXR1cy5TdGFydHVwO1xuICAgICNvbmdvaW5nVGV4dD86IHN0cmluZztcbiAgICAjc3RhcnQ/OiBudW1iZXI7XG4gICAgI3NwaW5uZXIgPSBcIlx1MjlEN1wiO1xuICAgICNyZWZyZXNoSW50ZXJ2YWw/OiBSZXR1cm5UeXBlPHR5cGVvZiBzZXRJbnRlcnZhbD47XG4gICAgI3NwaW5uZXJQb3NpdGlvbiA9IDA7XG4gICAgI3NwaW5uZXJXaW5kb3c/OiBudW1iZXI7XG4gICAgI3N1YnRhc2tzID0gQXJyYXk8c3RyaW5nPigpO1xuXG4gICAgY29uc3RydWN0b3IoKSB7fVxuXG4gICAgZW1waGFzaXplKHRleHQ6IHVua25vd24pIHtcbiAgICAgICAgcmV0dXJuIGFuc2kuYm9sZChgJHt0ZXh0fWApO1xuICAgIH1cblxuICAgIGRlZW1waGFzaXplKHRleHQ6IHVua25vd24pIHtcbiAgICAgICAgcmV0dXJuIGFuc2kuZGltKGAke3RleHR9YCk7XG4gICAgfVxuXG4gICAgc2tpcCh3aHk6IHN0cmluZywgcGtnOiBQYWNrYWdlKSB7XG4gICAgICAgIHN0ZC5vdXQud3JpdGUoYW5zaS5kaW0oYFNraXAgJHtwYWNrYWdlSWRlbnRpdHkocGtnKX06ICR7d2h5fVxcblxcbmApKTtcbiAgICB9XG5cbiAgICBzdGFydHVwKHdoYXQ6IHN0cmluZywgcGtnT3JPdmVyd3JpdGU/OiBQYWNrYWdlIHwgYm9vbGVhbikge1xuICAgICAgICBpZiAocHJvY2Vzcy5zdGRvdXQuaXNUVFkpIHtcbiAgICAgICAgICAgIHRoaXMuI3VwZGF0ZVNwaW5uZXIoKTtcbiAgICAgICAgICAgIHRoaXMuI3JlZnJlc2hJbnRlcnZhbCA9IHNldEludGVydmFsKHRoaXMucmVmcmVzaC5iaW5kKHRoaXMpLCBTUElOTkVSX0lOVEVSVkFMKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuc3RhdHVzID0gUHJvZ3Jlc3MuU3RhdHVzLlN0YXJ0dXA7XG4gICAgICAgIGlmIChwa2dPck92ZXJ3cml0ZSA9PT0gdW5kZWZpbmVkIHx8IHR5cGVvZiBwa2dPck92ZXJ3cml0ZSA9PT0gXCJib29sZWFuXCIpIHtcbiAgICAgICAgICAgIHdyaXRlU3RhdHVzKHdoYXQsIHBrZ09yT3ZlcndyaXRlID8/IHRydWUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgd3JpdGVTdGF0dXMoYCR7d2hhdH0gJHtwYWNrYWdlSWRlbnRpdHkocGtnT3JPdmVyd3JpdGUpfWApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdXBkYXRlKHRleHQ6IHN0cmluZywgZXh0cmE/OiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5zdGF0dXMgPSBQcm9ncmVzcy5TdGF0dXMuT25nb2luZztcbiAgICAgICAgbGV0IGR1cmF0aW9uO1xuICAgICAgICBpZiAodGhpcy4jc3RhcnQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgdGhpcy4jc3RhcnQgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcbiAgICAgICAgICAgIGR1cmF0aW9uID0gXCJcIjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGR1cmF0aW9uID0gdGhpcy4jZHVyYXRpb247XG4gICAgICAgIH1cbiAgICAgICAgZXh0cmEgPSBleHRyYSA9PT0gdW5kZWZpbmVkID8gXCJcIiA6IGAgJHtleHRyYX1gO1xuICAgICAgICB0aGlzLiNvbmdvaW5nVGV4dCA9IGAke3RleHR9ICR7ZHVyYXRpb259JHtleHRyYX1gO1xuICAgICAgICB0aGlzLiN3cml0ZU9uZ29pbmcoKTtcbiAgICB9XG5cbiAgICAjd3JpdGVPbmdvaW5nKCkge1xuICAgICAgICBpZiAoIXRoaXMuI29uZ29pbmdUZXh0KSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBzdWJ0YXNrID0gdGhpcy4jc3VidGFza3MubGVuZ3RoID8gYW5zaS5kaW0oYCAoJHt0aGlzLiNzdWJ0YXNrc1t0aGlzLiNzdWJ0YXNrcy5sZW5ndGggLSAxXX0pYCkgOiBcIlwiO1xuXG4gICAgICAgIHdyaXRlU3RhdHVzKGAgICR7YW5zaS55ZWxsb3codGhpcy4jc3Bpbm5lcil9ICR7dGhpcy4jb25nb2luZ1RleHR9JHtzdWJ0YXNrfWAsIHRydWUpO1xuICAgIH1cblxuICAgIHN1Y2Nlc3ModGV4dDogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuc3RhdHVzID0gUHJvZ3Jlc3MuU3RhdHVzLlN1Y2Nlc3M7XG4gICAgICAgIHdyaXRlU3RhdHVzKGAgICR7YW5zaS5ncmVlbihcIlx1MjcxM1wiKX0gJHt0ZXh0fSAke3RoaXMuI2R1cmF0aW9ufWApO1xuICAgICAgICB0aGlzLiNzdGFydCA9IHRoaXMuI29uZ29pbmdUZXh0ID0gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIGZhaWx1cmUodGV4dDogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuc3RhdHVzID0gUHJvZ3Jlc3MuU3RhdHVzLkZhaWx1cmU7XG4gICAgICAgIHdyaXRlU3RhdHVzKGAgICR7YW5zaS5icmlnaHQucmVkKFwiXHUyNzE3XCIpfSAke3RleHR9ICR7dGhpcy4jZHVyYXRpb259YCk7XG4gICAgICAgIHRoaXMuI3N0YXJ0ID0gdGhpcy4jb25nb2luZ1RleHQgPSB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgaW5mbyhsYWJlbDogc3RyaW5nLCB2YWx1ZT86IGFueSkge1xuICAgICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgICAgIGxhYmVsID0gYCR7YW5zaS5kaW0obGFiZWwpfSAke3ZhbHVlfWA7XG4gICAgICAgIH1cbiAgICAgICAgd3JpdGVTdGF0dXMoYCAgJHthbnNpLmRpbShcIlx1MjAyM1wiKX0gJHtsYWJlbH1gKTtcbiAgICB9XG5cbiAgICB3YXJuKHRleHQ6IHN0cmluZykge1xuICAgICAgICBzdGQub3V0LndyaXRlKGAgICAgJHthbnNpLnllbGxvdyhcIldhcm5pbmc6XCIpfSAke3RleHR9XFxuYCk7XG4gICAgfVxuXG4gICAgc2h1dGRvd24oKSB7XG4gICAgICAgIGlmICh0aGlzLiNyZWZyZXNoSW50ZXJ2YWwpIHtcbiAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwodGhpcy4jcmVmcmVzaEludGVydmFsKTtcbiAgICAgICAgICAgIHRoaXMuI3JlZnJlc2hJbnRlcnZhbCA9IHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgICB3cml0ZVN0YXR1cyhcIlwiKTtcbiAgICB9XG5cbiAgICByZWZyZXNoKCkge1xuICAgICAgICBpZiAodGhpcy4jdXBkYXRlU3Bpbm5lcigpKSB7XG4gICAgICAgICAgICB0aGlzLiN3cml0ZU9uZ29pbmcoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGFzeW5jIHN1YnRhc2sodGV4dDogc3RyaW5nLCBmbjogKCkgPT4gUHJvbWlzZTx2b2lkPikge1xuICAgICAgICB0aGlzLiNzdWJ0YXNrcy5wdXNoKHRleHQpO1xuXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBhd2FpdCBmbigpO1xuICAgICAgICB9IGZpbmFsbHkge1xuICAgICAgICAgICAgdGhpcy4jc3VidGFza3MucG9wKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAjdXBkYXRlU3Bpbm5lcigpIHtcbiAgICAgICAgaWYgKCFzdGRvdXQuaXNUVFkpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHdpbmRvdyA9IE1hdGguZmxvb3IobmV3IERhdGUoKS5nZXRUaW1lKCkgLyBTUElOTkVSX0lOVEVSVkFMKTtcbiAgICAgICAgaWYgKHRoaXMuI3NwaW5uZXJXaW5kb3cgPT09IHdpbmRvdykge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuI3NwaW5uZXJXaW5kb3cgPSB3aW5kb3c7XG5cbiAgICAgICAgdGhpcy4jc3Bpbm5lclBvc2l0aW9uID0gKHRoaXMuI3NwaW5uZXJQb3NpdGlvbiArIDEpICUgU1BJTk5FUi5sZW5ndGg7XG4gICAgICAgIHRoaXMuI3NwaW5uZXIgPSBTUElOTkVSW3RoaXMuI3NwaW5uZXJQb3NpdGlvbl07XG5cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgYXN5bmMgcnVuPFQ+KHdoYXQ6IHN0cmluZywgZm46ICgpID0+IFQgfCBQcm9taXNlPFQ+KSB7XG4gICAgICAgIHRoaXMudXBkYXRlKHdoYXQpO1xuICAgICAgICBsZXQgcmVzdWx0OiBUO1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgcmVzdWx0ID0gYXdhaXQgZm4oKTtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgdGhpcy5mYWlsdXJlKHdoYXQpO1xuICAgICAgICAgICAgdGhyb3cgZTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnN1Y2Nlc3Mod2hhdCk7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgZ2V0ICNkdXJhdGlvbigpIHtcbiAgICAgICAgbGV0IG1zID0gdGhpcy4jc3RhcnQgPyBuZXcgRGF0ZSgpLmdldFRpbWUoKSAtIHRoaXMuI3N0YXJ0IDogMDtcbiAgICAgICAgaWYgKG1zIDwgMTAwMCkge1xuICAgICAgICAgICAgbXMgPSBNYXRoLnJvdW5kKG1zIC8gMTApIC8gMTAwO1xuICAgICAgICB9IGVsc2UgaWYgKG1zIDwgMTAwMDApIHtcbiAgICAgICAgICAgIG1zID0gTWF0aC5yb3VuZChtcyAvIDEwMCkgLyAxMDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIG1zID0gTWF0aC50cnVuYyhtcyAvIDEwMDApO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBgJHthbnNpLmRpbS55ZWxsb3d9KCR7bXN9cykke2Fuc2kubm90LmRpbS5ub3QueWVsbG93fWA7XG4gICAgfVxufVxuXG5leHBvcnQgbmFtZXNwYWNlIFByb2dyZXNzIHtcbiAgICBleHBvcnQgZW51bSBTdGF0dXMge1xuICAgICAgICBTdGFydHVwID0gXCJzdGFydHVwXCIsXG4gICAgICAgIE9uZ29pbmcgPSBcIm9uZ29pbmdcIixcbiAgICAgICAgU3VjY2VzcyA9IFwic3VjY2Vzc1wiLFxuICAgICAgICBGYWlsdXJlID0gXCJmYWlsdXJlXCIsXG4gICAgfVxufVxuIl0sCiAgIm1hcHBpbmdzIjogIkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQU1BLFNBQVMsUUFBUSxjQUFjO0FBQy9CLFNBQVMsY0FBYztBQUN2QixTQUFTLFdBQVc7QUFDcEIsU0FBUyxZQUFZO0FBR3JCLE1BQU0sVUFBVTtBQUNoQixNQUFNLG1CQUFtQjtBQUV6QixTQUFTLGdCQUFnQixLQUFjO0FBQ25DLE1BQUksV0FBVyxLQUFLLEtBQUssSUFBSSxLQUFLLElBQUksRUFBRSxTQUFTO0FBQ2pELE1BQUks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LEtBQUssZ0JBQWdCO0FBQ25DLFdBQUssbUJBQW1CO0FBQUEsSUFDNUI7QUFDQSxnQkFBWSxFQUFFO0FBQUEsRUFDbEI7QUFBQSxFQUVBLFVBQVU7QUFDTixRQUFJLEtBQUssZUFBZSxHQUFHO0FBQ3ZCLFdBQUssY0FBYztBQUFBLElBQ3ZCO0FBQUEsRUFDSjtBQUFBLEVBRUEsTUFBTSxRQUFRLE1BQWMsSUFBeUI7QUFDakQsU0FBSyxVQUFVLEtBQUssSUFBSTtBQUV4QixRQUFJO0FBQ0EsWUFBTSxHQUFHO0FBQUEsSUFDYixVQUFFO0FBQ0UsV0FBSyxVQUFVLElBQUk7QUFBQSxJQUN2QjtBQUFBLEVBQ0o7QUFBQSxFQUVBLGlCQUFpQjtBQUNiLFFBQUksQ0FBQyxPQUFPLE9BQU87QUFDZixhQUFPO0FBQUEsSUFDWDtBQUVBLFVBQU0sU0FBUyxLQUFLLE9BQU0sb0JBQUksS0FBSyxHQUFFLFFBQVEsSUFBSSxnQkFBZ0I7QUFDakUsUUFBSSxLQUFLLG1CQUFtQixRQUFRO0FBQ2hDLGFBQU87QUFBQSxJQUNYO0FBQ0EsU0FBSyxpQkFBaUI7QUFFdEIsU0FBSyxvQkFBb0IsS0FBSyxtQkFBbUIsS0FBSyxRQUFRO0FBQzlELFNBQUssV0FBVyxRQUFRLEtBQUssZ0JBQWdCO0FBRTdDLFdBQU87QUFBQSxFQUNYO0FBQUEsRUFFQSxNQUFNLElBQU8sTUFBYyxJQUEwQjtBQUNqRCxTQUFLLE9BQU8sSUFBSTtBQUNoQixRQUFJO0FBQ0osUUFBSTtBQUNBLGVBQVMsTUFBTSxHQUFHO0FBQUEsSUFDdEIsU0FBUyxHQUFHO0FBQ1IsV0FBSyxRQUFRLElBQUk7QUFDakIsWUFBTTtBQUFBLElBQ1Y7QUFDQSxTQUFLLFFBQVEsSUFBSTtBQUNqQixXQUFPO0FBQUEsRUFDWDtBQUFBLEVBRUEsSUFBSSxZQUFZO0FBQ1osUUFBSSxLQUFLLEtBQUssVUFBUyxvQkFBSSxLQUFLLEdBQUUsUUFBUSxJQUFJLEtBQUssU0FBUztBQUM1RCxRQUFJLEtBQUssS0FBTTtBQUNYLFdBQUssS0FBSyxNQUFNLEtBQUssRUFBRSxJQUFJO0FBQUEsSUFDL0IsV0FBVyxLQUFLLEtBQU87QUFDbkIsV0FBSyxLQUFLLE1BQU0sS0FBSyxHQUFHLElBQUk7QUFBQSxJQUNoQyxPQUFPO0FBQ0gsV0FBSyxLQUFLLE1BQU0sS0FBSyxHQUFJO0FBQUEsSUFDN0I7QUFDQSxXQUFPLEdBQUcsS0FBSyxJQUFJLE1BQU0sSUFBSSxFQUFFLEtBQUssS0FBSyxJQUFJLElBQUksSUFBSSxNQUFNO0FBQUEsRUFDL0Q7QUFDSjtBQUFBLENBRU8sQ0FBVUMsY0FBVjtBQUNJLE1BQUs7QUFBTCxJQUFLQyxZQUFMO0FBQ0gsSUFBQUEsUUFBQSxhQUFVO0FBQ1YsSUFBQUEsUUFBQSxhQUFVO0FBQ1YsSUFBQUEsUUFBQSxhQUFVO0FBQ1YsSUFBQUEsUUFBQSxhQUFVO0FBQUEsS0FKRixTQUFBRCxVQUFBLFdBQUFBLFVBQUE7QUFBQSxHQURDOyIsCiAgIm5hbWVzIjogWyJ3cml0ZVN0YXR1cyIsICJQcm9ncmVzcyIsICJTdGF0dXMiXQp9Cg==
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/util/progress.ts"],
4
- "mappings": "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",
4
+ "mappings": "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",
5
5
  "names": ["writeStatus", "Progress", "Status"]
6
6
  }
@@ -3,9 +3,9 @@
3
3
  * Copyright 2022-2025 Matter.js Authors
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
- import colors from "ansi-colors";
7
6
  import { existsSync, readFileSync } from "fs";
8
7
  import { cp, writeFile } from "fs/promises";
8
+ import { ansi } from "../ansi-text/text-builder.js";
9
9
  import { Graph } from "../building/graph.js";
10
10
  import { execute } from "../running/execute.js";
11
11
  const VERSION_FILE = "version.txt";
@@ -39,7 +39,7 @@ class Versioner {
39
39
  const graph = await Graph.load(this.#pkg);
40
40
  this.#members = new Set(graph.nodes.map((node) => node.pkg.name));
41
41
  for (const node of graph.nodes) {
42
- const what = `Apply ${colors.bold(this.#definiteVersion)} to ${colors.bold(node.pkg.name)}`;
42
+ const what = `Apply ${ansi.bold(this.#definiteVersion)} to ${ansi.bold(node.pkg.name)}`;
43
43
  progress?.update(what);
44
44
  if (this.#applyOne(node.pkg)) {
45
45
  progress?.success(what);
@@ -112,4 +112,4 @@ class Versioner {
112
112
  export {
113
113
  Versioner
114
114
  };
115
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL3ZlcnNpb25pbmcvdmVyc2lvbmVyLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgMjAyMi0yMDI1IE1hdHRlci5qcyBBdXRob3JzXG4gKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuICovXG5cbmltcG9ydCBjb2xvcnMgZnJvbSBcImFuc2ktY29sb3JzXCI7XG5pbXBvcnQgeyBleGlzdHNTeW5jLCByZWFkRmlsZVN5bmMgfSBmcm9tIFwiZnNcIjtcbmltcG9ydCB7IGNwLCB3cml0ZUZpbGUgfSBmcm9tIFwiZnMvcHJvbWlzZXNcIjtcbmltcG9ydCB7IEdyYXBoIH0gZnJvbSBcIi4uL2J1aWxkaW5nL2dyYXBoLmpzXCI7XG5pbXBvcnQgeyBleGVjdXRlIH0gZnJvbSBcIi4uL3J1bm5pbmcvZXhlY3V0ZS5qc1wiO1xuaW1wb3J0IHsgUGFja2FnZSB9IGZyb20gXCIuLi91dGlsL3BhY2thZ2UuanNcIjtcbmltcG9ydCB7IFByb2dyZXNzIH0gZnJvbSBcIi4uL3V0aWwvcHJvZ3Jlc3MuanNcIjtcblxuY29uc3QgVkVSU0lPTl9GSUxFID0gXCJ2ZXJzaW9uLnR4dFwiO1xuXG5leHBvcnQgY2xhc3MgVmVyc2lvbmVyIHtcbiAgICAjcGtnOiBQYWNrYWdlO1xuICAgICN2ZXJzaW9uPzogc3RyaW5nO1xuICAgICNtZW1iZXJzID0gbmV3IFNldDxzdHJpbmc+KCk7XG5cbiAgICBnZXQgcGtnKCkge1xuICAgICAgICByZXR1cm4gdGhpcy4jcGtnO1xuICAgIH1cblxuICAgIGdldCB2ZXJzaW9uKCkge1xuICAgICAgICByZXR1cm4gdGhpcy4jdmVyc2lvbjtcbiAgICB9XG5cbiAgICBnZXQgYXBwbGllZFZlcnNpb24oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLiNwa2cuanNvbi52ZXJzaW9uO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKHBrZzogUGFja2FnZSwgdmVyc2lvbj86IHN0cmluZykge1xuICAgICAgICB0aGlzLiNwa2cgPSBwa2cud29ya3NwYWNlO1xuXG4gICAgICAgIGlmICh2ZXJzaW9uID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHZlcnNpb24gPSB0aGlzLiNyZWFkVmVyc2lvbigpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHZlcnNpb24gJiYgIXZlcnNpb24ubWF0Y2goL14oPzpcXGQrXFwuXFxkK1xcLlxcZCsoPzotW2EtejAtOS4tXSspP3xbYS16XSspJC8pKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFZlcnNpb24gJHt2ZXJzaW9ufSBpcyBpbnZhbGlkIChtdXN0IGJlIHNlbWFudGljIG9yIHNpbmdsZSBsb3dlcmNhc2Ugd29yZClgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuI3ZlcnNpb24gPSB2ZXJzaW9uO1xuICAgIH1cblxuICAgIGFzeW5jIHNldCgpIHtcbiAgICAgICAgYXdhaXQgd3JpdGVGaWxlKHRoaXMuI3ZlcnNpb25GaWxlLCB0aGlzLiNkZWZpbml0ZVZlcnNpb24pO1xuICAgIH1cblxuICAgIGFzeW5jIGFwcGx5KHByb2dyZXNzPzogUHJvZ3Jlc3MpIHtcbiAgICAgICAgY29uc3QgZ3JhcGggPSBhd2FpdCBHcmFwaC5sb2FkKHRoaXMuI3BrZyk7XG4gICAgICAgIHRoaXMuI21lbWJlcnMgPSBuZXcgU2V0KGdyYXBoLm5vZGVzLm1hcChub2RlID0+IG5vZGUucGtnLm5hbWUpKTtcblxuICAgICAgICBmb3IgKGNvbnN0IG5vZGUgb2YgZ3JhcGgubm9kZXMpIHtcbiAgICAgICAgICAgIGNvbnN0IHdoYXQgPSBgQXBwbHkgJHtjb2xvcnMuYm9sZCh0aGlzLiNkZWZpbml0ZVZlcnNpb24pfSB0byAke2NvbG9ycy5ib2xkKG5vZGUucGtnLm5hbWUpfWA7XG4gICAgICAgICAgICBwcm9ncmVzcz8udXBkYXRlKHdoYXQpO1xuICAgICAgICAgICAgaWYgKHRoaXMuI2FwcGx5T25lKG5vZGUucGtnKSkge1xuICAgICAgICAgICAgICAgIHByb2dyZXNzPy5zdWNjZXNzKHdoYXQpO1xuICAgICAgICAgICAgICAgIGF3YWl0IG5vZGUucGtnLnNhdmUoKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcHJvZ3Jlc3M/LnN1Y2Nlc3MoYCR7d2hhdH0gKG5vIGNoYW5nZSlgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGF3YWl0IGNwKHRoaXMuI3BrZy5yZXNvbHZlKFwiTElDRU5TRVwiKSwgbm9kZS5wa2cucmVzb2x2ZShcIkxJQ0VOU0VcIikpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgYXN5bmMgdGFnKCkge1xuICAgICAgICBhd2FpdCBleGVjdXRlKFwiZ2l0XCIsIFtcInRhZ1wiLCBcIi1mXCIsIGB2JHt0aGlzLiNkZWZpbml0ZVZlcnNpb259YF0pO1xuICAgIH1cblxuICAgIGdldCAjZGVmaW5pdGVWZXJzaW9uKCkge1xuICAgICAgICBpZiAodGhpcy4jdmVyc2lvbiA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYE5vIHZlcnNpb24gc3VwcGxpZWQgYW5kICR7dGhpcy4jdmVyc2lvbkZpbGV9IGRvZXMgbm90IGV4aXN0YCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuI3ZlcnNpb247XG4gICAgfVxuXG4gICAgZ2V0ICN2ZXJzaW9uRmlsZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuI3BrZy5yZXNvbHZlKFZFUlNJT05fRklMRSk7XG4gICAgfVxuXG4gICAgI3JlYWRWZXJzaW9uKCkge1xuICAgICAgICBjb25zdCB2ZXJzaW9uRmlsZSA9IHRoaXMuI3ZlcnNpb25GaWxlO1xuICAgICAgICBpZiAoIWV4aXN0c1N5bmModmVyc2lvbkZpbGUpKSB7XG4gICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgdmVyc2lvbiA9IHJlYWRGaWxlU3luYyh2ZXJzaW9uRmlsZSkudG9TdHJpbmcoKS50cmltKCk7XG4gICAgICAgIGlmICh2ZXJzaW9uLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBWZXJzaW9uIGZpbGUgJHt2ZXJzaW9uRmlsZX0gaXMgZW1wdHlgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB2ZXJzaW9uO1xuICAgIH1cblxuICAgICNhcHBseU9uZShwa2c6IFBhY2thZ2UpIHtcbiAgICAgICAgY29uc3QganNvbiA9IHBrZy5qc29uO1xuICAgICAgICBsZXQgY2hhbmdlZCA9IGZhbHNlO1xuXG4gICAgICAgIGlmIChqc29uLnZlcnNpb24gIT09IHRoaXMuI2RlZmluaXRlVmVyc2lvbikge1xuICAgICAgICAgICAganNvbi52ZXJzaW9uID0gdGhpcy4jZGVmaW5pdGVWZXJzaW9uO1xuICAgICAgICAgICAgY2hhbmdlZCA9IHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBqc29uKSB7XG4gICAgICAgICAgICBpZiAoa2V5ICE9PSBcImRlcGVuZGVuY2llc1wiICYmICFrZXkuZW5kc1dpdGgoXCJEZXBlbmRlbmNpZXNcIikpIHtcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgZGVwcyA9IGpzb25ba2V5XTtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgZGVwcyAhPT0gXCJvYmplY3RcIikge1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAodGhpcy4jYXBwbHlUb0RlcHMoZGVwcykpIHtcbiAgICAgICAgICAgICAgICBjaGFuZ2VkID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBjaGFuZ2VkO1xuICAgIH1cblxuICAgICNhcHBseVRvRGVwcyhkZXBzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+KSB7XG4gICAgICAgIGxldCBjaGFuZ2VkID0gZmFsc2U7XG4gICAgICAgIGNvbnN0IHZlcnNpb24gPSB0aGlzLiNkZWZpbml0ZVZlcnNpb247XG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIGRlcHMpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLiNtZW1iZXJzLmhhcyhrZXkpKSB7XG4gICAgICAgICAgICAgICAgaWYgKGRlcHNba2V5XSA9PT0gdmVyc2lvbikge1xuICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZGVwc1trZXldID0gdGhpcy4jZGVmaW5pdGVWZXJzaW9uO1xuICAgICAgICAgICAgICAgIGNoYW5nZWQgPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBjaGFuZ2VkO1xuICAgIH1cbn1cbiJdLAogICJtYXBwaW5ncyI6ICJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFNQSxPQUFPLFlBQVk7QUFDbkIsU0FBUyxZQUFZLG9CQUFvQjtBQUN6QyxTQUFTLElBQUksaUJBQWlCO0FBQzlCLFNBQVMsYUFBYTtBQUN0QixTQUFTLGVBQWU7QUFJeEIsTUFBTSxlQUFlO0FBRWQsTUFBTSxVQUFVO0FBQUEsRUFDbkI7QUFBQSxFQUNBO0FBQUEsRUFDQSxXQUFXLG9CQUFJLElBQVk7QUFBQSxFQUUzQixJQUFJLE1BQU07QUFDTixXQUFPLEtBQUs7QUFBQSxFQUNoQjtBQUFBLEVBRUEsSUFBSSxVQUFVO0FBQ1YsV0FBTyxLQUFLO0FBQUEsRUFDaEI7QUFBQSxFQUVBLElBQUksaUJBQWlCO0FBQ2pCLFdBQU8sS0FBSyxLQUFLLEtBQUs7QUFBQSxFQUMxQjtBQUFBLEVBRUEsWUFBWSxLQUFjLFNBQWtCO0FBQ3hDLFNBQUssT0FBTyxJQUFJO0FBRWhCLFFBQUksWUFBWSxRQUFXO0FBQ3ZCLGdCQUFVLEtBQUssYUFBYTtBQUFBLElBQ2hDO0FBRUEsUUFBSSxXQUFXLENBQUMsUUFBUSxN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
115
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL3ZlcnNpb25pbmcvdmVyc2lvbmVyLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgMjAyMi0yMDI1IE1hdHRlci5qcyBBdXRob3JzXG4gKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuICovXG5cbmltcG9ydCB7IGV4aXN0c1N5bmMsIHJlYWRGaWxlU3luYyB9IGZyb20gXCJmc1wiO1xuaW1wb3J0IHsgY3AsIHdyaXRlRmlsZSB9IGZyb20gXCJmcy9wcm9taXNlc1wiO1xuaW1wb3J0IHsgYW5zaSB9IGZyb20gXCIuLi9hbnNpLXRleHQvdGV4dC1idWlsZGVyLmpzXCI7XG5pbXBvcnQgeyBHcmFwaCB9IGZyb20gXCIuLi9idWlsZGluZy9ncmFwaC5qc1wiO1xuaW1wb3J0IHsgZXhlY3V0ZSB9IGZyb20gXCIuLi9ydW5uaW5nL2V4ZWN1dGUuanNcIjtcbmltcG9ydCB7IFBhY2thZ2UgfSBmcm9tIFwiLi4vdXRpbC9wYWNrYWdlLmpzXCI7XG5pbXBvcnQgeyBQcm9ncmVzcyB9IGZyb20gXCIuLi91dGlsL3Byb2dyZXNzLmpzXCI7XG5cbmNvbnN0IFZFUlNJT05fRklMRSA9IFwidmVyc2lvbi50eHRcIjtcblxuZXhwb3J0IGNsYXNzIFZlcnNpb25lciB7XG4gICAgI3BrZzogUGFja2FnZTtcbiAgICAjdmVyc2lvbj86IHN0cmluZztcbiAgICAjbWVtYmVycyA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuXG4gICAgZ2V0IHBrZygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuI3BrZztcbiAgICB9XG5cbiAgICBnZXQgdmVyc2lvbigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuI3ZlcnNpb247XG4gICAgfVxuXG4gICAgZ2V0IGFwcGxpZWRWZXJzaW9uKCkge1xuICAgICAgICByZXR1cm4gdGhpcy4jcGtnLmpzb24udmVyc2lvbjtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3Rvcihwa2c6IFBhY2thZ2UsIHZlcnNpb24/OiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy4jcGtnID0gcGtnLndvcmtzcGFjZTtcblxuICAgICAgICBpZiAodmVyc2lvbiA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICB2ZXJzaW9uID0gdGhpcy4jcmVhZFZlcnNpb24oKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh2ZXJzaW9uICYmICF2ZXJzaW9uLm1hdGNoKC9eKD86XFxkK1xcLlxcZCtcXC5cXGQrKD86LVthLXowLTkuLV0rKT98W2Etel0rKSQvKSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBWZXJzaW9uICR7dmVyc2lvbn0gaXMgaW52YWxpZCAobXVzdCBiZSBzZW1hbnRpYyBvciBzaW5nbGUgbG93ZXJjYXNlIHdvcmQpYCk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLiN2ZXJzaW9uID0gdmVyc2lvbjtcbiAgICB9XG5cbiAgICBhc3luYyBzZXQoKSB7XG4gICAgICAgIGF3YWl0IHdyaXRlRmlsZSh0aGlzLiN2ZXJzaW9uRmlsZSwgdGhpcy4jZGVmaW5pdGVWZXJzaW9uKTtcbiAgICB9XG5cbiAgICBhc3luYyBhcHBseShwcm9ncmVzcz86IFByb2dyZXNzKSB7XG4gICAgICAgIGNvbnN0IGdyYXBoID0gYXdhaXQgR3JhcGgubG9hZCh0aGlzLiNwa2cpO1xuICAgICAgICB0aGlzLiNtZW1iZXJzID0gbmV3IFNldChncmFwaC5ub2Rlcy5tYXAobm9kZSA9PiBub2RlLnBrZy5uYW1lKSk7XG5cbiAgICAgICAgZm9yIChjb25zdCBub2RlIG9mIGdyYXBoLm5vZGVzKSB7XG4gICAgICAgICAgICBjb25zdCB3aGF0ID0gYEFwcGx5ICR7YW5zaS5ib2xkKHRoaXMuI2RlZmluaXRlVmVyc2lvbil9IHRvICR7YW5zaS5ib2xkKG5vZGUucGtnLm5hbWUpfWA7XG4gICAgICAgICAgICBwcm9ncmVzcz8udXBkYXRlKHdoYXQpO1xuICAgICAgICAgICAgaWYgKHRoaXMuI2FwcGx5T25lKG5vZGUucGtnKSkge1xuICAgICAgICAgICAgICAgIHByb2dyZXNzPy5zdWNjZXNzKHdoYXQpO1xuICAgICAgICAgICAgICAgIGF3YWl0IG5vZGUucGtnLnNhdmUoKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcHJvZ3Jlc3M/LnN1Y2Nlc3MoYCR7d2hhdH0gKG5vIGNoYW5nZSlgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGF3YWl0IGNwKHRoaXMuI3BrZy5yZXNvbHZlKFwiTElDRU5TRVwiKSwgbm9kZS5wa2cucmVzb2x2ZShcIkxJQ0VOU0VcIikpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgYXN5bmMgdGFnKCkge1xuICAgICAgICBhd2FpdCBleGVjdXRlKFwiZ2l0XCIsIFtcInRhZ1wiLCBcIi1mXCIsIGB2JHt0aGlzLiNkZWZpbml0ZVZlcnNpb259YF0pO1xuICAgIH1cblxuICAgIGdldCAjZGVmaW5pdGVWZXJzaW9uKCkge1xuICAgICAgICBpZiAodGhpcy4jdmVyc2lvbiA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYE5vIHZlcnNpb24gc3VwcGxpZWQgYW5kICR7dGhpcy4jdmVyc2lvbkZpbGV9IGRvZXMgbm90IGV4aXN0YCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuI3ZlcnNpb247XG4gICAgfVxuXG4gICAgZ2V0ICN2ZXJzaW9uRmlsZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuI3BrZy5yZXNvbHZlKFZFUlNJT05fRklMRSk7XG4gICAgfVxuXG4gICAgI3JlYWRWZXJzaW9uKCkge1xuICAgICAgICBjb25zdCB2ZXJzaW9uRmlsZSA9IHRoaXMuI3ZlcnNpb25GaWxlO1xuICAgICAgICBpZiAoIWV4aXN0c1N5bmModmVyc2lvbkZpbGUpKSB7XG4gICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgdmVyc2lvbiA9IHJlYWRGaWxlU3luYyh2ZXJzaW9uRmlsZSkudG9TdHJpbmcoKS50cmltKCk7XG4gICAgICAgIGlmICh2ZXJzaW9uLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBWZXJzaW9uIGZpbGUgJHt2ZXJzaW9uRmlsZX0gaXMgZW1wdHlgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB2ZXJzaW9uO1xuICAgIH1cblxuICAgICNhcHBseU9uZShwa2c6IFBhY2thZ2UpIHtcbiAgICAgICAgY29uc3QganNvbiA9IHBrZy5qc29uO1xuICAgICAgICBsZXQgY2hhbmdlZCA9IGZhbHNlO1xuXG4gICAgICAgIGlmIChqc29uLnZlcnNpb24gIT09IHRoaXMuI2RlZmluaXRlVmVyc2lvbikge1xuICAgICAgICAgICAganNvbi52ZXJzaW9uID0gdGhpcy4jZGVmaW5pdGVWZXJzaW9uO1xuICAgICAgICAgICAgY2hhbmdlZCA9IHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBqc29uKSB7XG4gICAgICAgICAgICBpZiAoa2V5ICE9PSBcImRlcGVuZGVuY2llc1wiICYmICFrZXkuZW5kc1dpdGgoXCJEZXBlbmRlbmNpZXNcIikpIHtcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgZGVwcyA9IGpzb25ba2V5XTtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgZGVwcyAhPT0gXCJvYmplY3RcIikge1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAodGhpcy4jYXBwbHlUb0RlcHMoZGVwcykpIHtcbiAgICAgICAgICAgICAgICBjaGFuZ2VkID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBjaGFuZ2VkO1xuICAgIH1cblxuICAgICNhcHBseVRvRGVwcyhkZXBzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+KSB7XG4gICAgICAgIGxldCBjaGFuZ2VkID0gZmFsc2U7XG4gICAgICAgIGNvbnN0IHZlcnNpb24gPSB0aGlzLiNkZWZpbml0ZVZlcnNpb247XG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIGRlcHMpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLiNtZW1iZXJzLmhhcyhrZXkpKSB7XG4gICAgICAgICAgICAgICAgaWYgKGRlcHNba2V5XSA9PT0gdmVyc2lvbikge1xuICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZGVwc1trZXldID0gdGhpcy4jZGVmaW5pdGVWZXJzaW9uO1xuICAgICAgICAgICAgICAgIGNoYW5nZWQgPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBjaGFuZ2VkO1xuICAgIH1cbn1cbiJdLAogICJtYXBwaW5ncyI6ICJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFNQSxTQUFTLFlBQVksb0JBQW9CO0FBQ3pDLFNBQVMsSUFBSSxpQkFBaUI7QUFDOUIsU0FBUyxZQUFZO0FBQ3JCLFNBQVMsYUFBYTtBQUN0QixTQUFTLGVBQWU7QUFJeEIsTUFBTSxlQUFlO0FBRWQsTUFBTSxVQUFVO0FBQUEsRUFDbkI7QUFBQSxFQUNBO0FBQUEsRUFDQSxXQUFXLG9CQUFJLElBQVk7QUFBQSxFQUUzQixJQUFJLE1BQU07QUFDTixXQUFPLEtBQUs7QUFBQSxFQUNoQjtBQUFBLEVBRUEsSUFBSSxVQUFVO0FBQ1YsV0FBTyxLQUFLO0FBQUEsRUFDaEI7QUFBQSxFQUVBLElBQUksaUJBQWlCO0FBQ2pCLFdBQU8sS0FBSyxLQUFLLEtBQUs7QUFBQSxFQUMxQjtBQUFBLEVBRUEsWUFBWSxLQUFjLFNBQWtCO0FBQ3hDLFNBQUssT0FBTyxJQUFJO0FBRWhCLFFBQUksWUFBWSxRQUFXO0FBQ3ZCLGdCQUFVLEtBQUssYUFBYTtBQUFBLElBQ2hDO0FBRUEsUUFBSSxX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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/versioning/versioner.ts"],
4
- "mappings": "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",
4
+ "mappings": "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",
5
5
  "names": []
6
6
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@matter/tools",
3
- "version": "0.12.2",
3
+ "version": "0.12.3-alpha.0-20250205-ad3416ca3",
4
4
  "description": "Matter.js tooling",
5
5
  "type": "module",
6
6
  "scripts": {
@@ -25,6 +25,16 @@
25
25
  "default": "./dist/cjs/index.js"
26
26
  }
27
27
  },
28
+ "./ansi-text": {
29
+ "import": {
30
+ "types": "./dist/esm/ansi-text/index.d.ts",
31
+ "default": "./dist/esm/ansi-text/index.js"
32
+ },
33
+ "require": {
34
+ "types": "./dist/cjs/ansi-text/index.d.ts",
35
+ "default": "./dist/cjs/ansi-text/index.js"
36
+ }
37
+ },
28
38
  "./bootstrap": {
29
39
  "import": {
30
40
  "default": "./src/util/bootstrap.mjs"
@@ -0,0 +1,31 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2022-2024 Matter.js Authors
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+
7
+ export namespace Chars {
8
+ export const breakingSpace = new Set([
9
+ " ", // Space
10
+ "\u1680", // Ask the Irish
11
+ "\u200b", // Zero-width space
12
+ "\u2000",
13
+ "\u2001",
14
+ "\u2002",
15
+ "\u2003",
16
+ "\u2004",
17
+ "\u2005",
18
+ "\u2006",
19
+ "\u2007",
20
+ "\u2008",
21
+ "\u2009",
22
+ "\u200a",
23
+ "\u205f", // Math space
24
+ "\u3000", // Ideographic space
25
+ ]);
26
+
27
+ // eslint-disable-next-line no-misleading-character-class
28
+ export const zeroWidth = /[\u200b\u200c\u200d\u2060\p{Mn}\p{Me}]/u;
29
+
30
+ export const nonbreakingText = /[\u00a0\u202f\p{Letter}\p{Mark}\p{Sm}\p{Sc}\p{Sk}\p{So}\p{Number}\p{Punctuation}]/u;
31
+ }
@@ -0,0 +1,53 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2022-2024 Matter.js Authors
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+
7
+ import { Producer } from "./producer.js";
8
+ import { Style } from "./style.js";
9
+
10
+ export interface Consumer {
11
+ /**
12
+ * Add text.
13
+ *
14
+ * If tokenized, the tokens must be in the form returned by {@link tokenize} for correct processing.
15
+ */
16
+ write(...text: Producer.Sequence): void;
17
+
18
+ /**
19
+ * Current state of the destination.
20
+ */
21
+ readonly state: Consumer.State;
22
+
23
+ /**
24
+ * Settle output state after generating all output.
25
+ */
26
+ close(): void;
27
+ }
28
+
29
+ export namespace Consumer {
30
+ export interface Options {
31
+ linePrefix?: string;
32
+ style?: Style;
33
+ terminalWidth?: number;
34
+ styleEnabled?: boolean;
35
+ buffer?: boolean;
36
+ }
37
+
38
+ export interface State extends Options {
39
+ (options?: Options): Context;
40
+ (options?: Options, executor?: () => void): void;
41
+
42
+ readonly availableWidth: number | undefined;
43
+ readonly remainingWidth: number | undefined;
44
+
45
+ onRevert(fn: () => void): void;
46
+ offRevert(fn: () => void): void;
47
+ }
48
+
49
+ export interface Context {
50
+ close(): void;
51
+ [Symbol.dispose](): void;
52
+ }
53
+ }
@@ -0,0 +1,181 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2022-2024 Matter.js Authors
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+
7
+ import { Producer } from "./producer.js";
8
+ import { BreakingToken, NonbreakingToken, Token } from "./token.js";
9
+
10
+ /**
11
+ * A single output segment that should be presented contiguously if space allows.
12
+ */
13
+ export class ContiguousOutputSegment implements Producer {
14
+ width = 0;
15
+ tokens: Token[];
16
+
17
+ constructor(...text: Producer.Sequence) {
18
+ this.tokens = [...Producer.of(text)];
19
+ this.#addWidth(this.tokens);
20
+ }
21
+
22
+ [Symbol.iterator]() {
23
+ return this.tokens[Symbol.iterator]();
24
+ }
25
+
26
+ push(...text: Producer.Sequence) {
27
+ const tokens = [...Producer.of(text)];
28
+ this.tokens.push(...tokens);
29
+ this.#addWidth(tokens);
30
+ }
31
+
32
+ #addWidth(tokens: Token[]) {
33
+ for (const token of tokens) {
34
+ if ("width" in token) {
35
+ this.width += token.width;
36
+ }
37
+ }
38
+ }
39
+
40
+ /**
41
+ * Create a scanner that can be used to move through the segment in chunks of visible characters. This is only
42
+ * necessary when wrapping segments that are too long to fit on a single line.
43
+ */
44
+ scan(): ContiguousOutputSegment.Scanner {
45
+ let done = false;
46
+ const iterator = this.tokens[Symbol.iterator]();
47
+ let current: BreakingToken | NonbreakingToken | undefined;
48
+ let pos = 0;
49
+ return {
50
+ [Symbol.iterator]() {
51
+ return iterator;
52
+ },
53
+
54
+ get done() {
55
+ return done;
56
+ },
57
+
58
+ next() {
59
+ const next = iterator.next();
60
+ if (next.done) {
61
+ done = true;
62
+ }
63
+ return next;
64
+ },
65
+
66
+ take(width: number) {
67
+ let widthSoFar = 0;
68
+ const result = Array<Token>();
69
+ while (true) {
70
+ if (current !== undefined) {
71
+ const splitStart = pos;
72
+ let splitWidth = 0;
73
+ for (let i = splitStart; i < current.str.length; i++) {
74
+ const charCode = current.str.charCodeAt(0);
75
+
76
+ // Zero-width characters
77
+ switch (charCode) {
78
+ case 0x200b:
79
+ case 0x200c:
80
+ case 0x200d:
81
+ case 0x2060:
82
+ case 0xfeff:
83
+ continue;
84
+ }
85
+
86
+ // If we've hit the target width, split the current token if any portion of it fits and
87
+ // we are done
88
+ if (widthSoFar === width) {
89
+ pos = i;
90
+ if (splitStart !== pos) {
91
+ result.push({
92
+ kind: current.kind,
93
+ str: current.str.slice(splitStart, pos),
94
+ width: splitWidth,
95
+ });
96
+ }
97
+ return result;
98
+ }
99
+
100
+ // Increase width
101
+ widthSoFar++;
102
+ splitWidth++;
103
+
104
+ // Skip properly formed surrogate pair
105
+ if (charCode >= 0xd800 && charCode < 0xdc00) {
106
+ const charCode2 = current.str.charCodeAt(i + 1);
107
+ if (charCode2 !== undefined && charCode2 >= 0xdc00 && charCode2 < 0xe000) {
108
+ i++;
109
+ }
110
+ }
111
+ }
112
+
113
+ // The remainder of the current token fits so we are done with it
114
+ if (splitStart === 0) {
115
+ // Entire token
116
+ result.push(current);
117
+ } else {
118
+ // Tailing portion of token
119
+ result.push({
120
+ kind: current.kind,
121
+ str: current.str.slice(splitStart),
122
+ width: splitWidth,
123
+ });
124
+ }
125
+
126
+ current = undefined;
127
+ }
128
+
129
+ // Process next token
130
+ const n = this.next();
131
+ if (n.done) {
132
+ return result;
133
+ }
134
+
135
+ // Control sequences do not contribute space
136
+ if (n.value.kind !== "breaking" && n.value.kind !== "nonbreaking") {
137
+ result.push(n.value);
138
+ continue;
139
+ }
140
+
141
+ // Space and visible tokens require code unit scan
142
+ current = n.value;
143
+ }
144
+ },
145
+ };
146
+ }
147
+
148
+ toString() {
149
+ return this.tokens
150
+ .map(token => {
151
+ switch (token.kind) {
152
+ case "style":
153
+ return token.style.toString();
154
+
155
+ case "ansi":
156
+ return token.sequence;
157
+
158
+ case "breaking":
159
+ case "nonbreaking":
160
+ return token.str;
161
+
162
+ case "tab":
163
+ return "\t";
164
+
165
+ case "carriage-return":
166
+ return "\r";
167
+
168
+ case "newline":
169
+ return "\n";
170
+ }
171
+ })
172
+ .join("");
173
+ }
174
+ }
175
+
176
+ export namespace ContiguousOutputSegment {
177
+ export interface Scanner extends IterableIterator<Token> {
178
+ done: boolean;
179
+ take(width: number): Token[];
180
+ }
181
+ }
@@ -0,0 +1,14 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2022-2024 Matter.js Authors
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+
7
+ // Note -- don't put ./std.js here because it's not cross platform
8
+
9
+ export * from "./printer.js";
10
+ export * from "./screen.js";
11
+ export * from "./style.js";
12
+ export * from "./text-builder.js";
13
+ export * from "./text-writer.js";
14
+ export * from "./wrapper.js";