@nlabs/lex 1.54.2 → 1.54.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.
Files changed (46) hide show
  1. package/.github/copilot-instructions.md +4 -4
  2. package/README.md +25 -25
  3. package/__mocks__/LexConfig.js +9 -9
  4. package/__mocks__/boxen.js +1 -1
  5. package/__mocks__/build.js +6 -6
  6. package/__mocks__/compare-versions.js +1 -1
  7. package/__mocks__/compile.js +2 -2
  8. package/__mocks__/execa.js +2 -2
  9. package/__mocks__/latest-version.js +1 -1
  10. package/__mocks__/ora.js +13 -13
  11. package/__mocks__/versions.js +4 -4
  12. package/config.json +2 -2
  13. package/examples/lex.config.js +4 -4
  14. package/lex.config.js +4 -4
  15. package/lib/LexConfig.d.ts +2 -9
  16. package/lib/LexConfig.js +2 -2
  17. package/lib/commands/ai/ai.js +2 -2
  18. package/lib/commands/config/config.js +14 -8
  19. package/lib/commands/migrate/migrate.js +2 -2
  20. package/lib/commands/test/test.d.ts +2 -0
  21. package/lib/commands/test/test.js +130 -117
  22. package/lib/commands/versions/versions.d.ts +1 -1
  23. package/lib/commands/versions/versions.js +3 -3
  24. package/lib/lex.js +2 -2
  25. package/lib/test-react/index.d.ts +1 -1
  26. package/lib/test-react/index.js +2 -2
  27. package/lib/types.d.ts +1 -1
  28. package/lib/types.js +1 -1
  29. package/lib/utils/app.js +2 -2
  30. package/lib/vitest.d.js +3 -0
  31. package/package.json +42 -42
  32. package/resolver.cjs +11 -9
  33. package/tsconfig/reactNative.json +3 -2
  34. package/tsconfig.build.json +3 -3
  35. package/tsconfig.json +4 -3
  36. package/tsconfig.lint.json +3 -2
  37. package/tsconfig.template.json +3 -2
  38. package/tsconfig.test.json +4 -3
  39. package/vitest.config.d.mts +2 -0
  40. package/vitest.config.mjs +61 -0
  41. package/vitest.config.template.cjs +66 -0
  42. package/vitest.setup.template.js +19 -0
  43. package/jest.config.d.mts +0 -50
  44. package/jest.config.mjs +0 -72
  45. package/jest.config.template.cjs +0 -71
  46. package/jest.setup.template.js +0 -18
@@ -45,7 +45,7 @@ const getProjectContext = async (options)=>{
45
45
  break;
46
46
  case 'test':
47
47
  if (file) {
48
- const testConfig = getFileContext('jest.config.js');
48
+ const testConfig = getFileContext('vitest.config.mjs');
49
49
  projectContext += `\n\nTest configuration:\n${testConfig}`;
50
50
  }
51
51
  break;
@@ -299,4 +299,4 @@ export const ai = new Command('ai').description('Use AI to help with development
299
299
  });
300
300
  export default ai;
301
301
 
302
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21tYW5kcy9haS9haS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvcHlyaWdodCAoYykgMjAxOC1QcmVzZW50LCBOaXRyb2dlbiBMYWJzLCBJbmMuXG4gKiBDb3B5cmlnaHRzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS4gU2VlIHRoZSBhY2NvbXBhbnlpbmcgTElDRU5TRSBmaWxlIGZvciB0ZXJtcy5cbiAqL1xuaW1wb3J0IGNoYWxrIGZyb20gJ2NoYWxrJztcbmltcG9ydCB7Q29tbWFuZH0gZnJvbSAnY29tbWFuZGVyJztcbmltcG9ydCB7cmVhZEZpbGVTeW5jfSBmcm9tICdmcyc7XG5pbXBvcnQge3N5bmMgYXMgZ2xvYlN5bmN9IGZyb20gJ2dsb2InO1xuXG5pbXBvcnQge0xleENvbmZpZ30gZnJvbSAnLi4vLi4vTGV4Q29uZmlnLmpzJztcbmltcG9ydCB7Y2FsbEFJU2VydmljZX0gZnJvbSAnLi4vLi4vdXRpbHMvYWlTZXJ2aWNlLmpzJztcbmltcG9ydCB7bG9nfSBmcm9tICcuLi8uLi91dGlscy9sb2cuanMnO1xuXG5pZihwcm9jZXNzLmVudi5DVVJTT1JfRVhURU5TSU9OID09PSAndHJ1ZScgfHxcbiAgcHJvY2Vzcy5lbnYuQ1VSU09SX1RFUk1JTkFMID09PSAndHJ1ZScgfHxcbiAgcHJvY2Vzcy5lbnYuQ1VSU09SX0FQUCA9PT0gJ3RydWUnIHx8XG4gIHByb2Nlc3MuZW52LlBBVEg/LmluY2x1ZGVzKCdjdXJzb3InKSB8fFxuICBwcm9jZXNzLmVudi5DVVJTT1JfU0VTU0lPTl9JRCkge1xuICBwcm9jZXNzLmVudi5DVVJTT1JfSURFID0gJ3RydWUnO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFJT3B0aW9ucyB7XG4gIHJlYWRvbmx5IGNsaU5hbWU/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IGNvbnRleHQ/OiBib29sZWFuO1xuICByZWFkb25seSBmaWxlPzogc3RyaW5nO1xuICByZWFkb25seSBsZXhDb25maWc/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IG1vZGVsPzogc3RyaW5nO1xuICByZWFkb25seSBwcm9tcHQ/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IHF1aWV0PzogYm9vbGVhbjtcbiAgcmVhZG9ubHkgdGFzaz86ICdnZW5lcmF0ZScgfCAnZXhwbGFpbicgfCAndGVzdCcgfCAnb3B0aW1pemUnIHwgJ2hlbHAnIHwgJ2FzaycgfCAnYW5hbHl6ZSc7XG4gIHJlYWRvbmx5IGRlYnVnPzogYm9vbGVhbjtcbiAgcmVhZG9ubHkgcHJvdmlkZXI/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IGRpcj86IHN0cmluZztcbn1cblxuY29uc3QgZ2V0RmlsZUNvbnRleHQgPSAoZmlsZVBhdGg6IHN0cmluZyk6IHN0cmluZyA9PiB7XG4gIHRyeSB7XG4gICAgY29uc3QgY29udGVudCA9IHJlYWRGaWxlU3luYyhmaWxlUGF0aCwgJ3V0Zi04Jyk7XG4gICAgcmV0dXJuIGBGaWxlOiAke2ZpbGVQYXRofVxcblxcbiR7Y29udGVudH1gO1xuICB9IGNhdGNoKF9lcnJvcikge1xuICAgIHJldHVybiBgRXJyb3IgcmVhZGluZyBmaWxlOiAke2ZpbGVQYXRofWA7XG4gIH1cbn07XG5cbmNvbnN0IGdldFByb2plY3RDb250ZXh0ID0gYXN5bmMgKG9wdGlvbnM6IEFJT3B0aW9ucyk6IFByb21pc2U8c3RyaW5nPiA9PiB7XG4gIGNvbnN0IHtmaWxlLCB0YXNrLCBjb250ZXh0fSA9IG9wdGlvbnM7XG5cbiAgaWYoY29udGV4dCA9PT0gZmFsc2UpIHtcbiAgICByZXR1cm4gJyc7XG4gIH1cblxuICBsZXQgcHJvamVjdENvbnRleHQgPSAnJztcblxuICBpZihmaWxlKSB7XG4gICAgcHJvamVjdENvbnRleHQgKz0gZ2V0RmlsZUNvbnRleHQoZmlsZSk7XG4gIH1cblxuICBzd2l0Y2godGFzaykge1xuICAgIGNhc2UgJ2dlbmVyYXRlJzpcbiAgICAgIGNvbnN0IGZpbGVzID0gZ2xvYlN5bmMoJ3NyYy8qKi8qLnt0cyx0c3gsanMsanN4fScsIHtcbiAgICAgICAgY3dkOiBwcm9jZXNzLmN3ZCgpLFxuICAgICAgICBpZ25vcmU6IFsnKiovbm9kZV9tb2R1bGVzLyoqJywgJyoqL2xpYi8qKicsICcqKi9kaXN0LyoqJywgJyoqLyoudGVzdC4qJywgJyoqLyouc3BlYy4qJ10sXG4gICAgICAgIG1heERlcHRoOiAzXG4gICAgICB9KTtcbiAgICAgIHByb2plY3RDb250ZXh0ICs9IGBcXG5cXG5Qcm9qZWN0IHN0cnVjdHVyZTpcXG4ke2ZpbGVzLmpvaW4oJ1xcbicpfWA7XG4gICAgICBicmVhaztcblxuICAgIGNhc2UgJ3Rlc3QnOlxuICAgICAgaWYoZmlsZSkge1xuICAgICAgICBjb25zdCB0ZXN0Q29uZmlnID0gZ2V0RmlsZUNvbnRleHQoJ2plc3QuY29uZmlnLmpzJyk7XG4gICAgICAgIHByb2plY3RDb250ZXh0ICs9IGBcXG5cXG5UZXN0IGNvbmZpZ3VyYXRpb246XFxuJHt0ZXN0Q29uZmlnfWA7XG4gICAgICB9XG4gICAgICBicmVhaztcblxuICAgIGNhc2UgJ29wdGltaXplJzpcbiAgICAgIGNvbnN0IHdlYnBhY2tDb25maWcgPSBnZXRGaWxlQ29udGV4dCgnd2VicGFjay5jb25maWcuanMnKTtcbiAgICAgIHByb2plY3RDb250ZXh0ICs9IGBcXG5cXG5XZWJwYWNrIGNvbmZpZ3VyYXRpb246XFxuJHt3ZWJwYWNrQ29uZmlnfWA7XG4gICAgICBicmVhaztcblxuICAgIGRlZmF1bHQ6XG4gICAgICBicmVhaztcbiAgfVxuXG4gIHJldHVybiBwcm9qZWN0Q29udGV4dDtcbn07XG5cbmNvbnN0IGNvbnN0cnVjdFByb21wdCA9IChvcHRpb25zOiBBSU9wdGlvbnMsIHByb2plY3RDb250ZXh0OiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICBjb25zdCB7dGFzayA9ICdoZWxwJywgcHJvbXB0ID0gJyd9ID0gb3B0aW9ucztcblxuICBjb25zdCB0YXNrSW5zdHJ1Y3Rpb25zOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICAgIGFuYWx5emU6ICdBbmFseXplIHRoZSBmb2xsb3dpbmcgY29kZTonLFxuICAgIGFzazogJ1Byb3ZpZGUgZ3VpZGFuY2Ugb24gdGhlIGZvbGxvd2luZyBkZXZlbG9wbWVudCBxdWVzdGlvbjonLFxuICAgIGV4cGxhaW46ICdFeHBsYWluIHRoZSBmb2xsb3dpbmcgY29kZSBpbiBkZXRhaWwsIGluY2x1ZGluZyBhbnkgcGF0dGVybnMsIHBvdGVudGlhbCBpc3N1ZXMsIGFuZCBpbXByb3ZlbWVudCBzdWdnZXN0aW9uczonLFxuICAgIGdlbmVyYXRlOiAnR2VuZXJhdGUgY29kZSBhY2NvcmRpbmcgdG8gdGhlIGZvbGxvd2luZyByZXF1ZXN0LiBNYWtlIHN1cmUgaXQgZm9sbG93cyBiZXN0IHByYWN0aWNlcyBhbmQgaXMgd2VsbCBkb2N1bWVudGVkOicsXG4gICAgaGVscDogJ1Byb3ZpZGUgZ3VpZGFuY2Ugb24gdGhlIGZvbGxvd2luZyBkZXZlbG9wbWVudCBxdWVzdGlvbjonLFxuICAgIG9wdGltaXplOiAnQW5hbHl6ZSB0aGUgZm9sbG93aW5nIGNvZGUvY29uZmlndXJhdGlvbiBhbmQgc3VnZ2VzdCBvcHRpbWl6YXRpb24gaW1wcm92ZW1lbnRzOicsXG4gICAgdGVzdDogJ0dlbmVyYXRlIGNvbXByZWhlbnNpdmUgdW5pdCB0ZXN0cyBmb3IgdGhlIGZvbGxvd2luZyBjb2RlOidcbiAgfTtcblxuICBjb25zdCB0YXNrSW5zdHJ1Y3Rpb24gPSB0YXNrSW5zdHJ1Y3Rpb25zW3Rhc2tdIHx8IHRhc2tJbnN0cnVjdGlvbnMuaGVscDtcblxuICBsZXQgZnVsbFByb21wdCA9IGAke3Rhc2tJbnN0cnVjdGlvbn1cXG5cXG4ke3Byb21wdH1gO1xuXG4gIGlmKHByb2plY3RDb250ZXh0KSB7XG4gICAgZnVsbFByb21wdCArPSBgXFxuXFxuPT09Q09OVEVYVD09PVxcbiR7cHJvamVjdENvbnRleHR9YDtcbiAgfVxuXG4gIHJldHVybiBmdWxsUHJvbXB0O1xufTtcblxuY29uc3QgZGlzcGxheVJlc3BvbnNlID0gKHJlc3BvbnNlOiBhbnksIG9wdGlvbnM6IEFJT3B0aW9ucyk6IHZvaWQgPT4ge1xuICBjb25zdCB7dGFzayA9ICdoZWxwJywgcXVpZXQgPSBmYWxzZX0gPSBvcHRpb25zO1xuXG4gIGxldCBjb250ZW50ID0gJyc7XG5cbiAgaWYodHlwZW9mIHJlc3BvbnNlID09PSAnc3RyaW5nJykge1xuICAgIGNvbnRlbnQgPSByZXNwb25zZTtcbiAgfSBlbHNlIGlmKHJlc3BvbnNlLmNob2ljZXM/LlswXT8ubWVzc2FnZT8uY29udGVudCkge1xuICAgIGNvbnN0IHtjb250ZW50OiBtZXNzYWdlQ29udGVudH0gPSByZXNwb25zZS5jaG9pY2VzWzBdLm1lc3NhZ2U7XG4gICAgY29udGVudCA9IG1lc3NhZ2VDb250ZW50O1xuICB9IGVsc2UgaWYocmVzcG9uc2UuY29udGVudCkge1xuICAgIGNvbnN0IHtjb250ZW50OiByZXNwb25zZUNvbnRlbnR9ID0gcmVzcG9uc2U7XG4gICAgY29udGVudCA9IHJlc3BvbnNlQ29udGVudDtcbiAgfSBlbHNlIHtcbiAgICBjb250ZW50ID0gJ05vIHJlc3BvbnNlIHJlY2VpdmVkIGZyb20gQUkgbW9kZWwnO1xuICB9XG5cbiAgY29uc3QgY2xlYW5lZENvbnRlbnQgPSBjbGVhblJlc3BvbnNlKGNvbnRlbnQsIG9wdGlvbnMpO1xuXG4gIHN3aXRjaCh0YXNrKSB7XG4gICAgY2FzZSAnZ2VuZXJhdGUnOlxuICAgICAgbG9nKCdcXG5HZW5lcmF0ZWQgQ29kZTpcXG4nLCAnc3VjY2VzcycsIHF1aWV0KTtcbiAgICAgIGxvZyhjbGVhbmVkQ29udGVudCwgJ2RlZmF1bHQnLCBxdWlldCk7XG4gICAgICBicmVhaztcblxuICAgIGNhc2UgJ2V4cGxhaW4nOlxuICAgICAgbG9nKCdcXG5Db2RlIEV4cGxhbmF0aW9uOlxcbicsICdzdWNjZXNzJywgcXVpZXQpO1xuICAgICAgbG9nKGNsZWFuZWRDb250ZW50LCAnZGVmYXVsdCcsIHF1aWV0KTtcbiAgICAgIGJyZWFrO1xuXG4gICAgY2FzZSAndGVzdCc6XG4gICAgICBsb2coJ1xcbkdlbmVyYXRlZCBUZXN0czpcXG4nLCAnc3VjY2VzcycsIHF1aWV0KTtcbiAgICAgIGxvZyhjbGVhbmVkQ29udGVudCwgJ2RlZmF1bHQnLCBxdWlldCk7XG4gICAgICBicmVhaztcblxuICAgIGNhc2UgJ29wdGltaXplJzpcbiAgICAgIGxvZygnXFxuT3B0aW1pemF0aW9uIFN1Z2dlc3Rpb25zOlxcbicsICdzdWNjZXNzJywgcXVpZXQpO1xuICAgICAgbG9nKGNsZWFuZWRDb250ZW50LCAnZGVmYXVsdCcsIHF1aWV0KTtcbiAgICAgIGJyZWFrO1xuXG4gICAgZGVmYXVsdDpcbiAgICAgIGxvZygnXFxuQUkgUmVzcG9uc2U6XFxuJywgJ3N1Y2Nlc3MnLCBxdWlldCk7XG4gICAgICBsb2coY2xlYW5lZENvbnRlbnQsICdkZWZhdWx0JywgcXVpZXQpO1xuICAgICAgYnJlYWs7XG4gIH1cbn07XG5cbmNvbnN0IGNsZWFuUmVzcG9uc2UgPSAoY29udGVudDogc3RyaW5nLCBvcHRpb25zOiBBSU9wdGlvbnMpOiBzdHJpbmcgPT4ge1xuICBjb25zdCB7cHJvbXB0ID0gJycsIHRhc2sgPSAnaGVscCd9ID0gb3B0aW9ucztcblxuICBpZighY29udGVudCkge1xuICAgIHJldHVybiBjb250ZW50O1xuICB9XG5cbiAgbGV0IGNsZWFuZWRDb250ZW50ID0gY29udGVudDtcblxuICBjb25zdCB0YXNrSW5zdHJ1Y3Rpb25zOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICAgIGFuYWx5emU6ICdBbmFseXplIHRoZSBmb2xsb3dpbmcgY29kZTonLFxuICAgIGFzazogJ1Byb3ZpZGUgZ3VpZGFuY2Ugb24gdGhlIGZvbGxvd2luZyBkZXZlbG9wbWVudCBxdWVzdGlvbjonLFxuICAgIGV4cGxhaW46ICdFeHBsYWluIHRoZSBmb2xsb3dpbmcgY29kZSBpbiBkZXRhaWwsIGluY2x1ZGluZyBhbnkgcGF0dGVybnMsIHBvdGVudGlhbCBpc3N1ZXMsIGFuZCBpbXByb3ZlbWVudCBzdWdnZXN0aW9uczonLFxuICAgIGdlbmVyYXRlOiAnR2VuZXJhdGUgY29kZSBhY2NvcmRpbmcgdG8gdGhlIGZvbGxvd2luZyByZXF1ZXN0LiBNYWtlIHN1cmUgaXQgZm9sbG93cyBiZXN0IHByYWN0aWNlcyBhbmQgaXMgd2VsbCBkb2N1bWVudGVkOicsXG4gICAgaGVscDogJ1Byb3ZpZGUgZ3VpZGFuY2Ugb24gdGhlIGZvbGxvd2luZyBkZXZlbG9wbWVudCBxdWVzdGlvbjonLFxuICAgIG9wdGltaXplOiAnQW5hbHl6ZSB0aGUgZm9sbG93aW5nIGNvZGUvY29uZmlndXJhdGlvbiBhbmQgc3VnZ2VzdCBvcHRpbWl6YXRpb24gaW1wcm92ZW1lbnRzOicsXG4gICAgdGVzdDogJ0dlbmVyYXRlIGNvbXByZWhlbnNpdmUgdW5pdCB0ZXN0cyBmb3IgdGhlIGZvbGxvd2luZyBjb2RlOidcbiAgfTtcblxuICBjb25zdCBpbnN0cnVjdGlvbiA9IHRhc2tJbnN0cnVjdGlvbnNbdGFza10gfHwgJyc7XG5cbiAgaWYoaW5zdHJ1Y3Rpb24gJiYgY2xlYW5lZENvbnRlbnQuaW5jbHVkZXMoaW5zdHJ1Y3Rpb24pKSB7XG4gICAgY2xlYW5lZENvbnRlbnQgPSBjbGVhbmVkQ29udGVudC5yZXBsYWNlKGluc3RydWN0aW9uLCAnJykudHJpbSgpO1xuICB9XG5cbiAgaWYocHJvbXB0ICYmIGNsZWFuZWRDb250ZW50LmluY2x1ZGVzKHByb21wdCkpIHtcbiAgICBjbGVhbmVkQ29udGVudCA9IGNsZWFuZWRDb250ZW50LnJlcGxhY2UocHJvbXB0LCAnJykudHJpbSgpO1xuICB9XG5cbiAgaWYoY2xlYW5lZENvbnRlbnQuaW5jbHVkZXMoJz09PUNPTlRFWFQ9PT0nKSkge1xuICAgIGNsZWFuZWRDb250ZW50ID0gY2xlYW5lZENvbnRlbnQuc3BsaXQoJz09PUNPTlRFWFQ9PT0nKVswXS50cmltKCk7XG4gIH1cblxuICBpZighY2xlYW5lZENvbnRlbnQpIHtcbiAgICByZXR1cm4gY29udGVudDtcbiAgfVxuXG4gIHJldHVybiBjbGVhbmVkQ29udGVudDtcbn07XG5cbmNvbnN0IGdldFByb3ZpZGVyQXV0aCA9IChwcm92aWRlcjogc3RyaW5nKTogc3RyaW5nIHwgdW5kZWZpbmVkID0+IHtcbiAgaWYocHJvY2Vzcy5jd2QoKS5pbmNsdWRlcygncmVha3RvcicpKSB7XG4gICAgcmV0dXJuICdjdXJzb3ItYXV0aCc7XG4gIH1cblxuICBpZihwcm9jZXNzLmVudi5BSV9BUElfS0VZKSB7XG4gICAgcmV0dXJuIHByb2Nlc3MuZW52LkFJX0FQSV9LRVk7XG4gIH1cblxuICBpZihwcm92aWRlciA9PT0gJ25vbmUnICYmIHByb2Nlc3MuZW52LkNVUlNPUl9JREUgPT09ICd0cnVlJykge1xuICAgIHJldHVybiAnY3Vyc29yLWF1dGgnO1xuICB9XG5cbiAgc3dpdGNoKHByb3ZpZGVyKSB7XG4gICAgY2FzZSAnb3BlbmFpJzpcbiAgICAgIHJldHVybiBwcm9jZXNzLmVudi5PUEVOQUlfQVBJX0tFWTtcbiAgICBjYXNlICdhbnRocm9waWMnOlxuICAgICAgcmV0dXJuIHByb2Nlc3MuZW52LkFOVEhST1BJQ19BUElfS0VZO1xuICAgIGNhc2UgJ2N1cnNvcic6XG4gICAgICByZXR1cm4gJ2N1cnNvci1hdXRoJztcbiAgICBjYXNlICdjb3BpbG90JzpcbiAgICAgIHJldHVybiBwcm9jZXNzLmVudi5HSVRIVUJfVE9LRU47XG4gICAgY2FzZSAnbm9uZSc6XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG59O1xuXG5jb25zdCBkZXRlY3RDdXJzb3JJREUgPSAoKTogYm9vbGVhbiA9PiB7XG4gIGlmKHByb2Nlc3MuZW52LkNVUlNPUl9JREUgPT09ICd0cnVlJykge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgY29uc3QgcG9zc2libGVDdXJzb3JTaWduYWxzID0gW1xuICAgIHByb2Nlc3MuZW52LkNVUlNPUl9FWFRFTlNJT04gPT09ICd0cnVlJyxcbiAgICBwcm9jZXNzLmVudi5DVVJTT1JfVEVSTUlOQUwgPT09ICd0cnVlJyxcbiAgICBwcm9jZXNzLmVudi5DVVJTT1JfQVBQID09PSAndHJ1ZScsXG4gICAgcHJvY2Vzcy5lbnYuUEFUSD8uaW5jbHVkZXMoJ2N1cnNvcicpLFxuICAgICEhcHJvY2Vzcy5lbnYuQ1VSU09SX1NFU1NJT05fSURcbiAgXTtcblxuICBjb25zdCBpc0N1cnNvcklERSA9IHBvc3NpYmxlQ3Vyc29yU2lnbmFscy5zb21lKChzaWduYWwpID0+IHNpZ25hbCk7XG5cbiAgaWYoaXNDdXJzb3JJREUpIHtcbiAgICBwcm9jZXNzLmVudi5DVVJTT1JfSURFID0gJ3RydWUnO1xuICB9XG5cbiAgcmV0dXJuIGlzQ3Vyc29ySURFO1xufTtcblxuZXhwb3J0IGNvbnN0IGFpRnVuY3Rpb24gPSBhc3luYyAob3B0aW9uczogQUlPcHRpb25zKTogUHJvbWlzZTxhbnk+ID0+IHtcbiAgdHJ5IHtcbiAgICBjb25zdCBjb25maWcgPSBMZXhDb25maWcuY29uZmlnIHx8IHt9O1xuICAgIGNvbnN0IGFpQ29uZmlnID0gY29uZmlnLmFpIHx8IHt9O1xuICAgIGNvbnN0IHByb3ZpZGVyID0gb3B0aW9ucy5wcm92aWRlciB8fCBhaUNvbmZpZy5wcm92aWRlciB8fCAnbm9uZSc7XG5cbiAgICBpZihwcm92aWRlciA9PT0gJ25vbmUnICYmICFwcm9jZXNzLmVudi5DVVJTT1JfRVhURU5TSU9OKSB7XG4gICAgICBsb2coYCR7Y2hhbGsucmVkKCdFcnJvcjonKX0gTm8gQUkgcHJvdmlkZXIgY29uZmlndXJlZC5gLCAnZXJyb3InKTtcbiAgICAgIHJldHVybiB7ZXJyb3I6ICdObyBBSSBwcm92aWRlciBjb25maWd1cmVkJ307XG4gICAgfVxuXG4gICAgY29uc3QgdGFzayA9IG9wdGlvbnMudGFzayB8fCAnYXNrJztcbiAgICBjb25zdCB2YWxpZFRhc2tzID0gWydleHBsYWluJywgJ2dlbmVyYXRlJywgJ3Rlc3QnLCAnYW5hbHl6ZScsICdhc2snXTtcblxuICAgIGlmKCF2YWxpZFRhc2tzLmluY2x1ZGVzKHRhc2spKSB7XG4gICAgICBsb2coYCR7Y2hhbGsucmVkKCdFcnJvcjonKX0gSW52YWxpZCB0YXNrIFwiJHt0YXNrfVwiLiBWYWxpZCB0YXNrcyBhcmU6ICR7dmFsaWRUYXNrcy5qb2luKCcsICcpfWAsICdlcnJvcicpO1xuICAgICAgcmV0dXJuIHtlcnJvcjogYEludmFsaWQgdGFzayBcIiR7dGFza31cImB9O1xuICAgIH1cblxuICAgIGNvbnN0IHtwcm9tcHR9ID0gb3B0aW9ucztcblxuICAgIGlmKCFwcm9tcHQpIHtcbiAgICAgIGxvZyhgJHtjaGFsay5yZWQoJ0Vycm9yOicpfSBObyBwcm9tcHQgcHJvdmlkZWQuIFVzZSAtLXByb21wdCBcIllvdXIgcHJvbXB0IGhlcmVcImAsICdlcnJvcicpO1xuICAgICAgcmV0dXJuIHtlcnJvcjogJ05vIHByb21wdCBwcm92aWRlZCd9O1xuICAgIH1cblxuICAgIGxldCBjb250ZXh0ID0gJyc7XG5cbiAgICBpZihvcHRpb25zLmZpbGUpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IGZzID0gYXdhaXQgaW1wb3J0KCdmcy9wcm9taXNlcycpO1xuICAgICAgICBjb25zdCBnbG9iID0gYXdhaXQgaW1wb3J0KCdnbG9iJyk7XG4gICAgICAgIGNvbnN0IGZpbGVzID0gYXdhaXQgZ2xvYi5nbG9iKG9wdGlvbnMuZmlsZSk7XG5cbiAgICAgICAgaWYoZmlsZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgbG9nKGAke2NoYWxrLnllbGxvdygnV2FybmluZzonKX0gTm8gZmlsZXMgZm91bmQgbWF0Y2hpbmcgXCIke29wdGlvbnMuZmlsZX1cImAsICd3YXJuaW5nJyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgZm9yKGNvbnN0IGZpbGUgb2YgZmlsZXMpIHtcbiAgICAgICAgICAgIGNvbnN0IGNvbnRlbnQgPSBhd2FpdCBmcy5yZWFkRmlsZShmaWxlLCAndXRmOCcpO1xuICAgICAgICAgICAgY29udGV4dCArPSBgXFxuPT09RklMRTogJHtmaWxlfT09PVxcbiR7Y29udGVudH1cXG5gO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSBjYXRjaChlcnJvcikge1xuICAgICAgICBsb2coYCR7Y2hhbGsueWVsbG93KCdXYXJuaW5nOicpfSBFcnJvciByZWFkaW5nIGZpbGU6ICR7ZXJyb3IubWVzc2FnZX1gLCAnd2FybmluZycpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmKG9wdGlvbnMuZGlyKSB7XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCB7ZXhlY2FTeW5jfSA9IGF3YWl0IGltcG9ydCgnZXhlY2EnKTtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gZXhlY2FTeW5jKCdmaW5kJywgW29wdGlvbnMuZGlyLCAnLXR5cGUnLCAnZicsICd8JywgJ3NvcnQnXSk7XG4gICAgICAgIGNvbnRleHQgKz0gYFxcbj09PVByb2plY3Qgc3RydWN0dXJlOj09PVxcbiR7cmVzdWx0LnN0ZG91dH1cXG5gO1xuICAgICAgfSBjYXRjaChlcnJvcikge1xuICAgICAgICBsb2coYCR7Y2hhbGsueWVsbG93KCdXYXJuaW5nOicpfSBFcnJvciByZWFkaW5nIGRpcmVjdG9yeTogJHtlcnJvci5tZXNzYWdlfWAsICd3YXJuaW5nJyk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgbGV0IGZvcm1hdHRlZFByb21wdCA9ICcnO1xuXG4gICAgc3dpdGNoKHRhc2spIHtcbiAgICAgIGNhc2UgJ2V4cGxhaW4nOlxuICAgICAgICBmb3JtYXR0ZWRQcm9tcHQgPSBgRXhwbGFpbiB0aGUgZm9sbG93aW5nIGNvZGU6XFxuJHtwcm9tcHR9YDtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdnZW5lcmF0ZSc6XG4gICAgICAgIGZvcm1hdHRlZFByb21wdCA9IGBHZW5lcmF0ZSBjb2RlIGFjY29yZGluZyB0byB0aGUgZm9sbG93aW5nIHJlcXVlc3Q6XFxuJHtwcm9tcHR9YDtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICd0ZXN0JzpcbiAgICAgICAgZm9ybWF0dGVkUHJvbXB0ID0gYEdlbmVyYXRlIGNvbXByZWhlbnNpdmUgdW5pdCB0ZXN0czpcXG4ke3Byb21wdH1gO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2FuYWx5emUnOlxuICAgICAgICBmb3JtYXR0ZWRQcm9tcHQgPSBgQW5hbHl6ZSB0aGUgZm9sbG93aW5nIGNvZGU6XFxuJHtwcm9tcHR9YDtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdhc2snOlxuICAgICAgICBmb3JtYXR0ZWRQcm9tcHQgPSBgUHJvdmlkZSBndWlkYW5jZSBvbiB0aGUgZm9sbG93aW5nIGRldmVsb3BtZW50IHF1ZXN0aW9uOlxcbiR7cHJvbXB0fWA7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIGlmKGNvbnRleHQpIHtcbiAgICAgIGZvcm1hdHRlZFByb21wdCArPSBgXFxuPT09Q09OVEVYVD09PVxcbiR7Y29udGV4dH1gO1xuICAgIH1cblxuICAgIGlmKChwcm92aWRlciA9PT0gJ2N1cnNvcicgfHwgcHJvY2Vzcy5lbnYuQ1VSU09SX0VYVEVOU0lPTikgJiYgdGFzayA9PT0gJ2dlbmVyYXRlJykge1xuICAgICAgbG9nKCdVc2luZyBDdXJzb3IgSURFIGZvciBjb2RlIGdlbmVyYXRpb24uLi4nLCAnaW5mbycpO1xuICAgICAgbG9nKCdOb3RlOiBGb3IgZnVsbCBjb2RlIGdlbmVyYXRpb24gY2FwYWJpbGl0aWVzLCBwbGVhc2UgdXNlIEN1cnNvciBJREUgZGlyZWN0bHkgd2l0aCBDbWQrTCBvciBDbWQrSy4nLCAnaW5mbycpO1xuICAgICAgbG9nKCdUaGUgQ0xJIGludGVncmF0aW9uIGhhcyBsaW1pdGVkIGNhcGFiaWxpdGllcyBmb3IgY29kZSBnZW5lcmF0aW9uLicsICd3YXJuaW5nJyk7XG4gICAgfSBlbHNlIGlmKHByb3ZpZGVyID09PSAnY3Vyc29yJyB8fCBwcm9jZXNzLmVudi5DVVJTT1JfRVhURU5TSU9OKSB7XG4gICAgICBsb2coJ1VzaW5nIEN1cnNvciBJREUgZm9yIEFJIGFzc2lzdGFuY2UuLi4nLCAnaW5mbycpO1xuICAgICAgbG9nKCdOb3RlOiBUaGlzIGlzIGEgbGltaXRlZCBpbnRlZ3JhdGlvbi4gRm9yIGZ1bGwgQUkgY2FwYWJpbGl0aWVzLCB1c2UgQ3Vyc29yIElERSBkaXJlY3RseS4nLCAnaW5mbycpO1xuICAgIH0gZWxzZSB7XG4gICAgICBsb2coYFVzaW5nICR7cHJvdmlkZXJ9IGZvciBBSSBhc3Npc3RhbmNlLi4uYCwgJ2luZm8nKTtcbiAgICB9XG5cbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGNhbGxBSVNlcnZpY2UoZm9ybWF0dGVkUHJvbXB0LCBvcHRpb25zLnF1aWV0IHx8IGZhbHNlKTtcblxuICAgIGxvZyhgXFxuJHtyZXNwb25zZX1gLCAnc3VjY2VzcycpO1xuXG4gICAgcmV0dXJuIHtyZXNwb25zZX07XG4gIH0gY2F0Y2goZXJyb3IpIHtcbiAgICBsb2coYCR7Y2hhbGsucmVkKCdFcnJvcjonKX0gJHtlcnJvci5tZXNzYWdlfWAsICdlcnJvcicpO1xuICAgIHJldHVybiB7ZXJyb3I6IGVycm9yLm1lc3NhZ2V9O1xuICB9XG59O1xuXG5leHBvcnQgY29uc3QgYWkgPSBuZXcgQ29tbWFuZCgnYWknKVxuICAuZGVzY3JpcHRpb24oJ1VzZSBBSSB0byBoZWxwIHdpdGggZGV2ZWxvcG1lbnQgdGFza3MnKVxuICAub3B0aW9uKCctLXByb3ZpZGVyIDxwcm92aWRlcj4nLCAnQUkgcHJvdmlkZXIgdG8gdXNlIChvcGVuYWksIGFudGhyb3BpYywgY3Vyc29yKScpXG4gIC5vcHRpb24oJy0tdGFzayA8dGFzaz4nLCAnVGFzayB0byBwZXJmb3JtIChleHBsYWluLCBnZW5lcmF0ZSwgdGVzdCwgYW5hbHl6ZSwgYXNrKScpXG4gIC5vcHRpb24oJy0tcHJvbXB0IDxwcm9tcHQ+JywgJ1Byb21wdCB0byBzZW5kIHRvIEFJJylcbiAgLm9wdGlvbignLS1maWxlIDxmaWxlPicsICdGaWxlIHRvIGFuYWx5emUnKVxuICAub3B0aW9uKCctLWRpciA8ZGlyPicsICdEaXJlY3RvcnkgdG8gYW5hbHl6ZScpXG4gIC5hY3Rpb24oYXN5bmMgKG9wdGlvbnM6IEFJT3B0aW9ucykgPT4ge1xuICAgIGF3YWl0IGFpRnVuY3Rpb24ob3B0aW9ucyk7XG4gIH0pO1xuXG5leHBvcnQgZGVmYXVsdCBhaTsiXSwibmFtZXMiOlsiY2hhbGsiLCJDb21tYW5kIiwicmVhZEZpbGVTeW5jIiwic3luYyIsImdsb2JTeW5jIiwiTGV4Q29uZmlnIiwiY2FsbEFJU2VydmljZSIsImxvZyIsInByb2Nlc3MiLCJlbnYiLCJDVVJTT1JfRVhURU5TSU9OIiwiQ1VSU09SX1RFUk1JTkFMIiwiQ1VSU09SX0FQUCIsIlBBVEgiLCJpbmNsdWRlcyIsIkNVUlNPUl9TRVNTSU9OX0lEIiwiQ1VSU09SX0lERSIsImdldEZpbGVDb250ZXh0IiwiZmlsZVBhdGgiLCJjb250ZW50IiwiX2Vycm9yIiwiZ2V0UHJvamVjdENvbnRleHQiLCJvcHRpb25zIiwiZmlsZSIsInRhc2siLCJjb250ZXh0IiwicHJvamVjdENvbnRleHQiLCJmaWxlcyIsImN3ZCIsImlnbm9yZSIsIm1heERlcHRoIiwiam9pbiIsInRlc3RDb25maWciLCJ3ZWJwYWNrQ29uZmlnIiwiY29uc3RydWN0UHJvbXB0IiwicHJvbXB0IiwidGFza0luc3RydWN0aW9ucyIsImFuYWx5emUiLCJhc2siLCJleHBsYWluIiwiZ2VuZXJhdGUiLCJoZWxwIiwib3B0aW1pemUiLCJ0ZXN0IiwidGFza0luc3RydWN0aW9uIiwiZnVsbFByb21wdCIsImRpc3BsYXlSZXNwb25zZSIsInJlc3BvbnNlIiwicXVpZXQiLCJjaG9pY2VzIiwibWVzc2FnZSIsIm1lc3NhZ2VDb250ZW50IiwicmVzcG9uc2VDb250ZW50IiwiY2xlYW5lZENvbnRlbnQiLCJjbGVhblJlc3BvbnNlIiwiaW5zdHJ1Y3Rpb24iLCJyZXBsYWNlIiwidHJpbSIsInNwbGl0IiwiZ2V0UHJvdmlkZXJBdXRoIiwicHJvdmlkZXIiLCJBSV9BUElfS0VZIiwiT1BFTkFJX0FQSV9LRVkiLCJBTlRIUk9QSUNfQVBJX0tFWSIsIkdJVEhVQl9UT0tFTiIsInVuZGVmaW5lZCIsImRldGVjdEN1cnNvcklERSIsInBvc3NpYmxlQ3Vyc29yU2lnbmFscyIsImlzQ3Vyc29ySURFIiwic29tZSIsInNpZ25hbCIsImFpRnVuY3Rpb24iLCJjb25maWciLCJhaUNvbmZpZyIsImFpIiwicmVkIiwiZXJyb3IiLCJ2YWxpZFRhc2tzIiwiZnMiLCJnbG9iIiwibGVuZ3RoIiwieWVsbG93IiwicmVhZEZpbGUiLCJkaXIiLCJleGVjYVN5bmMiLCJyZXN1bHQiLCJzdGRvdXQiLCJmb3JtYXR0ZWRQcm9tcHQiLCJkZXNjcmlwdGlvbiIsIm9wdGlvbiIsImFjdGlvbiJdLCJtYXBwaW5ncyI6IkFBQUE7OztDQUdDLEdBQ0QsT0FBT0EsV0FBVyxRQUFRO0FBQzFCLFNBQVFDLE9BQU8sUUFBTyxZQUFZO0FBQ2xDLFNBQVFDLFlBQVksUUFBTyxLQUFLO0FBQ2hDLFNBQVFDLFFBQVFDLFFBQVEsUUFBTyxPQUFPO0FBRXRDLFNBQVFDLFNBQVMsUUFBTyxxQkFBcUI7QUFDN0MsU0FBUUMsYUFBYSxRQUFPLDJCQUEyQjtBQUN2RCxTQUFRQyxHQUFHLFFBQU8scUJBQXFCO0FBRXZDLElBQUdDLFFBQVFDLEdBQUcsQ0FBQ0MsZ0JBQWdCLEtBQUssVUFDbENGLFFBQVFDLEdBQUcsQ0FBQ0UsZUFBZSxLQUFLLFVBQ2hDSCxRQUFRQyxHQUFHLENBQUNHLFVBQVUsS0FBSyxVQUMzQkosUUFBUUMsR0FBRyxDQUFDSSxJQUFJLEVBQUVDLFNBQVMsYUFDM0JOLFFBQVFDLEdBQUcsQ0FBQ00saUJBQWlCLEVBQUU7SUFDL0JQLFFBQVFDLEdBQUcsQ0FBQ08sVUFBVSxHQUFHO0FBQzNCO0FBZ0JBLE1BQU1DLGlCQUFpQixDQUFDQztJQUN0QixJQUFJO1FBQ0YsTUFBTUMsVUFBVWpCLGFBQWFnQixVQUFVO1FBQ3ZDLE9BQU8sQ0FBQyxNQUFNLEVBQUVBLFNBQVMsSUFBSSxFQUFFQyxTQUFTO0lBQzFDLEVBQUUsT0FBTUMsUUFBUTtRQUNkLE9BQU8sQ0FBQyxvQkFBb0IsRUFBRUYsVUFBVTtJQUMxQztBQUNGO0FBRUEs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
302
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21tYW5kcy9haS9haS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvcHlyaWdodCAoYykgMjAxOC1QcmVzZW50LCBOaXRyb2dlbiBMYWJzLCBJbmMuXG4gKiBDb3B5cmlnaHRzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS4gU2VlIHRoZSBhY2NvbXBhbnlpbmcgTElDRU5TRSBmaWxlIGZvciB0ZXJtcy5cbiAqL1xuaW1wb3J0IGNoYWxrIGZyb20gJ2NoYWxrJztcbmltcG9ydCB7Q29tbWFuZH0gZnJvbSAnY29tbWFuZGVyJztcbmltcG9ydCB7cmVhZEZpbGVTeW5jfSBmcm9tICdmcyc7XG5pbXBvcnQge3N5bmMgYXMgZ2xvYlN5bmN9IGZyb20gJ2dsb2InO1xuXG5pbXBvcnQge0xleENvbmZpZ30gZnJvbSAnLi4vLi4vTGV4Q29uZmlnLmpzJztcbmltcG9ydCB7Y2FsbEFJU2VydmljZX0gZnJvbSAnLi4vLi4vdXRpbHMvYWlTZXJ2aWNlLmpzJztcbmltcG9ydCB7bG9nfSBmcm9tICcuLi8uLi91dGlscy9sb2cuanMnO1xuXG5pZihwcm9jZXNzLmVudi5DVVJTT1JfRVhURU5TSU9OID09PSAndHJ1ZScgfHxcbiAgcHJvY2Vzcy5lbnYuQ1VSU09SX1RFUk1JTkFMID09PSAndHJ1ZScgfHxcbiAgcHJvY2Vzcy5lbnYuQ1VSU09SX0FQUCA9PT0gJ3RydWUnIHx8XG4gIHByb2Nlc3MuZW52LlBBVEg/LmluY2x1ZGVzKCdjdXJzb3InKSB8fFxuICBwcm9jZXNzLmVudi5DVVJTT1JfU0VTU0lPTl9JRCkge1xuICBwcm9jZXNzLmVudi5DVVJTT1JfSURFID0gJ3RydWUnO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFJT3B0aW9ucyB7XG4gIHJlYWRvbmx5IGNsaU5hbWU/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IGNvbnRleHQ/OiBib29sZWFuO1xuICByZWFkb25seSBmaWxlPzogc3RyaW5nO1xuICByZWFkb25seSBsZXhDb25maWc/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IG1vZGVsPzogc3RyaW5nO1xuICByZWFkb25seSBwcm9tcHQ/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IHF1aWV0PzogYm9vbGVhbjtcbiAgcmVhZG9ubHkgdGFzaz86ICdnZW5lcmF0ZScgfCAnZXhwbGFpbicgfCAndGVzdCcgfCAnb3B0aW1pemUnIHwgJ2hlbHAnIHwgJ2FzaycgfCAnYW5hbHl6ZSc7XG4gIHJlYWRvbmx5IGRlYnVnPzogYm9vbGVhbjtcbiAgcmVhZG9ubHkgcHJvdmlkZXI/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IGRpcj86IHN0cmluZztcbn1cblxuY29uc3QgZ2V0RmlsZUNvbnRleHQgPSAoZmlsZVBhdGg6IHN0cmluZyk6IHN0cmluZyA9PiB7XG4gIHRyeSB7XG4gICAgY29uc3QgY29udGVudCA9IHJlYWRGaWxlU3luYyhmaWxlUGF0aCwgJ3V0Zi04Jyk7XG4gICAgcmV0dXJuIGBGaWxlOiAke2ZpbGVQYXRofVxcblxcbiR7Y29udGVudH1gO1xuICB9IGNhdGNoKF9lcnJvcikge1xuICAgIHJldHVybiBgRXJyb3IgcmVhZGluZyBmaWxlOiAke2ZpbGVQYXRofWA7XG4gIH1cbn07XG5cbmNvbnN0IGdldFByb2plY3RDb250ZXh0ID0gYXN5bmMgKG9wdGlvbnM6IEFJT3B0aW9ucyk6IFByb21pc2U8c3RyaW5nPiA9PiB7XG4gIGNvbnN0IHtmaWxlLCB0YXNrLCBjb250ZXh0fSA9IG9wdGlvbnM7XG5cbiAgaWYoY29udGV4dCA9PT0gZmFsc2UpIHtcbiAgICByZXR1cm4gJyc7XG4gIH1cblxuICBsZXQgcHJvamVjdENvbnRleHQgPSAnJztcblxuICBpZihmaWxlKSB7XG4gICAgcHJvamVjdENvbnRleHQgKz0gZ2V0RmlsZUNvbnRleHQoZmlsZSk7XG4gIH1cblxuICBzd2l0Y2godGFzaykge1xuICAgIGNhc2UgJ2dlbmVyYXRlJzpcbiAgICAgIGNvbnN0IGZpbGVzID0gZ2xvYlN5bmMoJ3NyYy8qKi8qLnt0cyx0c3gsanMsanN4fScsIHtcbiAgICAgICAgY3dkOiBwcm9jZXNzLmN3ZCgpLFxuICAgICAgICBpZ25vcmU6IFsnKiovbm9kZV9tb2R1bGVzLyoqJywgJyoqL2xpYi8qKicsICcqKi9kaXN0LyoqJywgJyoqLyoudGVzdC4qJywgJyoqLyouc3BlYy4qJ10sXG4gICAgICAgIG1heERlcHRoOiAzXG4gICAgICB9KTtcbiAgICAgIHByb2plY3RDb250ZXh0ICs9IGBcXG5cXG5Qcm9qZWN0IHN0cnVjdHVyZTpcXG4ke2ZpbGVzLmpvaW4oJ1xcbicpfWA7XG4gICAgICBicmVhaztcblxuICAgIGNhc2UgJ3Rlc3QnOlxuICAgICAgaWYoZmlsZSkge1xuICAgICAgICBjb25zdCB0ZXN0Q29uZmlnID0gZ2V0RmlsZUNvbnRleHQoJ3ZpdGVzdC5jb25maWcubWpzJyk7XG4gICAgICAgIHByb2plY3RDb250ZXh0ICs9IGBcXG5cXG5UZXN0IGNvbmZpZ3VyYXRpb246XFxuJHt0ZXN0Q29uZmlnfWA7XG4gICAgICB9XG4gICAgICBicmVhaztcblxuICAgIGNhc2UgJ29wdGltaXplJzpcbiAgICAgIGNvbnN0IHdlYnBhY2tDb25maWcgPSBnZXRGaWxlQ29udGV4dCgnd2VicGFjay5jb25maWcuanMnKTtcbiAgICAgIHByb2plY3RDb250ZXh0ICs9IGBcXG5cXG5XZWJwYWNrIGNvbmZpZ3VyYXRpb246XFxuJHt3ZWJwYWNrQ29uZmlnfWA7XG4gICAgICBicmVhaztcblxuICAgIGRlZmF1bHQ6XG4gICAgICBicmVhaztcbiAgfVxuXG4gIHJldHVybiBwcm9qZWN0Q29udGV4dDtcbn07XG5cbmNvbnN0IGNvbnN0cnVjdFByb21wdCA9IChvcHRpb25zOiBBSU9wdGlvbnMsIHByb2plY3RDb250ZXh0OiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICBjb25zdCB7dGFzayA9ICdoZWxwJywgcHJvbXB0ID0gJyd9ID0gb3B0aW9ucztcblxuICBjb25zdCB0YXNrSW5zdHJ1Y3Rpb25zOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICAgIGFuYWx5emU6ICdBbmFseXplIHRoZSBmb2xsb3dpbmcgY29kZTonLFxuICAgIGFzazogJ1Byb3ZpZGUgZ3VpZGFuY2Ugb24gdGhlIGZvbGxvd2luZyBkZXZlbG9wbWVudCBxdWVzdGlvbjonLFxuICAgIGV4cGxhaW46ICdFeHBsYWluIHRoZSBmb2xsb3dpbmcgY29kZSBpbiBkZXRhaWwsIGluY2x1ZGluZyBhbnkgcGF0dGVybnMsIHBvdGVudGlhbCBpc3N1ZXMsIGFuZCBpbXByb3ZlbWVudCBzdWdnZXN0aW9uczonLFxuICAgIGdlbmVyYXRlOiAnR2VuZXJhdGUgY29kZSBhY2NvcmRpbmcgdG8gdGhlIGZvbGxvd2luZyByZXF1ZXN0LiBNYWtlIHN1cmUgaXQgZm9sbG93cyBiZXN0IHByYWN0aWNlcyBhbmQgaXMgd2VsbCBkb2N1bWVudGVkOicsXG4gICAgaGVscDogJ1Byb3ZpZGUgZ3VpZGFuY2Ugb24gdGhlIGZvbGxvd2luZyBkZXZlbG9wbWVudCBxdWVzdGlvbjonLFxuICAgIG9wdGltaXplOiAnQW5hbHl6ZSB0aGUgZm9sbG93aW5nIGNvZGUvY29uZmlndXJhdGlvbiBhbmQgc3VnZ2VzdCBvcHRpbWl6YXRpb24gaW1wcm92ZW1lbnRzOicsXG4gICAgdGVzdDogJ0dlbmVyYXRlIGNvbXByZWhlbnNpdmUgdW5pdCB0ZXN0cyBmb3IgdGhlIGZvbGxvd2luZyBjb2RlOidcbiAgfTtcblxuICBjb25zdCB0YXNrSW5zdHJ1Y3Rpb24gPSB0YXNrSW5zdHJ1Y3Rpb25zW3Rhc2tdIHx8IHRhc2tJbnN0cnVjdGlvbnMuaGVscDtcblxuICBsZXQgZnVsbFByb21wdCA9IGAke3Rhc2tJbnN0cnVjdGlvbn1cXG5cXG4ke3Byb21wdH1gO1xuXG4gIGlmKHByb2plY3RDb250ZXh0KSB7XG4gICAgZnVsbFByb21wdCArPSBgXFxuXFxuPT09Q09OVEVYVD09PVxcbiR7cHJvamVjdENvbnRleHR9YDtcbiAgfVxuXG4gIHJldHVybiBmdWxsUHJvbXB0O1xufTtcblxuY29uc3QgZGlzcGxheVJlc3BvbnNlID0gKHJlc3BvbnNlOiBhbnksIG9wdGlvbnM6IEFJT3B0aW9ucyk6IHZvaWQgPT4ge1xuICBjb25zdCB7dGFzayA9ICdoZWxwJywgcXVpZXQgPSBmYWxzZX0gPSBvcHRpb25zO1xuXG4gIGxldCBjb250ZW50ID0gJyc7XG5cbiAgaWYodHlwZW9mIHJlc3BvbnNlID09PSAnc3RyaW5nJykge1xuICAgIGNvbnRlbnQgPSByZXNwb25zZTtcbiAgfSBlbHNlIGlmKHJlc3BvbnNlLmNob2ljZXM/LlswXT8ubWVzc2FnZT8uY29udGVudCkge1xuICAgIGNvbnN0IHtjb250ZW50OiBtZXNzYWdlQ29udGVudH0gPSByZXNwb25zZS5jaG9pY2VzWzBdLm1lc3NhZ2U7XG4gICAgY29udGVudCA9IG1lc3NhZ2VDb250ZW50O1xuICB9IGVsc2UgaWYocmVzcG9uc2UuY29udGVudCkge1xuICAgIGNvbnN0IHtjb250ZW50OiByZXNwb25zZUNvbnRlbnR9ID0gcmVzcG9uc2U7XG4gICAgY29udGVudCA9IHJlc3BvbnNlQ29udGVudDtcbiAgfSBlbHNlIHtcbiAgICBjb250ZW50ID0gJ05vIHJlc3BvbnNlIHJlY2VpdmVkIGZyb20gQUkgbW9kZWwnO1xuICB9XG5cbiAgY29uc3QgY2xlYW5lZENvbnRlbnQgPSBjbGVhblJlc3BvbnNlKGNvbnRlbnQsIG9wdGlvbnMpO1xuXG4gIHN3aXRjaCh0YXNrKSB7XG4gICAgY2FzZSAnZ2VuZXJhdGUnOlxuICAgICAgbG9nKCdcXG5HZW5lcmF0ZWQgQ29kZTpcXG4nLCAnc3VjY2VzcycsIHF1aWV0KTtcbiAgICAgIGxvZyhjbGVhbmVkQ29udGVudCwgJ2RlZmF1bHQnLCBxdWlldCk7XG4gICAgICBicmVhaztcblxuICAgIGNhc2UgJ2V4cGxhaW4nOlxuICAgICAgbG9nKCdcXG5Db2RlIEV4cGxhbmF0aW9uOlxcbicsICdzdWNjZXNzJywgcXVpZXQpO1xuICAgICAgbG9nKGNsZWFuZWRDb250ZW50LCAnZGVmYXVsdCcsIHF1aWV0KTtcbiAgICAgIGJyZWFrO1xuXG4gICAgY2FzZSAndGVzdCc6XG4gICAgICBsb2coJ1xcbkdlbmVyYXRlZCBUZXN0czpcXG4nLCAnc3VjY2VzcycsIHF1aWV0KTtcbiAgICAgIGxvZyhjbGVhbmVkQ29udGVudCwgJ2RlZmF1bHQnLCBxdWlldCk7XG4gICAgICBicmVhaztcblxuICAgIGNhc2UgJ29wdGltaXplJzpcbiAgICAgIGxvZygnXFxuT3B0aW1pemF0aW9uIFN1Z2dlc3Rpb25zOlxcbicsICdzdWNjZXNzJywgcXVpZXQpO1xuICAgICAgbG9nKGNsZWFuZWRDb250ZW50LCAnZGVmYXVsdCcsIHF1aWV0KTtcbiAgICAgIGJyZWFrO1xuXG4gICAgZGVmYXVsdDpcbiAgICAgIGxvZygnXFxuQUkgUmVzcG9uc2U6XFxuJywgJ3N1Y2Nlc3MnLCBxdWlldCk7XG4gICAgICBsb2coY2xlYW5lZENvbnRlbnQsICdkZWZhdWx0JywgcXVpZXQpO1xuICAgICAgYnJlYWs7XG4gIH1cbn07XG5cbmNvbnN0IGNsZWFuUmVzcG9uc2UgPSAoY29udGVudDogc3RyaW5nLCBvcHRpb25zOiBBSU9wdGlvbnMpOiBzdHJpbmcgPT4ge1xuICBjb25zdCB7cHJvbXB0ID0gJycsIHRhc2sgPSAnaGVscCd9ID0gb3B0aW9ucztcblxuICBpZighY29udGVudCkge1xuICAgIHJldHVybiBjb250ZW50O1xuICB9XG5cbiAgbGV0IGNsZWFuZWRDb250ZW50ID0gY29udGVudDtcblxuICBjb25zdCB0YXNrSW5zdHJ1Y3Rpb25zOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICAgIGFuYWx5emU6ICdBbmFseXplIHRoZSBmb2xsb3dpbmcgY29kZTonLFxuICAgIGFzazogJ1Byb3ZpZGUgZ3VpZGFuY2Ugb24gdGhlIGZvbGxvd2luZyBkZXZlbG9wbWVudCBxdWVzdGlvbjonLFxuICAgIGV4cGxhaW46ICdFeHBsYWluIHRoZSBmb2xsb3dpbmcgY29kZSBpbiBkZXRhaWwsIGluY2x1ZGluZyBhbnkgcGF0dGVybnMsIHBvdGVudGlhbCBpc3N1ZXMsIGFuZCBpbXByb3ZlbWVudCBzdWdnZXN0aW9uczonLFxuICAgIGdlbmVyYXRlOiAnR2VuZXJhdGUgY29kZSBhY2NvcmRpbmcgdG8gdGhlIGZvbGxvd2luZyByZXF1ZXN0LiBNYWtlIHN1cmUgaXQgZm9sbG93cyBiZXN0IHByYWN0aWNlcyBhbmQgaXMgd2VsbCBkb2N1bWVudGVkOicsXG4gICAgaGVscDogJ1Byb3ZpZGUgZ3VpZGFuY2Ugb24gdGhlIGZvbGxvd2luZyBkZXZlbG9wbWVudCBxdWVzdGlvbjonLFxuICAgIG9wdGltaXplOiAnQW5hbHl6ZSB0aGUgZm9sbG93aW5nIGNvZGUvY29uZmlndXJhdGlvbiBhbmQgc3VnZ2VzdCBvcHRpbWl6YXRpb24gaW1wcm92ZW1lbnRzOicsXG4gICAgdGVzdDogJ0dlbmVyYXRlIGNvbXByZWhlbnNpdmUgdW5pdCB0ZXN0cyBmb3IgdGhlIGZvbGxvd2luZyBjb2RlOidcbiAgfTtcblxuICBjb25zdCBpbnN0cnVjdGlvbiA9IHRhc2tJbnN0cnVjdGlvbnNbdGFza10gfHwgJyc7XG5cbiAgaWYoaW5zdHJ1Y3Rpb24gJiYgY2xlYW5lZENvbnRlbnQuaW5jbHVkZXMoaW5zdHJ1Y3Rpb24pKSB7XG4gICAgY2xlYW5lZENvbnRlbnQgPSBjbGVhbmVkQ29udGVudC5yZXBsYWNlKGluc3RydWN0aW9uLCAnJykudHJpbSgpO1xuICB9XG5cbiAgaWYocHJvbXB0ICYmIGNsZWFuZWRDb250ZW50LmluY2x1ZGVzKHByb21wdCkpIHtcbiAgICBjbGVhbmVkQ29udGVudCA9IGNsZWFuZWRDb250ZW50LnJlcGxhY2UocHJvbXB0LCAnJykudHJpbSgpO1xuICB9XG5cbiAgaWYoY2xlYW5lZENvbnRlbnQuaW5jbHVkZXMoJz09PUNPTlRFWFQ9PT0nKSkge1xuICAgIGNsZWFuZWRDb250ZW50ID0gY2xlYW5lZENvbnRlbnQuc3BsaXQoJz09PUNPTlRFWFQ9PT0nKVswXS50cmltKCk7XG4gIH1cblxuICBpZighY2xlYW5lZENvbnRlbnQpIHtcbiAgICByZXR1cm4gY29udGVudDtcbiAgfVxuXG4gIHJldHVybiBjbGVhbmVkQ29udGVudDtcbn07XG5cbmNvbnN0IGdldFByb3ZpZGVyQXV0aCA9IChwcm92aWRlcjogc3RyaW5nKTogc3RyaW5nIHwgdW5kZWZpbmVkID0+IHtcbiAgaWYocHJvY2Vzcy5jd2QoKS5pbmNsdWRlcygncmVha3RvcicpKSB7XG4gICAgcmV0dXJuICdjdXJzb3ItYXV0aCc7XG4gIH1cblxuICBpZihwcm9jZXNzLmVudi5BSV9BUElfS0VZKSB7XG4gICAgcmV0dXJuIHByb2Nlc3MuZW52LkFJX0FQSV9LRVk7XG4gIH1cblxuICBpZihwcm92aWRlciA9PT0gJ25vbmUnICYmIHByb2Nlc3MuZW52LkNVUlNPUl9JREUgPT09ICd0cnVlJykge1xuICAgIHJldHVybiAnY3Vyc29yLWF1dGgnO1xuICB9XG5cbiAgc3dpdGNoKHByb3ZpZGVyKSB7XG4gICAgY2FzZSAnb3BlbmFpJzpcbiAgICAgIHJldHVybiBwcm9jZXNzLmVudi5PUEVOQUlfQVBJX0tFWTtcbiAgICBjYXNlICdhbnRocm9waWMnOlxuICAgICAgcmV0dXJuIHByb2Nlc3MuZW52LkFOVEhST1BJQ19BUElfS0VZO1xuICAgIGNhc2UgJ2N1cnNvcic6XG4gICAgICByZXR1cm4gJ2N1cnNvci1hdXRoJztcbiAgICBjYXNlICdjb3BpbG90JzpcbiAgICAgIHJldHVybiBwcm9jZXNzLmVudi5HSVRIVUJfVE9LRU47XG4gICAgY2FzZSAnbm9uZSc6XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG59O1xuXG5jb25zdCBkZXRlY3RDdXJzb3JJREUgPSAoKTogYm9vbGVhbiA9PiB7XG4gIGlmKHByb2Nlc3MuZW52LkNVUlNPUl9JREUgPT09ICd0cnVlJykge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgY29uc3QgcG9zc2libGVDdXJzb3JTaWduYWxzID0gW1xuICAgIHByb2Nlc3MuZW52LkNVUlNPUl9FWFRFTlNJT04gPT09ICd0cnVlJyxcbiAgICBwcm9jZXNzLmVudi5DVVJTT1JfVEVSTUlOQUwgPT09ICd0cnVlJyxcbiAgICBwcm9jZXNzLmVudi5DVVJTT1JfQVBQID09PSAndHJ1ZScsXG4gICAgcHJvY2Vzcy5lbnYuUEFUSD8uaW5jbHVkZXMoJ2N1cnNvcicpLFxuICAgICEhcHJvY2Vzcy5lbnYuQ1VSU09SX1NFU1NJT05fSURcbiAgXTtcblxuICBjb25zdCBpc0N1cnNvcklERSA9IHBvc3NpYmxlQ3Vyc29yU2lnbmFscy5zb21lKChzaWduYWwpID0+IHNpZ25hbCk7XG5cbiAgaWYoaXNDdXJzb3JJREUpIHtcbiAgICBwcm9jZXNzLmVudi5DVVJTT1JfSURFID0gJ3RydWUnO1xuICB9XG5cbiAgcmV0dXJuIGlzQ3Vyc29ySURFO1xufTtcblxuZXhwb3J0IGNvbnN0IGFpRnVuY3Rpb24gPSBhc3luYyAob3B0aW9uczogQUlPcHRpb25zKTogUHJvbWlzZTxhbnk+ID0+IHtcbiAgdHJ5IHtcbiAgICBjb25zdCBjb25maWcgPSBMZXhDb25maWcuY29uZmlnIHx8IHt9O1xuICAgIGNvbnN0IGFpQ29uZmlnID0gY29uZmlnLmFpIHx8IHt9O1xuICAgIGNvbnN0IHByb3ZpZGVyID0gb3B0aW9ucy5wcm92aWRlciB8fCBhaUNvbmZpZy5wcm92aWRlciB8fCAnbm9uZSc7XG5cbiAgICBpZihwcm92aWRlciA9PT0gJ25vbmUnICYmICFwcm9jZXNzLmVudi5DVVJTT1JfRVhURU5TSU9OKSB7XG4gICAgICBsb2coYCR7Y2hhbGsucmVkKCdFcnJvcjonKX0gTm8gQUkgcHJvdmlkZXIgY29uZmlndXJlZC5gLCAnZXJyb3InKTtcbiAgICAgIHJldHVybiB7ZXJyb3I6ICdObyBBSSBwcm92aWRlciBjb25maWd1cmVkJ307XG4gICAgfVxuXG4gICAgY29uc3QgdGFzayA9IG9wdGlvbnMudGFzayB8fCAnYXNrJztcbiAgICBjb25zdCB2YWxpZFRhc2tzID0gWydleHBsYWluJywgJ2dlbmVyYXRlJywgJ3Rlc3QnLCAnYW5hbHl6ZScsICdhc2snXTtcblxuICAgIGlmKCF2YWxpZFRhc2tzLmluY2x1ZGVzKHRhc2spKSB7XG4gICAgICBsb2coYCR7Y2hhbGsucmVkKCdFcnJvcjonKX0gSW52YWxpZCB0YXNrIFwiJHt0YXNrfVwiLiBWYWxpZCB0YXNrcyBhcmU6ICR7dmFsaWRUYXNrcy5qb2luKCcsICcpfWAsICdlcnJvcicpO1xuICAgICAgcmV0dXJuIHtlcnJvcjogYEludmFsaWQgdGFzayBcIiR7dGFza31cImB9O1xuICAgIH1cblxuICAgIGNvbnN0IHtwcm9tcHR9ID0gb3B0aW9ucztcblxuICAgIGlmKCFwcm9tcHQpIHtcbiAgICAgIGxvZyhgJHtjaGFsay5yZWQoJ0Vycm9yOicpfSBObyBwcm9tcHQgcHJvdmlkZWQuIFVzZSAtLXByb21wdCBcIllvdXIgcHJvbXB0IGhlcmVcImAsICdlcnJvcicpO1xuICAgICAgcmV0dXJuIHtlcnJvcjogJ05vIHByb21wdCBwcm92aWRlZCd9O1xuICAgIH1cblxuICAgIGxldCBjb250ZXh0ID0gJyc7XG5cbiAgICBpZihvcHRpb25zLmZpbGUpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IGZzID0gYXdhaXQgaW1wb3J0KCdmcy9wcm9taXNlcycpO1xuICAgICAgICBjb25zdCBnbG9iID0gYXdhaXQgaW1wb3J0KCdnbG9iJyk7XG4gICAgICAgIGNvbnN0IGZpbGVzID0gYXdhaXQgZ2xvYi5nbG9iKG9wdGlvbnMuZmlsZSk7XG5cbiAgICAgICAgaWYoZmlsZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgbG9nKGAke2NoYWxrLnllbGxvdygnV2FybmluZzonKX0gTm8gZmlsZXMgZm91bmQgbWF0Y2hpbmcgXCIke29wdGlvbnMuZmlsZX1cImAsICd3YXJuaW5nJyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgZm9yKGNvbnN0IGZpbGUgb2YgZmlsZXMpIHtcbiAgICAgICAgICAgIGNvbnN0IGNvbnRlbnQgPSBhd2FpdCBmcy5yZWFkRmlsZShmaWxlLCAndXRmOCcpO1xuICAgICAgICAgICAgY29udGV4dCArPSBgXFxuPT09RklMRTogJHtmaWxlfT09PVxcbiR7Y29udGVudH1cXG5gO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSBjYXRjaChlcnJvcikge1xuICAgICAgICBsb2coYCR7Y2hhbGsueWVsbG93KCdXYXJuaW5nOicpfSBFcnJvciByZWFkaW5nIGZpbGU6ICR7ZXJyb3IubWVzc2FnZX1gLCAnd2FybmluZycpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmKG9wdGlvbnMuZGlyKSB7XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCB7ZXhlY2FTeW5jfSA9IGF3YWl0IGltcG9ydCgnZXhlY2EnKTtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gZXhlY2FTeW5jKCdmaW5kJywgW29wdGlvbnMuZGlyLCAnLXR5cGUnLCAnZicsICd8JywgJ3NvcnQnXSk7XG4gICAgICAgIGNvbnRleHQgKz0gYFxcbj09PVByb2plY3Qgc3RydWN0dXJlOj09PVxcbiR7cmVzdWx0LnN0ZG91dH1cXG5gO1xuICAgICAgfSBjYXRjaChlcnJvcikge1xuICAgICAgICBsb2coYCR7Y2hhbGsueWVsbG93KCdXYXJuaW5nOicpfSBFcnJvciByZWFkaW5nIGRpcmVjdG9yeTogJHtlcnJvci5tZXNzYWdlfWAsICd3YXJuaW5nJyk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgbGV0IGZvcm1hdHRlZFByb21wdCA9ICcnO1xuXG4gICAgc3dpdGNoKHRhc2spIHtcbiAgICAgIGNhc2UgJ2V4cGxhaW4nOlxuICAgICAgICBmb3JtYXR0ZWRQcm9tcHQgPSBgRXhwbGFpbiB0aGUgZm9sbG93aW5nIGNvZGU6XFxuJHtwcm9tcHR9YDtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdnZW5lcmF0ZSc6XG4gICAgICAgIGZvcm1hdHRlZFByb21wdCA9IGBHZW5lcmF0ZSBjb2RlIGFjY29yZGluZyB0byB0aGUgZm9sbG93aW5nIHJlcXVlc3Q6XFxuJHtwcm9tcHR9YDtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICd0ZXN0JzpcbiAgICAgICAgZm9ybWF0dGVkUHJvbXB0ID0gYEdlbmVyYXRlIGNvbXByZWhlbnNpdmUgdW5pdCB0ZXN0czpcXG4ke3Byb21wdH1gO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2FuYWx5emUnOlxuICAgICAgICBmb3JtYXR0ZWRQcm9tcHQgPSBgQW5hbHl6ZSB0aGUgZm9sbG93aW5nIGNvZGU6XFxuJHtwcm9tcHR9YDtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdhc2snOlxuICAgICAgICBmb3JtYXR0ZWRQcm9tcHQgPSBgUHJvdmlkZSBndWlkYW5jZSBvbiB0aGUgZm9sbG93aW5nIGRldmVsb3BtZW50IHF1ZXN0aW9uOlxcbiR7cHJvbXB0fWA7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIGlmKGNvbnRleHQpIHtcbiAgICAgIGZvcm1hdHRlZFByb21wdCArPSBgXFxuPT09Q09OVEVYVD09PVxcbiR7Y29udGV4dH1gO1xuICAgIH1cblxuICAgIGlmKChwcm92aWRlciA9PT0gJ2N1cnNvcicgfHwgcHJvY2Vzcy5lbnYuQ1VSU09SX0VYVEVOU0lPTikgJiYgdGFzayA9PT0gJ2dlbmVyYXRlJykge1xuICAgICAgbG9nKCdVc2luZyBDdXJzb3IgSURFIGZvciBjb2RlIGdlbmVyYXRpb24uLi4nLCAnaW5mbycpO1xuICAgICAgbG9nKCdOb3RlOiBGb3IgZnVsbCBjb2RlIGdlbmVyYXRpb24gY2FwYWJpbGl0aWVzLCBwbGVhc2UgdXNlIEN1cnNvciBJREUgZGlyZWN0bHkgd2l0aCBDbWQrTCBvciBDbWQrSy4nLCAnaW5mbycpO1xuICAgICAgbG9nKCdUaGUgQ0xJIGludGVncmF0aW9uIGhhcyBsaW1pdGVkIGNhcGFiaWxpdGllcyBmb3IgY29kZSBnZW5lcmF0aW9uLicsICd3YXJuaW5nJyk7XG4gICAgfSBlbHNlIGlmKHByb3ZpZGVyID09PSAnY3Vyc29yJyB8fCBwcm9jZXNzLmVudi5DVVJTT1JfRVhURU5TSU9OKSB7XG4gICAgICBsb2coJ1VzaW5nIEN1cnNvciBJREUgZm9yIEFJIGFzc2lzdGFuY2UuLi4nLCAnaW5mbycpO1xuICAgICAgbG9nKCdOb3RlOiBUaGlzIGlzIGEgbGltaXRlZCBpbnRlZ3JhdGlvbi4gRm9yIGZ1bGwgQUkgY2FwYWJpbGl0aWVzLCB1c2UgQ3Vyc29yIElERSBkaXJlY3RseS4nLCAnaW5mbycpO1xuICAgIH0gZWxzZSB7XG4gICAgICBsb2coYFVzaW5nICR7cHJvdmlkZXJ9IGZvciBBSSBhc3Npc3RhbmNlLi4uYCwgJ2luZm8nKTtcbiAgICB9XG5cbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGNhbGxBSVNlcnZpY2UoZm9ybWF0dGVkUHJvbXB0LCBvcHRpb25zLnF1aWV0IHx8IGZhbHNlKTtcblxuICAgIGxvZyhgXFxuJHtyZXNwb25zZX1gLCAnc3VjY2VzcycpO1xuXG4gICAgcmV0dXJuIHtyZXNwb25zZX07XG4gIH0gY2F0Y2goZXJyb3IpIHtcbiAgICBsb2coYCR7Y2hhbGsucmVkKCdFcnJvcjonKX0gJHtlcnJvci5tZXNzYWdlfWAsICdlcnJvcicpO1xuICAgIHJldHVybiB7ZXJyb3I6IGVycm9yLm1lc3NhZ2V9O1xuICB9XG59O1xuXG5leHBvcnQgY29uc3QgYWkgPSBuZXcgQ29tbWFuZCgnYWknKVxuICAuZGVzY3JpcHRpb24oJ1VzZSBBSSB0byBoZWxwIHdpdGggZGV2ZWxvcG1lbnQgdGFza3MnKVxuICAub3B0aW9uKCctLXByb3ZpZGVyIDxwcm92aWRlcj4nLCAnQUkgcHJvdmlkZXIgdG8gdXNlIChvcGVuYWksIGFudGhyb3BpYywgY3Vyc29yKScpXG4gIC5vcHRpb24oJy0tdGFzayA8dGFzaz4nLCAnVGFzayB0byBwZXJmb3JtIChleHBsYWluLCBnZW5lcmF0ZSwgdGVzdCwgYW5hbHl6ZSwgYXNrKScpXG4gIC5vcHRpb24oJy0tcHJvbXB0IDxwcm9tcHQ+JywgJ1Byb21wdCB0byBzZW5kIHRvIEFJJylcbiAgLm9wdGlvbignLS1maWxlIDxmaWxlPicsICdGaWxlIHRvIGFuYWx5emUnKVxuICAub3B0aW9uKCctLWRpciA8ZGlyPicsICdEaXJlY3RvcnkgdG8gYW5hbHl6ZScpXG4gIC5hY3Rpb24oYXN5bmMgKG9wdGlvbnM6IEFJT3B0aW9ucykgPT4ge1xuICAgIGF3YWl0IGFpRnVuY3Rpb24ob3B0aW9ucyk7XG4gIH0pO1xuXG5leHBvcnQgZGVmYXVsdCBhaTtcbiJdLCJuYW1lcyI6WyJjaGFsayIsIkNvbW1hbmQiLCJyZWFkRmlsZVN5bmMiLCJzeW5jIiwiZ2xvYlN5bmMiLCJMZXhDb25maWciLCJjYWxsQUlTZXJ2aWNlIiwibG9nIiwicHJvY2VzcyIsImVudiIsIkNVUlNPUl9FWFRFTlNJT04iLCJDVVJTT1JfVEVSTUlOQUwiLCJDVVJTT1JfQVBQIiwiUEFUSCIsImluY2x1ZGVzIiwiQ1VSU09SX1NFU1NJT05fSUQiLCJDVVJTT1JfSURFIiwiZ2V0RmlsZUNvbnRleHQiLCJmaWxlUGF0aCIsImNvbnRlbnQiLCJfZXJyb3IiLCJnZXRQcm9qZWN0Q29udGV4dCIsIm9wdGlvbnMiLCJmaWxlIiwidGFzayIsImNvbnRleHQiLCJwcm9qZWN0Q29udGV4dCIsImZpbGVzIiwiY3dkIiwiaWdub3JlIiwibWF4RGVwdGgiLCJqb2luIiwidGVzdENvbmZpZyIsIndlYnBhY2tDb25maWciLCJjb25zdHJ1Y3RQcm9tcHQiLCJwcm9tcHQiLCJ0YXNrSW5zdHJ1Y3Rpb25zIiwiYW5hbHl6ZSIsImFzayIsImV4cGxhaW4iLCJnZW5lcmF0ZSIsImhlbHAiLCJvcHRpbWl6ZSIsInRlc3QiLCJ0YXNrSW5zdHJ1Y3Rpb24iLCJmdWxsUHJvbXB0IiwiZGlzcGxheVJlc3BvbnNlIiwicmVzcG9uc2UiLCJxdWlldCIsImNob2ljZXMiLCJtZXNzYWdlIiwibWVzc2FnZUNvbnRlbnQiLCJyZXNwb25zZUNvbnRlbnQiLCJjbGVhbmVkQ29udGVudCIsImNsZWFuUmVzcG9uc2UiLCJpbnN0cnVjdGlvbiIsInJlcGxhY2UiLCJ0cmltIiwic3BsaXQiLCJnZXRQcm92aWRlckF1dGgiLCJwcm92aWRlciIsIkFJX0FQSV9LRVkiLCJPUEVOQUlfQVBJX0tFWSIsIkFOVEhST1BJQ19BUElfS0VZIiwiR0lUSFVCX1RPS0VOIiwidW5kZWZpbmVkIiwiZGV0ZWN0Q3Vyc29ySURFIiwicG9zc2libGVDdXJzb3JTaWduYWxzIiwiaXNDdXJzb3JJREUiLCJzb21lIiwic2lnbmFsIiwiYWlGdW5jdGlvbiIsImNvbmZpZyIsImFpQ29uZmlnIiwiYWkiLCJyZWQiLCJlcnJvciIsInZhbGlkVGFza3MiLCJmcyIsImdsb2IiLCJsZW5ndGgiLCJ5ZWxsb3ciLCJyZWFkRmlsZSIsImRpciIsImV4ZWNhU3luYyIsInJlc3VsdCIsInN0ZG91dCIsImZvcm1hdHRlZFByb21wdCIsImRlc2NyaXB0aW9uIiwib3B0aW9uIiwiYWN0aW9uIl0sIm1hcHBpbmdzIjoiQUFBQTs7O0NBR0MsR0FDRCxPQUFPQSxXQUFXLFFBQVE7QUFDMUIsU0FBUUMsT0FBTyxRQUFPLFlBQVk7QUFDbEMsU0FBUUMsWUFBWSxRQUFPLEtBQUs7QUFDaEMsU0FBUUMsUUFBUUMsUUFBUSxRQUFPLE9BQU87QUFFdEMsU0FBUUMsU0FBUyxRQUFPLHFCQUFxQjtBQUM3QyxTQUFRQyxhQUFhLFFBQU8sMkJBQTJCO0FBQ3ZELFNBQVFDLEdBQUcsUUFBTyxxQkFBcUI7QUFFdkMsSUFBR0MsUUFBUUMsR0FBRyxDQUFDQyxnQkFBZ0IsS0FBSyxVQUNsQ0YsUUFBUUMsR0FBRyxDQUFDRSxlQUFlLEtBQUssVUFDaENILFFBQVFDLEdBQUcsQ0FBQ0csVUFBVSxLQUFLLFVBQzNCSixRQUFRQyxHQUFHLENBQUNJLElBQUksRUFBRUMsU0FBUyxhQUMzQk4sUUFBUUMsR0FBRyxDQUFDTSxpQkFBaUIsRUFBRTtJQUMvQlAsUUFBUUMsR0FBRyxDQUFDTyxVQUFVLEdBQUc7QUFDM0I7QUFnQkEsTUFBTUMsaUJBQWlCLENBQUNDO0lBQ3RCLElBQUk7UUFDRixNQUFNQyxVQUFVakIsYUFBYWdCLFVBQVU7UUFDdkMsT0FBTyxDQUFDLE1BQU0sRUFBRUEsU0FBUyxJQUFJLEVBQUVDLFNBQVM7SUFDMUMsRUFBRSxPQUFNQyxRQUFRO1FBQ2QsT0FBTyxDQUFDLG9CQUFvQixFQUFFRixVQUFVO0lBQzFDO0FBQ0Y7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
@@ -11,11 +11,11 @@ export const config = async (type, cmd, callback = ()=>({}))=>{
11
11
  const { cliName = 'Lex', json, quiet } = cmd;
12
12
  const validTypes = [
13
13
  'app',
14
- 'jest',
14
+ 'vitest',
15
15
  'webpack'
16
16
  ];
17
17
  if (!validTypes.includes(type)) {
18
- log(`\n${cliName} Error: Option for ${type} not found. Configurations only available for app, jest, and webpack.`, 'error', quiet);
18
+ log(`\n${cliName} Error: Option for ${type} not found. Configurations only available for app, vitest, and webpack.`, 'error', quiet);
19
19
  callback(1);
20
20
  return Promise.resolve(1);
21
21
  }
@@ -26,12 +26,18 @@ export const config = async (type, cmd, callback = ()=>({}))=>{
26
26
  case 'app':
27
27
  configOptions = LexConfig.config;
28
28
  break;
29
- case 'jest':
30
- configOptions = import('../../../jest.config.mjs');
31
- break;
29
+ case 'vitest':
30
+ {
31
+ const vistestConfig = await import('../../../vitest.config.mjs');
32
+ configOptions = vistestConfig.default;
33
+ break;
34
+ }
32
35
  case 'webpack':
33
- configOptions = import('../../../webpack.config.js');
34
- break;
36
+ {
37
+ const webpackConfig = await import('../../../webpack.config.js');
38
+ configOptions = webpackConfig.default;
39
+ break;
40
+ }
35
41
  }
36
42
  const jsonOutput = JSON.stringify(configOptions, null, 2);
37
43
  if (json) {
@@ -44,4 +50,4 @@ export const config = async (type, cmd, callback = ()=>({}))=>{
44
50
  return Promise.resolve(0);
45
51
  };
46
52
 
47
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21tYW5kcy9jb25maWcvY29uZmlnLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDE4LVByZXNlbnQsIE5pdHJvZ2VuIExhYnMsIEluYy5cbiAqIENvcHlyaWdodHMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLiBTZWUgdGhlIGFjY29tcGFueWluZyBMSUNFTlNFIGZpbGUgZm9yIHRlcm1zLlxuICovXG5pbXBvcnQge3dyaXRlRmlsZVN5bmN9IGZyb20gJ2ZzJztcbmltcG9ydCBzdGFydENhc2UgZnJvbSAnbG9kYXNoL3N0YXJ0Q2FzZS5qcyc7XG5pbXBvcnQge3JlbGF0aXZlIGFzIHBhdGhSZWxhdGl2ZX0gZnJvbSAncGF0aCc7XG5cbmltcG9ydCB7TGV4Q29uZmlnfSBmcm9tICcuLi8uLi9MZXhDb25maWcuanMnO1xuaW1wb3J0IHtjcmVhdGVTcGlubmVyfSBmcm9tICcuLi8uLi91dGlscy9hcHAuanMnO1xuaW1wb3J0IHtsb2d9IGZyb20gJy4uLy4uL3V0aWxzL2xvZy5qcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29uZmlnT3B0aW9ucyB7XG4gIHJlYWRvbmx5IGNsaU5hbWU/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IGpzb24/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IHF1aWV0PzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IHR5cGUgQ29uZmlnQ2FsbGJhY2sgPSAoc3RhdHVzOiBudW1iZXIpPT4gdm9pZDtcblxuZXhwb3J0IGNvbnN0IGNvbmZpZyA9IGFzeW5jIChcbiAgdHlwZTogc3RyaW5nLFxuICBjbWQ6IENvbmZpZ09wdGlvbnMsXG4gIGNhbGxiYWNrOiBDb25maWdDYWxsYmFjayA9ICgpID0+ICh7fSlcbik6IFByb21pc2U8bnVtYmVyPiA9PiB7XG4gIGNvbnN0IHtjbGlOYW1lID0gJ0xleCcsIGpzb24sIHF1aWV0fSA9IGNtZDtcbiAgY29uc3QgdmFsaWRUeXBlczogc3RyaW5nW10gPSBbJ2FwcCcsICdqZXN0JywgJ3dlYnBhY2snXTtcblxuICBpZighdmFsaWRUeXBlcy5pbmNsdWRlcyh0eXBlKSkge1xuICAgIGxvZyhgXFxuJHtjbGlOYW1lfSBFcnJvcjogT3B0aW9uIGZvciAke3R5cGV9IG5vdCBmb3VuZC4gQ29uZmlndXJhdGlvbnMgb25seSBhdmFpbGFibGUgZm9yIGFwcCwgamVzdCwgYW5kIHdlYnBhY2suYCwgJ2Vycm9yJywgcXVpZXQpO1xuICAgIGNhbGxiYWNrKDEpO1xuICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoMSk7XG4gIH1cblxuICBsb2coYCR7Y2xpTmFtZX0gZ2VuZXJhdGluZyBjb25maWd1cmF0aW9uIGZvciAke3N0YXJ0Q2FzZSh0eXBlKX0uLi5gLCAnaW5mbycsIHF1aWV0KTtcblxuICBhd2FpdCBMZXhDb25maWcucGFyc2VDb25maWcoY21kKTtcblxuICBsZXQgY29uZmlnT3B0aW9ucztcblxuICBzd2l0Y2godHlwZSkge1xuICAgIGNhc2UgJ2FwcCc6XG4gICAgICBjb25maWdPcHRpb25zID0gTGV4Q29uZmlnLmNvbmZpZztcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ2plc3QnOlxuICAgICAgY29uZmlnT3B0aW9ucyA9IGltcG9ydCgnLi4vLi4vLi4vamVzdC5jb25maWcubWpzJyk7XG4gICAgICBicmVhaztcbiAgICBjYXNlICd3ZWJwYWNrJzpcbiAgICAgIGNvbmZpZ09wdGlvbnMgPSBpbXBvcnQoJy4uLy4uLy4uL3dlYnBhY2suY29uZmlnLmpzJyk7XG4gICAgICBicmVhaztcbiAgfVxuXG4gIGNvbnN0IGpzb25PdXRwdXQ6IHN0cmluZyA9IEpTT04uc3RyaW5naWZ5KGNvbmZpZ09wdGlvbnMsIG51bGwsIDIpO1xuXG4gIGlmKGpzb24pIHtcbiAgICBjb25zdCBzcGlubmVyID0gY3JlYXRlU3Bpbm5lcihxdWlldCk7XG5cbiAgICBzcGlubmVyLnN0YXJ0KCdDcmVhdGluZyBKU09OIG91dHB1dC4uLicpO1xuXG4gICAgd3JpdGVGaWxlU3luYyhqc29uLCBqc29uT3V0cHV0KTtcblxuICAgIHNwaW5uZXIuc3VjY2VlZChgU3VjY2Vzc2Z1bGx5IHNhdmVkIEpTT04gb3V0cHV0IHRvICR7cGF0aFJlbGF0aXZlKHByb2Nlc3MuY3dkKCksIGpzb24pfWApO1xuICB9XG5cbiAgY2FsbGJhY2soMCk7XG4gIHJldHVybiBQcm9taXNlLnJlc29sdmUoMCk7XG59OyJdLCJuYW1lcyI6WyJ3cml0ZUZpbGVTeW5jIiwic3RhcnRDYXNlIiwicmVsYXRpdmUiLCJwYXRoUmVsYXRpdmUiLCJMZXhDb25maWciLCJjcmVhdGVTcGlubmVyIiwibG9nIiwiY29uZmlnIiwidHlwZSIsImNtZCIsImNhbGxiYWNrIiwiY2xpTmFtZSIsImpzb24iLCJxdWlldCIsInZhbGlkVHlwZXMiLCJpbmNsdWRlcyIsIlByb21pc2UiLCJyZXNvbHZlIiwicGFyc2VDb25maWciLCJjb25maWdPcHRpb25zIiwianNvbk91dHB1dCIsIkpTT04iLCJzdHJpbmdpZnkiLCJzcGlubmVyIiwic3RhcnQiLCJzdWNjZWVkIiwicHJvY2VzcyIsImN3ZCJdLCJtYXBwaW5ncyI6IkFBQUE7OztDQUdDLEdBQ0QsU0FBUUEsYUFBYSxRQUFPLEtBQUs7QUFDakMsT0FBT0MsZUFBZSxzQkFBc0I7QUFDNUMsU0FBUUMsWUFBWUMsWUFBWSxRQUFPLE9BQU87QUFFOUMsU0FBUUMsU0FBUyxRQUFPLHFCQUFxQjtBQUM3QyxTQUFRQyxhQUFhLFFBQU8scUJBQXFCO0FBQ2pELFNBQVFDLEdBQUcsUUFBTyxxQkFBcUI7QUFVdkMsT0FBTyxNQUFNQyxTQUFTLE9BQ3BCQyxNQUNBQyxLQUNBQyxXQUEyQixJQUFPLENBQUEsQ0FBQyxDQUFBLENBQUU7SUFFckMsTUFBTSxFQUFDQyxVQUFVLEtBQUssRUFBRUMsSUFBSSxFQUFFQyxLQUFLLEVBQUMsR0FBR0o7SUFDdkMsTUFBTUssYUFBdUI7UUFBQztRQUFPO1FBQVE7S0FBVTtJQUV2RCxJQUFHLENBQUNBLFdBQVdDLFFBQVEsQ0FBQ1AsT0FBTztRQUM3QkYsSUFBSSxDQUFDLEVBQUUsRUFBRUssUUFBUSxtQkFBbUIsRUFBRUgsS0FBSyxxRUFBcUUsQ0FBQyxFQUFFLFNBQVNLO1FBQzVISCxTQUFTO1FBQ1QsT0FBT00sUUFBUUMsT0FBTyxDQUFDO0lBQ3pCO0lBRUFYLElBQUksR0FBR0ssUUFBUSw4QkFBOEIsRUFBRVYsVUFBVU8sTUFBTSxHQUFHLENBQUMsRUFBRSxRQUFRSztJQUU3RSxNQUFNVCxVQUFVYyxXQUFXLENBQUNUO0lBRTVCLElBQUlVO0lBRUosT0FBT1g7UUFDTCxLQUFLO1lBQ0hXLGdCQUFnQmYsVUFBVUcsTUFBTTtZQUNoQztRQUNGLEtBQUs7WUFDSFksZ0JBQWdCLE1BQU0sQ0FBQztZQUN2QjtRQUNGLEtBQUs7WUFDSEEsZ0JBQWdCLE1BQU0sQ0FBQztZQUN2QjtJQUNKO0lBRUEsTUFBTUMsYUFBcUJDLEtBQUtDLFNBQVMsQ0FBQ0gsZUFBZSxNQUFNO0lBRS9ELElBQUdQLE1BQU07UUFDUCxNQUFNVyxVQUFVbEIsY0FBY1E7UUFFOUJVLFFBQVFDLEtBQUssQ0FBQztRQUVkeEIsY0FBY1ksTUFBTVE7UUFFcEJHLFFBQVFFLE9BQU8sQ0FBQyxDQUFDLGtDQUFrQyxFQUFFdEIsYUFBYXVCLFFBQVFDLEdBQUcsSUFBSWYsT0FBTztJQUMxRjtJQUVBRixTQUFTO0lBQ1QsT0FBT00sUUFBUUMsT0FBTyxDQUFDO0FBQ3pCLEVBQUUifQ==
53
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21tYW5kcy9jb25maWcvY29uZmlnLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDE4LVByZXNlbnQsIE5pdHJvZ2VuIExhYnMsIEluYy5cbiAqIENvcHlyaWdodHMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLiBTZWUgdGhlIGFjY29tcGFueWluZyBMSUNFTlNFIGZpbGUgZm9yIHRlcm1zLlxuICovXG5pbXBvcnQge3dyaXRlRmlsZVN5bmN9IGZyb20gJ2ZzJztcbmltcG9ydCBzdGFydENhc2UgZnJvbSAnbG9kYXNoL3N0YXJ0Q2FzZS5qcyc7XG5pbXBvcnQge3JlbGF0aXZlIGFzIHBhdGhSZWxhdGl2ZX0gZnJvbSAncGF0aCc7XG5cbmltcG9ydCB7TGV4Q29uZmlnfSBmcm9tICcuLi8uLi9MZXhDb25maWcuanMnO1xuaW1wb3J0IHtjcmVhdGVTcGlubmVyfSBmcm9tICcuLi8uLi91dGlscy9hcHAuanMnO1xuaW1wb3J0IHtsb2d9IGZyb20gJy4uLy4uL3V0aWxzL2xvZy5qcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29uZmlnT3B0aW9ucyB7XG4gIHJlYWRvbmx5IGNsaU5hbWU/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IGpzb24/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IHF1aWV0PzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IHR5cGUgQ29uZmlnQ2FsbGJhY2sgPSAoc3RhdHVzOiBudW1iZXIpPT4gdm9pZDtcblxuZXhwb3J0IGNvbnN0IGNvbmZpZyA9IGFzeW5jIChcbiAgdHlwZTogc3RyaW5nLFxuICBjbWQ6IENvbmZpZ09wdGlvbnMsXG4gIGNhbGxiYWNrOiBDb25maWdDYWxsYmFjayA9ICgpID0+ICh7fSlcbik6IFByb21pc2U8bnVtYmVyPiA9PiB7XG4gIGNvbnN0IHtjbGlOYW1lID0gJ0xleCcsIGpzb24sIHF1aWV0fSA9IGNtZDtcbiAgY29uc3QgdmFsaWRUeXBlczogc3RyaW5nW10gPSBbJ2FwcCcsICd2aXRlc3QnLCAnd2VicGFjayddO1xuXG4gIGlmKCF2YWxpZFR5cGVzLmluY2x1ZGVzKHR5cGUpKSB7XG4gICAgbG9nKGBcXG4ke2NsaU5hbWV9IEVycm9yOiBPcHRpb24gZm9yICR7dHlwZX0gbm90IGZvdW5kLiBDb25maWd1cmF0aW9ucyBvbmx5IGF2YWlsYWJsZSBmb3IgYXBwLCB2aXRlc3QsIGFuZCB3ZWJwYWNrLmAsICdlcnJvcicsIHF1aWV0KTtcbiAgICBjYWxsYmFjaygxKTtcbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKDEpO1xuICB9XG5cbiAgbG9nKGAke2NsaU5hbWV9IGdlbmVyYXRpbmcgY29uZmlndXJhdGlvbiBmb3IgJHtzdGFydENhc2UodHlwZSl9Li4uYCwgJ2luZm8nLCBxdWlldCk7XG5cbiAgYXdhaXQgTGV4Q29uZmlnLnBhcnNlQ29uZmlnKGNtZCk7XG5cbiAgbGV0IGNvbmZpZ09wdGlvbnM7XG5cbiAgc3dpdGNoKHR5cGUpIHtcbiAgICBjYXNlICdhcHAnOlxuICAgICAgY29uZmlnT3B0aW9ucyA9IExleENvbmZpZy5jb25maWc7XG4gICAgICBicmVhaztcbiAgICBjYXNlICd2aXRlc3QnOiB7XG4gICAgICBjb25zdCB2aXN0ZXN0Q29uZmlnID0gYXdhaXQgaW1wb3J0KCcuLi8uLi8uLi92aXRlc3QuY29uZmlnLm1qcycpO1xuICAgICAgY29uZmlnT3B0aW9ucyA9IHZpc3Rlc3RDb25maWcuZGVmYXVsdDtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgICBjYXNlICd3ZWJwYWNrJzoge1xuICAgICAgY29uc3Qgd2VicGFja0NvbmZpZyA9IGF3YWl0IGltcG9ydCgnLi4vLi4vLi4vd2VicGFjay5jb25maWcuanMnKTtcbiAgICAgIGNvbmZpZ09wdGlvbnMgPSB3ZWJwYWNrQ29uZmlnLmRlZmF1bHQ7XG4gICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICBjb25zdCBqc29uT3V0cHV0OiBzdHJpbmcgPSBKU09OLnN0cmluZ2lmeShjb25maWdPcHRpb25zLCBudWxsLCAyKTtcblxuICBpZihqc29uKSB7XG4gICAgY29uc3Qgc3Bpbm5lciA9IGNyZWF0ZVNwaW5uZXIocXVpZXQpO1xuXG4gICAgc3Bpbm5lci5zdGFydCgnQ3JlYXRpbmcgSlNPTiBvdXRwdXQuLi4nKTtcblxuICAgIHdyaXRlRmlsZVN5bmMoanNvbiwganNvbk91dHB1dCk7XG5cbiAgICBzcGlubmVyLnN1Y2NlZWQoYFN1Y2Nlc3NmdWxseSBzYXZlZCBKU09OIG91dHB1dCB0byAke3BhdGhSZWxhdGl2ZShwcm9jZXNzLmN3ZCgpLCBqc29uKX1gKTtcbiAgfVxuXG4gIGNhbGxiYWNrKDApO1xuICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKDApO1xufTtcbiJdLCJuYW1lcyI6WyJ3cml0ZUZpbGVTeW5jIiwic3RhcnRDYXNlIiwicmVsYXRpdmUiLCJwYXRoUmVsYXRpdmUiLCJMZXhDb25maWciLCJjcmVhdGVTcGlubmVyIiwibG9nIiwiY29uZmlnIiwidHlwZSIsImNtZCIsImNhbGxiYWNrIiwiY2xpTmFtZSIsImpzb24iLCJxdWlldCIsInZhbGlkVHlwZXMiLCJpbmNsdWRlcyIsIlByb21pc2UiLCJyZXNvbHZlIiwicGFyc2VDb25maWciLCJjb25maWdPcHRpb25zIiwidmlzdGVzdENvbmZpZyIsImRlZmF1bHQiLCJ3ZWJwYWNrQ29uZmlnIiwianNvbk91dHB1dCIsIkpTT04iLCJzdHJpbmdpZnkiLCJzcGlubmVyIiwic3RhcnQiLCJzdWNjZWVkIiwicHJvY2VzcyIsImN3ZCJdLCJtYXBwaW5ncyI6IkFBQUE7OztDQUdDLEdBQ0QsU0FBUUEsYUFBYSxRQUFPLEtBQUs7QUFDakMsT0FBT0MsZUFBZSxzQkFBc0I7QUFDNUMsU0FBUUMsWUFBWUMsWUFBWSxRQUFPLE9BQU87QUFFOUMsU0FBUUMsU0FBUyxRQUFPLHFCQUFxQjtBQUM3QyxTQUFRQyxhQUFhLFFBQU8scUJBQXFCO0FBQ2pELFNBQVFDLEdBQUcsUUFBTyxxQkFBcUI7QUFVdkMsT0FBTyxNQUFNQyxTQUFTLE9BQ3BCQyxNQUNBQyxLQUNBQyxXQUEyQixJQUFPLENBQUEsQ0FBQyxDQUFBLENBQUU7SUFFckMsTUFBTSxFQUFDQyxVQUFVLEtBQUssRUFBRUMsSUFBSSxFQUFFQyxLQUFLLEVBQUMsR0FBR0o7SUFDdkMsTUFBTUssYUFBdUI7UUFBQztRQUFPO1FBQVU7S0FBVTtJQUV6RCxJQUFHLENBQUNBLFdBQVdDLFFBQVEsQ0FBQ1AsT0FBTztRQUM3QkYsSUFBSSxDQUFDLEVBQUUsRUFBRUssUUFBUSxtQkFBbUIsRUFBRUgsS0FBSyx1RUFBdUUsQ0FBQyxFQUFFLFNBQVNLO1FBQzlISCxTQUFTO1FBQ1QsT0FBT00sUUFBUUMsT0FBTyxDQUFDO0lBQ3pCO0lBRUFYLElBQUksR0FBR0ssUUFBUSw4QkFBOEIsRUFBRVYsVUFBVU8sTUFBTSxHQUFHLENBQUMsRUFBRSxRQUFRSztJQUU3RSxNQUFNVCxVQUFVYyxXQUFXLENBQUNUO0lBRTVCLElBQUlVO0lBRUosT0FBT1g7UUFDTCxLQUFLO1lBQ0hXLGdCQUFnQmYsVUFBVUcsTUFBTTtZQUNoQztRQUNGLEtBQUs7WUFBVTtnQkFDYixNQUFNYSxnQkFBZ0IsTUFBTSxNQUFNLENBQUM7Z0JBQ25DRCxnQkFBZ0JDLGNBQWNDLE9BQU87Z0JBQ3JDO1lBQ0Y7UUFDQSxLQUFLO1lBQVc7Z0JBQ2QsTUFBTUMsZ0JBQWdCLE1BQU0sTUFBTSxDQUFDO2dCQUNuQ0gsZ0JBQWdCRyxjQUFjRCxPQUFPO2dCQUNyQztZQUNGO0lBQ0Y7SUFFQSxNQUFNRSxhQUFxQkMsS0FBS0MsU0FBUyxDQUFDTixlQUFlLE1BQU07SUFFL0QsSUFBR1AsTUFBTTtRQUNQLE1BQU1jLFVBQVVyQixjQUFjUTtRQUU5QmEsUUFBUUMsS0FBSyxDQUFDO1FBRWQzQixjQUFjWSxNQUFNVztRQUVwQkcsUUFBUUUsT0FBTyxDQUFDLENBQUMsa0NBQWtDLEVBQUV6QixhQUFhMEIsUUFBUUMsR0FBRyxJQUFJbEIsT0FBTztJQUMxRjtJQUVBRixTQUFTO0lBQ1QsT0FBT00sUUFBUUMsT0FBTyxDQUFDO0FBQ3pCLEVBQUUifQ==
@@ -20,7 +20,7 @@ export const migrate = async (cmd, callback = process.exit)=>{
20
20
  const packagePath = `${cwd}/package.json`;
21
21
  const appPackage = getPackageJson(packagePath);
22
22
  const { dependencies = {}, devDependencies = {} } = appPackage;
23
- // Remove ESBuild, Jest and Webpack from app since it will conflict
23
+ // Remove ESBuild, Vitest and Webpack from app since it will conflict
24
24
  appPackage.dependencies = removeConflictModules(dependencies);
25
25
  appPackage.devDependencies = removeConflictModules(devDependencies);
26
26
  // Install new list of packages
@@ -47,4 +47,4 @@ export const migrate = async (cmd, callback = process.exit)=>{
47
47
  }
48
48
  };
49
49
 
50
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21tYW5kcy9taWdyYXRlL21pZ3JhdGUudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTgtUHJlc2VudCwgTml0cm9nZW4gTGFicywgSW5jLlxuICogQ29weXJpZ2h0cyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuIFNlZSB0aGUgYWNjb21wYW55aW5nIExJQ0VOU0UgZmlsZSBmb3IgdGVybXMuXG4gKi9cbmltcG9ydCB7ZXhlY2F9IGZyb20gJ2V4ZWNhJztcblxuaW1wb3J0IHtMZXhDb25maWd9IGZyb20gJy4uLy4uL0xleENvbmZpZy5qcyc7XG5pbXBvcnQge2NyZWF0ZVNwaW5uZXIsIGdldFBhY2thZ2VKc29uLCByZW1vdmVDb25mbGljdE1vZHVsZXMsIHJlbW92ZU1vZHVsZXN9IGZyb20gJy4uLy4uL3V0aWxzL2FwcC5qcyc7XG5pbXBvcnQge2xvZ30gZnJvbSAnLi4vLi4vdXRpbHMvbG9nLmpzJztcblxuZXhwb3J0IGludGVyZmFjZSBNaWdyYXRlT3B0aW9ucyB7XG4gIHJlYWRvbmx5IGNsaU5hbWU/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IHBhY2thZ2VNYW5hZ2VyPzogc3RyaW5nO1xuICByZWFkb25seSBxdWlldD86IGJvb2xlYW47XG59XG5cbmV4cG9ydCB0eXBlIE1pZ3JhdGVDYWxsYmFjayA9IHR5cGVvZiBwcm9jZXNzLmV4aXQ7XG5cbmV4cG9ydCBjb25zdCBtaWdyYXRlID0gYXN5bmMgKGNtZDogTWlncmF0ZU9wdGlvbnMsIGNhbGxiYWNrOiBNaWdyYXRlQ2FsbGJhY2sgPSBwcm9jZXNzLmV4aXQpOiBQcm9taXNlPG51bWJlcj4gPT4ge1xuICBjb25zdCB7Y2xpTmFtZSA9ICdMZXgnLCBwYWNrYWdlTWFuYWdlcjogY21kUGFja2FnZU1hbmFnZXIsIHF1aWV0fSA9IGNtZDtcblxuICBjb25zdCBjd2Q6IHN0cmluZyA9IHByb2Nlc3MuY3dkKCk7XG5cbiAgLy8gLy8gRGlzcGxheSBtZXNzYWdlXG4gIC8vIGxvZyhgJHtjbGlOYW1lfSBjb3B5aW5nIFwiJHt0b31cIi4uLmAsICdpbmZvJywgcXVpZXQpO1xuXG4gIC8vIFNwaW5uZXJcbiAgY29uc3Qgc3Bpbm5lciA9IGNyZWF0ZVNwaW5uZXIocXVpZXQpO1xuICBzcGlubmVyLnN0YXJ0KCdSZW1vdmluZyBub2RlIG1vZHVsZXMuLi4nKTtcblxuICAvLyBSZW1vdmUgbm9kZV9tb2R1bGVzXG4gIGF3YWl0IHJlbW92ZU1vZHVsZXMoKTtcblxuICBjb25zdCB7cGFja2FnZU1hbmFnZXI6IGNvbmZpZ1BhY2thZ2VNYW5hZ2VyfSA9IExleENvbmZpZy5jb25maWc7XG4gIGNvbnN0IHBhY2thZ2VNYW5hZ2VyOiBzdHJpbmcgPSBjbWRQYWNrYWdlTWFuYWdlciB8fCBjb25maWdQYWNrYWdlTWFuYWdlciB8fCAnJztcbiAgY29uc3QgcGFja2FnZVBhdGg6IHN0cmluZyA9IGAke2N3ZH0vcGFja2FnZS5qc29uYDtcbiAgY29uc3QgYXBwUGFja2FnZSA9IGdldFBhY2thZ2VKc29uKHBhY2thZ2VQYXRoKTtcbiAgY29uc3Qge2RlcGVuZGVuY2llcyA9IHt9LCBkZXZEZXBlbmRlbmNpZXMgPSB7fX0gPSBhcHBQYWNrYWdlO1xuXG4gIC8vIFJlbW92ZSBFU0J1aWxkLCBKZXN0IGFuZCBXZWJwYWNrIGZyb20gYXBwIHNpbmNlIGl0IHdpbGwgY29uZmxpY3RcbiAgYXBwUGFja2FnZS5kZXBlbmRlbmNpZXMgPSByZW1vdmVDb25mbGljdE1vZHVsZXMoZGVwZW5kZW5jaWVzKTtcbiAgYXBwUGFja2FnZS5kZXZEZXBlbmRlbmNpZXMgPSByZW1vdmVDb25mbGljdE1vZHVsZXMoZGV2RGVwZW5kZW5jaWVzKTtcblxuICAvLyBJbnN0YWxsIG5ldyBsaXN0IG9mIHBhY2thZ2VzXG4gIHRyeSB7XG4gICAgYXdhaXQgZXhlY2EocGFja2FnZU1hbmFnZXIsIFsnaW5zdGFsbCddLCB7XG4gICAgICBlbmNvZGluZzogJ3V0ZjgnLFxuICAgICAgc3RkaW86ICdpbmhlcml0J1xuICAgIH0pO1xuXG4gICAgLy8gU3RvcCBsb2FkZXJcbiAgICBzcGlubmVyLnN1Y2NlZWQoJ1N1Y2Nlc3NmdWxseSBtaWdyYXRlZCBhcHAhJyk7XG5cbiAgICAvLyBLaWxsIHByb2Nlc3NcbiAgICBjYWxsYmFjaygwKTtcbiAgICByZXR1cm4gMDtcbiAgfSBjYXRjaChlcnJvcikge1xuICAgIC8vIERpc3BsYXkgZXJyb3IgbWVzc2FnZVxuICAgIGxvZyhgXFxuJHtjbGlOYW1lfSBFcnJvcjogJHtlcnJvci5tZXNzYWdlfWAsICdlcnJvcicsIHF1aWV0KTtcblxuICAgIC8vIFN0b3Agc3Bpbm5lclxuICAgIHNwaW5uZXIuZmFpbCgnRmFpbGVkIHRvIHJlbW92ZSBtb2R1bGVzLicpO1xuXG4gICAgLy8gS2lsbCBwcm9jZXNzXG4gICAgY2FsbGJhY2soMSk7XG4gICAgcmV0dXJuIDE7XG4gIH1cbn07Il0sIm5hbWVzIjpbImV4ZWNhIiwiTGV4Q29uZmlnIiwiY3JlYXRlU3Bpbm5lciIsImdldFBhY2thZ2VKc29uIiwicmVtb3ZlQ29uZmxpY3RNb2R1bGVzIiwicmVtb3ZlTW9kdWxlcyIsImxvZyIsIm1pZ3JhdGUiLCJjbWQiLCJjYWxsYmFjayIsInByb2Nlc3MiLCJleGl0IiwiY2xpTmFtZSIsInBhY2thZ2VNYW5hZ2VyIiwiY21kUGFja2FnZU1hbmFnZXIiLCJxdWlldCIsImN3ZCIsInNwaW5uZXIiLCJzdGFydCIsImNvbmZpZ1BhY2thZ2VNYW5hZ2VyIiwiY29uZmlnIiwicGFja2FnZVBhdGgiLCJhcHBQYWNrYWdlIiwiZGVwZW5kZW5jaWVzIiwiZGV2RGVwZW5kZW5jaWVzIiwiZW5jb2RpbmciLCJzdGRpbyIsInN1Y2NlZWQiLCJlcnJvciIsIm1lc3NhZ2UiLCJmYWlsIl0sIm1hcHBpbmdzIjoiQUFBQTs7O0NBR0MsR0FDRCxTQUFRQSxLQUFLLFFBQU8sUUFBUTtBQUU1QixTQUFRQyxTQUFTLFFBQU8scUJBQXFCO0FBQzdDLFNBQVFDLGFBQWEsRUFBRUMsY0FBYyxFQUFFQyxxQkFBcUIsRUFBRUMsYUFBYSxRQUFPLHFCQUFxQjtBQUN2RyxTQUFRQyxHQUFHLFFBQU8scUJBQXFCO0FBVXZDLE9BQU8sTUFBTUMsVUFBVSxPQUFPQyxLQUFxQkMsV0FBNEJDLFFBQVFDLElBQUk7SUFDekYsTUFBTSxFQUFDQyxVQUFVLEtBQUssRUFBRUMsZ0JBQWdCQyxpQkFBaUIsRUFBRUMsS0FBSyxFQUFDLEdBQUdQO0lBRXBFLE1BQU1RLE1BQWNOLFFBQVFNLEdBQUc7SUFFL0IscUJBQXFCO0lBQ3JCLHVEQUF1RDtJQUV2RCxVQUFVO0lBQ1YsTUFBTUMsVUFBVWYsY0FBY2E7SUFDOUJFLFFBQVFDLEtBQUssQ0FBQztJQUVkLHNCQUFzQjtJQUN0QixNQUFNYjtJQUVOLE1BQU0sRUFBQ1EsZ0JBQWdCTSxvQkFBb0IsRUFBQyxHQUFHbEIsVUFBVW1CLE1BQU07SUFDL0QsTUFBTVAsaUJBQXlCQyxxQkFBcUJLLHdCQUF3QjtJQUM1RSxNQUFNRSxjQUFzQixHQUFHTCxJQUFJLGFBQWEsQ0FBQztJQUNqRCxNQUFNTSxhQUFhbkIsZUFBZWtCO0lBQ2xDLE1BQU0sRUFBQ0UsZUFBZSxDQUFDLENBQUMsRUFBRUMsa0JBQWtCLENBQUMsQ0FBQyxFQUFDLEdBQUdGO0lBRWxELG1FQUFtRTtJQUNuRUEsV0FBV0MsWUFBWSxHQUFHbkIsc0JBQXNCbUI7SUFDaERELFdBQVdFLGVBQWUsR0FBR3BCLHNCQUFzQm9CO0lBRW5ELCtCQUErQjtJQUMvQixJQUFJO1FBQ0YsTUFBTXhCLE1BQU1hLGdCQUFnQjtZQUFDO1NBQVUsRUFBRTtZQUN2Q1ksVUFBVTtZQUNWQyxPQUFPO1FBQ1Q7UUFFQSxjQUFjO1FBQ2RULFFBQVFVLE9BQU8sQ0FBQztRQUVoQixlQUFlO1FBQ2ZsQixTQUFTO1FBQ1QsT0FBTztJQUNULEVBQUUsT0FBTW1CLE9BQU87UUFDYix3QkFBd0I7UUFDeEJ0QixJQUFJLENBQUMsRUFBRSxFQUFFTSxRQUFRLFFBQVEsRUFBRWdCLE1BQU1DLE9BQU8sRUFBRSxFQUFFLFNBQVNkO1FBRXJELGVBQWU7UUFDZkUsUUFBUWEsSUFBSSxDQUFDO1FBRWIsZUFBZTtRQUNmckIsU0FBUztRQUNULE9BQU87SUFDVDtBQUNGLEVBQUUifQ==
50
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21tYW5kcy9taWdyYXRlL21pZ3JhdGUudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTgtUHJlc2VudCwgTml0cm9nZW4gTGFicywgSW5jLlxuICogQ29weXJpZ2h0cyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuIFNlZSB0aGUgYWNjb21wYW55aW5nIExJQ0VOU0UgZmlsZSBmb3IgdGVybXMuXG4gKi9cbmltcG9ydCB7ZXhlY2F9IGZyb20gJ2V4ZWNhJztcblxuaW1wb3J0IHtMZXhDb25maWd9IGZyb20gJy4uLy4uL0xleENvbmZpZy5qcyc7XG5pbXBvcnQge2NyZWF0ZVNwaW5uZXIsIGdldFBhY2thZ2VKc29uLCByZW1vdmVDb25mbGljdE1vZHVsZXMsIHJlbW92ZU1vZHVsZXN9IGZyb20gJy4uLy4uL3V0aWxzL2FwcC5qcyc7XG5pbXBvcnQge2xvZ30gZnJvbSAnLi4vLi4vdXRpbHMvbG9nLmpzJztcblxuZXhwb3J0IGludGVyZmFjZSBNaWdyYXRlT3B0aW9ucyB7XG4gIHJlYWRvbmx5IGNsaU5hbWU/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IHBhY2thZ2VNYW5hZ2VyPzogc3RyaW5nO1xuICByZWFkb25seSBxdWlldD86IGJvb2xlYW47XG59XG5cbmV4cG9ydCB0eXBlIE1pZ3JhdGVDYWxsYmFjayA9IHR5cGVvZiBwcm9jZXNzLmV4aXQ7XG5cbmV4cG9ydCBjb25zdCBtaWdyYXRlID0gYXN5bmMgKGNtZDogTWlncmF0ZU9wdGlvbnMsIGNhbGxiYWNrOiBNaWdyYXRlQ2FsbGJhY2sgPSBwcm9jZXNzLmV4aXQpOiBQcm9taXNlPG51bWJlcj4gPT4ge1xuICBjb25zdCB7Y2xpTmFtZSA9ICdMZXgnLCBwYWNrYWdlTWFuYWdlcjogY21kUGFja2FnZU1hbmFnZXIsIHF1aWV0fSA9IGNtZDtcblxuICBjb25zdCBjd2Q6IHN0cmluZyA9IHByb2Nlc3MuY3dkKCk7XG5cbiAgLy8gLy8gRGlzcGxheSBtZXNzYWdlXG4gIC8vIGxvZyhgJHtjbGlOYW1lfSBjb3B5aW5nIFwiJHt0b31cIi4uLmAsICdpbmZvJywgcXVpZXQpO1xuXG4gIC8vIFNwaW5uZXJcbiAgY29uc3Qgc3Bpbm5lciA9IGNyZWF0ZVNwaW5uZXIocXVpZXQpO1xuICBzcGlubmVyLnN0YXJ0KCdSZW1vdmluZyBub2RlIG1vZHVsZXMuLi4nKTtcblxuICAvLyBSZW1vdmUgbm9kZV9tb2R1bGVzXG4gIGF3YWl0IHJlbW92ZU1vZHVsZXMoKTtcblxuICBjb25zdCB7cGFja2FnZU1hbmFnZXI6IGNvbmZpZ1BhY2thZ2VNYW5hZ2VyfSA9IExleENvbmZpZy5jb25maWc7XG4gIGNvbnN0IHBhY2thZ2VNYW5hZ2VyOiBzdHJpbmcgPSBjbWRQYWNrYWdlTWFuYWdlciB8fCBjb25maWdQYWNrYWdlTWFuYWdlciB8fCAnJztcbiAgY29uc3QgcGFja2FnZVBhdGg6IHN0cmluZyA9IGAke2N3ZH0vcGFja2FnZS5qc29uYDtcbiAgY29uc3QgYXBwUGFja2FnZSA9IGdldFBhY2thZ2VKc29uKHBhY2thZ2VQYXRoKTtcbiAgY29uc3Qge2RlcGVuZGVuY2llcyA9IHt9LCBkZXZEZXBlbmRlbmNpZXMgPSB7fX0gPSBhcHBQYWNrYWdlO1xuXG4gIC8vIFJlbW92ZSBFU0J1aWxkLCBWaXRlc3QgYW5kIFdlYnBhY2sgZnJvbSBhcHAgc2luY2UgaXQgd2lsbCBjb25mbGljdFxuICBhcHBQYWNrYWdlLmRlcGVuZGVuY2llcyA9IHJlbW92ZUNvbmZsaWN0TW9kdWxlcyhkZXBlbmRlbmNpZXMpO1xuICBhcHBQYWNrYWdlLmRldkRlcGVuZGVuY2llcyA9IHJlbW92ZUNvbmZsaWN0TW9kdWxlcyhkZXZEZXBlbmRlbmNpZXMpO1xuXG4gIC8vIEluc3RhbGwgbmV3IGxpc3Qgb2YgcGFja2FnZXNcbiAgdHJ5IHtcbiAgICBhd2FpdCBleGVjYShwYWNrYWdlTWFuYWdlciwgWydpbnN0YWxsJ10sIHtcbiAgICAgIGVuY29kaW5nOiAndXRmOCcsXG4gICAgICBzdGRpbzogJ2luaGVyaXQnXG4gICAgfSk7XG5cbiAgICAvLyBTdG9wIGxvYWRlclxuICAgIHNwaW5uZXIuc3VjY2VlZCgnU3VjY2Vzc2Z1bGx5IG1pZ3JhdGVkIGFwcCEnKTtcblxuICAgIC8vIEtpbGwgcHJvY2Vzc1xuICAgIGNhbGxiYWNrKDApO1xuICAgIHJldHVybiAwO1xuICB9IGNhdGNoKGVycm9yKSB7XG4gICAgLy8gRGlzcGxheSBlcnJvciBtZXNzYWdlXG4gICAgbG9nKGBcXG4ke2NsaU5hbWV9IEVycm9yOiAke2Vycm9yLm1lc3NhZ2V9YCwgJ2Vycm9yJywgcXVpZXQpO1xuXG4gICAgLy8gU3RvcCBzcGlubmVyXG4gICAgc3Bpbm5lci5mYWlsKCdGYWlsZWQgdG8gcmVtb3ZlIG1vZHVsZXMuJyk7XG5cbiAgICAvLyBLaWxsIHByb2Nlc3NcbiAgICBjYWxsYmFjaygxKTtcbiAgICByZXR1cm4gMTtcbiAgfVxufTtcbiJdLCJuYW1lcyI6WyJleGVjYSIsIkxleENvbmZpZyIsImNyZWF0ZVNwaW5uZXIiLCJnZXRQYWNrYWdlSnNvbiIsInJlbW92ZUNvbmZsaWN0TW9kdWxlcyIsInJlbW92ZU1vZHVsZXMiLCJsb2ciLCJtaWdyYXRlIiwiY21kIiwiY2FsbGJhY2siLCJwcm9jZXNzIiwiZXhpdCIsImNsaU5hbWUiLCJwYWNrYWdlTWFuYWdlciIsImNtZFBhY2thZ2VNYW5hZ2VyIiwicXVpZXQiLCJjd2QiLCJzcGlubmVyIiwic3RhcnQiLCJjb25maWdQYWNrYWdlTWFuYWdlciIsImNvbmZpZyIsInBhY2thZ2VQYXRoIiwiYXBwUGFja2FnZSIsImRlcGVuZGVuY2llcyIsImRldkRlcGVuZGVuY2llcyIsImVuY29kaW5nIiwic3RkaW8iLCJzdWNjZWVkIiwiZXJyb3IiLCJtZXNzYWdlIiwiZmFpbCJdLCJtYXBwaW5ncyI6IkFBQUE7OztDQUdDLEdBQ0QsU0FBUUEsS0FBSyxRQUFPLFFBQVE7QUFFNUIsU0FBUUMsU0FBUyxRQUFPLHFCQUFxQjtBQUM3QyxTQUFRQyxhQUFhLEVBQUVDLGNBQWMsRUFBRUMscUJBQXFCLEVBQUVDLGFBQWEsUUFBTyxxQkFBcUI7QUFDdkcsU0FBUUMsR0FBRyxRQUFPLHFCQUFxQjtBQVV2QyxPQUFPLE1BQU1DLFVBQVUsT0FBT0MsS0FBcUJDLFdBQTRCQyxRQUFRQyxJQUFJO0lBQ3pGLE1BQU0sRUFBQ0MsVUFBVSxLQUFLLEVBQUVDLGdCQUFnQkMsaUJBQWlCLEVBQUVDLEtBQUssRUFBQyxHQUFHUDtJQUVwRSxNQUFNUSxNQUFjTixRQUFRTSxHQUFHO0lBRS9CLHFCQUFxQjtJQUNyQix1REFBdUQ7SUFFdkQsVUFBVTtJQUNWLE1BQU1DLFVBQVVmLGNBQWNhO0lBQzlCRSxRQUFRQyxLQUFLLENBQUM7SUFFZCxzQkFBc0I7SUFDdEIsTUFBTWI7SUFFTixNQUFNLEVBQUNRLGdCQUFnQk0sb0JBQW9CLEVBQUMsR0FBR2xCLFVBQVVtQixNQUFNO0lBQy9ELE1BQU1QLGlCQUF5QkMscUJBQXFCSyx3QkFBd0I7SUFDNUUsTUFBTUUsY0FBc0IsR0FBR0wsSUFBSSxhQUFhLENBQUM7SUFDakQsTUFBTU0sYUFBYW5CLGVBQWVrQjtJQUNsQyxNQUFNLEVBQUNFLGVBQWUsQ0FBQyxDQUFDLEVBQUVDLGtCQUFrQixDQUFDLENBQUMsRUFBQyxHQUFHRjtJQUVsRCxxRUFBcUU7SUFDckVBLFdBQVdDLFlBQVksR0FBR25CLHNCQUFzQm1CO0lBQ2hERCxXQUFXRSxlQUFlLEdBQUdwQixzQkFBc0JvQjtJQUVuRCwrQkFBK0I7SUFDL0IsSUFBSTtRQUNGLE1BQU14QixNQUFNYSxnQkFBZ0I7WUFBQztTQUFVLEVBQUU7WUFDdkNZLFVBQVU7WUFDVkMsT0FBTztRQUNUO1FBRUEsY0FBYztRQUNkVCxRQUFRVSxPQUFPLENBQUM7UUFFaEIsZUFBZTtRQUNmbEIsU0FBUztRQUNULE9BQU87SUFDVCxFQUFFLE9BQU1tQixPQUFPO1FBQ2Isd0JBQXdCO1FBQ3hCdEIsSUFBSSxDQUFDLEVBQUUsRUFBRU0sUUFBUSxRQUFRLEVBQUVnQixNQUFNQyxPQUFPLEVBQUUsRUFBRSxTQUFTZDtRQUVyRCxlQUFlO1FBQ2ZFLFFBQVFhLElBQUksQ0FBQztRQUViLGVBQWU7UUFDZnJCLFNBQVM7UUFDVCxPQUFPO0lBQ1Q7QUFDRixFQUFFIn0=
@@ -7,6 +7,7 @@ export interface TestOptions {
7
7
  readonly changedFilesWithAncestor?: boolean;
8
8
  readonly changedSince?: string;
9
9
  readonly ci?: boolean;
10
+ readonly clearCache?: boolean;
10
11
  readonly cliName?: string;
11
12
  readonly collectCoverageFrom?: string;
12
13
  readonly colors?: boolean;
@@ -14,6 +15,7 @@ export interface TestOptions {
14
15
  readonly debug?: boolean;
15
16
  readonly debugTests?: boolean;
16
17
  readonly detectOpenHandles?: boolean;
18
+ readonly environment?: string;
17
19
  readonly env?: string;
18
20
  readonly errorOnDeprecated?: boolean;
19
21
  readonly expand?: boolean;