vitest 0.3.2 → 0.3.3

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.
package/dist/worker.js CHANGED
@@ -1,16 +1,17 @@
1
- import { q as isWindows, u as mergeSlashes, f as dirname, g as basename, r as resolve } from './index-f55e7b59.js';
2
- import { i as isNodeBuiltin, t as toFilePath, V as ViteNodeRunner, c as createBirpc } from './client-ab3f363e.js';
3
- import { d as distDir } from './constants-8fcbf9b6.js';
1
+ import { d as dirname, b as basename, r as resolve } from './index-373b5ce3.js';
2
+ import { i as isNodeBuiltin, t as toFilePath, V as ViteNodeRunner, c as createBirpc } from './client-a8f3cc13.js';
3
+ import { d as distDir } from './constants-861ea902.js';
4
4
  import { existsSync, readdirSync } from 'fs';
5
+ import { l as isWindows, m as mergeSlashes } from './index-61b7ead7.js';
5
6
  import { r as rpc } from './rpc-8c7cc374.js';
6
7
  import 'path';
7
- import 'tty';
8
- import 'local-pkg';
9
8
  import 'module';
10
9
  import 'url';
11
10
  import 'assert';
12
11
  import 'util';
13
12
  import 'vm';
13
+ import 'tty';
14
+ import 'local-pkg';
14
15
 
15
16
  function normalizeId(id, base) {
16
17
  if (base && id.startsWith(base))
@@ -333,4 +334,4 @@ async function run(ctx) {
333
334
  }
334
335
 
335
336
  export { collect, run };
336
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2VyLmpzIiwic291cmNlcyI6WyIuLi9zcmMvdXRpbHMvcGF0aC50cyIsIi4uL3NyYy9ub2RlL21vY2tlci50cyIsIi4uL3NyYy9ub2RlL2V4ZWN1dGUudHMiLCIuLi9zcmMvcnVudGltZS93b3JrZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGZ1bmN0aW9uIG5vcm1hbGl6ZUlkKGlkOiBzdHJpbmcsIGJhc2U/OiBzdHJpbmcpOiBzdHJpbmcge1xuICBpZiAoYmFzZSAmJiBpZC5zdGFydHNXaXRoKGJhc2UpKVxuICAgIGlkID0gYC8ke2lkLnNsaWNlKGJhc2UubGVuZ3RoKX1gXG5cbiAgcmV0dXJuIGlkXG4gICAgLnJlcGxhY2UoL15cXC9AaWRcXC9fX3gwMF9fLywgJ1xcMCcpIC8vIHZpcnR1YWwgbW9kdWxlcyBzdGFydCB3aXRoIGBcXDBgXG4gICAgLnJlcGxhY2UoL15cXC9AaWRcXC8vLCAnJylcbiAgICAucmVwbGFjZSgvXl9fdml0ZS1icm93c2VyLWV4dGVybmFsOi8sICcnKVxuICAgIC5yZXBsYWNlKC9ebm9kZTovLCAnJylcbiAgICAucmVwbGFjZSgvWz8mXXY9XFx3Ky8sICc/JykgLy8gcmVtb3ZlID92PSBxdWVyeVxuICAgIC5yZXBsYWNlKC9cXD8kLywgJycpIC8vIHJlbW92ZSBlbmQgcXVlcnkgbWFya1xufVxuIiwiaW1wb3J0IHsgZXhpc3RzU3luYywgcmVhZGRpclN5bmMgfSBmcm9tICdmcydcbmltcG9ydCB7IGlzTm9kZUJ1aWx0aW4gfSBmcm9tICdtbGx5J1xuaW1wb3J0IHsgYmFzZW5hbWUsIGRpcm5hbWUsIHJlc29sdmUgfSBmcm9tICdwYXRoZSdcbmltcG9ydCB0eXBlIHsgTW9kdWxlQ2FjaGUgfSBmcm9tICd2aXRlLW5vZGUnXG5pbXBvcnQgeyB0b0ZpbGVQYXRoIH0gZnJvbSAndml0ZS1ub2RlL3V0aWxzJ1xuaW1wb3J0IHsgaXNXaW5kb3dzLCBtZXJnZVNsYXNoZXMsIG5vcm1hbGl6ZUlkIH0gZnJvbSAnLi4vdXRpbHMnXG5pbXBvcnQgeyBkaXN0RGlyIH0gZnJvbSAnLi4vY29uc3RhbnRzJ1xuaW1wb3J0IHR5cGUgeyBFeGVjdXRlT3B0aW9ucyB9IGZyb20gJy4vZXhlY3V0ZSdcblxuZXhwb3J0IHR5cGUgU3VpdGVNb2NrcyA9IFJlY29yZDxzdHJpbmcsIFJlY29yZDxzdHJpbmcsIHN0cmluZyB8IG51bGwgfCAoKCkgPT4gdW5rbm93bik+PlxuXG50eXBlIENhbGxiYWNrID0gKC4uLmFyZ3M6IGFueVtdKSA9PiB1bmtub3duXG5cbmludGVyZmFjZSBQZW5kaW5nU3VpdGVNb2NrIHtcbiAgaWQ6IHN0cmluZ1xuICBpbXBvcnRlcjogc3RyaW5nXG4gIHR5cGU6ICdtb2NrJyB8ICd1bm1vY2snXG4gIGZhY3Rvcnk/OiAoKSA9PiB1bmtub3duXG59XG5cbmZ1bmN0aW9uIGdldE9iamVjdFR5cGUodmFsdWU6IHVua25vd24pOiBzdHJpbmcge1xuICByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5hcHBseSh2YWx1ZSkuc2xpY2UoOCwgLTEpXG59XG5cbmZ1bmN0aW9uIG1vY2tQcm90b3R5cGUoc3B5T246IHR5cGVvZiBpbXBvcnQoJy4uL2ludGVncmF0aW9ucy9qZXN0LW1vY2snKVsnc3B5T24nXSwgcHJvdG86IGFueSkge1xuICBpZiAoIXByb3RvKSByZXR1cm4gbnVsbFxuXG4gIGNvbnN0IG5ld1Byb3RvOiBhbnkgPSB7fVxuXG4gIGNvbnN0IHByb3RvRGVzY3IgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhwcm90bylcblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcmVzdHJpY3RlZC1zeW50YXhcbiAgZm9yIChjb25zdCBkIGluIHByb3RvRGVzY3IpIHtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkobmV3UHJvdG8sIGQsIHByb3RvRGVzY3JbZF0pXG5cbiAgICBpZiAodHlwZW9mIHByb3RvRGVzY3JbZF0udmFsdWUgPT09ICdmdW5jdGlvbicpXG4gICAgICBzcHlPbihuZXdQcm90bywgZCkubW9ja0ltcGxlbWVudGF0aW9uKCgpID0+IHt9KVxuICB9XG5cbiAgcmV0dXJuIG5ld1Byb3RvXG59XG5cbmNvbnN0IHBlbmRpbmdJZHM6IFBlbmRpbmdTdWl0ZU1vY2tbXSA9IFtdXG5cbmV4cG9ydCBjbGFzcyBWaXRlc3RNb2NrZXIge1xuICBwcml2YXRlIHJlcXVlc3QhOiAoZGVwOiBzdHJpbmcpID0+IHVua25vd25cblxuICBwcml2YXRlIHJvb3Q6IHN0cmluZ1xuXG4gIHByaXZhdGUgY2FsbGJhY2tzOiBSZWNvcmQ8c3RyaW5nLCAoKC4uLmFyZ3M6IGFueVtdKSA9PiB1bmtub3duKVtdPiA9IHt9XG4gIHByaXZhdGUgc3B5PzogdHlwZW9mIGltcG9ydCgnLi4vaW50ZWdyYXRpb25zL2plc3QtbW9jaycpXG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIG9wdGlvbnM6IEV4ZWN1dGVPcHRpb25zLFxuICAgIHByaXZhdGUgbW9kdWxlQ2FjaGU6IE1hcDxzdHJpbmcsIE1vZHVsZUNhY2hlPixcbiAgICByZXF1ZXN0PzogKGRlcDogc3RyaW5nKSA9PiB1bmtub3duLFxuICApIHtcbiAgICB0aGlzLnJvb3QgPSB0aGlzLm9wdGlvbnMucm9vdFxuICAgIHRoaXMucmVxdWVzdCA9IHJlcXVlc3QhXG4gIH1cblxuICBnZXQgbW9ja01hcCgpIHtcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLm1vY2tNYXBcbiAgfVxuXG4gIHB1YmxpYyBvbihldmVudDogc3RyaW5nLCBjYjogQ2FsbGJhY2spIHtcbiAgICB0aGlzLmNhbGxiYWNrc1tldmVudF0gPz89IFtdXG4gICAgdGhpcy5jYWxsYmFja3NbZXZlbnRdLnB1c2goY2IpXG4gIH1cblxuICBwcml2YXRlIGVtaXQoZXZlbnQ6IHN0cmluZywgLi4uYXJnczogYW55W10pIHtcbiAgICAodGhpcy5jYWxsYmFja3NbZXZlbnRdID8/IFtdKS5mb3JFYWNoKGZuID0+IGZuKC4uLmFyZ3MpKVxuICB9XG5cbiAgcHVibGljIGdldFN1aXRlRmlsZXBhdGgoKSB7XG4gICAgcmV0dXJuIHByb2Nlc3MuX192aXRlc3Rfd29ya2VyX18/LmZpbGVwYXRoIHx8ICdnbG9iYWwnXG4gIH1cblxuICBwdWJsaWMgZ2V0TW9ja3MoKSB7XG4gICAgY29uc3Qgc3VpdGUgPSB0aGlzLmdldFN1aXRlRmlsZXBhdGgoKVxuICAgIGNvbnN0IHN1aXRlTW9ja3MgPSB0aGlzLm1vY2tNYXBbc3VpdGUgfHwgJyddXG4gICAgY29uc3QgZ2xvYmFsTW9ja3MgPSB0aGlzLm1vY2tNYXAuZ2xvYmFsXG5cbiAgICByZXR1cm4ge1xuICAgICAgLi4uc3VpdGVNb2NrcyxcbiAgICAgIC4uLmdsb2JhbE1vY2tzLFxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgcmVzb2x2ZVBhdGgoaWQ6IHN0cmluZywgaW1wb3J0ZXI6IHN0cmluZykge1xuICAgIGNvbnN0IHBhdGggPSBhd2FpdCB0aGlzLm9wdGlvbnMucmVzb2x2ZUlkKGlkLCBpbXBvcnRlcilcbiAgICByZXR1cm4ge1xuICAgICAgcGF0aDogbm9ybWFsaXplSWQocGF0aD8uaWQgfHwgaWQpLFxuICAgICAgZXh0ZXJuYWw6IHBhdGg/LmlkLmluY2x1ZGVzKCcvbm9kZV9tb2R1bGVzLycpID8gaWQgOiBudWxsLFxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgcmVzb2x2ZU1vY2tzKCkge1xuICAgIGF3YWl0IFByb21pc2UuYWxsKHBlbmRpbmdJZHMubWFwKGFzeW5jKG1vY2spID0+IHtcbiAgICAgIGNvbnN0IHsgcGF0aCwgZXh0ZXJuYWwgfSA9IGF3YWl0IHRoaXMucmVzb2x2ZVBhdGgobW9jay5pZCwgbW9jay5pbXBvcnRlcilcbiAgICAgIGlmIChtb2NrLnR5cGUgPT09ICd1bm1vY2snKVxuICAgICAgICB0aGlzLnVubW9ja1BhdGgocGF0aClcbiAgICAgIGlmIChtb2NrLnR5cGUgPT09ICdtb2NrJylcbiAgICAgICAgdGhpcy5tb2NrUGF0aChwYXRoLCBleHRlcm5hbCwgbW9jay5mYWN0b3J5KVxuICAgIH0pKVxuXG4gICAgcGVuZGluZ0lkcy5sZW5ndGggPSAwXG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGNhbGxGdW5jdGlvbk1vY2soZGVwOiBzdHJpbmcsIG1vY2s6ICgpID0+IGFueSkge1xuICAgIGNvbnN0IGNhY2hlTmFtZSA9IGAke2RlcH1fX21vY2tgXG4gICAgY29uc3QgY2FjaGVkID0gdGhpcy5tb2R1bGVDYWNoZS5nZXQoY2FjaGVOYW1lKT8uZXhwb3J0c1xuICAgIGlmIChjYWNoZWQpXG4gICAgICByZXR1cm4gY2FjaGVkXG4gICAgY29uc3QgZXhwb3J0cyA9IGF3YWl0IG1vY2soKVxuICAgIHRoaXMuZW1pdCgnbW9ja2VkJywgY2FjaGVOYW1lLCB7IGV4cG9ydHMgfSlcbiAgICByZXR1cm4gZXhwb3J0c1xuICB9XG5cbiAgcHVibGljIGdldERlcGVuZGVuY3lNb2NrKGRlcDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0TW9ja3MoKVt0aGlzLnJlc29sdmVEZXBlbmRlbmN5KGRlcCldXG4gIH1cblxuICBwdWJsaWMgcmVzb2x2ZURlcGVuZGVuY3koZGVwOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gbm9ybWFsaXplSWQoZGVwKS5yZXBsYWNlKC9eXFwvQGZzXFwvLywgaXNXaW5kb3dzID8gJycgOiAnLycpXG4gIH1cblxuICBwdWJsaWMgbm9ybWFsaXplUGF0aChwYXRoOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gbm9ybWFsaXplSWQocGF0aC5yZXBsYWNlKHRoaXMucm9vdCwgJycpKS5yZXBsYWNlKC9eXFwvQGZzXFwvLywgaXNXaW5kb3dzID8gJycgOiAnLycpXG4gIH1cblxuICBwdWJsaWMgZ2V0RnNQYXRoKHBhdGg6IHN0cmluZywgZXh0ZXJuYWw6IHN0cmluZyB8IG51bGwpIHtcbiAgICBpZiAoZXh0ZXJuYWwpXG4gICAgICByZXR1cm4gbWVyZ2VTbGFzaGVzKGAvQGZzLyR7cGF0aH1gKVxuXG4gICAgcmV0dXJuIG5vcm1hbGl6ZUlkKHBhdGgucmVwbGFjZSh0aGlzLnJvb3QsICcnKSlcbiAgfVxuXG4gIHB1YmxpYyByZXNvbHZlTW9ja1BhdGgobW9ja1BhdGg6IHN0cmluZywgZXh0ZXJuYWw6IHN0cmluZyB8IG51bGwpIHtcbiAgICBjb25zdCBwYXRoID0gbm9ybWFsaXplSWQoZXh0ZXJuYWwgfHwgbW9ja1BhdGgpXG5cbiAgICAvLyBpdCdzIGEgbm9kZV9tb2R1bGUgYWxpYXNcbiAgICAvLyBhbGwgbW9ja3Mgc2hvdWxkIGJlIGluc2lkZSA8cm9vdD4vX19tb2Nrc19fXG4gICAgaWYgKGV4dGVybmFsIHx8IGlzTm9kZUJ1aWx0aW4obW9ja1BhdGgpKSB7XG4gICAgICBjb25zdCBtb2NrRGlybmFtZSA9IGRpcm5hbWUocGF0aCkgLy8gZm9yIG5lc3RlZCBtb2NrczogQHZ1ZXVzZS9pbnRlZ3JhdGlvbi91c2VKd3RcbiAgICAgIGNvbnN0IGJhc2VGaWxlbmFtZSA9IGJhc2VuYW1lKHBhdGgpXG4gICAgICBjb25zdCBtb2NrRm9sZGVyID0gcmVzb2x2ZSh0aGlzLnJvb3QsICdfX21vY2tzX18nLCBtb2NrRGlybmFtZSlcblxuICAgICAgaWYgKCFleGlzdHNTeW5jKG1vY2tGb2xkZXIpKSByZXR1cm4gbnVsbFxuXG4gICAgICBjb25zdCBmaWxlcyA9IHJlYWRkaXJTeW5jKG1vY2tGb2xkZXIpXG5cbiAgICAgIGZvciAoY29uc3QgZmlsZSBvZiBmaWxlcykge1xuICAgICAgICBjb25zdCBbYmFzZW5hbWVdID0gZmlsZS5zcGxpdCgnLicpXG4gICAgICAgIGlmIChiYXNlbmFtZSA9PT0gYmFzZUZpbGVuYW1lKVxuICAgICAgICAgIHJldHVybiByZXNvbHZlKG1vY2tGb2xkZXIsIGZpbGUpLnJlcGxhY2UodGhpcy5yb290LCAnJylcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIG51bGxcbiAgICB9XG5cbiAgICBjb25zdCBkaXIgPSBkaXJuYW1lKHBhdGgpXG4gICAgY29uc3QgYmFzZUlkID0gYmFzZW5hbWUocGF0aClcbiAgICBjb25zdCBmdWxsUGF0aCA9IHJlc29sdmUoZGlyLCAnX19tb2Nrc19fJywgYmFzZUlkKVxuICAgIHJldHVybiBleGlzdHNTeW5jKGZ1bGxQYXRoKSA/IGZ1bGxQYXRoLnJlcGxhY2UodGhpcy5yb290LCAnJykgOiBudWxsXG4gIH1cblxuICBwdWJsaWMgbW9ja09iamVjdChvYmo6IGFueSkge1xuICAgIGlmICghdGhpcy5zcHkpXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludGVybmFsIFZpdGVzdCBlcnJvcjogU3B5IGZ1bmN0aW9uIGlzIG5vdCBkZWZpbmVkLicpXG5cbiAgICBjb25zdCB0eXBlID0gZ2V0T2JqZWN0VHlwZShvYmopXG5cbiAgICBpZiAoQXJyYXkuaXNBcnJheShvYmopKVxuICAgICAgcmV0dXJuIFtdXG4gICAgZWxzZSBpZiAodHlwZSAhPT0gJ09iamVjdCcgJiYgdHlwZSAhPT0gJ01vZHVsZScpXG4gICAgICByZXR1cm4gb2JqXG5cbiAgICBjb25zdCBuZXdPYmogPSB7IC4uLm9iaiB9XG5cbiAgICBjb25zdCBwcm90byA9IG1vY2tQcm90b3R5cGUodGhpcy5zcHkuc3B5T24sIE9iamVjdC5nZXRQcm90b3R5cGVPZihvYmopKVxuICAgIE9iamVjdC5zZXRQcm90b3R5cGVPZihuZXdPYmosIHByb3RvKVxuXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXJlc3RyaWN0ZWQtc3ludGF4XG4gICAgZm9yIChjb25zdCBrIGluIG9iaikge1xuICAgICAgbmV3T2JqW2tdID0gdGhpcy5tb2NrT2JqZWN0KG9ialtrXSlcbiAgICAgIGNvbnN0IHR5cGUgPSBnZXRPYmplY3RUeXBlKG9ialtrXSlcblxuICAgICAgaWYgKHR5cGUuaW5jbHVkZXMoJ0Z1bmN0aW9uJykgJiYgIW9ialtrXS5fX2lzU3B5KSB7XG4gICAgICAgIHRoaXMuc3B5LnNweU9uKG5ld09iaiwgaykubW9ja0ltcGxlbWVudGF0aW9uKCgpID0+IHt9KVxuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkobmV3T2JqW2tdLCAnbGVuZ3RoJywgeyB2YWx1ZTogMCB9KSAvLyB0aW55c3B5IHJldGFpbnMgbGVuZ3RoLCBidXQgamVzdCBkb2VzbnRcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG5ld09ialxuICB9XG5cbiAgcHVibGljIHVubW9ja1BhdGgocGF0aDogc3RyaW5nKSB7XG4gICAgY29uc3Qgc3VpdGVmaWxlID0gdGhpcy5nZXRTdWl0ZUZpbGVwYXRoKClcblxuICAgIGNvbnN0IGZzUGF0aCA9IHRoaXMubm9ybWFsaXplUGF0aChwYXRoKVxuXG4gICAgaWYgKHRoaXMubW9ja01hcFtzdWl0ZWZpbGVdPy5bZnNQYXRoXSlcbiAgICAgIGRlbGV0ZSB0aGlzLm1vY2tNYXBbc3VpdGVmaWxlXVtmc1BhdGhdXG4gIH1cblxuICBwdWJsaWMgbW9ja1BhdGgocGF0aDogc3RyaW5nLCBleHRlcm5hbDogc3RyaW5nIHwgbnVsbCwgZmFjdG9yeT86ICgpID0+IGFueSkge1xuICAgIGNvbnN0IHN1aXRlZmlsZSA9IHRoaXMuZ2V0U3VpdGVGaWxlcGF0aCgpXG5cbiAgICBjb25zdCBmc1BhdGggPSB0aGlzLm5vcm1hbGl6ZVBhdGgocGF0aClcblxuICAgIHRoaXMubW9ja01hcFtzdWl0ZWZpbGVdID8/PSB7fVxuICAgIHRoaXMubW9ja01hcFtzdWl0ZWZpbGVdW2ZzUGF0aF0gPSBmYWN0b3J5IHx8IHRoaXMucmVzb2x2ZU1vY2tQYXRoKHBhdGgsIGV4dGVybmFsKVxuICB9XG5cbiAgcHVibGljIGFzeW5jIGltcG9ydEFjdHVhbDxUPihpZDogc3RyaW5nLCBpbXBvcnRlcjogc3RyaW5nKTogUHJvbWlzZTxUPiB7XG4gICAgY29uc3QgeyBwYXRoLCBleHRlcm5hbCB9ID0gYXdhaXQgdGhpcy5yZXNvbHZlUGF0aChpZCwgaW1wb3J0ZXIpXG4gICAgY29uc3QgZnNQYXRoID0gdGhpcy5nZXRGc1BhdGgocGF0aCwgZXh0ZXJuYWwpXG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdGhpcy5yZXF1ZXN0KGZzUGF0aClcbiAgICByZXR1cm4gcmVzdWx0IGFzIFRcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBpbXBvcnRNb2NrKGlkOiBzdHJpbmcsIGltcG9ydGVyOiBzdHJpbmcpOiBQcm9taXNlPGFueT4ge1xuICAgIGNvbnN0IHsgcGF0aCwgZXh0ZXJuYWwgfSA9IGF3YWl0IHRoaXMucmVzb2x2ZVBhdGgoaWQsIGltcG9ydGVyKVxuXG4gICAgbGV0IG1vY2sgPSB0aGlzLmdldERlcGVuZGVuY3lNb2NrKHBhdGgpXG5cbiAgICBpZiAobW9jayA9PT0gdW5kZWZpbmVkKVxuICAgICAgbW9jayA9IHRoaXMucmVzb2x2ZU1vY2tQYXRoKHBhdGgsIGV4dGVybmFsKVxuXG4gICAgaWYgKG1vY2sgPT09IG51bGwpIHtcbiAgICAgIGF3YWl0IHRoaXMuZW5zdXJlU3B5KClcbiAgICAgIGNvbnN0IGZzUGF0aCA9IHRoaXMuZ2V0RnNQYXRoKHBhdGgsIGV4dGVybmFsKVxuICAgICAgY29uc3QgbW9kID0gYXdhaXQgdGhpcy5yZXF1ZXN0KGZzUGF0aClcbiAgICAgIHJldHVybiB0aGlzLm1vY2tPYmplY3QobW9kKVxuICAgIH1cbiAgICBpZiAodHlwZW9mIG1vY2sgPT09ICdmdW5jdGlvbicpXG4gICAgICByZXR1cm4gdGhpcy5jYWxsRnVuY3Rpb25Nb2NrKHBhdGgsIG1vY2spXG4gICAgcmV0dXJuIHRoaXMucmVxdWVzdFdpdGhNb2NrKG1vY2spXG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGVuc3VyZVNweSgpIHtcbiAgICBpZiAodGhpcy5zcHkpIHJldHVyblxuICAgIHRoaXMuc3B5ID0gYXdhaXQgdGhpcy5yZXF1ZXN0KHJlc29sdmUoZGlzdERpciwgJ2plc3QtbW9jay5qcycpKSBhcyB0eXBlb2YgaW1wb3J0KCcuLi9pbnRlZ3JhdGlvbnMvamVzdC1tb2NrJylcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyByZXF1ZXN0V2l0aE1vY2soZGVwOiBzdHJpbmcpIHtcbiAgICBhd2FpdCB0aGlzLmVuc3VyZVNweSgpXG4gICAgYXdhaXQgdGhpcy5yZXNvbHZlTW9ja3MoKVxuXG4gICAgY29uc3QgbW9jayA9IHRoaXMuZ2V0RGVwZW5kZW5jeU1vY2soZGVwKVxuXG4gICAgaWYgKG1vY2sgPT09IG51bGwpIHtcbiAgICAgIGNvbnN0IGNhY2hlTmFtZSA9IGAke2RlcH1fX21vY2tgXG4gICAgICBjb25zdCBjYWNoZSA9IHRoaXMubW9kdWxlQ2FjaGUuZ2V0KGNhY2hlTmFtZSlcbiAgICAgIGlmIChjYWNoZT8uZXhwb3J0cylcbiAgICAgICAgcmV0dXJuIGNhY2hlLmV4cG9ydHNcbiAgICAgIGNvbnN0IGNhY2hlS2V5ID0gdG9GaWxlUGF0aChkZXAsIHRoaXMucm9vdClcbiAgICAgIGNvbnN0IG1vZCA9IHRoaXMubW9kdWxlQ2FjaGUuZ2V0KGNhY2hlS2V5KT8uZXhwb3J0cyB8fCBhd2FpdCB0aGlzLnJlcXVlc3QoZGVwKVxuICAgICAgY29uc3QgZXhwb3J0cyA9IHRoaXMubW9ja09iamVjdChtb2QpXG4gICAgICB0aGlzLmVtaXQoJ21vY2tlZCcsIGNhY2hlTmFtZSwgeyBleHBvcnRzIH0pXG4gICAgICByZXR1cm4gZXhwb3J0c1xuICAgIH1cbiAgICBpZiAodHlwZW9mIG1vY2sgPT09ICdmdW5jdGlvbicpXG4gICAgICByZXR1cm4gdGhpcy5jYWxsRnVuY3Rpb25Nb2NrKGRlcCwgbW9jaylcbiAgICBpZiAodHlwZW9mIG1vY2sgPT09ICdzdHJpbmcnKVxuICAgICAgZGVwID0gbW9ja1xuICAgIHJldHVybiB0aGlzLnJlcXVlc3QoZGVwKVxuICB9XG5cbiAgcHVibGljIHF1ZXVlTW9jayhpZDogc3RyaW5nLCBpbXBvcnRlcjogc3RyaW5nLCBmYWN0b3J5PzogKCkgPT4gdW5rbm93bikge1xuICAgIHBlbmRpbmdJZHMucHVzaCh7IHR5cGU6ICdtb2NrJywgaWQsIGltcG9ydGVyLCBmYWN0b3J5IH0pXG4gIH1cblxuICBwdWJsaWMgcXVldWVVbm1vY2soaWQ6IHN0cmluZywgaW1wb3J0ZXI6IHN0cmluZykge1xuICAgIHBlbmRpbmdJZHMucHVzaCh7IHR5cGU6ICd1bm1vY2snLCBpZCwgaW1wb3J0ZXIgfSlcbiAgfVxuXG4gIHB1YmxpYyB3aXRoUmVxdWVzdChyZXF1ZXN0OiAoZGVwOiBzdHJpbmcpID0+IHVua25vd24pIHtcbiAgICByZXR1cm4gbmV3IFZpdGVzdE1vY2tlcih0aGlzLm9wdGlvbnMsIHRoaXMubW9kdWxlQ2FjaGUsIHJlcXVlc3QpXG4gIH1cbn1cbiIsImltcG9ydCB7IFZpdGVOb2RlUnVubmVyIH0gZnJvbSAndml0ZS1ub2RlL2NsaWVudCdcbmltcG9ydCB0eXBlIHsgTW9kdWxlQ2FjaGUsIFZpdGVOb2RlUmVzb2x2ZUlkLCBWaXRlTm9kZVJ1bm5lck9wdGlvbnMgfSBmcm9tICd2aXRlLW5vZGUnXG5pbXBvcnQgdHlwZSB7IFN1aXRlTW9ja3MgfSBmcm9tICcuL21vY2tlcidcbmltcG9ydCB7IFZpdGVzdE1vY2tlciB9IGZyb20gJy4vbW9ja2VyJ1xuXG5leHBvcnQgdHlwZSBSZXNvbHZlSWRGdW5jdGlvbiA9IChpZDogc3RyaW5nLCBpbXBvcnRlcj86IHN0cmluZykgPT4gUHJvbWlzZTxWaXRlTm9kZVJlc29sdmVJZCB8IG51bGw+XG5cbmV4cG9ydCBpbnRlcmZhY2UgRXhlY3V0ZU9wdGlvbnMgZXh0ZW5kcyBWaXRlTm9kZVJ1bm5lck9wdGlvbnMge1xuICBmaWxlczogc3RyaW5nW11cbiAgbW9ja01hcDogU3VpdGVNb2Nrc1xuICByZXNvbHZlSWQ6IFJlc29sdmVJZEZ1bmN0aW9uXG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBleGVjdXRlSW5WaXRlTm9kZShvcHRpb25zOiBFeGVjdXRlT3B0aW9ucykge1xuICBjb25zdCBydW5uZXIgPSBuZXcgVml0ZXN0UnVubmVyKG9wdGlvbnMpXG5cbiAgY29uc3QgcmVzdWx0OiBhbnlbXSA9IFtdXG4gIGZvciAoY29uc3QgZmlsZSBvZiBvcHRpb25zLmZpbGVzKVxuICAgIHJlc3VsdC5wdXNoKGF3YWl0IHJ1bm5lci5leGVjdXRlRmlsZShmaWxlKSlcblxuICByZXR1cm4gcmVzdWx0XG59XG5cbmV4cG9ydCBjbGFzcyBWaXRlc3RSdW5uZXIgZXh0ZW5kcyBWaXRlTm9kZVJ1bm5lciB7XG4gIG1vY2tlcjogVml0ZXN0TW9ja2VyXG5cbiAgY29uc3RydWN0b3IocHVibGljIG9wdGlvbnM6IEV4ZWN1dGVPcHRpb25zKSB7XG4gICAgc3VwZXIob3B0aW9ucylcbiAgICB0aGlzLm1vY2tlciA9IG5ldyBWaXRlc3RNb2NrZXIob3B0aW9ucywgdGhpcy5tb2R1bGVDYWNoZSlcbiAgfVxuXG4gIHByZXBhcmVDb250ZXh0KGNvbnRleHQ6IFJlY29yZDxzdHJpbmcsIGFueT4pIHtcbiAgICBjb25zdCByZXF1ZXN0ID0gY29udGV4dC5fX3ZpdGVfc3NyX2ltcG9ydF9fXG5cbiAgICBjb25zdCBtb2NrZXIgPSB0aGlzLm1vY2tlci53aXRoUmVxdWVzdChyZXF1ZXN0KVxuXG4gICAgbW9ja2VyLm9uKCdtb2NrZWQnLCAoZGVwOiBzdHJpbmcsIG1vZHVsZTogUGFydGlhbDxNb2R1bGVDYWNoZT4pID0+IHtcbiAgICAgIHRoaXMuc2V0Q2FjaGUoZGVwLCBtb2R1bGUpXG4gICAgfSlcblxuICAgIHJldHVybiBPYmplY3QuYXNzaWduKGNvbnRleHQsIHtcbiAgICAgIF9fdml0ZV9zc3JfaW1wb3J0X186IChkZXA6IHN0cmluZykgPT4gbW9ja2VyLnJlcXVlc3RXaXRoTW9jayhkZXApLFxuICAgICAgX192aXRlX3Nzcl9keW5hbWljX2ltcG9ydF9fOiAoZGVwOiBzdHJpbmcpID0+IG1vY2tlci5yZXF1ZXN0V2l0aE1vY2soZGVwKSxcblxuICAgICAgX192aXRlc3RfbW9ja2VyX186IG1vY2tlcixcbiAgICB9KVxuICB9XG59XG4iLCJpbXBvcnQgeyByZXNvbHZlIH0gZnJvbSAncGF0aGUnXG5pbXBvcnQgdHlwZSB7IEJpcnBjUmV0dXJuIH0gZnJvbSAnYmlycGMnXG5pbXBvcnQgeyBjcmVhdGVCaXJwYyB9IGZyb20gJ2JpcnBjJ1xuaW1wb3J0IHR5cGUgeyBNb2R1bGVDYWNoZSwgUmVzb2x2ZWRDb25maWcsIFRlc3QsIFdvcmtlckNvbnRleHQsIFdvcmtlclJQQyB9IGZyb20gJy4uL3R5cGVzJ1xuaW1wb3J0IHsgZGlzdERpciB9IGZyb20gJy4uL2NvbnN0YW50cydcbmltcG9ydCB7IGV4ZWN1dGVJblZpdGVOb2RlIH0gZnJvbSAnLi4vbm9kZS9leGVjdXRlJ1xuaW1wb3J0IHsgcnBjIH0gZnJvbSAnLi9ycGMnXG5cbmxldCBfdml0ZU5vZGU6IHtcbiAgcnVuOiAoZmlsZXM6IHN0cmluZ1tdLCBjb25maWc6IFJlc29sdmVkQ29uZmlnKSA9PiBQcm9taXNlPHZvaWQ+XG4gIGNvbGxlY3Q6IChmaWxlczogc3RyaW5nW10sIGNvbmZpZzogUmVzb2x2ZWRDb25maWcpID0+IFByb21pc2U8dm9pZD5cbn1cbmNvbnN0IG1vZHVsZUNhY2hlOiBNYXA8c3RyaW5nLCBNb2R1bGVDYWNoZT4gPSBuZXcgTWFwKClcbmNvbnN0IG1vY2tNYXAgPSB7fVxuXG5hc3luYyBmdW5jdGlvbiBzdGFydFZpdGVOb2RlKGN0eDogV29ya2VyQ29udGV4dCkge1xuICBpZiAoX3ZpdGVOb2RlKVxuICAgIHJldHVybiBfdml0ZU5vZGVcblxuICBjb25zdCBwcm9jZXNzRXhpdCA9IHByb2Nlc3MuZXhpdFxuXG4gIHByb2Nlc3Mub24oJ2JlZm9yZUV4aXQnLCAoY29kZSkgPT4ge1xuICAgIHJwYygpLm9uV29ya2VyRXhpdChjb2RlKVxuICB9KVxuXG4gIHByb2Nlc3MuZXhpdCA9IChjb2RlID0gcHJvY2Vzcy5leGl0Q29kZSB8fCAwKTogbmV2ZXIgPT4ge1xuICAgIHJwYygpLm9uV29ya2VyRXhpdChjb2RlKVxuICAgIHJldHVybiBwcm9jZXNzRXhpdChjb2RlKVxuICB9XG5cbiAgY29uc3QgeyBjb25maWcgfSA9IGN0eFxuXG4gIGNvbnN0IHsgcnVuLCBjb2xsZWN0IH0gPSAoYXdhaXQgZXhlY3V0ZUluVml0ZU5vZGUoe1xuICAgIGZpbGVzOiBbXG4gICAgICByZXNvbHZlKGRpc3REaXIsICdlbnRyeS5qcycpLFxuICAgIF0sXG4gICAgZmV0Y2hNb2R1bGUoaWQpIHtcbiAgICAgIHJldHVybiBycGMoKS5mZXRjaChpZClcbiAgICB9LFxuICAgIHJlc29sdmVJZChpZCwgaW1wb3J0ZXIpIHtcbiAgICAgIHJldHVybiBycGMoKS5yZXNvbHZlSWQoaWQsIGltcG9ydGVyKVxuICAgIH0sXG4gICAgbW9kdWxlQ2FjaGUsXG4gICAgbW9ja01hcCxcbiAgICBpbnRlcm9wRGVmYXVsdDogY29uZmlnLmRlcHMuaW50ZXJvcERlZmF1bHQgPz8gdHJ1ZSxcbiAgICByb290OiBjb25maWcucm9vdCxcbiAgICBiYXNlOiBjb25maWcuYmFzZSxcbiAgfSkpWzBdXG5cbiAgX3ZpdGVOb2RlID0geyBydW4sIGNvbGxlY3QgfVxuXG4gIHJldHVybiBfdml0ZU5vZGVcbn1cblxuZnVuY3Rpb24gaW5pdChjdHg6IFdvcmtlckNvbnRleHQpIHtcbiAgaWYgKHByb2Nlc3MuX192aXRlc3Rfd29ya2VyX18gJiYgY3R4LmNvbmZpZy50aHJlYWRzICYmIGN0eC5jb25maWcuaXNvbGF0ZSlcbiAgICB0aHJvdyBuZXcgRXJyb3IoYHdvcmtlciBmb3IgJHtjdHguZmlsZXMuam9pbignLCcpfSBhbHJlYWR5IGluaXRpYWxpemVkIGJ5ICR7cHJvY2Vzcy5fX3ZpdGVzdF93b3JrZXJfXy5jdHguZmlsZXMuam9pbignLCcpfS4gVGhpcyBpcyBwcm9iYWJseSBhbiBpbnRlcm5hbCBidWcgb2YgVml0ZXN0LmApXG5cbiAgcHJvY2Vzcy5zdGRvdXQud3JpdGUoJ1xcMCcpXG5cbiAgY29uc3QgeyBjb25maWcsIHBvcnQgfSA9IGN0eFxuXG4gIHByb2Nlc3MuX192aXRlc3Rfd29ya2VyX18gPSB7XG4gICAgY3R4LFxuICAgIG1vZHVsZUNhY2hlLFxuICAgIGNvbmZpZyxcbiAgICBycGM6IGNyZWF0ZUJpcnBjPFdvcmtlclJQQz4oXG4gICAgICB7fSxcbiAgICAgIHtcbiAgICAgICAgZXZlbnROYW1lczogWydvblVzZXJDb25zb2xlTG9nJywgJ29uRmluaXNoZWQnLCAnb25Db2xsZWN0ZWQnLCAnb25Xb3JrZXJFeGl0J10sXG4gICAgICAgIHBvc3QodikgeyBwb3J0LnBvc3RNZXNzYWdlKHYpIH0sXG4gICAgICAgIG9uKGZuKSB7IHBvcnQuYWRkTGlzdGVuZXIoJ21lc3NhZ2UnLCBmbikgfSxcbiAgICAgIH0sXG4gICAgKSxcbiAgfVxuXG4gIGlmIChjdHguaW52YWxpZGF0ZXMpXG4gICAgY3R4LmludmFsaWRhdGVzLmZvckVhY2goaSA9PiBtb2R1bGVDYWNoZS5kZWxldGUoaSkpXG4gIGN0eC5maWxlcy5mb3JFYWNoKGkgPT4gbW9kdWxlQ2FjaGUuZGVsZXRlKGkpKVxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gY29sbGVjdChjdHg6IFdvcmtlckNvbnRleHQpIHtcbiAgaW5pdChjdHgpXG4gIGNvbnN0IHsgY29sbGVjdCB9ID0gYXdhaXQgc3RhcnRWaXRlTm9kZShjdHgpXG4gIHJldHVybiBjb2xsZWN0KGN0eC5maWxlcywgY3R4LmNvbmZpZylcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJ1bihjdHg6IFdvcmtlckNvbnRleHQpIHtcbiAgaW5pdChjdHgpXG4gIGNvbnN0IHsgcnVuIH0gPSBhd2FpdCBzdGFydFZpdGVOb2RlKGN0eClcbiAgcmV0dXJuIHJ1bihjdHguZmlsZXMsIGN0eC5jb25maWcpXG59XG5cbmRlY2xhcmUgZ2xvYmFsIHtcbiAgbmFtZXNwYWNlIE5vZGVKUyB7XG4gICAgaW50ZXJmYWNlIFByb2Nlc3Mge1xuICAgICAgX192aXRlc3Rfd29ya2VyX186IHtcbiAgICAgICAgY3R4OiBXb3JrZXJDb250ZXh0XG4gICAgICAgIGNvbmZpZzogUmVzb2x2ZWRDb25maWdcbiAgICAgICAgcnBjOiBCaXJwY1JldHVybjxXb3JrZXJSUEM+XG4gICAgICAgIGN1cnJlbnQ/OiBUZXN0XG4gICAgICAgIGZpbGVwYXRoPzogc3RyaW5nXG4gICAgICAgIG1vZHVsZUNhY2hlOiBNYXA8c3RyaW5nLCBNb2R1bGVDYWNoZT5cbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7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
337
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2VyLmpzIiwic291cmNlcyI6WyIuLi9zcmMvdXRpbHMvcGF0aC50cyIsIi4uL3NyYy9ub2RlL21vY2tlci50cyIsIi4uL3NyYy9ub2RlL2V4ZWN1dGUudHMiLCIuLi9zcmMvcnVudGltZS93b3JrZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGZ1bmN0aW9uIG5vcm1hbGl6ZUlkKGlkOiBzdHJpbmcsIGJhc2U/OiBzdHJpbmcpOiBzdHJpbmcge1xuICBpZiAoYmFzZSAmJiBpZC5zdGFydHNXaXRoKGJhc2UpKVxuICAgIGlkID0gYC8ke2lkLnNsaWNlKGJhc2UubGVuZ3RoKX1gXG5cbiAgcmV0dXJuIGlkXG4gICAgLnJlcGxhY2UoL15cXC9AaWRcXC9fX3gwMF9fLywgJ1xcMCcpIC8vIHZpcnR1YWwgbW9kdWxlcyBzdGFydCB3aXRoIGBcXDBgXG4gICAgLnJlcGxhY2UoL15cXC9AaWRcXC8vLCAnJylcbiAgICAucmVwbGFjZSgvXl9fdml0ZS1icm93c2VyLWV4dGVybmFsOi8sICcnKVxuICAgIC5yZXBsYWNlKC9ebm9kZTovLCAnJylcbiAgICAucmVwbGFjZSgvWz8mXXY9XFx3Ky8sICc/JykgLy8gcmVtb3ZlID92PSBxdWVyeVxuICAgIC5yZXBsYWNlKC9cXD8kLywgJycpIC8vIHJlbW92ZSBlbmQgcXVlcnkgbWFya1xufVxuIiwiaW1wb3J0IHsgZXhpc3RzU3luYywgcmVhZGRpclN5bmMgfSBmcm9tICdmcydcbmltcG9ydCB7IGlzTm9kZUJ1aWx0aW4gfSBmcm9tICdtbGx5J1xuaW1wb3J0IHsgYmFzZW5hbWUsIGRpcm5hbWUsIHJlc29sdmUgfSBmcm9tICdwYXRoZSdcbmltcG9ydCB0eXBlIHsgTW9kdWxlQ2FjaGUgfSBmcm9tICd2aXRlLW5vZGUnXG5pbXBvcnQgeyB0b0ZpbGVQYXRoIH0gZnJvbSAndml0ZS1ub2RlL3V0aWxzJ1xuaW1wb3J0IHsgaXNXaW5kb3dzLCBtZXJnZVNsYXNoZXMsIG5vcm1hbGl6ZUlkIH0gZnJvbSAnLi4vdXRpbHMnXG5pbXBvcnQgeyBkaXN0RGlyIH0gZnJvbSAnLi4vY29uc3RhbnRzJ1xuaW1wb3J0IHR5cGUgeyBFeGVjdXRlT3B0aW9ucyB9IGZyb20gJy4vZXhlY3V0ZSdcblxuZXhwb3J0IHR5cGUgU3VpdGVNb2NrcyA9IFJlY29yZDxzdHJpbmcsIFJlY29yZDxzdHJpbmcsIHN0cmluZyB8IG51bGwgfCAoKCkgPT4gdW5rbm93bik+PlxuXG50eXBlIENhbGxiYWNrID0gKC4uLmFyZ3M6IGFueVtdKSA9PiB1bmtub3duXG5cbmludGVyZmFjZSBQZW5kaW5nU3VpdGVNb2NrIHtcbiAgaWQ6IHN0cmluZ1xuICBpbXBvcnRlcjogc3RyaW5nXG4gIHR5cGU6ICdtb2NrJyB8ICd1bm1vY2snXG4gIGZhY3Rvcnk/OiAoKSA9PiB1bmtub3duXG59XG5cbmZ1bmN0aW9uIGdldE9iamVjdFR5cGUodmFsdWU6IHVua25vd24pOiBzdHJpbmcge1xuICByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5hcHBseSh2YWx1ZSkuc2xpY2UoOCwgLTEpXG59XG5cbmZ1bmN0aW9uIG1vY2tQcm90b3R5cGUoc3B5T246IHR5cGVvZiBpbXBvcnQoJy4uL2ludGVncmF0aW9ucy9qZXN0LW1vY2snKVsnc3B5T24nXSwgcHJvdG86IGFueSkge1xuICBpZiAoIXByb3RvKSByZXR1cm4gbnVsbFxuXG4gIGNvbnN0IG5ld1Byb3RvOiBhbnkgPSB7fVxuXG4gIGNvbnN0IHByb3RvRGVzY3IgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhwcm90bylcblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcmVzdHJpY3RlZC1zeW50YXhcbiAgZm9yIChjb25zdCBkIGluIHByb3RvRGVzY3IpIHtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkobmV3UHJvdG8sIGQsIHByb3RvRGVzY3JbZF0pXG5cbiAgICBpZiAodHlwZW9mIHByb3RvRGVzY3JbZF0udmFsdWUgPT09ICdmdW5jdGlvbicpXG4gICAgICBzcHlPbihuZXdQcm90bywgZCkubW9ja0ltcGxlbWVudGF0aW9uKCgpID0+IHt9KVxuICB9XG5cbiAgcmV0dXJuIG5ld1Byb3RvXG59XG5cbmNvbnN0IHBlbmRpbmdJZHM6IFBlbmRpbmdTdWl0ZU1vY2tbXSA9IFtdXG5cbmV4cG9ydCBjbGFzcyBWaXRlc3RNb2NrZXIge1xuICBwcml2YXRlIHJlcXVlc3QhOiAoZGVwOiBzdHJpbmcpID0+IHVua25vd25cblxuICBwcml2YXRlIHJvb3Q6IHN0cmluZ1xuXG4gIHByaXZhdGUgY2FsbGJhY2tzOiBSZWNvcmQ8c3RyaW5nLCAoKC4uLmFyZ3M6IGFueVtdKSA9PiB1bmtub3duKVtdPiA9IHt9XG4gIHByaXZhdGUgc3B5PzogdHlwZW9mIGltcG9ydCgnLi4vaW50ZWdyYXRpb25zL2plc3QtbW9jaycpXG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIG9wdGlvbnM6IEV4ZWN1dGVPcHRpb25zLFxuICAgIHByaXZhdGUgbW9kdWxlQ2FjaGU6IE1hcDxzdHJpbmcsIE1vZHVsZUNhY2hlPixcbiAgICByZXF1ZXN0PzogKGRlcDogc3RyaW5nKSA9PiB1bmtub3duLFxuICApIHtcbiAgICB0aGlzLnJvb3QgPSB0aGlzLm9wdGlvbnMucm9vdFxuICAgIHRoaXMucmVxdWVzdCA9IHJlcXVlc3QhXG4gIH1cblxuICBnZXQgbW9ja01hcCgpIHtcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLm1vY2tNYXBcbiAgfVxuXG4gIHB1YmxpYyBvbihldmVudDogc3RyaW5nLCBjYjogQ2FsbGJhY2spIHtcbiAgICB0aGlzLmNhbGxiYWNrc1tldmVudF0gPz89IFtdXG4gICAgdGhpcy5jYWxsYmFja3NbZXZlbnRdLnB1c2goY2IpXG4gIH1cblxuICBwcml2YXRlIGVtaXQoZXZlbnQ6IHN0cmluZywgLi4uYXJnczogYW55W10pIHtcbiAgICAodGhpcy5jYWxsYmFja3NbZXZlbnRdID8/IFtdKS5mb3JFYWNoKGZuID0+IGZuKC4uLmFyZ3MpKVxuICB9XG5cbiAgcHVibGljIGdldFN1aXRlRmlsZXBhdGgoKSB7XG4gICAgcmV0dXJuIHByb2Nlc3MuX192aXRlc3Rfd29ya2VyX18/LmZpbGVwYXRoIHx8ICdnbG9iYWwnXG4gIH1cblxuICBwdWJsaWMgZ2V0TW9ja3MoKSB7XG4gICAgY29uc3Qgc3VpdGUgPSB0aGlzLmdldFN1aXRlRmlsZXBhdGgoKVxuICAgIGNvbnN0IHN1aXRlTW9ja3MgPSB0aGlzLm1vY2tNYXBbc3VpdGUgfHwgJyddXG4gICAgY29uc3QgZ2xvYmFsTW9ja3MgPSB0aGlzLm1vY2tNYXAuZ2xvYmFsXG5cbiAgICByZXR1cm4ge1xuICAgICAgLi4uc3VpdGVNb2NrcyxcbiAgICAgIC4uLmdsb2JhbE1vY2tzLFxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgcmVzb2x2ZVBhdGgoaWQ6IHN0cmluZywgaW1wb3J0ZXI6IHN0cmluZykge1xuICAgIGNvbnN0IHBhdGggPSBhd2FpdCB0aGlzLm9wdGlvbnMucmVzb2x2ZUlkKGlkLCBpbXBvcnRlcilcbiAgICByZXR1cm4ge1xuICAgICAgcGF0aDogbm9ybWFsaXplSWQocGF0aD8uaWQgfHwgaWQpLFxuICAgICAgZXh0ZXJuYWw6IHBhdGg/LmlkLmluY2x1ZGVzKCcvbm9kZV9tb2R1bGVzLycpID8gaWQgOiBudWxsLFxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgcmVzb2x2ZU1vY2tzKCkge1xuICAgIGF3YWl0IFByb21pc2UuYWxsKHBlbmRpbmdJZHMubWFwKGFzeW5jKG1vY2spID0+IHtcbiAgICAgIGNvbnN0IHsgcGF0aCwgZXh0ZXJuYWwgfSA9IGF3YWl0IHRoaXMucmVzb2x2ZVBhdGgobW9jay5pZCwgbW9jay5pbXBvcnRlcilcbiAgICAgIGlmIChtb2NrLnR5cGUgPT09ICd1bm1vY2snKVxuICAgICAgICB0aGlzLnVubW9ja1BhdGgocGF0aClcbiAgICAgIGlmIChtb2NrLnR5cGUgPT09ICdtb2NrJylcbiAgICAgICAgdGhpcy5tb2NrUGF0aChwYXRoLCBleHRlcm5hbCwgbW9jay5mYWN0b3J5KVxuICAgIH0pKVxuXG4gICAgcGVuZGluZ0lkcy5sZW5ndGggPSAwXG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGNhbGxGdW5jdGlvbk1vY2soZGVwOiBzdHJpbmcsIG1vY2s6ICgpID0+IGFueSkge1xuICAgIGNvbnN0IGNhY2hlTmFtZSA9IGAke2RlcH1fX21vY2tgXG4gICAgY29uc3QgY2FjaGVkID0gdGhpcy5tb2R1bGVDYWNoZS5nZXQoY2FjaGVOYW1lKT8uZXhwb3J0c1xuICAgIGlmIChjYWNoZWQpXG4gICAgICByZXR1cm4gY2FjaGVkXG4gICAgY29uc3QgZXhwb3J0cyA9IGF3YWl0IG1vY2soKVxuICAgIHRoaXMuZW1pdCgnbW9ja2VkJywgY2FjaGVOYW1lLCB7IGV4cG9ydHMgfSlcbiAgICByZXR1cm4gZXhwb3J0c1xuICB9XG5cbiAgcHVibGljIGdldERlcGVuZGVuY3lNb2NrKGRlcDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0TW9ja3MoKVt0aGlzLnJlc29sdmVEZXBlbmRlbmN5KGRlcCldXG4gIH1cblxuICBwdWJsaWMgcmVzb2x2ZURlcGVuZGVuY3koZGVwOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gbm9ybWFsaXplSWQoZGVwKS5yZXBsYWNlKC9eXFwvQGZzXFwvLywgaXNXaW5kb3dzID8gJycgOiAnLycpXG4gIH1cblxuICBwdWJsaWMgbm9ybWFsaXplUGF0aChwYXRoOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gbm9ybWFsaXplSWQocGF0aC5yZXBsYWNlKHRoaXMucm9vdCwgJycpKS5yZXBsYWNlKC9eXFwvQGZzXFwvLywgaXNXaW5kb3dzID8gJycgOiAnLycpXG4gIH1cblxuICBwdWJsaWMgZ2V0RnNQYXRoKHBhdGg6IHN0cmluZywgZXh0ZXJuYWw6IHN0cmluZyB8IG51bGwpIHtcbiAgICBpZiAoZXh0ZXJuYWwpXG4gICAgICByZXR1cm4gbWVyZ2VTbGFzaGVzKGAvQGZzLyR7cGF0aH1gKVxuXG4gICAgcmV0dXJuIG5vcm1hbGl6ZUlkKHBhdGgucmVwbGFjZSh0aGlzLnJvb3QsICcnKSlcbiAgfVxuXG4gIHB1YmxpYyByZXNvbHZlTW9ja1BhdGgobW9ja1BhdGg6IHN0cmluZywgZXh0ZXJuYWw6IHN0cmluZyB8IG51bGwpIHtcbiAgICBjb25zdCBwYXRoID0gbm9ybWFsaXplSWQoZXh0ZXJuYWwgfHwgbW9ja1BhdGgpXG5cbiAgICAvLyBpdCdzIGEgbm9kZV9tb2R1bGUgYWxpYXNcbiAgICAvLyBhbGwgbW9ja3Mgc2hvdWxkIGJlIGluc2lkZSA8cm9vdD4vX19tb2Nrc19fXG4gICAgaWYgKGV4dGVybmFsIHx8IGlzTm9kZUJ1aWx0aW4obW9ja1BhdGgpKSB7XG4gICAgICBjb25zdCBtb2NrRGlybmFtZSA9IGRpcm5hbWUocGF0aCkgLy8gZm9yIG5lc3RlZCBtb2NrczogQHZ1ZXVzZS9pbnRlZ3JhdGlvbi91c2VKd3RcbiAgICAgIGNvbnN0IGJhc2VGaWxlbmFtZSA9IGJhc2VuYW1lKHBhdGgpXG4gICAgICBjb25zdCBtb2NrRm9sZGVyID0gcmVzb2x2ZSh0aGlzLnJvb3QsICdfX21vY2tzX18nLCBtb2NrRGlybmFtZSlcblxuICAgICAgaWYgKCFleGlzdHNTeW5jKG1vY2tGb2xkZXIpKSByZXR1cm4gbnVsbFxuXG4gICAgICBjb25zdCBmaWxlcyA9IHJlYWRkaXJTeW5jKG1vY2tGb2xkZXIpXG5cbiAgICAgIGZvciAoY29uc3QgZmlsZSBvZiBmaWxlcykge1xuICAgICAgICBjb25zdCBbYmFzZW5hbWVdID0gZmlsZS5zcGxpdCgnLicpXG4gICAgICAgIGlmIChiYXNlbmFtZSA9PT0gYmFzZUZpbGVuYW1lKVxuICAgICAgICAgIHJldHVybiByZXNvbHZlKG1vY2tGb2xkZXIsIGZpbGUpLnJlcGxhY2UodGhpcy5yb290LCAnJylcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIG51bGxcbiAgICB9XG5cbiAgICBjb25zdCBkaXIgPSBkaXJuYW1lKHBhdGgpXG4gICAgY29uc3QgYmFzZUlkID0gYmFzZW5hbWUocGF0aClcbiAgICBjb25zdCBmdWxsUGF0aCA9IHJlc29sdmUoZGlyLCAnX19tb2Nrc19fJywgYmFzZUlkKVxuICAgIHJldHVybiBleGlzdHNTeW5jKGZ1bGxQYXRoKSA/IGZ1bGxQYXRoLnJlcGxhY2UodGhpcy5yb290LCAnJykgOiBudWxsXG4gIH1cblxuICBwdWJsaWMgbW9ja09iamVjdChvYmo6IGFueSkge1xuICAgIGlmICghdGhpcy5zcHkpXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludGVybmFsIFZpdGVzdCBlcnJvcjogU3B5IGZ1bmN0aW9uIGlzIG5vdCBkZWZpbmVkLicpXG5cbiAgICBjb25zdCB0eXBlID0gZ2V0T2JqZWN0VHlwZShvYmopXG5cbiAgICBpZiAoQXJyYXkuaXNBcnJheShvYmopKVxuICAgICAgcmV0dXJuIFtdXG4gICAgZWxzZSBpZiAodHlwZSAhPT0gJ09iamVjdCcgJiYgdHlwZSAhPT0gJ01vZHVsZScpXG4gICAgICByZXR1cm4gb2JqXG5cbiAgICBjb25zdCBuZXdPYmogPSB7IC4uLm9iaiB9XG5cbiAgICBjb25zdCBwcm90byA9IG1vY2tQcm90b3R5cGUodGhpcy5zcHkuc3B5T24sIE9iamVjdC5nZXRQcm90b3R5cGVPZihvYmopKVxuICAgIE9iamVjdC5zZXRQcm90b3R5cGVPZihuZXdPYmosIHByb3RvKVxuXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXJlc3RyaWN0ZWQtc3ludGF4XG4gICAgZm9yIChjb25zdCBrIGluIG9iaikge1xuICAgICAgbmV3T2JqW2tdID0gdGhpcy5tb2NrT2JqZWN0KG9ialtrXSlcbiAgICAgIGNvbnN0IHR5cGUgPSBnZXRPYmplY3RUeXBlKG9ialtrXSlcblxuICAgICAgaWYgKHR5cGUuaW5jbHVkZXMoJ0Z1bmN0aW9uJykgJiYgIW9ialtrXS5fX2lzU3B5KSB7XG4gICAgICAgIHRoaXMuc3B5LnNweU9uKG5ld09iaiwgaykubW9ja0ltcGxlbWVudGF0aW9uKCgpID0+IHt9KVxuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkobmV3T2JqW2tdLCAnbGVuZ3RoJywgeyB2YWx1ZTogMCB9KSAvLyB0aW55c3B5IHJldGFpbnMgbGVuZ3RoLCBidXQgamVzdCBkb2VzbnRcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG5ld09ialxuICB9XG5cbiAgcHVibGljIHVubW9ja1BhdGgocGF0aDogc3RyaW5nKSB7XG4gICAgY29uc3Qgc3VpdGVmaWxlID0gdGhpcy5nZXRTdWl0ZUZpbGVwYXRoKClcblxuICAgIGNvbnN0IGZzUGF0aCA9IHRoaXMubm9ybWFsaXplUGF0aChwYXRoKVxuXG4gICAgaWYgKHRoaXMubW9ja01hcFtzdWl0ZWZpbGVdPy5bZnNQYXRoXSlcbiAgICAgIGRlbGV0ZSB0aGlzLm1vY2tNYXBbc3VpdGVmaWxlXVtmc1BhdGhdXG4gIH1cblxuICBwdWJsaWMgbW9ja1BhdGgocGF0aDogc3RyaW5nLCBleHRlcm5hbDogc3RyaW5nIHwgbnVsbCwgZmFjdG9yeT86ICgpID0+IGFueSkge1xuICAgIGNvbnN0IHN1aXRlZmlsZSA9IHRoaXMuZ2V0U3VpdGVGaWxlcGF0aCgpXG5cbiAgICBjb25zdCBmc1BhdGggPSB0aGlzLm5vcm1hbGl6ZVBhdGgocGF0aClcblxuICAgIHRoaXMubW9ja01hcFtzdWl0ZWZpbGVdID8/PSB7fVxuICAgIHRoaXMubW9ja01hcFtzdWl0ZWZpbGVdW2ZzUGF0aF0gPSBmYWN0b3J5IHx8IHRoaXMucmVzb2x2ZU1vY2tQYXRoKHBhdGgsIGV4dGVybmFsKVxuICB9XG5cbiAgcHVibGljIGFzeW5jIGltcG9ydEFjdHVhbDxUPihpZDogc3RyaW5nLCBpbXBvcnRlcjogc3RyaW5nKTogUHJvbWlzZTxUPiB7XG4gICAgY29uc3QgeyBwYXRoLCBleHRlcm5hbCB9ID0gYXdhaXQgdGhpcy5yZXNvbHZlUGF0aChpZCwgaW1wb3J0ZXIpXG4gICAgY29uc3QgZnNQYXRoID0gdGhpcy5nZXRGc1BhdGgocGF0aCwgZXh0ZXJuYWwpXG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdGhpcy5yZXF1ZXN0KGZzUGF0aClcbiAgICByZXR1cm4gcmVzdWx0IGFzIFRcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBpbXBvcnRNb2NrKGlkOiBzdHJpbmcsIGltcG9ydGVyOiBzdHJpbmcpOiBQcm9taXNlPGFueT4ge1xuICAgIGNvbnN0IHsgcGF0aCwgZXh0ZXJuYWwgfSA9IGF3YWl0IHRoaXMucmVzb2x2ZVBhdGgoaWQsIGltcG9ydGVyKVxuXG4gICAgbGV0IG1vY2sgPSB0aGlzLmdldERlcGVuZGVuY3lNb2NrKHBhdGgpXG5cbiAgICBpZiAobW9jayA9PT0gdW5kZWZpbmVkKVxuICAgICAgbW9jayA9IHRoaXMucmVzb2x2ZU1vY2tQYXRoKHBhdGgsIGV4dGVybmFsKVxuXG4gICAgaWYgKG1vY2sgPT09IG51bGwpIHtcbiAgICAgIGF3YWl0IHRoaXMuZW5zdXJlU3B5KClcbiAgICAgIGNvbnN0IGZzUGF0aCA9IHRoaXMuZ2V0RnNQYXRoKHBhdGgsIGV4dGVybmFsKVxuICAgICAgY29uc3QgbW9kID0gYXdhaXQgdGhpcy5yZXF1ZXN0KGZzUGF0aClcbiAgICAgIHJldHVybiB0aGlzLm1vY2tPYmplY3QobW9kKVxuICAgIH1cbiAgICBpZiAodHlwZW9mIG1vY2sgPT09ICdmdW5jdGlvbicpXG4gICAgICByZXR1cm4gdGhpcy5jYWxsRnVuY3Rpb25Nb2NrKHBhdGgsIG1vY2spXG4gICAgcmV0dXJuIHRoaXMucmVxdWVzdFdpdGhNb2NrKG1vY2spXG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGVuc3VyZVNweSgpIHtcbiAgICBpZiAodGhpcy5zcHkpIHJldHVyblxuICAgIHRoaXMuc3B5ID0gYXdhaXQgdGhpcy5yZXF1ZXN0KHJlc29sdmUoZGlzdERpciwgJ2plc3QtbW9jay5qcycpKSBhcyB0eXBlb2YgaW1wb3J0KCcuLi9pbnRlZ3JhdGlvbnMvamVzdC1tb2NrJylcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyByZXF1ZXN0V2l0aE1vY2soZGVwOiBzdHJpbmcpIHtcbiAgICBhd2FpdCB0aGlzLmVuc3VyZVNweSgpXG4gICAgYXdhaXQgdGhpcy5yZXNvbHZlTW9ja3MoKVxuXG4gICAgY29uc3QgbW9jayA9IHRoaXMuZ2V0RGVwZW5kZW5jeU1vY2soZGVwKVxuXG4gICAgaWYgKG1vY2sgPT09IG51bGwpIHtcbiAgICAgIGNvbnN0IGNhY2hlTmFtZSA9IGAke2RlcH1fX21vY2tgXG4gICAgICBjb25zdCBjYWNoZSA9IHRoaXMubW9kdWxlQ2FjaGUuZ2V0KGNhY2hlTmFtZSlcbiAgICAgIGlmIChjYWNoZT8uZXhwb3J0cylcbiAgICAgICAgcmV0dXJuIGNhY2hlLmV4cG9ydHNcbiAgICAgIGNvbnN0IGNhY2hlS2V5ID0gdG9GaWxlUGF0aChkZXAsIHRoaXMucm9vdClcbiAgICAgIGNvbnN0IG1vZCA9IHRoaXMubW9kdWxlQ2FjaGUuZ2V0KGNhY2hlS2V5KT8uZXhwb3J0cyB8fCBhd2FpdCB0aGlzLnJlcXVlc3QoZGVwKVxuICAgICAgY29uc3QgZXhwb3J0cyA9IHRoaXMubW9ja09iamVjdChtb2QpXG4gICAgICB0aGlzLmVtaXQoJ21vY2tlZCcsIGNhY2hlTmFtZSwgeyBleHBvcnRzIH0pXG4gICAgICByZXR1cm4gZXhwb3J0c1xuICAgIH1cbiAgICBpZiAodHlwZW9mIG1vY2sgPT09ICdmdW5jdGlvbicpXG4gICAgICByZXR1cm4gdGhpcy5jYWxsRnVuY3Rpb25Nb2NrKGRlcCwgbW9jaylcbiAgICBpZiAodHlwZW9mIG1vY2sgPT09ICdzdHJpbmcnKVxuICAgICAgZGVwID0gbW9ja1xuICAgIHJldHVybiB0aGlzLnJlcXVlc3QoZGVwKVxuICB9XG5cbiAgcHVibGljIHF1ZXVlTW9jayhpZDogc3RyaW5nLCBpbXBvcnRlcjogc3RyaW5nLCBmYWN0b3J5PzogKCkgPT4gdW5rbm93bikge1xuICAgIHBlbmRpbmdJZHMucHVzaCh7IHR5cGU6ICdtb2NrJywgaWQsIGltcG9ydGVyLCBmYWN0b3J5IH0pXG4gIH1cblxuICBwdWJsaWMgcXVldWVVbm1vY2soaWQ6IHN0cmluZywgaW1wb3J0ZXI6IHN0cmluZykge1xuICAgIHBlbmRpbmdJZHMucHVzaCh7IHR5cGU6ICd1bm1vY2snLCBpZCwgaW1wb3J0ZXIgfSlcbiAgfVxuXG4gIHB1YmxpYyB3aXRoUmVxdWVzdChyZXF1ZXN0OiAoZGVwOiBzdHJpbmcpID0+IHVua25vd24pIHtcbiAgICByZXR1cm4gbmV3IFZpdGVzdE1vY2tlcih0aGlzLm9wdGlvbnMsIHRoaXMubW9kdWxlQ2FjaGUsIHJlcXVlc3QpXG4gIH1cbn1cbiIsImltcG9ydCB7IFZpdGVOb2RlUnVubmVyIH0gZnJvbSAndml0ZS1ub2RlL2NsaWVudCdcbmltcG9ydCB0eXBlIHsgTW9kdWxlQ2FjaGUsIFZpdGVOb2RlUmVzb2x2ZUlkLCBWaXRlTm9kZVJ1bm5lck9wdGlvbnMgfSBmcm9tICd2aXRlLW5vZGUnXG5pbXBvcnQgdHlwZSB7IFN1aXRlTW9ja3MgfSBmcm9tICcuL21vY2tlcidcbmltcG9ydCB7IFZpdGVzdE1vY2tlciB9IGZyb20gJy4vbW9ja2VyJ1xuXG5leHBvcnQgdHlwZSBSZXNvbHZlSWRGdW5jdGlvbiA9IChpZDogc3RyaW5nLCBpbXBvcnRlcj86IHN0cmluZykgPT4gUHJvbWlzZTxWaXRlTm9kZVJlc29sdmVJZCB8IG51bGw+XG5cbmV4cG9ydCBpbnRlcmZhY2UgRXhlY3V0ZU9wdGlvbnMgZXh0ZW5kcyBWaXRlTm9kZVJ1bm5lck9wdGlvbnMge1xuICBmaWxlczogc3RyaW5nW11cbiAgbW9ja01hcDogU3VpdGVNb2Nrc1xuICByZXNvbHZlSWQ6IFJlc29sdmVJZEZ1bmN0aW9uXG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBleGVjdXRlSW5WaXRlTm9kZShvcHRpb25zOiBFeGVjdXRlT3B0aW9ucykge1xuICBjb25zdCBydW5uZXIgPSBuZXcgVml0ZXN0UnVubmVyKG9wdGlvbnMpXG5cbiAgY29uc3QgcmVzdWx0OiBhbnlbXSA9IFtdXG4gIGZvciAoY29uc3QgZmlsZSBvZiBvcHRpb25zLmZpbGVzKVxuICAgIHJlc3VsdC5wdXNoKGF3YWl0IHJ1bm5lci5leGVjdXRlRmlsZShmaWxlKSlcblxuICByZXR1cm4gcmVzdWx0XG59XG5cbmV4cG9ydCBjbGFzcyBWaXRlc3RSdW5uZXIgZXh0ZW5kcyBWaXRlTm9kZVJ1bm5lciB7XG4gIG1vY2tlcjogVml0ZXN0TW9ja2VyXG5cbiAgY29uc3RydWN0b3IocHVibGljIG9wdGlvbnM6IEV4ZWN1dGVPcHRpb25zKSB7XG4gICAgc3VwZXIob3B0aW9ucylcbiAgICB0aGlzLm1vY2tlciA9IG5ldyBWaXRlc3RNb2NrZXIob3B0aW9ucywgdGhpcy5tb2R1bGVDYWNoZSlcbiAgfVxuXG4gIHByZXBhcmVDb250ZXh0KGNvbnRleHQ6IFJlY29yZDxzdHJpbmcsIGFueT4pIHtcbiAgICBjb25zdCByZXF1ZXN0ID0gY29udGV4dC5fX3ZpdGVfc3NyX2ltcG9ydF9fXG5cbiAgICBjb25zdCBtb2NrZXIgPSB0aGlzLm1vY2tlci53aXRoUmVxdWVzdChyZXF1ZXN0KVxuXG4gICAgbW9ja2VyLm9uKCdtb2NrZWQnLCAoZGVwOiBzdHJpbmcsIG1vZHVsZTogUGFydGlhbDxNb2R1bGVDYWNoZT4pID0+IHtcbiAgICAgIHRoaXMuc2V0Q2FjaGUoZGVwLCBtb2R1bGUpXG4gICAgfSlcblxuICAgIHJldHVybiBPYmplY3QuYXNzaWduKGNvbnRleHQsIHtcbiAgICAgIF9fdml0ZV9zc3JfaW1wb3J0X186IChkZXA6IHN0cmluZykgPT4gbW9ja2VyLnJlcXVlc3RXaXRoTW9jayhkZXApLFxuICAgICAgX192aXRlX3Nzcl9keW5hbWljX2ltcG9ydF9fOiAoZGVwOiBzdHJpbmcpID0+IG1vY2tlci5yZXF1ZXN0V2l0aE1vY2soZGVwKSxcblxuICAgICAgX192aXRlc3RfbW9ja2VyX186IG1vY2tlcixcbiAgICB9KVxuICB9XG59XG4iLCJpbXBvcnQgeyByZXNvbHZlIH0gZnJvbSAncGF0aGUnXG5pbXBvcnQgdHlwZSB7IEJpcnBjUmV0dXJuIH0gZnJvbSAnYmlycGMnXG5pbXBvcnQgeyBjcmVhdGVCaXJwYyB9IGZyb20gJ2JpcnBjJ1xuaW1wb3J0IHR5cGUgeyBNb2R1bGVDYWNoZSwgUmVzb2x2ZWRDb25maWcsIFRlc3QsIFdvcmtlckNvbnRleHQsIFdvcmtlclJQQyB9IGZyb20gJy4uL3R5cGVzJ1xuaW1wb3J0IHsgZGlzdERpciB9IGZyb20gJy4uL2NvbnN0YW50cydcbmltcG9ydCB7IGV4ZWN1dGVJblZpdGVOb2RlIH0gZnJvbSAnLi4vbm9kZS9leGVjdXRlJ1xuaW1wb3J0IHsgcnBjIH0gZnJvbSAnLi9ycGMnXG5cbmxldCBfdml0ZU5vZGU6IHtcbiAgcnVuOiAoZmlsZXM6IHN0cmluZ1tdLCBjb25maWc6IFJlc29sdmVkQ29uZmlnKSA9PiBQcm9taXNlPHZvaWQ+XG4gIGNvbGxlY3Q6IChmaWxlczogc3RyaW5nW10sIGNvbmZpZzogUmVzb2x2ZWRDb25maWcpID0+IFByb21pc2U8dm9pZD5cbn1cbmNvbnN0IG1vZHVsZUNhY2hlOiBNYXA8c3RyaW5nLCBNb2R1bGVDYWNoZT4gPSBuZXcgTWFwKClcbmNvbnN0IG1vY2tNYXAgPSB7fVxuXG5hc3luYyBmdW5jdGlvbiBzdGFydFZpdGVOb2RlKGN0eDogV29ya2VyQ29udGV4dCkge1xuICBpZiAoX3ZpdGVOb2RlKVxuICAgIHJldHVybiBfdml0ZU5vZGVcblxuICBjb25zdCBwcm9jZXNzRXhpdCA9IHByb2Nlc3MuZXhpdFxuXG4gIHByb2Nlc3Mub24oJ2JlZm9yZUV4aXQnLCAoY29kZSkgPT4ge1xuICAgIHJwYygpLm9uV29ya2VyRXhpdChjb2RlKVxuICB9KVxuXG4gIHByb2Nlc3MuZXhpdCA9IChjb2RlID0gcHJvY2Vzcy5leGl0Q29kZSB8fCAwKTogbmV2ZXIgPT4ge1xuICAgIHJwYygpLm9uV29ya2VyRXhpdChjb2RlKVxuICAgIHJldHVybiBwcm9jZXNzRXhpdChjb2RlKVxuICB9XG5cbiAgY29uc3QgeyBjb25maWcgfSA9IGN0eFxuXG4gIGNvbnN0IHsgcnVuLCBjb2xsZWN0IH0gPSAoYXdhaXQgZXhlY3V0ZUluVml0ZU5vZGUoe1xuICAgIGZpbGVzOiBbXG4gICAgICByZXNvbHZlKGRpc3REaXIsICdlbnRyeS5qcycpLFxuICAgIF0sXG4gICAgZmV0Y2hNb2R1bGUoaWQpIHtcbiAgICAgIHJldHVybiBycGMoKS5mZXRjaChpZClcbiAgICB9LFxuICAgIHJlc29sdmVJZChpZCwgaW1wb3J0ZXIpIHtcbiAgICAgIHJldHVybiBycGMoKS5yZXNvbHZlSWQoaWQsIGltcG9ydGVyKVxuICAgIH0sXG4gICAgbW9kdWxlQ2FjaGUsXG4gICAgbW9ja01hcCxcbiAgICBpbnRlcm9wRGVmYXVsdDogY29uZmlnLmRlcHMuaW50ZXJvcERlZmF1bHQgPz8gdHJ1ZSxcbiAgICByb290OiBjb25maWcucm9vdCxcbiAgICBiYXNlOiBjb25maWcuYmFzZSxcbiAgfSkpWzBdXG5cbiAgX3ZpdGVOb2RlID0geyBydW4sIGNvbGxlY3QgfVxuXG4gIHJldHVybiBfdml0ZU5vZGVcbn1cblxuZnVuY3Rpb24gaW5pdChjdHg6IFdvcmtlckNvbnRleHQpIHtcbiAgaWYgKHByb2Nlc3MuX192aXRlc3Rfd29ya2VyX18gJiYgY3R4LmNvbmZpZy50aHJlYWRzICYmIGN0eC5jb25maWcuaXNvbGF0ZSlcbiAgICB0aHJvdyBuZXcgRXJyb3IoYHdvcmtlciBmb3IgJHtjdHguZmlsZXMuam9pbignLCcpfSBhbHJlYWR5IGluaXRpYWxpemVkIGJ5ICR7cHJvY2Vzcy5fX3ZpdGVzdF93b3JrZXJfXy5jdHguZmlsZXMuam9pbignLCcpfS4gVGhpcyBpcyBwcm9iYWJseSBhbiBpbnRlcm5hbCBidWcgb2YgVml0ZXN0LmApXG5cbiAgcHJvY2Vzcy5zdGRvdXQud3JpdGUoJ1xcMCcpXG5cbiAgY29uc3QgeyBjb25maWcsIHBvcnQgfSA9IGN0eFxuXG4gIHByb2Nlc3MuX192aXRlc3Rfd29ya2VyX18gPSB7XG4gICAgY3R4LFxuICAgIG1vZHVsZUNhY2hlLFxuICAgIGNvbmZpZyxcbiAgICBycGM6IGNyZWF0ZUJpcnBjPFdvcmtlclJQQz4oXG4gICAgICB7fSxcbiAgICAgIHtcbiAgICAgICAgZXZlbnROYW1lczogWydvblVzZXJDb25zb2xlTG9nJywgJ29uRmluaXNoZWQnLCAnb25Db2xsZWN0ZWQnLCAnb25Xb3JrZXJFeGl0J10sXG4gICAgICAgIHBvc3QodikgeyBwb3J0LnBvc3RNZXNzYWdlKHYpIH0sXG4gICAgICAgIG9uKGZuKSB7IHBvcnQuYWRkTGlzdGVuZXIoJ21lc3NhZ2UnLCBmbikgfSxcbiAgICAgIH0sXG4gICAgKSxcbiAgfVxuXG4gIGlmIChjdHguaW52YWxpZGF0ZXMpXG4gICAgY3R4LmludmFsaWRhdGVzLmZvckVhY2goaSA9PiBtb2R1bGVDYWNoZS5kZWxldGUoaSkpXG4gIGN0eC5maWxlcy5mb3JFYWNoKGkgPT4gbW9kdWxlQ2FjaGUuZGVsZXRlKGkpKVxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gY29sbGVjdChjdHg6IFdvcmtlckNvbnRleHQpIHtcbiAgaW5pdChjdHgpXG4gIGNvbnN0IHsgY29sbGVjdCB9ID0gYXdhaXQgc3RhcnRWaXRlTm9kZShjdHgpXG4gIHJldHVybiBjb2xsZWN0KGN0eC5maWxlcywgY3R4LmNvbmZpZylcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJ1bihjdHg6IFdvcmtlckNvbnRleHQpIHtcbiAgaW5pdChjdHgpXG4gIGNvbnN0IHsgcnVuIH0gPSBhd2FpdCBzdGFydFZpdGVOb2RlKGN0eClcbiAgcmV0dXJuIHJ1bihjdHguZmlsZXMsIGN0eC5jb25maWcpXG59XG5cbmRlY2xhcmUgZ2xvYmFsIHtcbiAgbmFtZXNwYWNlIE5vZGVKUyB7XG4gICAgaW50ZXJmYWNlIFByb2Nlc3Mge1xuICAgICAgX192aXRlc3Rfd29ya2VyX186IHtcbiAgICAgICAgY3R4OiBXb3JrZXJDb250ZXh0XG4gICAgICAgIGNvbmZpZzogUmVzb2x2ZWRDb25maWdcbiAgICAgICAgcnBjOiBCaXJwY1JldHVybjxXb3JrZXJSUEM+XG4gICAgICAgIGN1cnJlbnQ/OiBUZXN0XG4gICAgICAgIGZpbGVwYXRoPzogc3RyaW5nXG4gICAgICAgIG1vZHVsZUNhY2hlOiBNYXA8c3RyaW5nLCBNb2R1bGVDYWNoZT5cbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7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
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vitest",
3
- "version": "0.3.2",
3
+ "version": "0.3.3",
4
4
  "description": "A blazing fast unit test framework powered by Vite",
5
5
  "keywords": [
6
6
  "vite",
@@ -56,7 +56,7 @@
56
56
  "local-pkg": "^0.4.1",
57
57
  "tinypool": "^0.1.1",
58
58
  "tinyspy": "^0.2.10",
59
- "vite": ">=2.7.13"
59
+ "vite": "^2.7.13"
60
60
  },
61
61
  "devDependencies": {
62
62
  "@antfu/install-pkg": "^0.1.0",
@@ -68,7 +68,7 @@
68
68
  "@types/node": "^17.0.16",
69
69
  "@types/prompts": "^2.4.0",
70
70
  "@types/sinonjs__fake-timers": "^8.1.1",
71
- "@vitest/ui": "0.3.2",
71
+ "@vitest/ui": "0.3.3",
72
72
  "birpc": "^0.1.0",
73
73
  "c8": "^7.11.0",
74
74
  "cac": "^6.7.12",
@@ -96,7 +96,7 @@
96
96
  "source-map-js": "^1.0.2",
97
97
  "strip-ansi": "^7.0.1",
98
98
  "typescript": "^4.5.5",
99
- "vite-node": "0.3.2",
99
+ "vite-node": "0.3.3",
100
100
  "ws": "^8.5.0"
101
101
  },
102
102
  "peerDependencies": {
@@ -1,80 +0,0 @@
1
- import { fileURLToPath } from 'url';
2
- import { r as resolve } from './index-f55e7b59.js';
3
-
4
- const distDir = resolve(fileURLToPath(import.meta.url), "../../dist");
5
- const defaultInclude = ["**/*.{test,spec}.{js,mjs,cjs,ts,mts,cts,jsx,tsx}"];
6
- const defaultExclude = ["**/node_modules/**", "**/dist/**", "**/cypress/**", "**/.{idea,git,cache,output,temp}/**"];
7
- const defaultCoverageExcludes = [
8
- "coverage/**",
9
- "packages/*/test{,s}/**",
10
- "**/*.d.ts",
11
- "cypress/**",
12
- "test{,s}/**",
13
- "test{,-*}.{js,cjs,mjs,ts,tsx,jsx}",
14
- "**/*{.,-}test.{js,cjs,mjs,ts,tsx,jsx}",
15
- "**/__tests__/**",
16
- "**/{karma,rollup,webpack,vite,vitest,jest,ava,babel,nyc}.config.{js,cjs,mjs,ts}",
17
- "**/.{eslint,mocha}rc.{js,cjs}"
18
- ];
19
- const coverageConfigDefaults = Object.freeze({
20
- enabled: false,
21
- clean: true,
22
- cleanOnRerun: false,
23
- reportsDirectory: "./coverage",
24
- excludeNodeModules: true,
25
- exclude: defaultCoverageExcludes,
26
- reporter: ["text", "html"],
27
- allowExternal: false,
28
- extension: [".js", ".cjs", ".mjs", ".ts", ".tsx", ".jsx", ".vue", "svelte"]
29
- });
30
- const configDefaults = Object.freeze({
31
- allowOnly: !process.env.CI,
32
- globals: false,
33
- environment: "node",
34
- threads: true,
35
- clearMocks: false,
36
- restoreMocks: false,
37
- mockReset: false,
38
- include: defaultInclude,
39
- exclude: defaultExclude,
40
- testTimeout: 5e3,
41
- hookTimeout: 1e4,
42
- isolate: true,
43
- watchIgnore: [/\/node_modules\//, /\/dist\//],
44
- update: false,
45
- reporters: [],
46
- silent: false,
47
- api: false,
48
- ui: false,
49
- uiBase: "/__vitest__/",
50
- open: true,
51
- coverage: coverageConfigDefaults
52
- });
53
- const defaultPort = 51204;
54
- const API_PATH = "/__vitest_api__";
55
- const configFiles = [
56
- "vitest.config.ts",
57
- "vitest.config.js",
58
- "vitest.config.mjs",
59
- "vite.config.ts",
60
- "vite.config.js",
61
- "vite.config.mjs"
62
- ];
63
- const globalApis = [
64
- "suite",
65
- "test",
66
- "describe",
67
- "it",
68
- "chai",
69
- "expect",
70
- "assert",
71
- "vitest",
72
- "vi",
73
- "beforeAll",
74
- "afterAll",
75
- "beforeEach",
76
- "afterEach"
77
- ];
78
-
79
- export { API_PATH as A, coverageConfigDefaults as a, defaultPort as b, configDefaults as c, distDir as d, configFiles as e, globalApis as g };
80
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RhbnRzLThmY2JmOWI2LmpzIiwic291cmNlcyI6WyIuLi9zcmMvY29uc3RhbnRzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGZpbGVVUkxUb1BhdGggfSBmcm9tICd1cmwnXG5pbXBvcnQgeyByZXNvbHZlIH0gZnJvbSAncGF0aGUnXG5pbXBvcnQgdHlwZSB7IFJlc29sdmVkQzhPcHRpb25zLCBVc2VyQ29uZmlnIH0gZnJvbSAnLi90eXBlcydcblxuZXhwb3J0IGNvbnN0IGRpc3REaXIgPSByZXNvbHZlKGZpbGVVUkxUb1BhdGgoaW1wb3J0Lm1ldGEudXJsKSwgJy4uLy4uL2Rpc3QnKVxuXG5leHBvcnQgY29uc3QgZGVmYXVsdEluY2x1ZGUgPSBbJyoqLyoue3Rlc3Qsc3BlY30ue2pzLG1qcyxjanMsdHMsbXRzLGN0cyxqc3gsdHN4fSddXG5leHBvcnQgY29uc3QgZGVmYXVsdEV4Y2x1ZGUgPSBbJyoqL25vZGVfbW9kdWxlcy8qKicsICcqKi9kaXN0LyoqJywgJyoqL2N5cHJlc3MvKionLCAnKiovLntpZGVhLGdpdCxjYWNoZSxvdXRwdXQsdGVtcH0vKionXVxuXG5jb25zdCBkZWZhdWx0Q292ZXJhZ2VFeGNsdWRlcyA9IFtcbiAgJ2NvdmVyYWdlLyoqJyxcbiAgJ3BhY2thZ2VzLyovdGVzdHssc30vKionLFxuICAnKiovKi5kLnRzJyxcbiAgJ2N5cHJlc3MvKionLFxuICAndGVzdHssc30vKionLFxuICAndGVzdHssLSp9LntqcyxjanMsbWpzLHRzLHRzeCxqc3h9JyxcbiAgJyoqLyp7LiwtfXRlc3Que2pzLGNqcyxtanMsdHMsdHN4LGpzeH0nLFxuICAnKiovX190ZXN0c19fLyoqJyxcbiAgJyoqL3trYXJtYSxyb2xsdXAsd2VicGFjayx2aXRlLHZpdGVzdCxqZXN0LGF2YSxiYWJlbCxueWN9LmNvbmZpZy57anMsY2pzLG1qcyx0c30nLFxuICAnKiovLntlc2xpbnQsbW9jaGF9cmMue2pzLGNqc30nLFxuXVxuXG5leHBvcnQgY29uc3QgY292ZXJhZ2VDb25maWdEZWZhdWx0cyA9IE9iamVjdC5mcmVlemUoe1xuICBlbmFibGVkOiBmYWxzZSxcbiAgY2xlYW46IHRydWUsXG4gIGNsZWFuT25SZXJ1bjogZmFsc2UsXG4gIHJlcG9ydHNEaXJlY3Rvcnk6ICcuL2NvdmVyYWdlJyxcbiAgZXhjbHVkZU5vZGVNb2R1bGVzOiB0cnVlLFxuICBleGNsdWRlOiBkZWZhdWx0Q292ZXJhZ2VFeGNsdWRlcyxcbiAgcmVwb3J0ZXI6IFsndGV4dCcsICdodG1sJ10sXG4gIGFsbG93RXh0ZXJuYWw6IGZhbHNlLFxuICAvLyBkZWZhdWx0IGV4dGVuc2lvbnMgdXNlZCBieSBjOCwgcGx1cyAnLnZ1ZScgYW5kICcuc3ZlbHRlJ1xuICAvLyBzZWUgaHR0cHM6Ly9naXRodWIuY29tL2lzdGFuYnVsanMvc2NoZW1hL2Jsb2IvbWFzdGVyL2RlZmF1bHQtZXh0ZW5zaW9uLmpzXG4gIGV4dGVuc2lvbjogWycuanMnLCAnLmNqcycsICcubWpzJywgJy50cycsICcudHN4JywgJy5qc3gnLCAnLnZ1ZScsICdzdmVsdGUnXSxcbn0pIGFzIFJlc29sdmVkQzhPcHRpb25zXG5cbmV4cG9ydCBjb25zdCBjb25maWdEZWZhdWx0czogVXNlckNvbmZpZyA9IE9iamVjdC5mcmVlemUoe1xuICBhbGxvd09ubHk6ICFwcm9jZXNzLmVudi5DSSxcbiAgZ2xvYmFsczogZmFsc2UsXG4gIGVudmlyb25tZW50OiAnbm9kZScsXG4gIHRocmVhZHM6IHRydWUsXG4gIGNsZWFyTW9ja3M6IGZhbHNlLFxuICByZXN0b3JlTW9ja3M6IGZhbHNlLFxuICBtb2NrUmVzZXQ6IGZhbHNlLFxuICBpbmNsdWRlOiBkZWZhdWx0SW5jbHVkZSxcbiAgZXhjbHVkZTogZGVmYXVsdEV4Y2x1ZGUsXG4gIHRlc3RUaW1lb3V0OiA1XzAwMCxcbiAgaG9va1RpbWVvdXQ6IDEwXzAwMCxcbiAgaXNvbGF0ZTogdHJ1ZSxcbiAgd2F0Y2hJZ25vcmU6IFsvXFwvbm9kZV9tb2R1bGVzXFwvLywgL1xcL2Rpc3RcXC8vXSxcbiAgdXBkYXRlOiBmYWxzZSxcbiAgcmVwb3J0ZXJzOiBbXSxcbiAgc2lsZW50OiBmYWxzZSxcbiAgYXBpOiBmYWxzZSxcbiAgdWk6IGZhbHNlLFxuICB1aUJhc2U6ICcvX192aXRlc3RfXy8nLFxuICBvcGVuOiB0cnVlLFxuICBjb3ZlcmFnZTogY292ZXJhZ2VDb25maWdEZWZhdWx0cyxcbn0pXG5cbi8vIGlmIGNoYW5nZWQsIHVwZGF0ZSBhbHNvIGpzZG9jcyBhbmQgZG9jc1xuZXhwb3J0IGNvbnN0IGRlZmF1bHRQb3J0ID0gNTEyMDRcblxuZXhwb3J0IGNvbnN0IEFQSV9QQVRIID0gJy9fX3ZpdGVzdF9hcGlfXydcblxuZXhwb3J0IGNvbnN0IGNvbmZpZ0ZpbGVzID0gW1xuICAndml0ZXN0LmNvbmZpZy50cycsXG4gICd2aXRlc3QuY29uZmlnLmpzJyxcbiAgJ3ZpdGVzdC5jb25maWcubWpzJyxcbiAgJ3ZpdGUuY29uZmlnLnRzJyxcbiAgJ3ZpdGUuY29uZmlnLmpzJyxcbiAgJ3ZpdGUuY29uZmlnLm1qcycsXG5dXG5cbmV4cG9ydCBjb25zdCBnbG9iYWxBcGlzID0gW1xuICAvLyBzdWl0ZVxuICAnc3VpdGUnLFxuICAndGVzdCcsXG4gICdkZXNjcmliZScsXG4gICdpdCcsXG4gIC8vIGNoYWlcbiAgJ2NoYWknLFxuICAnZXhwZWN0JyxcbiAgJ2Fzc2VydCcsXG4gIC8vIHV0aWxzXG4gICd2aXRlc3QnLFxuICAndmknLFxuICAvLyBob29rc1xuICAnYmVmb3JlQWxsJyxcbiAgJ2FmdGVyQWxsJyxcbiAgJ2JlZm9yZUVhY2gnLFxuICAnYWZ0ZXJFYWNoJyxcbl1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFFWSxNQUFDLE9BQU8sR0FBRyxPQUFPLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsWUFBWSxFQUFFO0FBQ3RFLE1BQU0sY0FBYyxHQUFHLENBQUMsa0RBQWtELENBQUMsQ0FBQztBQUM1RSxNQUFNLGNBQWMsR0FBRyxDQUFDLG9CQUFv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