runway-cli 1.2.0 → 1.3.1

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.
@@ -1,4 +1,37 @@
1
1
  "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
2
35
  var __importDefault = (this && this.__importDefault) || function (mod) {
3
36
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
37
  };
@@ -124,6 +157,12 @@ async function deployCommand(options) {
124
157
  logger_1.logger.error('CLI not configured. Run "runway init" first.');
125
158
  return;
126
159
  }
160
+ // Check token validity before proceeding
161
+ if ((0, config_1.isTokenExpired)()) {
162
+ logger_1.logger.error('Your authentication token has expired.');
163
+ logger_1.logger.info('Run "runway login" to re-authenticate.');
164
+ return;
165
+ }
127
166
  const config = (0, config_1.getConfig)();
128
167
  logger_1.logger.dim(`Server: ${config.serverUrl}`);
129
168
  logger_1.logger.blank();
@@ -139,8 +178,13 @@ async function deployCommand(options) {
139
178
  logger_1.logger.error(error instanceof Error ? error.message : 'Unknown error');
140
179
  return;
141
180
  }
142
- // Determine project name
143
- let projectName = options.name || detectedProject.name;
181
+ // Determine project name — sanitize from package.json
182
+ const suggestedName = (detectedProject.name || path_1.default.basename(process.cwd()))
183
+ .replace(/^@[^/]+\//, '') // Remove npm scope (@scope/name → name)
184
+ .replace(/[^a-zA-Z0-9-_]/g, '-') // Replace invalid chars with hyphens
185
+ .replace(/^-+|-+$/g, '') // Trim leading/trailing hyphens
186
+ .toLowerCase();
187
+ let projectName = options.name || suggestedName;
144
188
  // Interactive mode if name not provided
145
189
  if (!options.name) {
146
190
  const answers = await inquirer_1.default.prompt([
@@ -249,6 +293,12 @@ async function deployCommand(options) {
249
293
  let buildOutputDir = detectedProject.buildOutputDir;
250
294
  if (buildMode === 'local') {
251
295
  logger_1.logger.step(1, 4, 'Building project...');
296
+ // Patch React Router basename before build (if applicable)
297
+ let didPatch = false;
298
+ if (projectType === 'react') {
299
+ const { ReactPatcher } = await Promise.resolve().then(() => __importStar(require('../services/reactPatcher')));
300
+ didPatch = await ReactPatcher.patch(process.cwd());
301
+ }
252
302
  const buildResult = await buildService_1.buildService.build({
253
303
  projectPath: process.cwd(),
254
304
  projectType,
@@ -256,6 +306,11 @@ async function deployCommand(options) {
256
306
  packageManager: detectedProject.packageManager,
257
307
  envFile: envFilePath,
258
308
  });
309
+ // Revert patch after build (keep user's source clean)
310
+ if (didPatch) {
311
+ const { ReactPatcher } = await Promise.resolve().then(() => __importStar(require('../services/reactPatcher')));
312
+ await ReactPatcher.revert(process.cwd());
313
+ }
259
314
  if (!buildResult.success) {
260
315
  logger_1.logger.error(`Build failed: ${buildResult.error}`);
261
316
  return;
@@ -382,6 +437,11 @@ async function deployCommand(options) {
382
437
  logger_1.logger.blank();
383
438
  logger_1.logger.info(`Your app is available at: ${config.serverUrl}/app/${safeName}`);
384
439
  }
440
+ // Show health warning if service didn't respond on its allocated port
441
+ if (finalStatus.healthWarning) {
442
+ logger_1.logger.blank();
443
+ logger_1.logger.warn(`⚠ Health check: ${finalStatus.healthWarning}`);
444
+ }
385
445
  }
386
446
  else {
387
447
  logger_1.logger.error(`Deployment failed: ${finalStatus.error || 'Unknown error'}`);
@@ -404,4 +464,4 @@ async function deployCommand(options) {
404
464
  }
405
465
  logger_1.logger.blank();
406
466
  }
407
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVwbG95LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbW1hbmRzL2RlcGxveS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQXlJQSxzQ0FnVUM7QUF6Y0Qsd0RBQWdDO0FBQ2hDLDhDQUFzQjtBQUN0Qiw0Q0FBb0I7QUFDcEIsZ0RBQXdCO0FBQ3hCLGtEQUEwQjtBQUUxQixpRUFBNEQ7QUFDNUQsMkRBQXdEO0FBQ3hELCtEQUE0RDtBQUM1RCw2REFBZ0U7QUFDaEUsNENBQTBEO0FBQzFELDRDQUF5QztBQVl6Qzs7R0FFRztBQUNILFNBQVMsWUFBWSxDQUFDLFFBQWdCO0lBQ3BDLE1BQU0sT0FBTyxHQUFHLFlBQUUsQ0FBQyxZQUFZLENBQUMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ25ELE1BQU0sSUFBSSxHQUEyQixFQUFFLENBQUM7SUFFeEMsS0FBSyxNQUFNLElBQUksSUFBSSxPQUFPLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7UUFDdkMsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQzVCLGdDQUFnQztRQUNoQyxJQUFJLENBQUMsT0FBTyxJQUFJLE9BQU8sQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDO1lBQUUsU0FBUztRQUVsRCxNQUFNLE9BQU8sR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3JDLElBQUksT0FBTyxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ2hCLE1BQU0sR0FBRyxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO1lBQzdDLElBQUksS0FBSyxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUMsT0FBTyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO1lBQzlDLHVDQUF1QztZQUN2QyxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUs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LE1BQU0sQ0FBQyxTQUFTLFFBQVEsUUFBUSxFQUFFLENBQUMsQ0FBQztnQkFDL0UsQ0FBQztZQUNILENBQUM7aUJBQU0sQ0FBQztnQkFDTixlQUFNLENBQUMsS0FBSyxDQUFDLHNCQUFzQixXQUFXLENBQUMsS0FBSyxJQUFJLGVBQWUsRUFBRSxDQUFDLENBQUM7Z0JBQzNFLElBQUksV0FBVyxDQUFDLElBQUksRUFBRSxDQUFDO29CQUNyQixlQUFNLENBQUMsS0FBSyxFQUFFLENBQUM7b0JBQ2YsZUFBTSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQztvQkFDcEIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ2hDLENBQUM7WUFDSCxDQUFDO1FBQ0gsQ0FBQztRQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7WUFDZixlQUFNLENBQUMsSUFBSSxDQUFDLG1DQUFtQyxDQUFDLENBQUM7WUFDakQsZUFBTSxDQUFDLEdBQUcsQ0FBQyx3Q0FBd0MsQ0FBQyxDQUFDO1FBQ3ZELENBQUM7SUFDSCxDQUFDO1NBQU0sQ0FBQztRQUNOLGVBQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNmLGVBQU0sQ0FBQyxPQUFPLENBQUMsb0JBQW9CLENBQUMsQ0FBQztRQUNyQyxlQUFNLENBQUMsR0FBRyxDQUFDLDZEQUE2RCxDQUFDLENBQUM7SUFDNUUsQ0FBQztJQUVELGVBQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQztBQUNqQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGlucXVpcmVyIGZyb20gJ2lucXVpcmVyJztcbmltcG9ydCBvcmEgZnJvbSAnb3JhJztcbmltcG9ydCBmcyBmcm9tICdmcyc7XG5pbXBvcnQgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCBheGlvcyBmcm9tICdheGlvcyc7XG5pbXBvcnQgeyBQcm9qZWN0VHlwZSwgQnVpbGRNb2RlIH0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHsgZGV0ZWN0UHJvamVjdCB9IGZyb20gJy4uL3NlcnZpY2VzL3Byb2plY3REZXRlY3Rvcic7XG5pbXBvcnQgeyBidWlsZFNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9idWlsZFNlcnZpY2UnO1xuaW1wb3J0IHsgcGFja2FnZVNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9wYWNrYWdlU2VydmljZSc7XG5pbXBvcnQgeyBjcmVhdGVVcGxvYWRTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvdXBsb2FkU2VydmljZSc7XG5pbXBvcnQgeyBpc0NvbmZpZ3VyZWQsIGdldENvbmZpZyB9IGZyb20gJy4uL3V0aWxzL2NvbmZpZyc7XG5pbXBvcnQgeyBsb2dnZXIgfSBmcm9tICcuLi91dGlscy9sb2dnZXInO1xuXG5pbnRlcmZhY2UgRGVwbG95T3B0aW9ucyB7XG4gIG5hbWU/OiBzdHJpbmc7XG4gIHR5cGU/OiBQcm9qZWN0VHlwZTtcbiAgdmVyc2lvbj86IHN0cmluZztcbiAgYnVpbGRMb2NhbD86IGJvb2xlYW47XG4gIGJ1aWxkU2VydmVyPzogYm9vbGVhbjtcbiAgZW52RmlsZT86IHN0cmluZztcbiAgc2tpcEVudlByb21wdD86IGJvb2xlYW47XG59XG5cbi8qKlxuICogUGFyc2UgYSAuZW52IGZpbGUgaW50byBhIFJlY29yZFxuICovXG5mdW5jdGlvbiBwYXJzZUVudkZpbGUoZmlsZVBhdGg6IHN0cmluZyk6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4ge1xuICBjb25zdCBjb250ZW50ID0gZnMucmVhZEZpbGVTeW5jKGZpbGVQYXRoLCAndXRmLTgnKTtcbiAgY29uc3QgdmFyczogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHt9O1xuXG4gIGZvciAoY29uc3QgbGluZSBvZiBjb250ZW50LnNwbGl0KCdcXG4nKSkge1xuICAgIGNvbnN0IHRyaW1tZWQgPSBsaW5lLnRyaW0oKTtcbiAgICAvLyBTa2lwIGVtcHR5IGxpbmVzIGFuZCBjb21tZW50c1xuICAgIGlmICghdHJpbW1lZCB8fCB0cmltbWVkLnN0YXJ0c1dpdGgoJyMnKSkgY29udGludWU7XG5cbiAgICBjb25zdCBlcUluZGV4ID0gdHJpbW1lZC5pbmRleE9mKCc9Jyk7XG4gICAgaWYgKGVxSW5kZXggPiAwKSB7XG4gICAgICBjb25zdCBrZXkgPSB0cmltbWVkLnNsaWNlKDAsIGVxSW5kZXgpLnRyaW0oKTtcbiAgICAgIGxldCB2YWx1ZSA9IHRyaW1tZWQuc2xpY2UoZXFJbmRleCArIDEpLnRyaW0oKTtcbiAgICAgIC8vIFJlbW92ZSBzdXJyb3VuZGluZyBxdW90ZXMgaWYgcHJlc2VudFxuICAgICAgaWYgKCh2YWx1ZS5zdGFydHNXaXRoKCdcIicpICYmIHZhbHVlLmVuZHNXaXRoKCdcIicpKSB8fFxuICAgICAgICAgICh2YWx1ZS5zdGFydHNXaXRoKFwiJ1wiKSAmJiB2YWx1ZS5lbmRzV2l0aChcIidcIikpKSB7XG4gICAgICAgIHZhbHVlID0gdmFsdWUuc2xpY2UoMSwgLTEpO1xuICAgICAgfVxuICAgICAgdmFyc1trZXldID0gdmFsdWU7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHZhcnM7XG59XG5cbi8qKlxuICogUHJvbXB0IHVzZXIgZm9yIG1hbnVhbCBFTlYgdmFyaWFibGUgZW50cnlcbiAqL1xuYXN5bmMgZnVuY3Rpb24gcHJvbXB0TWFudWFsRW52VmFycygpOiBQcm9taXNlPFJlY29yZDxzdHJpbmcsIHN0cmluZz4+IHtcbiAgY29uc3QgdmFyczogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHt9O1xuXG4gIGxvZ2dlci5kaW0oJ0VudGVyIGVudmlyb25tZW50IHZhcmlhYmxlcyAoZW1wdHkgbmFtZSB0byBmaW5pc2gpOicpO1xuXG4gIHdoaWxlICh0cnVlKSB7XG4gICAgY29uc3QgeyBrZXkgfSA9IGF3YWl0IGlucXVpcmVyLnByb21wdChbXG4gICAgICB7XG4gICAgICAgIHR5cGU6ICdpbnB1dCcsXG4gICAgICAgIG5hbWU6ICdrZXknLFxuICAgICAgICBtZXNzYWdlOiAnVmFyaWFibGUgbmFtZTonLFxuICAgICAgfSxcbiAgICBdKTtcblxuICAgIGlmICgha2V5IHx8ICFrZXkudHJpbSgpKSB7XG4gICAgICBicmVhaztcbiAgICB9XG5cbiAgICBjb25zdCB7IHZhbHVlIH0gPSBhd2FpdCBpbnF1aXJlci5wcm9tcHQoW1xuICAgICAge1xuICAgICAgICB0eXBlOiAnaW5wdXQnLFxuICAgICAgICBuYW1lOiAndmFsdWUnLFxuICAgICAgICBtZXNzYWdlOiBgVmFsdWUgZm9yICR7a2V5fTpgLFxuICAgICAgfSxcbiAgICBdKTtcblxuICAgIHZhcnNba2V5LnRvVXBwZXJDYXNlKCkucmVwbGFjZSgvW15BLVowLTlfXS9nLCAnJyldID0gdmFsdWU7XG4gIH1cblxuICByZXR1cm4gdmFycztcbn1cblxuLyoqXG4gKiBQcm9tcHQgdXNlciBmb3IgZW52aXJvbm1lbnQgdmFyaWFibGUgb3B0aW9ucyB3aGVuIG5vIC5lbnYgZmlsZSBleGlzdHNcbiAqL1xuYXN5bmMgZnVuY3Rpb24gcHJvbXB0RW52T3B0aW9ucygpOiBQcm9taXNlPHN0cmluZyB8IHVuZGVmaW5lZD4ge1xuICBjb25zdCB7IGVudkNob2ljZSB9ID0gYXdhaXQgaW5xdWlyZXIucHJvbXB0KFtcbiAgICB7XG4gICAgICB0eXBlOiAnbGlzdCcsXG4gICAgICBuYW1lOiAnZW52Q2hvaWNlJyxcbiAgICAgIG1lc3NhZ2U6ICdIb3cgd291bGQgeW91IGxpa2UgdG8gcHJvdmlkZSBlbnZpcm9ubWVudCB2YXJpYWJsZXM/JyxcbiAgICAgIGNob2ljZXM6IFtcbiAgICAgICAgeyBuYW1lOiAnU3BlY2lmeSBwYXRoIHRvIC5lbnYgZmlsZScsIHZhbHVlOiAncGF0aCcgfSxcbiAgICAgICAgeyBuYW1lOiAnRW50ZXIgdmFyaWFibGVzIG1hbnVhbGx5IChjcmVhdGVzIC5lbnYpJywgdmFsdWU6ICdtYW51YWwnIH0sXG4gICAgICAgIHsgbmFtZTogJ0NvbnRpbnVlIHdpdGhvdXQgZW52aXJvbm1lbnQgdmFyaWFibGVzJywgdmFsdWU6ICdza2lwJyB9LFxuICAgICAgXSxcbiAgICB9LFxuICBdKTtcblxuICBpZiAoZW52Q2hvaWNlID09PSAncGF0aCcpIHtcbiAgICBjb25zdCB7IGVudlBhdGggfSA9IGF3YWl0IGlucXVpcmVyLnByb21wdChbXG4gICAgICB7XG4gICAgICAgIHR5cGU6ICdpbnB1dCcsXG4gICAgICAgIG5hbWU6ICdlbnZQYXRoJyxcbiAgICAgICAgbWVzc2FnZTogJ1BhdGggdG8gZW52IGZpbGU6JyxcbiAgICAgICAgdmFsaWRhdGU6IChpbnB1dDogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgaWYgKCFpbnB1dC50cmltKCkpIHJldHVybiAnUGxlYXNlIGVudGVyIGEgcGF0aCc7XG4gICAgICAgICAgaWYgKCFmcy5leGlzdHNTeW5jKGlucHV0KSkgcmV0dXJuICdGaWxlIG5vdCBmb3VuZCc7XG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIF0pO1xuICAgIGxvZ2dlci5zdWNjZXNzKGBVc2luZyBlbnYgZmlsZTogJHtlbnZQYXRofWApO1xuICAgIHJldHVybiBlbnZQYXRoO1xuICB9XG5cbiAgaWYgKGVudkNob2ljZSA9PT0gJ21hbnVhbCcpIHtcbiAgICBjb25zdCB2YXJzID0gYXdhaXQgcHJvbXB0TWFudWFsRW52VmFycygpO1xuICAgIGlmIChPYmplY3Qua2V5cyh2YXJzKS5sZW5ndGggPiAwKSB7XG4gICAgICAvLyBXcml0ZSB0byAuZW52IGZpbGUgaW4gcHJvamVjdFxuICAgICAgY29uc3QgZW52Q29udGVudCA9IE9iamVjdC5lbnRyaWVzKHZhcnMpXG4gICAgICAgIC5tYXAoKFtrLCB2XSkgPT4gYCR7a309JHt2fWApXG4gICAgICAgIC5qb2luKCdcXG4nKTtcbiAgICAgIGNvbnN0IGVudlBhdGggPSBwYXRoLmpvaW4ocHJvY2Vzcy5jd2QoKSwgJy5lbnYnKTtcbiAgICAgIGZzLndyaXRlRmlsZVN5bmMoZW52UGF0aCwgZW52Q29udGVudCk7XG4gICAgICBsb2dnZXIuc3VjY2VzcyhgQ3JlYXRlZCAuZW52IHdpdGggJHtPYmplY3Qua2V5cyh2YXJzKS5sZW5ndGh9IHZhcmlhYmxlc2ApO1xuICAgICAgcmV0dXJuIGVudlBhdGg7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHVuZGVmaW5lZDtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGRlcGxveUNvbW1hbmQob3B0aW9uczogRGVwbG95T3B0aW9ucyk6IFByb21pc2U8dm9pZD4ge1xuICBsb2dnZXIuaGVhZGVyKCdSdW53YXkgRGVwbG95Jyk7XG5cbiAgLy8gQ2hlY2sgY29uZmlndXJhdGlvblxuICBpZiAoIWlzQ29uZmlndXJlZCgpKSB7XG4gICAgbG9nZ2VyLmVycm9yKCdDTEkgbm90IGNvbmZpZ3VyZWQuIFJ1biBcInJ1bndheSBpbml0XCIgZmlyc3QuJyk7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3QgY29uZmlnID0gZ2V0Q29uZmlnKCk7XG4gIGxvZ2dlci5kaW0oYFNlcnZlcjogJHtjb25maWcuc2VydmVyVXJsfWApO1xuICBsb2dnZXIuYmxhbmsoKTtcblxuICAvLyBEZXRlY3QgcHJvamVjdFxuICBjb25zdCBzcGlubmVyID0gb3JhKCdEZXRlY3RpbmcgcHJvamVjdC4uLicpLnN0YXJ0KCk7XG4gIGxldCBkZXRlY3RlZFByb2plY3Q7XG5cbiAgdHJ5IHtcbiAgICBkZXRlY3RlZFByb2plY3QgPSBhd2FpdCBkZXRlY3RQcm9qZWN0KCk7XG4gICAgc3Bpbm5lci5zdWNjZWVkKGBEZXRlY3RlZDogJHtkZXRlY3RlZFByb2plY3QudHlwZX0gcHJvamVjdCAoJHtkZXRlY3RlZFByb2plY3QucGFja2FnZU1hbmFnZXJ9KWApO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIHNwaW5uZXIuZmFpbCgnRmFpbGVkIHRvIGRldGVjdCBwcm9qZWN0Jyk7XG4gICAgbG9nZ2VyLmVycm9yKGVycm9yIGluc3RhbmNlb2YgRXJyb3IgPyBlcnJvci5tZXNzYWdlIDogJ1Vua25vd24gZXJyb3InKTtcbiAgICByZXR1cm47XG4gIH1cblxuICAvLyBEZXRlcm1pbmUgcHJvamVjdCBuYW1lXG4gIGxldCBwcm9qZWN0TmFtZSA9IG9wdGlvbnMubmFtZSB8fCBkZXRlY3RlZFByb2plY3QubmFtZTtcblxuICAvLyBJbnRlcmFjdGl2ZSBtb2RlIGlmIG5hbWUgbm90IHByb3ZpZGVkXG4gIGlmICghb3B0aW9ucy5uYW1lKSB7XG4gICAgY29uc3QgYW5zd2VycyA9IGF3YWl0IGlucXVpcmVyLnByb21wdChbXG4gICAgICB7XG4gICAgICAgIHR5cGU6ICdpbnB1dCcsXG4gICAgICAgIG5hbWU6ICduYW1lJyxcbiAgICAgICAgbWVzc2FnZTogJ1Byb2plY3QgbmFtZTonLFxuICAgICAgICBkZWZhdWx0OiBwcm9qZWN0TmFtZSxcbiAgICAgICAgdmFsaWRhdGU6IChpbnB1dDogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgaWYgKGlucHV0Lmxlbmd0aCA8IDIpIHJldHVybiAnTmFtZSBtdXN0IGJlIGF0IGxlYXN0IDIgY2hhcmFjdGVycyc7XG4gICAgICAgICAgaWYgKCEvXlthLXpBLVowLTktX10rJC8udGVzdChpbnB1dCkpIHJldHVybiAnTmFtZSBjYW4gb25seSBjb250YWluIGxldHRlcnMsIG51bWJlcnMsIGh5cGhlbnMsIGFuZCB1bmRlcnNjb3Jlcyc7XG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIF0pO1xuICAgIHByb2plY3ROYW1lID0gYW5zd2Vycy5uYW1lO1xuICB9XG5cbiAgLy8gQXNrIGlmIGVudmlyb25tZW50IHZhcmlhYmxlcyBhcmUgcmVxdWlyZWRcbiAgY29uc3QgeyBuZWVkc0VudiB9ID0gYXdhaXQgaW5xdWlyZXIucHJvbXB0KFtcbiAgICB7XG4gICAgICB0eXBlOiAnY29uZmlybScsXG4gICAgICBuYW1lOiAnbmVlZHNFbnYnLFxuICAgICAgbWVzc2FnZTogJ0RvZXMgdGhpcyBwcm9qZWN0IHJlcXVpcmUgZW52aXJvbm1lbnQgdmFyaWFibGVzPycsXG4gICAgICBkZWZhdWx0OiBmYWxzZSxcbiAgICB9LFxuICBdKTtcblxuICBsZXQgZW52RmlsZVBhdGg6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgbGV0IGVudlZhcnM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7fTtcbiAgbGV0IGVudkluamVjdGVkID0gZmFsc2U7XG5cbiAgaWYgKG5lZWRzRW52KSB7XG4gICAgY29uc3QgZGVmYXVsdEVudlBhdGggPSBwYXRoLmpvaW4ocHJvY2Vzcy5jd2QoKSwgJy5lbnYnKTtcbiAgICBjb25zdCBoYXNFbnZGaWxlID0gZnMuZXhpc3RzU3luYyhkZWZhdWx0RW52UGF0aCk7XG5cbiAgICBpZiAoaGFzRW52RmlsZSkge1xuICAgICAgLy8gLmVudiBmb3VuZCAtIGNvbmZpcm0gd2l0aCB1c2VyXG4gICAgICBjb25zdCB7IHVzZUV4aXN0aW5nIH0gPSBhd2FpdCBpbnF1aXJlci5wcm9tcHQoW1xuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogJ2NvbmZpcm0nLFxuICAgICAgICAgIG5hbWU6ICd1c2VFeGlzdGluZycsXG4gICAgICAgICAgbWVzc2FnZTogJ0ZvdW5kIC5lbnYgZmlsZSBpbiBwcm9qZWN0LiBVc2UgaXQ/JyxcbiAgICAgICAgICBkZWZhdWx0OiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgXSk7XG5cbiAgICAgIGlmICh1c2VFeGlzdGluZykge1xuICAgICAgICBlbnZGaWxlUGF0aCA9IGRlZmF1bHRFbnZQYXRoO1xuICAgICAgICBlbnZWYXJzID0gcGFyc2VFbnZGaWxlKGRlZmF1bHRFbnZQYXRoKTtcbiAgICAgICAgZW52SW5qZWN0ZWQgPSBPYmplY3Qua2V5cyhlbnZWYXJzKS5sZW5ndGggPiAwO1xuICAgICAgICBsb2dnZXIuc3VjY2VzcyhgTG9hZGVkICR7T2JqZWN0LmtleXMoZW52VmFycykubGVuZ3RofSB2YXJpYWJsZXMgZnJvbSAuZW52YCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBVc2VyIGRlY2xpbmVkIGV4aXN0aW5nIC5lbnYgLSBzaG93IG90aGVyIG9wdGlvbnNcbiAgICAgICAgZW52RmlsZVBhdGggPSBhd2FpdCBwcm9tcHRFbnZPcHRpb25zKCk7XG4gICAgICAgIGlmIChlbnZGaWxlUGF0aCkge1xuICAgICAgICAgIGVudlZhcnMgPSBwYXJzZUVudkZpbGUoZW52RmlsZVBhdGgpO1xuICAgICAgICAgIGVudkluamVjdGVkID0gT2JqZWN0LmtleXMoZW52VmFycykubGVuZ3RoID4gMDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAvLyBObyAuZW52IGZvdW5kIC0gc2hvdyBvcHRpb25zXG4gICAgICBsb2dnZXIud2FybignTm8gLmVudiBmaWxlIGZvdW5kIGluIHByb2plY3QgZGlyZWN0b3J5LicpO1xuICAgICAgZW52RmlsZVBhdGggPSBhd2FpdCBwcm9tcHRFbnZPcHRpb25zKCk7XG4gICAgICBpZiAoZW52RmlsZVBhdGgpIHtcbiAgICAgICAgZW52VmFycyA9IHBhcnNlRW52RmlsZShlbnZGaWxlUGF0aCk7XG4gICAgICAgIGVudkluamVjdGVkID0gT2JqZWN0LmtleXMoZW52VmFycykubGVuZ3RoID4gMDtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBEZXRlcm1pbmUgcHJvamVjdCB0eXBlXG4gIGNvbnN0IHByb2plY3RUeXBlID0gb3B0aW9ucy50eXBlIHx8IGRldGVjdGVkUHJvamVjdC50eXBlO1xuXG4gIC8vIERldGVybWluZSBidWlsZCBtb2RlXG4gIGxldCBidWlsZE1vZGU6IEJ1aWxkTW9kZTtcbiAgaWYgKG9wdGlvbnMuYnVpbGRTZXJ2ZXIpIHtcbiAgICBidWlsZE1vZGUgPSAnc2VydmVyJztcbiAgfSBlbHNlIGlmIChvcHRpb25zLmJ1aWxkTG9jYWwpIHtcbiAgICBidWlsZE1vZGUgPSAnbG9jYWwnO1xuICB9IGVsc2Uge1xuICAgIGJ1aWxkTW9kZSA9IGNvbmZpZy5kZWZhdWx0QnVpbGRNb2RlIHx8ICdsb2NhbCc7XG4gIH1cblxuICBsb2dnZXIuYmxhbmsoKTtcbiAgbG9nZ2VyLmluZm8oYFByb2plY3Q6ICR7cHJvamVjdE5hbWV9YCk7XG4gIGxvZ2dlci5pbmZvKGBUeXBlOiAke3Byb2plY3RUeXBlfWApO1xuICBsb2dnZXIuaW5mbyhgQnVpbGQgbW9kZTogJHtidWlsZE1vZGV9YCk7XG4gIGlmIChvcHRpb25zLnZlcnNpb24pIHtcbiAgICBsb2dnZXIuaW5mbyhgVmVyc2lvbjogJHtvcHRpb25zLnZlcnNpb259YCk7XG4gIH1cbiAgbG9nZ2VyLmJsYW5rKCk7XG5cbiAgLy8gQ29uZmlybSBkZXBsb3ltZW50XG4gIGNvbnN0IHsgY29uZmlybSB9ID0gYXdhaXQgaW5xdWlyZXIucHJvbXB0KFtcbiAgICB7XG4gICAgICB0eXBlOiAnY29uZmlybScsXG4gICAgICBuYW1lOiAnY29uZmlybScsXG4gICAgICBtZXNzYWdlOiAnUHJvY2VlZCB3aXRoIGRlcGxveW1lbnQ/JyxcbiAgICAgIGRlZmF1bHQ6IHRydWUsXG4gICAgfSxcbiAgXSk7XG5cbiAgaWYgKCFjb25maXJtKSB7XG4gICAgbG9nZ2VyLndhcm4oJ0RlcGxveW1lbnQgY2FuY2VsbGVkLicpO1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGxvZ2dlci5ibGFuaygpO1xuXG4gIC8vIFN0ZXAgMTogQnVpbGQgKGZvciBsb2NhbC1idWlsZCBtb2RlKVxuICBsZXQgYnVpbGRPdXRwdXREaXIgPSBkZXRlY3RlZFByb2plY3QuYnVpbGRPdXRwdXREaXI7XG5cbiAgaWYgKGJ1aWxkTW9kZSA9PT0gJ2xvY2FsJykge1xuICAgIGxvZ2dlci5zdGVwKDEsIDQsICdCdWlsZGluZyBwcm9qZWN0Li4uJyk7XG5cbiAgICBjb25zdCBidWlsZFJlc3VsdCA9IGF3YWl0IGJ1aWxkU2VydmljZS5idWlsZCh7XG4gICAgICBwcm9qZWN0UGF0aDogcHJvY2Vzcy5jd2QoKSxcbiAgICAgIHByb2plY3RUeXBlLFxuICAgICAgcHJvamVjdE5hbWUsXG4gICAgICBwYWNrYWdlTWFuYWdlcjogZGV0ZWN0ZWRQcm9qZWN0LnBhY2thZ2VNYW5hZ2VyLFxuICAgICAgZW52RmlsZTogZW52RmlsZVBhdGgsXG4gICAgfSk7XG5cbiAgICBpZiAoIWJ1aWxkUmVzdWx0LnN1Y2Nlc3MpIHtcbiAgICAgIGxvZ2dlci5lcnJvcihgQnVpbGQgZmFpbGVkOiAke2J1aWxkUmVzdWx0LmVycm9yfWApO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGJ1aWxkT3V0cHV0RGlyID0gYnVpbGRSZXN1bHQub3V0cHV0RGlyO1xuICAgIGxvZ2dlci5zdWNjZXNzKGBCdWlsZCBjb21wbGV0ZWQgaW4gJHsoYnVpbGRSZXN1bHQuZHVyYXRpb24gLyAxMDAwKS50b0ZpeGVkKDEpfXNgKTtcbiAgICBsb2dnZXIuYmxhbmsoKTtcbiAgfVxuXG4gIC8vIFN0ZXAgMjogUGFja2FnZVxuICBjb25zdCBwYWNrYWdlU3RlcCA9IGJ1aWxkTW9kZSA9PT0gJ2xvY2FsJyA/IDIgOiAxO1xuICBjb25zdCB0b3RhbFN0ZXBzID0gYnVpbGRNb2RlID09PSAnbG9jYWwnID8gNCA6IDM7XG5cbiAgbG9nZ2VyLnN0ZXAocGFja2FnZVN0ZXAsIHRvdGFsU3RlcHMsICdDcmVhdGluZyBkZXBsb3ltZW50IHBhY2thZ2UuLi4nKTtcblxuICBsZXQgcGFja2FnZVJlc3VsdDtcbiAgdHJ5IHtcbiAgICBwYWNrYWdlUmVzdWx0ID0gYXdhaXQgcGFja2FnZVNlcnZpY2UucGFja2FnZSh7XG4gICAgICBwcm9qZWN0UGF0aDogcHJvY2Vzcy5jd2QoKSxcbiAgICAgIHByb2plY3RUeXBlLFxuICAgICAgYnVpbGRPdXRwdXREaXIsXG4gICAgICBpbmNsdWRlU291cmNlOiBidWlsZE1vZGUgPT09ICdzZXJ2ZXInLFxuICAgICAgZW52RmlsZTogcHJvamVjdFR5cGUgPT09ICdub2RlJyA/IGVudkZpbGVQYXRoIDogdW5kZWZpbmVkLFxuICAgIH0pO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGxvZ2dlci5lcnJvcihgUGFja2FnaW5nIGZhaWxlZDogJHtlcnJvciBpbnN0YW5jZW9mIEVycm9yID8gZXJyb3IubWVzc2FnZSA6ICdVbmtub3duIGVycm9yJ31gKTtcbiAgICByZXR1cm47XG4gIH1cblxuICBsb2dnZXIuYmxhbmsoKTtcblxuICAvLyBTdGVwIDM6IEFuYWx5emUgJiBVcGxvYWRcbiAgbG9nZ2VyLnN0ZXAocGFja2FnZVN0ZXAgKyAxLCB0b3RhbFN0ZXBzLCAnQW5hbHl6aW5nIGFuZCB1cGxvYWRpbmcgdG8gc2VydmVyLi4uJyk7XG5cbiAgbGV0IHVwbG9hZFNlcnZpY2U7XG4gIHRyeSB7XG4gICAgdXBsb2FkU2VydmljZSA9IGNyZWF0ZVVwbG9hZFNlcnZpY2UoKTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICBsb2dnZXIuZXJyb3IoZXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IGVycm9yLm1lc3NhZ2UgOiAnVW5rbm93biBlcnJvcicpO1xuICAgIHBhY2thZ2VTZXJ2aWNlLmNsZWFudXAocGFja2FnZVJlc3VsdC56aXBQYXRoKTtcbiAgICByZXR1cm47XG4gIH1cblxuICAvLyBBbmFseXplIHBhY2thZ2UgZmlyc3QgKGZvciBzZXJ2ZXItYnVpbGQgbW9kZSB0byBnZXQgd2FybmluZ3MpXG4gIGxldCBjb25maXJtU2VydmVyQnVpbGQgPSBmYWxzZTtcbiAgaWYgKGJ1aWxkTW9kZSA9PT0gJ3NlcnZlcicpIHtcbiAgICBjb25zdCBhbmFseXplUmVzdWx0ID0gYXdhaXQgdXBsb2FkU2VydmljZS5hbmFseXplUGFja2FnZShwYWNrYWdlUmVzdWx0LnppcFBhdGgsIHByb2plY3RUeXBlKTtcblxuICAgIGlmIChhbmFseXplUmVzdWx0LnN1Y2Nlc3MgJiYgYW5hbHl6ZVJlc3VsdC5hbmFseXNpcykge1xuICAgICAgY29uc3QgYW5hbHlzaXMgPSBhbmFseXplUmVzdWx0LmFuYWx5c2lzO1xuXG4gICAgICAvLyBEaXNwbGF5IHdhcm5pbmdzXG4gICAgICBpZiAoYW5hbHlzaXMud2FybmluZ3MgJiYgYW5hbHlzaXMud2FybmluZ3MubGVuZ3RoID4gMCkge1xuICAgICAgICBsb2dnZXIuYmxhbmsoKTtcbiAgICAgICAgbG9nZ2VyLndhcm4oJ1NlcnZlciBBbmFseXNpczonKTtcbiAgICAgICAgZm9yIChjb25zdCB3YXJuaW5nIG9mIGFuYWx5c2lzLndhcm5pbmdzKSB7XG4gICAgICAgICAgY29uc3QgcHJlZml4ID0gd2FybmluZy5sZXZlbCA9PT0gJ2NyaXRpY2FsJyA/ICfinYwnIDogd2FybmluZy5sZXZlbCA9PT0gJ3dhcm5pbmcnID8gJ+KaoO+4jycgOiAn4oS577iPJztcbiAgICAgICAgICBsb2dnZXIuZGltKGAgICR7cHJlZml4fSAke3dhcm5pbmcubWVzc2FnZX1gKTtcbiAgICAgICAgfVxuICAgICAgICBsb2dnZXIuYmxhbmsoKTtcbiAgICAgIH1cblxuICAgICAgLy8gSGFuZGxlIGNvbmZpcm1hdGlvbiBmb3Igc2VydmVyLXNpZGUgYnVpbGRcbiAgICAgIGlmIChhbmFseXNpcy5yZXF1aXJlc0NvbmZpcm1hdGlvbikge1xuICAgICAgICBjb25zdCB7IGNvbmZpcm1CdWlsZCB9ID0gYXdhaXQgaW5xdWlyZXIucHJvbXB0KFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICB0eXBlOiAnY29uZmlybScsXG4gICAgICAgICAgICBuYW1lOiAnY29uZmlybUJ1aWxkJyxcbiAgICAgICAgICAgIG1lc3NhZ2U6IGAke2FuYWx5c2lzLmNvbmZpcm1hdGlvblJlYXNvbiB8fCAnU2VydmVyLXNpZGUgYnVpbGQgcmVxdWlyZWQnfS4gVGhpcyBtYXkgY29uc3VtZSBzaWduaWZpY2FudCByZXNvdXJjZXMuIENvbnRpbnVlP2AsXG4gICAgICAgICAgICBkZWZhdWx0OiB0cnVlLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0pO1xuXG4gICAgICAgIGlmICghY29uZmlybUJ1aWxkKSB7XG4gICAgICAgICAgbG9nZ2VyLndhcm4oJ0RlcGxveW1lbnQgY2FuY2VsbGVkIGJ5IHVzZXIuJyk7XG4gICAgICAgICAgcGFja2FnZVNlcnZpY2UuY2xlYW51cChwYWNrYWdlUmVzdWx0LnppcFBhdGgpO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25maXJtU2VydmVyQnVpbGQgPSB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IHVwbG9hZFJlc3VsdCA9IGF3YWl0IHVwbG9hZFNlcnZpY2UudXBsb2FkKHtcbiAgICB6aXBQYXRoOiBwYWNrYWdlUmVzdWx0LnppcFBhdGgsXG4gICAgcHJvamVjdE5hbWUsXG4gICAgcHJvamVjdFR5cGUsXG4gICAgdmVyc2lvbjogb3B0aW9ucy52ZXJzaW9uLFxuICAgIGJ1aWxkTW9kZSxcbiAgICBjb25maXJtU2VydmVyQnVpbGQsXG4gICAgLy8gRU5WIG11dGFiaWxpdHkgdHJhY2tpbmdcbiAgICBkZXBsb3ltZW50U291cmNlOiAnY2xpJyxcbiAgICBlbnZJbmplY3RlZCxcbiAgfSk7XG5cbiAgLy8gQ2xlYW51cCB6aXAgZmlsZVxuICBwYWNrYWdlU2VydmljZS5jbGVhbnVwKHBhY2thZ2VSZXN1bHQuemlwUGF0aCk7XG5cbiAgaWYgKCF1cGxvYWRSZXN1bHQuc3VjY2Vzcykge1xuICAgIGxvZ2dlci5lcnJvcihgVXBsb2FkIGZhaWxlZDogJHt1cGxvYWRSZXN1bHQuZXJyb3J9YCk7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgbG9nZ2VyLnN1Y2Nlc3MoJ1VwbG9hZCBjb21wbGV0ZScpO1xuICBsb2dnZXIuYmxhbmsoKTtcblxuICAvLyBTdGVwIDQ6IFdhaXQgZm9yIGRlcGxveW1lbnQgKGlmIGRlcGxveW1lbnQgSUQgYXZhaWxhYmxlKVxuICBpZiAodXBsb2FkUmVzdWx0LmRlcGxveW1lbnRJZCkge1xuICAgIGxvZ2dlci5zdGVwKHBhY2thZ2VTdGVwICsgMiwgdG90YWxTdGVwcywgJ1dhaXRpbmcgZm9yIGRlcGxveW1lbnQgdG8gY29tcGxldGUuLi4nKTtcblxuICAgIHRyeSB7XG4gICAgICBjb25zdCBmaW5hbFN0YXR1cyA9IGF3YWl0IHVwbG9hZFNlcnZpY2UucG9sbERlcGxveW1lbnRTdGF0dXMoXG4gICAgICAgIHVwbG9hZFJlc3VsdC5kZXBsb3ltZW50SWQsXG4gICAgICAgIChzdGF0dXMpID0+IHtcbiAgICAgICAgICBpZiAoc3RhdHVzLnByb2dyZXNzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHByb2Nlc3Muc3Rkb3V0LndyaXRlKGBcXHIgIFByb2dyZXNzOiAke3N0YXR1cy5wcm9ncmVzc30lYCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICApO1xuXG4gICAgICBwcm9jZXNzLnN0ZG91dC53cml0ZSgnXFxuJyk7XG5cbiAgICAgIGlmIChmaW5hbFN0YXR1cy5zdGF0dXMgPT09ICdzdWNjZXNzJykge1xuICAgICAgICBsb2dnZXIuYmxhbmsoKTtcbiAgICAgICAgbG9nZ2VyLnN1Y2Nlc3MoJ0RlcGxveW1lbnQgc3VjY2Vzc2Z1bCEnKTtcblxuICAgICAgICBjb25zdCBzYWZlTmFtZSA9IHByb2plY3ROYW1lLnRvTG93ZXJDYXNlKCkucmVwbGFjZSgvW15hLXowLTldL2csICctJyk7XG5cbiAgICAgICAgLy8gRmV0Y2ggZG9tYWluIGNvbmZpZyB0byBzaG93IHByb3BlciBVUkxcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBjb25zdCBkb21haW5SZXNwb25zZSA9IGF3YWl0IGF4aW9zLmdldChgJHtjb25maWcuc2VydmVyVXJsfS9hcGkvZG9tYWluYCwge1xuICAgICAgICAgICAgaGVhZGVyczogY29uZmlnLnRva2VuID8geyBBdXRob3JpemF0aW9uOiBgQmVhcmVyICR7Y29uZmlnLnRva2VufWAgfSA6IHt9LFxuICAgICAgICAgIH0pO1xuICAgICAgICAgIGNvbnN0IGRvbWFpbkNvbmZpZyA9IGRvbWFpblJlc3BvbnNlLmRhdGE7XG5cbiAgICAgICAgICBpZiAoZG9tYWluQ29uZmlnLmRvbWFpbj8uYWN0aXZlICYmIGRvbWFpbkNvbmZpZy5zZWN1cml0eU1vZGUgPT09ICdkb21haW4taHR0cHMnKSB7XG4gICAgICAgICAgICBsb2dnZXIuYmxhbmsoKTtcbiAgICAgICAgICAgIGxvZ2dlci5pbmZvKGBZb3VyIGFwcCBpcyBhdmFpbGFibGUgYXQ6IGh0dHBzOi8vJHtkb21haW5Db25maWcuZG9tYWluLmRvbWFpbn0vYXBwLyR7c2FmZU5hbWV9YCk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGxvZ2dlci5ibGFuaygpO1xuICAgICAgICAgICAgbG9nZ2VyLmluZm8oYFlvdXIgYXBwIGlzIGF2YWlsYWJsZSBhdDogJHtjb25maWcuc2VydmVyVXJsfS9hcHAvJHtzYWZlTmFtZX1gKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gY2F0Y2gge1xuICAgICAgICAgIC8vIEZhbGxiYWNrIHRvIHNlcnZlciBVUkwgaWYgZG9tYWluIGZldGNoIGZhaWxzXG4gICAgICAgICAgbG9nZ2VyLmJsYW5rKCk7XG4gICAgICAgICAgbG9nZ2VyLmluZm8oYFlvdXIgYXBwIGlzIGF2YWlsYWJsZSBhdDogJHtjb25maWcuc2VydmVyVXJsfS9hcHAvJHtzYWZlTmFtZX1gKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbG9nZ2VyLmVycm9yKGBEZXBsb3ltZW50IGZhaWxlZDogJHtmaW5hbFN0YXR1cy5lcnJvciB8fCAnVW5rbm93biBlcnJvcid9YCk7XG4gICAgICAgIGlmIChmaW5hbFN0YXR1cy5sb2dzKSB7XG4gICAgICAgICAgbG9nZ2VyLmJsYW5rKCk7XG4gICAgICAgICAgbG9nZ2VyLmRpbSgnTG9nczonKTtcbiAgICAgICAgICBjb25zb2xlLmxvZyhmaW5hbFN0YXR1cy5sb2dzKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBsb2dnZXIud2FybignQ291bGQgbm90IHRyYWNrIGRlcGxveW1lbnQgc3RhdHVzJyk7XG4gICAgICBsb2dnZXIuZGltKCdDaGVjayB0aGUgd2ViIFVJIGZvciBkZXBsb3ltZW50IHN0YXR1cycpO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBsb2dnZXIuYmxhbmsoKTtcbiAgICBsb2dnZXIuc3VjY2VzcygnVXBsb2FkIHN1Y2Nlc3NmdWwhJyk7XG4gICAgbG9nZ2VyLmRpbSgnRGVwbG95bWVudCBpcyBiZWluZyBwcm9jZXNzZWQuIENoZWNrIHRoZSB3ZWIgVUkgZm9yIHN0YXR1cy4nKTtcbiAgfVxuXG4gIGxvZ2dlci5ibGFuaygpO1xufVxuIl19
467
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVwbG95LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbW1hbmRzL2RlcGxveS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQXlJQSxzQ0ErVkM7QUF4ZUQsd0RBQWdDO0FBQ2hDLDhDQUFzQjtBQUN0Qiw0Q0FBb0I7QUFDcEIsZ0RBQXdCO0FBQ3hCLGtEQUEwQjtBQUUxQixpRUFBNEQ7QUFDNUQsMkRBQXdEO0FBQ3hELCtEQUE0RDtBQUM1RCw2REFBZ0U7QUFDaEUsNENBQTBFO0FBQzFFLDRDQUF5QztBQVl6Qzs7R0FFRztBQUNILFNBQVMsWUFBWSxDQUFDLFFBQWdCO0lBQ3BDLE1BQU0sT0FBTyxHQUFHLFlBQUUsQ0FBQyxZQUFZLENBQUMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ25ELE1BQU0sSUFBSSxHQUEyQixFQUFFLENBQUM7SUFFeEMsS0FBSyxNQUFNLElBQUksSUFBSSxPQUFPLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7UUFDdkMsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQzVCLGdDQUFnQztRQUNoQyxJQUFJLENBQUMsT0FBTyxJQUFJLE9BQU8sQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDO1lBQUUsU0FBUztRQUVsRCxNQUFNLE9BQU8sR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3JDLElBQUksT0FBTyxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ2hCLE1BQU0sR0FBRyxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO1lBQzdDLElBQUksS0FBSyxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUMsT0FBTyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO1lBQzlDLHVDQUF1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QVcsQ0FBQyxhQUFhLEVBQUUsQ0FBQztvQkFDOUIsZUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDO29CQUNmLGVBQU0sQ0FBQyxJQUFJLENBQUMsb0JBQW9CLFdBQVcsQ0FBQyxhQUFhLEVBQUUsQ0FBQyxDQUFDO2dCQUMvRCxDQUFDO1lBQ0gsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLGVBQU0sQ0FBQyxLQUFLLENBQUMsc0JBQXNCLFdBQVcsQ0FBQyxLQUFLLElBQUksZUFBZSxFQUFFLENBQUMsQ0FBQztnQkFDM0UsSUFBSSxXQUFXLENBQUMsSUFBSSxFQUFFLENBQUM7b0JBQ3JCLGVBQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQztvQkFDZixlQUFNLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDO29CQUNwQixPQUFPLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDaEMsQ0FBQztZQUNILENBQUM7UUFDSCxDQUFDO1FBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztZQUNmLGVBQU0sQ0FBQyxJQUFJLENBQUMsbUNBQW1DLENBQUMsQ0FBQztZQUNqRCxlQUFNLENBQUMsR0FBRyxDQUFDLHdDQUF3QyxDQUFDLENBQUM7UUFDdkQsQ0FBQztJQUNILENBQUM7U0FBTSxDQUFDO1FBQ04sZUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ2YsZUFBTSxDQUFDLE9BQU8sQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1FBQ3JDLGVBQU0sQ0FBQyxHQUFHLENBQUMsNkRBQTZELENBQUMsQ0FBQztJQUM1RSxDQUFDO0lBRUQsZUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDO0FBQ2pCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgaW5xdWlyZXIgZnJvbSAnaW5xdWlyZXInO1xuaW1wb3J0IG9yYSBmcm9tICdvcmEnO1xuaW1wb3J0IGZzIGZyb20gJ2ZzJztcbmltcG9ydCBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0IGF4aW9zIGZyb20gJ2F4aW9zJztcbmltcG9ydCB7IFByb2plY3RUeXBlLCBCdWlsZE1vZGUgfSBmcm9tICcuLi90eXBlcyc7XG5pbXBvcnQgeyBkZXRlY3RQcm9qZWN0IH0gZnJvbSAnLi4vc2VydmljZXMvcHJvamVjdERldGVjdG9yJztcbmltcG9ydCB7IGJ1aWxkU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2J1aWxkU2VydmljZSc7XG5pbXBvcnQgeyBwYWNrYWdlU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL3BhY2thZ2VTZXJ2aWNlJztcbmltcG9ydCB7IGNyZWF0ZVVwbG9hZFNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy91cGxvYWRTZXJ2aWNlJztcbmltcG9ydCB7IGlzQ29uZmlndXJlZCwgZ2V0Q29uZmlnLCBpc1Rva2VuRXhwaXJlZCB9IGZyb20gJy4uL3V0aWxzL2NvbmZpZyc7XG5pbXBvcnQgeyBsb2dnZXIgfSBmcm9tICcuLi91dGlscy9sb2dnZXInO1xuXG5pbnRlcmZhY2UgRGVwbG95T3B0aW9ucyB7XG4gIG5hbWU/OiBzdHJpbmc7XG4gIHR5cGU/OiBQcm9qZWN0VHlwZTtcbiAgdmVyc2lvbj86IHN0cmluZztcbiAgYnVpbGRMb2NhbD86IGJvb2xlYW47XG4gIGJ1aWxkU2VydmVyPzogYm9vbGVhbjtcbiAgZW52RmlsZT86IHN0cmluZztcbiAgc2tpcEVudlByb21wdD86IGJvb2xlYW47XG59XG5cbi8qKlxuICogUGFyc2UgYSAuZW52IGZpbGUgaW50byBhIFJlY29yZFxuICovXG5mdW5jdGlvbiBwYXJzZUVudkZpbGUoZmlsZVBhdGg6IHN0cmluZyk6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4ge1xuICBjb25zdCBjb250ZW50ID0gZnMucmVhZEZpbGVTeW5jKGZpbGVQYXRoLCAndXRmLTgnKTtcbiAgY29uc3QgdmFyczogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHt9O1xuXG4gIGZvciAoY29uc3QgbGluZSBvZiBjb250ZW50LnNwbGl0KCdcXG4nKSkge1xuICAgIGNvbnN0IHRyaW1tZWQgPSBsaW5lLnRyaW0oKTtcbiAgICAvLyBTa2lwIGVtcHR5IGxpbmVzIGFuZCBjb21tZW50c1xuICAgIGlmICghdHJpbW1lZCB8fCB0cmltbWVkLnN0YXJ0c1dpdGgoJyMnKSkgY29udGludWU7XG5cbiAgICBjb25zdCBlcUluZGV4ID0gdHJpbW1lZC5pbmRleE9mKCc9Jyk7XG4gICAgaWYgKGVxSW5kZXggPiAwKSB7XG4gICAgICBjb25zdCBrZXkgPSB0cmltbWVkLnNsaWNlKDAsIGVxSW5kZXgpLnRyaW0oKTtcbiAgICAgIGxldCB2YWx1ZSA9IHRyaW1tZWQuc2xpY2UoZXFJbmRleCArIDEpLnRyaW0oKTtcbiAgICAgIC8vIFJlbW92ZSBzdXJyb3VuZGluZyBxdW90ZXMgaWYgcHJlc2VudFxuICAgICAgaWYgKCh2YWx1ZS5zdGFydHNXaXRoKCdcIicpICYmIHZhbHVlLmVuZHNXaXRoKCdcIicpKSB8fFxuICAgICAgICAgICh2YWx1ZS5zdGFydHNXaXRoKFwiJ1wiKSAmJiB2YWx1ZS5lbmRzV2l0aChcIidcIikpKSB7XG4gICAgICAgIHZhbHVlID0gdmFsdWUuc2xpY2UoMSwgLTEpO1xuICAgICAgfVxuICAgICAgdmFyc1trZXldID0gdmFsdWU7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHZhcnM7XG59XG5cbi8qKlxuICogUHJvbXB0IHVzZXIgZm9yIG1hbnVhbCBFTlYgdmFyaWFibGUgZW50cnlcbiAqL1xuYXN5bmMgZnVuY3Rpb24gcHJvbXB0TWFudWFsRW52VmFycygpOiBQcm9taXNlPFJlY29yZDxzdHJpbmcsIHN0cmluZz4+IHtcbiAgY29uc3QgdmFyczogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHt9O1xuXG4gIGxvZ2dlci5kaW0oJ0VudGVyIGVudmlyb25tZW50IHZhcmlhYmxlcyAoZW1wdHkgbmFtZSB0byBmaW5pc2gpOicpO1xuXG4gIHdoaWxlICh0cnVlKSB7XG4gICAgY29uc3QgeyBrZXkgfSA9IGF3YWl0IGlucXVpcmVyLnByb21wdChbXG4gICAgICB7XG4gICAgICAgIHR5cGU6ICdpbnB1dCcsXG4gICAgICAgIG5hbWU6ICdrZXknLFxuICAgICAgICBtZXNzYWdlOiAnVmFyaWFibGUgbmFtZTonLFxuICAgICAgfSxcbiAgICBdKTtcblxuICAgIGlmICgha2V5IHx8ICFrZXkudHJpbSgpKSB7XG4gICAgICBicmVhaztcbiAgICB9XG5cbiAgICBjb25zdCB7IHZhbHVlIH0gPSBhd2FpdCBpbnF1aXJlci5wcm9tcHQoW1xuICAgICAge1xuICAgICAgICB0eXBlOiAnaW5wdXQnLFxuICAgICAgICBuYW1lOiAndmFsdWUnLFxuICAgICAgICBtZXNzYWdlOiBgVmFsdWUgZm9yICR7a2V5fTpgLFxuICAgICAgfSxcbiAgICBdKTtcblxuICAgIHZhcnNba2V5LnRvVXBwZXJDYXNlKCkucmVwbGFjZSgvW15BLVowLTlfXS9nLCAnJyldID0gdmFsdWU7XG4gIH1cblxuICByZXR1cm4gdmFycztcbn1cblxuLyoqXG4gKiBQcm9tcHQgdXNlciBmb3IgZW52aXJvbm1lbnQgdmFyaWFibGUgb3B0aW9ucyB3aGVuIG5vIC5lbnYgZmlsZSBleGlzdHNcbiAqL1xuYXN5bmMgZnVuY3Rpb24gcHJvbXB0RW52T3B0aW9ucygpOiBQcm9taXNlPHN0cmluZyB8IHVuZGVmaW5lZD4ge1xuICBjb25zdCB7IGVudkNob2ljZSB9ID0gYXdhaXQgaW5xdWlyZXIucHJvbXB0KFtcbiAgICB7XG4gICAgICB0eXBlOiAnbGlzdCcsXG4gICAgICBuYW1lOiAnZW52Q2hvaWNlJyxcbiAgICAgIG1lc3NhZ2U6ICdIb3cgd291bGQgeW91IGxpa2UgdG8gcHJvdmlkZSBlbnZpcm9ubWVudCB2YXJpYWJsZXM/JyxcbiAgICAgIGNob2ljZXM6IFtcbiAgICAgICAgeyBuYW1lOiAnU3BlY2lmeSBwYXRoIHRvIC5lbnYgZmlsZScsIHZhbHVlOiAncGF0aCcgfSxcbiAgICAgICAgeyBuYW1lOiAnRW50ZXIgdmFyaWFibGVzIG1hbnVhbGx5IChjcmVhdGVzIC5lbnYpJywgdmFsdWU6ICdtYW51YWwnIH0sXG4gICAgICAgIHsgbmFtZTogJ0NvbnRpbnVlIHdpdGhvdXQgZW52aXJvbm1lbnQgdmFyaWFibGVzJywgdmFsdWU6ICdza2lwJyB9LFxuICAgICAgXSxcbiAgICB9LFxuICBdKTtcblxuICBpZiAoZW52Q2hvaWNlID09PSAncGF0aCcpIHtcbiAgICBjb25zdCB7IGVudlBhdGggfSA9IGF3YWl0IGlucXVpcmVyLnByb21wdChbXG4gICAgICB7XG4gICAgICAgIHR5cGU6ICdpbnB1dCcsXG4gICAgICAgIG5hbWU6ICdlbnZQYXRoJyxcbiAgICAgICAgbWVzc2FnZTogJ1BhdGggdG8gZW52IGZpbGU6JyxcbiAgICAgICAgdmFsaWRhdGU6IChpbnB1dDogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgaWYgKCFpbnB1dC50cmltKCkpIHJldHVybiAnUGxlYXNlIGVudGVyIGEgcGF0aCc7XG4gICAgICAgICAgaWYgKCFmcy5leGlzdHNTeW5jKGlucHV0KSkgcmV0dXJuICdGaWxlIG5vdCBmb3VuZCc7XG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIF0pO1xuICAgIGxvZ2dlci5zdWNjZXNzKGBVc2luZyBlbnYgZmlsZTogJHtlbnZQYXRofWApO1xuICAgIHJldHVybiBlbnZQYXRoO1xuICB9XG5cbiAgaWYgKGVudkNob2ljZSA9PT0gJ21hbnVhbCcpIHtcbiAgICBjb25zdCB2YXJzID0gYXdhaXQgcHJvbXB0TWFudWFsRW52VmFycygpO1xuICAgIGlmIChPYmplY3Qua2V5cyh2YXJzKS5sZW5ndGggPiAwKSB7XG4gICAgICAvLyBXcml0ZSB0byAuZW52IGZpbGUgaW4gcHJvamVjdFxuICAgICAgY29uc3QgZW52Q29udGVudCA9IE9iamVjdC5lbnRyaWVzKHZhcnMpXG4gICAgICAgIC5tYXAoKFtrLCB2XSkgPT4gYCR7a309JHt2fWApXG4gICAgICAgIC5qb2luKCdcXG4nKTtcbiAgICAgIGNvbnN0IGVudlBhdGggPSBwYXRoLmpvaW4ocHJvY2Vzcy5jd2QoKSwgJy5lbnYnKTtcbiAgICAgIGZzLndyaXRlRmlsZVN5bmMoZW52UGF0aCwgZW52Q29udGVudCk7XG4gICAgICBsb2dnZXIuc3VjY2VzcyhgQ3JlYXRlZCAuZW52IHdpdGggJHtPYmplY3Qua2V5cyh2YXJzKS5sZW5ndGh9IHZhcmlhYmxlc2ApO1xuICAgICAgcmV0dXJuIGVudlBhdGg7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHVuZGVmaW5lZDtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGRlcGxveUNvbW1hbmQob3B0aW9uczogRGVwbG95T3B0aW9ucyk6IFByb21pc2U8dm9pZD4ge1xuICBsb2dnZXIuaGVhZGVyKCdSdW53YXkgRGVwbG95Jyk7XG5cbiAgLy8gQ2hlY2sgY29uZmlndXJhdGlvblxuICBpZiAoIWlzQ29uZmlndXJlZCgpKSB7XG4gICAgbG9nZ2VyLmVycm9yKCdDTEkgbm90IGNvbmZpZ3VyZWQuIFJ1biBcInJ1bndheSBpbml0XCIgZmlyc3QuJyk7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgLy8gQ2hlY2sgdG9rZW4gdmFsaWRpdHkgYmVmb3JlIHByb2NlZWRpbmdcbiAgaWYgKGlzVG9rZW5FeHBpcmVkKCkpIHtcbiAgICBsb2dnZXIuZXJyb3IoJ1lvdXIgYXV0aGVudGljYXRpb24gdG9rZW4gaGFzIGV4cGlyZWQuJyk7XG4gICAgbG9nZ2VyLmluZm8oJ1J1biBcInJ1bndheSBsb2dpblwiIHRvIHJlLWF1dGhlbnRpY2F0ZS4nKTtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCBjb25maWcgPSBnZXRDb25maWcoKTtcbiAgbG9nZ2VyLmRpbShgU2VydmVyOiAke2NvbmZpZy5zZXJ2ZXJVcmx9YCk7XG4gIGxvZ2dlci5ibGFuaygpO1xuXG4gIC8vIERldGVjdCBwcm9qZWN0XG4gIGNvbnN0IHNwaW5uZXIgPSBvcmEoJ0RldGVjdGluZyBwcm9qZWN0Li4uJykuc3RhcnQoKTtcbiAgbGV0IGRldGVjdGVkUHJvamVjdDtcblxuICB0cnkge1xuICAgIGRldGVjdGVkUHJvamVjdCA9IGF3YWl0IGRldGVjdFByb2plY3QoKTtcbiAgICBzcGlubmVyLnN1Y2NlZWQoYERldGVjdGVkOiAke2RldGVjdGVkUHJvamVjdC50eXBlfSBwcm9qZWN0ICgke2RldGVjdGVkUHJvamVjdC5wYWNrYWdlTWFuYWdlcn0pYCk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgc3Bpbm5lci5mYWlsKCdGYWlsZWQgdG8gZGV0ZWN0IHByb2plY3QnKTtcbiAgICBsb2dnZXIuZXJyb3IoZXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IGVycm9yLm1lc3NhZ2UgOiAnVW5rbm93biBlcnJvcicpO1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8vIERldGVybWluZSBwcm9qZWN0IG5hbWUg4oCUIHNhbml0aXplIGZyb20gcGFja2FnZS5qc29uXG4gIGNvbnN0IHN1Z2dlc3RlZE5hbWUgPSAoZGV0ZWN0ZWRQcm9qZWN0Lm5hbWUgfHwgcGF0aC5iYXNlbmFtZShwcm9jZXNzLmN3ZCgpKSlcbiAgICAucmVwbGFjZSgvXkBbXi9dK1xcLy8sICcnKSAgICAgICAgLy8gUmVtb3ZlIG5wbSBzY29wZSAoQHNjb3BlL25hbWUg4oaSIG5hbWUpXG4gICAgLnJlcGxhY2UoL1teYS16QS1aMC05LV9dL2csICctJykgIC8vIFJlcGxhY2UgaW52YWxpZCBjaGFycyB3aXRoIGh5cGhlbnNcbiAgICAucmVwbGFjZSgvXi0rfC0rJC9nLCAnJykgICAgICAgICAgLy8gVHJpbSBsZWFkaW5nL3RyYWlsaW5nIGh5cGhlbnNcbiAgICAudG9Mb3dlckNhc2UoKTtcbiAgbGV0IHByb2plY3ROYW1lID0gb3B0aW9ucy5uYW1lIHx8IHN1Z2dlc3RlZE5hbWU7XG5cbiAgLy8gSW50ZXJhY3RpdmUgbW9kZSBpZiBuYW1lIG5vdCBwcm92aWRlZFxuICBpZiAoIW9wdGlvbnMubmFtZSkge1xuICAgIGNvbnN0IGFuc3dlcnMgPSBhd2FpdCBpbnF1aXJlci5wcm9tcHQoW1xuICAgICAge1xuICAgICAgICB0eXBlOiAnaW5wdXQnLFxuICAgICAgICBuYW1lOiAnbmFtZScsXG4gICAgICAgIG1lc3NhZ2U6ICdQcm9qZWN0IG5hbWU6JyxcbiAgICAgICAgZGVmYXVsdDogcHJvamVjdE5hbWUsXG4gICAgICAgIHZhbGlkYXRlOiAoaW5wdXQ6IHN0cmluZykgPT4ge1xuICAgICAgICAgIGlmIChpbnB1dC5sZW5ndGggPCAyKSByZXR1cm4gJ05hbWUgbXVzdCBiZSBhdCBsZWFzdCAyIGNoYXJhY3RlcnMnO1xuICAgICAgICAgIGlmICghL15bYS16QS1aMC05LV9dKyQvLnRlc3QoaW5wdXQpKSByZXR1cm4gJ05hbWUgY2FuIG9ubHkgY29udGFpbiBsZXR0ZXJzLCBudW1iZXJzLCBoeXBoZW5zLCBhbmQgdW5kZXJzY29yZXMnO1xuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9LFxuICAgICAgfSxcbiAgICBdKTtcbiAgICBwcm9qZWN0TmFtZSA9IGFuc3dlcnMubmFtZTtcbiAgfVxuXG4gIC8vIEFzayBpZiBlbnZpcm9ubWVudCB2YXJpYWJsZXMgYXJlIHJlcXVpcmVkXG4gIGNvbnN0IHsgbmVlZHNFbnYgfSA9IGF3YWl0IGlucXVpcmVyLnByb21wdChbXG4gICAge1xuICAgICAgdHlwZTogJ2NvbmZpcm0nLFxuICAgICAgbmFtZTogJ25lZWRzRW52JyxcbiAgICAgIG1lc3NhZ2U6ICdEb2VzIHRoaXMgcHJvamVjdCByZXF1aXJlIGVudmlyb25tZW50IHZhcmlhYmxlcz8nLFxuICAgICAgZGVmYXVsdDogZmFsc2UsXG4gICAgfSxcbiAgXSk7XG5cbiAgbGV0IGVudkZpbGVQYXRoOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIGxldCBlbnZWYXJzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge307XG4gIGxldCBlbnZJbmplY3RlZCA9IGZhbHNlO1xuXG4gIGlmIChuZWVkc0Vudikge1xuICAgIGNvbnN0IGRlZmF1bHRFbnZQYXRoID0gcGF0aC5qb2luKHByb2Nlc3MuY3dkKCksICcuZW52Jyk7XG4gICAgY29uc3QgaGFzRW52RmlsZSA9IGZzLmV4aXN0c1N5bmMoZGVmYXVsdEVudlBhdGgpO1xuXG4gICAgaWYgKGhhc0VudkZpbGUpIHtcbiAgICAgIC8vIC5lbnYgZm91bmQgLSBjb25maXJtIHdpdGggdXNlclxuICAgICAgY29uc3QgeyB1c2VFeGlzdGluZyB9ID0gYXdhaXQgaW5xdWlyZXIucHJvbXB0KFtcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6ICdjb25maXJtJyxcbiAgICAgICAgICBuYW1lOiAndXNlRXhpc3RpbmcnLFxuICAgICAgICAgIG1lc3NhZ2U6ICdGb3VuZCAuZW52IGZpbGUgaW4gcHJvamVjdC4gVXNlIGl0PycsXG4gICAgICAgICAgZGVmYXVsdDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgIF0pO1xuXG4gICAgICBpZiAodXNlRXhpc3RpbmcpIHtcbiAgICAgICAgZW52RmlsZVBhdGggPSBkZWZhdWx0RW52UGF0aDtcbiAgICAgICAgZW52VmFycyA9IHBhcnNlRW52RmlsZShkZWZhdWx0RW52UGF0aCk7XG4gICAgICAgIGVudkluamVjdGVkID0gT2JqZWN0LmtleXMoZW52VmFycykubGVuZ3RoID4gMDtcbiAgICAgICAgbG9nZ2VyLnN1Y2Nlc3MoYExvYWRlZCAke09iamVjdC5rZXlzKGVudlZhcnMpLmxlbmd0aH0gdmFyaWFibGVzIGZyb20gLmVudmApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gVXNlciBkZWNsaW5lZCBleGlzdGluZyAuZW52IC0gc2hvdyBvdGhlciBvcHRpb25zXG4gICAgICAgIGVudkZpbGVQYXRoID0gYXdhaXQgcHJvbXB0RW52T3B0aW9ucygpO1xuICAgICAgICBpZiAoZW52RmlsZVBhdGgpIHtcbiAgICAgICAgICBlbnZWYXJzID0gcGFyc2VFbnZGaWxlKGVudkZpbGVQYXRoKTtcbiAgICAgICAgICBlbnZJbmplY3RlZCA9IE9iamVjdC5rZXlzKGVudlZhcnMpLmxlbmd0aCA+IDA7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgLy8gTm8gLmVudiBmb3VuZCAtIHNob3cgb3B0aW9uc1xuICAgICAgbG9nZ2VyLndhcm4oJ05vIC5lbnYgZmlsZSBmb3VuZCBpbiBwcm9qZWN0IGRpcmVjdG9yeS4nKTtcbiAgICAgIGVudkZpbGVQYXRoID0gYXdhaXQgcHJvbXB0RW52T3B0aW9ucygpO1xuICAgICAgaWYgKGVudkZpbGVQYXRoKSB7XG4gICAgICAgIGVudlZhcnMgPSBwYXJzZUVudkZpbGUoZW52RmlsZVBhdGgpO1xuICAgICAgICBlbnZJbmplY3RlZCA9IE9iamVjdC5rZXlzKGVudlZhcnMpLmxlbmd0aCA+IDA7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gRGV0ZXJtaW5lIHByb2plY3QgdHlwZVxuICBjb25zdCBwcm9qZWN0VHlwZSA9IG9wdGlvbnMudHlwZSB8fCBkZXRlY3RlZFByb2plY3QudHlwZTtcblxuICAvLyBEZXRlcm1pbmUgYnVpbGQgbW9kZVxuICBsZXQgYnVpbGRNb2RlOiBCdWlsZE1vZGU7XG4gIGlmIChvcHRpb25zLmJ1aWxkU2VydmVyKSB7XG4gICAgYnVpbGRNb2RlID0gJ3NlcnZlcic7XG4gIH0gZWxzZSBpZiAob3B0aW9ucy5idWlsZExvY2FsKSB7XG4gICAgYnVpbGRNb2RlID0gJ2xvY2FsJztcbiAgfSBlbHNlIHtcbiAgICBidWlsZE1vZGUgPSBjb25maWcuZGVmYXVsdEJ1aWxkTW9kZSB8fCAnbG9jYWwnO1xuICB9XG5cbiAgbG9nZ2VyLmJsYW5rKCk7XG4gIGxvZ2dlci5pbmZvKGBQcm9qZWN0OiAke3Byb2plY3ROYW1lfWApO1xuICBsb2dnZXIuaW5mbyhgVHlwZTogJHtwcm9qZWN0VHlwZX1gKTtcbiAgbG9nZ2VyLmluZm8oYEJ1aWxkIG1vZGU6ICR7YnVpbGRNb2RlfWApO1xuICBpZiAob3B0aW9ucy52ZXJzaW9uKSB7XG4gICAgbG9nZ2VyLmluZm8oYFZlcnNpb246ICR7b3B0aW9ucy52ZXJzaW9ufWApO1xuICB9XG4gIGxvZ2dlci5ibGFuaygpO1xuXG4gIC8vIENvbmZpcm0gZGVwbG95bWVudFxuICBjb25zdCB7IGNvbmZpcm0gfSA9IGF3YWl0IGlucXVpcmVyLnByb21wdChbXG4gICAge1xuICAgICAgdHlwZTogJ2NvbmZpcm0nLFxuICAgICAgbmFtZTogJ2NvbmZpcm0nLFxuICAgICAgbWVzc2FnZTogJ1Byb2NlZWQgd2l0aCBkZXBsb3ltZW50PycsXG4gICAgICBkZWZhdWx0OiB0cnVlLFxuICAgIH0sXG4gIF0pO1xuXG4gIGlmICghY29uZmlybSkge1xuICAgIGxvZ2dlci53YXJuKCdEZXBsb3ltZW50IGNhbmNlbGxlZC4nKTtcbiAgICByZXR1cm47XG4gIH1cblxuICBsb2dnZXIuYmxhbmsoKTtcblxuICAvLyBTdGVwIDE6IEJ1aWxkIChmb3IgbG9jYWwtYnVpbGQgbW9kZSlcbiAgbGV0IGJ1aWxkT3V0cHV0RGlyID0gZGV0ZWN0ZWRQcm9qZWN0LmJ1aWxkT3V0cHV0RGlyO1xuXG4gIGlmIChidWlsZE1vZGUgPT09ICdsb2NhbCcpIHtcbiAgICBsb2dnZXIuc3RlcCgxLCA0LCAnQnVpbGRpbmcgcHJvamVjdC4uLicpO1xuXG4gICAgLy8gUGF0Y2ggUmVhY3QgUm91dGVyIGJhc2VuYW1lIGJlZm9yZSBidWlsZCAoaWYgYXBwbGljYWJsZSlcbiAgICBsZXQgZGlkUGF0Y2ggPSBmYWxzZTtcbiAgICBpZiAocHJvamVjdFR5cGUgPT09ICdyZWFjdCcpIHtcbiAgICAgIGNvbnN0IHsgUmVhY3RQYXRjaGVyIH0gPSBhd2FpdCBpbXBvcnQoJy4uL3NlcnZpY2VzL3JlYWN0UGF0Y2hlcicpO1xuICAgICAgZGlkUGF0Y2ggPSBhd2FpdCBSZWFjdFBhdGNoZXIucGF0Y2gocHJvY2Vzcy5jd2QoKSk7XG4gICAgfVxuXG4gICAgY29uc3QgYnVpbGRSZXN1bHQgPSBhd2FpdCBidWlsZFNlcnZpY2UuYnVpbGQoe1xuICAgICAgcHJvamVjdFBhdGg6IHByb2Nlc3MuY3dkKCksXG4gICAgICBwcm9qZWN0VHlwZSxcbiAgICAgIHByb2plY3ROYW1lLFxuICAgICAgcGFja2FnZU1hbmFnZXI6IGRldGVjdGVkUHJvamVjdC5wYWNrYWdlTWFuYWdlcixcbiAgICAgIGVudkZpbGU6IGVudkZpbGVQYXRoLFxuICAgIH0pO1xuXG4gICAgLy8gUmV2ZXJ0IHBhdGNoIGFmdGVyIGJ1aWxkIChrZWVwIHVzZXIncyBzb3VyY2UgY2xlYW4pXG4gICAgaWYgKGRpZFBhdGNoKSB7XG4gICAgICBjb25zdCB7IFJlYWN0UGF0Y2hlciB9ID0gYXdhaXQgaW1wb3J0KCcuLi9zZXJ2aWNlcy9yZWFjdFBhdGNoZXInKTtcbiAgICAgIGF3YWl0IFJlYWN0UGF0Y2hlci5yZXZlcnQocHJvY2Vzcy5jd2QoKSk7XG4gICAgfVxuXG4gICAgaWYgKCFidWlsZFJlc3VsdC5zdWNjZXNzKSB7XG4gICAgICBsb2dnZXIuZXJyb3IoYEJ1aWxkIGZhaWxlZDogJHtidWlsZFJlc3VsdC5lcnJvcn1gKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBidWlsZE91dHB1dERpciA9IGJ1aWxkUmVzdWx0Lm91dHB1dERpcjtcbiAgICBsb2dnZXIuc3VjY2VzcyhgQnVpbGQgY29tcGxldGVkIGluICR7KGJ1aWxkUmVzdWx0LmR1cmF0aW9uIC8gMTAwMCkudG9GaXhlZCgxKX1zYCk7XG4gICAgbG9nZ2VyLmJsYW5rKCk7XG4gIH1cblxuICAvLyBTdGVwIDI6IFBhY2thZ2VcbiAgY29uc3QgcGFja2FnZVN0ZXAgPSBidWlsZE1vZGUgPT09ICdsb2NhbCcgPyAyIDogMTtcbiAgY29uc3QgdG90YWxTdGVwcyA9IGJ1aWxkTW9kZSA9PT0gJ2xvY2FsJyA/IDQgOiAzO1xuXG4gIGxvZ2dlci5zdGVwKHBhY2thZ2VTdGVwLCB0b3RhbFN0ZXBzLCAnQ3JlYXRpbmcgZGVwbG95bWVudCBwYWNrYWdlLi4uJyk7XG5cbiAgbGV0IHBhY2thZ2VSZXN1bHQ7XG4gIHRyeSB7XG4gICAgcGFja2FnZVJlc3VsdCA9IGF3YWl0IHBhY2thZ2VTZXJ2aWNlLnBhY2thZ2Uoe1xuICAgICAgcHJvamVjdFBhdGg6IHByb2Nlc3MuY3dkKCksXG4gICAgICBwcm9qZWN0VHlwZSxcbiAgICAgIGJ1aWxkT3V0cHV0RGlyLFxuICAgICAgaW5jbHVkZVNvdXJjZTogYnVpbGRNb2RlID09PSAnc2VydmVyJyxcbiAgICAgIGVudkZpbGU6IHByb2plY3RUeXBlID09PSAnbm9kZScgPyBlbnZGaWxlUGF0aCA6IHVuZGVmaW5lZCxcbiAgICB9KTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICBsb2dnZXIuZXJyb3IoYFBhY2thZ2luZyBmYWlsZWQ6ICR7ZXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IGVycm9yLm1lc3NhZ2UgOiAnVW5rbm93biBlcnJvcid9YCk7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgbG9nZ2VyLmJsYW5rKCk7XG5cbiAgLy8gU3RlcCAzOiBBbmFseXplICYgVXBsb2FkXG4gIGxvZ2dlci5zdGVwKHBhY2thZ2VTdGVwICsgMSwgdG90YWxTdGVwcywgJ0FuYWx5emluZyBhbmQgdXBsb2FkaW5nIHRvIHNlcnZlci4uLicpO1xuXG4gIGxldCB1cGxvYWRTZXJ2aWNlO1xuICB0cnkge1xuICAgIHVwbG9hZFNlcnZpY2UgPSBjcmVhdGVVcGxvYWRTZXJ2aWNlKCk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgbG9nZ2VyLmVycm9yKGVycm9yIGluc3RhbmNlb2YgRXJyb3IgPyBlcnJvci5tZXNzYWdlIDogJ1Vua25vd24gZXJyb3InKTtcbiAgICBwYWNrYWdlU2VydmljZS5jbGVhbnVwKHBhY2thZ2VSZXN1bHQuemlwUGF0aCk7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgLy8gQW5hbHl6ZSBwYWNrYWdlIGZpcnN0IChmb3Igc2VydmVyLWJ1aWxkIG1vZGUgdG8gZ2V0IHdhcm5pbmdzKVxuICBsZXQgY29uZmlybVNlcnZlckJ1aWxkID0gZmFsc2U7XG4gIGlmIChidWlsZE1vZGUgPT09ICdzZXJ2ZXInKSB7XG4gICAgY29uc3QgYW5hbHl6ZVJlc3VsdCA9IGF3YWl0IHVwbG9hZFNlcnZpY2UuYW5hbHl6ZVBhY2thZ2UocGFja2FnZVJlc3VsdC56aXBQYXRoLCBwcm9qZWN0VHlwZSk7XG5cbiAgICBpZiAoYW5hbHl6ZVJlc3VsdC5zdWNjZXNzICYmIGFuYWx5emVSZXN1bHQuYW5hbHlzaXMpIHtcbiAgICAgIGNvbnN0IGFuYWx5c2lzID0gYW5hbHl6ZVJlc3VsdC5hbmFseXNpcztcblxuICAgICAgLy8gRGlzcGxheSB3YXJuaW5nc1xuICAgICAgaWYgKGFuYWx5c2lzLndhcm5pbmdzICYmIGFuYWx5c2lzLndhcm5pbmdzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgbG9nZ2VyLmJsYW5rKCk7XG4gICAgICAgIGxvZ2dlci53YXJuKCdTZXJ2ZXIgQW5hbHlzaXM6Jyk7XG4gICAgICAgIGZvciAoY29uc3Qgd2FybmluZyBvZiBhbmFseXNpcy53YXJuaW5ncykge1xuICAgICAgICAgIGNvbnN0IHByZWZpeCA9IHdhcm5pbmcubGV2ZWwgPT09ICdjcml0aWNhbCcgPyAn4p2MJyA6IHdhcm5pbmcubGV2ZWwgPT09ICd3YXJuaW5nJyA/ICfimqDvuI8nIDogJ+KEue+4jyc7XG4gICAgICAgICAgbG9nZ2VyLmRpbShgICAke3ByZWZpeH0gJHt3YXJuaW5nLm1lc3NhZ2V9YCk7XG4gICAgICAgIH1cbiAgICAgICAgbG9nZ2VyLmJsYW5rKCk7XG4gICAgICB9XG5cbiAgICAgIC8vIEhhbmRsZSBjb25maXJtYXRpb24gZm9yIHNlcnZlci1zaWRlIGJ1aWxkXG4gICAgICBpZiAoYW5hbHlzaXMucmVxdWlyZXNDb25maXJtYXRpb24pIHtcbiAgICAgICAgY29uc3QgeyBjb25maXJtQnVpbGQgfSA9IGF3YWl0IGlucXVpcmVyLnByb21wdChbXG4gICAgICAgICAge1xuICAgICAgICAgICAgdHlwZTogJ2NvbmZpcm0nLFxuICAgICAgICAgICAgbmFtZTogJ2NvbmZpcm1CdWlsZCcsXG4gICAgICAgICAgICBtZXNzYWdlOiBgJHthbmFseXNpcy5jb25maXJtYXRpb25SZWFzb24gfHwgJ1NlcnZlci1zaWRlIGJ1aWxkIHJlcXVpcmVkJ30uIFRoaXMgbWF5IGNvbnN1bWUgc2lnbmlmaWNhbnQgcmVzb3VyY2VzLiBDb250aW51ZT9gLFxuICAgICAgICAgICAgZGVmYXVsdDogdHJ1ZSxcbiAgICAgICAgICB9LFxuICAgICAgICBdKTtcblxuICAgICAgICBpZiAoIWNvbmZpcm1CdWlsZCkge1xuICAgICAgICAgIGxvZ2dlci53YXJuKCdEZXBsb3ltZW50IGNhbmNlbGxlZCBieSB1c2VyLicpO1xuICAgICAgICAgIHBhY2thZ2VTZXJ2aWNlLmNsZWFudXAocGFja2FnZVJlc3VsdC56aXBQYXRoKTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uZmlybVNlcnZlckJ1aWxkID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBjb25zdCB1cGxvYWRSZXN1bHQgPSBhd2FpdCB1cGxvYWRTZXJ2aWNlLnVwbG9hZCh7XG4gICAgemlwUGF0aDogcGFja2FnZVJlc3VsdC56aXBQYXRoLFxuICAgIHByb2plY3ROYW1lLFxuICAgIHByb2plY3RUeXBlLFxuICAgIHZlcnNpb246IG9wdGlvbnMudmVyc2lvbixcbiAgICBidWlsZE1vZGUsXG4gICAgY29uZmlybVNlcnZlckJ1aWxkLFxuICAgIC8vIEVOViBtdXRhYmlsaXR5IHRyYWNraW5nXG4gICAgZGVwbG95bWVudFNvdXJjZTogJ2NsaScsXG4gICAgZW52SW5qZWN0ZWQsXG4gIH0pO1xuXG4gIC8vIENsZWFudXAgemlwIGZpbGVcbiAgcGFja2FnZVNlcnZpY2UuY2xlYW51cChwYWNrYWdlUmVzdWx0LnppcFBhdGgpO1xuXG4gIGlmICghdXBsb2FkUmVzdWx0LnN1Y2Nlc3MpIHtcbiAgICBsb2dnZXIuZXJyb3IoYFVwbG9hZCBmYWlsZWQ6ICR7dXBsb2FkUmVzdWx0LmVycm9yfWApO1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGxvZ2dlci5zdWNjZXNzKCdVcGxvYWQgY29tcGxldGUnKTtcbiAgbG9nZ2VyLmJsYW5rKCk7XG5cbiAgLy8gU3RlcCA0OiBXYWl0IGZvciBkZXBsb3ltZW50IChpZiBkZXBsb3ltZW50IElEIGF2YWlsYWJsZSlcbiAgaWYgKHVwbG9hZFJlc3VsdC5kZXBsb3ltZW50SWQpIHtcbiAgICBsb2dnZXIuc3RlcChwYWNrYWdlU3RlcCArIDIsIHRvdGFsU3RlcHMsICdXYWl0aW5nIGZvciBkZXBsb3ltZW50IHRvIGNvbXBsZXRlLi4uJyk7XG5cbiAgICB0cnkge1xuICAgICAgY29uc3QgZmluYWxTdGF0dXMgPSBhd2FpdCB1cGxvYWRTZXJ2aWNlLnBvbGxEZXBsb3ltZW50U3RhdHVzKFxuICAgICAgICB1cGxvYWRSZXN1bHQuZGVwbG95bWVudElkLFxuICAgICAgICAoc3RhdHVzKSA9PiB7XG4gICAgICAgICAgaWYgKHN0YXR1cy5wcm9ncmVzcyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBwcm9jZXNzLnN0ZG91dC53cml0ZShgXFxyICBQcm9ncmVzczogJHtzdGF0dXMucHJvZ3Jlc3N9JWApO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgKTtcblxuICAgICAgcHJvY2Vzcy5zdGRvdXQud3JpdGUoJ1xcbicpO1xuXG4gICAgICBpZiAoZmluYWxTdGF0dXMuc3RhdHVzID09PSAnc3VjY2VzcycpIHtcbiAgICAgICAgbG9nZ2VyLmJsYW5rKCk7XG4gICAgICAgIGxvZ2dlci5zdWNjZXNzKCdEZXBsb3ltZW50IHN1Y2Nlc3NmdWwhJyk7XG5cbiAgICAgICAgY29uc3Qgc2FmZU5hbWUgPSBwcm9qZWN0TmFtZS50b0xvd2VyQ2FzZSgpLnJlcGxhY2UoL1teYS16MC05XS9nLCAnLScpO1xuXG4gICAgICAgIC8vIEZldGNoIGRvbWFpbiBjb25maWcgdG8gc2hvdyBwcm9wZXIgVVJMXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgY29uc3QgZG9tYWluUmVzcG9uc2UgPSBhd2FpdCBheGlvcy5nZXQoYCR7Y29uZmlnLnNlcnZlclVybH0vYXBpL2RvbWFpbmAsIHtcbiAgICAgICAgICAgIGhlYWRlcnM6IGNvbmZpZy50b2tlbiA/IHsgQXV0aG9yaXphdGlvbjogYEJlYXJlciAke2NvbmZpZy50b2tlbn1gIH0gOiB7fSxcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBjb25zdCBkb21haW5Db25maWcgPSBkb21haW5SZXNwb25zZS5kYXRhO1xuXG4gICAgICAgICAgaWYgKGRvbWFpbkNvbmZpZy5kb21haW4/LmFjdGl2ZSAmJiBkb21haW5Db25maWcuc2VjdXJpdHlNb2RlID09PSAnZG9tYWluLWh0dHBzJykge1xuICAgICAgICAgICAgbG9nZ2VyLmJsYW5rKCk7XG4gICAgICAgICAgICBsb2dnZXIuaW5mbyhgWW91ciBhcHAgaXMgYXZhaWxhYmxlIGF0OiBodHRwczovLyR7ZG9tYWluQ29uZmlnLmRvbWFpbi5kb21haW59L2FwcC8ke3NhZmVOYW1lfWApO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBsb2dnZXIuYmxhbmsoKTtcbiAgICAgICAgICAgIGxvZ2dlci5pbmZvKGBZb3VyIGFwcCBpcyBhdmFpbGFibGUgYXQ6ICR7Y29uZmlnLnNlcnZlclVybH0vYXBwLyR7c2FmZU5hbWV9YCk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGNhdGNoIHtcbiAgICAgICAgICAvLyBGYWxsYmFjayB0byBzZXJ2ZXIgVVJMIGlmIGRvbWFpbiBmZXRjaCBmYWlsc1xuICAgICAgICAgIGxvZ2dlci5ibGFuaygpO1xuICAgICAgICAgIGxvZ2dlci5pbmZvKGBZb3VyIGFwcCBpcyBhdmFpbGFibGUgYXQ6ICR7Y29uZmlnLnNlcnZlclVybH0vYXBwLyR7c2FmZU5hbWV9YCk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBTaG93IGhlYWx0aCB3YXJuaW5nIGlmIHNlcnZpY2UgZGlkbid0IHJlc3BvbmQgb24gaXRzIGFsbG9jYXRlZCBwb3J0XG4gICAgICAgIGlmIChmaW5hbFN0YXR1cy5oZWFsdGhXYXJuaW5nKSB7XG4gICAgICAgICAgbG9nZ2VyLmJsYW5rKCk7XG4gICAgICAgICAgbG9nZ2VyLndhcm4oYOKaoCAgSGVhbHRoIGNoZWNrOiAke2ZpbmFsU3RhdHVzLmhlYWx0aFdhcm5pbmd9YCk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGxvZ2dlci5lcnJvcihgRGVwbG95bWVudCBmYWlsZWQ6ICR7ZmluYWxTdGF0dXMuZXJyb3IgfHwgJ1Vua25vd24gZXJyb3InfWApO1xuICAgICAgICBpZiAoZmluYWxTdGF0dXMubG9ncykge1xuICAgICAgICAgIGxvZ2dlci5ibGFuaygpO1xuICAgICAgICAgIGxvZ2dlci5kaW0oJ0xvZ3M6Jyk7XG4gICAgICAgICAgY29uc29sZS5sb2coZmluYWxTdGF0dXMubG9ncyk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgbG9nZ2VyLndhcm4oJ0NvdWxkIG5vdCB0cmFjayBkZXBsb3ltZW50IHN0YXR1cycpO1xuICAgICAgbG9nZ2VyLmRpbSgnQ2hlY2sgdGhlIHdlYiBVSSBmb3IgZGVwbG95bWVudCBzdGF0dXMnKTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgbG9nZ2VyLmJsYW5rKCk7XG4gICAgbG9nZ2VyLnN1Y2Nlc3MoJ1VwbG9hZCBzdWNjZXNzZnVsIScpO1xuICAgIGxvZ2dlci5kaW0oJ0RlcGxveW1lbnQgaXMgYmVpbmcgcHJvY2Vzc2VkLiBDaGVjayB0aGUgd2ViIFVJIGZvciBzdGF0dXMuJyk7XG4gIH1cblxuICBsb2dnZXIuYmxhbmsoKTtcbn1cbiJdfQ==
@@ -0,0 +1 @@
1
+ export declare function loginCommand(): Promise<void>;
@@ -0,0 +1,73 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.loginCommand = loginCommand;
7
+ const inquirer_1 = __importDefault(require("inquirer"));
8
+ const config_1 = require("../utils/config");
9
+ const logger_1 = require("../utils/logger");
10
+ const authService_1 = require("../services/authService");
11
+ async function loginCommand() {
12
+ logger_1.logger.header('Runway Login');
13
+ // Check if init has been run (we need a server URL at minimum)
14
+ const config = (0, config_1.getConfig)();
15
+ if (!config.serverUrl) {
16
+ logger_1.logger.error('CLI not configured. Run "runway init" first to set up your server URL.');
17
+ return;
18
+ }
19
+ logger_1.logger.dim(`Server: ${config.serverUrl}`);
20
+ logger_1.logger.blank();
21
+ // Initialize auth service
22
+ const authService = new authService_1.AuthService(config.serverUrl);
23
+ // Check security mode
24
+ let securityInfo;
25
+ try {
26
+ securityInfo = await authService.getSecurityMode();
27
+ }
28
+ catch (error) {
29
+ logger_1.logger.error('Failed to connect to server. Make sure it is running.');
30
+ return;
31
+ }
32
+ if (securityInfo.securityMode === 'domain-https') {
33
+ logger_1.logger.success(`Server has HTTPS enabled: ${securityInfo.domain}`);
34
+ }
35
+ else {
36
+ logger_1.logger.warn('Server is running in HTTP mode.');
37
+ }
38
+ // Get credentials
39
+ logger_1.logger.blank();
40
+ const credentials = await inquirer_1.default.prompt([
41
+ {
42
+ type: 'input',
43
+ name: 'username',
44
+ message: 'Username:',
45
+ validate: (input) => input.length > 0 || 'Username is required',
46
+ },
47
+ {
48
+ type: 'password',
49
+ name: 'password',
50
+ message: 'Password:',
51
+ validate: (input) => input.length > 0 || 'Password is required',
52
+ },
53
+ ]);
54
+ // Authenticate
55
+ logger_1.logger.info('Authenticating...');
56
+ try {
57
+ const authResult = await authService.authenticate(credentials.username, credentials.password);
58
+ // Save new auth data (keep existing server URL)
59
+ (0, config_1.setAuthData)(authResult.token, authResult.expiresAt, authResult.securityMode);
60
+ logger_1.logger.blank();
61
+ logger_1.logger.success('Authentication successful! Token updated.');
62
+ // Show token expiry warning for HTTP mode
63
+ if (authResult.securityMode === 'ip-http') {
64
+ logger_1.logger.warn('Note: Token expires in 15 minutes due to HTTP mode.');
65
+ }
66
+ }
67
+ catch (error) {
68
+ logger_1.logger.blank();
69
+ logger_1.logger.dim('Check your credentials and try again.');
70
+ }
71
+ logger_1.logger.blank();
72
+ }
73
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9naW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29tbWFuZHMvbG9naW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFLQSxvQ0F3RUM7QUE3RUQsd0RBQWdDO0FBQ2hDLDRDQUF1RTtBQUN2RSw0Q0FBeUM7QUFDekMseURBQXNEO0FBRS9DLEtBQUssVUFBVSxZQUFZO0lBQ2hDLGVBQU0sQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUM7SUFFOUIsK0RBQStEO0lBQy9ELE1BQU0sTUFBTSxHQUFHLElBQUEsa0JBQVMsR0FBRSxDQUFDO0lBQzNCLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxFQUFFLENBQUM7UUFDdEIsZUFBTSxDQUFDLEtBQUssQ0FBQyx3RUFBd0UsQ0FBQyxDQUFDO1FBQ3ZGLE9BQU87SUFDVCxDQUFDO0lBRUQsZUFBTSxDQUFDLEdBQUcsQ0FBQyxXQUFXLE1BQU0sQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDO0lBQzFDLGVBQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUVmLDBCQUEwQjtJQUMxQixNQUFNLFdBQVcsR0FBRyxJQUFJLHlCQUFXLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBRXRELHNCQUFzQjtJQUN0QixJQUFJLFlBQVksQ0FBQztJQUNqQixJQUFJLENBQUM7UUFDSCxZQUFZLEdBQUcsTUFBTSxXQUFXLENBQUMsZUFBZSxFQUFFLENBQUM7SUFDckQsQ0FBQztJQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7UUFDZixlQUFNLENBQUMsS0FBSyxDQUFDLHVEQUF1RCxDQUFDLENBQUM7UUFDdEUsT0FBTztJQUNULENBQUM7SUFFRCxJQUFJLFlBQVksQ0FBQyxZQUFZLEtBQUssY0FBYyxFQUFFLENBQUM7UUFDakQsZUFBTSxDQUFDLE9BQU8sQ0FBQyw2QkFBNkIsWUFBWSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7SUFDckUsQ0FBQztTQUFNLENBQUM7UUFDTixlQUFNLENBQUMsSUFBSSxDQUFDLGlDQUFpQyxDQUFDLENBQUM7SUFDakQsQ0FBQztJQUVELGtCQUFrQjtJQUNsQixlQUFNLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDZixNQUFNLFdBQVcsR0FBRyxNQUFNLGtCQUFRLENBQUMsTUFBTSxDQUFDO1FBQ3hDO1lBQ0UsSUFBSSxFQUFFLE9BQU87WUFDYixJQUFJLEVBQUUsVUFBVTtZQUNoQixPQUFPLEVBQUUsV0FBVztZQUNwQixRQUFRLEVBQUUsQ0FBQyxLQUFhLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLHNCQUFzQjtTQUN4RTtRQUNEO1lBQ0UsSUFBSSxFQUFFLFVBQVU7WUFDaEIsSUFBSSxFQUFFLFVBQVU7WUFDaEIsT0FBTyxFQUFFLFdBQVc7WUFDcEIsUUFBUSxFQUFFLENBQUMsS0FBYSxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSSxzQkFBc0I7U0FDeEU7S0FDRixDQUFDLENBQUM7SUFFSCxlQUFlO0lBQ2YsZUFBTSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO0lBQ2pDLElBQUksQ0FBQztRQUNILE1BQU0sVUFBVSxHQUFHLE1BQU0sV0FBVyxDQUFDLFlBQVksQ0FDL0MsV0FBVyxDQUFDLFFBQVEsRUFDcEIsV0FBVyxDQUFDLFFBQVEsQ0FDckIsQ0FBQztRQUVGLGdEQUFnRDtRQUNoRCxJQUFBLG9CQUFXLEVBQUMsVUFBVSxDQUFDLEtBQUssRUFBRSxVQUFVLENBQUMsU0FBUyxFQUFFLFVBQVUsQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUU3RSxlQUFNLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDZixlQUFNLENBQUMsT0FBTyxDQUFDLDJDQUEyQyxDQUFDLENBQUM7UUFFNUQsMENBQTBDO1FBQzFDLElBQUksVUFBVSxDQUFDLFlBQVksS0FBSyxTQUFTLEVBQUUsQ0FBQztZQUMxQyxlQUFNLENBQUMsSUFBSSxDQUFDLHFEQUFxRCxDQUFDLENBQUM7UUFDckUsQ0FBQztJQUNILENBQUM7SUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1FBQ2YsZUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ2YsZUFBTSxDQUFDLEdBQUcsQ0FBQyx1Q0FBdUMsQ0FBQyxDQUFDO0lBQ3RELENBQUM7SUFFRCxlQUFNLENBQUMsS0FBSyxFQUFFLENBQUM7QUFDakIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBpbnF1aXJlciBmcm9tICdpbnF1aXJlcic7XG5pbXBvcnQgeyBnZXRDb25maWcsIHNldEF1dGhEYXRhLCBpc0NvbmZpZ3VyZWQgfSBmcm9tICcuLi91dGlscy9jb25maWcnO1xuaW1wb3J0IHsgbG9nZ2VyIH0gZnJvbSAnLi4vdXRpbHMvbG9nZ2VyJztcbmltcG9ydCB7IEF1dGhTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvYXV0aFNlcnZpY2UnO1xuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gbG9naW5Db21tYW5kKCk6IFByb21pc2U8dm9pZD4ge1xuICBsb2dnZXIuaGVhZGVyKCdSdW53YXkgTG9naW4nKTtcblxuICAvLyBDaGVjayBpZiBpbml0IGhhcyBiZWVuIHJ1biAod2UgbmVlZCBhIHNlcnZlciBVUkwgYXQgbWluaW11bSlcbiAgY29uc3QgY29uZmlnID0gZ2V0Q29uZmlnKCk7XG4gIGlmICghY29uZmlnLnNlcnZlclVybCkge1xuICAgIGxvZ2dlci5lcnJvcignQ0xJIG5vdCBjb25maWd1cmVkLiBSdW4gXCJydW53YXkgaW5pdFwiIGZpcnN0IHRvIHNldCB1cCB5b3VyIHNlcnZlciBVUkwuJyk7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgbG9nZ2VyLmRpbShgU2VydmVyOiAke2NvbmZpZy5zZXJ2ZXJVcmx9YCk7XG4gIGxvZ2dlci5ibGFuaygpO1xuXG4gIC8vIEluaXRpYWxpemUgYXV0aCBzZXJ2aWNlXG4gIGNvbnN0IGF1dGhTZXJ2aWNlID0gbmV3IEF1dGhTZXJ2aWNlKGNvbmZpZy5zZXJ2ZXJVcmwpO1xuXG4gIC8vIENoZWNrIHNlY3VyaXR5IG1vZGVcbiAgbGV0IHNlY3VyaXR5SW5mbztcbiAgdHJ5IHtcbiAgICBzZWN1cml0eUluZm8gPSBhd2FpdCBhdXRoU2VydmljZS5nZXRTZWN1cml0eU1vZGUoKTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICBsb2dnZXIuZXJyb3IoJ0ZhaWxlZCB0byBjb25uZWN0IHRvIHNlcnZlci4gTWFrZSBzdXJlIGl0IGlzIHJ1bm5pbmcuJyk7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgaWYgKHNlY3VyaXR5SW5mby5zZWN1cml0eU1vZGUgPT09ICdkb21haW4taHR0cHMnKSB7XG4gICAgbG9nZ2VyLnN1Y2Nlc3MoYFNlcnZlciBoYXMgSFRUUFMgZW5hYmxlZDogJHtzZWN1cml0eUluZm8uZG9tYWlufWApO1xuICB9IGVsc2Uge1xuICAgIGxvZ2dlci53YXJuKCdTZXJ2ZXIgaXMgcnVubmluZyBpbiBIVFRQIG1vZGUuJyk7XG4gIH1cblxuICAvLyBHZXQgY3JlZGVudGlhbHNcbiAgbG9nZ2VyLmJsYW5rKCk7XG4gIGNvbnN0IGNyZWRlbnRpYWxzID0gYXdhaXQgaW5xdWlyZXIucHJvbXB0KFtcbiAgICB7XG4gICAgICB0eXBlOiAnaW5wdXQnLFxuICAgICAgbmFtZTogJ3VzZXJuYW1lJyxcbiAgICAgIG1lc3NhZ2U6ICdVc2VybmFtZTonLFxuICAgICAgdmFsaWRhdGU6IChpbnB1dDogc3RyaW5nKSA9PiBpbnB1dC5sZW5ndGggPiAwIHx8ICdVc2VybmFtZSBpcyByZXF1aXJlZCcsXG4gICAgfSxcbiAgICB7XG4gICAgICB0eXBlOiAncGFzc3dvcmQnLFxuICAgICAgbmFtZTogJ3Bhc3N3b3JkJyxcbiAgICAgIG1lc3NhZ2U6ICdQYXNzd29yZDonLFxuICAgICAgdmFsaWRhdGU6IChpbnB1dDogc3RyaW5nKSA9PiBpbnB1dC5sZW5ndGggPiAwIHx8ICdQYXNzd29yZCBpcyByZXF1aXJlZCcsXG4gICAgfSxcbiAgXSk7XG5cbiAgLy8gQXV0aGVudGljYXRlXG4gIGxvZ2dlci5pbmZvKCdBdXRoZW50aWNhdGluZy4uLicpO1xuICB0cnkge1xuICAgIGNvbnN0IGF1dGhSZXN1bHQgPSBhd2FpdCBhdXRoU2VydmljZS5hdXRoZW50aWNhdGUoXG4gICAgICBjcmVkZW50aWFscy51c2VybmFtZSxcbiAgICAgIGNyZWRlbnRpYWxzLnBhc3N3b3JkXG4gICAgKTtcblxuICAgIC8vIFNhdmUgbmV3IGF1dGggZGF0YSAoa2VlcCBleGlzdGluZyBzZXJ2ZXIgVVJMKVxuICAgIHNldEF1dGhEYXRhKGF1dGhSZXN1bHQudG9rZW4sIGF1dGhSZXN1bHQuZXhwaXJlc0F0LCBhdXRoUmVzdWx0LnNlY3VyaXR5TW9kZSk7XG5cbiAgICBsb2dnZXIuYmxhbmsoKTtcbiAgICBsb2dnZXIuc3VjY2VzcygnQXV0aGVudGljYXRpb24gc3VjY2Vzc2Z1bCEgVG9rZW4gdXBkYXRlZC4nKTtcblxuICAgIC8vIFNob3cgdG9rZW4gZXhwaXJ5IHdhcm5pbmcgZm9yIEhUVFAgbW9kZVxuICAgIGlmIChhdXRoUmVzdWx0LnNlY3VyaXR5TW9kZSA9PT0gJ2lwLWh0dHAnKSB7XG4gICAgICBsb2dnZXIud2FybignTm90ZTogVG9rZW4gZXhwaXJlcyBpbiAxNSBtaW51dGVzIGR1ZSB0byBIVFRQIG1vZGUuJyk7XG4gICAgfVxuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGxvZ2dlci5ibGFuaygpO1xuICAgIGxvZ2dlci5kaW0oJ0NoZWNrIHlvdXIgY3JlZGVudGlhbHMgYW5kIHRyeSBhZ2Fpbi4nKTtcbiAgfVxuXG4gIGxvZ2dlci5ibGFuaygpO1xufVxuIl19
@@ -0,0 +1,6 @@
1
+ interface LogsOptions {
2
+ lines?: string;
3
+ type?: string;
4
+ }
5
+ export declare function logsCommand(project?: string, options?: LogsOptions): Promise<void>;
6
+ export {};
@@ -0,0 +1,112 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.logsCommand = logsCommand;
7
+ const inquirer_1 = __importDefault(require("inquirer"));
8
+ const axios_1 = __importDefault(require("axios"));
9
+ const chalk_1 = __importDefault(require("chalk"));
10
+ const config_1 = require("../utils/config");
11
+ const uploadService_1 = require("../services/uploadService");
12
+ const logger_1 = require("../utils/logger");
13
+ async function logsCommand(project, options = {}) {
14
+ logger_1.logger.header('Runway Logs');
15
+ // Check configuration
16
+ if (!(0, config_1.isConfigured)()) {
17
+ logger_1.logger.error('CLI not configured. Run "runway init" first.');
18
+ return;
19
+ }
20
+ // Check token validity
21
+ if ((0, config_1.isTokenExpired)()) {
22
+ logger_1.logger.error('Your authentication token has expired.');
23
+ logger_1.logger.info('Run "runway login" to re-authenticate.');
24
+ return;
25
+ }
26
+ const config = (0, config_1.getConfig)();
27
+ // If no project specified, list and let user choose
28
+ let projectId = project;
29
+ let projectName = project;
30
+ if (!projectId) {
31
+ let uploadService;
32
+ try {
33
+ uploadService = (0, uploadService_1.createUploadService)();
34
+ }
35
+ catch (error) {
36
+ logger_1.logger.error(error instanceof Error ? error.message : 'Unknown error');
37
+ return;
38
+ }
39
+ let projects;
40
+ try {
41
+ projects = await uploadService.listProjects();
42
+ }
43
+ catch (error) {
44
+ logger_1.logger.error('Failed to fetch projects');
45
+ return;
46
+ }
47
+ if (projects.length === 0) {
48
+ logger_1.logger.warn('No projects deployed.');
49
+ return;
50
+ }
51
+ // Filter to only PM2-managed projects (node, next)
52
+ const pm2Projects = projects.filter(p => p.type === 'node' || p.type === 'next');
53
+ if (pm2Projects.length === 0) {
54
+ logger_1.logger.warn('No Node.js or Next.js projects found. Logs are only available for PM2-managed projects.');
55
+ return;
56
+ }
57
+ const { selected } = await inquirer_1.default.prompt([
58
+ {
59
+ type: 'list',
60
+ name: 'selected',
61
+ message: 'Select project to view logs:',
62
+ choices: pm2Projects.map(p => ({
63
+ name: `${p.name} (${p.type}) — ${p.status}`,
64
+ value: p,
65
+ })),
66
+ },
67
+ ]);
68
+ projectId = selected.id;
69
+ projectName = selected.name;
70
+ }
71
+ // Fetch logs
72
+ const lines = parseInt(options.lines || '100');
73
+ const logType = options.type || 'all';
74
+ logger_1.logger.dim(`Fetching last ${lines} lines for ${projectName}...`);
75
+ logger_1.logger.blank();
76
+ try {
77
+ const response = await axios_1.default.get(`${config.serverUrl}/api/process/${projectId}/logs`, {
78
+ params: { lines, type: logType },
79
+ headers: config.token ? { Authorization: `Bearer ${config.token}` } : {},
80
+ timeout: 15000,
81
+ });
82
+ const data = response.data.data;
83
+ if (data.stdout) {
84
+ console.log(chalk_1.default.bold.green('━━━ stdout ━━━'));
85
+ console.log(data.stdout);
86
+ }
87
+ if (data.stderr) {
88
+ if (data.stdout)
89
+ console.log(); // spacer
90
+ console.log(chalk_1.default.bold.red('━━━ stderr ━━━'));
91
+ console.log(data.stderr);
92
+ }
93
+ if (!data.stdout && !data.stderr) {
94
+ logger_1.logger.dim('No logs found for this project.');
95
+ }
96
+ }
97
+ catch (error) {
98
+ if (axios_1.default.isAxiosError(error)) {
99
+ if (error.response?.status === 404) {
100
+ logger_1.logger.error('Project not found. Use "runway list" to see deployed projects.');
101
+ }
102
+ else {
103
+ logger_1.logger.error(`Failed to fetch logs: ${error.response?.data?.error || error.message}`);
104
+ }
105
+ }
106
+ else {
107
+ logger_1.logger.error(`Failed to fetch logs: ${error.message}`);
108
+ }
109
+ }
110
+ logger_1.logger.blank();
111
+ }
112
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9ncy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb21tYW5kcy9sb2dzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBWUEsa0NBa0hDO0FBOUhELHdEQUFnQztBQUNoQyxrREFBMEI7QUFDMUIsa0RBQTBCO0FBQzFCLDRDQUEwRTtBQUMxRSw2REFBZ0U7QUFDaEUsNENBQXlDO0FBT2xDLEtBQUssVUFBVSxXQUFXLENBQUMsT0FBZ0IsRUFBRSxVQUF1QixFQUFFO0lBQzNFLGVBQU0sQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUM7SUFFN0Isc0JBQXNCO0lBQ3RCLElBQUksQ0FBQyxJQUFBLHFCQUFZLEdBQUUsRUFBRSxDQUFDO1FBQ3BCLGVBQU0sQ0FBQyxLQUFLLENBQUMsOENBQThDLENBQUMsQ0FBQztRQUM3RCxPQUFPO0lBQ1QsQ0FBQztJQUVELHVCQUF1QjtJQUN2QixJQUFJLElBQUEsdUJBQWMsR0FBRSxFQUFFLENBQUM7UUFDckIsZUFBTSxDQUFDLEtBQUssQ0FBQyx3Q0FBd0MsQ0FBQyxDQUFDO1FBQ3ZELGVBQU0sQ0FBQyxJQUFJLENBQUMsd0NBQXdDLENBQUMsQ0FBQztRQUN0RCxPQUFPO0lBQ1QsQ0FBQztJQUVELE1BQU0sTUFBTSxHQUFHLElBQUEsa0JBQVMsR0FBRSxDQUFDO0lBRTNCLG9EQUFvRDtJQUNwRCxJQUFJLFNBQVMsR0FBRyxPQUFPLENBQUM7SUFDeEIsSUFBSSxXQUFXLEdBQUcsT0FBTyxDQUFDO0lBRTFCLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUNmLElBQUksYUFBYSxDQUFDO1FBQ2xCLElBQUksQ0FBQztZQUNILGFBQWEsR0FBRyxJQUFBLG1DQUFtQixHQUFFLENBQUM7UUFDeEMsQ0FBQztRQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7WUFDZixlQUFNLENBQUMsS0FBSyxDQUFDLEtBQUssWUFBWSxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMs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TTtnQkFBRSxPQUFPLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxTQUFTO1lBQ3pDLE9BQU8sQ0FBQyxHQUFHLENBQUMsZUFBSyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDO1lBQzlDLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzNCLENBQUM7UUFFRCxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNqQyxlQUFNLENBQUMsR0FBRyxDQUFDLGlDQUFpQyxDQUFDLENBQUM7UUFDaEQsQ0FBQztJQUNILENBQUM7SUFBQyxPQUFPLEtBQVUsRUFBRSxDQUFDO1FBQ3BCLElBQUksZUFBSyxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQzlCLElBQUksS0FBSyxDQUFDLFFBQVEsRUFBRSxNQUFNLEtBQUssR0FBRyxFQUFFLENBQUM7Z0JBQ25DLGVBQU0sQ0FBQyxLQUFLLENBQUMsZ0VBQWdFLENBQUMsQ0FBQztZQUNqRixDQUFDO2lCQUFNLENBQUM7Z0JBQ04sZUFBTSxDQUFDLEtBQUssQ0FBQyx5QkFBeUIsS0FBSyxDQUFDLFFBQVEsRUFBRSxJQUFJLEVBQUUsS0FBSyxJQUFJLEtBQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO1lBQ3hGLENBQUM7UUFDSCxDQUFDO2FBQU0sQ0FBQztZQUNOLGVBQU0sQ0FBQyxLQUFLLENBQUMseUJBQXlCLEtBQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO1FBQ3pELENBQUM7SUFDSCxDQUFDO0lBRUQsZUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDO0FBQ2pCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgaW5xdWlyZXIgZnJvbSAnaW5xdWlyZXInO1xuaW1wb3J0IGF4aW9zIGZyb20gJ2F4aW9zJztcbmltcG9ydCBjaGFsayBmcm9tICdjaGFsayc7XG5pbXBvcnQgeyBpc0NvbmZpZ3VyZWQsIGdldENvbmZpZywgaXNUb2tlbkV4cGlyZWQgfSBmcm9tICcuLi91dGlscy9jb25maWcnO1xuaW1wb3J0IHsgY3JlYXRlVXBsb2FkU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL3VwbG9hZFNlcnZpY2UnO1xuaW1wb3J0IHsgbG9nZ2VyIH0gZnJvbSAnLi4vdXRpbHMvbG9nZ2VyJztcblxuaW50ZXJmYWNlIExvZ3NPcHRpb25zIHtcbiAgbGluZXM/OiBzdHJpbmc7XG4gIHR5cGU/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBsb2dzQ29tbWFuZChwcm9qZWN0Pzogc3RyaW5nLCBvcHRpb25zOiBMb2dzT3B0aW9ucyA9IHt9KTogUHJvbWlzZTx2b2lkPiB7XG4gIGxvZ2dlci5oZWFkZXIoJ1J1bndheSBMb2dzJyk7XG5cbiAgLy8gQ2hlY2sgY29uZmlndXJhdGlvblxuICBpZiAoIWlzQ29uZmlndXJlZCgpKSB7XG4gICAgbG9nZ2VyLmVycm9yKCdDTEkgbm90IGNvbmZpZ3VyZWQuIFJ1biBcInJ1bndheSBpbml0XCIgZmlyc3QuJyk7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgLy8gQ2hlY2sgdG9rZW4gdmFsaWRpdHlcbiAgaWYgKGlzVG9rZW5FeHBpcmVkKCkpIHtcbiAgICBsb2dnZXIuZXJyb3IoJ1lvdXIgYXV0aGVudGljYXRpb24gdG9rZW4gaGFzIGV4cGlyZWQuJyk7XG4gICAgbG9nZ2VyLmluZm8oJ1J1biBcInJ1bndheSBsb2dpblwiIHRvIHJlLWF1dGhlbnRpY2F0ZS4nKTtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCBjb25maWcgPSBnZXRDb25maWcoKTtcblxuICAvLyBJZiBubyBwcm9qZWN0IHNwZWNpZmllZCwgbGlzdCBhbmQgbGV0IHVzZXIgY2hvb3NlXG4gIGxldCBwcm9qZWN0SWQgPSBwcm9qZWN0O1xuICBsZXQgcHJvamVjdE5hbWUgPSBwcm9qZWN0O1xuXG4gIGlmICghcHJvamVjdElkKSB7XG4gICAgbGV0IHVwbG9hZFNlcnZpY2U7XG4gICAgdHJ5IHtcbiAgICAgIHVwbG9hZFNlcnZpY2UgPSBjcmVhdGVVcGxvYWRTZXJ2aWNlKCk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGxvZ2dlci5lcnJvcihlcnJvciBpbnN0YW5jZW9mIEVycm9yID8gZXJyb3IubWVzc2FnZSA6ICdVbmtub3duIGVycm9yJyk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgbGV0IHByb2plY3RzO1xuICAgIHRyeSB7XG4gICAgICBwcm9qZWN0cyA9IGF3YWl0IHVwbG9hZFNlcnZpY2UubGlzdFByb2plY3RzKCk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGxvZ2dlci5lcnJvcignRmFpbGVkIHRvIGZldGNoIHByb2plY3RzJyk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHByb2plY3RzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgbG9nZ2VyLndhcm4oJ05vIHByb2plY3RzIGRlcGxveWVkLicpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIEZpbHRlciB0byBvbmx5IFBNMi1tYW5hZ2VkIHByb2plY3RzIChub2RlLCBuZXh0KVxuICAgIGNvbnN0IHBtMlByb2plY3RzID0gcHJvamVjdHMuZmlsdGVyKHAgPT4gcC50eXBlID09PSAnbm9kZScgfHwgcC50eXBlID09PSAnbmV4dCcpO1xuXG4gICAgaWYgKHBtMlByb2plY3RzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgbG9nZ2VyLndhcm4oJ05vIE5vZGUuanMgb3IgTmV4dC5qcyBwcm9qZWN0cyBmb3VuZC4gTG9ncyBhcmUgb25seSBhdmFpbGFibGUgZm9yIFBNMi1tYW5hZ2VkIHByb2plY3RzLicpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHsgc2VsZWN0ZWQgfSA9IGF3YWl0IGlucXVpcmVyLnByb21wdChbXG4gICAgICB7XG4gICAgICAgIHR5cGU6ICdsaXN0JyxcbiAgICAgICAgbmFtZTogJ3NlbGVjdGVkJyxcbiAgICAgICAgbWVzc2FnZTogJ1NlbGVjdCBwcm9qZWN0IHRvIHZpZXcgbG9nczonLFxuICAgICAgICBjaG9pY2VzOiBwbTJQcm9qZWN0cy5tYXAocCA9PiAoe1xuICAgICAgICAgIG5hbWU6IGAke3AubmFtZX0gKCR7cC50eXBlfSkg4oCUICR7cC5zdGF0dXN9YCxcbiAgICAgICAgICB2YWx1ZTogcCxcbiAgICAgICAgfSkpLFxuICAgICAgfSxcbiAgICBdKTtcblxuICAgIHByb2plY3RJZCA9IHNlbGVjdGVkLmlkO1xuICAgIHByb2plY3ROYW1lID0gc2VsZWN0ZWQubmFtZTtcbiAgfVxuXG4gIC8vIEZldGNoIGxvZ3NcbiAgY29uc3QgbGluZXMgPSBwYXJzZUludChvcHRpb25zLmxpbmVzIHx8ICcxMDAnKTtcbiAgY29uc3QgbG9nVHlwZSA9IG9wdGlvbnMudHlwZSB8fCAnYWxsJztcblxuICBsb2dnZXIuZGltKGBGZXRjaGluZyBsYXN0ICR7bGluZXN9IGxpbmVzIGZvciAke3Byb2plY3ROYW1lfS4uLmApO1xuICBsb2dnZXIuYmxhbmsoKTtcblxuICB0cnkge1xuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgYXhpb3MuZ2V0KFxuICAgICAgYCR7Y29uZmlnLnNlcnZlclVybH0vYXBpL3Byb2Nlc3MvJHtwcm9qZWN0SWR9L2xvZ3NgLFxuICAgICAge1xuICAgICAgICBwYXJhbXM6IHsgbGluZXMsIHR5cGU6IGxvZ1R5cGUgfSxcbiAgICAgICAgaGVhZGVyczogY29uZmlnLnRva2VuID8geyBBdXRob3JpemF0aW9uOiBgQmVhcmVyICR7Y29uZmlnLnRva2VufWAgfSA6IHt9LFxuICAgICAgICB0aW1lb3V0OiAxNTAwMCxcbiAgICAgIH1cbiAgICApO1xuXG4gICAgY29uc3QgZGF0YSA9IHJlc3BvbnNlLmRhdGEuZGF0YTtcblxuICAgIGlmIChkYXRhLnN0ZG91dCkge1xuICAgICAgY29uc29sZS5sb2coY2hhbGsuYm9sZC5ncmVlbign4pSB4pSB4pSBIHN0ZG91dCDilIHilIHilIEnKSk7XG4gICAgICBjb25zb2xlLmxvZyhkYXRhLnN0ZG91dCk7XG4gICAgfVxuXG4gICAgaWYgKGRhdGEuc3RkZXJyKSB7XG4gICAgICBpZiAoZGF0YS5zdGRvdXQpIGNvbnNvbGUubG9nKCk7IC8vIHNwYWNlclxuICAgICAgY29uc29sZS5sb2coY2hhbGsuYm9sZC5yZWQoJ+KUgeKUgeKUgSBzdGRlcnIg4pSB4pSB4pSBJykpO1xuICAgICAgY29uc29sZS5sb2coZGF0YS5zdGRlcnIpO1xuICAgIH1cblxuICAgIGlmICghZGF0YS5zdGRvdXQgJiYgIWRhdGEuc3RkZXJyKSB7XG4gICAgICBsb2dnZXIuZGltKCdObyBsb2dzIGZvdW5kIGZvciB0aGlzIHByb2plY3QuJyk7XG4gICAgfVxuICB9IGNhdGNoIChlcnJvcjogYW55KSB7XG4gICAgaWYgKGF4aW9zLmlzQXhpb3NFcnJvcihlcnJvcikpIHtcbiAgICAgIGlmIChlcnJvci5yZXNwb25zZT8uc3RhdHVzID09PSA0MDQpIHtcbiAgICAgICAgbG9nZ2VyLmVycm9yKCdQcm9qZWN0IG5vdCBmb3VuZC4gVXNlIFwicnVud2F5IGxpc3RcIiB0byBzZWUgZGVwbG95ZWQgcHJvamVjdHMuJyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBsb2dnZXIuZXJyb3IoYEZhaWxlZCB0byBmZXRjaCBsb2dzOiAke2Vycm9yLnJlc3BvbnNlPy5kYXRhPy5lcnJvciB8fCBlcnJvci5tZXNzYWdlfWApO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBsb2dnZXIuZXJyb3IoYEZhaWxlZCB0byBmZXRjaCBsb2dzOiAke2Vycm9yLm1lc3NhZ2V9YCk7XG4gICAgfVxuICB9XG5cbiAgbG9nZ2VyLmJsYW5rKCk7XG59XG4iXX0=
@@ -0,0 +1 @@
1
+ export declare function updateCommand(): Promise<void>;
@@ -0,0 +1,244 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ var __importDefault = (this && this.__importDefault) || function (mod) {
36
+ return (mod && mod.__esModule) ? mod : { "default": mod };
37
+ };
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ exports.updateCommand = updateCommand;
40
+ const inquirer_1 = __importDefault(require("inquirer"));
41
+ const ora_1 = __importDefault(require("ora"));
42
+ const axios_1 = __importDefault(require("axios"));
43
+ const projectDetector_1 = require("../services/projectDetector");
44
+ const buildService_1 = require("../services/buildService");
45
+ const packageService_1 = require("../services/packageService");
46
+ const uploadService_1 = require("../services/uploadService");
47
+ const config_1 = require("../utils/config");
48
+ const logger_1 = require("../utils/logger");
49
+ async function updateCommand() {
50
+ logger_1.logger.header('Runway Update');
51
+ // Check configuration
52
+ if (!(0, config_1.isConfigured)()) {
53
+ logger_1.logger.error('CLI not configured. Run "runway init" first.');
54
+ return;
55
+ }
56
+ // Check token validity
57
+ if ((0, config_1.isTokenExpired)()) {
58
+ logger_1.logger.error('Your authentication token has expired.');
59
+ logger_1.logger.info('Run "runway login" to re-authenticate.');
60
+ return;
61
+ }
62
+ const config = (0, config_1.getConfig)();
63
+ logger_1.logger.dim(`Server: ${config.serverUrl}`);
64
+ logger_1.logger.blank();
65
+ // Fetch list of deployed projects
66
+ let uploadService;
67
+ try {
68
+ uploadService = (0, uploadService_1.createUploadService)();
69
+ }
70
+ catch (error) {
71
+ logger_1.logger.error(error instanceof Error ? error.message : 'Unknown error');
72
+ return;
73
+ }
74
+ const spinner = (0, ora_1.default)('Fetching deployed projects...').start();
75
+ let projects;
76
+ try {
77
+ projects = await uploadService.listProjects();
78
+ spinner.succeed(`Found ${projects.length} deployed projects`);
79
+ }
80
+ catch (error) {
81
+ spinner.fail('Failed to fetch projects');
82
+ logger_1.logger.error(error instanceof Error ? error.message : 'Unknown error');
83
+ return;
84
+ }
85
+ if (projects.length === 0) {
86
+ logger_1.logger.warn('No projects deployed. Use "runway deploy" to deploy a new project.');
87
+ return;
88
+ }
89
+ // Let user pick a project
90
+ const { selectedProject } = await inquirer_1.default.prompt([
91
+ {
92
+ type: 'list',
93
+ name: 'selectedProject',
94
+ message: 'Select project to update:',
95
+ choices: projects.map(p => ({
96
+ name: `${p.name} (${p.type}) — ${p.status}`,
97
+ value: p,
98
+ })),
99
+ },
100
+ ]);
101
+ const projectName = selectedProject.name;
102
+ const projectType = selectedProject.type;
103
+ logger_1.logger.blank();
104
+ logger_1.logger.info(`Updating: ${projectName} (${projectType})`);
105
+ logger_1.logger.blank();
106
+ // Detect current directory project
107
+ const detectedSpinner = (0, ora_1.default)('Detecting local project...').start();
108
+ let detectedProject;
109
+ try {
110
+ detectedProject = await (0, projectDetector_1.detectProject)();
111
+ detectedSpinner.succeed(`Detected: ${detectedProject.type} project (${detectedProject.packageManager})`);
112
+ }
113
+ catch (error) {
114
+ detectedSpinner.fail('Failed to detect project in current directory');
115
+ logger_1.logger.error(error instanceof Error ? error.message : 'Unknown error');
116
+ return;
117
+ }
118
+ // Confirm
119
+ const { confirm } = await inquirer_1.default.prompt([
120
+ {
121
+ type: 'confirm',
122
+ name: 'confirm',
123
+ message: `Build current directory and update "${projectName}"?`,
124
+ default: true,
125
+ },
126
+ ]);
127
+ if (!confirm) {
128
+ logger_1.logger.warn('Update cancelled.');
129
+ return;
130
+ }
131
+ logger_1.logger.blank();
132
+ // Step 1: Build locally
133
+ logger_1.logger.step(1, 3, 'Building project...');
134
+ // Patch React Router basename before build (if applicable)
135
+ let didPatch = false;
136
+ if (projectType === 'react') {
137
+ const { ReactPatcher } = await Promise.resolve().then(() => __importStar(require('../services/reactPatcher')));
138
+ didPatch = await ReactPatcher.patch(process.cwd());
139
+ }
140
+ const buildResult = await buildService_1.buildService.build({
141
+ projectPath: process.cwd(),
142
+ projectType,
143
+ projectName,
144
+ packageManager: detectedProject.packageManager,
145
+ });
146
+ // Revert patch after build (keep user's source clean)
147
+ if (didPatch) {
148
+ const { ReactPatcher } = await Promise.resolve().then(() => __importStar(require('../services/reactPatcher')));
149
+ await ReactPatcher.revert(process.cwd());
150
+ }
151
+ if (!buildResult.success) {
152
+ logger_1.logger.error(`Build failed: ${buildResult.error}`);
153
+ return;
154
+ }
155
+ logger_1.logger.success(`Build completed in ${(buildResult.duration / 1000).toFixed(1)}s`);
156
+ logger_1.logger.blank();
157
+ // Step 2: Package
158
+ logger_1.logger.step(2, 3, 'Creating deployment package...');
159
+ let packageResult;
160
+ try {
161
+ packageResult = await packageService_1.packageService.package({
162
+ projectPath: process.cwd(),
163
+ projectType,
164
+ buildOutputDir: buildResult.outputDir,
165
+ includeSource: false,
166
+ });
167
+ }
168
+ catch (error) {
169
+ logger_1.logger.error(`Packaging failed: ${error instanceof Error ? error.message : 'Unknown error'}`);
170
+ return;
171
+ }
172
+ logger_1.logger.blank();
173
+ // Step 3: Upload as update
174
+ logger_1.logger.step(3, 3, 'Uploading update to server...');
175
+ const uploadResult = await uploadService.upload({
176
+ zipPath: packageResult.zipPath,
177
+ projectName,
178
+ projectType,
179
+ buildMode: 'local',
180
+ deploymentSource: 'cli',
181
+ envInjected: false,
182
+ });
183
+ // Cleanup
184
+ packageService_1.packageService.cleanup(packageResult.zipPath);
185
+ if (!uploadResult.success) {
186
+ logger_1.logger.error(`Upload failed: ${uploadResult.error}`);
187
+ return;
188
+ }
189
+ logger_1.logger.success('Upload complete');
190
+ logger_1.logger.blank();
191
+ // Wait for deployment
192
+ if (uploadResult.deploymentId) {
193
+ try {
194
+ const finalStatus = await uploadService.pollDeploymentStatus(uploadResult.deploymentId, (status) => {
195
+ if (status.progress !== undefined) {
196
+ process.stdout.write(`\r Progress: ${status.progress}%`);
197
+ }
198
+ });
199
+ process.stdout.write('\n');
200
+ if (finalStatus.status === 'success') {
201
+ logger_1.logger.blank();
202
+ logger_1.logger.success(`✅ "${projectName}" updated successfully!`);
203
+ const safeName = projectName.toLowerCase().replace(/[^a-z0-9]/g, '-');
204
+ // Fetch domain config to show proper URL (same pattern as deploy.ts)
205
+ try {
206
+ const domainResponse = await axios_1.default.get(`${config.serverUrl}/api/domain`, {
207
+ headers: config.token ? { Authorization: `Bearer ${config.token}` } : {},
208
+ });
209
+ const domainConfig = domainResponse.data;
210
+ if (domainConfig.domain?.active && domainConfig.securityMode === 'domain-https') {
211
+ logger_1.logger.info(`Your app is available at: https://${domainConfig.domain.domain}/app/${safeName}`);
212
+ }
213
+ else {
214
+ logger_1.logger.info(`Your app is available at: ${config.serverUrl}/app/${safeName}`);
215
+ }
216
+ }
217
+ catch {
218
+ logger_1.logger.info(`Your app is available at: ${config.serverUrl}/app/${safeName}`);
219
+ }
220
+ // Show health warning if service didn't respond on its allocated port
221
+ if (finalStatus.healthWarning) {
222
+ logger_1.logger.blank();
223
+ logger_1.logger.warn(`⚠ Health check: ${finalStatus.healthWarning}`);
224
+ }
225
+ }
226
+ else {
227
+ logger_1.logger.error(`Update failed: ${finalStatus.error || 'Unknown error'}`);
228
+ if (finalStatus.logs) {
229
+ logger_1.logger.blank();
230
+ logger_1.logger.dim('Logs:');
231
+ console.log(finalStatus.logs);
232
+ }
233
+ }
234
+ }
235
+ catch {
236
+ logger_1.logger.warn('Could not track deployment status. Check the web UI.');
237
+ }
238
+ }
239
+ else {
240
+ logger_1.logger.success('Upload successful! Check web UI for deployment status.');
241
+ }
242
+ logger_1.logger.blank();
243
+ }
244
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBkYXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbW1hbmRzL3VwZGF0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQVlBLHNDQThOQztBQTFPRCx3REFBZ0M7QUFDaEMsOENBQXNCO0FBRXRCLGtEQUEwQjtBQUUxQixpRUFBNEQ7QUFDNUQsMkRBQXdEO0FBQ3hELCtEQUE0RDtBQUM1RCw2REFBZ0U7QUFDaEUsNENBQTBFO0FBQzFFLDRDQUF5QztBQUVsQyxLQUFLLFVBQVUsYUFBYTtJQUNqQyxlQUFNLENBQUMsTUFBTSxDQUFDLGVBQWUsQ0FBQyxDQUFDO0lBRS9CLHNCQUFzQjtJQUN0QixJQUFJLENBQUMsSUFBQSxxQkFBWSxHQUFFLEVBQUUsQ0FBQztRQUNwQixlQUFNLENBQUMsS0FBSyxDQUFDLDhDQUE4QyxDQUFDLENBQUM7UUFDN0QsT0FBTztJQUNULENBQUM7SUFFRCx1QkFBdUI7SUFDdkIsSUFBSSxJQUFBLHVCQUFjLEdBQUUsRUFBRSxDQUFDO1FBQ3JCLGVBQU0sQ0FBQyxLQUFLLENBQUMsd0NBQXdDLENBQUMsQ0FBQztRQUN2RCxlQUFNLENBQUMsSUFBSSxDQUFDLHdDQUF3QyxDQUFDLENBQUM7UUFDdEQsT0FBTztJQUNULENBQUM7SUFFRCxNQUFNLE1BQU0sR0FBRyxJQUFBLGtCQUFTLEdBQUUsQ0FBQztJQUMzQixlQUFNLENBQUMsR0FBRyxDQUFDLFdBQVcsTUFBTSxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUM7SUFDMUMsZUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDO0lBRWYsa0NBQWtDO0lBQ2xDLElBQUksYUFBYSxDQUFDO0lBQ2xCLElBQUksQ0FBQztRQUNILGFBQWEsR0FBRyxJQUFBLG1DQUFtQixHQUFFLENBQUM7SUFDeEMsQ0FBQztJQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7UUFDZixlQUFNLENBQUMsS0FBSyxDQUFDLEtB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Q0gsQ0FBQztRQUNILENBQUM7UUFBQyxNQUFNLENBQUM7WUFDUCxlQUFNLENBQUMsSUFBSSxDQUFDLHNEQUFzRCxDQUFDLENBQUM7UUFDdEUsQ0FBQztJQUNILENBQUM7U0FBTSxDQUFDO1FBQ04sZUFBTSxDQUFDLE9BQU8sQ0FBQyx3REFBd0QsQ0FBQyxDQUFDO0lBQzNFLENBQUM7SUFFRCxlQUFNLENBQUMsS0FBSyxFQUFFLENBQUM7QUFDakIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBpbnF1aXJlciBmcm9tICdpbnF1aXJlcic7XG5pbXBvcnQgb3JhIGZyb20gJ29yYSc7XG5pbXBvcnQgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCBheGlvcyBmcm9tICdheGlvcyc7XG5pbXBvcnQgeyBQcm9qZWN0VHlwZSB9IGZyb20gJy4uL3R5cGVzJztcbmltcG9ydCB7IGRldGVjdFByb2plY3QgfSBmcm9tICcuLi9zZXJ2aWNlcy9wcm9qZWN0RGV0ZWN0b3InO1xuaW1wb3J0IHsgYnVpbGRTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvYnVpbGRTZXJ2aWNlJztcbmltcG9ydCB7IHBhY2thZ2VTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvcGFja2FnZVNlcnZpY2UnO1xuaW1wb3J0IHsgY3JlYXRlVXBsb2FkU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL3VwbG9hZFNlcnZpY2UnO1xuaW1wb3J0IHsgaXNDb25maWd1cmVkLCBnZXRDb25maWcsIGlzVG9rZW5FeHBpcmVkIH0gZnJvbSAnLi4vdXRpbHMvY29uZmlnJztcbmltcG9ydCB7IGxvZ2dlciB9IGZyb20gJy4uL3V0aWxzL2xvZ2dlcic7XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiB1cGRhdGVDb21tYW5kKCk6IFByb21pc2U8dm9pZD4ge1xuICBsb2dnZXIuaGVhZGVyKCdSdW53YXkgVXBkYXRlJyk7XG5cbiAgLy8gQ2hlY2sgY29uZmlndXJhdGlvblxuICBpZiAoIWlzQ29uZmlndXJlZCgpKSB7XG4gICAgbG9nZ2VyLmVycm9yKCdDTEkgbm90IGNvbmZpZ3VyZWQuIFJ1biBcInJ1bndheSBpbml0XCIgZmlyc3QuJyk7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgLy8gQ2hlY2sgdG9rZW4gdmFsaWRpdHlcbiAgaWYgKGlzVG9rZW5FeHBpcmVkKCkpIHtcbiAgICBsb2dnZXIuZXJyb3IoJ1lvdXIgYXV0aGVudGljYXRpb24gdG9rZW4gaGFzIGV4cGlyZWQuJyk7XG4gICAgbG9nZ2VyLmluZm8oJ1J1biBcInJ1bndheSBsb2dpblwiIHRvIHJlLWF1dGhlbnRpY2F0ZS4nKTtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCBjb25maWcgPSBnZXRDb25maWcoKTtcbiAgbG9nZ2VyLmRpbShgU2VydmVyOiAke2NvbmZpZy5zZXJ2ZXJVcmx9YCk7XG4gIGxvZ2dlci5ibGFuaygpO1xuXG4gIC8vIEZldGNoIGxpc3Qgb2YgZGVwbG95ZWQgcHJvamVjdHNcbiAgbGV0IHVwbG9hZFNlcnZpY2U7XG4gIHRyeSB7XG4gICAgdXBsb2FkU2VydmljZSA9IGNyZWF0ZVVwbG9hZFNlcnZpY2UoKTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICBsb2dnZXIuZXJyb3IoZXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IGVycm9yLm1lc3NhZ2UgOiAnVW5rbm93biBlcnJvcicpO1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IHNwaW5uZXIgPSBvcmEoJ0ZldGNoaW5nIGRlcGxveWVkIHByb2plY3RzLi4uJykuc3RhcnQoKTtcbiAgbGV0IHByb2plY3RzO1xuICB0cnkge1xuICAgIHByb2plY3RzID0gYXdhaXQgdXBsb2FkU2VydmljZS5saXN0UHJvamVjdHMoKTtcbiAgICBzcGlubmVyLnN1Y2NlZWQoYEZvdW5kICR7cHJvamVjdHMubGVuZ3RofSBkZXBsb3llZCBwcm9qZWN0c2ApO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIHNwaW5uZXIuZmFpbCgnRmFpbGVkIHRvIGZldGNoIHByb2plY3RzJyk7XG4gICAgbG9nZ2VyLmVycm9yKGVycm9yIGluc3RhbmNlb2YgRXJyb3IgPyBlcnJvci5tZXNzYWdlIDogJ1Vua25vd24gZXJyb3InKTtcbiAgICByZXR1cm47XG4gIH1cblxuICBpZiAocHJvamVjdHMubGVuZ3RoID09PSAwKSB7XG4gICAgbG9nZ2VyLndhcm4oJ05vIHByb2plY3RzIGRlcGxveWVkLiBVc2UgXCJydW53YXkgZGVwbG95XCIgdG8gZGVwbG95IGEgbmV3IHByb2plY3QuJyk7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgLy8gTGV0IHVzZXIgcGljayBhIHByb2plY3RcbiAgY29uc3QgeyBzZWxlY3RlZFByb2plY3QgfSA9IGF3YWl0IGlucXVpcmVyLnByb21wdChbXG4gICAge1xuICAgICAgdHlwZTogJ2xpc3QnLFxuICAgICAgbmFtZTogJ3NlbGVjdGVkUHJvamVjdCcsXG4gICAgICBtZXNzYWdlOiAnU2VsZWN0IHByb2plY3QgdG8gdXBkYXRlOicsXG4gICAgICBjaG9pY2VzOiBwcm9qZWN0cy5tYXAocCA9PiAoe1xuICAgICAgICBuYW1lOiBgJHtwLm5hbWV9ICgke3AudHlwZX0pIOKAlCAke3Auc3RhdHVzfWAsXG4gICAgICAgIHZhbHVlOiBwLFxuICAgICAgfSkpLFxuICAgIH0sXG4gIF0pO1xuXG4gIGNvbnN0IHByb2plY3ROYW1lID0gc2VsZWN0ZWRQcm9qZWN0Lm5hbWU7XG4gIGNvbnN0IHByb2plY3RUeXBlOiBQcm9qZWN0VHlwZSA9IHNlbGVjdGVkUHJvamVjdC50eXBlO1xuXG4gIGxvZ2dlci5ibGFuaygpO1xuICBsb2dnZXIuaW5mbyhgVXBkYXRpbmc6ICR7cHJvamVjdE5hbWV9ICgke3Byb2plY3RUeXBlfSlgKTtcbiAgbG9nZ2VyLmJsYW5rKCk7XG5cbiAgLy8gRGV0ZWN0IGN1cnJlbnQgZGlyZWN0b3J5IHByb2plY3RcbiAgY29uc3QgZGV0ZWN0ZWRTcGlubmVyID0gb3JhKCdEZXRlY3RpbmcgbG9jYWwgcHJvamVjdC4uLicpLnN0YXJ0KCk7XG4gIGxldCBkZXRlY3RlZFByb2plY3Q7XG4gIHRyeSB7XG4gICAgZGV0ZWN0ZWRQcm9qZWN0ID0gYXdhaXQgZGV0ZWN0UHJvamVjdCgpO1xuICAgIGRldGVjdGVkU3Bpbm5lci5zdWNjZWVkKGBEZXRlY3RlZDogJHtkZXRlY3RlZFByb2plY3QudHlwZX0gcHJvamVjdCAoJHtkZXRlY3RlZFByb2plY3QucGFja2FnZU1hbmFnZXJ9KWApO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGRldGVjdGVkU3Bpbm5lci5mYWlsKCdGYWlsZWQgdG8gZGV0ZWN0IHByb2plY3QgaW4gY3VycmVudCBkaXJlY3RvcnknKTtcbiAgICBsb2dnZXIuZXJyb3IoZXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IGVycm9yLm1lc3NhZ2UgOiAnVW5rbm93biBlcnJvcicpO1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8vIENvbmZpcm1cbiAgY29uc3QgeyBjb25maXJtIH0gPSBhd2FpdCBpbnF1aXJlci5wcm9tcHQoW1xuICAgIHtcbiAgICAgIHR5cGU6ICdjb25maXJtJyxcbiAgICAgIG5hbWU6ICdjb25maXJtJyxcbiAgICAgIG1lc3NhZ2U6IGBCdWlsZCBjdXJyZW50IGRpcmVjdG9yeSBhbmQgdXBkYXRlIFwiJHtwcm9qZWN0TmFtZX1cIj9gLFxuICAgICAgZGVmYXVsdDogdHJ1ZSxcbiAgICB9LFxuICBdKTtcblxuICBpZiAoIWNvbmZpcm0pIHtcbiAgICBsb2dnZXIud2FybignVXBkYXRlIGNhbmNlbGxlZC4nKTtcbiAgICByZXR1cm47XG4gIH1cblxuICBsb2dnZXIuYmxhbmsoKTtcblxuICAvLyBTdGVwIDE6IEJ1aWxkIGxvY2FsbHlcbiAgbG9nZ2VyLnN0ZXAoMSwgMywgJ0J1aWxkaW5nIHByb2plY3QuLi4nKTtcblxuICAvLyBQYXRjaCBSZWFjdCBSb3V0ZXIgYmFzZW5hbWUgYmVmb3JlIGJ1aWxkIChpZiBhcHBsaWNhYmxlKVxuICBsZXQgZGlkUGF0Y2ggPSBmYWxzZTtcbiAgaWYgKHByb2plY3RUeXBlID09PSAncmVhY3QnKSB7XG4gICAgY29uc3QgeyBSZWFjdFBhdGNoZXIgfSA9IGF3YWl0IGltcG9ydCgnLi4vc2VydmljZXMvcmVhY3RQYXRjaGVyJyk7XG4gICAgZGlkUGF0Y2ggPSBhd2FpdCBSZWFjdFBhdGNoZXIucGF0Y2gocHJvY2Vzcy5jd2QoKSk7XG4gIH1cblxuICBjb25zdCBidWlsZFJlc3VsdCA9IGF3YWl0IGJ1aWxkU2VydmljZS5idWlsZCh7XG4gICAgcHJvamVjdFBhdGg6IHByb2Nlc3MuY3dkKCksXG4gICAgcHJvamVjdFR5cGUsXG4gICAgcHJvamVjdE5hbWUsXG4gICAgcGFja2FnZU1hbmFnZXI6IGRldGVjdGVkUHJvamVjdC5wYWNrYWdlTWFuYWdlcixcbiAgfSk7XG5cbiAgLy8gUmV2ZXJ0IHBhdGNoIGFmdGVyIGJ1aWxkIChrZWVwIHVzZXIncyBzb3VyY2UgY2xlYW4pXG4gIGlmIChkaWRQYXRjaCkge1xuICAgIGNvbnN0IHsgUmVhY3RQYXRjaGVyIH0gPSBhd2FpdCBpbXBvcnQoJy4uL3NlcnZpY2VzL3JlYWN0UGF0Y2hlcicpO1xuICAgIGF3YWl0IFJlYWN0UGF0Y2hlci5yZXZlcnQocHJvY2Vzcy5jd2QoKSk7XG4gIH1cblxuICBpZiAoIWJ1aWxkUmVzdWx0LnN1Y2Nlc3MpIHtcbiAgICBsb2dnZXIuZXJyb3IoYEJ1aWxkIGZhaWxlZDogJHtidWlsZFJlc3VsdC5lcnJvcn1gKTtcbiAgICByZXR1cm47XG4gIH1cblxuICBsb2dnZXIuc3VjY2VzcyhgQnVpbGQgY29tcGxldGVkIGluICR7KGJ1aWxkUmVzdWx0LmR1cmF0aW9uIC8gMTAwMCkudG9GaXhlZCgxKX1zYCk7XG4gIGxvZ2dlci5ibGFuaygpO1xuXG4gIC8vIFN0ZXAgMjogUGFja2FnZVxuICBsb2dnZXIuc3RlcCgyLCAzLCAnQ3JlYXRpbmcgZGVwbG95bWVudCBwYWNrYWdlLi4uJyk7XG5cbiAgbGV0IHBhY2thZ2VSZXN1bHQ7XG4gIHRyeSB7XG4gICAgcGFja2FnZVJlc3VsdCA9IGF3YWl0IHBhY2thZ2VTZXJ2aWNlLnBhY2thZ2Uoe1xuICAgICAgcHJvamVjdFBhdGg6IHByb2Nlc3MuY3dkKCksXG4gICAgICBwcm9qZWN0VHlwZSxcbiAgICAgIGJ1aWxkT3V0cHV0RGlyOiBidWlsZFJlc3VsdC5vdXRwdXREaXIsXG4gICAgICBpbmNsdWRlU291cmNlOiBmYWxzZSxcbiAgICB9KTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICBsb2dnZXIuZXJyb3IoYFBhY2thZ2luZyBmYWlsZWQ6ICR7ZXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IGVycm9yLm1lc3NhZ2UgOiAnVW5rbm93biBlcnJvcid9YCk7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgbG9nZ2VyLmJsYW5rKCk7XG5cbiAgLy8gU3RlcCAzOiBVcGxvYWQgYXMgdXBkYXRlXG4gIGxvZ2dlci5zdGVwKDMsIDMsICdVcGxvYWRpbmcgdXBkYXRlIHRvIHNlcnZlci4uLicpO1xuXG4gIGNvbnN0IHVwbG9hZFJlc3VsdCA9IGF3YWl0IHVwbG9hZFNlcnZpY2UudXBsb2FkKHtcbiAgICB6aXBQYXRoOiBwYWNrYWdlUmVzdWx0LnppcFBhdGgsXG4gICAgcHJvamVjdE5hbWUsXG4gICAgcHJvamVjdFR5cGUsXG4gICAgYnVpbGRNb2RlOiAnbG9jYWwnLFxuICAgIGRlcGxveW1lbnRTb3VyY2U6ICdjbGknLFxuICAgIGVudkluamVjdGVkOiBmYWxzZSxcbiAgfSk7XG5cbiAgLy8gQ2xlYW51cFxuICBwYWNrYWdlU2VydmljZS5jbGVhbnVwKHBhY2thZ2VSZXN1bHQuemlwUGF0aCk7XG5cbiAgaWYgKCF1cGxvYWRSZXN1bHQuc3VjY2Vzcykge1xuICAgIGxvZ2dlci5lcnJvcihgVXBsb2FkIGZhaWxlZDogJHt1cGxvYWRSZXN1bHQuZXJyb3J9YCk7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgbG9nZ2VyLnN1Y2Nlc3MoJ1VwbG9hZCBjb21wbGV0ZScpO1xuICBsb2dnZXIuYmxhbmsoKTtcblxuICAvLyBXYWl0IGZvciBkZXBsb3ltZW50XG4gIGlmICh1cGxvYWRSZXN1bHQuZGVwbG95bWVudElkKSB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGZpbmFsU3RhdHVzID0gYXdhaXQgdXBsb2FkU2VydmljZS5wb2xsRGVwbG95bWVudFN0YXR1cyhcbiAgICAgICAgdXBsb2FkUmVzdWx0LmRlcGxveW1lbnRJZCxcbiAgICAgICAgKHN0YXR1cykgPT4ge1xuICAgICAgICAgIGlmIChzdGF0dXMucHJvZ3Jlc3MgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgcHJvY2Vzcy5zdGRvdXQud3JpdGUoYFxcciAgUHJvZ3Jlc3M6ICR7c3RhdHVzLnByb2dyZXNzfSVgKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICk7XG5cbiAgICAgIHByb2Nlc3Muc3Rkb3V0LndyaXRlKCdcXG4nKTtcblxuICAgICAgaWYgKGZpbmFsU3RhdHVzLnN0YXR1cyA9PT0gJ3N1Y2Nlc3MnKSB7XG4gICAgICAgIGxvZ2dlci5ibGFuaygpO1xuICAgICAgICBsb2dnZXIuc3VjY2Vzcyhg4pyFIFwiJHtwcm9qZWN0TmFtZX1cIiB1cGRhdGVkIHN1Y2Nlc3NmdWxseSFgKTtcblxuICAgICAgICBjb25zdCBzYWZlTmFtZSA9IHByb2plY3ROYW1lLnRvTG93ZXJDYXNlKCkucmVwbGFjZSgvW15hLXowLTldL2csICctJyk7XG5cbiAgICAgICAgLy8gRmV0Y2ggZG9tYWluIGNvbmZpZyB0byBzaG93IHByb3BlciBVUkwgKHNhbWUgcGF0dGVybiBhcyBkZXBsb3kudHMpXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgY29uc3QgZG9tYWluUmVzcG9uc2UgPSBhd2FpdCBheGlvcy5nZXQoYCR7Y29uZmlnLnNlcnZlclVybH0vYXBpL2RvbWFpbmAsIHtcbiAgICAgICAgICAgIGhlYWRlcnM6IGNvbmZpZy50b2tlbiA/IHsgQXV0aG9yaXphdGlvbjogYEJlYXJlciAke2NvbmZpZy50b2tlbn1gIH0gOiB7fSxcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBjb25zdCBkb21haW5Db25maWcgPSBkb21haW5SZXNwb25zZS5kYXRhO1xuICAgICAgICAgIGlmIChkb21haW5Db25maWcuZG9tYWluPy5hY3RpdmUgJiYgZG9tYWluQ29uZmlnLnNlY3VyaXR5TW9kZSA9PT0gJ2RvbWFpbi1odHRwcycpIHtcbiAgICAgICAgICAgIGxvZ2dlci5pbmZvKGBZb3VyIGFwcCBpcyBhdmFpbGFibGUgYXQ6IGh0dHBzOi8vJHtkb21haW5Db25maWcuZG9tYWluLmRvbWFpbn0vYXBwLyR7c2FmZU5hbWV9YCk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGxvZ2dlci5pbmZvKGBZb3VyIGFwcCBpcyBhdmFpbGFibGUgYXQ6ICR7Y29uZmlnLnNlcnZlclVybH0vYXBwLyR7c2FmZU5hbWV9YCk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGNhdGNoIHtcbiAgICAgICAgICBsb2dnZXIuaW5mbyhgWW91ciBhcHAgaXMgYXZhaWxhYmxlIGF0OiAke2NvbmZpZy5zZXJ2ZXJVcmx9L2FwcC8ke3NhZmVOYW1lfWApO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gU2hvdyBoZWFsdGggd2FybmluZyBpZiBzZXJ2aWNlIGRpZG4ndCByZXNwb25kIG9uIGl0cyBhbGxvY2F0ZWQgcG9ydFxuICAgICAgICBpZiAoZmluYWxTdGF0dXMuaGVhbHRoV2FybmluZykge1xuICAgICAgICAgIGxvZ2dlci5ibGFuaygpO1xuICAgICAgICAgIGxvZ2dlci53YXJuKGDimqAgIEhlYWx0aCBjaGVjazogJHtmaW5hbFN0YXR1cy5oZWFsdGhXYXJuaW5nfWApO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBsb2dnZXIuZXJyb3IoYFVwZGF0ZSBmYWlsZWQ6ICR7ZmluYWxTdGF0dXMuZXJyb3IgfHwgJ1Vua25vd24gZXJyb3InfWApO1xuICAgICAgICBpZiAoZmluYWxTdGF0dXMubG9ncykge1xuICAgICAgICAgIGxvZ2dlci5ibGFuaygpO1xuICAgICAgICAgIGxvZ2dlci5kaW0oJ0xvZ3M6Jyk7XG4gICAgICAgICAgY29uc29sZS5sb2coZmluYWxTdGF0dXMubG9ncyk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGNhdGNoIHtcbiAgICAgIGxvZ2dlci53YXJuKCdDb3VsZCBub3QgdHJhY2sgZGVwbG95bWVudCBzdGF0dXMuIENoZWNrIHRoZSB3ZWIgVUkuJyk7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGxvZ2dlci5zdWNjZXNzKCdVcGxvYWQgc3VjY2Vzc2Z1bCEgQ2hlY2sgd2ViIFVJIGZvciBkZXBsb3ltZW50IHN0YXR1cy4nKTtcbiAgfVxuXG4gIGxvZ2dlci5ibGFuaygpO1xufVxuIl19
package/dist/index.js CHANGED
@@ -9,6 +9,9 @@ const status_1 = require("./commands/status");
9
9
  const reset_1 = require("./commands/reset");
10
10
  const domain_1 = require("./commands/domain");
11
11
  const metrics_1 = require("./commands/metrics");
12
+ const login_1 = require("./commands/login");
13
+ const update_1 = require("./commands/update");
14
+ const logs_1 = require("./commands/logs");
12
15
  const program = new commander_1.Command();
13
16
  program
14
17
  .name('runway')
@@ -20,6 +23,11 @@ program
20
23
  .description('Configure the Runway CLI')
21
24
  .option('-s, --server <url>', 'Server URL')
22
25
  .action(init_1.initCommand);
26
+ // Login command (re-authenticate without full init)
27
+ program
28
+ .command('login')
29
+ .description('Re-authenticate with the Runway server')
30
+ .action(login_1.loginCommand);
23
31
  // Deploy command
24
32
  program
25
33
  .command('deploy')
@@ -31,6 +39,11 @@ program
31
39
  .option('--build-server', 'Upload source and build on server')
32
40
  .option('-e, --env-file <path>', 'Path to environment file')
33
41
  .action(deploy_1.deployCommand);
42
+ // Update command (update existing deployed project)
43
+ program
44
+ .command('update')
45
+ .description('Update an existing deployed project')
46
+ .action(update_1.updateCommand);
34
47
  // List command
35
48
  program
36
49
  .command('list')
@@ -42,6 +55,13 @@ program
42
55
  .command('status <project>')
43
56
  .description('Get status of a deployed project')
44
57
  .action(status_1.statusCommand);
58
+ // Logs command
59
+ program
60
+ .command('logs [project]')
61
+ .description('View logs for a deployed project')
62
+ .option('-n, --lines <count>', 'Number of lines to show', '100')
63
+ .option('--type <type>', 'Log type: out, error, or all', 'all')
64
+ .action(logs_1.logsCommand);
45
65
  // Reset command
46
66
  program
47
67
  .command('reset')
@@ -59,4 +79,4 @@ program
59
79
  .action(metrics_1.metricsCommand);
60
80
  // Parse command line arguments
61
81
  program.parse();
62
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBRUEseUNBQW9DO0FBQ3BDLDBDQUE4QztBQUM5Qyw4Q0FBa0Q7QUFDbEQsMENBQThDO0FBQzlDLDhDQUFrRDtBQUNsRCw0Q0FBZ0Q7QUFDaEQsOENBQWtEO0FBQ2xELGdEQUFvRDtBQUVwRCxNQUFNLE9BQU8sR0FBRyxJQUFJLG1CQUFPLEVBQUUsQ0FBQztBQUU5QixPQUFPO0tBQ0osSUFBSSxDQUFDLFFBQVEsQ0FBQztLQUNkLFdBQVcsQ0FBQywyQ0FBMkMsQ0FBQztLQUN4RCxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7QUFFcEIsZUFBZTtBQUNmLE9BQU87S0FDSixPQUFPLENBQUMsTUFBTSxDQUFDO0tBQ2YsV0FBVyxDQUFDLDBCQUEwQixDQUFDO0tBQ3ZDLE1BQU0sQ0FBQyxvQkFBb0IsRUFBRSxZQUFZLENBQUM7S0FDMUMsTUFBTSxDQUFDLGtCQUFXLENBQUMsQ0FBQztBQUV2QixpQkFBaUI7QUFDakIsT0FBTztLQUNKLE9BQU8sQ0FBQyxRQUFRLENBQUM7S0FDakIsV0FBVyxDQUFDLDRCQUE0QixDQUFDO0tBQ3pDLE1BQU0sQ0FBQyxtQkFBbUIsRUFBRSxjQUFjLENBQUM7S0FDM0MsTUFBTSxDQUFDLG1CQUFtQixFQUFFLGtDQUFrQyxDQUFDO0tBQy9ELE1BQU0sQ0FBQyx5QkFBeUIsRUFBRSxnQkFBZ0IsQ0FBQztLQUNuRCxNQUFNLENBQUMsZUFBZSxFQUFFLDBDQUEwQyxDQUFDO0tBQ25FLE1BQU0sQ0FBQyxnQkFBZ0IsRUFBRSxtQ0FBbUMsQ0FBQztLQUM3RCxNQUFNLENBQUMsdUJBQXVCLEVBQUUsMEJBQTBCLENBQUM7S0FDM0QsTUFBTSxDQUFDLHNCQUFhLENBQUMsQ0FBQztBQUV6QixlQUFlO0FBQ2YsT0FBTztLQUNKLE9BQU8sQ0FBQyxNQUFNLENBQUM7S0FDZixLQUFLLENBQUMsSUFBSSxDQUFDO0tBQ1gsV0FBVyxDQUFDLHdCQUF3QixDQUFDO0tBQ3JDLE1BQU0sQ0FBQyxrQkFBVyxDQUFDLENBQUM7QUFFdkIsaUJBQWlCO0FBQ2pCLE9BQU87S0FDSixPQUFPLENBQUMsa0JBQWtCLENBQUM7S0FDM0IsV0FBVyxDQUFDLGtDQUFrQyxDQUFDO0tBQy9DLE1BQU0sQ0FBQyxzQkFBYSxDQUFDLENBQUM7QUFFekIsZ0JBQWdCO0FBQ2hCLE9BQU87S0FDSixPQUFPLENBQUMsT0FBTyxDQUFDO0tBQ2hCLFdBQVcsQ0FBQyx5Q0FBeUMsQ0FBQztLQUN0RCxNQUFNLENBQUMsb0JBQVksQ0FBQyxDQUFDO0FBRXhCLGlCQUFpQjtBQUNqQixPQUFPO0tBQ0osT0FBTyxDQUFDLFFBQVEsQ0FBQztLQUNqQixXQUFXLENBQUMsc0NBQXNDLENBQUM7S0FDbkQsTUFBTSxDQUFDLHNCQUFhLENBQUMsQ0FBQztBQUV6QixrQkFBa0I7QUFDbEIsT0FBTztLQUNKLE9BQU8sQ0FBQyxTQUFTLENBQUM7S0FDbEIsV0FBVyxDQUFDLCtCQUErQixDQUFDO0tBQzVDLE1BQU0sQ0FBQyx3QkFBYyxDQUFDLENBQUM7QUFFMUIsK0JBQStCO0FBQy9CLE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIiMhL3Vzci9iaW4vZW52IG5vZGVcblxuaW1wb3J0IHsgQ29tbWFuZCB9IGZyb20gJ2NvbW1hbmRlcic7XG5pbXBvcnQgeyBpbml0Q29tbWFuZCB9IGZyb20gJy4vY29tbWFuZHMvaW5pdCc7XG5pbXBvcnQgeyBkZXBsb3lDb21tYW5kIH0gZnJvbSAnLi9jb21tYW5kcy9kZXBsb3knO1xuaW1wb3J0IHsgbGlzdENvbW1hbmQgfSBmcm9tICcuL2NvbW1hbmRzL2xpc3QnO1xuaW1wb3J0IHsgc3RhdHVzQ29tbWFuZCB9IGZyb20gJy4vY29tbWFuZHMvc3RhdHVzJztcbmltcG9ydCB7IHJlc2V0Q29tbWFuZCB9IGZyb20gJy4vY29tbWFuZHMvcmVzZXQnO1xuaW1wb3J0IHsgZG9tYWluQ29tbWFuZCB9IGZyb20gJy4vY29tbWFuZHMvZG9tYWluJztcbmltcG9ydCB7IG1ldHJpY3NDb21tYW5kIH0gZnJvbSAnLi9jb21tYW5kcy9tZXRyaWNzJztcblxuY29uc3QgcHJvZ3JhbSA9IG5ldyBDb21tYW5kKCk7XG5cbnByb2dyYW1cbiAgLm5hbWUoJ3J1bndheScpXG4gIC5kZXNjcmlwdGlvbignQ0xJIHRvb2wgZm9yIGRlcGxveWluZyBwcm9qZWN0cyB0byBSdW53YXknKVxuICAudmVyc2lvbignMC4wLjEnKTtcblxuLy8gSW5pdCBjb21tYW5kXG5wcm9ncmFtXG4gIC5jb21tYW5kKCdpbml0JylcbiAgLmRlc2NyaXB0aW9uKCdDb25maWd1cmUgdGhlIFJ1bndheSBDTEknKVxuICAub3B0aW9uKCctcywgLS1zZXJ2ZXIgPHVybD4nLCAnU2VydmVyIFVSTCcpXG4gIC5hY3Rpb24oaW5pdENvbW1hbmQpO1xuXG4vLyBEZXBsb3kgY29tbWFuZFxucHJvZ3JhbVxuICAuY29tbWFuZCgnZGVwbG95JylcbiAgLmRlc2NyaXB0aW9uKCdEZXBsb3kgdGhlIGN1cnJlbnQgcHJvamVjdCcpXG4gIC5vcHRpb24oJy1uLCAtLW5hbWUgPG5hbWU+JywgJ1Byb2plY3QgbmFtZScpXG4gIC5vcHRpb24oJy10LCAtLXR5cGUgPHR5cGU+JywgJ1Byb2plY3QgdHlwZSAocmVhY3QsIG5leHQsIG5vZGUpJylcbiAgLm9wdGlvbignLXYsIC0tdmVyc2lvbiA8dmVyc2lvbj4nLCAnVmVyc2lvbiBzdHJpbmcnKVxuICAub3B0aW9uKCctLWJ1aWxkLWxvY2FsJywgJ0J1aWxkIGxvY2FsbHkgYmVmb3JlIHVwbG9hZGluZyAoZGVmYXVsdCknKVxuICAub3B0aW9uKCctLWJ1aWxkLXNlcnZlcicsICdVcGxvYWQgc291cmNlIGFuZCBidWlsZCBvbiBzZXJ2ZXInKVxuICAub3B0aW9uKCctZSwgLS1lbnYtZmlsZSA8cGF0aD4nLCAnUGF0aCB0byBlbnZpcm9ubWVudCBmaWxlJylcbiAgLmFjdGlvbihkZXBsb3lDb21tYW5kKTtcblxuLy8gTGlzdCBjb21tYW5kXG5wcm9ncmFtXG4gIC5jb21tYW5kKCdsaXN0JylcbiAgLmFsaWFzKCdscycpXG4gIC5kZXNjcmlwdGlvbignTGlzdCBkZXBsb3llZCBwcm9qZWN0cycpXG4gIC5hY3Rpb24obGlzdENvbW1hbmQpO1xuXG4vLyBTdGF0dXMgY29tbWFuZFxucHJvZ3JhbVxuICAuY29tbWFuZCgnc3RhdHVzIDxwcm9qZWN0PicpXG4gIC5kZXNjcmlwdGlvbignR2V0IHN0YXR1cyBvZiBhIGRlcGxveWVkIHByb2plY3QnKVxuICAuYWN0aW9uKHN0YXR1c0NvbW1hbmQpO1xuXG4vLyBSZXNldCBjb21tYW5kXG5wcm9ncmFtXG4gIC5jb21tYW5kKCdyZXNldCcpXG4gIC5kZXNjcmlwdGlvbignUmVzZXQgQ0xJIGNvbmZpZ3VyYXRpb24gYW5kIHJlLXJ1biBpbml0JylcbiAgLmFjdGlvbihyZXNldENvbW1hbmQpO1xuXG4vLyBEb21haW4gY29tbWFuZFxucHJvZ3JhbVxuICAuY29tbWFuZCgnZG9tYWluJylcbiAgLmRlc2NyaXB0aW9uKCdDb25maWd1cmUgc2VydmVyIGRvbWFpbiAoc2FtZSBhcyBVSSknKVxuICAuYWN0aW9uKGRvbWFpbkNvbW1hbmQpO1xuXG4vLyBNZXRyaWNzIGNvbW1hbmRcbnByb2dyYW1cbiAgLmNvbW1hbmQoJ21ldHJpY3MnKVxuICAuZGVzY3JpcHRpb24oJ0Rpc3BsYXkgc2VydmVyIHN5c3RlbSBtZXRyaWNzJylcbiAgLmFjdGlvbihtZXRyaWNzQ29tbWFuZCk7XG5cbi8vIFBhcnNlIGNvbW1hbmQgbGluZSBhcmd1bWVudHNcbnByb2dyYW0ucGFyc2UoKTtcbiJdfQ==
82
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBRUEseUNBQW9DO0FBQ3BDLDBDQUE4QztBQUM5Qyw4Q0FBa0Q7QUFDbEQsMENBQThDO0FBQzlDLDhDQUFrRDtBQUNsRCw0Q0FBZ0Q7QUFDaEQsOENBQWtEO0FBQ2xELGdEQUFvRDtBQUNwRCw0Q0FBZ0Q7QUFDaEQsOENBQWtEO0FBQ2xELDBDQUE4QztBQUU5QyxNQUFNLE9BQU8sR0FBRyxJQUFJLG1CQUFPLEVBQUUsQ0FBQztBQUU5QixPQUFPO0tBQ0osSUFBSSxDQUFDLFFBQVEsQ0FBQztLQUNkLFdBQVcsQ0FBQywyQ0FBMkMsQ0FBQztLQUN4RCxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7QUFFcEIsZUFBZTtBQUNmLE9BQU87S0FDSixPQUFPLENBQUMsTUFBTSxDQUFDO0tBQ2YsV0FBVyxDQUFDLDBCQUEwQixDQUFDO0tBQ3ZDLE1BQU0sQ0FBQyxvQkFBb0IsRUFBRSxZQUFZLENBQUM7S0FDMUMsTUFBTSxDQUFDLGtCQUFXLENBQUMsQ0FBQztBQUV2QixvREFBb0Q7QUFDcEQsT0FBTztLQUNKLE9BQU8sQ0FBQyxPQUFPLENBQUM7S0FDaEIsV0FBVyxDQUFDLHdDQUF3QyxDQUFDO0tBQ3JELE1BQU0sQ0FBQyxvQkFBWSxDQUFDLENBQUM7QUFFeEIsaUJBQWlCO0FBQ2pCLE9BQU87S0FDSixPQUFPLENBQUMsUUFBUSxDQUFDO0tBQ2pCLFdBQVcsQ0FBQyw0QkFBNEIsQ0FBQztLQUN6QyxNQUFNLENBQUMsbUJBQW1CLEVBQUUsY0FBYyxDQUFDO0tBQzNDLE1BQU0sQ0FBQyxtQkFBbUIsRUFBRSxrQ0FBa0MsQ0FBQztLQUMvRCxNQUFNLENBQUMseUJBQXlCLEVBQUUsZ0JBQWdCLENBQUM7S0FDbkQsTUFBTSxDQUFDLGVBQWUsRUFBRSwwQ0FBMEMsQ0FBQztLQUNuRSxNQUFNLENBQUMsZ0JBQWdCLEVBQUUsbUNBQW1DLENBQUM7S0FDN0QsTUFBTSxDQUFDLHVCQUF1QixFQUFFLDBCQUEwQixDQUFDO0tBQzNELE1BQU0sQ0FBQyxzQkFBYSxDQUFDLENBQUM7QUFFekIsb0RBQW9EO0FBQ3BELE9BQU87S0FDSixPQUFPLENBQUMsUUFBUSxDQUFDO0tBQ2pCLFdBQVcsQ0FBQyxxQ0FBcUMsQ0FBQztLQUNsRCxNQUFNLENBQUMsc0JBQWEsQ0FBQyxDQUFDO0FBRXpCLGVBQWU7QUFDZixPQUFPO0tBQ0osT0FBTyxDQUFDLE1BQU0sQ0FBQztLQUNmLEtBQUssQ0FBQyxJQUFJLENBQUM7S0FDWCxXQUFXLENBQUMsd0JBQXdCLENBQUM7S0FDckMsTUFBTSxDQUFDLGtCQUFXLENBQUMsQ0FBQztBQUV2QixpQkFBaUI7QUFDakIsT0FBTztLQUNKLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQztLQUMzQixXQUFXLENBQUMsa0NBQWtDLENBQUM7S0FDL0MsTUFBTSxDQUFDLHNCQUFhLENBQUMsQ0FBQztBQUV6QixlQUFlO0FBQ2YsT0FBTztLQUNKLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQztLQUN6QixXQUFXLENBQUMsa0NBQWtDLENBQUM7S0FDL0MsTUFBTSxDQUFDLHFCQUFxQixFQUFFLHlCQUF5QixFQUFFLEtBQUssQ0FBQztLQUMvRCxNQUFNLENBQUMsZUFBZSxFQUFFLDhCQUE4QixFQUFFLEtBQUssQ0FBQztLQUM5RCxNQUFNLENBQUMsa0JBQVcsQ0FBQyxDQUFDO0FBRXZCLGdCQUFnQjtBQUNoQixPQUFPO0tBQ0osT0FBTyxDQUFDLE9BQU8sQ0FBQztLQUNoQixXQUFXLENBQUMseUNBQXlDLENBQUM7S0FDdEQsTUFBTSxDQUFDLG9CQUFZLENBQUMsQ0FBQztBQUV4QixpQkFBaUI7QUFDakIsT0FBTztLQUNKLE9BQU8sQ0FBQyxRQUFRLENBQUM7S0FDakIsV0FBVyxDQUFDLHNDQUFzQyxDQUFDO0tBQ25ELE1BQU0sQ0FBQyxzQkFBYSxDQUFDLENBQUM7QUFFekIsa0JBQWtCO0FBQ2xCLE9BQU87S0FDSixPQUFPLENBQUMsU0FBUyxDQUFDO0tBQ2xCLFdBQVcsQ0FBQywrQkFBK0IsQ0FBQztLQUM1QyxNQUFNLENBQUMsd0JBQWMsQ0FBQyxDQUFDO0FBRTFCLCtCQUErQjtBQUMvQixPQUFPLENBQUMsS0FBSyxFQUFFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIjIS91c3IvYmluL2VudiBub2RlXG5cbmltcG9ydCB7IENvbW1hbmQgfSBmcm9tICdjb21tYW5kZXInO1xuaW1wb3J0IHsgaW5pdENvbW1hbmQgfSBmcm9tICcuL2NvbW1hbmRzL2luaXQnO1xuaW1wb3J0IHsgZGVwbG95Q29tbWFuZCB9IGZyb20gJy4vY29tbWFuZHMvZGVwbG95JztcbmltcG9ydCB7IGxpc3RDb21tYW5kIH0gZnJvbSAnLi9jb21tYW5kcy9saXN0JztcbmltcG9ydCB7IHN0YXR1c0NvbW1hbmQgfSBmcm9tICcuL2NvbW1hbmRzL3N0YXR1cyc7XG5pbXBvcnQgeyByZXNldENvbW1hbmQgfSBmcm9tICcuL2NvbW1hbmRzL3Jlc2V0JztcbmltcG9ydCB7IGRvbWFpbkNvbW1hbmQgfSBmcm9tICcuL2NvbW1hbmRzL2RvbWFpbic7XG5pbXBvcnQgeyBtZXRyaWNzQ29tbWFuZCB9IGZyb20gJy4vY29tbWFuZHMvbWV0cmljcyc7XG5pbXBvcnQgeyBsb2dpbkNvbW1hbmQgfSBmcm9tICcuL2NvbW1hbmRzL2xvZ2luJztcbmltcG9ydCB7IHVwZGF0ZUNvbW1hbmQgfSBmcm9tICcuL2NvbW1hbmRzL3VwZGF0ZSc7XG5pbXBvcnQgeyBsb2dzQ29tbWFuZCB9IGZyb20gJy4vY29tbWFuZHMvbG9ncyc7XG5cbmNvbnN0IHByb2dyYW0gPSBuZXcgQ29tbWFuZCgpO1xuXG5wcm9ncmFtXG4gIC5uYW1lKCdydW53YXknKVxuICAuZGVzY3JpcHRpb24oJ0NMSSB0b29sIGZvciBkZXBsb3lpbmcgcHJvamVjdHMgdG8gUnVud2F5JylcbiAgLnZlcnNpb24oJzAuMC4xJyk7XG5cbi8vIEluaXQgY29tbWFuZFxucHJvZ3JhbVxuICAuY29tbWFuZCgnaW5pdCcpXG4gIC5kZXNjcmlwdGlvbignQ29uZmlndXJlIHRoZSBSdW53YXkgQ0xJJylcbiAgLm9wdGlvbignLXMsIC0tc2VydmVyIDx1cmw+JywgJ1NlcnZlciBVUkwnKVxuICAuYWN0aW9uKGluaXRDb21tYW5kKTtcblxuLy8gTG9naW4gY29tbWFuZCAocmUtYXV0aGVudGljYXRlIHdpdGhvdXQgZnVsbCBpbml0KVxucHJvZ3JhbVxuICAuY29tbWFuZCgnbG9naW4nKVxuICAuZGVzY3JpcHRpb24oJ1JlLWF1dGhlbnRpY2F0ZSB3aXRoIHRoZSBSdW53YXkgc2VydmVyJylcbiAgLmFjdGlvbihsb2dpbkNvbW1hbmQpO1xuXG4vLyBEZXBsb3kgY29tbWFuZFxucHJvZ3JhbVxuICAuY29tbWFuZCgnZGVwbG95JylcbiAgLmRlc2NyaXB0aW9uKCdEZXBsb3kgdGhlIGN1cnJlbnQgcHJvamVjdCcpXG4gIC5vcHRpb24oJy1uLCAtLW5hbWUgPG5hbWU+JywgJ1Byb2plY3QgbmFtZScpXG4gIC5vcHRpb24oJy10LCAtLXR5cGUgPHR5cGU+JywgJ1Byb2plY3QgdHlwZSAocmVhY3QsIG5leHQsIG5vZGUpJylcbiAgLm9wdGlvbignLXYsIC0tdmVyc2lvbiA8dmVyc2lvbj4nLCAnVmVyc2lvbiBzdHJpbmcnKVxuICAub3B0aW9uKCctLWJ1aWxkLWxvY2FsJywgJ0J1aWxkIGxvY2FsbHkgYmVmb3JlIHVwbG9hZGluZyAoZGVmYXVsdCknKVxuICAub3B0aW9uKCctLWJ1aWxkLXNlcnZlcicsICdVcGxvYWQgc291cmNlIGFuZCBidWlsZCBvbiBzZXJ2ZXInKVxuICAub3B0aW9uKCctZSwgLS1lbnYtZmlsZSA8cGF0aD4nLCAnUGF0aCB0byBlbnZpcm9ubWVudCBmaWxlJylcbiAgLmFjdGlvbihkZXBsb3lDb21tYW5kKTtcblxuLy8gVXBkYXRlIGNvbW1hbmQgKHVwZGF0ZSBleGlzdGluZyBkZXBsb3llZCBwcm9qZWN0KVxucHJvZ3JhbVxuICAuY29tbWFuZCgndXBkYXRlJylcbiAgLmRlc2NyaXB0aW9uKCdVcGRhdGUgYW4gZXhpc3RpbmcgZGVwbG95ZWQgcHJvamVjdCcpXG4gIC5hY3Rpb24odXBkYXRlQ29tbWFuZCk7XG5cbi8vIExpc3QgY29tbWFuZFxucHJvZ3JhbVxuICAuY29tbWFuZCgnbGlzdCcpXG4gIC5hbGlhcygnbHMnKVxuICAuZGVzY3JpcHRpb24oJ0xpc3QgZGVwbG95ZWQgcHJvamVjdHMnKVxuICAuYWN0aW9uKGxpc3RDb21tYW5kKTtcblxuLy8gU3RhdHVzIGNvbW1hbmRcbnByb2dyYW1cbiAgLmNvbW1hbmQoJ3N0YXR1cyA8cHJvamVjdD4nKVxuICAuZGVzY3JpcHRpb24oJ0dldCBzdGF0dXMgb2YgYSBkZXBsb3llZCBwcm9qZWN0JylcbiAgLmFjdGlvbihzdGF0dXNDb21tYW5kKTtcblxuLy8gTG9ncyBjb21tYW5kXG5wcm9ncmFtXG4gIC5jb21tYW5kKCdsb2dzIFtwcm9qZWN0XScpXG4gIC5kZXNjcmlwdGlvbignVmlldyBsb2dzIGZvciBhIGRlcGxveWVkIHByb2plY3QnKVxuICAub3B0aW9uKCctbiwgLS1saW5lcyA8Y291bnQ+JywgJ051bWJlciBvZiBsaW5lcyB0byBzaG93JywgJzEwMCcpXG4gIC5vcHRpb24oJy0tdHlwZSA8dHlwZT4nLCAnTG9nIHR5cGU6IG91dCwgZXJyb3IsIG9yIGFsbCcsICdhbGwnKVxuICAuYWN0aW9uKGxvZ3NDb21tYW5kKTtcblxuLy8gUmVzZXQgY29tbWFuZFxucHJvZ3JhbVxuICAuY29tbWFuZCgncmVzZXQnKVxuICAuZGVzY3JpcHRpb24oJ1Jlc2V0IENMSSBjb25maWd1cmF0aW9uIGFuZCByZS1ydW4gaW5pdCcpXG4gIC5hY3Rpb24ocmVzZXRDb21tYW5kKTtcblxuLy8gRG9tYWluIGNvbW1hbmRcbnByb2dyYW1cbiAgLmNvbW1hbmQoJ2RvbWFpbicpXG4gIC5kZXNjcmlwdGlvbignQ29uZmlndXJlIHNlcnZlciBkb21haW4gKHNhbWUgYXMgVUkpJylcbiAgLmFjdGlvbihkb21haW5Db21tYW5kKTtcblxuLy8gTWV0cmljcyBjb21tYW5kXG5wcm9ncmFtXG4gIC5jb21tYW5kKCdtZXRyaWNzJylcbiAgLmRlc2NyaXB0aW9uKCdEaXNwbGF5IHNlcnZlciBzeXN0ZW0gbWV0cmljcycpXG4gIC5hY3Rpb24obWV0cmljc0NvbW1hbmQpO1xuXG4vLyBQYXJzZSBjb21tYW5kIGxpbmUgYXJndW1lbnRzXG5wcm9ncmFtLnBhcnNlKCk7XG5cbiJdfQ==
@@ -15,6 +15,7 @@ export declare class PackageService {
15
15
  private addSourceFiles;
16
16
  private addBuildArtifacts;
17
17
  private addDirectory;
18
+ private addDirectoryFiltered;
18
19
  private addLockFile;
19
20
  cleanup(zipPath: string): void;
20
21
  }
@@ -75,8 +75,8 @@ class PackageService {
75
75
  logger_1.logger.dim(`Including build output from ${buildOutputDir}`);
76
76
  break;
77
77
  case 'next':
78
- // Include .next directory
79
- this.addDirectory(archive, path_1.default.join(projectPath, '.next'), '.next');
78
+ // Include .next directory but exclude cache (can be 200+ MB of build cache)
79
+ this.addDirectoryFiltered(archive, path_1.default.join(projectPath, '.next'), '.next', ['cache/**']);
80
80
  // Include public directory if exists
81
81
  const publicDir = path_1.default.join(projectPath, 'public');
82
82
  if (fs_1.default.existsSync(publicDir)) {
@@ -139,6 +139,15 @@ class PackageService {
139
139
  archive.directory(dirPath, destPath);
140
140
  }
141
141
  }
142
+ addDirectoryFiltered(archive, dirPath, destPath, ignore) {
143
+ if (fs_1.default.existsSync(dirPath)) {
144
+ archive.glob('**/*', {
145
+ cwd: dirPath,
146
+ ignore,
147
+ dot: true,
148
+ }, { prefix: destPath });
149
+ }
150
+ }
142
151
  addLockFile(archive, projectPath) {
143
152
  const lockFiles = ['package-lock.json', 'yarn.lock', 'pnpm-lock.yaml'];
144
153
  for (const lockFile of lockFiles) {
@@ -157,4 +166,4 @@ class PackageService {
157
166
  }
158
167
  exports.PackageService = PackageService;
159
168
  exports.packageService = new PackageService();
160
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFja2FnZVNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc2VydmljZXMvcGFja2FnZVNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsNENBQW9CO0FBQ3BCLGdEQUF3QjtBQUN4Qix3REFBZ0M7QUFFaEMsNENBQXlDO0FBZXpDLE1BQWEsY0FBYztJQUN6QixLQUFLLENBQUMsT0FBTyxDQUFDLE9BQXVCO1FBQ25DLE1BQU0sRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLGNBQWMsRUFBRSxhQUFhLEVBQUUsR0FBRyxPQUFPLENBQUM7UUFFNUUsTUFBTSxPQUFPLEdBQUcsY0FBSSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsb0JBQW9CLENBQUMsQ0FBQztRQUU3RCxpQ0FBaUM7UUFDakMsSUFBSSxZQUFFLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDM0IsWUFBRSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUN6QixDQUFDO1FBRUQsZUFBTSxDQUFDLElBQUksQ0FBQyxnQ0FBZ0MsQ0FBQyxDQUFDO1FBRTlDLE1BQU0sTUFBTSxHQUFHLFlBQUUsQ0FBQyxpQkFBaUIsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUM3QyxNQUFNLE9BQU8sR0FBRyxJQUFBLGtCQUFRLEVBQUMsS0FBSyxFQUFFO1lBQzlCLElBQUksRUFBRSxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsRUFBRSxzQkFBc0I7U0FDM0MsQ0FBQyxDQUFDO1FBRUgsT0FBTyxJQUFJLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsRUFBRTtZQUNyQyxNQUFNLENBQUMsRUFBRSxDQUFDLE9BQU8sRUFBRSxHQUFHLEVBQUU7Z0JBQ3RCLE1BQU0sSUFBSSxHQUFHLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQztnQkFDL0IsZUFBTSxDQUFDLE9BQU8sQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLEdB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QVUsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1lBQzNCLFlBQUUsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDekIsQ0FBQztJQUNILENBQUM7Q0FDRjtBQXJMRCx3Q0FxTEM7QUFFWSxRQUFBLGNBQWMsR0FBRyxJQUFJLGNBQWMsRUFBRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGZzIGZyb20gJ2ZzJztcbmltcG9ydCBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0IGFyY2hpdmVyIGZyb20gJ2FyY2hpdmVyJztcbmltcG9ydCB7IFByb2plY3RUeXBlIH0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHsgbG9nZ2VyIH0gZnJvbSAnLi4vdXRpbHMvbG9nZ2VyJztcblxuZXhwb3J0IGludGVyZmFjZSBQYWNrYWdlT3B0aW9ucyB7XG4gIHByb2plY3RQYXRoOiBzdHJpbmc7XG4gIHByb2plY3RUeXBlOiBQcm9qZWN0VHlwZTtcbiAgYnVpbGRPdXRwdXREaXI6IHN0cmluZztcbiAgaW5jbHVkZVNvdXJjZTogYm9vbGVhbjsgLy8gRm9yIHNlcnZlci1idWlsZCBtb2RlXG4gIGVudkZpbGU/OiBzdHJpbmc7IC8vIFBhdGggdG8gZW52IGZpbGUgdG8gaW5jbHVkZSAoZm9yIE5vZGUuanMgcHJvamVjdHMpXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUGFja2FnZVJlc3VsdCB7XG4gIHppcFBhdGg6IHN0cmluZztcbiAgc2l6ZTogbnVtYmVyO1xufVxuXG5leHBvcnQgY2xhc3MgUGFja2FnZVNlcnZpY2Uge1xuICBhc3luYyBwYWNrYWdlKG9wdGlvbnM6IFBhY2thZ2VPcHRpb25zKTogUHJvbWlzZTxQYWNrYWdlUmVzdWx0PiB7XG4gICAgY29uc3QgeyBwcm9qZWN0UGF0aCwgcHJvamVjdFR5cGUsIGJ1aWxkT3V0cHV0RGlyLCBpbmNsdWRlU291cmNlIH0gPSBvcHRpb25zO1xuXG4gICAgY29uc3QgemlwUGF0aCA9IHBhdGguam9pbihwcm9qZWN0UGF0aCwgJy5ydW53YXktZGVwbG95LnppcCcpO1xuXG4gICAgLy8gUmVtb3ZlIGV4aXN0aW5nIHppcCBpZiBwcmVzZW50XG4gICAgaWYgKGZzLmV4aXN0c1N5bmMoemlwUGF0aCkpIHtcbiAgICAgIGZzLnVubGlua1N5bmMoemlwUGF0aCk7XG4gICAgfVxuXG4gICAgbG9nZ2VyLmluZm8oJ0NyZWF0aW5nIGRlcGxveW1lbnQgcGFja2FnZS4uLicpO1xuXG4gICAgY29uc3Qgb3V0cHV0ID0gZnMuY3JlYXRlV3JpdGVTdHJlYW0oemlwUGF0aCk7XG4gICAgY29uc3QgYXJjaGl2ZSA9IGFyY2hpdmVyKCd6aXAnLCB7XG4gICAgICB6bGliOiB7IGxldmVsOiA5IH0sIC8vIE1heGltdW0gY29tcHJlc3Npb25cbiAgICB9KTtcblxuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICBvdXRwdXQub24oJ2Nsb3NlJywgKCkgPT4ge1xuICAgICAgICBjb25zdCBzaXplID0gYXJjaGl2ZS5wb2ludGVyKCk7XG4gICAgICAgIGxvZ2dlci5zdWNjZXNzKGBQYWNrYWdlIGNyZWF0ZWQ6ICR7KHNpemUgLyAxMDI0IC8gMTAyNCkudG9GaXhlZCgyKX0gTUJgKTtcbiAgICAgICAgcmVzb2x2ZSh7IHppcFBhdGgsIHNpemUgfSk7XG4gICAgICB9KTtcblxuICAgICAgYXJjaGl2ZS5vbignZXJyb3InLCAoZXJyKSA9PiB7XG4gICAgICAgIHJlamVjdChlcnIpO1xuICAgICAgfSk7XG5cbiAgICAgIGFyY2hpdmUucGlwZShvdXRwdXQpO1xuXG4gICAgICBpZiAoaW5jbHVkZVNvdXJjZSkge1xuICAgICAgICAvLyBTZXJ2ZXItYnVpbGQgbW9kZTogaW5jbHVkZSBzb3VyY2UgZmlsZXNcbiAgICAgICAgdGhpcy5hZGRTb3VyY2VGaWxlcyhhcmNoaXZlLCBwcm9qZWN0UGF0aCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBMb2NhbC1idWlsZCBtb2RlOiBpbmNsdWRlIG9ubHkgYnVpbGQgYXJ0aWZhY3RzXG4gICAgICAgIHRoaXMuYWRkQnVpbGRBcnRpZmFjdHMoYXJjaGl2ZSwgcHJvamVjdFBhdGgsIHByb2plY3RUeXBlLCBidWlsZE91dHB1dERpciwgb3B0aW9ucy5lbnZGaWxlKTtcbiAgICAgIH1cblxuICAgICAgYXJjaGl2ZS5maW5hbGl6ZSgpO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBhZGRTb3VyY2VGaWxlcyhhcmNoaXZlOiBhcmNoaXZlci5BcmNoaXZlciwgcHJvamVjdFBhdGg6IHN0cmluZyk6IHZvaWQge1xuICAgIC8vIEluY2x1ZGUgYWxsIGZpbGVzIGV4Y2VwdCBub2RlX21vZHVsZXMsIC5naXQsIGFuZCBidWlsZCBvdXRwdXRzXG4gICAgY29uc3QgaWdub3JlUGF0dGVybnMgPSBbXG4gICAgICAnbm9kZV9tb2R1bGVzLyoqJyxcbiAgICAgICcuZ2l0LyoqJyxcbiAgICAgICcubmV4dC8qKicsXG4gICAgICAnZGlzdC8qKicsXG4gICAgICAnYnVpbGQvKionLFxuICAgICAgJy5ydW53YXktZGVwbG95LnppcCcsXG4gICAgICAnKi5sb2cnLFxuICAgICAgJy5lbnYubG9jYWwnLFxuICAgICAgJy5lbnYuKi5sb2NhbCcsXG4gICAgXTtcblxuICAgIGFyY2hpdmUuZ2xvYignKiovKicsIHtcbiAgICAgIGN3ZDogcHJvamVjdFBhdGgsXG4gICAgICBpZ25vcmU6IGlnbm9yZVBhdHRlcm5zLFxuICAgICAgZG90OiB0cnVlLCAvLyBJbmNsdWRlIGRvdGZpbGVzXG4gICAgfSk7XG5cbiAgICBsb2dnZXIuZGltKCdJbmNsdWRpbmcgc291cmNlIGZpbGVzIGZvciBzZXJ2ZXItc2lkZSBidWlsZCcpO1xuICB9XG5cbiAgcHJpdmF0ZSBhZGRCdWlsZEFydGlmYWN0cyhcbiAgICBhcmNoaXZlOiBhcmNoaXZlci5BcmNoaXZlcixcbiAgICBwcm9qZWN0UGF0aDogc3RyaW5nLFxuICAgIHByb2plY3RUeXBlOiBQcm9qZWN0VHlwZSxcbiAgICBidWlsZE91dHB1dERpcjogc3RyaW5nLFxuICAgIGVudkZpbGU/OiBzdHJpbmdcbiAgKTogdm9pZCB7XG4gICAgLy8gSW5jbHVkZSBwYWNrYWdlLmpzb24gaWYgaXQgZXhpc3RzIChvcHRpb25hbCBmb3Igc3RhdGljIHNpdGVzKVxuICAgIGNvbnN0IHBhY2thZ2VKc29uUGF0aCA9IHBhdGguam9pbihwcm9qZWN0UGF0aCwgJ3BhY2thZ2UuanNvbicpO1xuICAgIGlmIChmcy5leGlzdHNTeW5jKHBhY2thZ2VKc29uUGF0aCkpIHtcbiAgICAgIGFyY2hpdmUuZmlsZShwYWNrYWdlSnNvblBhdGgsIHsgbmFtZTogJ3BhY2thZ2UuanNvbicgfSk7XG4gICAgfVxuXG4gICAgc3dpdGNoIChwcm9qZWN0VHlwZSkge1xuICAgICAgY2FzZSAncmVhY3QnOlxuICAgICAgICAvLyBJbmNsdWRlIGJ1aWx0IHN0YXRpYyBmaWxlc1xuICAgICAgICB0aGlzLmFkZERpcmVjdG9yeShhcmNoaXZlLCBidWlsZE91dHB1dERpciwgJ2Rpc3QnKTtcbiAgICAgICAgbG9nZ2VyLmRpbShgSW5jbHVkaW5nIGJ1aWxkIG91dHB1dCBmcm9tICR7YnVpbGRPdXRwdXREaXJ9YCk7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlICduZXh0JzpcbiAgICAgICAgLy8gSW5jbHVkZSAubmV4dCBkaXJlY3RvcnlcbiAgICAgICAgdGhpcy5hZGREaXJlY3RvcnkoYXJjaGl2ZSwgcGF0aC5qb2luKHByb2plY3RQYXRoLCAnLm5leHQnKSwgJy5uZXh0Jyk7XG5cbiAgICAgICAgLy8gSW5jbHVkZSBwdWJsaWMgZGlyZWN0b3J5IGlmIGV4aXN0c1xuICAgICAgICBjb25zdCBwdWJsaWNEaXIgPSBwYXRoLmpvaW4ocHJvamVjdFBhdGgsICdwdWJsaWMnKTtcbiAgICAgICAgaWYgKGZzLmV4aXN0c1N5bmMocHVibGljRGlyKSkge1xuICAgICAgICAgIHRoaXMuYWRkRGlyZWN0b3J5KGFyY2hpdmUsIHB1YmxpY0RpciwgJ3B1YmxpYycpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gSW5jbHVkZSBuZXh0LmNvbmZpZy5qcyBpZiBleGlzdHNcbiAgICAgICAgZm9yIChjb25zdCBjb25maWdGaWxlIG9mIFsnbmV4dC5jb25maWcuanMnLCAnbmV4dC5jb25maWcubWpzJywgJ25leHQuY29uZmlnLnRzJ10pIHtcbiAgICAgICAgICBjb25zdCBjb25maWdQYXRoID0gcGF0aC5qb2luKHByb2plY3RQYXRoLCBjb25maWdGaWxlKTtcbiAgICAgICAgICBpZiAoZnMuZXhpc3RzU3luYyhjb25maWdQYXRoKSkge1xuICAgICAgICAgICAgYXJjaGl2ZS5maWxlKGNvbmZpZ1BhdGgsIHsgbmFtZTogY29uZmlnRmlsZSB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvLyBJbmNsdWRlIHBhY2thZ2UtbG9jay5qc29uIG9yIHlhcm4ubG9jayBmb3IgcHJvZHVjdGlvbiBkZXBlbmRlbmNpZXNcbiAgICAgICAgdGhpcy5hZGRMb2NrRmlsZShhcmNoaXZlLCBwcm9qZWN0UGF0aCk7XG5cbiAgICAgICAgbG9nZ2VyLmRpbSgnSW5jbHVkaW5nIE5leHQuanMgYnVpbGQgYXJ0aWZhY3RzJyk7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlICdub2RlJzpcbiAgICAgICAgLy8gRm9yIE5vZGUuanMsIGluY2x1ZGUgZXZlcnl0aGluZyBleGNlcHQgbm9kZV9tb2R1bGVzIGFuZCBlbnYgZmlsZXNcbiAgICAgICAgY29uc3Qgbm9kZUlnbm9yZVBhdHRlcm5zID0gW1xuICAgICAgICAgICdub2RlX21vZHVsZXMvKionLFxuICAgICAgICAgICcuZ2l0LyoqJyxcbiAgICAgICAgICAnLnJ1bndheS1kZXBsb3kuemlwJyxcbiAgICAgICAgICAnKi5sb2cnLFxuICAgICAgICAgICcuZW52JywgICAgICAvLyBFeGNsdWRlIGRlZmF1bHQgLmVudiAod2UnbGwgYWRkIHNwZWNpZmllZCBvbmUgZXhwbGljaXRseSlcbiAgICAgICAgICAnLmVudi4qJyxcbiAgICAgICAgXTtcblxuICAgICAgICBhcmNoaXZlLmdsb2IoJyoqLyonLCB7XG4gICAgICAgICAgY3dkOiBwcm9qZWN0UGF0aCxcbiAgICAgICAgICBpZ25vcmU6IG5vZGVJZ25vcmVQYXR0ZXJucyxcbiAgICAgICAgICBkb3Q6IHRydWUsXG4gICAgICAgIH0pO1xuXG4gICAgICAgIC8vIEluY2x1ZGUgdGhlIHNwZWNpZmllZCBlbnYgZmlsZSBhcyAuZW52XG4gICAgICAgIGlmIChlbnZGaWxlICYmIGZzLmV4aXN0c1N5bmMoZW52RmlsZSkpIHtcbiAgICAgICAgICBhcmNoaXZlLmZpbGUoZW52RmlsZSwgeyBuYW1lOiAnLmVudicgfSk7XG4gICAgICAgICAgbG9nZ2VyLmRpbSgnSW5jbHVkaW5nIGVudmlyb25tZW50IGZpbGUnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGxvZ2dlci5kaW0oJ0luY2x1ZGluZyBOb2RlLmpzIHByb2plY3QgZmlsZXMnKTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgJ3N0YXRpYyc6XG4gICAgICAgIC8vIEZvciBzdGF0aWMgc2l0ZXMsIGluY2x1ZGUgSFRNTCwgQ1NTLCBKUywgYW5kIGNvbW1vbiBhc3NldHNcbiAgICAgICAgY29uc3Qgc3RhdGljSWdub3JlUGF0dGVybnMgPSBbXG4gICAgICAgICAgJ25vZGVfbW9kdWxlcy8qKicsXG4gICAgICAgICAgJy5naXQvKionLFxuICAgICAgICAgICcucnVud2F5LWRlcGxveS56aXAnLFxuICAgICAgICAgICcqLmxvZycsXG4gICAgICAgICAgJy5lbnYnLFxuICAgICAgICAgICcuZW52LionLFxuICAgICAgICBdO1xuXG4gICAgICAgIGFyY2hpdmUuZ2xvYignKiovKicsIHtcbiAgICAgICAgICBjd2Q6IHByb2plY3RQYXRoLFxuICAgICAgICAgIGlnbm9yZTogc3RhdGljSWdub3JlUGF0dGVybnMsXG4gICAgICAgICAgZG90OiBmYWxzZSwgLy8gRG9uJ3QgaW5jbHVkZSBkb3RmaWxlcyBmb3Igc3RhdGljIHNpdGVzXG4gICAgICAgIH0pO1xuXG4gICAgICAgIGxvZ2dlci5kaW0oJ0luY2x1ZGluZyBzdGF0aWMgc2l0ZSBmaWxlcycpO1xuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFkZERpcmVjdG9yeShhcmNoaXZlOiBhcmNoaXZlci5BcmNoaXZlciwgZGlyUGF0aDogc3RyaW5nLCBkZXN0UGF0aDogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKGZzLmV4aXN0c1N5bmMoZGlyUGF0aCkpIHtcbiAgICAgIGFyY2hpdmUuZGlyZWN0b3J5KGRpclBhdGgsIGRlc3RQYXRoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFkZExvY2tGaWxlKGFyY2hpdmU6IGFyY2hpdmVyLkFyY2hpdmVyLCBwcm9qZWN0UGF0aDogc3RyaW5nKTogdm9pZCB7XG4gICAgY29uc3QgbG9ja0ZpbGVzID0gWydwYWNrYWdlLWxvY2suanNvbicsICd5YXJuLmxvY2snLCAncG5wbS1sb2NrLnlhbWwnXTtcblxuICAgIGZvciAoY29uc3QgbG9ja0ZpbGUgb2YgbG9ja0ZpbGVzKSB7XG4gICAgICBjb25zdCBsb2NrUGF0aCA9IHBhdGguam9pbihwcm9qZWN0UGF0aCwgbG9ja0ZpbGUpO1xuICAgICAgaWYgKGZzLmV4aXN0c1N5bmMobG9ja1BhdGgpKSB7XG4gICAgICAgIGFyY2hpdmUuZmlsZShsb2NrUGF0aCwgeyBuYW1lOiBsb2NrRmlsZSB9KTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgY2xlYW51cCh6aXBQYXRoOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAoZnMuZXhpc3RzU3luYyh6aXBQYXRoKSkge1xuICAgICAgZnMudW5saW5rU3luYyh6aXBQYXRoKTtcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IHBhY2thZ2VTZXJ2aWNlID0gbmV3IFBhY2thZ2VTZXJ2aWNlKCk7XG4iXX0=
169
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFja2FnZVNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc2VydmljZXMvcGFja2FnZVNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsNENBQW9CO0FBQ3BCLGdEQUF3QjtBQUN4Qix3REFBZ0M7QUFFaEMsNENBQXlDO0FBZXpDLE1BQWEsY0FBYztJQUN6QixLQUFLLENBQUMsT0FBTyxDQUFDLE9BQXVCO1FBQ25DLE1BQU0sRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLGNBQWMsRUFBRSxhQUFhLEVBQUUsR0FBRyxPQUFPLENBQUM7UUFFNUUsTUFBTSxPQUFPLEdBQUcsY0FBSSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsb0JBQW9CLENBQUMsQ0FBQztRQUU3RCxpQ0FBaUM7UUFDakMsSUFBSSxZQUFFLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDM0IsWUFBRSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUN6QixDQUFDO1FBRUQsZUFBTSxDQUFDLElBQUksQ0FBQyxnQ0FBZ0MsQ0FBQyxDQUFDO1FBRTlDLE1BQU0sTUFBTSxHQUFHLFlBQUUsQ0FBQyxpQkFBaUIsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUM3QyxNQUFNLE9BQU8sR0FBRyxJQUFBLGtCQUFRLEVBQUMsS0FBSyxFQUFFO1lBQzlCLElBQUksRUFBRSxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsRUFBRSxzQkFBc0I7U0FDM0MsQ0FBQyxDQUFDO1FBRUgsT0FBTyxJQUFJLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsRUFBRTtZQUNyQyxNQUFNLENBQUMsRUFBRSxDQUFDLE9BQU8sRUFBRSxHQUFHLEVBQUU7Z0JBQ3RCLE1BQU0sSUFBSSxHQUFHLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQztnQkFDL0IsZUFBTSxDQUFDLE9BQU8sQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLEdB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QUFTLEVBQUUsQ0FBQztZQUNqQyxNQUFNLFFBQVEsR0FBRyxjQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxRQUFRLENBQUMsQ0FBQztZQUNsRCxJQUFJLFlBQUUsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztnQkFDNUIsT0FBTyxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQztnQkFDM0MsTUFBTTtZQUNSLENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztJQUVELE9BQU8sQ0FBQyxPQUFlO1FBQ3JCLElBQUksWUFBRSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1lBQzNCLFlBQUUsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDekIsQ0FBQztJQUNILENBQUM7Q0FDRjtBQXpNRCx3Q0F5TUM7QUFFWSxRQUFBLGNBQWMsR0FBRyxJQUFJLGNBQWMsRUFBRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGZzIGZyb20gJ2ZzJztcbmltcG9ydCBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0IGFyY2hpdmVyIGZyb20gJ2FyY2hpdmVyJztcbmltcG9ydCB7IFByb2plY3RUeXBlIH0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHsgbG9nZ2VyIH0gZnJvbSAnLi4vdXRpbHMvbG9nZ2VyJztcblxuZXhwb3J0IGludGVyZmFjZSBQYWNrYWdlT3B0aW9ucyB7XG4gIHByb2plY3RQYXRoOiBzdHJpbmc7XG4gIHByb2plY3RUeXBlOiBQcm9qZWN0VHlwZTtcbiAgYnVpbGRPdXRwdXREaXI6IHN0cmluZztcbiAgaW5jbHVkZVNvdXJjZTogYm9vbGVhbjsgLy8gRm9yIHNlcnZlci1idWlsZCBtb2RlXG4gIGVudkZpbGU/OiBzdHJpbmc7IC8vIFBhdGggdG8gZW52IGZpbGUgdG8gaW5jbHVkZSAoZm9yIE5vZGUuanMgcHJvamVjdHMpXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUGFja2FnZVJlc3VsdCB7XG4gIHppcFBhdGg6IHN0cmluZztcbiAgc2l6ZTogbnVtYmVyO1xufVxuXG5leHBvcnQgY2xhc3MgUGFja2FnZVNlcnZpY2Uge1xuICBhc3luYyBwYWNrYWdlKG9wdGlvbnM6IFBhY2thZ2VPcHRpb25zKTogUHJvbWlzZTxQYWNrYWdlUmVzdWx0PiB7XG4gICAgY29uc3QgeyBwcm9qZWN0UGF0aCwgcHJvamVjdFR5cGUsIGJ1aWxkT3V0cHV0RGlyLCBpbmNsdWRlU291cmNlIH0gPSBvcHRpb25zO1xuXG4gICAgY29uc3QgemlwUGF0aCA9IHBhdGguam9pbihwcm9qZWN0UGF0aCwgJy5ydW53YXktZGVwbG95LnppcCcpO1xuXG4gICAgLy8gUmVtb3ZlIGV4aXN0aW5nIHppcCBpZiBwcmVzZW50XG4gICAgaWYgKGZzLmV4aXN0c1N5bmMoemlwUGF0aCkpIHtcbiAgICAgIGZzLnVubGlua1N5bmMoemlwUGF0aCk7XG4gICAgfVxuXG4gICAgbG9nZ2VyLmluZm8oJ0NyZWF0aW5nIGRlcGxveW1lbnQgcGFja2FnZS4uLicpO1xuXG4gICAgY29uc3Qgb3V0cHV0ID0gZnMuY3JlYXRlV3JpdGVTdHJlYW0oemlwUGF0aCk7XG4gICAgY29uc3QgYXJjaGl2ZSA9IGFyY2hpdmVyKCd6aXAnLCB7XG4gICAgICB6bGliOiB7IGxldmVsOiA5IH0sIC8vIE1heGltdW0gY29tcHJlc3Npb25cbiAgICB9KTtcblxuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICBvdXRwdXQub24oJ2Nsb3NlJywgKCkgPT4ge1xuICAgICAgICBjb25zdCBzaXplID0gYXJjaGl2ZS5wb2ludGVyKCk7XG4gICAgICAgIGxvZ2dlci5zdWNjZXNzKGBQYWNrYWdlIGNyZWF0ZWQ6ICR7KHNpemUgLyAxMDI0IC8gMTAyNCkudG9GaXhlZCgyKX0gTUJgKTtcbiAgICAgICAgcmVzb2x2ZSh7IHppcFBhdGgsIHNpemUgfSk7XG4gICAgICB9KTtcblxuICAgICAgYXJjaGl2ZS5vbignZXJyb3InLCAoZXJyKSA9PiB7XG4gICAgICAgIHJlamVjdChlcnIpO1xuICAgICAgfSk7XG5cbiAgICAgIGFyY2hpdmUucGlwZShvdXRwdXQpO1xuXG4gICAgICBpZiAoaW5jbHVkZVNvdXJjZSkge1xuICAgICAgICAvLyBTZXJ2ZXItYnVpbGQgbW9kZTogaW5jbHVkZSBzb3VyY2UgZmlsZXNcbiAgICAgICAgdGhpcy5hZGRTb3VyY2VGaWxlcyhhcmNoaXZlLCBwcm9qZWN0UGF0aCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBMb2NhbC1idWlsZCBtb2RlOiBpbmNsdWRlIG9ubHkgYnVpbGQgYXJ0aWZhY3RzXG4gICAgICAgIHRoaXMuYWRkQnVpbGRBcnRpZmFjdHMoYXJjaGl2ZSwgcHJvamVjdFBhdGgsIHByb2plY3RUeXBlLCBidWlsZE91dHB1dERpciwgb3B0aW9ucy5lbnZGaWxlKTtcbiAgICAgIH1cblxuICAgICAgYXJjaGl2ZS5maW5hbGl6ZSgpO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBhZGRTb3VyY2VGaWxlcyhhcmNoaXZlOiBhcmNoaXZlci5BcmNoaXZlciwgcHJvamVjdFBhdGg6IHN0cmluZyk6IHZvaWQge1xuICAgIC8vIEluY2x1ZGUgYWxsIGZpbGVzIGV4Y2VwdCBub2RlX21vZHVsZXMsIC5naXQsIGFuZCBidWlsZCBvdXRwdXRzXG4gICAgY29uc3QgaWdub3JlUGF0dGVybnMgPSBbXG4gICAgICAnbm9kZV9tb2R1bGVzLyoqJyxcbiAgICAgICcuZ2l0LyoqJyxcbiAgICAgICcubmV4dC8qKicsXG4gICAgICAnZGlzdC8qKicsXG4gICAgICAnYnVpbGQvKionLFxuICAgICAgJy5ydW53YXktZGVwbG95LnppcCcsXG4gICAgICAnKi5sb2cnLFxuICAgICAgJy5lbnYubG9jYWwnLFxuICAgICAgJy5lbnYuKi5sb2NhbCcsXG4gICAgXTtcblxuICAgIGFyY2hpdmUuZ2xvYignKiovKicsIHtcbiAgICAgIGN3ZDogcHJvamVjdFBhdGgsXG4gICAgICBpZ25vcmU6IGlnbm9yZVBhdHRlcm5zLFxuICAgICAgZG90OiB0cnVlLCAvLyBJbmNsdWRlIGRvdGZpbGVzXG4gICAgfSk7XG5cbiAgICBsb2dnZXIuZGltKCdJbmNsdWRpbmcgc291cmNlIGZpbGVzIGZvciBzZXJ2ZXItc2lkZSBidWlsZCcpO1xuICB9XG5cbiAgcHJpdmF0ZSBhZGRCdWlsZEFydGlmYWN0cyhcbiAgICBhcmNoaXZlOiBhcmNoaXZlci5BcmNoaXZlcixcbiAgICBwcm9qZWN0UGF0aDogc3RyaW5nLFxuICAgIHByb2plY3RUeXBlOiBQcm9qZWN0VHlwZSxcbiAgICBidWlsZE91dHB1dERpcjogc3RyaW5nLFxuICAgIGVudkZpbGU/OiBzdHJpbmdcbiAgKTogdm9pZCB7XG4gICAgLy8gSW5jbHVkZSBwYWNrYWdlLmpzb24gaWYgaXQgZXhpc3RzIChvcHRpb25hbCBmb3Igc3RhdGljIHNpdGVzKVxuICAgIGNvbnN0IHBhY2thZ2VKc29uUGF0aCA9IHBhdGguam9pbihwcm9qZWN0UGF0aCwgJ3BhY2thZ2UuanNvbicpO1xuICAgIGlmIChmcy5leGlzdHNTeW5jKHBhY2thZ2VKc29uUGF0aCkpIHtcbiAgICAgIGFyY2hpdmUuZmlsZShwYWNrYWdlSnNvblBhdGgsIHsgbmFtZTogJ3BhY2thZ2UuanNvbicgfSk7XG4gICAgfVxuXG4gICAgc3dpdGNoIChwcm9qZWN0VHlwZSkge1xuICAgICAgY2FzZSAncmVhY3QnOlxuICAgICAgICAvLyBJbmNsdWRlIGJ1aWx0IHN0YXRpYyBmaWxlc1xuICAgICAgICB0aGlzLmFkZERpcmVjdG9yeShhcmNoaXZlLCBidWlsZE91dHB1dERpciwgJ2Rpc3QnKTtcbiAgICAgICAgbG9nZ2VyLmRpbShgSW5jbHVkaW5nIGJ1aWxkIG91dHB1dCBmcm9tICR7YnVpbGRPdXRwdXREaXJ9YCk7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlICduZXh0JzpcbiAgICAgICAgLy8gSW5jbHVkZSAubmV4dCBkaXJlY3RvcnkgYnV0IGV4Y2x1ZGUgY2FjaGUgKGNhbiBiZSAyMDArIE1CIG9mIGJ1aWxkIGNhY2hlKVxuICAgICAgICB0aGlzLmFkZERpcmVjdG9yeUZpbHRlcmVkKFxuICAgICAgICAgIGFyY2hpdmUsXG4gICAgICAgICAgcGF0aC5qb2luKHByb2plY3RQYXRoLCAnLm5leHQnKSxcbiAgICAgICAgICAnLm5leHQnLFxuICAgICAgICAgIFsnY2FjaGUvKionXVxuICAgICAgICApO1xuXG4gICAgICAgIC8vIEluY2x1ZGUgcHVibGljIGRpcmVjdG9yeSBpZiBleGlzdHNcbiAgICAgICAgY29uc3QgcHVibGljRGlyID0gcGF0aC5qb2luKHByb2plY3RQYXRoLCAncHVibGljJyk7XG4gICAgICAgIGlmIChmcy5leGlzdHNTeW5jKHB1YmxpY0RpcikpIHtcbiAgICAgICAgICB0aGlzLmFkZERpcmVjdG9yeShhcmNoaXZlLCBwdWJsaWNEaXIsICdwdWJsaWMnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEluY2x1ZGUgbmV4dC5jb25maWcuanMgaWYgZXhpc3RzXG4gICAgICAgIGZvciAoY29uc3QgY29uZmlnRmlsZSBvZiBbJ25leHQuY29uZmlnLmpzJywgJ25leHQuY29uZmlnLm1qcycsICduZXh0LmNvbmZpZy50cyddKSB7XG4gICAgICAgICAgY29uc3QgY29uZmlnUGF0aCA9IHBhdGguam9pbihwcm9qZWN0UGF0aCwgY29uZmlnRmlsZSk7XG4gICAgICAgICAgaWYgKGZzLmV4aXN0c1N5bmMoY29uZmlnUGF0aCkpIHtcbiAgICAgICAgICAgIGFyY2hpdmUuZmlsZShjb25maWdQYXRoLCB7IG5hbWU6IGNvbmZpZ0ZpbGUgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gSW5jbHVkZSBwYWNrYWdlLWxvY2suanNvbiBvciB5YXJuLmxvY2sgZm9yIHByb2R1Y3Rpb24gZGVwZW5kZW5jaWVzXG4gICAgICAgIHRoaXMuYWRkTG9ja0ZpbGUoYXJjaGl2ZSwgcHJvamVjdFBhdGgpO1xuXG4gICAgICAgIGxvZ2dlci5kaW0oJ0luY2x1ZGluZyBOZXh0LmpzIGJ1aWxkIGFydGlmYWN0cycpO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAnbm9kZSc6XG4gICAgICAgIC8vIEZvciBOb2RlLmpzLCBpbmNsdWRlIGV2ZXJ5dGhpbmcgZXhjZXB0IG5vZGVfbW9kdWxlcyBhbmQgZW52IGZpbGVzXG4gICAgICAgIGNvbnN0IG5vZGVJZ25vcmVQYXR0ZXJucyA9IFtcbiAgICAgICAgICAnbm9kZV9tb2R1bGVzLyoqJyxcbiAgICAgICAgICAnLmdpdC8qKicsXG4gICAgICAgICAgJy5ydW53YXktZGVwbG95LnppcCcsXG4gICAgICAgICAgJyoubG9nJyxcbiAgICAgICAgICAnLmVudicsICAgICAgLy8gRXhjbHVkZSBkZWZhdWx0IC5lbnYgKHdlJ2xsIGFkZCBzcGVjaWZpZWQgb25lIGV4cGxpY2l0bHkpXG4gICAgICAgICAgJy5lbnYuKicsXG4gICAgICAgIF07XG5cbiAgICAgICAgYXJjaGl2ZS5nbG9iKCcqKi8qJywge1xuICAgICAgICAgIGN3ZDogcHJvamVjdFBhdGgsXG4gICAgICAgICAgaWdub3JlOiBub2RlSWdub3JlUGF0dGVybnMsXG4gICAgICAgICAgZG90OiB0cnVlLFxuICAgICAgICB9KTtcblxuICAgICAgICAvLyBJbmNsdWRlIHRoZSBzcGVjaWZpZWQgZW52IGZpbGUgYXMgLmVudlxuICAgICAgICBpZiAoZW52RmlsZSAmJiBmcy5leGlzdHNTeW5jKGVudkZpbGUpKSB7XG4gICAgICAgICAgYXJjaGl2ZS5maWxlKGVudkZpbGUsIHsgbmFtZTogJy5lbnYnIH0pO1xuICAgICAgICAgIGxvZ2dlci5kaW0oJ0luY2x1ZGluZyBlbnZpcm9ubWVudCBmaWxlJyk7XG4gICAgICAgIH1cblxuICAgICAgICBsb2dnZXIuZGltKCdJbmNsdWRpbmcgTm9kZS5qcyBwcm9qZWN0IGZpbGVzJyk7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlICdzdGF0aWMnOlxuICAgICAgICAvLyBGb3Igc3RhdGljIHNpdGVzLCBpbmNsdWRlIEhUTUwsIENTUywgSlMsIGFuZCBjb21tb24gYXNzZXRzXG4gICAgICAgIGNvbnN0IHN0YXRpY0lnbm9yZVBhdHRlcm5zID0gW1xuICAgICAgICAgICdub2RlX21vZHVsZXMvKionLFxuICAgICAgICAgICcuZ2l0LyoqJyxcbiAgICAgICAgICAnLnJ1bndheS1kZXBsb3kuemlwJyxcbiAgICAgICAgICAnKi5sb2cnLFxuICAgICAgICAgICcuZW52JyxcbiAgICAgICAgICAnLmVudi4qJyxcbiAgICAgICAgXTtcblxuICAgICAgICBhcmNoaXZlLmdsb2IoJyoqLyonLCB7XG4gICAgICAgICAgY3dkOiBwcm9qZWN0UGF0aCxcbiAgICAgICAgICBpZ25vcmU6IHN0YXRpY0lnbm9yZVBhdHRlcm5zLFxuICAgICAgICAgIGRvdDogZmFsc2UsIC8vIERvbid0IGluY2x1ZGUgZG90ZmlsZXMgZm9yIHN0YXRpYyBzaXRlc1xuICAgICAgICB9KTtcblxuICAgICAgICBsb2dnZXIuZGltKCdJbmNsdWRpbmcgc3RhdGljIHNpdGUgZmlsZXMnKTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhZGREaXJlY3RvcnkoYXJjaGl2ZTogYXJjaGl2ZXIuQXJjaGl2ZXIsIGRpclBhdGg6IHN0cmluZywgZGVzdFBhdGg6IHN0cmluZyk6IHZvaWQge1xuICAgIGlmIChmcy5leGlzdHNTeW5jKGRpclBhdGgpKSB7XG4gICAgICBhcmNoaXZlLmRpcmVjdG9yeShkaXJQYXRoLCBkZXN0UGF0aCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhZGREaXJlY3RvcnlGaWx0ZXJlZChcbiAgICBhcmNoaXZlOiBhcmNoaXZlci5BcmNoaXZlcixcbiAgICBkaXJQYXRoOiBzdHJpbmcsXG4gICAgZGVzdFBhdGg6IHN0cmluZyxcbiAgICBpZ25vcmU6IHN0cmluZ1tdXG4gICk6IHZvaWQge1xuICAgIGlmIChmcy5leGlzdHNTeW5jKGRpclBhdGgpKSB7XG4gICAgICBhcmNoaXZlLmdsb2IoJyoqLyonLCB7XG4gICAgICAgIGN3ZDogZGlyUGF0aCxcbiAgICAgICAgaWdub3JlLFxuICAgICAgICBkb3Q6IHRydWUsXG4gICAgICB9LCB7IHByZWZpeDogZGVzdFBhdGggfSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhZGRMb2NrRmlsZShhcmNoaXZlOiBhcmNoaXZlci5BcmNoaXZlciwgcHJvamVjdFBhdGg6IHN0cmluZyk6IHZvaWQge1xuICAgIGNvbnN0IGxvY2tGaWxlcyA9IFsncGFja2FnZS1sb2NrLmpzb24nLCAneWFybi5sb2NrJywgJ3BucG0tbG9jay55YW1sJ107XG5cbiAgICBmb3IgKGNvbnN0IGxvY2tGaWxlIG9mIGxvY2tGaWxlcykge1xuICAgICAgY29uc3QgbG9ja1BhdGggPSBwYXRoLmpvaW4ocHJvamVjdFBhdGgsIGxvY2tGaWxlKTtcbiAgICAgIGlmIChmcy5leGlzdHNTeW5jKGxvY2tQYXRoKSkge1xuICAgICAgICBhcmNoaXZlLmZpbGUobG9ja1BhdGgsIHsgbmFtZTogbG9ja0ZpbGUgfSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGNsZWFudXAoemlwUGF0aDogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKGZzLmV4aXN0c1N5bmMoemlwUGF0aCkpIHtcbiAgICAgIGZzLnVubGlua1N5bmMoemlwUGF0aCk7XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBjb25zdCBwYWNrYWdlU2VydmljZSA9IG5ldyBQYWNrYWdlU2VydmljZSgpO1xuIl19
@@ -0,0 +1,22 @@
1
+ /**
2
+ * React Router patcher for CLI builds.
3
+ * Injects `basename={import.meta.env.BASE_URL}` into <BrowserRouter>
4
+ * so client-side routing works under /app/<project-name>/ subpath.
5
+ *
6
+ * This is a port of the server's reactPatcher.ts adapted for CLI usage.
7
+ */
8
+ export declare class ReactPatcher {
9
+ /**
10
+ * Check if React Router patching is needed and apply it.
11
+ * Returns true if any patching was done.
12
+ */
13
+ static patch(projectPath: string): Promise<boolean>;
14
+ /**
15
+ * Revert the basename patch (restore original state after build).
16
+ */
17
+ static revert(projectPath: string): Promise<void>;
18
+ /**
19
+ * Recursively find the file containing <BrowserRouter> usage.
20
+ */
21
+ private static findRouterFile;
22
+ }
@@ -0,0 +1,111 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.ReactPatcher = void 0;
7
+ const fs_1 = __importDefault(require("fs"));
8
+ const path_1 = __importDefault(require("path"));
9
+ const logger_1 = require("../utils/logger");
10
+ /**
11
+ * React Router patcher for CLI builds.
12
+ * Injects `basename={import.meta.env.BASE_URL}` into <BrowserRouter>
13
+ * so client-side routing works under /app/<project-name>/ subpath.
14
+ *
15
+ * This is a port of the server's reactPatcher.ts adapted for CLI usage.
16
+ */
17
+ class ReactPatcher {
18
+ /**
19
+ * Check if React Router patching is needed and apply it.
20
+ * Returns true if any patching was done.
21
+ */
22
+ static async patch(projectPath) {
23
+ const pkgPath = path_1.default.join(projectPath, 'package.json');
24
+ if (!fs_1.default.existsSync(pkgPath))
25
+ return false;
26
+ const pkg = JSON.parse(fs_1.default.readFileSync(pkgPath, 'utf-8'));
27
+ const deps = { ...pkg.dependencies, ...pkg.devDependencies };
28
+ // Only patch if react-router-dom is a dependency
29
+ if (!deps['react-router-dom'])
30
+ return false;
31
+ logger_1.logger.info('React Router detected — checking for BrowserRouter...');
32
+ const srcDir = path_1.default.join(projectPath, 'src');
33
+ const searchDir = fs_1.default.existsSync(srcDir) ? srcDir : projectPath;
34
+ const routerFile = ReactPatcher.findRouterFile(searchDir);
35
+ if (!routerFile) {
36
+ logger_1.logger.warn('⚠️ React Router detected but <BrowserRouter> usage not found.');
37
+ logger_1.logger.warn(' Ensure you add `basename={import.meta.env.BASE_URL}` to your Router manually.');
38
+ return false;
39
+ }
40
+ let content = fs_1.default.readFileSync(routerFile, 'utf-8');
41
+ // Match <BrowserRouter> that does NOT already have basename
42
+ const tagRegex = /<BrowserRouter(?![^>]*basename=)(\s|>)/;
43
+ if (!tagRegex.test(content)) {
44
+ logger_1.logger.info('React Router already configured (basename prop found)');
45
+ return false;
46
+ }
47
+ // Inject basename
48
+ content = content.replace(/<BrowserRouter(\s|>)/, '<BrowserRouter basename={import.meta.env.BASE_URL}$1');
49
+ fs_1.default.writeFileSync(routerFile, content, 'utf-8');
50
+ logger_1.logger.success(`Patched React Router basename in ${path_1.default.basename(routerFile)}`);
51
+ return true;
52
+ }
53
+ /**
54
+ * Revert the basename patch (restore original state after build).
55
+ */
56
+ static async revert(projectPath) {
57
+ const pkgPath = path_1.default.join(projectPath, 'package.json');
58
+ if (!fs_1.default.existsSync(pkgPath))
59
+ return;
60
+ const pkg = JSON.parse(fs_1.default.readFileSync(pkgPath, 'utf-8'));
61
+ const deps = { ...pkg.dependencies, ...pkg.devDependencies };
62
+ if (!deps['react-router-dom'])
63
+ return;
64
+ const srcDir = path_1.default.join(projectPath, 'src');
65
+ const searchDir = fs_1.default.existsSync(srcDir) ? srcDir : projectPath;
66
+ const routerFile = ReactPatcher.findRouterFile(searchDir);
67
+ if (!routerFile)
68
+ return;
69
+ let content = fs_1.default.readFileSync(routerFile, 'utf-8');
70
+ // Remove the injected basename prop
71
+ const injectedPattern = /<BrowserRouter basename=\{import\.meta\.env\.BASE_URL\}(\s|>)/;
72
+ if (injectedPattern.test(content)) {
73
+ content = content.replace(injectedPattern, '<BrowserRouter$1');
74
+ fs_1.default.writeFileSync(routerFile, content, 'utf-8');
75
+ logger_1.logger.dim('Reverted React Router basename patch');
76
+ }
77
+ }
78
+ /**
79
+ * Recursively find the file containing <BrowserRouter> usage.
80
+ */
81
+ static findRouterFile(dir) {
82
+ try {
83
+ const entries = fs_1.default.readdirSync(dir);
84
+ for (const entry of entries) {
85
+ const fullPath = path_1.default.join(dir, entry);
86
+ const stat = fs_1.default.statSync(fullPath);
87
+ if (stat.isDirectory()) {
88
+ // Skip non-source directories
89
+ if (entry.startsWith('.') || entry === 'node_modules' || entry === 'dist' ||
90
+ entry === 'build' || entry === 'vendor' || entry === 'public')
91
+ continue;
92
+ const found = ReactPatcher.findRouterFile(fullPath);
93
+ if (found)
94
+ return found;
95
+ }
96
+ else if (/^(main|index|layout|home|App)\.(tsx|jsx|js)$/i.test(entry)) {
97
+ const content = fs_1.default.readFileSync(fullPath, 'utf-8');
98
+ if (content.includes('react-router-dom') && content.includes('<BrowserRouter')) {
99
+ return fullPath;
100
+ }
101
+ }
102
+ }
103
+ }
104
+ catch {
105
+ // Ignore read errors
106
+ }
107
+ return null;
108
+ }
109
+ }
110
+ exports.ReactPatcher = ReactPatcher;
111
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVhY3RQYXRjaGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NlcnZpY2VzL3JlYWN0UGF0Y2hlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSw0Q0FBb0I7QUFDcEIsZ0RBQXdCO0FBQ3hCLDRDQUF5QztBQUV6Qzs7Ozs7O0dBTUc7QUFDSCxNQUFhLFlBQVk7SUFDdkI7OztPQUdHO0lBQ0gsTUFBTSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsV0FBbUI7UUFDcEMsTUFBTSxPQUFPLEdBQUcsY0FBSSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsY0FBYyxDQUFDLENBQUM7UUFDdkQsSUFBSSxDQUFDLFlBQUUsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDO1lBQUUsT0FBTyxLQUFLLENBQUM7UUFFMUMsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFFLENBQUMsWUFBWSxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDO1FBQzFELE1BQU0sSUFBSSxHQUFHLEVBQUUsR0FBRyxHQUFHLENBQUMsWUFBWSxFQUFFLEdBQUcsR0FBRyxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBRTdELGlEQUFpRDtRQUNqRCxJQUFJLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDO1lBQUUsT0FBTyxLQUFLLENBQUM7UUFFNUMsZUFBTSxDQUFDLElBQUksQ0FBQyx1REFBdUQsQ0FBQyxDQUFDO1FBRXJFLE1BQU0sTUFBTSxHQUFHLGNBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQzdDLE1BQU0sU0FBUyxHQUFHLFlBQUUsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDO1FBQy9ELE1BQU0sVUFBVSxHQUFHLFlBQVksQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLENBQUM7UUFFMUQsSUFB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QUksQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDO2dCQUN2QyxNQUFNLElBQUksR0FBRyxZQUFFLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDO2dCQUVuQyxJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUUsRUFBRSxDQUFDO29CQUN2Qiw4QkFBOEI7b0JBQzlCLElBQUksS0FBSyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsSUFBSSxLQUFLLEtBQUssY0FBYyxJQUFJLEtBQUssS0FBSyxNQUFNO3dCQUNyRSxLQUFLLEtBQUssT0FBTyxJQUFJLEtBQUssS0FBSyxRQUFRLElBQUksS0FBSyxLQUFLLFFBQVE7d0JBQUUsU0FBUztvQkFDNUUsTUFBTSxLQUFLLEdBQUcsWUFBWSxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsQ0FBQztvQkFDcEQsSUFBSSxLQUFLO3dCQUFFLE9BQU8sS0FBSyxDQUFDO2dCQUMxQixDQUFDO3FCQUFNLElBQUksK0NBQStDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7b0JBQ3ZFLE1BQU0sT0FBTyxHQUFHLFlBQUUsQ0FBQyxZQUFZLENBQUMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxDQUFDO29CQUNuRCxJQUFJLE9BQU8sQ0FBQyxRQUFRLENBQUMsa0JBQWtCLENBQUMsSUFBSSxPQUFPLENBQUMsUUFBUSxDQUFDLGdCQUFnQixDQUFDLEVBQUUsQ0FBQzt3QkFDL0UsT0FBTyxRQUFRLENBQUM7b0JBQ2xCLENBQUM7Z0JBQ0gsQ0FBQztZQUNILENBQUM7UUFDSCxDQUFDO1FBQUMsTUFBTSxDQUFDO1lBQ1AscUJBQXFCO1FBQ3ZCLENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7Q0FDRjtBQXhHRCxvQ0F3R0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgZnMgZnJvbSAnZnMnO1xuaW1wb3J0IHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgeyBsb2dnZXIgfSBmcm9tICcuLi91dGlscy9sb2dnZXInO1xuXG4vKipcbiAqIFJlYWN0IFJvdXRlciBwYXRjaGVyIGZvciBDTEkgYnVpbGRzLlxuICogSW5qZWN0cyBgYmFzZW5hbWU9e2ltcG9ydC5tZXRhLmVudi5CQVNFX1VSTH1gIGludG8gPEJyb3dzZXJSb3V0ZXI+XG4gKiBzbyBjbGllbnQtc2lkZSByb3V0aW5nIHdvcmtzIHVuZGVyIC9hcHAvPHByb2plY3QtbmFtZT4vIHN1YnBhdGguXG4gKiBcbiAqIFRoaXMgaXMgYSBwb3J0IG9mIHRoZSBzZXJ2ZXIncyByZWFjdFBhdGNoZXIudHMgYWRhcHRlZCBmb3IgQ0xJIHVzYWdlLlxuICovXG5leHBvcnQgY2xhc3MgUmVhY3RQYXRjaGVyIHtcbiAgLyoqXG4gICAqIENoZWNrIGlmIFJlYWN0IFJvdXRlciBwYXRjaGluZyBpcyBuZWVkZWQgYW5kIGFwcGx5IGl0LlxuICAgKiBSZXR1cm5zIHRydWUgaWYgYW55IHBhdGNoaW5nIHdhcyBkb25lLlxuICAgKi9cbiAgc3RhdGljIGFzeW5jIHBhdGNoKHByb2plY3RQYXRoOiBzdHJpbmcpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICBjb25zdCBwa2dQYXRoID0gcGF0aC5qb2luKHByb2plY3RQYXRoLCAncGFja2FnZS5qc29uJyk7XG4gICAgaWYgKCFmcy5leGlzdHNTeW5jKHBrZ1BhdGgpKSByZXR1cm4gZmFsc2U7XG5cbiAgICBjb25zdCBwa2cgPSBKU09OLnBhcnNlKGZzLnJlYWRGaWxlU3luYyhwa2dQYXRoLCAndXRmLTgnKSk7XG4gICAgY29uc3QgZGVwcyA9IHsgLi4ucGtnLmRlcGVuZGVuY2llcywgLi4ucGtnLmRldkRlcGVuZGVuY2llcyB9O1xuXG4gICAgLy8gT25seSBwYXRjaCBpZiByZWFjdC1yb3V0ZXItZG9tIGlzIGEgZGVwZW5kZW5jeVxuICAgIGlmICghZGVwc1sncmVhY3Qtcm91dGVyLWRvbSddKSByZXR1cm4gZmFsc2U7XG5cbiAgICBsb2dnZXIuaW5mbygnUmVhY3QgUm91dGVyIGRldGVjdGVkIOKAlCBjaGVja2luZyBmb3IgQnJvd3NlclJvdXRlci4uLicpO1xuXG4gICAgY29uc3Qgc3JjRGlyID0gcGF0aC5qb2luKHByb2plY3RQYXRoLCAnc3JjJyk7XG4gICAgY29uc3Qgc2VhcmNoRGlyID0gZnMuZXhpc3RzU3luYyhzcmNEaXIpID8gc3JjRGlyIDogcHJvamVjdFBhdGg7XG4gICAgY29uc3Qgcm91dGVyRmlsZSA9IFJlYWN0UGF0Y2hlci5maW5kUm91dGVyRmlsZShzZWFyY2hEaXIpO1xuXG4gICAgaWYgKCFyb3V0ZXJGaWxlKSB7XG4gICAgICBsb2dnZXIud2Fybign4pqg77iPICBSZWFjdCBSb3V0ZXIgZGV0ZWN0ZWQgYnV0IDxCcm93c2VyUm91dGVyPiB1c2FnZSBub3QgZm91bmQuJyk7XG4gICAgICBsb2dnZXIud2FybignICAgRW5zdXJlIHlvdSBhZGQgYGJhc2VuYW1lPXtpbXBvcnQubWV0YS5lbnYuQkFTRV9VUkx9YCB0byB5b3VyIFJvdXRlciBtYW51YWxseS4nKTtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBsZXQgY29udGVudCA9IGZzLnJlYWRGaWxlU3luYyhyb3V0ZXJGaWxlLCAndXRmLTgnKTtcblxuICAgIC8vIE1hdGNoIDxCcm93c2VyUm91dGVyPiB0aGF0IGRvZXMgTk9UIGFscmVhZHkgaGF2ZSBiYXNlbmFtZVxuICAgIGNvbnN0IHRhZ1JlZ2V4ID0gLzxCcm93c2VyUm91dGVyKD8hW14+XSpiYXNlbmFtZT0pKFxcc3w+KS87XG5cbiAgICBpZiAoIXRhZ1JlZ2V4LnRlc3QoY29udGVudCkpIHtcbiAgICAgIGxvZ2dlci5pbmZvKCdSZWFjdCBSb3V0ZXIgYWxyZWFkeSBjb25maWd1cmVkIChiYXNlbmFtZSBwcm9wIGZvdW5kKScpO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIC8vIEluamVjdCBiYXNlbmFtZVxuICAgIGNvbnRlbnQgPSBjb250ZW50LnJlcGxhY2UoXG4gICAgICAvPEJyb3dzZXJSb3V0ZXIoXFxzfD4pLyxcbiAgICAgICc8QnJvd3NlclJvdXRlciBiYXNlbmFtZT17aW1wb3J0Lm1ldGEuZW52LkJBU0VfVVJMfSQxJ1xuICAgICk7XG4gICAgZnMud3JpdGVGaWxlU3luYyhyb3V0ZXJGaWxlLCBjb250ZW50LCAndXRmLTgnKTtcbiAgICBsb2dnZXIuc3VjY2VzcyhgUGF0Y2hlZCBSZWFjdCBSb3V0ZXIgYmFzZW5hbWUgaW4gJHtwYXRoLmJhc2VuYW1lKHJvdXRlckZpbGUpfWApO1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldmVydCB0aGUgYmFzZW5hbWUgcGF0Y2ggKHJlc3RvcmUgb3JpZ2luYWwgc3RhdGUgYWZ0ZXIgYnVpbGQpLlxuICAgKi9cbiAgc3RhdGljIGFzeW5jIHJldmVydChwcm9qZWN0UGF0aDogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgcGtnUGF0aCA9IHBhdGguam9pbihwcm9qZWN0UGF0aCwgJ3BhY2thZ2UuanNvbicpO1xuICAgIGlmICghZnMuZXhpc3RzU3luYyhwa2dQYXRoKSkgcmV0dXJuO1xuXG4gICAgY29uc3QgcGtnID0gSlNPTi5wYXJzZShmcy5yZWFkRmlsZVN5bmMocGtnUGF0aCwgJ3V0Zi04JykpO1xuICAgIGNvbnN0IGRlcHMgPSB7IC4uLnBrZy5kZXBlbmRlbmNpZXMsIC4uLnBrZy5kZXZEZXBlbmRlbmNpZXMgfTtcbiAgICBpZiAoIWRlcHNbJ3JlYWN0LXJvdXRlci1kb20nXSkgcmV0dXJuO1xuXG4gICAgY29uc3Qgc3JjRGlyID0gcGF0aC5qb2luKHByb2plY3RQYXRoLCAnc3JjJyk7XG4gICAgY29uc3Qgc2VhcmNoRGlyID0gZnMuZXhpc3RzU3luYyhzcmNEaXIpID8gc3JjRGlyIDogcHJvamVjdFBhdGg7XG4gICAgY29uc3Qgcm91dGVyRmlsZSA9IFJlYWN0UGF0Y2hlci5maW5kUm91dGVyRmlsZShzZWFyY2hEaXIpO1xuXG4gICAgaWYgKCFyb3V0ZXJGaWxlKSByZXR1cm47XG5cbiAgICBsZXQgY29udGVudCA9IGZzLnJlYWRGaWxlU3luYyhyb3V0ZXJGaWxlLCAndXRmLTgnKTtcblxuICAgIC8vIFJlbW92ZSB0aGUgaW5qZWN0ZWQgYmFzZW5hbWUgcHJvcFxuICAgIGNvbnN0IGluamVjdGVkUGF0dGVybiA9IC88QnJvd3NlclJvdXRlciBiYXNlbmFtZT1cXHtpbXBvcnRcXC5tZXRhXFwuZW52XFwuQkFTRV9VUkxcXH0oXFxzfD4pLztcbiAgICBpZiAoaW5qZWN0ZWRQYXR0ZXJuLnRlc3QoY29udGVudCkpIHtcbiAgICAgIGNvbnRlbnQgPSBjb250ZW50LnJlcGxhY2UoaW5qZWN0ZWRQYXR0ZXJuLCAnPEJyb3dzZXJSb3V0ZXIkMScpO1xuICAgICAgZnMud3JpdGVGaWxlU3luYyhyb3V0ZXJGaWxlLCBjb250ZW50LCAndXRmLTgnKTtcbiAgICAgIGxvZ2dlci5kaW0oJ1JldmVydGVkIFJlYWN0IFJvdXRlciBiYXNlbmFtZSBwYXRjaCcpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSZWN1cnNpdmVseSBmaW5kIHRoZSBmaWxlIGNvbnRhaW5pbmcgPEJyb3dzZXJSb3V0ZXI+IHVzYWdlLlxuICAgKi9cbiAgcHJpdmF0ZSBzdGF0aWMgZmluZFJvdXRlckZpbGUoZGlyOiBzdHJpbmcpOiBzdHJpbmcgfCBudWxsIHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgZW50cmllcyA9IGZzLnJlYWRkaXJTeW5jKGRpcik7XG5cbiAgICAgIGZvciAoY29uc3QgZW50cnkgb2YgZW50cmllcykge1xuICAgICAgICBjb25zdCBmdWxsUGF0aCA9IHBhdGguam9pbihkaXIsIGVudHJ5KTtcbiAgICAgICAgY29uc3Qgc3RhdCA9IGZzLnN0YXRTeW5jKGZ1bGxQYXRoKTtcblxuICAgICAgICBpZiAoc3RhdC5pc0RpcmVjdG9yeSgpKSB7XG4gICAgICAgICAgLy8gU2tpcCBub24tc291cmNlIGRpcmVjdG9yaWVzXG4gICAgICAgICAgaWYgKGVudHJ5LnN0YXJ0c1dpdGgoJy4nKSB8fCBlbnRyeSA9PT0gJ25vZGVfbW9kdWxlcycgfHwgZW50cnkgPT09ICdkaXN0JyB8fFxuICAgICAgICAgICAgICBlbnRyeSA9PT0gJ2J1aWxkJyB8fCBlbnRyeSA9PT0gJ3ZlbmRvcicgfHwgZW50cnkgPT09ICdwdWJsaWMnKSBjb250aW51ZTtcbiAgICAgICAgICBjb25zdCBmb3VuZCA9IFJlYWN0UGF0Y2hlci5maW5kUm91dGVyRmlsZShmdWxsUGF0aCk7XG4gICAgICAgICAgaWYgKGZvdW5kKSByZXR1cm4gZm91bmQ7XG4gICAgICAgIH0gZWxzZSBpZiAoL14obWFpbnxpbmRleHxsYXlvdXR8aG9tZXxBcHApXFwuKHRzeHxqc3h8anMpJC9pLnRlc3QoZW50cnkpKSB7XG4gICAgICAgICAgY29uc3QgY29udGVudCA9IGZzLnJlYWRGaWxlU3luYyhmdWxsUGF0aCwgJ3V0Zi04Jyk7XG4gICAgICAgICAgaWYgKGNvbnRlbnQuaW5jbHVkZXMoJ3JlYWN0LXJvdXRlci1kb20nKSAmJiBjb250ZW50LmluY2x1ZGVzKCc8QnJvd3NlclJvdXRlcicpKSB7XG4gICAgICAgICAgICByZXR1cm4gZnVsbFBhdGg7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBjYXRjaCB7XG4gICAgICAvLyBJZ25vcmUgcmVhZCBlcnJvcnNcbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbn1cbiJdfQ==
@@ -20,6 +20,7 @@ export interface DeploymentStatus {
20
20
  progress?: number;
21
21
  logs?: string;
22
22
  error?: string;
23
+ healthWarning?: string;
23
24
  }
24
25
  export interface DeployWarning {
25
26
  level: 'info' | 'warning' | 'critical';
@@ -219,4 +219,4 @@ const createUploadService = () => {
219
219
  return new UploadService();
220
220
  };
221
221
  exports.createUploadService = createUploadService;
222
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBsb2FkU2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zZXJ2aWNlcy91cGxvYWRTZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLGtEQUFrRDtBQUNsRCwwREFBaUM7QUFDakMsNENBQW9CO0FBRXBCLDRDQUE0QztBQUM1Qyw0Q0FBeUM7QUFvRXpDLE1BQWEsYUFBYTtJQUl4QjtRQUNFLE1BQU0sTUFBTSxHQUFHLElBQUEsa0JBQVMsR0FBRSxDQUFDO1FBQzNCLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ3ZDLE1BQU0sSUFBSSxLQUFLLENBQUMsOENBQThDLENBQUMsQ0FBQztRQUNsRSxDQUFDO1FBQ0QsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDO1FBQ2xDLElBQUksQ0FBQyxLQUFLLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQztJQUM1QixDQUFDO0lBRUQsS0FBSyxDQUFDLE1BQU0sQ0FBQyxPQUFzQjtRQUNqQyxNQUFNLEVBQUUsT0FBTyxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxrQkFBa0IsRUFBRSxnQkFBZ0IsRUFBRSxXQUFXLEVBQUUsR0FBRyxPQUFPLENBQUM7UUFFN0gsSUFBSSxDQUFDLFlBQUUsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztZQUM1QixPQUFPO2dCQUNMLE9BQU8sRUFBRSxLQUFLO2dCQUNkLEtBQUssRUFBRSx1QkFBdUIsT0FBTyxFQUFFO2FBQ3hDLENBQUM7UUFDSixDQUFDO1FBRUQsTUFBTSxRQUFRLEdBQUcsSUFBSSxtQkFBUSxFQUFFLENBQUM7UUFDaEMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsWUFBRSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7UUFDdEQsUUFB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QUFPLENBQUM7Z0JBQzdELE9BQU87b0JBQ0wsT0FBTyxFQUFFLEtBQUs7b0JBQ2QsS0FBSyxFQUFFLG9CQUFvQixPQUFPLEVBQUU7aUJBQ3JDLENBQUM7WUFDSixDQUFDO1lBRUQsT0FBTztnQkFDTCxPQUFPLEVBQUUsS0FBSztnQkFDZCxLQUFLLEVBQUUsS0FBSyxZQUFZLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsZUFBZTthQUNoRSxDQUFDO1FBQ0osQ0FBQztJQUNILENBQUM7Q0FDRjtBQXhQRCxzQ0F3UEM7QUFFTSxNQUFNLG1CQUFtQixHQUFHLEdBQWtCLEVBQUU7SUFDckQsT0FBTyxJQUFJLGFBQWEsRUFBRSxDQUFDO0FBQzdCLENBQUMsQ0FBQztBQUZXLFFBQUEsbUJBQW1CLHVCQUU5QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBheGlvcywgeyBBeGlvc1Byb2dyZXNzRXZlbnQgfSBmcm9tICdheGlvcyc7XG5pbXBvcnQgRm9ybURhdGEgZnJvbSAnZm9ybS1kYXRhJztcbmltcG9ydCBmcyBmcm9tICdmcyc7XG5pbXBvcnQgeyBQcm9qZWN0VHlwZSwgQnVpbGRNb2RlIH0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHsgZ2V0Q29uZmlnIH0gZnJvbSAnLi4vdXRpbHMvY29uZmlnJztcbmltcG9ydCB7IGxvZ2dlciB9IGZyb20gJy4uL3V0aWxzL2xvZ2dlcic7XG5cbmV4cG9ydCBpbnRlcmZhY2UgVXBsb2FkT3B0aW9ucyB7XG4gIHppcFBhdGg6IHN0cmluZztcbiAgcHJvamVjdE5hbWU6IHN0cmluZztcbiAgcHJvamVjdFR5cGU6IFByb2plY3RUeXBlO1xuICB2ZXJzaW9uPzogc3RyaW5nO1xuICBidWlsZE1vZGU6IEJ1aWxkTW9kZTtcbiAgY29uZmlybVNlcnZlckJ1aWxkPzogYm9vbGVhbjtcbiAgLy8gRU5WIG11dGFiaWxpdHkgdHJhY2tpbmdcbiAgZGVwbG95bWVudFNvdXJjZT86ICd1aScgfCAnY2xpJztcbiAgZW52SW5qZWN0ZWQ/OiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFVwbG9hZFJlc3VsdCB7XG4gIHN1Y2Nlc3M6IGJvb2xlYW47XG4gIHByb2plY3RJZD86IHN0cmluZztcbiAgZGVwbG95bWVudElkPzogc3RyaW5nO1xuICBlcnJvcj86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEZXBsb3ltZW50U3RhdHVzIHtcbiAgc3RhdHVzOiAncXVldWVkJyB8ICdidWlsZGluZycgfCAnZGVwbG95aW5nJyB8ICdzdWNjZXNzJyB8ICdmYWlsZWQnO1xuICBwcm9ncmVzcz86IG51bWJlcjtcbiAgbG9ncz86IHN0cmluZztcbiAgZXJyb3I/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGVwbG95V2FybmluZyB7XG4gIGxldmVsOiAnaW5mbycgfCAnd2FybmluZycgfCAnY3JpdGljYWwnO1xuICBtZXNzYWdlOiBzdHJpbmc7XG4gIGNvZGU6IHN0cmluZztcbn1cblxuLyoqXG4gKiBBbmFseXNpcyByZXN1bHQgZnJvbSBiYWNrZW5kXG4gKiBCYWNrZW5kIHRydXN0cyB1c2VyLWRlY2xhcmVkIHR5cGUgLSBubyBhdXRvLWRldGVjdGlvblxuICovXG5leHBvcnQgaW50ZXJmYWNlIERlcGxveUFuYWx5c2lzIHtcbiAgLy8gVXNlcidzIGRlY2xhcmVkIHR5cGUgKHRydXN0ZWQsIG5vdCB2YWxpZGF0ZWQpXG4gIGRlY2xhcmVkVHlwZTogUHJvamVjdFR5cGU7XG4gIC8vIFBhY2thZ2Ugc3RhdGVcbiAgaGFzUGFja2FnZUpzb246IGJvb2xlYW47XG4gIGhhc0J1aWxkU2NyaXB0OiBib29sZWFuO1xuICBoYXNTdGFydFNjcmlwdDogYm9vbGVhbjtcbiAgLy8gQnVpbGQgc3RhdGUgKGdlbmVyaWMgZGV0ZWN0aW9uKVxuICBoYXNCdWlsZE91dHB1dDogYm9vbGVhbjtcbiAgYnVpbGRPdXRwdXREaXI6IHN0cmluZyB8IG51bGw7XG4gIHJlcXVpcmVzQnVpbGQ6IGJvb2xlYW47XG4gIC8vIFByZWJ1aWx0IGRldGVjdGlvbiAoZ2VuZXJpYylcbiAgaXNQcmVidWlsdFByb2plY3Q6IGJvb2xlYW47XG4gIC8vIFN0YXRpYyBzaXRlIGRldGVjdGlvbiAoZ2VuZXJpYylcbiAgaXNTdGF0aWNTaXRlOiBib29sZWFuO1xuICAvLyBEZXBsb3ltZW50IHN0cmF0ZWd5XG4gIHN0cmF0ZWd5OiAnc3RhdGljJyB8ICdidWlsZC1hbmQtc2VydmUnIHwgJ3NlcnZlLXByZWJ1aWx0JztcbiAgc2VydmVNZXRob2Q6ICdjYWRkeS1zdGF0aWMnIHwgJ3BtMi1wcm94eSc7XG4gIC8vIFdhcm5pbmdzXG4gIHdhcm5pbmdzOiBEZXBsb3lXYXJuaW5nW107XG4gIHJlcXVpcmVzQ29uZmlybWF0aW9uOiBib29sZWFuO1xuICBjb25maXJtYXRpb25SZWFzb24/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQW5hbHl6ZVJlc3VsdCB7XG4gIHN1Y2Nlc3M6IGJvb2xlYW47XG4gIGFuYWx5c2lzPzogRGVwbG95QW5hbHlzaXM7XG4gIGVycm9yPzogc3RyaW5nO1xufVxuXG5leHBvcnQgY2xhc3MgVXBsb2FkU2VydmljZSB7XG4gIHByaXZhdGUgc2VydmVyVXJsOiBzdHJpbmc7XG4gIHByaXZhdGUgdG9rZW46IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBjb25zdCBjb25maWcgPSBnZXRDb25maWcoKTtcbiAgICBpZiAoIWNvbmZpZy5zZXJ2ZXJVcmwgfHwgIWNvbmZpZy50b2tlbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdDTEkgbm90IGNvbmZpZ3VyZWQuIFJ1biBcInJ1bndheSBpbml0XCIgZmlyc3QuJyk7XG4gICAgfVxuICAgIHRoaXMuc2VydmVyVXJsID0gY29uZmlnLnNlcnZlclVybDtcbiAgICB0aGlzLnRva2VuID0gY29uZmlnLnRva2VuO1xuICB9XG5cbiAgYXN5bmMgdXBsb2FkKG9wdGlvbnM6IFVwbG9hZE9wdGlvbnMpOiBQcm9taXNlPFVwbG9hZFJlc3VsdD4ge1xuICAgIGNvbnN0IHsgemlwUGF0aCwgcHJvamVjdE5hbWUsIHByb2plY3RUeXBlLCB2ZXJzaW9uLCBidWlsZE1vZGUsIGNvbmZpcm1TZXJ2ZXJCdWlsZCwgZGVwbG95bWVudFNvdXJjZSwgZW52SW5qZWN0ZWQgfSA9IG9wdGlvbnM7XG5cbiAgICBpZiAoIWZzLmV4aXN0c1N5bmMoemlwUGF0aCkpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHN1Y2Nlc3M6IGZhbHNlLFxuICAgICAgICBlcnJvcjogYFppcCBmaWxlIG5vdCBmb3VuZDogJHt6aXBQYXRofWAsXG4gICAgICB9O1xuICAgIH1cblxuICAgIGNvbnN0IGZvcm1EYXRhID0gbmV3IEZvcm1EYXRhKCk7XG4gICAgZm9ybURhdGEuYXBwZW5kKCdmaWxlJywgZnMuY3JlYXRlUmVhZFN0cmVhbSh6aXBQYXRoKSk7XG4gICAgZm9ybURhdGEuYXBwZW5kKCduYW1lJywgcHJvamVjdE5hbWUpO1xuICAgIGZvcm1EYXRhLmFwcGVuZCgndHlwZScsIHByb2plY3RUeXBlKTtcbiAgICBmb3JtRGF0YS5hcHBlbmQoJ2J1aWxkTW9kZScsIGJ1aWxkTW9kZSk7XG4gICAgaWYgKHZlcnNpb24pIHtcbiAgICAgIGZvcm1EYXRhLmFwcGVuZCgndmVyc2lvbicsIHZlcnNpb24pO1xuICAgIH1cbiAgICBpZiAoY29uZmlybVNlcnZlckJ1aWxkKSB7XG4gICAgICBmb3JtRGF0YS5hcHBlbmQoJ2NvbmZpcm1TZXJ2ZXJCdWlsZCcsICd0cnVlJyk7XG4gICAgfVxuICAgIC8vIEVOViBtdXRhYmlsaXR5IHRyYWNraW5nXG4gICAgaWYgKGRlcGxveW1lbnRTb3VyY2UpIHtcbiAgICAgIGZvcm1EYXRhLmFwcGVuZCgnZGVwbG95bWVudFNvdXJjZScsIGRlcGxveW1lbnRTb3VyY2UpO1xuICAgIH1cbiAgICBpZiAoZW52SW5qZWN0ZWQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgZm9ybURhdGEuYXBwZW5kKCdlbnZJbmplY3RlZCcsIGVudkluamVjdGVkID8gJ3RydWUnIDogJ2ZhbHNlJyk7XG4gICAgfVxuXG4gICAgLy8gQ2hvb3NlIGVuZHBvaW50IGJhc2VkIG9uIGJ1aWxkIG1vZGVcbiAgICBjb25zdCBlbmRwb2ludCA9IGJ1aWxkTW9kZSA9PT0gJ2xvY2FsJ1xuICAgICAgPyAnL2FwaS9wcm9qZWN0L2RlcGxveS1wcmVidWlsdCdcbiAgICAgIDogJy9hcGkvcHJvamVjdC9kZXBsb3knO1xuXG4gICAgbG9nZ2VyLmluZm8oYFVwbG9hZGluZyB0byAke3RoaXMuc2VydmVyVXJsfSR7ZW5kcG9pbnR9Li4uYCk7XG5cbiAgICB0cnkge1xuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBheGlvcy5wb3N0KFxuICAgICAgICBgJHt0aGlzLnNlcnZlclVybH0ke2VuZHBvaW50fWAsXG4gICAgICAgIGZvcm1EYXRhLFxuICAgICAgICB7XG4gICAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgICAgLi4uZm9ybURhdGEuZ2V0SGVhZGVycygpLFxuICAgICAgICAgICAgQXV0aG9yaXphdGlvbjogYEJlYXJlciAke3RoaXMudG9rZW59YCxcbiAgICAgICAgICB9LFxuICAgICAgICAgIG1heEJvZHlMZW5ndGg6IEluZmluaXR5LFxuICAgICAgICAgIG1heENvbnRlbnRMZW5ndGg6IEluZmluaXR5LFxuICAgICAgICAgIHRpbWVvdXQ6IDMwMDAwMCwgLy8gNSBtaW51dGVzXG4gICAgICAgICAgb25VcGxvYWRQcm9ncmVzczogKHByb2dyZXNzRXZlbnQ6IEF4aW9zUHJvZ3Jlc3NFdmVudCkgPT4ge1xuICAgICAgICAgICAgaWYgKHByb2dyZXNzRXZlbnQudG90YWwpIHtcbiAgICAgICAgICAgICAgY29uc3QgcGVyY2VudCA9IE1hdGgucm91bmQoKHByb2dyZXNzRXZlbnQubG9hZGVkICogMTAwKSAvIHByb2dyZXNzRXZlbnQudG90YWwpO1xuICAgICAgICAgICAgICBwcm9jZXNzLnN0ZG91dC53cml0ZShgXFxyICBVcGxvYWRpbmc6ICR7cGVyY2VudH0lYCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSxcbiAgICAgICAgfVxuICAgICAgKTtcblxuICAgICAgcHJvY2Vzcy5zdGRvdXQud3JpdGUoJ1xcbicpO1xuXG4gICAgICBpZiAocmVzcG9uc2UuZGF0YS5zdWNjZXNzKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgc3VjY2VzczogdHJ1ZSxcbiAgICAgICAgICBwcm9qZWN0SWQ6IHJlc3BvbnNlLmRhdGEuZGF0YT8ucHJvamVjdElkLFxuICAgICAgICAgIGRlcGxveW1lbnRJZDogcmVzcG9uc2UuZGF0YS5kYXRhPy5kZXBsb3ltZW50SWQsXG4gICAgICAgIH07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHN1Y2Nlc3M6IGZhbHNlLFxuICAgICAgICAgIGVycm9yOiByZXNwb25zZS5kYXRhLmVycm9yIHx8ICdVbmtub3duIGVycm9yJyxcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgcHJvY2Vzcy5zdGRvdXQud3JpdGUoJ1xcbicpO1xuXG4gICAgICBpZiAoYXhpb3MuaXNBeGlvc0Vycm9yKGVycm9yKSkge1xuICAgICAgICBjb25zdCBtZXNzYWdlID0gZXJyb3IucmVzcG9uc2U/LmRhdGE/LmVycm9yIHx8IGVycm9yLm1lc3NhZ2U7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgc3VjY2VzczogZmFsc2UsXG4gICAgICAgICAgZXJyb3I6IGBVcGxvYWQgZmFpbGVkOiAke21lc3NhZ2V9YCxcbiAgICAgICAgfTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgc3VjY2VzczogZmFsc2UsXG4gICAgICAgIGVycm9yOiBlcnJvciBpbnN0YW5jZW9mIEVycm9yID8gZXJyb3IubWVzc2FnZSA6ICdVbmtub3duIGVycm9yJyxcbiAgICAgIH07XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgZ2V0RGVwbG95bWVudFN0YXR1cyhkZXBsb3ltZW50SWQ6IHN0cmluZyk6IFByb21pc2U8RGVwbG95bWVudFN0YXR1cz4ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGF4aW9zLmdldChcbiAgICAgICAgYCR7dGhpcy5zZXJ2ZXJVcmx9L2FwaS9wcm9qZWN0L3N0YXR1cy8ke2RlcGxveW1lbnRJZH1gLFxuICAgICAgICB7XG4gICAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgICAgQXV0aG9yaXphdGlvbjogYEJlYXJlciAke3RoaXMudG9rZW59YCxcbiAgICAgICAgICB9LFxuICAgICAgICB9XG4gICAgICApO1xuXG4gICAgICByZXR1cm4gcmVzcG9uc2UuZGF0YS5kYXRhO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBpZiAoYXhpb3MuaXNBeGlvc0Vycm9yKGVycm9yKSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoZXJyb3IucmVzcG9uc2U/LmRhdGE/LmVycm9yIHx8IGVycm9yLm1lc3NhZ2UpO1xuICAgICAgfVxuICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgcG9sbERlcGxveW1lbnRTdGF0dXMoXG4gICAgZGVwbG95bWVudElkOiBzdHJpbmcsXG4gICAgb25VcGRhdGU6IChzdGF0dXM6IERlcGxveW1lbnRTdGF0dXMpID0+IHZvaWQsXG4gICAgdGltZW91dE1zOiBudW1iZXIgPSAzMDAwMDAgLy8gNSBtaW51dGVzXG4gICk6IFByb21pc2U8RGVwbG95bWVudFN0YXR1cz4ge1xuICAgIGNvbnN0IHN0YXJ0VGltZSA9IERhdGUubm93KCk7XG4gICAgY29uc3QgcG9sbEludGVydmFsID0gMjAwMDsgLy8gMiBzZWNvbmRzXG5cbiAgICB3aGlsZSAoRGF0ZS5ub3coKSAtIHN0YXJ0VGltZSA8IHRpbWVvdXRNcykge1xuICAgICAgY29uc3Qgc3RhdHVzID0gYXdhaXQgdGhpcy5nZXREZXBsb3ltZW50U3RhdHVzKGRlcGxveW1lbnRJZCk7XG4gICAgICBvblVwZGF0ZShzdGF0dXMpO1xuXG4gICAgICBpZiAoc3RhdHVzLnN0YXR1cyA9PT0gJ3N1Y2Nlc3MnIHx8IHN0YXR1cy5zdGF0dXMgPT09ICdmYWlsZWQnKSB7XG4gICAgICAgIHJldHVybiBzdGF0dXM7XG4gICAgICB9XG5cbiAgICAgIGF3YWl0IG5ldyBQcm9taXNlKHJlc29sdmUgPT4gc2V0VGltZW91dChyZXNvbHZlLCBwb2xsSW50ZXJ2YWwpKTtcbiAgICB9XG5cbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0RlcGxveW1lbnQgdGltZWQgb3V0Jyk7XG4gIH1cblxuICBhc3luYyBsb2dpbih1c2VybmFtZTogc3RyaW5nLCBwYXNzd29yZDogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBheGlvcy5wb3N0KFxuICAgICAgICBgJHt0aGlzLnNlcnZlclVybH0vYXBpL2F1dGgvbG9naW5gLFxuICAgICAgICB7IHVzZXJuYW1lLCBwYXNzd29yZCB9LFxuICAgICAgICB7XG4gICAgICAgICAgdGltZW91dDogMTAwMDAsXG4gICAgICAgIH1cbiAgICAgICk7XG5cbiAgICAgIGlmIChyZXNwb25zZS5kYXRhLnN1Y2Nlc3MgJiYgcmVzcG9uc2UuZGF0YS5kYXRhPy50b2tlbikge1xuICAgICAgICByZXR1cm4gcmVzcG9uc2UuZGF0YS5kYXRhLnRva2VuO1xuICAgICAgfVxuXG4gICAgICB0aHJvdyBuZXcgRXJyb3IocmVzcG9uc2UuZGF0YS5lcnJvciB8fCAnTG9naW4gZmFpbGVkJyk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGlmIChheGlvcy5pc0F4aW9zRXJyb3IoZXJyb3IpKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihlcnJvci5yZXNwb25zZT8uZGF0YT8uZXJyb3IgfHwgZXJyb3IubWVzc2FnZSk7XG4gICAgICB9XG4gICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG4gIH1cblxuICBhc3luYyBsaXN0UHJvamVjdHMoKTogUHJvbWlzZTxBcnJheTx7IGlkOiBzdHJpbmc7IG5hbWU6IHN0cmluZzsgdHlwZTogUHJvamVjdFR5cGU7IHN0YXR1czogc3RyaW5nIH0+PiB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgYXhpb3MuZ2V0KFxuICAgICAgICBgJHt0aGlzLnNlcnZlclVybH0vYXBpL3Byb2plY3RgLFxuICAgICAgICB7XG4gICAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgICAgQXV0aG9yaXphdGlvbjogYEJlYXJlciAke3RoaXMudG9rZW59YCxcbiAgICAgICAgICB9LFxuICAgICAgICB9XG4gICAgICApO1xuXG4gICAgICByZXR1cm4gcmVzcG9uc2UuZGF0YS5kYXRhIHx8IFtdO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBpZiAoYXhpb3MuaXNBeGlvc0Vycm9yKGVycm9yKSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoZXJyb3IucmVzcG9uc2U/LmRhdGE/LmVycm9yIHx8IGVycm9yLm1lc3NhZ2UpO1xuICAgICAgfVxuICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEFuYWx5emUgYSBwYWNrYWdlIGJlZm9yZSBkZXBsb3ltZW50IHRvIGdldCBzZXJ2ZXIgd2FybmluZ3MgYW5kIHJlY29tbWVuZGF0aW9uc1xuICAgKi9cbiAgLyoqXG4gICAqIEFuYWx5emUgYSBwYWNrYWdlIGJlZm9yZSBkZXBsb3ltZW50XG4gICAqIEBwYXJhbSB6aXBQYXRoIC0gUGF0aCB0byB0aGUgemlwIGZpbGVcbiAgICogQHBhcmFtIGRlY2xhcmVkVHlwZSAtIFJFUVVJUkVEIC0gVXNlci1zZWxlY3RlZCBwcm9qZWN0IHR5cGUgKGJhY2tlbmQgdHJ1c3RzIHRoaXMpXG4gICAqL1xuICBhc3luYyBhbmFseXplUGFja2FnZSh6aXBQYXRoOiBzdHJpbmcsIGRlY2xhcmVkVHlwZTogUHJvamVjdFR5cGUpOiBQcm9taXNlPEFuYWx5emVSZXN1bHQ+IHtcbiAgICBpZiAoIWZzLmV4aXN0c1N5bmMoemlwUGF0aCkpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHN1Y2Nlc3M6IGZhbHNlLFxuICAgICAgICBlcnJvcjogYFppcCBmaWxlIG5vdCBmb3VuZDogJHt6aXBQYXRofWAsXG4gICAgICB9O1xuICAgIH1cblxuICAgIGNvbnN0IGZvcm1EYXRhID0gbmV3IEZvcm1EYXRhKCk7XG4gICAgZm9ybURhdGEuYXBwZW5kKCdmaWxlJywgZnMuY3JlYXRlUmVhZFN0cmVhbSh6aXBQYXRoKSk7XG4gICAgZm9ybURhdGEuYXBwZW5kKCd0eXBlJywgZGVjbGFyZWRUeXBlKTtcblxuICAgIHRyeSB7XG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGF4aW9zLnBvc3QoXG4gICAgICAgIGAke3RoaXMuc2VydmVyVXJsfS9hcGkvcHJvamVjdC9hbmFseXplYCxcbiAgICAgICAgZm9ybURhdGEsXG4gICAgICAgIHtcbiAgICAgICAgICBoZWFkZXJzOiB7XG4gICAgICAgICAgICAuLi5mb3JtRGF0YS5nZXRIZWFkZXJzKCksXG4gICAgICAgICAgICBBdXRob3JpemF0aW9uOiBgQmVhcmVyICR7dGhpcy50b2tlbn1gLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgbWF4Qm9keUxlbmd0aDogSW5maW5pdHksXG4gICAgICAgICAgbWF4Q29udGVudExlbmd0aDogSW5maW5pdHksXG4gICAgICAgICAgdGltZW91dDogNjAwMDAsIC8vIDEgbWludXRlIGZvciBhbmFseXNpc1xuICAgICAgICB9XG4gICAgICApO1xuXG4gICAgICBpZiAocmVzcG9uc2UuZGF0YS5zdWNjZXNzKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgc3VjY2VzczogdHJ1ZSxcbiAgICAgICAgICBhbmFseXNpczogcmVzcG9uc2UuZGF0YS5kYXRhLFxuICAgICAgICB9O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBzdWNjZXNzOiBmYWxzZSxcbiAgICAgICAgICBlcnJvcjogcmVzcG9uc2UuZGF0YS5lcnJvciB8fCAnQW5hbHlzaXMgZmFpbGVkJyxcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgaWYgKGF4aW9zLmlzQXhpb3NFcnJvcihlcnJvcikpIHtcbiAgICAgICAgY29uc3QgbWVzc2FnZSA9IGVycm9yLnJlc3BvbnNlPy5kYXRhPy5lcnJvciB8fCBlcnJvci5tZXNzYWdlO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHN1Y2Nlc3M6IGZhbHNlLFxuICAgICAgICAgIGVycm9yOiBgQW5hbHlzaXMgZmFpbGVkOiAke21lc3NhZ2V9YCxcbiAgICAgICAgfTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgc3VjY2VzczogZmFsc2UsXG4gICAgICAgIGVycm9yOiBlcnJvciBpbnN0YW5jZW9mIEVycm9yID8gZXJyb3IubWVzc2FnZSA6ICdVbmtub3duIGVycm9yJyxcbiAgICAgIH07XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBjb25zdCBjcmVhdGVVcGxvYWRTZXJ2aWNlID0gKCk6IFVwbG9hZFNlcnZpY2UgPT4ge1xuICByZXR1cm4gbmV3IFVwbG9hZFNlcnZpY2UoKTtcbn07XG4iXX0=
222
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBsb2FkU2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zZXJ2aWNlcy91cGxvYWRTZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLGtEQUFrRDtBQUNsRCwwREFBaUM7QUFDakMsNENBQW9CO0FBRXBCLDRDQUE0QztBQUM1Qyw0Q0FBeUM7QUFxRXpDLE1BQWEsYUFBYTtJQUl4QjtRQUNFLE1BQU0sTUFBTSxHQUFHLElBQUEsa0JBQVMsR0FBRSxDQUFDO1FBQzNCLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ3ZDLE1BQU0sSUFBSSxLQUFLLENBQUMsOENBQThDLENBQUMsQ0FBQztRQUNsRSxDQUFDO1FBQ0QsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDO1FBQ2xDLElBQUksQ0FBQyxLQUFLLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQztJQUM1QixDQUFDO0lBRUQsS0FBSyxDQUFDLE1BQU0sQ0FBQyxPQUFzQjtRQUNqQyxNQUFNLEVBQUUsT0FBTyxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxrQkFBa0IsRUFBRSxnQkFBZ0IsRUFBRSxXQUFXLEVBQUUsR0FBRyxPQUFPLENBQUM7UUFFN0gsSUFBSSxDQUFDLFlBQUUsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztZQUM1QixPQUFPO2dCQUNMLE9BQU8sRUFBRSxLQUFLO2dCQUNkLEtBQUssRUFBRSx1QkFBdUIsT0FBTyxFQUFFO2FBQ3hDLENBQUM7UUFDSixDQUFDO1FBRUQsTUFBTSxRQUFRLEdBQUcsSUFBSSxtQkFBUSxFQUFFLENBQUM7UUFDaEMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsWUFBRSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7UUFDdEQsUUFB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QUFPLENBQUM7Z0JBQzdELE9BQU87b0JBQ0wsT0FBTyxFQUFFLEtBQUs7b0JBQ2QsS0FBSyxFQUFFLG9CQUFvQixPQUFPLEVBQUU7aUJBQ3JDLENBQUM7WUFDSixDQUFDO1lBRUQsT0FBTztnQkFDTCxPQUFPLEVBQUUsS0FBSztnQkFDZCxLQUFLLEVBQUUsS0FBSyxZQUFZLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsZUFBZTthQUNoRSxDQUFDO1FBQ0osQ0FBQztJQUNILENBQUM7Q0FDRjtBQXhQRCxzQ0F3UEM7QUFFTSxNQUFNLG1CQUFtQixHQUFHLEdBQWtCLEVBQUU7SUFDckQsT0FBTyxJQUFJLGFBQWEsRUFBRSxDQUFDO0FBQzdCLENBQUMsQ0FBQztBQUZXLFFBQUEsbUJBQW1CLHVCQUU5QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBheGlvcywgeyBBeGlvc1Byb2dyZXNzRXZlbnQgfSBmcm9tICdheGlvcyc7XG5pbXBvcnQgRm9ybURhdGEgZnJvbSAnZm9ybS1kYXRhJztcbmltcG9ydCBmcyBmcm9tICdmcyc7XG5pbXBvcnQgeyBQcm9qZWN0VHlwZSwgQnVpbGRNb2RlIH0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHsgZ2V0Q29uZmlnIH0gZnJvbSAnLi4vdXRpbHMvY29uZmlnJztcbmltcG9ydCB7IGxvZ2dlciB9IGZyb20gJy4uL3V0aWxzL2xvZ2dlcic7XG5cbmV4cG9ydCBpbnRlcmZhY2UgVXBsb2FkT3B0aW9ucyB7XG4gIHppcFBhdGg6IHN0cmluZztcbiAgcHJvamVjdE5hbWU6IHN0cmluZztcbiAgcHJvamVjdFR5cGU6IFByb2plY3RUeXBlO1xuICB2ZXJzaW9uPzogc3RyaW5nO1xuICBidWlsZE1vZGU6IEJ1aWxkTW9kZTtcbiAgY29uZmlybVNlcnZlckJ1aWxkPzogYm9vbGVhbjtcbiAgLy8gRU5WIG11dGFiaWxpdHkgdHJhY2tpbmdcbiAgZGVwbG95bWVudFNvdXJjZT86ICd1aScgfCAnY2xpJztcbiAgZW52SW5qZWN0ZWQ/OiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFVwbG9hZFJlc3VsdCB7XG4gIHN1Y2Nlc3M6IGJvb2xlYW47XG4gIHByb2plY3RJZD86IHN0cmluZztcbiAgZGVwbG95bWVudElkPzogc3RyaW5nO1xuICBlcnJvcj86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEZXBsb3ltZW50U3RhdHVzIHtcbiAgc3RhdHVzOiAncXVldWVkJyB8ICdidWlsZGluZycgfCAnZGVwbG95aW5nJyB8ICdzdWNjZXNzJyB8ICdmYWlsZWQnO1xuICBwcm9ncmVzcz86IG51bWJlcjtcbiAgbG9ncz86IHN0cmluZztcbiAgZXJyb3I/OiBzdHJpbmc7XG4gIGhlYWx0aFdhcm5pbmc/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGVwbG95V2FybmluZyB7XG4gIGxldmVsOiAnaW5mbycgfCAnd2FybmluZycgfCAnY3JpdGljYWwnO1xuICBtZXNzYWdlOiBzdHJpbmc7XG4gIGNvZGU6IHN0cmluZztcbn1cblxuLyoqXG4gKiBBbmFseXNpcyByZXN1bHQgZnJvbSBiYWNrZW5kXG4gKiBCYWNrZW5kIHRydXN0cyB1c2VyLWRlY2xhcmVkIHR5cGUgLSBubyBhdXRvLWRldGVjdGlvblxuICovXG5leHBvcnQgaW50ZXJmYWNlIERlcGxveUFuYWx5c2lzIHtcbiAgLy8gVXNlcidzIGRlY2xhcmVkIHR5cGUgKHRydXN0ZWQsIG5vdCB2YWxpZGF0ZWQpXG4gIGRlY2xhcmVkVHlwZTogUHJvamVjdFR5cGU7XG4gIC8vIFBhY2thZ2Ugc3RhdGVcbiAgaGFzUGFja2FnZUpzb246IGJvb2xlYW47XG4gIGhhc0J1aWxkU2NyaXB0OiBib29sZWFuO1xuICBoYXNTdGFydFNjcmlwdDogYm9vbGVhbjtcbiAgLy8gQnVpbGQgc3RhdGUgKGdlbmVyaWMgZGV0ZWN0aW9uKVxuICBoYXNCdWlsZE91dHB1dDogYm9vbGVhbjtcbiAgYnVpbGRPdXRwdXREaXI6IHN0cmluZyB8IG51bGw7XG4gIHJlcXVpcmVzQnVpbGQ6IGJvb2xlYW47XG4gIC8vIFByZWJ1aWx0IGRldGVjdGlvbiAoZ2VuZXJpYylcbiAgaXNQcmVidWlsdFByb2plY3Q6IGJvb2xlYW47XG4gIC8vIFN0YXRpYyBzaXRlIGRldGVjdGlvbiAoZ2VuZXJpYylcbiAgaXNTdGF0aWNTaXRlOiBib29sZWFuO1xuICAvLyBEZXBsb3ltZW50IHN0cmF0ZWd5XG4gIHN0cmF0ZWd5OiAnc3RhdGljJyB8ICdidWlsZC1hbmQtc2VydmUnIHwgJ3NlcnZlLXByZWJ1aWx0JztcbiAgc2VydmVNZXRob2Q6ICdjYWRkeS1zdGF0aWMnIHwgJ3BtMi1wcm94eSc7XG4gIC8vIFdhcm5pbmdzXG4gIHdhcm5pbmdzOiBEZXBsb3lXYXJuaW5nW107XG4gIHJlcXVpcmVzQ29uZmlybWF0aW9uOiBib29sZWFuO1xuICBjb25maXJtYXRpb25SZWFzb24/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQW5hbHl6ZVJlc3VsdCB7XG4gIHN1Y2Nlc3M6IGJvb2xlYW47XG4gIGFuYWx5c2lzPzogRGVwbG95QW5hbHlzaXM7XG4gIGVycm9yPzogc3RyaW5nO1xufVxuXG5leHBvcnQgY2xhc3MgVXBsb2FkU2VydmljZSB7XG4gIHByaXZhdGUgc2VydmVyVXJsOiBzdHJpbmc7XG4gIHByaXZhdGUgdG9rZW46IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBjb25zdCBjb25maWcgPSBnZXRDb25maWcoKTtcbiAgICBpZiAoIWNvbmZpZy5zZXJ2ZXJVcmwgfHwgIWNvbmZpZy50b2tlbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdDTEkgbm90IGNvbmZpZ3VyZWQuIFJ1biBcInJ1bndheSBpbml0XCIgZmlyc3QuJyk7XG4gICAgfVxuICAgIHRoaXMuc2VydmVyVXJsID0gY29uZmlnLnNlcnZlclVybDtcbiAgICB0aGlzLnRva2VuID0gY29uZmlnLnRva2VuO1xuICB9XG5cbiAgYXN5bmMgdXBsb2FkKG9wdGlvbnM6IFVwbG9hZE9wdGlvbnMpOiBQcm9taXNlPFVwbG9hZFJlc3VsdD4ge1xuICAgIGNvbnN0IHsgemlwUGF0aCwgcHJvamVjdE5hbWUsIHByb2plY3RUeXBlLCB2ZXJzaW9uLCBidWlsZE1vZGUsIGNvbmZpcm1TZXJ2ZXJCdWlsZCwgZGVwbG95bWVudFNvdXJjZSwgZW52SW5qZWN0ZWQgfSA9IG9wdGlvbnM7XG5cbiAgICBpZiAoIWZzLmV4aXN0c1N5bmMoemlwUGF0aCkpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHN1Y2Nlc3M6IGZhbHNlLFxuICAgICAgICBlcnJvcjogYFppcCBmaWxlIG5vdCBmb3VuZDogJHt6aXBQYXRofWAsXG4gICAgICB9O1xuICAgIH1cblxuICAgIGNvbnN0IGZvcm1EYXRhID0gbmV3IEZvcm1EYXRhKCk7XG4gICAgZm9ybURhdGEuYXBwZW5kKCdmaWxlJywgZnMuY3JlYXRlUmVhZFN0cmVhbSh6aXBQYXRoKSk7XG4gICAgZm9ybURhdGEuYXBwZW5kKCduYW1lJywgcHJvamVjdE5hbWUpO1xuICAgIGZvcm1EYXRhLmFwcGVuZCgndHlwZScsIHByb2plY3RUeXBlKTtcbiAgICBmb3JtRGF0YS5hcHBlbmQoJ2J1aWxkTW9kZScsIGJ1aWxkTW9kZSk7XG4gICAgaWYgKHZlcnNpb24pIHtcbiAgICAgIGZvcm1EYXRhLmFwcGVuZCgndmVyc2lvbicsIHZlcnNpb24pO1xuICAgIH1cbiAgICBpZiAoY29uZmlybVNlcnZlckJ1aWxkKSB7XG4gICAgICBmb3JtRGF0YS5hcHBlbmQoJ2NvbmZpcm1TZXJ2ZXJCdWlsZCcsICd0cnVlJyk7XG4gICAgfVxuICAgIC8vIEVOViBtdXRhYmlsaXR5IHRyYWNraW5nXG4gICAgaWYgKGRlcGxveW1lbnRTb3VyY2UpIHtcbiAgICAgIGZvcm1EYXRhLmFwcGVuZCgnZGVwbG95bWVudFNvdXJjZScsIGRlcGxveW1lbnRTb3VyY2UpO1xuICAgIH1cbiAgICBpZiAoZW52SW5qZWN0ZWQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgZm9ybURhdGEuYXBwZW5kKCdlbnZJbmplY3RlZCcsIGVudkluamVjdGVkID8gJ3RydWUnIDogJ2ZhbHNlJyk7XG4gICAgfVxuXG4gICAgLy8gQ2hvb3NlIGVuZHBvaW50IGJhc2VkIG9uIGJ1aWxkIG1vZGVcbiAgICBjb25zdCBlbmRwb2ludCA9IGJ1aWxkTW9kZSA9PT0gJ2xvY2FsJ1xuICAgICAgPyAnL2FwaS9wcm9qZWN0L2RlcGxveS1wcmVidWlsdCdcbiAgICAgIDogJy9hcGkvcHJvamVjdC9kZXBsb3knO1xuXG4gICAgbG9nZ2VyLmluZm8oYFVwbG9hZGluZyB0byAke3RoaXMuc2VydmVyVXJsfSR7ZW5kcG9pbnR9Li4uYCk7XG5cbiAgICB0cnkge1xuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBheGlvcy5wb3N0KFxuICAgICAgICBgJHt0aGlzLnNlcnZlclVybH0ke2VuZHBvaW50fWAsXG4gICAgICAgIGZvcm1EYXRhLFxuICAgICAgICB7XG4gICAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgICAgLi4uZm9ybURhdGEuZ2V0SGVhZGVycygpLFxuICAgICAgICAgICAgQXV0aG9yaXphdGlvbjogYEJlYXJlciAke3RoaXMudG9rZW59YCxcbiAgICAgICAgICB9LFxuICAgICAgICAgIG1heEJvZHlMZW5ndGg6IEluZmluaXR5LFxuICAgICAgICAgIG1heENvbnRlbnRMZW5ndGg6IEluZmluaXR5LFxuICAgICAgICAgIHRpbWVvdXQ6IDMwMDAwMCwgLy8gNSBtaW51dGVzXG4gICAgICAgICAgb25VcGxvYWRQcm9ncmVzczogKHByb2dyZXNzRXZlbnQ6IEF4aW9zUHJvZ3Jlc3NFdmVudCkgPT4ge1xuICAgICAgICAgICAgaWYgKHByb2dyZXNzRXZlbnQudG90YWwpIHtcbiAgICAgICAgICAgICAgY29uc3QgcGVyY2VudCA9IE1hdGgucm91bmQoKHByb2dyZXNzRXZlbnQubG9hZGVkICogMTAwKSAvIHByb2dyZXNzRXZlbnQudG90YWwpO1xuICAgICAgICAgICAgICBwcm9jZXNzLnN0ZG91dC53cml0ZShgXFxyICBVcGxvYWRpbmc6ICR7cGVyY2VudH0lYCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSxcbiAgICAgICAgfVxuICAgICAgKTtcblxuICAgICAgcHJvY2Vzcy5zdGRvdXQud3JpdGUoJ1xcbicpO1xuXG4gICAgICBpZiAocmVzcG9uc2UuZGF0YS5zdWNjZXNzKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgc3VjY2VzczogdHJ1ZSxcbiAgICAgICAgICBwcm9qZWN0SWQ6IHJlc3BvbnNlLmRhdGEuZGF0YT8ucHJvamVjdElkLFxuICAgICAgICAgIGRlcGxveW1lbnRJZDogcmVzcG9uc2UuZGF0YS5kYXRhPy5kZXBsb3ltZW50SWQsXG4gICAgICAgIH07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHN1Y2Nlc3M6IGZhbHNlLFxuICAgICAgICAgIGVycm9yOiByZXNwb25zZS5kYXRhLmVycm9yIHx8ICdVbmtub3duIGVycm9yJyxcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgcHJvY2Vzcy5zdGRvdXQud3JpdGUoJ1xcbicpO1xuXG4gICAgICBpZiAoYXhpb3MuaXNBeGlvc0Vycm9yKGVycm9yKSkge1xuICAgICAgICBjb25zdCBtZXNzYWdlID0gZXJyb3IucmVzcG9uc2U/LmRhdGE/LmVycm9yIHx8IGVycm9yLm1lc3NhZ2U7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgc3VjY2VzczogZmFsc2UsXG4gICAgICAgICAgZXJyb3I6IGBVcGxvYWQgZmFpbGVkOiAke21lc3NhZ2V9YCxcbiAgICAgICAgfTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgc3VjY2VzczogZmFsc2UsXG4gICAgICAgIGVycm9yOiBlcnJvciBpbnN0YW5jZW9mIEVycm9yID8gZXJyb3IubWVzc2FnZSA6ICdVbmtub3duIGVycm9yJyxcbiAgICAgIH07XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgZ2V0RGVwbG95bWVudFN0YXR1cyhkZXBsb3ltZW50SWQ6IHN0cmluZyk6IFByb21pc2U8RGVwbG95bWVudFN0YXR1cz4ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGF4aW9zLmdldChcbiAgICAgICAgYCR7dGhpcy5zZXJ2ZXJVcmx9L2FwaS9wcm9qZWN0L3N0YXR1cy8ke2RlcGxveW1lbnRJZH1gLFxuICAgICAgICB7XG4gICAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgICAgQXV0aG9yaXphdGlvbjogYEJlYXJlciAke3RoaXMudG9rZW59YCxcbiAgICAgICAgICB9LFxuICAgICAgICB9XG4gICAgICApO1xuXG4gICAgICByZXR1cm4gcmVzcG9uc2UuZGF0YS5kYXRhO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBpZiAoYXhpb3MuaXNBeGlvc0Vycm9yKGVycm9yKSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoZXJyb3IucmVzcG9uc2U/LmRhdGE/LmVycm9yIHx8IGVycm9yLm1lc3NhZ2UpO1xuICAgICAgfVxuICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgcG9sbERlcGxveW1lbnRTdGF0dXMoXG4gICAgZGVwbG95bWVudElkOiBzdHJpbmcsXG4gICAgb25VcGRhdGU6IChzdGF0dXM6IERlcGxveW1lbnRTdGF0dXMpID0+IHZvaWQsXG4gICAgdGltZW91dE1zOiBudW1iZXIgPSAzMDAwMDAgLy8gNSBtaW51dGVzXG4gICk6IFByb21pc2U8RGVwbG95bWVudFN0YXR1cz4ge1xuICAgIGNvbnN0IHN0YXJ0VGltZSA9IERhdGUubm93KCk7XG4gICAgY29uc3QgcG9sbEludGVydmFsID0gMjAwMDsgLy8gMiBzZWNvbmRzXG5cbiAgICB3aGlsZSAoRGF0ZS5ub3coKSAtIHN0YXJ0VGltZSA8IHRpbWVvdXRNcykge1xuICAgICAgY29uc3Qgc3RhdHVzID0gYXdhaXQgdGhpcy5nZXREZXBsb3ltZW50U3RhdHVzKGRlcGxveW1lbnRJZCk7XG4gICAgICBvblVwZGF0ZShzdGF0dXMpO1xuXG4gICAgICBpZiAoc3RhdHVzLnN0YXR1cyA9PT0gJ3N1Y2Nlc3MnIHx8IHN0YXR1cy5zdGF0dXMgPT09ICdmYWlsZWQnKSB7XG4gICAgICAgIHJldHVybiBzdGF0dXM7XG4gICAgICB9XG5cbiAgICAgIGF3YWl0IG5ldyBQcm9taXNlKHJlc29sdmUgPT4gc2V0VGltZW91dChyZXNvbHZlLCBwb2xsSW50ZXJ2YWwpKTtcbiAgICB9XG5cbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0RlcGxveW1lbnQgdGltZWQgb3V0Jyk7XG4gIH1cblxuICBhc3luYyBsb2dpbih1c2VybmFtZTogc3RyaW5nLCBwYXNzd29yZDogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBheGlvcy5wb3N0KFxuICAgICAgICBgJHt0aGlzLnNlcnZlclVybH0vYXBpL2F1dGgvbG9naW5gLFxuICAgICAgICB7IHVzZXJuYW1lLCBwYXNzd29yZCB9LFxuICAgICAgICB7XG4gICAgICAgICAgdGltZW91dDogMTAwMDAsXG4gICAgICAgIH1cbiAgICAgICk7XG5cbiAgICAgIGlmIChyZXNwb25zZS5kYXRhLnN1Y2Nlc3MgJiYgcmVzcG9uc2UuZGF0YS5kYXRhPy50b2tlbikge1xuICAgICAgICByZXR1cm4gcmVzcG9uc2UuZGF0YS5kYXRhLnRva2VuO1xuICAgICAgfVxuXG4gICAgICB0aHJvdyBuZXcgRXJyb3IocmVzcG9uc2UuZGF0YS5lcnJvciB8fCAnTG9naW4gZmFpbGVkJyk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGlmIChheGlvcy5pc0F4aW9zRXJyb3IoZXJyb3IpKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihlcnJvci5yZXNwb25zZT8uZGF0YT8uZXJyb3IgfHwgZXJyb3IubWVzc2FnZSk7XG4gICAgICB9XG4gICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG4gIH1cblxuICBhc3luYyBsaXN0UHJvamVjdHMoKTogUHJvbWlzZTxBcnJheTx7IGlkOiBzdHJpbmc7IG5hbWU6IHN0cmluZzsgdHlwZTogUHJvamVjdFR5cGU7IHN0YXR1czogc3RyaW5nIH0+PiB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgYXhpb3MuZ2V0KFxuICAgICAgICBgJHt0aGlzLnNlcnZlclVybH0vYXBpL3Byb2plY3RgLFxuICAgICAgICB7XG4gICAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgICAgQXV0aG9yaXphdGlvbjogYEJlYXJlciAke3RoaXMudG9rZW59YCxcbiAgICAgICAgICB9LFxuICAgICAgICB9XG4gICAgICApO1xuXG4gICAgICByZXR1cm4gcmVzcG9uc2UuZGF0YS5kYXRhIHx8IFtdO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBpZiAoYXhpb3MuaXNBeGlvc0Vycm9yKGVycm9yKSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoZXJyb3IucmVzcG9uc2U/LmRhdGE/LmVycm9yIHx8IGVycm9yLm1lc3NhZ2UpO1xuICAgICAgfVxuICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEFuYWx5emUgYSBwYWNrYWdlIGJlZm9yZSBkZXBsb3ltZW50IHRvIGdldCBzZXJ2ZXIgd2FybmluZ3MgYW5kIHJlY29tbWVuZGF0aW9uc1xuICAgKi9cbiAgLyoqXG4gICAqIEFuYWx5emUgYSBwYWNrYWdlIGJlZm9yZSBkZXBsb3ltZW50XG4gICAqIEBwYXJhbSB6aXBQYXRoIC0gUGF0aCB0byB0aGUgemlwIGZpbGVcbiAgICogQHBhcmFtIGRlY2xhcmVkVHlwZSAtIFJFUVVJUkVEIC0gVXNlci1zZWxlY3RlZCBwcm9qZWN0IHR5cGUgKGJhY2tlbmQgdHJ1c3RzIHRoaXMpXG4gICAqL1xuICBhc3luYyBhbmFseXplUGFja2FnZSh6aXBQYXRoOiBzdHJpbmcsIGRlY2xhcmVkVHlwZTogUHJvamVjdFR5cGUpOiBQcm9taXNlPEFuYWx5emVSZXN1bHQ+IHtcbiAgICBpZiAoIWZzLmV4aXN0c1N5bmMoemlwUGF0aCkpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHN1Y2Nlc3M6IGZhbHNlLFxuICAgICAgICBlcnJvcjogYFppcCBmaWxlIG5vdCBmb3VuZDogJHt6aXBQYXRofWAsXG4gICAgICB9O1xuICAgIH1cblxuICAgIGNvbnN0IGZvcm1EYXRhID0gbmV3IEZvcm1EYXRhKCk7XG4gICAgZm9ybURhdGEuYXBwZW5kKCdmaWxlJywgZnMuY3JlYXRlUmVhZFN0cmVhbSh6aXBQYXRoKSk7XG4gICAgZm9ybURhdGEuYXBwZW5kKCd0eXBlJywgZGVjbGFyZWRUeXBlKTtcblxuICAgIHRyeSB7XG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGF4aW9zLnBvc3QoXG4gICAgICAgIGAke3RoaXMuc2VydmVyVXJsfS9hcGkvcHJvamVjdC9hbmFseXplYCxcbiAgICAgICAgZm9ybURhdGEsXG4gICAgICAgIHtcbiAgICAgICAgICBoZWFkZXJzOiB7XG4gICAgICAgICAgICAuLi5mb3JtRGF0YS5nZXRIZWFkZXJzKCksXG4gICAgICAgICAgICBBdXRob3JpemF0aW9uOiBgQmVhcmVyICR7dGhpcy50b2tlbn1gLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgbWF4Qm9keUxlbmd0aDogSW5maW5pdHksXG4gICAgICAgICAgbWF4Q29udGVudExlbmd0aDogSW5maW5pdHksXG4gICAgICAgICAgdGltZW91dDogNjAwMDAsIC8vIDEgbWludXRlIGZvciBhbmFseXNpc1xuICAgICAgICB9XG4gICAgICApO1xuXG4gICAgICBpZiAocmVzcG9uc2UuZGF0YS5zdWNjZXNzKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgc3VjY2VzczogdHJ1ZSxcbiAgICAgICAgICBhbmFseXNpczogcmVzcG9uc2UuZGF0YS5kYXRhLFxuICAgICAgICB9O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBzdWNjZXNzOiBmYWxzZSxcbiAgICAgICAgICBlcnJvcjogcmVzcG9uc2UuZGF0YS5lcnJvciB8fCAnQW5hbHlzaXMgZmFpbGVkJyxcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgaWYgKGF4aW9zLmlzQXhpb3NFcnJvcihlcnJvcikpIHtcbiAgICAgICAgY29uc3QgbWVzc2FnZSA9IGVycm9yLnJlc3BvbnNlPy5kYXRhPy5lcnJvciB8fCBlcnJvci5tZXNzYWdlO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHN1Y2Nlc3M6IGZhbHNlLFxuICAgICAgICAgIGVycm9yOiBgQW5hbHlzaXMgZmFpbGVkOiAke21lc3NhZ2V9YCxcbiAgICAgICAgfTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgc3VjY2VzczogZmFsc2UsXG4gICAgICAgIGVycm9yOiBlcnJvciBpbnN0YW5jZW9mIEVycm9yID8gZXJyb3IubWVzc2FnZSA6ICdVbmtub3duIGVycm9yJyxcbiAgICAgIH07XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBjb25zdCBjcmVhdGVVcGxvYWRTZXJ2aWNlID0gKCk6IFVwbG9hZFNlcnZpY2UgPT4ge1xuICByZXR1cm4gbmV3IFVwbG9hZFNlcnZpY2UoKTtcbn07XG4iXX0=
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "runway-cli",
3
- "version": "1.2.0",
3
+ "version": "1.3.1",
4
4
  "description": "CLI tool for deploying projects to Runway",
5
5
  "main": "dist/index.js",
6
6
  "bin": {