@nlabs/lex 1.56.2 → 1.58.0

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.
@@ -58,8 +58,8 @@ export const compile = async (cmd, callback = ()=>({}))=>{
58
58
  dot: false,
59
59
  nodir: true
60
60
  };
61
- const tsFiles = globSync('**/!(*.spec|*.test|*.integration).ts', globOptions);
62
- const tsxFiles = globSync('**/!(*.spec|*.test|*.integration).tsx', globOptions);
61
+ const tsFiles = globSync('**/!(*.spec|*.test|*.integration|*.e2e).ts', globOptions);
62
+ const tsxFiles = globSync('**/!(*.spec|*.test|*.integration|*.e2e).tsx', globOptions);
63
63
  const allSourceFiles = [
64
64
  ...tsFiles,
65
65
  ...tsxFiles
@@ -122,8 +122,8 @@ export const compile = async (cmd, callback = ()=>({}))=>{
122
122
  nodir: true,
123
123
  nosort: true
124
124
  };
125
- const tsFiles = globSync('**/!(*.spec|*.test|*.integration).ts*', globOptions);
126
- const jsFiles = globSync('**/!(*.spec|*.test|*.integration).js', globOptions);
125
+ const tsFiles = globSync('**/!(*.spec|*.test|*.integration|*.e2e).ts*', globOptions);
126
+ const jsFiles = globSync('**/!(*.spec|*.test|*.integration|*.e2e).js', globOptions);
127
127
  const sourceFiles = [
128
128
  ...tsFiles,
129
129
  ...jsFiles
@@ -274,4 +274,4 @@ export const compile = async (cmd, callback = ()=>({}))=>{
274
274
  return 0;
275
275
  };
276
276
 
277
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21tYW5kcy9jb21waWxlL2NvbXBpbGUudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTgtUHJlc2VudCwgTml0cm9nZW4gTGFicywgSW5jLlxuICogQ29weXJpZ2h0cyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuIFNlZSB0aGUgYWNjb21wYW55aW5nIExJQ0VOU0UgZmlsZSBmb3IgdGVybXMuXG4gKi9cbmltcG9ydCB7dHJhbnNmb3JtfSBmcm9tICdAc3djL2NvcmUnO1xuaW1wb3J0IHtleGVjYX0gZnJvbSAnZXhlY2EnO1xuaW1wb3J0IHtleGlzdHNTeW5jLCBsc3RhdFN5bmMsIHJlYWRkaXJTeW5jLCByZWFkRmlsZVN5bmMsIHdyaXRlRmlsZVN5bmMsIG1rZGlyU3luY30gZnJvbSAnZnMnO1xuaW1wb3J0IHtzeW5jIGFzIGdsb2JTeW5jfSBmcm9tICdnbG9iJztcbmltcG9ydCB7ZXh0bmFtZSBhcyBwYXRoRXh0bmFtZSwgam9pbiBhcyBwYXRoSm9pbiwgcmVsYXRpdmUgYXMgcGF0aFJlbGF0aXZlLCByZXNvbHZlIGFzIHBhdGhSZXNvbHZlLCBkaXJuYW1lfSBmcm9tICdwYXRoJztcblxuaW1wb3J0IHtMZXhDb25maWd9IGZyb20gJy4uLy4uL0xleENvbmZpZy5qcyc7XG5pbXBvcnQge2NoZWNrTGlua2VkTW9kdWxlcywgY29weUNvbmZpZ3VyZWRGaWxlcywgY29weUZpbGVzLCBjcmVhdGVTcGlubmVyLCBnZXRGaWxlc0J5RXh0LCByZW1vdmVGaWxlc30gZnJvbSAnLi4vLi4vdXRpbHMvYXBwLmpzJztcbmltcG9ydCB7Z2V0RGlyTmFtZSwgcmVzb2x2ZUJpbmFyeVBhdGh9IGZyb20gJy4uLy4uL3V0aWxzL2ZpbGUuanMnO1xuaW1wb3J0IHtsb2d9IGZyb20gJy4uLy4uL3V0aWxzL2xvZy5qcyc7XG5cbmltcG9ydCB0eXBlIHtTV0NPcHRpb25zfSBmcm9tICcuLi8uLi9MZXhDb25maWcuanMnO1xuXG5leHBvcnQgY29uc3QgaGFzRmlsZVR5cGUgPSAoc3RhcnRQYXRoOiBzdHJpbmcsIGV4dDogc3RyaW5nW10pOiBib29sZWFuID0+IHtcbiAgaWYoIWV4aXN0c1N5bmMoc3RhcnRQYXRoKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGNvbnN0IGZpbGVzOiBzdHJpbmdbXSA9IHJlYWRkaXJTeW5jKHN0YXJ0UGF0aCk7XG5cbiAgcmV0dXJuIGZpbGVzLnNvbWUoKGZpbGU6IHN0cmluZykgPT4ge1xuICAgIGNvbnN0IGZpbGVuYW1lOiBzdHJpbmcgPSBwYXRoSm9pbihzdGFydFBhdGgsIGZpbGUpO1xuICAgIGNvbnN0IGZpbGVFeHQ6IHN0cmluZyA9IHBhdGhFeHRuYW1lKGZpbGVuYW1lKTtcbiAgICBjb25zdCBzdGF0ID0gbHN0YXRTeW5jKGZpbGVuYW1lKTtcblxuICAgIGlmKHN0YXQuaXNEaXJlY3RvcnkoKSkge1xuICAgICAgcmV0dXJuIGhhc0ZpbGVUeXBlKGZpbGVuYW1lLCBleHQpO1xuICAgIH1cblxuICAgIHJldHVybiBleHQuaW5jbHVkZXMoZmlsZUV4dCk7XG4gIH0pO1xufTtcblxuZXhwb3J0IGNvbnN0IGNvbXBpbGUgPSBhc3luYyAoY21kOiBhbnksIGNhbGxiYWNrOiBhbnkgPSAoKSA9PiAoe30pKTogUHJvbWlzZTxudW1iZXI+ID0+IHtcbiAgY29uc3Qge1xuICAgIGNsaU5hbWUgPSAnTGV4JyxcbiAgICBjb25maWcsXG4gICAgZm9ybWF0ID0gJ2VzbScsXG4gICAgb3V0cHV0UGF0aCxcbiAgICBxdWlldCxcbiAgICByZW1vdmUsXG4gICAgc291cmNlUGF0aCxcbiAgICB3YXRjaFxuICB9ID0gY21kO1xuICBjb25zdCBzcGlubmVyID0gY3JlYXRlU3Bpbm5lcihxdWlldCk7XG5cbiAgbG9nKGAke2NsaU5hbWV9IGNvbXBpbGluZy4uLmAsICdpbmZvJywgcXVpZXQpO1xuXG4gIGF3YWl0IExleENvbmZpZy5wYXJzZUNvbmZpZyhjbWQpO1xuXG4gIGNvbnN0IHtvdXRwdXRGdWxsUGF0aCwgc291cmNlRnVsbFBhdGgsIHN3Yzogc3djQ29uZmlnLCB1c2VUeXBlc2NyaXB0fSA9IExleENvbmZpZy5jb25maWc7XG4gIGNvbnN0IG91dHB1dERpcjogc3RyaW5nID0gb3V0cHV0UGF0aFxuICAgID8gcGF0aFJlc29sdmUocHJvY2Vzcy5jd2QoKSwgb3V0cHV0UGF0aClcbiAgICA6IChvdXRwdXRGdWxsUGF0aCB8fCBwYXRoUmVzb2x2ZShwcm9jZXNzLmN3ZCgpLCAnLi9saWInKSk7XG4gIGNvbnN0IHNvdXJjZURpcjogc3RyaW5nID0gc291cmNlUGF0aCA/IHBhdGhSZXNvbHZlKHByb2Nlc3MuY3dkKCksIGAuLyR7c291cmNlUGF0aH1gKSA6IHNvdXJjZUZ1bGxQYXRoIHx8ICcnO1xuICBjb25zdCBkaXJOYW1lID0gZ2V0RGlyTmFtZSgpO1xuXG4gIGNoZWNrTGlua2VkTW9kdWxlcygpO1xuXG4gIGlmKHJlbW92ZSkge1xuICAgIGF3YWl0IHJlbW92ZUZpbGVzKG91dHB1dERpcik7XG4gIH1cblxuICBpZih1c2VUeXBlc2NyaXB0KSB7XG4gICAgY29uc3QgdHlwZXNjcmlwdFBhdGg6IHN0cmluZyA9IHJlc29sdmVCaW5hcnlQYXRoKCd0c2MnLCAndHlwZXNjcmlwdCcpO1xuXG4gICAgaWYoIXR5cGVzY3JpcHRQYXRoKSB7XG4gICAgICBsb2coYFxcbiR7Y2xpTmFtZX0gRXJyb3I6IFR5cGVTY3JpcHQgYmluYXJ5IG5vdCBmb3VuZCBpbiBMZXgncyBub2RlX21vZHVsZXMgb3IgbW9ub3JlcG8gcm9vdGAsICdlcnJvcicsIHF1aWV0KTtcbiAgICAgIGxvZygnUGxlYXNlIHJlaW5zdGFsbCBMZXggb3IgY2hlY2sgeW91ciBpbnN0YWxsYXRpb24uJywgJ2luZm8nLCBxdWlldCk7XG4gICAgICByZXR1cm4gMTtcbiAgICB9XG5cbiAgICBjb25zdCB0eXBlc2NyaXB0T3B0aW9uczogc3RyaW5nW10gPSBjb25maWdcbiAgICAgID8gWyctcCcsIGNvbmZpZywgJy0tZW1pdERlY2xhcmF0aW9uT25seScsICctLXNraXBMaWJDaGVjayddIC8vIFVzZXIgcHJvdmlkZWQgY3VzdG9tIGNvbmZpZywgYnV0IHN0aWxsIG9ubHkgZW1pdCBkZWNsYXJhdGlvbnNcbiAgICAgIDogKCgpID0+IHtcbiAgICAgICAgY29uc3QgZ2xvYk9wdGlvbnMgPSB7XG4gICAgICAgICAgYWJzb2x1dGU6IHRydWUsXG4gICAgICAgICAgY3dkOiBzb3VyY2VEaXIsXG4gICAgICAgICAgZG90OiBmYWxzZSxcbiAgICAgICAgICBub2RpcjogdHJ1ZVxuICAgICAgICB9O1xuICAgICAgICBjb25zdCB0c0ZpbGVzID0gZ2xvYlN5bmMoJyoqLyEoKi5zcGVjfCoudGVzdHwqLmludGVncmF0aW9uKS50cycsIGdsb2JPcHRpb25zKTtcbiAgICAgICAgY29uc3QgdHN4RmlsZXMgPSBnbG9iU3luYygnKiovISgqLnNwZWN8Ki50ZXN0fCouaW50ZWdyYXRpb24pLnRzeCcsIGdsb2JPcHRpb25zKTtcbiAgICAgICAgY29uc3QgYWxsU291cmNlRmlsZXMgPSBbLi4udHNGaWxlcywgLi4udHN4RmlsZXNdO1xuXG4gICAgICAgIHJldHVybiBbXG4gICAgICAgICAgLi4uTGV4Q29uZmlnLmdldFR5cGVTY3JpcHREZWNsYXJhdGlvbkZsYWdzKCksXG4gICAgICAgICAgLi4uYWxsU291cmNlRmlsZXNcbiAgICAgICAgXTtcbiAgICAgIH0pKCk7XG5cbiAgICBzcGlubmVyLnN0YXJ0KCdHZW5lcmF0aW5nIFR5cGVTY3JpcHQgZGVjbGFyYXRpb25zLi4uJyk7XG5cbiAgICB0cnkge1xuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgZXhlY2EodHlwZXNjcmlwdFBhdGgsIHR5cGVzY3JpcHRPcHRpb25zLCB7XG4gICAgICAgIGFsbDogdHJ1ZSxcbiAgICAgICAgY3dkOiBwcm9jZXNzLmN3ZCgpLFxuICAgICAgICBlbmNvZGluZzogJ3V0ZjgnLFxuICAgICAgICByZWplY3Q6IGZhbHNlXG4gICAgICB9KTtcblxuICAgICAgaWYocmVzdWx0LmV4aXRDb2RlICE9PSAwKSB7XG4gICAgICAgIGNvbnN0IGhhc0RlY2xhcmF0aW9ucyA9IHJlc3VsdC5hbGw/LmluY2x1ZGVzKCdXcml0aW5nJykgfHwgcmVzdWx0LmFsbD8uaW5jbHVkZXMoJ0RlY2xhcmF0aW9uJykgfHwgZmFsc2U7XG4gICAgICAgIGNvbnN0IGVycm9yT3V0cHV0ID0gcmVzdWx0LnN0ZGVyciB8fCByZXN1bHQuc3Rkb3V0IHx8IHJlc3VsdC5hbGwgfHwgJ1Vua25vd24gZXJyb3InO1xuXG4gICAgICAgIGlmKCFoYXNEZWNsYXJhdGlvbnMpIHtcbiAgICAgICAgICBsb2coYFxcbiR7Y2xpTmFtZX0gRXJyb3I6IFR5cGVTY3JpcHQgZGVjbGFyYXRpb24gZ2VuZXJhdGlvbiBmYWlsZWRgLCAnZXJyb3InLCBxdWlldCk7XG4gICAgICAgICAgbG9nKGBcXG5FeGl0IENvZGU6ICR7cmVzdWx0LmV4aXRDb2RlfWAsICdlcnJvcicsIHF1aWV0KTtcbiAgICAgICAgICBsb2coYFxcblR5cGVTY3JpcHQgQ29tbWFuZDogJHt0eXBlc2NyaXB0UGF0aH0gJHt0eXBlc2NyaXB0T3B0aW9ucy5qb2luKCcgJyl9YCwgJ2Vycm9yJywgcXVpZXQpO1xuICAgICAgICAgIGxvZyhgXFxuRXJyb3IgT3V0cHV0OlxcbiR7ZXJyb3JPdXRwdXR9YCwgJ2Vycm9yJywgcXVpZXQpO1xuXG4gICAgICAgICAgY29uc3QgZXJyb3JMaW5lcyA9IGVycm9yT3V0cHV0LnNwbGl0KCdcXG4nKS5maWx0ZXIoKGxpbmUpID0+XG4gICAgICAgICAgICBsaW5lLmluY2x1ZGVzKCdlcnJvciBUUycpIHx8XG4gICAgICAgICAgICBsaW5lLmluY2x1ZGVzKCdFcnJvcjonKSB8fFxuICAgICAgICAgICAgbGluZS50cmltKCkuc3RhcnRzV2l0aCgnc3JjLycpIHx8XG4gICAgICAgICAgICBsaW5lLnRyaW0oKS5zdGFydHNXaXRoKCdUUycpXG4gICAgICAgICAgKTtcblxuICAgICAgICAgIGlmKGVycm9yTGluZXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgbG9nKCdcXG5LZXkgRXJyb3JzOicsICdlcnJvcicsIHF1aWV0KTtcblxuICAgICAgICAgICAgZXJyb3JMaW5lcy5zbGljZSgwLCAxMCkuZm9yRWFjaCgobGluZSkgPT4ge1xuICAgICAgICAgICAgICBsb2coYCAgJHtsaW5lfWAsICdlcnJvcicsIHF1aWV0KTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICBpZihlcnJvckxpbmVzLmxlbmd0aCA+IDEwKSB7XG4gICAgICAgICAgICAgIGxvZyhgICAuLi4gYW5kICR7ZXJyb3JMaW5lcy5sZW5ndGggLSAxMH0gbW9yZSBlcnJvcnNgLCAnZXJyb3InLCBxdWlldCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgc3Bpbm5lci5mYWlsKCdUeXBlU2NyaXB0IGRlY2xhcmF0aW9uIGdlbmVyYXRpb24gZmFpbGVkLicpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGxvZyhgXFxuJHtjbGlOYW1lfSBXYXJuaW5nOiBUeXBlU2NyaXB0IGRlY2xhcmF0aW9uIGdlbmVyYXRpb24gY29tcGxldGVkIHdpdGggZXJyb3JzYCwgJ3dhcm4nLCBxdWlldCk7XG5cbiAgICAgICAgICBpZighcXVpZXQgJiYgZXJyb3JPdXRwdXQpIHtcbiAgICAgICAgICAgIGxvZyhgXFxuV2FybmluZ3M6XFxuJHtlcnJvck91dHB1dH1gLCAnd2FybicsIHF1aWV0KTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBzcGlubmVyLnN1Y2NlZWQoJ1R5cGVTY3JpcHQgZGVjbGFyYXRpb25zIGdlbmVyYXRlZCAod2l0aCB3YXJuaW5ncykuJyk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNwaW5uZXIuc3VjY2VlZCgnU3VjY2Vzc2Z1bGx5IGdlbmVyYXRlZCBUeXBlU2NyaXB0IGRlY2xhcmF0aW9ucyEnKTtcbiAgICAgIH1cbiAgICB9IGNhdGNoKGVycm9yKSB7XG4gICAgICBsb2coYFxcbiR7Y2xpTmFtZX0gRXJyb3I6IFR5cGVTY3JpcHQgZGVjbGFyYXRpb24gZ2VuZXJhdGlvbiBleGNlcHRpb25gLCAnZXJyb3InLCBxdWlldCk7XG4gICAgICBsb2coYFxcbkVycm9yOiAke2Vycm9yLm1lc3NhZ2V9YCwgJ2Vycm9yJywgcXVpZXQpO1xuXG4gICAgICBpZihlcnJvciBpbnN0YW5jZW9mIEVycm9yICYmIGVycm9yLnN0YWNrKSB7XG4gICAgICAgIGxvZyhgXFxuU3RhY2s6XFxuJHtlcnJvci5zdGFja31gLCAnZXJyb3InLCBxdWlldCk7XG4gICAgICB9XG5cbiAgICAgIHNwaW5uZXIuZmFpbCgnVHlwZVNjcmlwdCBkZWNsYXJhdGlvbiBnZW5lcmF0aW9uIGhhZCBpc3N1ZXMsIGNvbnRpbnVpbmcuLi4nKTtcbiAgICB9XG4gIH1cblxuICBjb25zdCBnbG9iT3B0aW9ucyA9IHtcbiAgICBhYnNvbHV0ZTogdHJ1ZSxcbiAgICBjd2Q6IHNvdXJjZURpcixcbiAgICBkb3Q6IGZhbHNlLFxuICAgIG5vZGlyOiB0cnVlLFxuICAgIG5vc29ydDogdHJ1ZVxuICB9O1xuICBjb25zdCB0c0ZpbGVzOiBzdHJpbmdbXSA9IGdsb2JTeW5jKCcqKi8hKCouc3BlY3wqLnRlc3R8Ki5pbnRlZ3JhdGlvbikudHMqJywgZ2xvYk9wdGlvbnMpO1xuICBjb25zdCBqc0ZpbGVzOiBzdHJpbmdbXSA9IGdsb2JTeW5jKCcqKi8hKCouc3BlY3wqLnRlc3R8Ki5pbnRlZ3JhdGlvbikuanMnLCBnbG9iT3B0aW9ucyk7XG4gIGNvbnN0IHNvdXJjZUZpbGVzOiBzdHJpbmdbXSA9IFsuLi50c0ZpbGVzLCAuLi5qc0ZpbGVzXTtcblxuICBjb25zdCBjc3NGaWxlczogc3RyaW5nW10gPSBnZXRGaWxlc0J5RXh0KCcuY3NzJywgTGV4Q29uZmlnLmNvbmZpZyk7XG5cbiAgaWYoY3NzRmlsZXMubGVuZ3RoKSB7XG4gICAgY29uc3QgcG9zdGNzc1BhdGg6IHN0cmluZyA9IHJlc29sdmVCaW5hcnlQYXRoKCdwb3N0Y3NzJywgJ3Bvc3Rjc3MtY2xpJyk7XG5cbiAgICBpZighcG9zdGNzc1BhdGgpIHtcbiAgICAgIGxvZyhgXFxuJHtjbGlOYW1lfSBFcnJvcjogUG9zdENTUyBiaW5hcnkgbm90IGZvdW5kIGluIExleCdzIG5vZGVfbW9kdWxlcyBvciBtb25vcmVwbyByb290YCwgJ2Vycm9yJywgcXVpZXQpO1xuICAgICAgbG9nKCdQbGVhc2UgcmVpbnN0YWxsIExleCBvciBjaGVjayB5b3VyIGluc3RhbGxhdGlvbi4nLCAnaW5mbycsIHF1aWV0KTtcbiAgICAgIHJldHVybiAxO1xuICAgIH1cblxuICAgIGNvbnN0IHBvc3Rjc3NPcHRpb25zOiBzdHJpbmdbXSA9IFtcbiAgICAgIGAke3NvdXJjZURpcn0vKiovKiouY3NzYCxcbiAgICAgICctLWJhc2UnLFxuICAgICAgc291cmNlRGlyLFxuICAgICAgJy0tZGlyJyxcbiAgICAgIG91dHB1dERpcixcbiAgICAgICctLWNvbmZpZycsXG4gICAgICBwYXRoUmVzb2x2ZShkaXJOYW1lLCAnLi4vLi4vcG9zdGNzcy5jb25maWcuanMnKVxuICAgIF07XG5cbiAgICB0cnkge1xuICAgICAgYXdhaXQgZXhlY2EocG9zdGNzc1BhdGgsIHBvc3Rjc3NPcHRpb25zLCB7ZW5jb2Rpbmc6ICd1dGY4J30pO1xuICAgICAgc3Bpbm5lci5zdWNjZWVkKGBTdWNjZXNzZnVsbHkgZm9ybWF0dGVkICR7Y3NzRmlsZXMubGVuZ3RofSBjc3MgZmlsZXMhYCk7XG4gICAgfSBjYXRjaChlcnJvcikge1xuICAgICAgbG9nKGBcXG4ke2NsaU5hbWV9IEVycm9yOiAke2Vycm9yLm1lc3NhZ2V9YCwgJ2Vycm9yJywgcXVpZXQpO1xuXG4gICAgICBzcGlubmVyLmZhaWwoJ0ZhaWxlZCBmb3JtYXR0aW5nIGNzcy4nKTtcblxuICAgICAgY2FsbGJhY2soMSk7XG4gICAgICByZXR1cm4gMTtcbiAgICB9XG4gIH1cblxuICBjb25zdCBnaWZGaWxlczogc3RyaW5nW10gPSBnZXRGaWxlc0J5RXh0KCcuZ2lmJywgTGV4Q29uZmlnLmNvbmZpZyk7XG4gIGNvbnN0IGpwZ0ZpbGVzOiBzdHJpbmdbXSA9IGdldEZpbGVzQnlFeHQoJy5qcGcnLCBMZXhDb25maWcuY29uZmlnKTtcbiAgY29uc3QgcG5nRmlsZXM6IHN0cmluZ1tdID0gZ2V0RmlsZXNCeUV4dCgnLnBuZycsIExleENvbmZpZy5jb25maWcpO1xuICBjb25zdCBzdmdGaWxlczogc3RyaW5nW10gPSBnZXRGaWxlc0J5RXh0KCcuc3ZnJywgTGV4Q29uZmlnLmNvbmZpZyk7XG4gIGNvbnN0IGltYWdlRmlsZXM6IHN0cmluZ1tdID0gWy4uLmdpZkZpbGVzLCAuLi5qcGdGaWxlcywgLi4ucG5nRmlsZXMsIC4uLnN2Z0ZpbGVzXTtcblxuICBpZihpbWFnZUZpbGVzLmxlbmd0aCkge1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCBjb3B5RmlsZXMoaW1hZ2VGaWxlcywgJ2ltYWdlJywgc3Bpbm5lciwgTGV4Q29uZmlnLmNvbmZpZyk7XG4gICAgfSBjYXRjaChlcnJvcikge1xuICAgICAgbG9nKGBcXG4ke2NsaU5hbWV9IEVycm9yOiAke2Vycm9yLm1lc3NhZ2V9YCwgJ2Vycm9yJywgcXVpZXQpO1xuXG4gICAgICBzcGlubmVyLmZhaWwoJ0ZhaWxlZCB0byBtb3ZlIGltYWdlcyB0byBvdXRwdXQgZGlyZWN0b3J5LicpO1xuXG4gICAgICBjYWxsYmFjaygxKTtcbiAgICAgIHJldHVybiAxO1xuICAgIH1cbiAgfVxuXG4gIGNvbnN0IHR0ZkZpbGVzOiBzdHJpbmdbXSA9IGdldEZpbGVzQnlFeHQoJy50dGYnLCBMZXhDb25maWcuY29uZmlnKTtcbiAgY29uc3Qgb3RmRmlsZXM6IHN0cmluZ1tdID0gZ2V0RmlsZXNCeUV4dCgnLm90ZicsIExleENvbmZpZy5jb25maWcpO1xuICBjb25zdCB3b2ZmRmlsZXM6IHN0cmluZ1tdID0gZ2V0RmlsZXNCeUV4dCgnLndvZmYnLCBMZXhDb25maWcuY29uZmlnKTtcbiAgY29uc3Qgd29mZjJGaWxlczogc3RyaW5nW10gPSBnZXRGaWxlc0J5RXh0KCcud29mZjInLCBMZXhDb25maWcuY29uZmlnKTtcbiAgY29uc3QgZm9udEZpbGVzOiBzdHJpbmdbXSA9IFsuLi50dGZGaWxlcywgLi4ub3RmRmlsZXMsIC4uLndvZmZGaWxlcywgLi4ud29mZjJGaWxlc107XG5cbiAgaWYoZm9udEZpbGVzLmxlbmd0aCkge1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCBjb3B5RmlsZXMoZm9udEZpbGVzLCAnZm9udCcsIHNwaW5uZXIsIExleENvbmZpZy5jb25maWcpO1xuICAgIH0gY2F0Y2goZXJyb3IpIHtcbiAgICAgIGxvZyhgXFxuJHtjbGlOYW1lfSBFcnJvcjogJHtlcnJvci5tZXNzYWdlfWAsICdlcnJvcicsIHF1aWV0KTtcblxuICAgICAgc3Bpbm5lci5mYWlsKCdGYWlsZWQgdG8gbW92ZSBmb250cyB0byBvdXRwdXQgZGlyZWN0b3J5LicpO1xuXG4gICAgICBjYWxsYmFjaygxKTtcbiAgICAgIHJldHVybiAxO1xuICAgIH1cbiAgfVxuXG4gIGNvbnN0IG1kRmlsZXM6IHN0cmluZ1tdID0gZ2V0RmlsZXNCeUV4dCgnLm1kJywgTGV4Q29uZmlnLmNvbmZpZyk7XG5cbiAgaWYobWRGaWxlcy5sZW5ndGgpIHtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgY29weUZpbGVzKG1kRmlsZXMsICdkb2N1bWVudHMnLCBzcGlubmVyLCBMZXhDb25maWcuY29uZmlnKTtcbiAgICB9IGNhdGNoKGVycm9yKSB7XG4gICAgICBsb2coYFxcbiR7Y2xpTmFtZX0gRXJyb3I6ICR7ZXJyb3IubWVzc2FnZX1gLCAnZXJyb3InLCBxdWlldCk7XG5cbiAgICAgIHNwaW5uZXIuZmFpbCgnRmFpbGVkIHRvIG1vdmUgZG9jcyB0byBvdXRwdXQgZGlyZWN0b3J5LicpO1xuXG4gICAgICBjYWxsYmFjaygxKTtcbiAgICAgIHJldHVybiAxO1xuICAgIH1cbiAgfVxuXG4gIGlmKHNvdXJjZUZpbGVzLmxlbmd0aCA9PT0gMCkge1xuICAgIGxvZyhgXFxuJHtjbGlOYW1lfSBXYXJuaW5nOiBObyBzb3VyY2UgZmlsZXMgZm91bmQgdG8gY29tcGlsZSBpbiAke3NvdXJjZURpcn1gLCAnd2FybicsIHF1aWV0KTtcbiAgICBzcGlubmVyLnN1Y2NlZWQoJ05vIGZpbGVzIHRvIGNvbXBpbGUuJyk7XG4gICAgY2FsbGJhY2soMCk7XG4gICAgcmV0dXJuIDA7XG4gIH1cblxuICBzcGlubmVyLnN0YXJ0KHdhdGNoID8gJ1dhdGNoaW5nIGZvciBjaGFuZ2VzLi4uJyA6ICdDb21waWxpbmcgd2l0aCBTV0MuLi4nKTtcblxuICB0cnkge1xuICAgIGNvbnN0IHRyYW5zZm9ybVByb21pc2VzID0gc291cmNlRmlsZXMubWFwKGFzeW5jIChmaWxlKSA9PiB7XG4gICAgICBjb25zdCBmaWxlUmVsYXRpdmVUb1NvdXJjZSA9IHBhdGhSZWxhdGl2ZShzb3VyY2VEaXIsIGZpbGUpO1xuICAgICAgY29uc3Qgc291cmNlUGF0aCA9IGZpbGU7XG4gICAgICBjb25zdCBvdXRwdXRGaWxlID0gZmlsZVJlbGF0aXZlVG9Tb3VyY2UucmVwbGFjZSgvXFwuKHRzfHRzeCkkLywgJy5qcycpO1xuICAgICAgY29uc3Qgb3V0cHV0UGF0aCA9IHBhdGhSZXNvbHZlKG91dHB1dERpciwgb3V0cHV0RmlsZSk7XG4gICAgICBjb25zdCBvdXRwdXREaXJQYXRoID0gZGlybmFtZShvdXRwdXRQYXRoKTtcblxuICAgICAgaWYoIWV4aXN0c1N5bmMob3V0cHV0RGlyUGF0aCkpIHtcbiAgICAgICAgbWtkaXJTeW5jKG91dHB1dERpclBhdGgsIHtyZWN1cnNpdmU6IHRydWV9KTtcbiAgICAgIH1cblxuICAgICAgY29uc3Qgc291cmNlQ29kZSA9IHJlYWRGaWxlU3luYyhzb3VyY2VQYXRoLCAndXRmOCcpO1xuICAgICAgY29uc3QgaXNUU1ggPSBmaWxlLmVuZHNXaXRoKCcudHN4Jyk7XG4gICAgICBjb25zdCBzd2NPcHRpb25zOiBQYXJ0aWFsPFNXQ09wdGlvbnM+ID0ge1xuICAgICAgICAuLi5zd2NDb25maWcsXG4gICAgICAgIGZpbGVuYW1lOiBmaWxlLFxuICAgICAgICBtb2R1bGU6IHtcbiAgICAgICAgICB0eXBlOiBmb3JtYXQgPT09ICdjanMnID8gJ2NvbW1vbmpzJyBhcyBjb25zdCA6IChzd2NDb25maWc/Lm1vZHVsZT8udHlwZSBhcyAnZXM2JyB8fCAnZXM2JyksXG4gICAgICAgICAgLi4uc3djQ29uZmlnPy5tb2R1bGVcbiAgICAgICAgfSxcbiAgICAgICAgc291cmNlTWFwczogc3djQ29uZmlnPy5zb3VyY2VNYXBzIHx8ICdpbmxpbmUnXG4gICAgICB9O1xuXG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0cmFuc2Zvcm0oc291cmNlQ29kZSwgc3djT3B0aW9ucyk7XG5cbiAgICAgIHdyaXRlRmlsZVN5bmMob3V0cHV0UGF0aCwgcmVzdWx0LmNvZGUpO1xuICAgIH0pO1xuXG4gICAgYXdhaXQgUHJvbWlzZS5hbGwodHJhbnNmb3JtUHJvbWlzZXMpO1xuXG4gICAgc3Bpbm5lci5zdWNjZWVkKCdDb21waWxlIGNvbXBsZXRlZCBzdWNjZXNzZnVsbHkhJyk7XG4gIH0gY2F0Y2goZXJyb3IpIHtcbiAgICBsb2coYFxcbiR7Y2xpTmFtZX0gRXJyb3I6IFNXQyBjb21waWxhdGlvbiBmYWlsZWRgLCAnZXJyb3InLCBxdWlldCk7XG4gICAgbG9nKGBcXG5FcnJvcjogJHtlcnJvci5tZXNzYWdlfWAsICdlcnJvcicsIHF1aWV0KTtcblxuICAgIGlmKGVycm9yIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICAgIGlmKGVycm9yLnN0YWNrKSB7XG4gICAgICAgIGxvZyhgXFxuU3RhY2sgVHJhY2U6XFxuJHtlcnJvci5zdGFja31gLCAnZXJyb3InLCBxdWlldCk7XG4gICAgICB9XG5cbiAgICAgIGlmKCdmaWxlbmFtZScgaW4gZXJyb3IgfHwgJ2ZpbGUnIGluIGVycm9yKSB7XG4gICAgICAgIGxvZyhgXFxuRmlsZTogJHsoZXJyb3IgYXMgYW55KS5maWxlbmFtZSB8fCAoZXJyb3IgYXMgYW55KS5maWxlfWAsICdlcnJvcicsIHF1aWV0KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZighcXVpZXQpIHtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlXG4gICAgICBjb25zb2xlLmVycm9yKCdcXG5GdWxsIEVycm9yIERldGFpbHM6JywgZXJyb3IpO1xuICAgIH1cblxuICAgIHNwaW5uZXIuZmFpbCgnQ29kZSBjb21waWxpbmcgZmFpbGVkLicpO1xuXG4gICAgY2FsbGJhY2soMSk7XG4gICAgcmV0dXJuIDE7XG4gIH1cblxuICB0cnkge1xuICAgIGF3YWl0IGNvcHlDb25maWd1cmVkRmlsZXMoc3Bpbm5lciwgTGV4Q29uZmlnLmNvbmZpZywgcXVpZXQpO1xuICB9IGNhdGNoKGNvcHlFcnJvcikge1xuICAgIGxvZyhgXFxuJHtjbGlOYW1lfSBFcnJvcjogRmFpbGVkIHRvIGNvcHkgY29uZmlndXJlZCBmaWxlczogJHtjb3B5RXJyb3IubWVzc2FnZX1gLCAnZXJyb3InLCBxdWlldCk7XG5cbiAgICBzcGlubmVyLmZhaWwoJ0ZhaWxlZCB0byBjb3B5IGNvbmZpZ3VyZWQgZmlsZXMuJyk7XG5cbiAgICBjYWxsYmFjaygxKTtcbiAgICByZXR1cm4gMTtcbiAgfVxuXG4gIGNhbGxiYWNrKDApO1xuICByZXR1cm4gMDtcbn07Il0sIm5hbWVzIjpbInRyYW5zZm9ybSIsImV4ZWNhIiwiZXhpc3RzU3luYyIsImxzdGF0U3luYyIsInJlYWRkaXJTeW5jIiwicmVhZEZpbGVTeW5jIiwid3JpdGVGaWxlU3luYyIsIm1rZGlyU3luYyIsInN5bmMiLCJnbG9iU3luYyIsImV4dG5hbWUiLCJwYXRoRXh0bmFtZSIsImpvaW4iLCJwYXRoSm9pbiIsInJlbGF0aXZlIiwicGF0aFJlbGF0aXZlIiwicmVzb2x2ZSIsInBhdGhSZXNvbHZlIiwiZGlybmFtZSIsIkxleENvbmZpZyIsImNoZWNrTGlua2VkTW9kdWxlcyIsImNvcHlDb25maWd1cmVkRmlsZXMiLCJjb3B5RmlsZXMiLCJjcmVhdGVTcGlubmVyIiwiZ2V0RmlsZXNCeUV4dCIsInJlbW92ZUZpbGVzIiwiZ2V0RGlyTmFtZSIsInJlc29sdmVCaW5hcnlQYXRoIiwibG9nIiwiaGFzRmlsZVR5cGUiLCJzdGFydFBhdGgiLCJleHQiLCJmaWxlcyIsInNvbWUiLCJmaWxlIiwiZmlsZW5hbWUiLCJmaWxlRXh0Iiwic3RhdCIsImlzRGlyZWN0b3J5IiwiaW5jbHVkZXMiLCJjb21waWxlIiwiY21kIiwiY2FsbGJhY2siLCJjbGlOYW1lIiwiY29uZmlnIiwiZm9ybWF0Iiwib3V0cHV0UGF0aCIsInF1aWV0IiwicmVtb3ZlIiwic291cmNlUGF0aCIsIndhdGNoIiwic3Bpbm5lciIsInBhcnNlQ29uZmlnIiwib3V0cHV0RnVsbFBhdGgiLCJzb3VyY2VGdWxsUGF0aCIsInN3YyIsInN3Y0NvbmZpZyIsInVzZVR5cGVzY3JpcHQiLCJvdXRwdXREaXIiLCJwcm9jZXNzIiwiY3dkIiwic291cmNlRGlyIiwiZGlyTmFtZSIsInR5cGVzY3JpcHRQYXRoIiwidHlwZXNjcmlwdE9wdGlvbnMiLCJnbG9iT3B0aW9ucyIsImFic29sdXRlIiwiZG90Iiwibm9kaXIiLCJ0c0ZpbGVzIiwidHN4RmlsZXMiLCJhbGxTb3VyY2VGaWxlcyIsImdldFR5cGVTY3JpcHREZWNsYXJhdGlvbkZsYWdzIiwic3RhcnQiLCJyZXN1bHQiLCJhbGwiLCJlbmNvZGluZyIsInJlamVjdCIsImV4aXRDb2RlIiwiaGFzRGVjbGFyYXRpb25zIiwiZXJyb3JPdXRwdXQiLCJzdGRlcnIiLCJzdGRvdXQiLCJlcnJvckxpbmVzIiwic3BsaXQiLCJmaWx0ZXIiLCJsaW5lIiwidHJpbSIsInN0YXJ0c1dpdGgiLCJsZW5ndGgiLCJzbGljZSIsImZvckVhY2giLCJmYWlsIiwic3VjY2VlZCIsImVycm9yIiwibWVzc2FnZSIsIkVycm9yIiwic3RhY2siLCJub3NvcnQiLCJqc0ZpbGVzIiwic291cmNlRmlsZXMiLCJjc3NGaWxlcyIsInBvc3Rjc3NQYXRoIiwicG9zdGNzc09wdGlvbnMiLCJnaWZGaWxlcyIsImpwZ0ZpbGVzIiwicG5nRmlsZXMiLCJzdmdGaWxlcyIsImltYWdlRmlsZXMiLCJ0dGZGaWxlcyIsIm90ZkZpbGVzIiwid29mZkZpbGVzIiwid29mZjJGaWxlcyIsImZvbnRGaWxlcyIsIm1kRmlsZXMiLCJ0cmFuc2Zvcm1Qcm9taXNlcyIsIm1hcCIsImZpbGVSZWxhdGl2ZVRvU291cmNlIiwib3V0cHV0RmlsZSIsInJlcGxhY2UiLCJvdXRwdXREaXJQYXRoIiwicmVjdXJzaXZlIiwic291cmNlQ29kZSIsImlzVFNYIiwiZW5kc1dpdGgiLCJzd2NPcHRpb25zIiwibW9kdWxlIiwidHlwZSIsInNvdXJjZU1hcHMiLCJjb2RlIiwiUHJvbWlzZSIsImNvbnNvbGUiLCJjb3B5RXJyb3IiXSwibWFwcGluZ3MiOiJBQUFBOzs7Q0FHQyxHQUNELFNBQVFBLFNBQVMsUUFBTyxZQUFZO0FBQ3BDLFNBQVFDLEtBQUssUUFBTyxRQUFRO0FBQzVCLFNBQVFDLFVBQVUsRUFBRUMsU0FBUyxFQUFFQyxXQUFXLEVBQUVDLFlBQVksRUFBRUMsYUFBYSxFQUFFQyxTQUFTLFFBQU8sS0FBSztBQUM5RixTQUFRQyxRQUFRQyxRQUFRLFFBQU8sT0FBTztBQUN0QyxTQUFRQyxXQUFXQyxXQUFXLEVBQUVDLFFBQVFDLFFBQVEsRUFBRUMsWUFBWUMsWUFBWSxFQUFFQyxXQUFXQyxXQUFXLEVBQUVDLE9BQU8sUUFBTyxPQUFPO0FBRXpILFNBQVFDLFNBQVMsUUFBTyxxQkFBcUI7QUFDN0MsU0FBUUMsa0JBQWtCLEVBQUVDLG1CQUFtQixFQUFFQyxTQUFTLEVBQUVDLGFBQWEsRUFBRUMsYUFBYSxFQUFFQyxXQUFXLFFBQU8scUJBQXFCO0FBQ2pJLFNBQVFDLFVBQVUsRUFBRUMsaUJBQWlCLFFBQU8sc0JBQXNCO0FBQ2xFLFNBQVFDLEdBQUcsUUFBTyxxQkFBcUI7QUFJdkMsT0FBTyxNQUFNQyxjQUFjLENBQUNDLFdBQW1CQztJQUM3QyxJQUFHLENBQUM3QixXQUFXNEIsWUFBWTtRQUN6QixPQUFPO0lBQ1Q7SUFFQSxNQUFNRSxRQUFrQjVCLFlBQVkwQjtJQUVwQyxPQUFPRSxNQUFNQyxJQUFJLENBQUMs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
277
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21tYW5kcy9jb21waWxlL2NvbXBpbGUudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTgtUHJlc2VudCwgTml0cm9nZW4gTGFicywgSW5jLlxuICogQ29weXJpZ2h0cyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuIFNlZSB0aGUgYWNjb21wYW55aW5nIExJQ0VOU0UgZmlsZSBmb3IgdGVybXMuXG4gKi9cbmltcG9ydCB7dHJhbnNmb3JtfSBmcm9tICdAc3djL2NvcmUnO1xuaW1wb3J0IHtleGVjYX0gZnJvbSAnZXhlY2EnO1xuaW1wb3J0IHtleGlzdHNTeW5jLCBsc3RhdFN5bmMsIHJlYWRkaXJTeW5jLCByZWFkRmlsZVN5bmMsIHdyaXRlRmlsZVN5bmMsIG1rZGlyU3luY30gZnJvbSAnZnMnO1xuaW1wb3J0IHtzeW5jIGFzIGdsb2JTeW5jfSBmcm9tICdnbG9iJztcbmltcG9ydCB7ZXh0bmFtZSBhcyBwYXRoRXh0bmFtZSwgam9pbiBhcyBwYXRoSm9pbiwgcmVsYXRpdmUgYXMgcGF0aFJlbGF0aXZlLCByZXNvbHZlIGFzIHBhdGhSZXNvbHZlLCBkaXJuYW1lfSBmcm9tICdwYXRoJztcblxuaW1wb3J0IHtMZXhDb25maWd9IGZyb20gJy4uLy4uL0xleENvbmZpZy5qcyc7XG5pbXBvcnQge2NoZWNrTGlua2VkTW9kdWxlcywgY29weUNvbmZpZ3VyZWRGaWxlcywgY29weUZpbGVzLCBjcmVhdGVTcGlubmVyLCBnZXRGaWxlc0J5RXh0LCByZW1vdmVGaWxlc30gZnJvbSAnLi4vLi4vdXRpbHMvYXBwLmpzJztcbmltcG9ydCB7Z2V0RGlyTmFtZSwgcmVzb2x2ZUJpbmFyeVBhdGh9IGZyb20gJy4uLy4uL3V0aWxzL2ZpbGUuanMnO1xuaW1wb3J0IHtsb2d9IGZyb20gJy4uLy4uL3V0aWxzL2xvZy5qcyc7XG5cbmltcG9ydCB0eXBlIHtTV0NPcHRpb25zfSBmcm9tICcuLi8uLi9MZXhDb25maWcuanMnO1xuXG5leHBvcnQgY29uc3QgaGFzRmlsZVR5cGUgPSAoc3RhcnRQYXRoOiBzdHJpbmcsIGV4dDogc3RyaW5nW10pOiBib29sZWFuID0+IHtcbiAgaWYoIWV4aXN0c1N5bmMoc3RhcnRQYXRoKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGNvbnN0IGZpbGVzOiBzdHJpbmdbXSA9IHJlYWRkaXJTeW5jKHN0YXJ0UGF0aCk7XG5cbiAgcmV0dXJuIGZpbGVzLnNvbWUoKGZpbGU6IHN0cmluZykgPT4ge1xuICAgIGNvbnN0IGZpbGVuYW1lOiBzdHJpbmcgPSBwYXRoSm9pbihzdGFydFBhdGgsIGZpbGUpO1xuICAgIGNvbnN0IGZpbGVFeHQ6IHN0cmluZyA9IHBhdGhFeHRuYW1lKGZpbGVuYW1lKTtcbiAgICBjb25zdCBzdGF0ID0gbHN0YXRTeW5jKGZpbGVuYW1lKTtcblxuICAgIGlmKHN0YXQuaXNEaXJlY3RvcnkoKSkge1xuICAgICAgcmV0dXJuIGhhc0ZpbGVUeXBlKGZpbGVuYW1lLCBleHQpO1xuICAgIH1cblxuICAgIHJldHVybiBleHQuaW5jbHVkZXMoZmlsZUV4dCk7XG4gIH0pO1xufTtcblxuZXhwb3J0IGNvbnN0IGNvbXBpbGUgPSBhc3luYyAoY21kOiBhbnksIGNhbGxiYWNrOiBhbnkgPSAoKSA9PiAoe30pKTogUHJvbWlzZTxudW1iZXI+ID0+IHtcbiAgY29uc3Qge1xuICAgIGNsaU5hbWUgPSAnTGV4JyxcbiAgICBjb25maWcsXG4gICAgZm9ybWF0ID0gJ2VzbScsXG4gICAgb3V0cHV0UGF0aCxcbiAgICBxdWlldCxcbiAgICByZW1vdmUsXG4gICAgc291cmNlUGF0aCxcbiAgICB3YXRjaFxuICB9ID0gY21kO1xuICBjb25zdCBzcGlubmVyID0gY3JlYXRlU3Bpbm5lcihxdWlldCk7XG5cbiAgbG9nKGAke2NsaU5hbWV9IGNvbXBpbGluZy4uLmAsICdpbmZvJywgcXVpZXQpO1xuXG4gIGF3YWl0IExleENvbmZpZy5wYXJzZUNvbmZpZyhjbWQpO1xuXG4gIGNvbnN0IHtvdXRwdXRGdWxsUGF0aCwgc291cmNlRnVsbFBhdGgsIHN3Yzogc3djQ29uZmlnLCB1c2VUeXBlc2NyaXB0fSA9IExleENvbmZpZy5jb25maWc7XG4gIGNvbnN0IG91dHB1dERpcjogc3RyaW5nID0gb3V0cHV0UGF0aFxuICAgID8gcGF0aFJlc29sdmUocHJvY2Vzcy5jd2QoKSwgb3V0cHV0UGF0aClcbiAgICA6IChvdXRwdXRGdWxsUGF0aCB8fCBwYXRoUmVzb2x2ZShwcm9jZXNzLmN3ZCgpLCAnLi9saWInKSk7XG4gIGNvbnN0IHNvdXJjZURpcjogc3RyaW5nID0gc291cmNlUGF0aCA/IHBhdGhSZXNvbHZlKHByb2Nlc3MuY3dkKCksIGAuLyR7c291cmNlUGF0aH1gKSA6IHNvdXJjZUZ1bGxQYXRoIHx8ICcnO1xuICBjb25zdCBkaXJOYW1lID0gZ2V0RGlyTmFtZSgpO1xuXG4gIGNoZWNrTGlua2VkTW9kdWxlcygpO1xuXG4gIGlmKHJlbW92ZSkge1xuICAgIGF3YWl0IHJlbW92ZUZpbGVzKG91dHB1dERpcik7XG4gIH1cblxuICBpZih1c2VUeXBlc2NyaXB0KSB7XG4gICAgY29uc3QgdHlwZXNjcmlwdFBhdGg6IHN0cmluZyA9IHJlc29sdmVCaW5hcnlQYXRoKCd0c2MnLCAndHlwZXNjcmlwdCcpO1xuXG4gICAgaWYoIXR5cGVzY3JpcHRQYXRoKSB7XG4gICAgICBsb2coYFxcbiR7Y2xpTmFtZX0gRXJyb3I6IFR5cGVTY3JpcHQgYmluYXJ5IG5vdCBmb3VuZCBpbiBMZXgncyBub2RlX21vZHVsZXMgb3IgbW9ub3JlcG8gcm9vdGAsICdlcnJvcicsIHF1aWV0KTtcbiAgICAgIGxvZygnUGxlYXNlIHJlaW5zdGFsbCBMZXggb3IgY2hlY2sgeW91ciBpbnN0YWxsYXRpb24uJywgJ2luZm8nLCBxdWlldCk7XG4gICAgICByZXR1cm4gMTtcbiAgICB9XG5cbiAgICBjb25zdCB0eXBlc2NyaXB0T3B0aW9uczogc3RyaW5nW10gPSBjb25maWdcbiAgICAgID8gWyctcCcsIGNvbmZpZywgJy0tZW1pdERlY2xhcmF0aW9uT25seScsICctLXNraXBMaWJDaGVjayddIC8vIFVzZXIgcHJvdmlkZWQgY3VzdG9tIGNvbmZpZywgYnV0IHN0aWxsIG9ubHkgZW1pdCBkZWNsYXJhdGlvbnNcbiAgICAgIDogKCgpID0+IHtcbiAgICAgICAgY29uc3QgZ2xvYk9wdGlvbnMgPSB7XG4gICAgICAgICAgYWJzb2x1dGU6IHRydWUsXG4gICAgICAgICAgY3dkOiBzb3VyY2VEaXIsXG4gICAgICAgICAgZG90OiBmYWxzZSxcbiAgICAgICAgICBub2RpcjogdHJ1ZVxuICAgICAgICB9O1xuICAgICAgICBjb25zdCB0c0ZpbGVzID0gZ2xvYlN5bmMoJyoqLyEoKi5zcGVjfCoudGVzdHwqLmludGVncmF0aW9ufCouZTJlKS50cycsIGdsb2JPcHRpb25zKTtcbiAgICAgICAgY29uc3QgdHN4RmlsZXMgPSBnbG9iU3luYygnKiovISgqLnNwZWN8Ki50ZXN0fCouaW50ZWdyYXRpb258Ki5lMmUpLnRzeCcsIGdsb2JPcHRpb25zKTtcbiAgICAgICAgY29uc3QgYWxsU291cmNlRmlsZXMgPSBbLi4udHNGaWxlcywgLi4udHN4RmlsZXNdO1xuXG4gICAgICAgIHJldHVybiBbXG4gICAgICAgICAgLi4uTGV4Q29uZmlnLmdldFR5cGVTY3JpcHREZWNsYXJhdGlvbkZsYWdzKCksXG4gICAgICAgICAgLi4uYWxsU291cmNlRmlsZXNcbiAgICAgICAgXTtcbiAgICAgIH0pKCk7XG5cbiAgICBzcGlubmVyLnN0YXJ0KCdHZW5lcmF0aW5nIFR5cGVTY3JpcHQgZGVjbGFyYXRpb25zLi4uJyk7XG5cbiAgICB0cnkge1xuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgZXhlY2EodHlwZXNjcmlwdFBhdGgsIHR5cGVzY3JpcHRPcHRpb25zLCB7XG4gICAgICAgIGFsbDogdHJ1ZSxcbiAgICAgICAgY3dkOiBwcm9jZXNzLmN3ZCgpLFxuICAgICAgICBlbmNvZGluZzogJ3V0ZjgnLFxuICAgICAgICByZWplY3Q6IGZhbHNlXG4gICAgICB9KTtcblxuICAgICAgaWYocmVzdWx0LmV4aXRDb2RlICE9PSAwKSB7XG4gICAgICAgIGNvbnN0IGhhc0RlY2xhcmF0aW9ucyA9IHJlc3VsdC5hbGw/LmluY2x1ZGVzKCdXcml0aW5nJykgfHwgcmVzdWx0LmFsbD8uaW5jbHVkZXMoJ0RlY2xhcmF0aW9uJykgfHwgZmFsc2U7XG4gICAgICAgIGNvbnN0IGVycm9yT3V0cHV0ID0gcmVzdWx0LnN0ZGVyciB8fCByZXN1bHQuc3Rkb3V0IHx8IHJlc3VsdC5hbGwgfHwgJ1Vua25vd24gZXJyb3InO1xuXG4gICAgICAgIGlmKCFoYXNEZWNsYXJhdGlvbnMpIHtcbiAgICAgICAgICBsb2coYFxcbiR7Y2xpTmFtZX0gRXJyb3I6IFR5cGVTY3JpcHQgZGVjbGFyYXRpb24gZ2VuZXJhdGlvbiBmYWlsZWRgLCAnZXJyb3InLCBxdWlldCk7XG4gICAgICAgICAgbG9nKGBcXG5FeGl0IENvZGU6ICR7cmVzdWx0LmV4aXRDb2RlfWAsICdlcnJvcicsIHF1aWV0KTtcbiAgICAgICAgICBsb2coYFxcblR5cGVTY3JpcHQgQ29tbWFuZDogJHt0eXBlc2NyaXB0UGF0aH0gJHt0eXBlc2NyaXB0T3B0aW9ucy5qb2luKCcgJyl9YCwgJ2Vycm9yJywgcXVpZXQpO1xuICAgICAgICAgIGxvZyhgXFxuRXJyb3IgT3V0cHV0OlxcbiR7ZXJyb3JPdXRwdXR9YCwgJ2Vycm9yJywgcXVpZXQpO1xuXG4gICAgICAgICAgY29uc3QgZXJyb3JMaW5lcyA9IGVycm9yT3V0cHV0LnNwbGl0KCdcXG4nKS5maWx0ZXIoKGxpbmUpID0+XG4gICAgICAgICAgICBsaW5lLmluY2x1ZGVzKCdlcnJvciBUUycpIHx8XG4gICAgICAgICAgICBsaW5lLmluY2x1ZGVzKCdFcnJvcjonKSB8fFxuICAgICAgICAgICAgbGluZS50cmltKCkuc3RhcnRzV2l0aCgnc3JjLycpIHx8XG4gICAgICAgICAgICBsaW5lLnRyaW0oKS5zdGFydHNXaXRoKCdUUycpXG4gICAgICAgICAgKTtcblxuICAgICAgICAgIGlmKGVycm9yTGluZXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgbG9nKCdcXG5LZXkgRXJyb3JzOicsICdlcnJvcicsIHF1aWV0KTtcblxuICAgICAgICAgICAgZXJyb3JMaW5lcy5zbGljZSgwLCAxMCkuZm9yRWFjaCgobGluZSkgPT4ge1xuICAgICAgICAgICAgICBsb2coYCAgJHtsaW5lfWAsICdlcnJvcicsIHF1aWV0KTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICBpZihlcnJvckxpbmVzLmxlbmd0aCA+IDEwKSB7XG4gICAgICAgICAgICAgIGxvZyhgICAuLi4gYW5kICR7ZXJyb3JMaW5lcy5sZW5ndGggLSAxMH0gbW9yZSBlcnJvcnNgLCAnZXJyb3InLCBxdWlldCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgc3Bpbm5lci5mYWlsKCdUeXBlU2NyaXB0IGRlY2xhcmF0aW9uIGdlbmVyYXRpb24gZmFpbGVkLicpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGxvZyhgXFxuJHtjbGlOYW1lfSBXYXJuaW5nOiBUeXBlU2NyaXB0IGRlY2xhcmF0aW9uIGdlbmVyYXRpb24gY29tcGxldGVkIHdpdGggZXJyb3JzYCwgJ3dhcm4nLCBxdWlldCk7XG5cbiAgICAgICAgICBpZighcXVpZXQgJiYgZXJyb3JPdXRwdXQpIHtcbiAgICAgICAgICAgIGxvZyhgXFxuV2FybmluZ3M6XFxuJHtlcnJvck91dHB1dH1gLCAnd2FybicsIHF1aWV0KTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBzcGlubmVyLnN1Y2NlZWQoJ1R5cGVTY3JpcHQgZGVjbGFyYXRpb25zIGdlbmVyYXRlZCAod2l0aCB3YXJuaW5ncykuJyk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNwaW5uZXIuc3VjY2VlZCgnU3VjY2Vzc2Z1bGx5IGdlbmVyYXRlZCBUeXBlU2NyaXB0IGRlY2xhcmF0aW9ucyEnKTtcbiAgICAgIH1cbiAgICB9IGNhdGNoKGVycm9yKSB7XG4gICAgICBsb2coYFxcbiR7Y2xpTmFtZX0gRXJyb3I6IFR5cGVTY3JpcHQgZGVjbGFyYXRpb24gZ2VuZXJhdGlvbiBleGNlcHRpb25gLCAnZXJyb3InLCBxdWlldCk7XG4gICAgICBsb2coYFxcbkVycm9yOiAke2Vycm9yLm1lc3NhZ2V9YCwgJ2Vycm9yJywgcXVpZXQpO1xuXG4gICAgICBpZihlcnJvciBpbnN0YW5jZW9mIEVycm9yICYmIGVycm9yLnN0YWNrKSB7XG4gICAgICAgIGxvZyhgXFxuU3RhY2s6XFxuJHtlcnJvci5zdGFja31gLCAnZXJyb3InLCBxdWlldCk7XG4gICAgICB9XG5cbiAgICAgIHNwaW5uZXIuZmFpbCgnVHlwZVNjcmlwdCBkZWNsYXJhdGlvbiBnZW5lcmF0aW9uIGhhZCBpc3N1ZXMsIGNvbnRpbnVpbmcuLi4nKTtcbiAgICB9XG4gIH1cblxuICBjb25zdCBnbG9iT3B0aW9ucyA9IHtcbiAgICBhYnNvbHV0ZTogdHJ1ZSxcbiAgICBjd2Q6IHNvdXJjZURpcixcbiAgICBkb3Q6IGZhbHNlLFxuICAgIG5vZGlyOiB0cnVlLFxuICAgIG5vc29ydDogdHJ1ZVxuICB9O1xuICBjb25zdCB0c0ZpbGVzOiBzdHJpbmdbXSA9IGdsb2JTeW5jKCcqKi8hKCouc3BlY3wqLnRlc3R8Ki5pbnRlZ3JhdGlvbnwqLmUyZSkudHMqJywgZ2xvYk9wdGlvbnMpO1xuICBjb25zdCBqc0ZpbGVzOiBzdHJpbmdbXSA9IGdsb2JTeW5jKCcqKi8hKCouc3BlY3wqLnRlc3R8Ki5pbnRlZ3JhdGlvbnwqLmUyZSkuanMnLCBnbG9iT3B0aW9ucyk7XG4gIGNvbnN0IHNvdXJjZUZpbGVzOiBzdHJpbmdbXSA9IFsuLi50c0ZpbGVzLCAuLi5qc0ZpbGVzXTtcblxuICBjb25zdCBjc3NGaWxlczogc3RyaW5nW10gPSBnZXRGaWxlc0J5RXh0KCcuY3NzJywgTGV4Q29uZmlnLmNvbmZpZyk7XG5cbiAgaWYoY3NzRmlsZXMubGVuZ3RoKSB7XG4gICAgY29uc3QgcG9zdGNzc1BhdGg6IHN0cmluZyA9IHJlc29sdmVCaW5hcnlQYXRoKCdwb3N0Y3NzJywgJ3Bvc3Rjc3MtY2xpJyk7XG5cbiAgICBpZighcG9zdGNzc1BhdGgpIHtcbiAgICAgIGxvZyhgXFxuJHtjbGlOYW1lfSBFcnJvcjogUG9zdENTUyBiaW5hcnkgbm90IGZvdW5kIGluIExleCdzIG5vZGVfbW9kdWxlcyBvciBtb25vcmVwbyByb290YCwgJ2Vycm9yJywgcXVpZXQpO1xuICAgICAgbG9nKCdQbGVhc2UgcmVpbnN0YWxsIExleCBvciBjaGVjayB5b3VyIGluc3RhbGxhdGlvbi4nLCAnaW5mbycsIHF1aWV0KTtcbiAgICAgIHJldHVybiAxO1xuICAgIH1cblxuICAgIGNvbnN0IHBvc3Rjc3NPcHRpb25zOiBzdHJpbmdbXSA9IFtcbiAgICAgIGAke3NvdXJjZURpcn0vKiovKiouY3NzYCxcbiAgICAgICctLWJhc2UnLFxuICAgICAgc291cmNlRGlyLFxuICAgICAgJy0tZGlyJyxcbiAgICAgIG91dHB1dERpcixcbiAgICAgICctLWNvbmZpZycsXG4gICAgICBwYXRoUmVzb2x2ZShkaXJOYW1lLCAnLi4vLi4vcG9zdGNzcy5jb25maWcuanMnKVxuICAgIF07XG5cbiAgICB0cnkge1xuICAgICAgYXdhaXQgZXhlY2EocG9zdGNzc1BhdGgsIHBvc3Rjc3NPcHRpb25zLCB7ZW5jb2Rpbmc6ICd1dGY4J30pO1xuICAgICAgc3Bpbm5lci5zdWNjZWVkKGBTdWNjZXNzZnVsbHkgZm9ybWF0dGVkICR7Y3NzRmlsZXMubGVuZ3RofSBjc3MgZmlsZXMhYCk7XG4gICAgfSBjYXRjaChlcnJvcikge1xuICAgICAgbG9nKGBcXG4ke2NsaU5hbWV9IEVycm9yOiAke2Vycm9yLm1lc3NhZ2V9YCwgJ2Vycm9yJywgcXVpZXQpO1xuXG4gICAgICBzcGlubmVyLmZhaWwoJ0ZhaWxlZCBmb3JtYXR0aW5nIGNzcy4nKTtcblxuICAgICAgY2FsbGJhY2soMSk7XG4gICAgICByZXR1cm4gMTtcbiAgICB9XG4gIH1cblxuICBjb25zdCBnaWZGaWxlczogc3RyaW5nW10gPSBnZXRGaWxlc0J5RXh0KCcuZ2lmJywgTGV4Q29uZmlnLmNvbmZpZyk7XG4gIGNvbnN0IGpwZ0ZpbGVzOiBzdHJpbmdbXSA9IGdldEZpbGVzQnlFeHQoJy5qcGcnLCBMZXhDb25maWcuY29uZmlnKTtcbiAgY29uc3QgcG5nRmlsZXM6IHN0cmluZ1tdID0gZ2V0RmlsZXNCeUV4dCgnLnBuZycsIExleENvbmZpZy5jb25maWcpO1xuICBjb25zdCBzdmdGaWxlczogc3RyaW5nW10gPSBnZXRGaWxlc0J5RXh0KCcuc3ZnJywgTGV4Q29uZmlnLmNvbmZpZyk7XG4gIGNvbnN0IGltYWdlRmlsZXM6IHN0cmluZ1tdID0gWy4uLmdpZkZpbGVzLCAuLi5qcGdGaWxlcywgLi4ucG5nRmlsZXMsIC4uLnN2Z0ZpbGVzXTtcblxuICBpZihpbWFnZUZpbGVzLmxlbmd0aCkge1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCBjb3B5RmlsZXMoaW1hZ2VGaWxlcywgJ2ltYWdlJywgc3Bpbm5lciwgTGV4Q29uZmlnLmNvbmZpZyk7XG4gICAgfSBjYXRjaChlcnJvcikge1xuICAgICAgbG9nKGBcXG4ke2NsaU5hbWV9IEVycm9yOiAke2Vycm9yLm1lc3NhZ2V9YCwgJ2Vycm9yJywgcXVpZXQpO1xuXG4gICAgICBzcGlubmVyLmZhaWwoJ0ZhaWxlZCB0byBtb3ZlIGltYWdlcyB0byBvdXRwdXQgZGlyZWN0b3J5LicpO1xuXG4gICAgICBjYWxsYmFjaygxKTtcbiAgICAgIHJldHVybiAxO1xuICAgIH1cbiAgfVxuXG4gIGNvbnN0IHR0ZkZpbGVzOiBzdHJpbmdbXSA9IGdldEZpbGVzQnlFeHQoJy50dGYnLCBMZXhDb25maWcuY29uZmlnKTtcbiAgY29uc3Qgb3RmRmlsZXM6IHN0cmluZ1tdID0gZ2V0RmlsZXNCeUV4dCgnLm90ZicsIExleENvbmZpZy5jb25maWcpO1xuICBjb25zdCB3b2ZmRmlsZXM6IHN0cmluZ1tdID0gZ2V0RmlsZXNCeUV4dCgnLndvZmYnLCBMZXhDb25maWcuY29uZmlnKTtcbiAgY29uc3Qgd29mZjJGaWxlczogc3RyaW5nW10gPSBnZXRGaWxlc0J5RXh0KCcud29mZjInLCBMZXhDb25maWcuY29uZmlnKTtcbiAgY29uc3QgZm9udEZpbGVzOiBzdHJpbmdbXSA9IFsuLi50dGZGaWxlcywgLi4ub3RmRmlsZXMsIC4uLndvZmZGaWxlcywgLi4ud29mZjJGaWxlc107XG5cbiAgaWYoZm9udEZpbGVzLmxlbmd0aCkge1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCBjb3B5RmlsZXMoZm9udEZpbGVzLCAnZm9udCcsIHNwaW5uZXIsIExleENvbmZpZy5jb25maWcpO1xuICAgIH0gY2F0Y2goZXJyb3IpIHtcbiAgICAgIGxvZyhgXFxuJHtjbGlOYW1lfSBFcnJvcjogJHtlcnJvci5tZXNzYWdlfWAsICdlcnJvcicsIHF1aWV0KTtcblxuICAgICAgc3Bpbm5lci5mYWlsKCdGYWlsZWQgdG8gbW92ZSBmb250cyB0byBvdXRwdXQgZGlyZWN0b3J5LicpO1xuXG4gICAgICBjYWxsYmFjaygxKTtcbiAgICAgIHJldHVybiAxO1xuICAgIH1cbiAgfVxuXG4gIGNvbnN0IG1kRmlsZXM6IHN0cmluZ1tdID0gZ2V0RmlsZXNCeUV4dCgnLm1kJywgTGV4Q29uZmlnLmNvbmZpZyk7XG5cbiAgaWYobWRGaWxlcy5sZW5ndGgpIHtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgY29weUZpbGVzKG1kRmlsZXMsICdkb2N1bWVudHMnLCBzcGlubmVyLCBMZXhDb25maWcuY29uZmlnKTtcbiAgICB9IGNhdGNoKGVycm9yKSB7XG4gICAgICBsb2coYFxcbiR7Y2xpTmFtZX0gRXJyb3I6ICR7ZXJyb3IubWVzc2FnZX1gLCAnZXJyb3InLCBxdWlldCk7XG5cbiAgICAgIHNwaW5uZXIuZmFpbCgnRmFpbGVkIHRvIG1vdmUgZG9jcyB0byBvdXRwdXQgZGlyZWN0b3J5LicpO1xuXG4gICAgICBjYWxsYmFjaygxKTtcbiAgICAgIHJldHVybiAxO1xuICAgIH1cbiAgfVxuXG4gIGlmKHNvdXJjZUZpbGVzLmxlbmd0aCA9PT0gMCkge1xuICAgIGxvZyhgXFxuJHtjbGlOYW1lfSBXYXJuaW5nOiBObyBzb3VyY2UgZmlsZXMgZm91bmQgdG8gY29tcGlsZSBpbiAke3NvdXJjZURpcn1gLCAnd2FybicsIHF1aWV0KTtcbiAgICBzcGlubmVyLnN1Y2NlZWQoJ05vIGZpbGVzIHRvIGNvbXBpbGUuJyk7XG4gICAgY2FsbGJhY2soMCk7XG4gICAgcmV0dXJuIDA7XG4gIH1cblxuICBzcGlubmVyLnN0YXJ0KHdhdGNoID8gJ1dhdGNoaW5nIGZvciBjaGFuZ2VzLi4uJyA6ICdDb21waWxpbmcgd2l0aCBTV0MuLi4nKTtcblxuICB0cnkge1xuICAgIGNvbnN0IHRyYW5zZm9ybVByb21pc2VzID0gc291cmNlRmlsZXMubWFwKGFzeW5jIChmaWxlKSA9PiB7XG4gICAgICBjb25zdCBmaWxlUmVsYXRpdmVUb1NvdXJjZSA9IHBhdGhSZWxhdGl2ZShzb3VyY2VEaXIsIGZpbGUpO1xuICAgICAgY29uc3Qgc291cmNlUGF0aCA9IGZpbGU7XG4gICAgICBjb25zdCBvdXRwdXRGaWxlID0gZmlsZVJlbGF0aXZlVG9Tb3VyY2UucmVwbGFjZSgvXFwuKHRzfHRzeCkkLywgJy5qcycpO1xuICAgICAgY29uc3Qgb3V0cHV0UGF0aCA9IHBhdGhSZXNvbHZlKG91dHB1dERpciwgb3V0cHV0RmlsZSk7XG4gICAgICBjb25zdCBvdXRwdXREaXJQYXRoID0gZGlybmFtZShvdXRwdXRQYXRoKTtcblxuICAgICAgaWYoIWV4aXN0c1N5bmMob3V0cHV0RGlyUGF0aCkpIHtcbiAgICAgICAgbWtkaXJTeW5jKG91dHB1dERpclBhdGgsIHtyZWN1cnNpdmU6IHRydWV9KTtcbiAgICAgIH1cblxuICAgICAgY29uc3Qgc291cmNlQ29kZSA9IHJlYWRGaWxlU3luYyhzb3VyY2VQYXRoLCAndXRmOCcpO1xuICAgICAgY29uc3QgaXNUU1ggPSBmaWxlLmVuZHNXaXRoKCcudHN4Jyk7XG4gICAgICBjb25zdCBzd2NPcHRpb25zOiBQYXJ0aWFsPFNXQ09wdGlvbnM+ID0ge1xuICAgICAgICAuLi5zd2NDb25maWcsXG4gICAgICAgIGZpbGVuYW1lOiBmaWxlLFxuICAgICAgICBtb2R1bGU6IHtcbiAgICAgICAgICB0eXBlOiBmb3JtYXQgPT09ICdjanMnID8gJ2NvbW1vbmpzJyBhcyBjb25zdCA6IChzd2NDb25maWc/Lm1vZHVsZT8udHlwZSBhcyAnZXM2JyB8fCAnZXM2JyksXG4gICAgICAgICAgLi4uc3djQ29uZmlnPy5tb2R1bGVcbiAgICAgICAgfSxcbiAgICAgICAgc291cmNlTWFwczogc3djQ29uZmlnPy5zb3VyY2VNYXBzIHx8ICdpbmxpbmUnXG4gICAgICB9O1xuXG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0cmFuc2Zvcm0oc291cmNlQ29kZSwgc3djT3B0aW9ucyk7XG5cbiAgICAgIHdyaXRlRmlsZVN5bmMob3V0cHV0UGF0aCwgcmVzdWx0LmNvZGUpO1xuICAgIH0pO1xuXG4gICAgYXdhaXQgUHJvbWlzZS5hbGwodHJhbnNmb3JtUHJvbWlzZXMpO1xuXG4gICAgc3Bpbm5lci5zdWNjZWVkKCdDb21waWxlIGNvbXBsZXRlZCBzdWNjZXNzZnVsbHkhJyk7XG4gIH0gY2F0Y2goZXJyb3IpIHtcbiAgICBsb2coYFxcbiR7Y2xpTmFtZX0gRXJyb3I6IFNXQyBjb21waWxhdGlvbiBmYWlsZWRgLCAnZXJyb3InLCBxdWlldCk7XG4gICAgbG9nKGBcXG5FcnJvcjogJHtlcnJvci5tZXNzYWdlfWAsICdlcnJvcicsIHF1aWV0KTtcblxuICAgIGlmKGVycm9yIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICAgIGlmKGVycm9yLnN0YWNrKSB7XG4gICAgICAgIGxvZyhgXFxuU3RhY2sgVHJhY2U6XFxuJHtlcnJvci5zdGFja31gLCAnZXJyb3InLCBxdWlldCk7XG4gICAgICB9XG5cbiAgICAgIGlmKCdmaWxlbmFtZScgaW4gZXJyb3IgfHwgJ2ZpbGUnIGluIGVycm9yKSB7XG4gICAgICAgIGxvZyhgXFxuRmlsZTogJHsoZXJyb3IgYXMgYW55KS5maWxlbmFtZSB8fCAoZXJyb3IgYXMgYW55KS5maWxlfWAsICdlcnJvcicsIHF1aWV0KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZighcXVpZXQpIHtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlXG4gICAgICBjb25zb2xlLmVycm9yKCdcXG5GdWxsIEVycm9yIERldGFpbHM6JywgZXJyb3IpO1xuICAgIH1cblxuICAgIHNwaW5uZXIuZmFpbCgnQ29kZSBjb21waWxpbmcgZmFpbGVkLicpO1xuXG4gICAgY2FsbGJhY2soMSk7XG4gICAgcmV0dXJuIDE7XG4gIH1cblxuICB0cnkge1xuICAgIGF3YWl0IGNvcHlDb25maWd1cmVkRmlsZXMoc3Bpbm5lciwgTGV4Q29uZmlnLmNvbmZpZywgcXVpZXQpO1xuICB9IGNhdGNoKGNvcHlFcnJvcikge1xuICAgIGxvZyhgXFxuJHtjbGlOYW1lfSBFcnJvcjogRmFpbGVkIHRvIGNvcHkgY29uZmlndXJlZCBmaWxlczogJHtjb3B5RXJyb3IubWVzc2FnZX1gLCAnZXJyb3InLCBxdWlldCk7XG5cbiAgICBzcGlubmVyLmZhaWwoJ0ZhaWxlZCB0byBjb3B5IGNvbmZpZ3VyZWQgZmlsZXMuJyk7XG5cbiAgICBjYWxsYmFjaygxKTtcbiAgICByZXR1cm4gMTtcbiAgfVxuXG4gIGNhbGxiYWNrKDApO1xuICByZXR1cm4gMDtcbn07XG4iXSwibmFtZXMiOlsidHJhbnNmb3JtIiwiZXhlY2EiLCJleGlzdHNTeW5jIiwibHN0YXRTeW5jIiwicmVhZGRpclN5bmMiLCJyZWFkRmlsZVN5bmMiLCJ3cml0ZUZpbGVTeW5jIiwibWtkaXJTeW5jIiwic3luYyIsImdsb2JTeW5jIiwiZXh0bmFtZSIsInBhdGhFeHRuYW1lIiwiam9pbiIsInBhdGhKb2luIiwicmVsYXRpdmUiLCJwYXRoUmVsYXRpdmUiLCJyZXNvbHZlIiwicGF0aFJlc29sdmUiLCJkaXJuYW1lIiwiTGV4Q29uZmlnIiwiY2hlY2tMaW5rZWRNb2R1bGVzIiwiY29weUNvbmZpZ3VyZWRGaWxlcyIsImNvcHlGaWxlcyIsImNyZWF0ZVNwaW5uZXIiLCJnZXRGaWxlc0J5RXh0IiwicmVtb3ZlRmlsZXMiLCJnZXREaXJOYW1lIiwicmVzb2x2ZUJpbmFyeVBhdGgiLCJsb2ciLCJoYXNGaWxlVHlwZSIsInN0YXJ0UGF0aCIsImV4dCIsImZpbGVzIiwic29tZSIsImZpbGUiLCJmaWxlbmFtZSIsImZpbGVFeHQiLCJzdGF0IiwiaXNEaXJlY3RvcnkiLCJpbmNsdWRlcyIsImNvbXBpbGUiLCJjbWQiLCJjYWxsYmFjayIsImNsaU5hbWUiLCJjb25maWciLCJmb3JtYXQiLCJvdXRwdXRQYXRoIiwicXVpZXQiLCJyZW1vdmUiLCJzb3VyY2VQYXRoIiwid2F0Y2giLCJzcGlubmVyIiwicGFyc2VDb25maWciLCJvdXRwdXRGdWxsUGF0aCIsInNvdXJjZUZ1bGxQYXRoIiwic3djIiwic3djQ29uZmlnIiwidXNlVHlwZXNjcmlwdCIsIm91dHB1dERpciIsInByb2Nlc3MiLCJjd2QiLCJzb3VyY2VEaXIiLCJkaXJOYW1lIiwidHlwZXNjcmlwdFBhdGgiLCJ0eXBlc2NyaXB0T3B0aW9ucyIsImdsb2JPcHRpb25zIiwiYWJzb2x1dGUiLCJkb3QiLCJub2RpciIsInRzRmlsZXMiLCJ0c3hGaWxlcyIsImFsbFNvdXJjZUZpbGVzIiwiZ2V0VHlwZVNjcmlwdERlY2xhcmF0aW9uRmxhZ3MiLCJzdGFydCIsInJlc3VsdCIsImFsbCIsImVuY29kaW5nIiwicmVqZWN0IiwiZXhpdENvZGUiLCJoYXNEZWNsYXJhdGlvbnMiLCJlcnJvck91dHB1dCIsInN0ZGVyciIsInN0ZG91dCIsImVycm9yTGluZXMiLCJzcGxpdCIsImZpbHRlciIsImxpbmUiLCJ0cmltIiwic3RhcnRzV2l0aCIsImxlbmd0aCIsInNsaWNlIiwiZm9yRWFjaCIsImZhaWwiLCJzdWNjZWVkIiwiZXJyb3IiLCJtZXNzYWdlIiwiRXJyb3IiLCJzdGFjayIsIm5vc29ydCIsImpzRmlsZXMiLCJzb3VyY2VGaWxlcyIsImNzc0ZpbGVzIiwicG9zdGNzc1BhdGgiLCJwb3N0Y3NzT3B0aW9ucyIsImdpZkZpbGVzIiwianBnRmlsZXMiLCJwbmdGaWxlcyIsInN2Z0ZpbGVzIiwiaW1hZ2VGaWxlcyIsInR0ZkZpbGVzIiwib3RmRmlsZXMiLCJ3b2ZmRmlsZXMiLCJ3b2ZmMkZpbGVzIiwiZm9udEZpbGVzIiwibWRGaWxlcyIsInRyYW5zZm9ybVByb21pc2VzIiwibWFwIiwiZmlsZVJlbGF0aXZlVG9Tb3VyY2UiLCJvdXRwdXRGaWxlIiwicmVwbGFjZSIsIm91dHB1dERpclBhdGgiLCJyZWN1cnNpdmUiLCJzb3VyY2VDb2RlIiwiaXNUU1giLCJlbmRzV2l0aCIsInN3Y09wdGlvbnMiLCJtb2R1bGUiLCJ0eXBlIiwic291cmNlTWFwcyIsImNvZGUiLCJQcm9taXNlIiwiY29uc29sZSIsImNvcHlFcnJvciJdLCJtYXBwaW5ncyI6IkFBQUE7OztDQUdDLEdBQ0QsU0FBUUEsU0FBUyxRQUFPLFlBQVk7QUFDcEMsU0FBUUMsS0FBSyxRQUFPLFFBQVE7QUFDNUIsU0FBUUMsVUFBVSxFQUFFQyxTQUFTLEVBQUVDLFdBQVcsRUFBRUMsWUFBWSxFQUFFQyxhQUFhLEVBQUVDLFNBQVMsUUFBTyxLQUFLO0FBQzlGLFNBQVFDLFFBQVFDLFFBQVEsUUFBTyxPQUFPO0FBQ3RDLFNBQVFDLFdBQVdDLFdBQVcsRUFBRUMsUUFBUUMsUUFBUSxFQUFFQyxZQUFZQyxZQUFZLEVBQUVDLFdBQVdDLFdBQVcsRUFBRUMsT0FBTyxRQUFPLE9BQU87QUFFekgsU0FBUUMsU0FBUyxRQUFPLHFCQUFxQjtBQUM3QyxTQUFRQyxrQkFBa0IsRUFBRUMsbUJBQW1CLEVBQUVDLFNBQVMsRUFBRUMsYUFBYSxFQUFFQyxhQUFhLEVBQUVDLFdBQVcsUUFBTyxxQkFBcUI7QUFDakksU0FBUUMsVUFBVSxFQUFFQyxpQkFBaUIsUUFBTyxzQkFBc0I7QUFDbEUsU0FBUUMsR0FBRyxRQUFPLHFCQUFxQjtBQUl2QyxPQUFPLE1BQU1DLGNBQWMsQ0FBQ0MsV0FBbUJDO0lBQzdDLElBQUcsQ0FBQzdCLFdBQVc0QixZQUFZO1FBQ3pCLE9BQU87SUFDVDtJQUVBLE1BQU1FLFFBQWtCNUIsWUFBWTBCO0lB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
@@ -0,0 +1,20 @@
1
+ export interface ServerlessDeployOptions {
2
+ readonly bundle?: boolean;
3
+ readonly cliName?: string;
4
+ readonly copyNodeModule?: string | string[];
5
+ readonly entry?: string;
6
+ readonly external?: string | string[];
7
+ readonly format?: 'cjs' | 'esm';
8
+ readonly mainFields?: string;
9
+ readonly minify?: boolean;
10
+ readonly nodeModulesPath?: string;
11
+ readonly outfile?: string;
12
+ readonly output?: string;
13
+ readonly packageDir?: string;
14
+ readonly platform?: 'node';
15
+ readonly quiet?: boolean;
16
+ readonly sourcemap?: boolean;
17
+ readonly target?: string;
18
+ }
19
+ export type ServerlessDeployCallback = (status: number) => void;
20
+ export declare const serverlessDeploy: (cmd: ServerlessDeployOptions, callback?: ServerlessDeployCallback) => Promise<number>;
@@ -0,0 +1,110 @@
1
+ /**
2
+ * Copyright (c) 2018-Present, Nitrogen Labs, Inc.
3
+ * Copyrights licensed under the MIT License. See the accompanying LICENSE file for terms.
4
+ */ import { execa } from 'execa';
5
+ import { cpSync, existsSync, mkdirSync, rmSync, statSync } from 'fs';
6
+ import { dirname, resolve } from 'path';
7
+ import { log } from '../../utils/log.js';
8
+ const toList = (value)=>{
9
+ if (!value) return [];
10
+ return Array.isArray(value) ? value : [
11
+ value
12
+ ];
13
+ };
14
+ const formatSize = (bytes)=>{
15
+ if (bytes < 1024) return `${bytes} B`;
16
+ if (bytes < 1024 * 1024) return `${(bytes / 1024).toFixed(1)} KB`;
17
+ return `${(bytes / 1024 / 1024).toFixed(1)} MB`;
18
+ };
19
+ export const serverlessDeploy = async (cmd, callback = ()=>({}))=>{
20
+ const { bundle = true, cliName = 'Lex', entry, format = 'cjs', mainFields = 'module,main', minify = false, nodeModulesPath = './node_modules', output = './lambda-package.zip', packageDir = './.lex/lambda-package', platform = 'node', quiet, sourcemap = false, target = 'node24' } = cmd;
21
+ if (!entry) {
22
+ log(`\n${cliName} Error: --entry is required.`, 'error', quiet);
23
+ callback(1);
24
+ return 1;
25
+ }
26
+ const entryPath = resolve(process.cwd(), entry);
27
+ if (!existsSync(entryPath)) {
28
+ log(`\n${cliName} Error: Entry file not found, "${entry}".`, 'error', quiet);
29
+ callback(1);
30
+ return 1;
31
+ }
32
+ const outputPath = resolve(process.cwd(), output);
33
+ const packagePath = resolve(process.cwd(), packageDir);
34
+ const outfile = resolve(process.cwd(), cmd.outfile || `${packageDir}/index.js`);
35
+ try {
36
+ log(`${cliName} packaging Lambda bundle...`, 'info', quiet);
37
+ rmSync(packagePath, {
38
+ force: true,
39
+ recursive: true
40
+ });
41
+ rmSync(outputPath, {
42
+ force: true
43
+ });
44
+ mkdirSync(dirname(outfile), {
45
+ recursive: true
46
+ });
47
+ const esbuildArgs = [
48
+ entryPath,
49
+ bundle ? '--bundle' : '--bundle=false',
50
+ `--platform=${platform}`,
51
+ `--target=${target}`,
52
+ `--format=${format}`,
53
+ `--main-fields=${mainFields}`,
54
+ '--tree-shaking=true',
55
+ '--legal-comments=none',
56
+ `--outfile=${outfile}`
57
+ ];
58
+ if (minify) {
59
+ esbuildArgs.push('--minify');
60
+ }
61
+ if (sourcemap) {
62
+ esbuildArgs.push('--sourcemap');
63
+ }
64
+ for (const external of toList(cmd.external)){
65
+ esbuildArgs.push(`--external:${external}`);
66
+ }
67
+ await execa('npx', [
68
+ '--no-install',
69
+ 'esbuild',
70
+ ...esbuildArgs
71
+ ], {
72
+ cwd: process.cwd(),
73
+ stdio: 'inherit'
74
+ });
75
+ for (const moduleName of toList(cmd.copyNodeModule)){
76
+ const source = resolve(process.cwd(), nodeModulesPath, moduleName);
77
+ const destination = resolve(packagePath, 'node_modules', moduleName);
78
+ if (!existsSync(source)) {
79
+ log(`${cliName} warning: node module not found, "${moduleName}".`, 'warn', quiet);
80
+ continue;
81
+ }
82
+ mkdirSync(dirname(destination), {
83
+ recursive: true
84
+ });
85
+ cpSync(source, destination, {
86
+ recursive: true
87
+ });
88
+ }
89
+ mkdirSync(dirname(outputPath), {
90
+ recursive: true
91
+ });
92
+ await execa('zip', [
93
+ '-qr',
94
+ outputPath,
95
+ '.'
96
+ ], {
97
+ cwd: packagePath,
98
+ stdio: 'inherit'
99
+ });
100
+ log(`${cliName} Lambda package created: ${outputPath} (${formatSize(statSync(outputPath).size)})`, 'success', quiet);
101
+ callback(0);
102
+ return 0;
103
+ } catch (error) {
104
+ log(`\n${cliName} Error: Lambda package failed. ${error.message}`, 'error', quiet);
105
+ callback(1);
106
+ return 1;
107
+ }
108
+ };
109
+
110
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21tYW5kcy9zZXJ2ZXJsZXNzLWRlcGxveS9zZXJ2ZXJsZXNzLWRlcGxveS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvcHlyaWdodCAoYykgMjAxOC1QcmVzZW50LCBOaXRyb2dlbiBMYWJzLCBJbmMuXG4gKiBDb3B5cmlnaHRzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS4gU2VlIHRoZSBhY2NvbXBhbnlpbmcgTElDRU5TRSBmaWxlIGZvciB0ZXJtcy5cbiAqL1xuaW1wb3J0IHtleGVjYX0gZnJvbSAnZXhlY2EnO1xuaW1wb3J0IHtjcFN5bmMsIGV4aXN0c1N5bmMsIG1rZGlyU3luYywgcm1TeW5jLCBzdGF0U3luY30gZnJvbSAnZnMnO1xuaW1wb3J0IHtkaXJuYW1lLCByZXNvbHZlfSBmcm9tICdwYXRoJztcblxuaW1wb3J0IHtsb2d9IGZyb20gJy4uLy4uL3V0aWxzL2xvZy5qcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2VydmVybGVzc0RlcGxveU9wdGlvbnMge1xuICByZWFkb25seSBidW5kbGU/OiBib29sZWFuO1xuICByZWFkb25seSBjbGlOYW1lPzogc3RyaW5nO1xuICByZWFkb25seSBjb3B5Tm9kZU1vZHVsZT86IHN0cmluZyB8IHN0cmluZ1tdO1xuICByZWFkb25seSBlbnRyeT86IHN0cmluZztcbiAgcmVhZG9ubHkgZXh0ZXJuYWw/OiBzdHJpbmcgfCBzdHJpbmdbXTtcbiAgcmVhZG9ubHkgZm9ybWF0PzogJ2NqcycgfCAnZXNtJztcbiAgcmVhZG9ubHkgbWFpbkZpZWxkcz86IHN0cmluZztcbiAgcmVhZG9ubHkgbWluaWZ5PzogYm9vbGVhbjtcbiAgcmVhZG9ubHkgbm9kZU1vZHVsZXNQYXRoPzogc3RyaW5nO1xuICByZWFkb25seSBvdXRmaWxlPzogc3RyaW5nO1xuICByZWFkb25seSBvdXRwdXQ/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IHBhY2thZ2VEaXI/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IHBsYXRmb3JtPzogJ25vZGUnO1xuICByZWFkb25seSBxdWlldD86IGJvb2xlYW47XG4gIHJlYWRvbmx5IHNvdXJjZW1hcD86IGJvb2xlYW47XG4gIHJlYWRvbmx5IHRhcmdldD86IHN0cmluZztcbn1cblxuZXhwb3J0IHR5cGUgU2VydmVybGVzc0RlcGxveUNhbGxiYWNrID0gKHN0YXR1czogbnVtYmVyKSA9PiB2b2lkO1xuXG5jb25zdCB0b0xpc3QgPSAodmFsdWU/OiBzdHJpbmcgfCBzdHJpbmdbXSk6IHN0cmluZ1tdID0+IHtcbiAgaWYoIXZhbHVlKSByZXR1cm4gW107XG4gIHJldHVybiBBcnJheS5pc0FycmF5KHZhbHVlKSA/IHZhbHVlIDogW3ZhbHVlXTtcbn07XG5cbmNvbnN0IGZvcm1hdFNpemUgPSAoYnl0ZXM6IG51bWJlcik6IHN0cmluZyA9PiB7XG4gIGlmKGJ5dGVzIDwgMTAyNCkgcmV0dXJuIGAke2J5dGVzfSBCYDtcbiAgaWYoYnl0ZXMgPCAxMDI0ICogMTAyNCkgcmV0dXJuIGAkeyhieXRlcyAvIDEwMjQpLnRvRml4ZWQoMSl9IEtCYDtcbiAgcmV0dXJuIGAkeyhieXRlcyAvIDEwMjQgLyAxMDI0KS50b0ZpeGVkKDEpfSBNQmA7XG59O1xuXG5leHBvcnQgY29uc3Qgc2VydmVybGVzc0RlcGxveSA9IGFzeW5jIChcbiAgY21kOiBTZXJ2ZXJsZXNzRGVwbG95T3B0aW9ucyxcbiAgY2FsbGJhY2s6IFNlcnZlcmxlc3NEZXBsb3lDYWxsYmFjayA9ICgpID0+ICh7fSlcbik6IFByb21pc2U8bnVtYmVyPiA9PiB7XG4gIGNvbnN0IHtcbiAgICBidW5kbGUgPSB0cnVlLFxuICAgIGNsaU5hbWUgPSAnTGV4JyxcbiAgICBlbnRyeSxcbiAgICBmb3JtYXQgPSAnY2pzJyxcbiAgICBtYWluRmllbGRzID0gJ21vZHVsZSxtYWluJyxcbiAgICBtaW5pZnkgPSBmYWxzZSxcbiAgICBub2RlTW9kdWxlc1BhdGggPSAnLi9ub2RlX21vZHVsZXMnLFxuICAgIG91dHB1dCA9ICcuL2xhbWJkYS1wYWNrYWdlLnppcCcsXG4gICAgcGFja2FnZURpciA9ICcuLy5sZXgvbGFtYmRhLXBhY2thZ2UnLFxuICAgIHBsYXRmb3JtID0gJ25vZGUnLFxuICAgIHF1aWV0LFxuICAgIHNvdXJjZW1hcCA9IGZhbHNlLFxuICAgIHRhcmdldCA9ICdub2RlMjQnXG4gIH0gPSBjbWQ7XG5cbiAgaWYoIWVudHJ5KSB7XG4gICAgbG9nKGBcXG4ke2NsaU5hbWV9IEVycm9yOiAtLWVudHJ5IGlzIHJlcXVpcmVkLmAsICdlcnJvcicsIHF1aWV0KTtcbiAgICBjYWxsYmFjaygxKTtcbiAgICByZXR1cm4gMTtcbiAgfVxuXG4gIGNvbnN0IGVudHJ5UGF0aCA9IHJlc29sdmUocHJvY2Vzcy5jd2QoKSwgZW50cnkpO1xuICBpZighZXhpc3RzU3luYyhlbnRyeVBhdGgpKSB7XG4gICAgbG9nKGBcXG4ke2NsaU5hbWV9IEVycm9yOiBFbnRyeSBmaWxlIG5vdCBmb3VuZCwgXCIke2VudHJ5fVwiLmAsICdlcnJvcicsIHF1aWV0KTtcbiAgICBjYWxsYmFjaygxKTtcbiAgICByZXR1cm4gMTtcbiAgfVxuXG4gIGNvbnN0IG91dHB1dFBhdGggPSByZXNvbHZlKHByb2Nlc3MuY3dkKCksIG91dHB1dCk7XG4gIGNvbnN0IHBhY2thZ2VQYXRoID0gcmVzb2x2ZShwcm9jZXNzLmN3ZCgpLCBwYWNrYWdlRGlyKTtcbiAgY29uc3Qgb3V0ZmlsZSA9IHJlc29sdmUocHJvY2Vzcy5jd2QoKSwgY21kLm91dGZpbGUgfHwgYCR7cGFja2FnZURpcn0vaW5kZXguanNgKTtcblxuICB0cnkge1xuICAgIGxvZyhgJHtjbGlOYW1lfSBwYWNrYWdpbmcgTGFtYmRhIGJ1bmRsZS4uLmAsICdpbmZvJywgcXVpZXQpO1xuXG4gICAgcm1TeW5jKHBhY2thZ2VQYXRoLCB7Zm9yY2U6IHRydWUsIHJlY3Vyc2l2ZTogdHJ1ZX0pO1xuICAgIHJtU3luYyhvdXRwdXRQYXRoLCB7Zm9yY2U6IHRydWV9KTtcbiAgICBta2RpclN5bmMoZGlybmFtZShvdXRmaWxlKSwge3JlY3Vyc2l2ZTogdHJ1ZX0pO1xuXG4gICAgY29uc3QgZXNidWlsZEFyZ3MgPSBbXG4gICAgICBlbnRyeVBhdGgsXG4gICAgICBidW5kbGUgPyAnLS1idW5kbGUnIDogJy0tYnVuZGxlPWZhbHNlJyxcbiAgICAgIGAtLXBsYXRmb3JtPSR7cGxhdGZvcm19YCxcbiAgICAgIGAtLXRhcmdldD0ke3RhcmdldH1gLFxuICAgICAgYC0tZm9ybWF0PSR7Zm9ybWF0fWAsXG4gICAgICBgLS1tYWluLWZpZWxkcz0ke21haW5GaWVsZHN9YCxcbiAgICAgICctLXRyZWUtc2hha2luZz10cnVlJyxcbiAgICAgICctLWxlZ2FsLWNvbW1lbnRzPW5vbmUnLFxuICAgICAgYC0tb3V0ZmlsZT0ke291dGZpbGV9YFxuICAgIF07XG5cbiAgICBpZihtaW5pZnkpIHtcbiAgICAgIGVzYnVpbGRBcmdzLnB1c2goJy0tbWluaWZ5Jyk7XG4gICAgfVxuXG4gICAgaWYoc291cmNlbWFwKSB7XG4gICAgICBlc2J1aWxkQXJncy5wdXNoKCctLXNvdXJjZW1hcCcpO1xuICAgIH1cblxuICAgIGZvcihjb25zdCBleHRlcm5hbCBvZiB0b0xpc3QoY21kLmV4dGVybmFsKSkge1xuICAgICAgZXNidWlsZEFyZ3MucHVzaChgLS1leHRlcm5hbDoke2V4dGVybmFsfWApO1xuICAgIH1cblxuICAgIGF3YWl0IGV4ZWNhKCducHgnLCBbJy0tbm8taW5zdGFsbCcsICdlc2J1aWxkJywgLi4uZXNidWlsZEFyZ3NdLCB7XG4gICAgICBjd2Q6IHByb2Nlc3MuY3dkKCksXG4gICAgICBzdGRpbzogJ2luaGVyaXQnXG4gICAgfSk7XG5cbiAgICBmb3IoY29uc3QgbW9kdWxlTmFtZSBvZiB0b0xpc3QoY21kLmNvcHlOb2RlTW9kdWxlKSkge1xuICAgICAgY29uc3Qgc291cmNlID0gcmVzb2x2ZShwcm9jZXNzLmN3ZCgpLCBub2RlTW9kdWxlc1BhdGgsIG1vZHVsZU5hbWUpO1xuICAgICAgY29uc3QgZGVzdGluYXRpb24gPSByZXNvbHZlKHBhY2thZ2VQYXRoLCAnbm9kZV9tb2R1bGVzJywgbW9kdWxlTmFtZSk7XG5cbiAgICAgIGlmKCFleGlzdHNTeW5jKHNvdXJjZSkpIHtcbiAgICAgICAgbG9nKGAke2NsaU5hbWV9IHdhcm5pbmc6IG5vZGUgbW9kdWxlIG5vdCBmb3VuZCwgXCIke21vZHVsZU5hbWV9XCIuYCwgJ3dhcm4nLCBxdWlldCk7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBta2RpclN5bmMoZGlybmFtZShkZXN0aW5hdGlvbiksIHtyZWN1cnNpdmU6IHRydWV9KTtcbiAgICAgIGNwU3luYyhzb3VyY2UsIGRlc3RpbmF0aW9uLCB7cmVjdXJzaXZlOiB0cnVlfSk7XG4gICAgfVxuXG4gICAgbWtkaXJTeW5jKGRpcm5hbWUob3V0cHV0UGF0aCksIHtyZWN1cnNpdmU6IHRydWV9KTtcbiAgICBhd2FpdCBleGVjYSgnemlwJywgWyctcXInLCBvdXRwdXRQYXRoLCAnLiddLCB7XG4gICAgICBjd2Q6IHBhY2thZ2VQYXRoLFxuICAgICAgc3RkaW86ICdpbmhlcml0J1xuICAgIH0pO1xuXG4gICAgbG9nKGAke2NsaU5hbWV9IExhbWJkYSBwYWNrYWdlIGNyZWF0ZWQ6ICR7b3V0cHV0UGF0aH0gKCR7Zm9ybWF0U2l6ZShzdGF0U3luYyhvdXRwdXRQYXRoKS5zaXplKX0pYCwgJ3N1Y2Nlc3MnLCBxdWlldCk7XG4gICAgY2FsbGJhY2soMCk7XG4gICAgcmV0dXJuIDA7XG4gIH0gY2F0Y2goZXJyb3IpIHtcbiAgICBsb2coYFxcbiR7Y2xpTmFtZX0gRXJyb3I6IExhbWJkYSBwYWNrYWdlIGZhaWxlZC4gJHtlcnJvci5tZXNzYWdlfWAsICdlcnJvcicsIHF1aWV0KTtcbiAgICBjYWxsYmFjaygxKTtcbiAgICByZXR1cm4gMTtcbiAgfVxufTtcbiJdLCJuYW1lcyI6WyJleGVjYSIsImNwU3luYyIsImV4aXN0c1N5bmMiLCJta2RpclN5bmMiLCJybVN5bmMiLCJzdGF0U3luYyIsImRpcm5hbWUiLCJyZXNvbHZlIiwibG9nIiwidG9MaXN0IiwidmFsdWUiLCJBcnJheSIsImlzQXJyYXkiLCJmb3JtYXRTaXplIiwiYnl0ZXMiLCJ0b0ZpeGVkIiwic2VydmVybGVzc0RlcGxveSIsImNtZCIsImNhbGxiYWNrIiwiYnVuZGxlIiwiY2xpTmFtZSIsImVudHJ5IiwiZm9ybWF0IiwibWFpbkZpZWxkcyIsIm1pbmlmeSIsIm5vZGVNb2R1bGVzUGF0aCIsIm91dHB1dCIsInBhY2thZ2VEaXIiLCJwbGF0Zm9ybSIsInF1aWV0Iiwic291cmNlbWFwIiwidGFyZ2V0IiwiZW50cnlQYXRoIiwicHJvY2VzcyIsImN3ZCIsIm91dHB1dFBhdGgiLCJwYWNrYWdlUGF0aCIsIm91dGZpbGUiLCJmb3JjZSIsInJlY3Vyc2l2ZSIsImVzYnVpbGRBcmdzIiwicHVzaCIsImV4dGVybmFsIiwic3RkaW8iLCJtb2R1bGVOYW1lIiwiY29weU5vZGVNb2R1bGUiLCJzb3VyY2UiLCJkZXN0aW5hdGlvbiIsInNpemUiLCJlcnJvciIsIm1lc3NhZ2UiXSwibWFwcGluZ3MiOiJBQUFBOzs7Q0FHQyxHQUNELFNBQVFBLEtBQUssUUFBTyxRQUFRO0FBQzVCLFNBQVFDLE1BQU0sRUFBRUMsVUFBVSxFQUFFQyxTQUFTLEVBQUVDLE1BQU0sRUFBRUMsUUFBUSxRQUFPLEtBQUs7QUFDbkUsU0FBUUMsT0FBTyxFQUFFQyxPQUFPLFFBQU8sT0FBTztBQUV0QyxTQUFRQyxHQUFHLFFBQU8scUJBQXFCO0FBdUJ2QyxNQUFNQyxTQUFTLENBQUNDO0lBQ2QsSUFBRyxDQUFDQSxPQUFPLE9BQU8sRUFBRTtJQUNwQixPQUFPQyxNQUFNQyxPQUFPLENBQUNGLFNBQVNBLFFBQVE7UUFBQ0E7S0FBTTtBQUMvQztBQUVBLE1BQU1HLGFBQWEsQ0FBQ0M7SUFDbEIsSUFBR0EsUUFBUSxNQUFNLE9BQU8sR0FBR0EsTUFBTSxFQUFFLENBQUM7SUFDcEMsSUFBR0EsUUFBUSxPQUFPLE1BQU0sT0FBTyxHQUFHLEFBQUNBLENBQUFBLFFBQVEsSUFBRyxFQUFHQyxPQUFPLENBQUMsR0FBRyxHQUFHLENBQUM7SUFD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
@@ -1,4 +1,4 @@
1
- export interface ServerlessOptions {
1
+ export interface ServerlessDevOptions {
2
2
  readonly cliName?: string;
3
3
  readonly config?: string;
4
4
  readonly debug?: boolean;
@@ -12,5 +12,5 @@ export interface ServerlessOptions {
12
12
  readonly variables?: string;
13
13
  readonly wsPort?: number;
14
14
  }
15
- export type ServerlessCallback = (status: number) => void;
16
- export declare const serverless: (cmd: ServerlessOptions, callback?: ServerlessCallback) => Promise<number>;
15
+ export type ServerlessDevCallback = (status: number) => void;
16
+ export declare const serverlessDev: (cmd: ServerlessDevOptions, callback?: ServerlessDevCallback) => Promise<number>;