@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.
- package/README.md +8 -8
- package/examples/serverless-example/README.md +2 -2
- package/lib/LexConfig.js +3 -2
- package/lib/commands/build/build.js +3 -3
- package/lib/commands/compile/compile.js +5 -5
- package/lib/commands/serverless-deploy/serverless-deploy.d.ts +20 -0
- package/lib/commands/serverless-deploy/serverless-deploy.js +110 -0
- package/lib/commands/{serverless/serverless.d.ts → serverless-dev/serverless-dev.d.ts} +3 -3
- package/lib/commands/serverless-dev/serverless-dev.js +952 -0
- package/lib/commands/test/test.d.ts +4 -0
- package/lib/commands/test/test.js +305 -237
- package/lib/index.d.ts +2 -1
- package/lib/index.js +3 -2
- package/lib/lex.js +9 -4
- package/package.json +7 -3
- package/playwright.config.ts +24 -0
- package/tsconfig.build.json +1 -0
- package/tsconfig.lint.json +1 -0
- package/tsconfig.test.json +2 -0
- package/vitest.config.mjs +2 -2
- package/lib/commands/serverless/serverless.js +0 -843
|
@@ -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
|
|
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
|
|
16
|
-
export declare const
|
|
15
|
+
export type ServerlessDevCallback = (status: number) => void;
|
|
16
|
+
export declare const serverlessDev: (cmd: ServerlessDevOptions, callback?: ServerlessDevCallback) => Promise<number>;
|