@pipeline-builder/pipeline-manager 3.4.126 → 3.4.127

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (50) hide show
  1. package/dist/agent/health.js +5 -4
  2. package/dist/agent/post-steps.d.ts.map +1 -1
  3. package/dist/agent/post-steps.js +7 -2
  4. package/dist/agent/targets.d.ts.map +1 -1
  5. package/dist/agent/targets.js +17 -2
  6. package/dist/boilerplate.js +3 -2
  7. package/dist/cli.js +3 -3
  8. package/dist/commands/create-pipeline.d.ts.map +1 -1
  9. package/dist/commands/create-pipeline.js +2 -1
  10. package/dist/commands/deploy.d.ts.map +1 -1
  11. package/dist/commands/deploy.js +11 -49
  12. package/dist/commands/get-plugin.d.ts.map +1 -1
  13. package/dist/commands/get-plugin.js +3 -2
  14. package/dist/commands/login.d.ts.map +1 -1
  15. package/dist/commands/login.js +18 -11
  16. package/dist/commands/status.d.ts.map +1 -1
  17. package/dist/commands/status.js +4 -4
  18. package/dist/commands/store-token.d.ts.map +1 -1
  19. package/dist/commands/store-token.js +9 -4
  20. package/dist/commands/synth.d.ts.map +1 -1
  21. package/dist/commands/synth.js +9 -53
  22. package/dist/commands/upload-plugin.d.ts.map +1 -1
  23. package/dist/commands/upload-plugin.js +2 -1
  24. package/dist/config/cli.constants.d.ts +0 -4
  25. package/dist/config/cli.constants.d.ts.map +1 -1
  26. package/dist/config/cli.constants.js +9 -4
  27. package/dist/lambda/token-renew-handler.d.ts.map +1 -1
  28. package/dist/lambda/token-renew-handler.js +56 -107
  29. package/dist/templates/token-renew-stack.json +17 -4
  30. package/dist/utils/api-client.d.ts.map +1 -1
  31. package/dist/utils/api-client.js +8 -15
  32. package/dist/utils/audit-log.d.ts.map +1 -1
  33. package/dist/utils/audit-log.js +22 -12
  34. package/dist/utils/aws-secrets.d.ts.map +1 -1
  35. package/dist/utils/aws-secrets.js +8 -2
  36. package/dist/utils/config-loader.d.ts +0 -4
  37. package/dist/utils/config-loader.d.ts.map +1 -1
  38. package/dist/utils/config-loader.js +4 -3
  39. package/dist/utils/pipeline-config.d.ts +33 -0
  40. package/dist/utils/pipeline-config.d.ts.map +1 -0
  41. package/dist/utils/pipeline-config.js +54 -0
  42. package/dist/utils/platform-secret.d.ts.map +1 -1
  43. package/dist/utils/platform-secret.js +5 -2
  44. package/dist/utils/rate-limiter.d.ts +7 -6
  45. package/dist/utils/rate-limiter.d.ts.map +1 -1
  46. package/dist/utils/rate-limiter.js +49 -19
  47. package/dist/utils/tls.d.ts +16 -0
  48. package/dist/utils/tls.d.ts.map +1 -0
  49. package/dist/utils/tls.js +35 -0
  50. package/package.json +1 -1
@@ -111,9 +111,10 @@ export function getConfig() {
111
111
  };
112
112
  }
113
113
  /**
114
- * Return a copy of `config` with SSL verification disabled.
114
+ * Return a copy of `config` with SSL verification disabled. Module-private — the
115
+ * only caller is `getConfigWithOptions` below.
115
116
  */
116
- export function withSSLDisabled(config) {
117
+ function withSSLDisabled(config) {
117
118
  return {
118
119
  ...config,
119
120
  api: { ...config.api, rejectUnauthorized: false },
@@ -128,4 +129,4 @@ export function getConfigWithOptions(options) {
128
129
  const config = getConfig();
129
130
  return options.verifySsl === false ? withSSLDisabled(config) : config;
130
131
  }
131
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLWxvYWRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy9jb25maWctbG9hZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtDQUErQztBQUMvQyxzQ0FBc0M7QUFFdEMsT0FBTyxLQUFLLEVBQUUsTUFBTSxJQUFJLENBQUM7QUFDekIsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUN6QyxPQUFPLEtBQUssRUFBRSxNQUFNLElBQUksQ0FBQztBQUN6QixPQUFPLEtBQUssSUFBSSxNQUFNLE1BQU0sQ0FBQztBQUM3QixPQUFPLEtBQUssSUFBSSxNQUFNLE1BQU0sQ0FBQztBQUM3QixPQUFPLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUN6RSxPQUFPLEVBQWUsTUFBTSxtQkFBbUIsQ0FBQztBQUVoRCwwREFBMEQ7QUFDMUQsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBSS9EOztHQUVHO0FBQ0gsTUFBTSxhQUFhLEdBQXlCO0lBQzFDLEdBQUcsRUFBRTtRQUNILE9BQU8sRUFBRSx3QkFBd0I7UUFDakMsT0FBTyxFQUFFLE1BQU07UUFDZixXQUFXLEVBQUUsZUFBZTtRQUM1QixlQUFlLEVBQUUsZ0JBQWdCO1FBQ2pDLFNBQVMsRUFBRSxhQUFhO1FBQ3hCLGFBQWEsRUFBRSxjQUFjO1FBQzdCLGVBQWUsRUFBRSxvQkFBb0I7UUFDckMsa0JBQWtCLEVBQUUsSUFBSTtLQUN6QjtDQUNGLENBQUM7QUFFRiw0REFBNEQ7QUFDNUQsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxPQUFPLEVBQUUsRUFBRSxtQkFBbUIsRUFBRSxZQUFZLENBQUMsQ0FBQztBQUVwRjs7O0dBR0c7QUFDSCxT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RyxTQUFTLEVBQUUsQ0FBQztJQUMzQixPQUFPLE9BQU8sQ0FBQyxTQUFTLEtBQUssS0FBSyxDQUFDLENBQUMsQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQztBQUN4RSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMjYgUGlwZWxpbmUgQnVpbGRlciBDb250cmlidXRvcnNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5cbmltcG9ydCAqIGFzIGZzIGZyb20gJ2ZzJztcbmltcG9ydCB7IGZpbGVVUkxUb1BhdGggfSBmcm9tICdub2RlOnVybCc7XG5pbXBvcnQgKiBhcyBvcyBmcm9tICdvcyc7XG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0ICogYXMgeWFtbCBmcm9tICd5YW1sJztcbmltcG9ydCB7IHByaW50RGVidWcsIHByaW50RXJyb3IsIHByaW50V2FybmluZyB9IGZyb20gJy4vb3V0cHV0LXV0aWxzLmpzJztcbmltcG9ydCB7IHR5cGUgQ29uZmlnIH0gZnJvbSAnLi4vdHlwZXMvaW5kZXguanMnO1xuXG4vLyBFU00gaGFzIG5vIF9fZGlybmFtZTsgZGVyaXZlIGl0IGZyb20gdGhpcyBtb2R1bGUncyBVUkwuXG5jb25zdCBfX2Rpcm5hbWUgPSBwYXRoLmRpcm5hbWUoZmlsZVVSTFRvUGF0aChpbXBvcnQubWV0YS51cmwpKTtcblxuZXhwb3J0IHR5cGUgeyBDb25maWcgfTtcblxuLyoqXG4gKiBEZWZhdWx0IGNvbmZpZ3VyYXRpb24g4oCUIEFQSSBlbmRwb2ludCBwYXRocyBhbmQgY29ubmVjdGlvbiBzZXR0aW5ncy5cbiAqL1xuY29uc3QgZGVmYXVsdENvbmZpZzogT21pdDxDb25maWcsICdhdXRoJz4gPSB7XG4gIGFwaToge1xuICAgIGJhc2VVcmw6ICdodHRwczovL2xvY2FsaG9zdDo4NDQzJyxcbiAgICB0aW1lb3V0OiAzMF8wMDAsXG4gICAgcGlwZWxpbmVVcmw6ICcvYXBpL3BpcGVsaW5lJyxcbiAgICBwaXBlbGluZUxpc3RVcmw6ICcvYXBpL3BpcGVsaW5lcycsXG4gICAgcGx1Z2luVXJsOiAnL2FwaS9wbHVnaW4nLFxuICAgIHBsdWdpbkxpc3RVcmw6ICcvYXBpL3BsdWdpbnMnLFxuICAgIHBsdWdpblVwbG9hZFVybDogJy9hcGkvcGx1Z2luL3VwbG9hZCcsXG4gICAgcmVqZWN0VW5hdXRob3JpemVkOiB0cnVlLFxuICB9LFxufTtcblxuLyoqIFVzZXIgY29uZmlnIGZpbGUgcGF0aDogfi8ucGlwZWxpbmUtbWFuYWdlci9jb25maWcueW1sICovXG5jb25zdCBVU0VSX0NPTkZJR19QQVRIID0gcGF0aC5qb2luKG9zLmhvbWVkaXIoKSwgJy5waXBlbGluZS1tYW5hZ2VyJywgJ2NvbmZpZy55bWwnKTtcblxuLyoqXG4gKiBMb2FkIGEgWUFNTCBjb25maWcgZmlsZSBhbmQgbWVyZ2UgaXRzIGBhcGlgIHNlY3Rpb24gaW50byB0aGUgY29uZmlnLlxuICogUmV0dXJucyB0aGUgbWVyZ2VkIGNvbmZpZyBvciB0aGUgb3JpZ2luYWwgaWYgZmlsZSBkb2Vzbid0IGV4aXN0IG9yIGZhaWxzLlxuICovXG5mdW5jdGlvbiBsb2FkQ29uZmlnRmlsZShmaWxlUGF0aDogc3RyaW5nLCBjb25maWc6IE9taXQ8Q29uZmlnLCAnYXV0aCc+KTogT21pdDxDb25maWcsICdhdXRoJz4ge1xuICBpZiAoIWZzLmV4aXN0c1N5bmMoZmlsZVBhdGgpKSByZXR1cm4gY29uZmlnO1xuXG4gIHRyeSB7XG4gICAgcHJpbnREZWJ1ZygnTG9hZGluZyBjb25maWd1cmF0aW9uJywgeyBwYXRoOiBmaWxlUGF0aCB9KTtcbiAgICBjb25zdCBwYXJzZWQgPSB5YW1sLnBhcnNlKGZzLnJlYWRGaWxlU3luYyhmaWxlUGF0aCwgJ3V0Zi04JykpO1xuICAgIGlmIChwYXJzZWQ/LmF1dGgpIHtcbiAgICAgIHByaW50V2FybmluZygnQXV0aCBzZWN0aW9uIGluIGNvbmZpZyBmaWxlIGlzIGlnbm9yZWQg4oCUIHVzZSBQTEFURk9STV9UT0tFTiBlbnYgdmFyJyk7XG4gICAgfVxuICAgIHJldHVybiB7IGFwaTogeyAuLi5jb25maWcuYXBpLCAuLi5wYXJzZWQ/LmFwaSB9IH07XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgcHJpbnRXYXJuaW5nKCdGYWlsZWQgdG8gbG9hZCBjb25maWcgZmlsZSwgdXNpbmcgZGVmYXVsdHMnLCB7XG4gICAgICBwYXRoOiBmaWxlUGF0aCxcbiAgICAgIGVycm9yOiBlcnJvciBpbnN0YW5jZW9mIEVycm9yID8gZXJyb3IubWVzc2FnZSA6IFN0cmluZyhlcnJvciksXG4gICAgfSk7XG4gICAgcmV0dXJuIGNvbmZpZztcbiAgfVxufVxuXG4vKipcbiAqIExvYWQgY29uZmlndXJhdGlvbiBmcm9tIGZpbGVzIGFuZCBlbnZpcm9ubWVudC5cbiAqXG4gKiBQcmlvcml0eSAobGFzdCB3aW5zKTpcbiAqIDEuIEJ1aWx0LWluIGRlZmF1bHRzXG4gKiAyLiBVc2VyIGNvbmZpZyBmaWxlOiB+Ly5waXBlbGluZS1tYW5hZ2VyL2NvbmZpZy55bWxcbiAqIDMuIFByb2plY3QgY29uZmlnIGZpbGU6IENMSV9DT05GSUdfUEFUSCBvciAuL2NvbmZpZy55bWxcbiAqIDQuIEVudmlyb25tZW50IHZhcmlhYmxlc1xuICpcbiAqIEF1dGggdG9rZW4gTVVTVCBjb21lIGZyb20gUExBVEZPUk1fVE9LRU4gZW52IHZhciAobmV2ZXIgZnJvbSBjb25maWcgZmlsZSkuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRDb25maWcoKTogQ29uZmlnIHtcbiAgY29uc3QgcHJvamVjdENvbmZpZ1BhdGggPSBwcm9jZXNzLmVudi5DTElfQ09ORklHX1BBVEggfHwgcGF0aC5qb2luKF9fZGlybmFtZSwgJy4uL2NvbmZpZy55bWwnKTtcblxuICAvLyBMYXllciAxOiBkZWZhdWx0cyDihpIgTGF5ZXIgMjogdXNlciBjb25maWcg4oaSIExheWVyIDM6IHByb2plY3QgY29uZmlnXG4gIGxldCBjb25maWcgPSBsb2FkQ29uZmlnRmlsZShVU0VSX0NPTkZJR19QQVRILCB7IC4uLmRlZmF1bHRDb25maWcgfSk7XG4gIGNvbmZpZyA9IGxvYWRDb25maWdGaWxlKHByb2plY3RDb25maWdQYXRoLCBjb25maWcpO1xuXG4gIC8vIExheWVyIDQ6IGVudmlyb25tZW50IHZhcmlhYmxlIG92ZXJyaWRlc1xuICBpZiAocHJvY2Vzcy5lbnYuUExBVEZPUk1fQkFTRV9VUkwpIHtcbiAgICBjb25maWcuYXBpLmJhc2VVcmwgPSBwcm9jZXNzLmVudi5QTEFURk9STV9CQVNFX1VSTDtcbiAgICBwcmludERlYnVnKCdVc2luZyBQTEFURk9STV9CQVNFX1VSTCBmcm9tIGVudmlyb25tZW50JywgeyBiYXNlVXJsOiBjb25maWcuYXBpLmJhc2VVcmwgfSk7XG4gIH1cblxuICBpZiAocHJvY2Vzcy5lbnYuVExTX1JFSkVDVF9VTkFVVEhPUklaRUQgIT09IHVuZGVmaW5lZCkge1xuICAgIGNvbnN0IGRpc2FibGUgPSBwcm9jZXNzLmVudi5UTFNfUkVKRUNUX1VOQVVUSE9SSVpFRCA9PT0gJzAnO1xuICAgIGlmIChkaXNhYmxlICYmIHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSAncHJvZHVjdGlvbicpIHtcbiAgICAgIHByaW50V2FybmluZygnSWdub3JpbmcgVExTX1JFSkVDVF9VTkFVVEhPUklaRUQ9MCBpbiBwcm9kdWN0aW9uIOKAlCBTU0wgdmVyaWZpY2F0aW9uIHJlbWFpbnMgZW5hYmxlZCcpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25maWcuYXBpLnJlamVjdFVuYXV0aG9yaXplZCA9ICFkaXNhYmxlO1xuICAgICAgaWYgKGRpc2FibGUpIHtcbiAgICAgICAgcHJpbnRXYXJuaW5nKCdTU0wgY2VydGlmaWNhdGUgdmFsaWRhdGlvbiBkaXNhYmxlZCB2aWEgVExTX1JFSkVDVF9VTkFVVEhPUklaRUQ9MCcpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGlmIChwcm9jZXNzLmVudi5VUExPQURfVElNRU9VVCkge1xuICAgIGNvbnN0IHBhcnNlZCA9IHBhcnNlSW50KHByb2Nlc3MuZW52LlVQTE9BRF9USU1FT1VULCAxMCk7XG4gICAgaWYgKCFpc05hTihwYXJzZWQpICYmIHBhcnNlZCA+IDApIHtcbiAgICAgIGNvbmZpZy5hcGkudXBsb2FkVGltZW91dCA9IHBhcnNlZDtcbiAgICAgIHByaW50RGVidWcoJ1VzaW5nIFVQTE9BRF9USU1FT1VUIGZyb20gZW52aXJvbm1lbnQnLCB7IHVwbG9hZFRpbWVvdXQ6IGAke3BhcnNlZH1tc2AgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHByaW50V2FybmluZygnSW52YWxpZCBVUExPQURfVElNRU9VVCB2YWx1ZSwgdXNpbmcgZGVmYXVsdCcsIHsgcHJvdmlkZWQ6IHByb2Nlc3MuZW52LlVQTE9BRF9USU1FT1VUIH0pO1xuICAgIH1cbiAgfVxuXG4gIC8vIFRva2VuIGlzIFJFUVVJUkVEIGZyb20gZW52aXJvbm1lbnRcbiAgY29uc3QgdG9rZW4gPSBwcm9jZXNzLmVudi5QTEFURk9STV9UT0tFTjtcblxuICBpZiAoIXRva2VuKSB7XG4gICAgcHJpbnRFcnJvcignUExBVEZPUk1fVE9LRU4gZW52aXJvbm1lbnQgdmFyaWFibGUgaXMgbm90IHNldCcpO1xuICAgIHRocm93IG5ldyBFcnJvcignUExBVEZPUk1fVE9LRU4gZW52aXJvbm1lbnQgdmFyaWFibGUgaXMgcmVxdWlyZWQnKTtcbiAgfVxuXG4gIGlmICh0b2tlbi50cmltKCkubGVuZ3RoID09PSAwKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdQTEFURk9STV9UT0tFTiBtdXN0IGJlIGEgbm9uLWVtcHR5IHN0cmluZycpO1xuICB9XG5cbiAgaWYgKHRva2VuLmluY2x1ZGVzKCcgJykpIHtcbiAgICBwcmludFdhcm5pbmcoJ1BMQVRGT1JNX1RPS0VOIGNvbnRhaW5zIHdoaXRlc3BhY2Ug4oCUIHRoaXMgbWF5IGNhdXNlIGlzc3VlcycpO1xuICB9XG5cbiAgcHJpbnREZWJ1ZygnQ29uZmlndXJhdGlvbiBsb2FkZWQgc3VjY2Vzc2Z1bGx5Jyk7XG5cbiAgcmV0dXJuIHtcbiAgICAuLi5jb25maWcsXG4gICAgYXV0aDogeyB0b2tlbiB9LFxuICB9O1xufVxuXG4vKipcbiAqIFJldHVybiBhIGNvcHkgb2YgYGNvbmZpZ2Agd2l0aCBTU0wgdmVyaWZpY2F0aW9uIGRpc2FibGVkLlxuICovXG5leHBvcnQgZnVuY3Rpb24gd2l0aFNTTERpc2FibGVkKGNvbmZpZzogQ29uZmlnKTogQ29uZmlnIHtcbiAgcmV0dXJuIHtcbiAgICAuLi5jb25maWcsXG4gICAgYXBpOiB7IC4uLmNvbmZpZy5hcGksIHJlamVjdFVuYXV0aG9yaXplZDogZmFsc2UgfSxcbiAgfTtcbn1cblxuLyoqXG4gKiBMb2FkIGNvbmZpZ3VyYXRpb24sIG9wdGlvbmFsbHkgZGlzYWJsaW5nIFNTTCBiYXNlZCBvbiBjb21tYW5kIG9wdGlvbnMuXG4gKiBSZXBsYWNlcyB0aGUgcmVwZWF0ZWQgcGF0dGVybjpcbiAqICAgYG9wdGlvbnMudmVyaWZ5U3NsID09PSBmYWxzZSA/IHdpdGhTU0xEaXNhYmxlZChnZXRDb25maWcoKSkgOiBnZXRDb25maWcoKWBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldENvbmZpZ1dpdGhPcHRpb25zKG9wdGlvbnM6IHsgdmVyaWZ5U3NsPzogYm9vbGVhbiB9KTogQ29uZmlnIHtcbiAgY29uc3QgY29uZmlnID0gZ2V0Q29uZmlnKCk7XG4gIHJldHVybiBvcHRpb25zLnZlcmlmeVNzbCA9PT0gZmFsc2UgPyB3aXRoU1NMRGlzYWJsZWQoY29uZmlnKSA6IGNvbmZpZztcbn1cbiJdfQ==
132
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLWxvYWRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy9jb25maWctbG9hZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtDQUErQztBQUMvQyxzQ0FBc0M7QUFFdEMsT0FBTyxLQUFLLEVBQUUsTUFBTSxJQUFJLENBQUM7QUFDekIsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUN6QyxPQUFPLEtBQUssRUFBRSxNQUFNLElBQUksQ0FBQztBQUN6QixPQUFPLEtBQUssSUFBSSxNQUFNLE1BQU0sQ0FBQztBQUM3QixPQUFPLEtBQUssSUFBSSxNQUFNLE1BQU0sQ0FBQztBQUM3QixPQUFPLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUN6RSxPQUFPLEVBQWUsTUFBTSxtQkFBbUIsQ0FBQztBQUVoRCwwREFBMEQ7QUFDMUQsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBSS9EOztHQUVHO0FBQ0gsTUFBTSxhQUFhLEdBQXlCO0lBQzFDLEdBQUcsRUFBRTtRQUNILE9BQU8sRUFBRSx3QkFBd0I7UUFDakMsT0FBTyxFQUFFLE1BQU07UUFDZixXQUFXLEVBQUUsZUFBZTtRQUM1QixlQUFlLEVBQUUsZ0JBQWdCO1FBQ2pDLFNBQVMsRUFBRSxhQUFhO1FBQ3hCLGFBQWEsRUFBRSxjQUFjO1FBQzdCLGVBQWUsRUFBRSxvQkFBb0I7UUFDckMsa0JBQWtCLEVBQUUsSUFBSTtLQUN6QjtDQUNGLENBQUM7QUFFRiw0REFBNEQ7QUFDNUQsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxPQUFPLEVBQUUsRUFBRSxtQkFBbUIsRUFBRSxZQUFZLENBQUMsQ0FBQztBQUVwRjs7O0dBR0c7QUFDSCxT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QVMsRUFBRSxDQUFDO0lBQzNCLE9BQU8sT0FBTyxDQUFDLFNBQVMsS0FBSyxLQUFLLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDO0FBQ3hFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAyNiBQaXBlbGluZSBCdWlsZGVyIENvbnRyaWJ1dG9yc1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcblxuaW1wb3J0ICogYXMgZnMgZnJvbSAnZnMnO1xuaW1wb3J0IHsgZmlsZVVSTFRvUGF0aCB9IGZyb20gJ25vZGU6dXJsJztcbmltcG9ydCAqIGFzIG9zIGZyb20gJ29zJztcbmltcG9ydCAqIGFzIHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgKiBhcyB5YW1sIGZyb20gJ3lhbWwnO1xuaW1wb3J0IHsgcHJpbnREZWJ1ZywgcHJpbnRFcnJvciwgcHJpbnRXYXJuaW5nIH0gZnJvbSAnLi9vdXRwdXQtdXRpbHMuanMnO1xuaW1wb3J0IHsgdHlwZSBDb25maWcgfSBmcm9tICcuLi90eXBlcy9pbmRleC5qcyc7XG5cbi8vIEVTTSBoYXMgbm8gX19kaXJuYW1lOyBkZXJpdmUgaXQgZnJvbSB0aGlzIG1vZHVsZSdzIFVSTC5cbmNvbnN0IF9fZGlybmFtZSA9IHBhdGguZGlybmFtZShmaWxlVVJMVG9QYXRoKGltcG9ydC5tZXRhLnVybCkpO1xuXG5leHBvcnQgdHlwZSB7IENvbmZpZyB9O1xuXG4vKipcbiAqIERlZmF1bHQgY29uZmlndXJhdGlvbiDigJQgQVBJIGVuZHBvaW50IHBhdGhzIGFuZCBjb25uZWN0aW9uIHNldHRpbmdzLlxuICovXG5jb25zdCBkZWZhdWx0Q29uZmlnOiBPbWl0PENvbmZpZywgJ2F1dGgnPiA9IHtcbiAgYXBpOiB7XG4gICAgYmFzZVVybDogJ2h0dHBzOi8vbG9jYWxob3N0Ojg0NDMnLFxuICAgIHRpbWVvdXQ6IDMwXzAwMCxcbiAgICBwaXBlbGluZVVybDogJy9hcGkvcGlwZWxpbmUnLFxuICAgIHBpcGVsaW5lTGlzdFVybDogJy9hcGkvcGlwZWxpbmVzJyxcbiAgICBwbHVnaW5Vcmw6ICcvYXBpL3BsdWdpbicsXG4gICAgcGx1Z2luTGlzdFVybDogJy9hcGkvcGx1Z2lucycsXG4gICAgcGx1Z2luVXBsb2FkVXJsOiAnL2FwaS9wbHVnaW4vdXBsb2FkJyxcbiAgICByZWplY3RVbmF1dGhvcml6ZWQ6IHRydWUsXG4gIH0sXG59O1xuXG4vKiogVXNlciBjb25maWcgZmlsZSBwYXRoOiB+Ly5waXBlbGluZS1tYW5hZ2VyL2NvbmZpZy55bWwgKi9cbmNvbnN0IFVTRVJfQ09ORklHX1BBVEggPSBwYXRoLmpvaW4ob3MuaG9tZWRpcigpLCAnLnBpcGVsaW5lLW1hbmFnZXInLCAnY29uZmlnLnltbCcpO1xuXG4vKipcbiAqIExvYWQgYSBZQU1MIGNvbmZpZyBmaWxlIGFuZCBtZXJnZSBpdHMgYGFwaWAgc2VjdGlvbiBpbnRvIHRoZSBjb25maWcuXG4gKiBSZXR1cm5zIHRoZSBtZXJnZWQgY29uZmlnIG9yIHRoZSBvcmlnaW5hbCBpZiBmaWxlIGRvZXNuJ3QgZXhpc3Qgb3IgZmFpbHMuXG4gKi9cbmZ1bmN0aW9uIGxvYWRDb25maWdGaWxlKGZpbGVQYXRoOiBzdHJpbmcsIGNvbmZpZzogT21pdDxDb25maWcsICdhdXRoJz4pOiBPbWl0PENvbmZpZywgJ2F1dGgnPiB7XG4gIGlmICghZnMuZXhpc3RzU3luYyhmaWxlUGF0aCkpIHJldHVybiBjb25maWc7XG5cbiAgdHJ5IHtcbiAgICBwcmludERlYnVnKCdMb2FkaW5nIGNvbmZpZ3VyYXRpb24nLCB7IHBhdGg6IGZpbGVQYXRoIH0pO1xuICAgIGNvbnN0IHBhcnNlZCA9IHlhbWwucGFyc2UoZnMucmVhZEZpbGVTeW5jKGZpbGVQYXRoLCAndXRmLTgnKSk7XG4gICAgaWYgKHBhcnNlZD8uYXV0aCkge1xuICAgICAgcHJpbnRXYXJuaW5nKCdBdXRoIHNlY3Rpb24gaW4gY29uZmlnIGZpbGUgaXMgaWdub3JlZCDigJQgdXNlIFBMQVRGT1JNX1RPS0VOIGVudiB2YXInKTtcbiAgICB9XG4gICAgcmV0dXJuIHsgYXBpOiB7IC4uLmNvbmZpZy5hcGksIC4uLnBhcnNlZD8uYXBpIH0gfTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICBwcmludFdhcm5pbmcoJ0ZhaWxlZCB0byBsb2FkIGNvbmZpZyBmaWxlLCB1c2luZyBkZWZhdWx0cycsIHtcbiAgICAgIHBhdGg6IGZpbGVQYXRoLFxuICAgICAgZXJyb3I6IGVycm9yIGluc3RhbmNlb2YgRXJyb3IgPyBlcnJvci5tZXNzYWdlIDogU3RyaW5nKGVycm9yKSxcbiAgICB9KTtcbiAgICByZXR1cm4gY29uZmlnO1xuICB9XG59XG5cbi8qKlxuICogTG9hZCBjb25maWd1cmF0aW9uIGZyb20gZmlsZXMgYW5kIGVudmlyb25tZW50LlxuICpcbiAqIFByaW9yaXR5IChsYXN0IHdpbnMpOlxuICogMS4gQnVpbHQtaW4gZGVmYXVsdHNcbiAqIDIuIFVzZXIgY29uZmlnIGZpbGU6IH4vLnBpcGVsaW5lLW1hbmFnZXIvY29uZmlnLnltbFxuICogMy4gUHJvamVjdCBjb25maWcgZmlsZTogQ0xJX0NPTkZJR19QQVRIIG9yIC4vY29uZmlnLnltbFxuICogNC4gRW52aXJvbm1lbnQgdmFyaWFibGVzXG4gKlxuICogQXV0aCB0b2tlbiBNVVNUIGNvbWUgZnJvbSBQTEFURk9STV9UT0tFTiBlbnYgdmFyIChuZXZlciBmcm9tIGNvbmZpZyBmaWxlKS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldENvbmZpZygpOiBDb25maWcge1xuICBjb25zdCBwcm9qZWN0Q29uZmlnUGF0aCA9IHByb2Nlc3MuZW52LkNMSV9DT05GSUdfUEFUSCB8fCBwYXRoLmpvaW4oX19kaXJuYW1lLCAnLi4vY29uZmlnLnltbCcpO1xuXG4gIC8vIExheWVyIDE6IGRlZmF1bHRzIOKGkiBMYXllciAyOiB1c2VyIGNvbmZpZyDihpIgTGF5ZXIgMzogcHJvamVjdCBjb25maWdcbiAgbGV0IGNvbmZpZyA9IGxvYWRDb25maWdGaWxlKFVTRVJfQ09ORklHX1BBVEgsIHsgLi4uZGVmYXVsdENvbmZpZyB9KTtcbiAgY29uZmlnID0gbG9hZENvbmZpZ0ZpbGUocHJvamVjdENvbmZpZ1BhdGgsIGNvbmZpZyk7XG5cbiAgLy8gTGF5ZXIgNDogZW52aXJvbm1lbnQgdmFyaWFibGUgb3ZlcnJpZGVzXG4gIGlmIChwcm9jZXNzLmVudi5QTEFURk9STV9CQVNFX1VSTCkge1xuICAgIGNvbmZpZy5hcGkuYmFzZVVybCA9IHByb2Nlc3MuZW52LlBMQVRGT1JNX0JBU0VfVVJMO1xuICAgIHByaW50RGVidWcoJ1VzaW5nIFBMQVRGT1JNX0JBU0VfVVJMIGZyb20gZW52aXJvbm1lbnQnLCB7IGJhc2VVcmw6IGNvbmZpZy5hcGkuYmFzZVVybCB9KTtcbiAgfVxuXG4gIGlmIChwcm9jZXNzLmVudi5UTFNfUkVKRUNUX1VOQVVUSE9SSVpFRCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgY29uc3QgZGlzYWJsZSA9IHByb2Nlc3MuZW52LlRMU19SRUpFQ1RfVU5BVVRIT1JJWkVEID09PSAnMCc7XG4gICAgaWYgKGRpc2FibGUgJiYgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgcHJpbnRXYXJuaW5nKCdJZ25vcmluZyBUTFNfUkVKRUNUX1VOQVVUSE9SSVpFRD0wIGluIHByb2R1Y3Rpb24g4oCUIFNTTCB2ZXJpZmljYXRpb24gcmVtYWlucyBlbmFibGVkJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbmZpZy5hcGkucmVqZWN0VW5hdXRob3JpemVkID0gIWRpc2FibGU7XG4gICAgICBpZiAoZGlzYWJsZSkge1xuICAgICAgICBwcmludFdhcm5pbmcoJ1NTTCBjZXJ0aWZpY2F0ZSB2YWxpZGF0aW9uIGRpc2FibGVkIHZpYSBUTFNfUkVKRUNUX1VOQVVUSE9SSVpFRD0wJyk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgaWYgKHByb2Nlc3MuZW52LlVQTE9BRF9USU1FT1VUKSB7XG4gICAgY29uc3QgcGFyc2VkID0gcGFyc2VJbnQocHJvY2Vzcy5lbnYuVVBMT0FEX1RJTUVPVVQsIDEwKTtcbiAgICBpZiAoIWlzTmFOKHBhcnNlZCkgJiYgcGFyc2VkID4gMCkge1xuICAgICAgY29uZmlnLmFwaS51cGxvYWRUaW1lb3V0ID0gcGFyc2VkO1xuICAgICAgcHJpbnREZWJ1ZygnVXNpbmcgVVBMT0FEX1RJTUVPVVQgZnJvbSBlbnZpcm9ubWVudCcsIHsgdXBsb2FkVGltZW91dDogYCR7cGFyc2VkfW1zYCB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgcHJpbnRXYXJuaW5nKCdJbnZhbGlkIFVQTE9BRF9USU1FT1VUIHZhbHVlLCB1c2luZyBkZWZhdWx0JywgeyBwcm92aWRlZDogcHJvY2Vzcy5lbnYuVVBMT0FEX1RJTUVPVVQgfSk7XG4gICAgfVxuICB9XG5cbiAgLy8gVG9rZW4gaXMgUkVRVUlSRUQgZnJvbSBlbnZpcm9ubWVudFxuICBjb25zdCB0b2tlbiA9IHByb2Nlc3MuZW52LlBMQVRGT1JNX1RPS0VOO1xuXG4gIGlmICghdG9rZW4pIHtcbiAgICBwcmludEVycm9yKCdQTEFURk9STV9UT0tFTiBlbnZpcm9ubWVudCB2YXJpYWJsZSBpcyBub3Qgc2V0Jyk7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdQTEFURk9STV9UT0tFTiBlbnZpcm9ubWVudCB2YXJpYWJsZSBpcyByZXF1aXJlZCcpO1xuICB9XG5cbiAgaWYgKHRva2VuLnRyaW0oKS5sZW5ndGggPT09IDApIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1BMQVRGT1JNX1RPS0VOIG11c3QgYmUgYSBub24tZW1wdHkgc3RyaW5nJyk7XG4gIH1cblxuICBpZiAodG9rZW4uaW5jbHVkZXMoJyAnKSkge1xuICAgIHByaW50V2FybmluZygnUExBVEZPUk1fVE9LRU4gY29udGFpbnMgd2hpdGVzcGFjZSDigJQgdGhpcyBtYXkgY2F1c2UgaXNzdWVzJyk7XG4gIH1cblxuICBwcmludERlYnVnKCdDb25maWd1cmF0aW9uIGxvYWRlZCBzdWNjZXNzZnVsbHknKTtcblxuICByZXR1cm4ge1xuICAgIC4uLmNvbmZpZyxcbiAgICBhdXRoOiB7IHRva2VuIH0sXG4gIH07XG59XG5cbi8qKlxuICogUmV0dXJuIGEgY29weSBvZiBgY29uZmlnYCB3aXRoIFNTTCB2ZXJpZmljYXRpb24gZGlzYWJsZWQuIE1vZHVsZS1wcml2YXRlIOKAlCB0aGVcbiAqIG9ubHkgY2FsbGVyIGlzIGBnZXRDb25maWdXaXRoT3B0aW9uc2AgYmVsb3cuXG4gKi9cbmZ1bmN0aW9uIHdpdGhTU0xEaXNhYmxlZChjb25maWc6IENvbmZpZyk6IENvbmZpZyB7XG4gIHJldHVybiB7XG4gICAgLi4uY29uZmlnLFxuICAgIGFwaTogeyAuLi5jb25maWcuYXBpLCByZWplY3RVbmF1dGhvcml6ZWQ6IGZhbHNlIH0sXG4gIH07XG59XG5cbi8qKlxuICogTG9hZCBjb25maWd1cmF0aW9uLCBvcHRpb25hbGx5IGRpc2FibGluZyBTU0wgYmFzZWQgb24gY29tbWFuZCBvcHRpb25zLlxuICogUmVwbGFjZXMgdGhlIHJlcGVhdGVkIHBhdHRlcm46XG4gKiAgIGBvcHRpb25zLnZlcmlmeVNzbCA9PT0gZmFsc2UgPyB3aXRoU1NMRGlzYWJsZWQoZ2V0Q29uZmlnKCkpIDogZ2V0Q29uZmlnKClgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRDb25maWdXaXRoT3B0aW9ucyhvcHRpb25zOiB7IHZlcmlmeVNzbD86IGJvb2xlYW4gfSk6IENvbmZpZyB7XG4gIGNvbnN0IGNvbmZpZyA9IGdldENvbmZpZygpO1xuICByZXR1cm4gb3B0aW9ucy52ZXJpZnlTc2wgPT09IGZhbHNlID8gd2l0aFNTTERpc2FibGVkKGNvbmZpZykgOiBjb25maWc7XG59XG4iXX0=
@@ -0,0 +1,33 @@
1
+ /**
2
+ * Shared pipeline-config resolution used by both `synth` and `deploy` so the two
3
+ * commands fetch, plugin-resolve, registry-bake, and template-preview identically
4
+ * (they previously kept near-duplicate copies that could drift).
5
+ */
6
+ import type { Pipeline } from '../types/pipeline.js';
7
+ import type { ApiClient } from './api-client.js';
8
+ export interface FetchedPipeline {
9
+ /** The raw pipeline record (id/org/project/flags) as returned by the platform. */
10
+ readonly pipeline: Pipeline;
11
+ /** props + pipelineId (+ orgId) + resolvedPlugins, with the registry pull-host baked in. */
12
+ readonly propsWithIds: Record<string, unknown>;
13
+ /** The resolved platform base URL the config was fetched against. */
14
+ readonly baseUrl: string;
15
+ }
16
+ /**
17
+ * Fetch a pipeline by id and build the synth/deploy props:
18
+ * - GET the pipeline and validate it has `props`,
19
+ * - assemble `propsWithIds` (props + pipelineId + orgId),
20
+ * - pre-resolve plugins so the template ships real CodeBuild image URIs
21
+ * (otherwise CDK falls back to standard:7.0 at deploy time),
22
+ * - bake the registry pull-host from the platform URL (no-op when
23
+ * IMAGE_REGISTRY_PULL_HOST is set).
24
+ */
25
+ export declare function fetchPipelineProps(client: ApiClient, pipelineId: string): Promise<FetchedPipeline>;
26
+ /**
27
+ * Apply pass-1 self-referencing template resolution to `propsWithIds` and print it
28
+ * to stdout (used by `synth --show-resolved` / `deploy --show-resolved`). Exits with
29
+ * code 1 if resolution reports errors. `resolveSelfReferencing` mutates the object
30
+ * in place, so the printed JSON reflects the expanded templates.
31
+ */
32
+ export declare function printResolvedOrExit(propsWithIds: Record<string, unknown>): Promise<void>;
33
+ //# sourceMappingURL=pipeline-config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pipeline-config.d.ts","sourceRoot":"","sources":["../../src/utils/pipeline-config.ts"],"names":[],"mappings":"AAGA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAKjD,MAAM,WAAW,eAAe;IAC9B,kFAAkF;IAClF,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAC5B,4FAA4F;IAC5F,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/C,qEAAqE;IACrE,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAED;;;;;;;;GAQG;AACH,wBAAsB,kBAAkB,CAAC,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,CAsBxG;AAED;;;;;GAKG;AACH,wBAAsB,mBAAmB,CAAC,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAW9F"}
@@ -0,0 +1,54 @@
1
+ // Copyright 2026 Pipeline Builder Contributors
2
+ // SPDX-License-Identifier: Apache-2.0
3
+ import { extractSingleResponse, printInfo } from './output-utils.js';
4
+ import { resolvePluginsForProps } from './plugin-resolver.js';
5
+ import { bakePlatformRegistry } from './registry.js';
6
+ /**
7
+ * Fetch a pipeline by id and build the synth/deploy props:
8
+ * - GET the pipeline and validate it has `props`,
9
+ * - assemble `propsWithIds` (props + pipelineId + orgId),
10
+ * - pre-resolve plugins so the template ships real CodeBuild image URIs
11
+ * (otherwise CDK falls back to standard:7.0 at deploy time),
12
+ * - bake the registry pull-host from the platform URL (no-op when
13
+ * IMAGE_REGISTRY_PULL_HOST is set).
14
+ */
15
+ export async function fetchPipelineProps(client, pipelineId) {
16
+ const config = client.getConfig();
17
+ const response = await client.get(`${config.api.pipelineUrl}/${pipelineId}`);
18
+ const pipeline = extractSingleResponse(response, 'pipeline', 'props');
19
+ if (!pipeline?.props) {
20
+ throw new Error(`Failed to retrieve pipeline props for ID: ${pipelineId}`);
21
+ }
22
+ const propsWithIds = {
23
+ ...pipeline.props,
24
+ ...(pipeline.orgId ? { orgId: pipeline.orgId } : {}),
25
+ pipelineId: pipeline.id || pipelineId,
26
+ };
27
+ const resolvedPlugins = await resolvePluginsForProps(client, propsWithIds);
28
+ if (Object.keys(resolvedPlugins).length > 0) {
29
+ propsWithIds.resolvedPlugins = resolvedPlugins;
30
+ printInfo('Pre-resolved plugins', { count: Object.keys(resolvedPlugins).length });
31
+ }
32
+ bakePlatformRegistry(propsWithIds, config.api.baseUrl);
33
+ return { pipeline, propsWithIds, baseUrl: config.api.baseUrl };
34
+ }
35
+ /**
36
+ * Apply pass-1 self-referencing template resolution to `propsWithIds` and print it
37
+ * to stdout (used by `synth --show-resolved` / `deploy --show-resolved`). Exits with
38
+ * code 1 if resolution reports errors. `resolveSelfReferencing` mutates the object
39
+ * in place, so the printed JSON reflects the expanded templates.
40
+ */
41
+ export async function printResolvedOrExit(propsWithIds) {
42
+ const { resolveSelfReferencing } = await import('@pipeline-builder/pipeline-core');
43
+ const scope = { metadata: propsWithIds.metadata ?? {}, vars: propsWithIds.vars ?? {} };
44
+ const isTpl = (f) => f === 'projectName' || f.startsWith('metadata.') || f.startsWith('vars.');
45
+ const result = resolveSelfReferencing(propsWithIds, scope, isTpl, (f) => (isTpl(f) ? f : null), 'pipeline');
46
+ if (result.errors.length) {
47
+ console.error('Resolution errors:');
48
+ for (const e of result.errors)
49
+ console.error(` [${e.field ?? '?'}] ${e.message}`);
50
+ process.exit(1);
51
+ }
52
+ console.log(JSON.stringify(propsWithIds, null, 2));
53
+ }
54
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGlwZWxpbmUtY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3V0aWxzL3BpcGVsaW5lLWNvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQ0FBK0M7QUFDL0Msc0NBQXNDO0FBVXRDLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxTQUFTLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNyRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUM5RCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFXckQ7Ozs7Ozs7O0dBUUc7QUFDSCxNQUFNLENBQUMsS0FBSyxVQUFVLGtCQUFrQixDQUFDLE1BQWlCLEVBQUUsVUFBa0I7SUFDNUUsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQ2xDLE1BQU0sUUFBUSxHQUFHLE1BQU0sTUFBTSxDQUFDLEdBQUcsQ0FBMEIsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLFdBQVcsSUFBSSxVQUFVLEVBQUUsQ0FBQyxDQUFDO0lBQ3RHLE1BQU0sUUFBUSxHQUFHLHFCQUFxQixDQUFXLFFBQVEsRUFBRSxVQUFVLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDaEYsSUFBSSxDQUFDLFFBQVEsRUFBRSxLQUFLLEVBQUUsQ0FBQztRQUNyQixNQUFNLElBQUksS0FBSyxDQUFDLDZDQUE2QyxVQUFVLEVBQUUsQ0FBQyxDQUFDO0lBQzdFLENBQUM7SUFFRCxNQUFNLFlBQVksR0FBNEI7UUFDNUMsR0FBSSxRQUFRLENBQUMsS0FBaUM7UUFDOUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFFLFFBQVEsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQ3BELFVBQVUsRUFBRSxRQUFRLENBQUMsRUFBRSxJQUFJLFVBQVU7S0FDdEMsQ0FBQztJQUVGLE1BQU0sZUFBZSxHQUFHLE1BQU0sc0JBQXNCLENBQUMsTUFBTSxFQUFFLFlBQVksQ0FBQyxDQUFDO0lBQzNFLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7UUFDNUMsWUFBWSxDQUFDLGVBQWUsR0FBRyxlQUFlLENBQUM7UUFDL0MsU0FBUyxDQUFDLHNCQUFzQixFQUFFLEVBQUUsS0FBSyxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztJQUNwRixDQUFDO0lBRUQsb0JBQW9CLENBQUMsWUFBWSxFQUFFLE1BQU0sQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDdkQsT0FBTyxFQUFFLFFBQVEsRUFBRSxZQUFZLEVBQUUsT0FBTyxFQUFFLE1BQU0sQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFLENBQUM7QUFDakUsQ0FBQztBQUVEOzs7OztHQUtHO0FBQ0gsTUFBTSxDQUFDLEtBQUssVUFBVSxtQkFBbUIsQ0FBQyxZQUFxQztJQUM3RSxNQUFNLEVBQUUsc0JBQXNCLEVBQUUsR0FBRyxNQUFNLE1BQU0sQ0FBQyxpQ0FBaUMsQ0FBQyxDQUFDO0lBQ25GLE1BQU0sS0FBSyxHQUFHLEVBQUUsUUFBUSxFQUFFLFlBQVksQ0FBQyxRQUFRLElBQUksRUFBRSxFQUFFLElBQUksRUFBRSxZQUFZLENBQUMsSUFBSSxJQUFJLEVBQUUsRUFBRSxDQUFDO0lBQ3ZGLE1BQU0sS0FBSyxHQUFHLENBQUMsQ0FBUyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEtBQUssYUFBYSxJQUFJLENBQUMsQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUN2RyxNQUFNLE1BQU0sR0FBRyxzQkFBc0IsQ0FBQyxZQUFZLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQVMsRUFBRSxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsVUFBVSxDQUFDLENBQUM7SUFDcEgsSUFBSSxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ3pCLE9BQU8sQ0FBQyxLQUFLLENBQUMsb0JBQW9CLENBQUMsQ0FBQztRQUNwQyxLQUFLLE1BQU0sQ0FBQyxJQUFJLE1BQU0sQ0FBQyxNQUFNO1lBQUUsT0FBTyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxLQUFLLElBQUksR0FBRyxLQUFLLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO1FBQ25GLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbEIsQ0FBQztJQUNELE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxZQUFZLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDckQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDI2IFBpcGVsaW5lIEJ1aWxkZXIgQ29udHJpYnV0b3JzXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuXG4vKipcbiAqIFNoYXJlZCBwaXBlbGluZS1jb25maWcgcmVzb2x1dGlvbiB1c2VkIGJ5IGJvdGggYHN5bnRoYCBhbmQgYGRlcGxveWAgc28gdGhlIHR3b1xuICogY29tbWFuZHMgZmV0Y2gsIHBsdWdpbi1yZXNvbHZlLCByZWdpc3RyeS1iYWtlLCBhbmQgdGVtcGxhdGUtcHJldmlldyBpZGVudGljYWxseVxuICogKHRoZXkgcHJldmlvdXNseSBrZXB0IG5lYXItZHVwbGljYXRlIGNvcGllcyB0aGF0IGNvdWxkIGRyaWZ0KS5cbiAqL1xuXG5pbXBvcnQgdHlwZSB7IFBpcGVsaW5lIH0gZnJvbSAnLi4vdHlwZXMvcGlwZWxpbmUuanMnO1xuaW1wb3J0IHR5cGUgeyBBcGlDbGllbnQgfSBmcm9tICcuL2FwaS1jbGllbnQuanMnO1xuaW1wb3J0IHsgZXh0cmFjdFNpbmdsZVJlc3BvbnNlLCBwcmludEluZm8gfSBmcm9tICcuL291dHB1dC11dGlscy5qcyc7XG5pbXBvcnQgeyByZXNvbHZlUGx1Z2luc0ZvclByb3BzIH0gZnJvbSAnLi9wbHVnaW4tcmVzb2x2ZXIuanMnO1xuaW1wb3J0IHsgYmFrZVBsYXRmb3JtUmVnaXN0cnkgfSBmcm9tICcuL3JlZ2lzdHJ5LmpzJztcblxuZXhwb3J0IGludGVyZmFjZSBGZXRjaGVkUGlwZWxpbmUge1xuICAvKiogVGhlIHJhdyBwaXBlbGluZSByZWNvcmQgKGlkL29yZy9wcm9qZWN0L2ZsYWdzKSBhcyByZXR1cm5lZCBieSB0aGUgcGxhdGZvcm0uICovXG4gIHJlYWRvbmx5IHBpcGVsaW5lOiBQaXBlbGluZTtcbiAgLyoqIHByb3BzICsgcGlwZWxpbmVJZCAoKyBvcmdJZCkgKyByZXNvbHZlZFBsdWdpbnMsIHdpdGggdGhlIHJlZ2lzdHJ5IHB1bGwtaG9zdCBiYWtlZCBpbi4gKi9cbiAgcmVhZG9ubHkgcHJvcHNXaXRoSWRzOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgLyoqIFRoZSByZXNvbHZlZCBwbGF0Zm9ybSBiYXNlIFVSTCB0aGUgY29uZmlnIHdhcyBmZXRjaGVkIGFnYWluc3QuICovXG4gIHJlYWRvbmx5IGJhc2VVcmw6IHN0cmluZztcbn1cblxuLyoqXG4gKiBGZXRjaCBhIHBpcGVsaW5lIGJ5IGlkIGFuZCBidWlsZCB0aGUgc3ludGgvZGVwbG95IHByb3BzOlxuICogIC0gR0VUIHRoZSBwaXBlbGluZSBhbmQgdmFsaWRhdGUgaXQgaGFzIGBwcm9wc2AsXG4gKiAgLSBhc3NlbWJsZSBgcHJvcHNXaXRoSWRzYCAocHJvcHMgKyBwaXBlbGluZUlkICsgb3JnSWQpLFxuICogIC0gcHJlLXJlc29sdmUgcGx1Z2lucyBzbyB0aGUgdGVtcGxhdGUgc2hpcHMgcmVhbCBDb2RlQnVpbGQgaW1hZ2UgVVJJc1xuICogICAgKG90aGVyd2lzZSBDREsgZmFsbHMgYmFjayB0byBzdGFuZGFyZDo3LjAgYXQgZGVwbG95IHRpbWUpLFxuICogIC0gYmFrZSB0aGUgcmVnaXN0cnkgcHVsbC1ob3N0IGZyb20gdGhlIHBsYXRmb3JtIFVSTCAobm8tb3Agd2hlblxuICogICAgSU1BR0VfUkVHSVNUUllfUFVMTF9IT1NUIGlzIHNldCkuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBmZXRjaFBpcGVsaW5lUHJvcHMoY2xpZW50OiBBcGlDbGllbnQsIHBpcGVsaW5lSWQ6IHN0cmluZyk6IFByb21pc2U8RmV0Y2hlZFBpcGVsaW5lPiB7XG4gIGNvbnN0IGNvbmZpZyA9IGNsaWVudC5nZXRDb25maWcoKTtcbiAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBjbGllbnQuZ2V0PFJlY29yZDxzdHJpbmcsIHVua25vd24+PihgJHtjb25maWcuYXBpLnBpcGVsaW5lVXJsfS8ke3BpcGVsaW5lSWR9YCk7XG4gIGNvbnN0IHBpcGVsaW5lID0gZXh0cmFjdFNpbmdsZVJlc3BvbnNlPFBpcGVsaW5lPihyZXNwb25zZSwgJ3BpcGVsaW5lJywgJ3Byb3BzJyk7XG4gIGlmICghcGlwZWxpbmU/LnByb3BzKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBGYWlsZWQgdG8gcmV0cmlldmUgcGlwZWxpbmUgcHJvcHMgZm9yIElEOiAke3BpcGVsaW5lSWR9YCk7XG4gIH1cblxuICBjb25zdCBwcm9wc1dpdGhJZHM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0ge1xuICAgIC4uLihwaXBlbGluZS5wcm9wcyBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiksXG4gICAgLi4uKHBpcGVsaW5lLm9yZ0lkID8geyBvcmdJZDogcGlwZWxpbmUub3JnSWQgfSA6IHt9KSxcbiAgICBwaXBlbGluZUlkOiBwaXBlbGluZS5pZCB8fCBwaXBlbGluZUlkLFxuICB9O1xuXG4gIGNvbnN0IHJlc29sdmVkUGx1Z2lucyA9IGF3YWl0IHJlc29sdmVQbHVnaW5zRm9yUHJvcHMoY2xpZW50LCBwcm9wc1dpdGhJZHMpO1xuICBpZiAoT2JqZWN0LmtleXMocmVzb2x2ZWRQbHVnaW5zKS5sZW5ndGggPiAwKSB7XG4gICAgcHJvcHNXaXRoSWRzLnJlc29sdmVkUGx1Z2lucyA9IHJlc29sdmVkUGx1Z2lucztcbiAgICBwcmludEluZm8oJ1ByZS1yZXNvbHZlZCBwbHVnaW5zJywgeyBjb3VudDogT2JqZWN0LmtleXMocmVzb2x2ZWRQbHVnaW5zKS5sZW5ndGggfSk7XG4gIH1cblxuICBiYWtlUGxhdGZvcm1SZWdpc3RyeShwcm9wc1dpdGhJZHMsIGNvbmZpZy5hcGkuYmFzZVVybCk7XG4gIHJldHVybiB7IHBpcGVsaW5lLCBwcm9wc1dpdGhJZHMsIGJhc2VVcmw6IGNvbmZpZy5hcGkuYmFzZVVybCB9O1xufVxuXG4vKipcbiAqIEFwcGx5IHBhc3MtMSBzZWxmLXJlZmVyZW5jaW5nIHRlbXBsYXRlIHJlc29sdXRpb24gdG8gYHByb3BzV2l0aElkc2AgYW5kIHByaW50IGl0XG4gKiB0byBzdGRvdXQgKHVzZWQgYnkgYHN5bnRoIC0tc2hvdy1yZXNvbHZlZGAgLyBgZGVwbG95IC0tc2hvdy1yZXNvbHZlZGApLiBFeGl0cyB3aXRoXG4gKiBjb2RlIDEgaWYgcmVzb2x1dGlvbiByZXBvcnRzIGVycm9ycy4gYHJlc29sdmVTZWxmUmVmZXJlbmNpbmdgIG11dGF0ZXMgdGhlIG9iamVjdFxuICogaW4gcGxhY2UsIHNvIHRoZSBwcmludGVkIEpTT04gcmVmbGVjdHMgdGhlIGV4cGFuZGVkIHRlbXBsYXRlcy5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHByaW50UmVzb2x2ZWRPckV4aXQocHJvcHNXaXRoSWRzOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPik6IFByb21pc2U8dm9pZD4ge1xuICBjb25zdCB7IHJlc29sdmVTZWxmUmVmZXJlbmNpbmcgfSA9IGF3YWl0IGltcG9ydCgnQHBpcGVsaW5lLWJ1aWxkZXIvcGlwZWxpbmUtY29yZScpO1xuICBjb25zdCBzY29wZSA9IHsgbWV0YWRhdGE6IHByb3BzV2l0aElkcy5tZXRhZGF0YSA/PyB7fSwgdmFyczogcHJvcHNXaXRoSWRzLnZhcnMgPz8ge30gfTtcbiAgY29uc3QgaXNUcGwgPSAoZjogc3RyaW5nKSA9PiBmID09PSAncHJvamVjdE5hbWUnIHx8IGYuc3RhcnRzV2l0aCgnbWV0YWRhdGEuJykgfHwgZi5zdGFydHNXaXRoKCd2YXJzLicpO1xuICBjb25zdCByZXN1bHQgPSByZXNvbHZlU2VsZlJlZmVyZW5jaW5nKHByb3BzV2l0aElkcywgc2NvcGUsIGlzVHBsLCAoZjogc3RyaW5nKSA9PiAoaXNUcGwoZikgPyBmIDogbnVsbCksICdwaXBlbGluZScpO1xuICBpZiAocmVzdWx0LmVycm9ycy5sZW5ndGgpIHtcbiAgICBjb25zb2xlLmVycm9yKCdSZXNvbHV0aW9uIGVycm9yczonKTtcbiAgICBmb3IgKGNvbnN0IGUgb2YgcmVzdWx0LmVycm9ycykgY29uc29sZS5lcnJvcihgICBbJHtlLmZpZWxkID8/ICc/J31dICR7ZS5tZXNzYWdlfWApO1xuICAgIHByb2Nlc3MuZXhpdCgxKTtcbiAgfVxuICBjb25zb2xlLmxvZyhKU09OLnN0cmluZ2lmeShwcm9wc1dpdGhJZHMsIG51bGwsIDIpKTtcbn1cbiJdfQ==
@@ -1 +1 @@
1
- {"version":3,"file":"platform-secret.d.ts","sourceRoot":"","sources":["../../src/utils/platform-secret.ts"],"names":[],"mappings":"AAiBA,sEAAsE;AACtE,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC;CAC9B;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAOvD;AAED;;;;;GAKG;AACH,wBAAsB,mBAAmB,CAAC,OAAO,EAAE,qBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC,CAyBvF;AAED;;;;GAIG;AACH,wBAAsB,yBAAyB,CAAC,OAAO,EAAE,qBAAqB,GAAG,OAAO,CAAC,MAAM,CAAC,CAY/F"}
1
+ {"version":3,"file":"platform-secret.d.ts","sourceRoot":"","sources":["../../src/utils/platform-secret.ts"],"names":[],"mappings":"AAiBA,sEAAsE;AACtE,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC;CAC9B;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAOvD;AAED;;;;;GAKG;AACH,wBAAsB,mBAAmB,CAAC,OAAO,EAAE,qBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC,CA6BvF;AAED;;;;GAIG;AACH,wBAAsB,yBAAyB,CAAC,OAAO,EAAE,qBAAqB,GAAG,OAAO,CAAC,MAAM,CAAC,CAY/F"}
@@ -11,7 +11,7 @@ import { CoreConstants } from '@pipeline-builder/pipeline-core';
11
11
  import axios from 'axios';
12
12
  import { decodeTokenPayload } from './auth-guard.js';
13
13
  import { getConfigWithOptions } from './config-loader.js';
14
- import { printInfo, printSection, printSuccess } from './output-utils.js';
14
+ import { printInfo, printSection, printSuccess, printWarning } from './output-utils.js';
15
15
  /**
16
16
  * Derive the platform secret path from a JWT's organizationId.
17
17
  * Pattern: `{SECRETS_PATH_PREFIX}/{orgId}/platform`.
@@ -38,6 +38,9 @@ export async function ensurePlatformToken(options) {
38
38
  const loginPassword = options.password || process.env.PLATFORM_PASSWORD;
39
39
  if (!loginEmail || !loginPassword)
40
40
  return;
41
+ if (options.password) {
42
+ printWarning('Passing --password on the command line can expose it via shell history; prefer the PLATFORM_PASSWORD env var.');
43
+ }
41
44
  printSection('Login');
42
45
  printInfo('Authenticating with email/password...');
43
46
  const config = getConfigWithOptions(options);
@@ -71,4 +74,4 @@ export async function resolvePlatformSecretName(options) {
71
74
  }
72
75
  return resolveSecretName(process.env.PLATFORM_TOKEN);
73
76
  }
74
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxhdGZvcm0tc2VjcmV0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3V0aWxzL3BsYXRmb3JtLXNlY3JldC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQ0FBK0M7QUFDL0Msc0NBQXNDO0FBRXRDOzs7Ozs7R0FNRztBQUVILE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNoRSxPQUFPLEtBQUssTUFBTSxPQUFPLENBQUM7QUFDMUIsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDckQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDMUQsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFVMUU7Ozs7R0FJRztBQUNILE1BQU0sVUFBVSxpQkFBaUIsQ0FBQyxLQUFhO0lBQzdDLE1BQU0sT0FBTyxHQUFHLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzFDLE1BQU0sS0FBSyxHQUFHLE9BQU8sRUFBRSxjQUFjLENBQUM7SUFDdEMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ1gsTUFBTSxJQUFJLEtBQUssQ0FBQyw2R0FBNkcsQ0FBQyxDQUFDO0lBQ2pJLENBQUM7SUFDRCxPQUFPLEdBQUcsYUFBYSxDQUFDLG1CQUFtQixJQUFJLEtBQUssV0FBVyxDQUFDO0FBQ2xFLENBQUM7QUFFRDs7Ozs7R0FLRztBQUNILE1BQU0sQ0FBQyxLQUFLLFVBQVUsbUJBQW1CLENBQUMsT0FBOEI7SUFDdEUsSUFBSSxPQUFPLENBQUMsR0FBRyxDQUFDLGNBQWM7UUFBRSxPQUFPO0lBQ3ZDLE1BQU0sVUFBVSxHQUFHLE9BQU8sQ0FBQyxLQUFLLElBQUksT0FBTyxDQUFDLEdBQUcsQ0FBQyxtQkFBbUIsQ0FBQztJQUNwRSxNQUFNLGFBQWEsR0FBRyxPQUFPLENBQUMsUUFBUSxJQUFJLE9BQU8sQ0FBQyxHQUFHLENBQUMsaUJBQWlCLENBQUM7SUFDeEUsSUFBSSxDQUFDLFVBQVUsSUFBSSxDQUFDLGFBQWE7UUFBRSxPQUFPO0lBRTFDLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUN0QixTQUFTLENBQUMsdUNBQXVDLENBQUMsQ0FBQztJQUNuRCxNQUFNLE1BQU0sR0FBRyxvQkFBb0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUM3QyxNQUFNLGFBQWEsR0FBRyxNQUFNLEtBQUssQ0FBQyxJQUFJLENBQ3BDLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxPQUFPLGlCQUFpQixFQUN0QyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLGFBQWEsRUFBRSxFQUM5QztRQUNFLFVBQVUsRUFBRSxNQUFNLENBQUMsR0FBRyxDQUFDLGtCQUFrQixLQUFLLEtBQUs7WUFDakQsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxFQUFFLGtCQUFrQixFQUFFLEtBQUssRUFBRSxDQUFDO1lBQ2xFLENBQUMsQ0FBQyxTQUFTO0tBQ2QsQ0FDRixDQUFDO0lBQ0YsTUFBTSxTQUFTLEdBQUcsYUFBYSxDQUFDLElBQUksRUFBRSxJQUFJLElBQUksYUFBYSxDQUFDLElBQUksQ0FBQztJQUNqRSxNQUFNLFVBQVUsR0FBRyxTQUFTLEVBQUUsV0FBVyxDQUFDO0lBQzFDLElBQUksQ0FBQyxVQUFVLElBQUksT0FBTyxVQUFVLEtBQUssUUFBUSxFQUFFLENBQUM7UUFDbEQsTUFBTSxJQUFJLEtBQUssQ0FBQyw0Q0FBNEMsQ0FBQyxDQUFDO0lBQ2hFLENBQUM7SUFDRCxPQUFPLENBQUMsR0FBRyxDQUFDLGNBQWMsR0FBRyxVQUFVLENBQUM7SUFDeEMsWUFBWSxDQUFDLGtCQUFrQixDQUFDLENBQUM7QUFDbkMsQ0FBQztBQUVEOzs7O0dBSUc7QUFDSCxNQUFNLENBQUMsS0FBSyxVQUFVLHlCQUF5QixDQUFDLE9BQThCO0lBQzVFLE1BQU0sUUFBUSxHQUFHLE9BQU8sQ0FBQyxVQUFVLElBQUksT0FBTyxDQUFDLEdBQUcsQ0FBQyxvQkFBb0IsQ0FBQztJQUN4RSxJQUFJLFFBQVE7UUFBRSxPQUFPLFFBQVEsQ0FBQztJQUM5QixNQUFNLG1CQUFtQixDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ25DLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ2hDLE1BQU0sSUFBSSxLQUFLLENBQ2IsZ0ZBQWdGO2NBQzlFLHdFQUF3RTtjQUN4RSxnRUFBZ0UsQ0FDbkUsQ0FBQztJQUNKLENBQUM7SUFDRCxPQUFPLGlCQUFpQixDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsY0FBYyxDQUFDLENBQUM7QUFDdkQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDI2IFBpcGVsaW5lIEJ1aWxkZXIgQ29udHJpYnV0b3JzXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuXG4vKipcbiAqIFNoYXJlZCBwbGF0Zm9ybS10b2tlbiDihpIgc2VjcmV0LW5hbWUgcmVzb2x1dGlvbiwgdXNlZCBieSBib3RoIGBzdG9yZS10b2tlbmBcbiAqICh3aGljaCBXUklURVMgdGhlIEpXVCB0byBTZWNyZXRzIE1hbmFnZXIpIGFuZCBgc2V0dXAtZXZlbnRzYCAod2hpY2ggZGVwbG95cyB0aGVcbiAqIExhbWJkYSB0aGF0IFJFQURTIGl0KS4gQm90aCBtdXN0IGFncmVlIG9uIHRoZSBzYW1lIHNlY3JldCBwYXRoLCBzbyB0aGUgbG9naWNcbiAqIGxpdmVzIGhlcmUgb25jZTogZGVyaXZlIGB7U0VDUkVUU19QQVRIX1BSRUZJWH0ve29yZ0lkfS9wbGF0Zm9ybWAgZnJvbSB0aGUgSldUJ3NcbiAqIG9yZ2FuaXphdGlvbklkLCBsb2dnaW5nIGluIGZpcnN0IGlmIG5lZWRlZCB0byBvYnRhaW4gdGhlIHRva2VuLlxuICovXG5cbmltcG9ydCB7IENvcmVDb25zdGFudHMgfSBmcm9tICdAcGlwZWxpbmUtYnVpbGRlci9waXBlbGluZS1jb3JlJztcbmltcG9ydCBheGlvcyBmcm9tICdheGlvcyc7XG5pbXBvcnQgeyBkZWNvZGVUb2tlblBheWxvYWQgfSBmcm9tICcuL2F1dGgtZ3VhcmQuanMnO1xuaW1wb3J0IHsgZ2V0Q29uZmlnV2l0aE9wdGlvbnMgfSBmcm9tICcuL2NvbmZpZy1sb2FkZXIuanMnO1xuaW1wb3J0IHsgcHJpbnRJbmZvLCBwcmludFNlY3Rpb24sIHByaW50U3VjY2VzcyB9IGZyb20gJy4vb3V0cHV0LXV0aWxzLmpzJztcblxuLyoqIExvZ2luL3NlY3JldCBvcHRpb25zIHNoYXJlZCBhY3Jvc3MgdGhlIHBsYXRmb3JtLXNlY3JldCBoZWxwZXJzLiAqL1xuZXhwb3J0IGludGVyZmFjZSBQbGF0Zm9ybVNlY3JldE9wdGlvbnMge1xuICByZWFkb25seSBzZWNyZXROYW1lPzogc3RyaW5nO1xuICByZWFkb25seSBlbWFpbD86IHN0cmluZztcbiAgcmVhZG9ubHkgcGFzc3dvcmQ/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IHZlcmlmeVNzbD86IGJvb2xlYW47XG59XG5cbi8qKlxuICogRGVyaXZlIHRoZSBwbGF0Zm9ybSBzZWNyZXQgcGF0aCBmcm9tIGEgSldUJ3Mgb3JnYW5pemF0aW9uSWQuXG4gKiBQYXR0ZXJuOiBge1NFQ1JFVFNfUEFUSF9QUkVGSVh9L3tvcmdJZH0vcGxhdGZvcm1gLlxuICogQHRocm93cyBpZiB0aGUgdG9rZW4gY2FycmllcyBubyBvcmdhbml6YXRpb25JZCAoY2FsbGVyIHNob3VsZCBmYWxsIGJhY2sgdG8gLS1zZWNyZXQtbmFtZSkuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZXNvbHZlU2VjcmV0TmFtZSh0b2tlbjogc3RyaW5nKTogc3RyaW5nIHtcbiAgY29uc3QgcGF5bG9hZCA9IGRlY29kZVRva2VuUGF5bG9hZCh0b2tlbik7XG4gIGNvbnN0IG9yZ0lkID0gcGF5bG9hZD8ub3JnYW5pemF0aW9uSWQ7XG4gIGlmICghb3JnSWQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1Rva2VuIGRvZXMgbm90IGNvbnRhaW4gb3JnYW5pemF0aW9uSWQg4oCUIGNhbm5vdCBkZXJpdmUgc2VjcmV0IG5hbWUuIFVzZSAtLXNlY3JldC1uYW1lIHRvIHNwZWNpZnkgZXhwbGljaXRseS4nKTtcbiAgfVxuICByZXR1cm4gYCR7Q29yZUNvbnN0YW50cy5TRUNSRVRTX1BBVEhfUFJFRklYfS8ke29yZ0lkfS9wbGF0Zm9ybWA7XG59XG5cbi8qKlxuICogRW5zdXJlIGBwcm9jZXNzLmVudi5QTEFURk9STV9UT0tFTmAgaXMgc2V0LiBOby1vcCBpZiBpdCBhbHJlYWR5IGlzLiBPdGhlcndpc2UsXG4gKiBpZiBsb2dpbiBjcmVkcyBhcmUgYXZhaWxhYmxlIChgLS1lbWFpbC8tLXBhc3N3b3JkYCBvciBgUExBVEZPUk1fSURFTlRJRklFUmAvXG4gKiBgUExBVEZPUk1fUEFTU1dPUkRgIGVudiDigJQgdGhlIGVudiBwYXRoIGxldHMgYHByb3Zpc2lvbmAgcGFzcyBjcmVkcyB3aXRob3V0XG4gKiBwdXR0aW5nIHRoZSBwYXNzd29yZCBvbiB0aGUgY29tbWFuZCBsaW5lKSwgbG9nIGluIGFuZCBzZXQgUExBVEZPUk1fVE9LRU4uXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBlbnN1cmVQbGF0Zm9ybVRva2VuKG9wdGlvbnM6IFBsYXRmb3JtU2VjcmV0T3B0aW9ucyk6IFByb21pc2U8dm9pZD4ge1xuICBpZiAocHJvY2Vzcy5lbnYuUExBVEZPUk1fVE9LRU4pIHJldHVybjtcbiAgY29uc3QgbG9naW5FbWFpbCA9IG9wdGlvbnMuZW1haWwgfHwgcHJvY2Vzcy5lbnYuUExBVEZPUk1fSURFTlRJRklFUjtcbiAgY29uc3QgbG9naW5QYXNzd29yZCA9IG9wdGlvbnMucGFzc3dvcmQgfHwgcHJvY2Vzcy5lbnYuUExBVEZPUk1fUEFTU1dPUkQ7XG4gIGlmICghbG9naW5FbWFpbCB8fCAhbG9naW5QYXNzd29yZCkgcmV0dXJuO1xuXG4gIHByaW50U2VjdGlvbignTG9naW4nKTtcbiAgcHJpbnRJbmZvKCdBdXRoZW50aWNhdGluZyB3aXRoIGVtYWlsL3Bhc3N3b3JkLi4uJyk7XG4gIGNvbnN0IGNvbmZpZyA9IGdldENvbmZpZ1dpdGhPcHRpb25zKG9wdGlvbnMpO1xuICBjb25zdCBsb2dpblJlc3BvbnNlID0gYXdhaXQgYXhpb3MucG9zdChcbiAgICBgJHtjb25maWcuYXBpLmJhc2VVcmx9L2FwaS9hdXRoL2xvZ2luYCxcbiAgICB7IGVtYWlsOiBsb2dpbkVtYWlsLCBwYXNzd29yZDogbG9naW5QYXNzd29yZCB9LFxuICAgIHtcbiAgICAgIGh0dHBzQWdlbnQ6IGNvbmZpZy5hcGkucmVqZWN0VW5hdXRob3JpemVkID09PSBmYWxzZVxuICAgICAgICA/IG5ldyAoYXdhaXQgaW1wb3J0KCdodHRwcycpKS5BZ2VudCh7IHJlamVjdFVuYXV0aG9yaXplZDogZmFsc2UgfSlcbiAgICAgICAgOiB1bmRlZmluZWQsXG4gICAgfSxcbiAgKTtcbiAgY29uc3QgbG9naW5EYXRhID0gbG9naW5SZXNwb25zZS5kYXRhPy5kYXRhID8/IGxvZ2luUmVzcG9uc2UuZGF0YTtcbiAgY29uc3QgbG9naW5Ub2tlbiA9IGxvZ2luRGF0YT8uYWNjZXNzVG9rZW47XG4gIGlmICghbG9naW5Ub2tlbiB8fCB0eXBlb2YgbG9naW5Ub2tlbiAhPT0gJ3N0cmluZycpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0xvZ2luIGZhaWxlZCDigJQgbm8gYWNjZXNzIHRva2VuIGluIHJlc3BvbnNlJyk7XG4gIH1cbiAgcHJvY2Vzcy5lbnYuUExBVEZPUk1fVE9LRU4gPSBsb2dpblRva2VuO1xuICBwcmludFN1Y2Nlc3MoJ0xvZ2luIHN1Y2Nlc3NmdWwnKTtcbn1cblxuLyoqXG4gKiBSZXNvbHZlIHRoZSBwbGF0Zm9ybSBzZWNyZXQgbmFtZTogYW4gZXhwbGljaXQgYC0tc2VjcmV0LW5hbWVgIC8gYFBMQVRGT1JNX1NFQ1JFVF9OQU1FYFxuICogd2luczsgb3RoZXJ3aXNlIGxvZyBpbiBpZiBuZWVkZWQgYW5kIGRlcml2ZSBpdCBmcm9tIHRoZSBwbGF0Zm9ybSB0b2tlbidzIG9yZyDigJQgdGhlXG4gKiBzYW1lIHRva2VuIGBpbml0LXBsYXRmb3JtLnNoYCAocmVnaXN0ZXIpIG1pbnRzLCBzbyB3cml0ZXIgYW5kIHJlYWRlciBhZ3JlZS5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJlc29sdmVQbGF0Zm9ybVNlY3JldE5hbWUob3B0aW9uczogUGxhdGZvcm1TZWNyZXRPcHRpb25zKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgY29uc3QgZXhwbGljaXQgPSBvcHRpb25zLnNlY3JldE5hbWUgfHwgcHJvY2Vzcy5lbnYuUExBVEZPUk1fU0VDUkVUX05BTUU7XG4gIGlmIChleHBsaWNpdCkgcmV0dXJuIGV4cGxpY2l0O1xuICBhd2FpdCBlbnN1cmVQbGF0Zm9ybVRva2VuKG9wdGlvbnMpO1xuICBpZiAoIXByb2Nlc3MuZW52LlBMQVRGT1JNX1RPS0VOKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgJ0Nhbm5vdCBkZXJpdmUgdGhlIHBsYXRmb3JtIHNlY3JldCBuYW1lOiBubyBQTEFURk9STV9UT0tFTiBhbmQgbm8gbG9naW4gY3JlZHMuICdcbiAgICAgICsgJ1Bhc3MgLS1zZWNyZXQtbmFtZSAvIHNldCBQTEFURk9STV9TRUNSRVRfTkFNRSwgb3IgcHJvdmlkZSBsb2dpbiBjcmVkcyAnXG4gICAgICArICcoLS1lbWFpbC8tLXBhc3N3b3JkIG9yIFBMQVRGT1JNX0lERU5USUZJRVIvUExBVEZPUk1fUEFTU1dPUkQpLicsXG4gICAgKTtcbiAgfVxuICByZXR1cm4gcmVzb2x2ZVNlY3JldE5hbWUocHJvY2Vzcy5lbnYuUExBVEZPUk1fVE9LRU4pO1xufVxuIl19
77
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxhdGZvcm0tc2VjcmV0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3V0aWxzL3BsYXRmb3JtLXNlY3JldC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQ0FBK0M7QUFDL0Msc0NBQXNDO0FBRXRDOzs7Ozs7R0FNRztBQUVILE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNoRSxPQUFPLEtBQUssTUFBTSxPQUFPLENBQUM7QUFDMUIsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDckQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDMUQsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFFLFlBQVksRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBVXhGOzs7O0dBSUc7QUFDSCxNQUFNLFVBQVUsaUJBQWlCLENBQUMsS0FBYTtJQUM3QyxNQUFNLE9BQU8sR0FBRyxrQkFBa0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMxQyxNQUFNLEtBQUssR0FBRyxPQUFPLEVBQUUsY0FBYyxDQUFDO0lBQ3RDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNYLE1BQU0sSUFBSSxLQUFLLENBQUMsNkdBQTZHLENBQUMsQ0FBQztJQUNqSSxDQUFDO0lBQ0QsT0FBTyxHQUFHLGFBQWEsQ0FBQyxtQkFBbUIsSUFBSSxLQUFLLFdBQVcsQ0FBQztBQUNsRSxDQUFDO0FBRUQ7Ozs7O0dBS0c7QUFDSCxNQUFNLENBQUMsS0FBSyxVQUFVLG1CQUFtQixDQUFDLE9BQThCO0lBQ3RFLElBQUksT0FBTyxDQUFDLEdBQUcsQ0FBQyxjQUFjO1FBQUUsT0FBTztJQUN2QyxNQUFNLFVBQVUsR0FBRyxPQUFPLENBQUMsS0FBSyxJQUFJLE9BQU8sQ0FBQyxHQUFHLENBQUMsbUJBQW1CLENBQUM7SUFDcEUsTUFBTSxhQUFhLEdBQUcsT0FBTyxDQUFDLFFBQVEsSUFBSSxPQUFPLENBQUMsR0FBRyxDQUFDLGlCQUFpQixDQUFDO0lBQ3hFLElBQUksQ0FBQyxVQUFVLElBQUksQ0FBQyxhQUFhO1FBQUUsT0FBTztJQUUxQyxJQUFJLE9BQU8sQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNyQixZQUFZLENBQUMsK0dBQStHLENBQUMsQ0FBQztJQUNoSSxDQUFDO0lBRUQsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3RCLFNBQVMsQ0FBQyx1Q0FBdUMsQ0FBQyxDQUFDO0lBQ25ELE1BQU0sTUFBTSxHQUFHLG9CQUFvQixDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzdDLE1BQU0sYUFBYSxHQUFHLE1BQU0sS0FBSyxDQUFDLElBQUksQ0FDcEMsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLE9BQU8saUJBQWlCLEVBQ3RDLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsYUFBYSxFQUFFLEVBQzlDO1FBQ0UsVUFBVSxFQUFFLE1BQU0sQ0FBQyxHQUFHLENBQUMsa0JBQWtCLEtBQUssS0FBSztZQUNqRCxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEVBQUUsa0JBQWtCLEVBQUUsS0FBSyxFQUFFLENBQUM7WUFDbEUsQ0FBQyxDQUFDLFNBQVM7S0FDZCxDQUNGLENBQUM7SUFDRixNQUFNLFNBQVMsR0FBRyxhQUFhLENBQUMsSUFBSSxFQUFFLElBQUksSUFBSSxhQUFhLENBQUMsSUFBSSxDQUFDO0lBQ2pFLE1BQU0sVUFBVSxHQUFHLFNBQVMsRUFBRSxXQUFXLENBQUM7SUFDMUMsSUFBSSxDQUFDLFVBQVUsSUFBSSxPQUFPLFVBQVUsS0FBSyxRQUFRLEVBQUUsQ0FBQztRQUNsRCxNQUFNLElBQUksS0FBSyxDQUFDLDRDQUE0QyxDQUFDLENBQUM7SUFDaEUsQ0FBQztJQUNELE9BQU8sQ0FBQyxHQUFHLENBQUMsY0FBYyxHQUFHLFVBQVUsQ0FBQztJQUN4QyxZQUFZLENBQUMsa0JBQWtCLENBQUMsQ0FBQztBQUNuQyxDQUFDO0FBRUQ7Ozs7R0FJRztBQUNILE1BQU0sQ0FBQyxLQUFLLFVBQVUseUJBQXlCLENBQUMsT0FBOEI7SUFDNUUsTUFBTSxRQUFRLEdBQUcsT0FBTyxDQUFDLFVBQVUsSUFBSSxPQUFPLENBQUMsR0FBRyxDQUFDLG9CQUFvQixDQUFDO0lBQ3hFLElBQUksUUFBUTtRQUFFLE9BQU8sUUFBUSxDQUFDO0lBQzlCLE1BQU0sbUJBQW1CLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDbkMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDaEMsTUFBTSxJQUFJLEtBQUssQ0FDYixnRkFBZ0Y7Y0FDOUUsd0VBQXdFO2NBQ3hFLGdFQUFnRSxDQUNuRSxDQUFDO0lBQ0osQ0FBQztJQUNELE9BQU8saUJBQWlCLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxjQUFjLENBQUMsQ0FBQztBQUN2RCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMjYgUGlwZWxpbmUgQnVpbGRlciBDb250cmlidXRvcnNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5cbi8qKlxuICogU2hhcmVkIHBsYXRmb3JtLXRva2VuIOKGkiBzZWNyZXQtbmFtZSByZXNvbHV0aW9uLCB1c2VkIGJ5IGJvdGggYHN0b3JlLXRva2VuYFxuICogKHdoaWNoIFdSSVRFUyB0aGUgSldUIHRvIFNlY3JldHMgTWFuYWdlcikgYW5kIGBzZXR1cC1ldmVudHNgICh3aGljaCBkZXBsb3lzIHRoZVxuICogTGFtYmRhIHRoYXQgUkVBRFMgaXQpLiBCb3RoIG11c3QgYWdyZWUgb24gdGhlIHNhbWUgc2VjcmV0IHBhdGgsIHNvIHRoZSBsb2dpY1xuICogbGl2ZXMgaGVyZSBvbmNlOiBkZXJpdmUgYHtTRUNSRVRTX1BBVEhfUFJFRklYfS97b3JnSWR9L3BsYXRmb3JtYCBmcm9tIHRoZSBKV1Qnc1xuICogb3JnYW5pemF0aW9uSWQsIGxvZ2dpbmcgaW4gZmlyc3QgaWYgbmVlZGVkIHRvIG9idGFpbiB0aGUgdG9rZW4uXG4gKi9cblxuaW1wb3J0IHsgQ29yZUNvbnN0YW50cyB9IGZyb20gJ0BwaXBlbGluZS1idWlsZGVyL3BpcGVsaW5lLWNvcmUnO1xuaW1wb3J0IGF4aW9zIGZyb20gJ2F4aW9zJztcbmltcG9ydCB7IGRlY29kZVRva2VuUGF5bG9hZCB9IGZyb20gJy4vYXV0aC1ndWFyZC5qcyc7XG5pbXBvcnQgeyBnZXRDb25maWdXaXRoT3B0aW9ucyB9IGZyb20gJy4vY29uZmlnLWxvYWRlci5qcyc7XG5pbXBvcnQgeyBwcmludEluZm8sIHByaW50U2VjdGlvbiwgcHJpbnRTdWNjZXNzLCBwcmludFdhcm5pbmcgfSBmcm9tICcuL291dHB1dC11dGlscy5qcyc7XG5cbi8qKiBMb2dpbi9zZWNyZXQgb3B0aW9ucyBzaGFyZWQgYWNyb3NzIHRoZSBwbGF0Zm9ybS1zZWNyZXQgaGVscGVycy4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUGxhdGZvcm1TZWNyZXRPcHRpb25zIHtcbiAgcmVhZG9ubHkgc2VjcmV0TmFtZT86IHN0cmluZztcbiAgcmVhZG9ubHkgZW1haWw/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IHBhc3N3b3JkPzogc3RyaW5nO1xuICByZWFkb25seSB2ZXJpZnlTc2w/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIERlcml2ZSB0aGUgcGxhdGZvcm0gc2VjcmV0IHBhdGggZnJvbSBhIEpXVCdzIG9yZ2FuaXphdGlvbklkLlxuICogUGF0dGVybjogYHtTRUNSRVRTX1BBVEhfUFJFRklYfS97b3JnSWR9L3BsYXRmb3JtYC5cbiAqIEB0aHJvd3MgaWYgdGhlIHRva2VuIGNhcnJpZXMgbm8gb3JnYW5pemF0aW9uSWQgKGNhbGxlciBzaG91bGQgZmFsbCBiYWNrIHRvIC0tc2VjcmV0LW5hbWUpLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVzb2x2ZVNlY3JldE5hbWUodG9rZW46IHN0cmluZyk6IHN0cmluZyB7XG4gIGNvbnN0IHBheWxvYWQgPSBkZWNvZGVUb2tlblBheWxvYWQodG9rZW4pO1xuICBjb25zdCBvcmdJZCA9IHBheWxvYWQ/Lm9yZ2FuaXphdGlvbklkO1xuICBpZiAoIW9yZ0lkKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdUb2tlbiBkb2VzIG5vdCBjb250YWluIG9yZ2FuaXphdGlvbklkIOKAlCBjYW5ub3QgZGVyaXZlIHNlY3JldCBuYW1lLiBVc2UgLS1zZWNyZXQtbmFtZSB0byBzcGVjaWZ5IGV4cGxpY2l0bHkuJyk7XG4gIH1cbiAgcmV0dXJuIGAke0NvcmVDb25zdGFudHMuU0VDUkVUU19QQVRIX1BSRUZJWH0vJHtvcmdJZH0vcGxhdGZvcm1gO1xufVxuXG4vKipcbiAqIEVuc3VyZSBgcHJvY2Vzcy5lbnYuUExBVEZPUk1fVE9LRU5gIGlzIHNldC4gTm8tb3AgaWYgaXQgYWxyZWFkeSBpcy4gT3RoZXJ3aXNlLFxuICogaWYgbG9naW4gY3JlZHMgYXJlIGF2YWlsYWJsZSAoYC0tZW1haWwvLS1wYXNzd29yZGAgb3IgYFBMQVRGT1JNX0lERU5USUZJRVJgL1xuICogYFBMQVRGT1JNX1BBU1NXT1JEYCBlbnYg4oCUIHRoZSBlbnYgcGF0aCBsZXRzIGBwcm92aXNpb25gIHBhc3MgY3JlZHMgd2l0aG91dFxuICogcHV0dGluZyB0aGUgcGFzc3dvcmQgb24gdGhlIGNvbW1hbmQgbGluZSksIGxvZyBpbiBhbmQgc2V0IFBMQVRGT1JNX1RPS0VOLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZW5zdXJlUGxhdGZvcm1Ub2tlbihvcHRpb25zOiBQbGF0Zm9ybVNlY3JldE9wdGlvbnMpOiBQcm9taXNlPHZvaWQ+IHtcbiAgaWYgKHByb2Nlc3MuZW52LlBMQVRGT1JNX1RPS0VOKSByZXR1cm47XG4gIGNvbnN0IGxvZ2luRW1haWwgPSBvcHRpb25zLmVtYWlsIHx8IHByb2Nlc3MuZW52LlBMQVRGT1JNX0lERU5USUZJRVI7XG4gIGNvbnN0IGxvZ2luUGFzc3dvcmQgPSBvcHRpb25zLnBhc3N3b3JkIHx8IHByb2Nlc3MuZW52LlBMQVRGT1JNX1BBU1NXT1JEO1xuICBpZiAoIWxvZ2luRW1haWwgfHwgIWxvZ2luUGFzc3dvcmQpIHJldHVybjtcblxuICBpZiAob3B0aW9ucy5wYXNzd29yZCkge1xuICAgIHByaW50V2FybmluZygnUGFzc2luZyAtLXBhc3N3b3JkIG9uIHRoZSBjb21tYW5kIGxpbmUgY2FuIGV4cG9zZSBpdCB2aWEgc2hlbGwgaGlzdG9yeTsgcHJlZmVyIHRoZSBQTEFURk9STV9QQVNTV09SRCBlbnYgdmFyLicpO1xuICB9XG5cbiAgcHJpbnRTZWN0aW9uKCdMb2dpbicpO1xuICBwcmludEluZm8oJ0F1dGhlbnRpY2F0aW5nIHdpdGggZW1haWwvcGFzc3dvcmQuLi4nKTtcbiAgY29uc3QgY29uZmlnID0gZ2V0Q29uZmlnV2l0aE9wdGlvbnMob3B0aW9ucyk7XG4gIGNvbnN0IGxvZ2luUmVzcG9uc2UgPSBhd2FpdCBheGlvcy5wb3N0KFxuICAgIGAke2NvbmZpZy5hcGkuYmFzZVVybH0vYXBpL2F1dGgvbG9naW5gLFxuICAgIHsgZW1haWw6IGxvZ2luRW1haWwsIHBhc3N3b3JkOiBsb2dpblBhc3N3b3JkIH0sXG4gICAge1xuICAgICAgaHR0cHNBZ2VudDogY29uZmlnLmFwaS5yZWplY3RVbmF1dGhvcml6ZWQgPT09IGZhbHNlXG4gICAgICAgID8gbmV3IChhd2FpdCBpbXBvcnQoJ2h0dHBzJykpLkFnZW50KHsgcmVqZWN0VW5hdXRob3JpemVkOiBmYWxzZSB9KVxuICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICB9LFxuICApO1xuICBjb25zdCBsb2dpbkRhdGEgPSBsb2dpblJlc3BvbnNlLmRhdGE/LmRhdGEgPz8gbG9naW5SZXNwb25zZS5kYXRhO1xuICBjb25zdCBsb2dpblRva2VuID0gbG9naW5EYXRhPy5hY2Nlc3NUb2tlbjtcbiAgaWYgKCFsb2dpblRva2VuIHx8IHR5cGVvZiBsb2dpblRva2VuICE9PSAnc3RyaW5nJykge1xuICAgIHRocm93IG5ldyBFcnJvcignTG9naW4gZmFpbGVkIOKAlCBubyBhY2Nlc3MgdG9rZW4gaW4gcmVzcG9uc2UnKTtcbiAgfVxuICBwcm9jZXNzLmVudi5QTEFURk9STV9UT0tFTiA9IGxvZ2luVG9rZW47XG4gIHByaW50U3VjY2VzcygnTG9naW4gc3VjY2Vzc2Z1bCcpO1xufVxuXG4vKipcbiAqIFJlc29sdmUgdGhlIHBsYXRmb3JtIHNlY3JldCBuYW1lOiBhbiBleHBsaWNpdCBgLS1zZWNyZXQtbmFtZWAgLyBgUExBVEZPUk1fU0VDUkVUX05BTUVgXG4gKiB3aW5zOyBvdGhlcndpc2UgbG9nIGluIGlmIG5lZWRlZCBhbmQgZGVyaXZlIGl0IGZyb20gdGhlIHBsYXRmb3JtIHRva2VuJ3Mgb3JnIOKAlCB0aGVcbiAqIHNhbWUgdG9rZW4gYGluaXQtcGxhdGZvcm0uc2hgIChyZWdpc3RlcikgbWludHMsIHNvIHdyaXRlciBhbmQgcmVhZGVyIGFncmVlLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcmVzb2x2ZVBsYXRmb3JtU2VjcmV0TmFtZShvcHRpb25zOiBQbGF0Zm9ybVNlY3JldE9wdGlvbnMpOiBQcm9taXNlPHN0cmluZz4ge1xuICBjb25zdCBleHBsaWNpdCA9IG9wdGlvbnMuc2VjcmV0TmFtZSB8fCBwcm9jZXNzLmVudi5QTEFURk9STV9TRUNSRVRfTkFNRTtcbiAgaWYgKGV4cGxpY2l0KSByZXR1cm4gZXhwbGljaXQ7XG4gIGF3YWl0IGVuc3VyZVBsYXRmb3JtVG9rZW4ob3B0aW9ucyk7XG4gIGlmICghcHJvY2Vzcy5lbnYuUExBVEZPUk1fVE9LRU4pIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAnQ2Fubm90IGRlcml2ZSB0aGUgcGxhdGZvcm0gc2VjcmV0IG5hbWU6IG5vIFBMQVRGT1JNX1RPS0VOIGFuZCBubyBsb2dpbiBjcmVkcy4gJ1xuICAgICAgKyAnUGFzcyAtLXNlY3JldC1uYW1lIC8gc2V0IFBMQVRGT1JNX1NFQ1JFVF9OQU1FLCBvciBwcm92aWRlIGxvZ2luIGNyZWRzICdcbiAgICAgICsgJygtLWVtYWlsLy0tcGFzc3dvcmQgb3IgUExBVEZPUk1fSURFTlRJRklFUi9QTEFURk9STV9QQVNTV09SRCkuJyxcbiAgICApO1xuICB9XG4gIHJldHVybiByZXNvbHZlU2VjcmV0TmFtZShwcm9jZXNzLmVudi5QTEFURk9STV9UT0tFTik7XG59XG4iXX0=
@@ -1,14 +1,15 @@
1
1
  /**
2
- * Check if auth attempts are currently rate-limited.
2
+ * Check if auth attempts for this identifier are currently rate-limited.
3
3
  * @returns null if allowed, or a message string if blocked.
4
4
  */
5
- export declare function checkAuthRateLimit(): string | null;
5
+ export declare function checkAuthRateLimit(identifier?: string, baseUrl?: string): string | null;
6
6
  /**
7
- * Record a successful auth — resets the failure counter.
7
+ * Record a successful auth for this identifier clears its failure counter.
8
8
  */
9
- export declare function recordAuthSuccess(): void;
9
+ export declare function recordAuthSuccess(identifier?: string, baseUrl?: string): void;
10
10
  /**
11
- * Record a failed auth attempt. After MAX_FAILURES, locks out for COOLDOWN_MS.
11
+ * Record a failed auth attempt for this identifier. After MAX_FAILURES, locks out
12
+ * that identifier for COOLDOWN_MS.
12
13
  */
13
- export declare function recordAuthFailure(): void;
14
+ export declare function recordAuthFailure(identifier?: string, baseUrl?: string): void;
14
15
  //# sourceMappingURL=rate-limiter.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"rate-limiter.d.ts","sourceRoot":"","sources":["../../src/utils/rate-limiter.ts"],"names":[],"mappings":"AAsCA;;;GAGG;AACH,wBAAgB,kBAAkB,IAAI,MAAM,GAAG,IAAI,CAelD;AAED;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,IAAI,CAExC;AAED;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,IAAI,CAWxC"}
1
+ {"version":3,"file":"rate-limiter.d.ts","sourceRoot":"","sources":["../../src/utils/rate-limiter.ts"],"names":[],"mappings":"AA4DA;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,UAAU,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAkBvF;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,UAAU,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAI7E;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,UAAU,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAY7E"}
@@ -1,5 +1,6 @@
1
1
  // Copyright 2026 Pipeline Builder Contributors
2
2
  // SPDX-License-Identifier: Apache-2.0
3
+ import crypto from 'crypto';
3
4
  import fs from 'fs';
4
5
  import os from 'os';
5
6
  import path from 'path';
@@ -7,59 +8,88 @@ import path from 'path';
7
8
  * Simple file-based rate limiter for auth operations.
8
9
  * Tracks failed attempts and enforces a cooldown period after too many failures.
9
10
  * State is persisted in a temp file so it survives across CLI invocations.
11
+ *
12
+ * State is keyed per (baseUrl, identifier) so a failed login for one account does
13
+ * NOT lock out another account on a shared workstation / CI host. Calls without an
14
+ * identifier fall back to a shared `_default` bucket (coarse anti-bruteforce).
10
15
  */
11
16
  const STATE_FILE = path.join(os.tmpdir(), '.pipeline-manager-auth-state.json');
12
17
  const MAX_FAILURES = 5;
13
18
  const COOLDOWN_MS = 60_000; // 1 minute
14
- function readState() {
19
+ const PRUNE_MS = 60 * 60_000; // drop buckets idle for >1h to bound file growth
20
+ const EMPTY = { failures: 0, lastFailure: 0, lockedUntil: 0 };
21
+ /** Stable, non-reversible bucket key for a (baseUrl, identifier) pair. */
22
+ function keyFor(identifier, baseUrl) {
23
+ if (!identifier)
24
+ return '_default';
25
+ return crypto.createHash('sha256').update(`${baseUrl ?? ''}\n${identifier}`).digest('hex').slice(0, 16);
26
+ }
27
+ function readMap() {
15
28
  try {
16
29
  if (fs.existsSync(STATE_FILE)) {
17
- return JSON.parse(fs.readFileSync(STATE_FILE, 'utf-8'));
30
+ const parsed = JSON.parse(fs.readFileSync(STATE_FILE, 'utf-8'));
31
+ if (parsed && typeof parsed === 'object')
32
+ return parsed;
18
33
  }
19
34
  }
20
35
  catch { /* ignore corrupt state */ }
21
- return { failures: 0, lastFailure: 0, lockedUntil: 0 };
36
+ return {};
22
37
  }
23
- function writeState(state) {
38
+ function writeMap(map) {
39
+ const now = Date.now();
40
+ // Prune idle buckets so the file doesn't grow unbounded across many identifiers.
41
+ for (const [k, s] of Object.entries(map)) {
42
+ if (s.lockedUntil <= now && now - s.lastFailure > PRUNE_MS)
43
+ delete map[k];
44
+ }
24
45
  try {
25
- fs.writeFileSync(STATE_FILE, JSON.stringify(state), { mode: 0o600 });
46
+ fs.writeFileSync(STATE_FILE, JSON.stringify(map), { mode: 0o600 });
26
47
  }
27
48
  catch { /* best-effort */ }
28
49
  }
29
50
  /**
30
- * Check if auth attempts are currently rate-limited.
51
+ * Check if auth attempts for this identifier are currently rate-limited.
31
52
  * @returns null if allowed, or a message string if blocked.
32
53
  */
33
- export function checkAuthRateLimit() {
34
- const state = readState();
54
+ export function checkAuthRateLimit(identifier, baseUrl) {
55
+ const key = keyFor(identifier, baseUrl);
56
+ const map = readMap();
57
+ const state = map[key] ?? EMPTY;
35
58
  const now = Date.now();
36
59
  if (state.lockedUntil > now) {
37
60
  const waitSec = Math.ceil((state.lockedUntil - now) / 1000);
38
61
  return `Too many failed login attempts. Try again in ${waitSec}s.`;
39
62
  }
40
- // Reset if cooldown has passed
41
- if (now - state.lastFailure > COOLDOWN_MS) {
42
- writeState({ failures: 0, lastFailure: 0, lockedUntil: 0 });
63
+ // Reset this bucket once the cooldown window has passed.
64
+ if (state.lastFailure !== 0 && now - state.lastFailure > COOLDOWN_MS) {
65
+ delete map[key];
66
+ writeMap(map);
43
67
  }
44
68
  return null;
45
69
  }
46
70
  /**
47
- * Record a successful auth — resets the failure counter.
71
+ * Record a successful auth for this identifier clears its failure counter.
48
72
  */
49
- export function recordAuthSuccess() {
50
- writeState({ failures: 0, lastFailure: 0, lockedUntil: 0 });
73
+ export function recordAuthSuccess(identifier, baseUrl) {
74
+ const map = readMap();
75
+ delete map[keyFor(identifier, baseUrl)];
76
+ writeMap(map);
51
77
  }
52
78
  /**
53
- * Record a failed auth attempt. After MAX_FAILURES, locks out for COOLDOWN_MS.
79
+ * Record a failed auth attempt for this identifier. After MAX_FAILURES, locks out
80
+ * that identifier for COOLDOWN_MS.
54
81
  */
55
- export function recordAuthFailure() {
56
- const state = readState();
82
+ export function recordAuthFailure(identifier, baseUrl) {
83
+ const key = keyFor(identifier, baseUrl);
84
+ const map = readMap();
57
85
  const now = Date.now();
86
+ const state = { ...(map[key] ?? EMPTY) };
58
87
  state.failures += 1;
59
88
  state.lastFailure = now;
60
89
  if (state.failures >= MAX_FAILURES) {
61
90
  state.lockedUntil = now + COOLDOWN_MS;
62
91
  }
63
- writeState(state);
92
+ map[key] = state;
93
+ writeMap(map);
64
94
  }
65
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmF0ZS1saW1pdGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3V0aWxzL3JhdGUtbGltaXRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQ0FBK0M7QUFDL0Msc0NBQXNDO0FBRXRDLE9BQU8sRUFBRSxNQUFNLElBQUksQ0FBQztBQUNwQixPQUFPLEVBQUUsTUFBTSxJQUFJLENBQUM7QUFDcEIsT0FBTyxJQUFJLE1BQU0sTUFBTSxDQUFDO0FBRXhCOzs7O0dBSUc7QUFFSCxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxNQUFNLEVBQUUsRUFBRSxtQ0FBbUMsQ0FBQyxDQUFDO0FBQy9FLE1BQU0sWUFBWSxHQUFHLENBQUMsQ0FBQztBQUN2QixNQUFNLFdBQVcsR0FBRyxNQUFNLENBQUMsQ0FBQyxXQUFXO0FBUXZDLFNBQVMsU0FBUztJQUNoQixJQUFJLENBQUM7UUFDSCxJQUFJLEVBQUUsQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQztZQUM5QixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLFlBQVksQ0FBQyxVQUFVLEVBQUUsT0FBTyxDQUFDLENBQWMsQ0FBQztRQUN2RSxDQUFDO0lBQ0gsQ0FBQztJQUFDLE1BQU0sQ0FBQyxDQUFDLDBCQUEwQixDQUFDLENBQUM7SUFDdEMsT0FBTyxFQUFFLFFBQVEsRUFBRSxDQUFDLEVBQUUsV0FBVyxFQUFFLENBQUMsRUFBRSxXQUFXLEVBQUUsQ0FBQyxFQUFFLENBQUM7QUFDekQsQ0FBQztBQUVELFNBQVMsVUFBVSxDQUFDLEtBQWdCO0lBQ2xDLElBQUksQ0FBQztRQUNILEVBQUUsQ0FBQyxhQUFhLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUN2RSxDQUFDO0lBQUMsTUFBTSxDQUFDLENBQUMsaUJBQWlCLENBQUMsQ0FBQztBQUMvQixDQUFDO0FBRUQ7OztHQUdHO0FBQ0gsTUFBTSxVQUFVLGtCQUFrQjtJQUNoQyxNQUFNLEtBQUssR0FBRyxTQUFTLEVBQUUsQ0FBQztJQUMxQixNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7SUFFdkIsSUFBSSxLQUFLLENBQUMsV0FBVyxHQUFHLEdBQUcsRUFBRSxDQUFDO1FBQzVCLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLENBQUMsV0FBVyxHQUFHLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDO1FBQzVELE9BQU8sZ0RBQWdELE9BQU8sSUFBSSxDQUFDO0lBQ3JFLENBQUM7SUFFRCwrQkFBK0I7SUFDL0IsSUFBSSxHQUFHLEdBQUcsS0FBSyxDQUFDLFdBQVcsR0FBRyxXQUFXLEVBQUUsQ0FBQztRQUMxQyxVQUFVLENBQUMsRUFBRSxRQUFRLEVBQUUsQ0FBQyxFQUFFLFdBQVcsRUFBRSxDQUFDLEVBQUUsV0FBVyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDOUQsQ0FBQztJQUVELE9BQU8sSUFBSSxDQUFDO0FBQ2QsQ0FBQztBQUVEOztHQUVHO0FBQ0gsTUFBTSxVQUFVLGlCQUFpQjtJQUMvQixVQUFVLENBQUMsRUFBRSxRQUFRLEVBQUUsQ0FBQyxFQUFFLFdBQVcsRUFBRSxDQUFDLEVBQUUsV0FBVyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDOUQsQ0FBQztBQUVEOztHQUVHO0FBQ0gsTUFBTSxVQUFVLGlCQUFpQjtJQUMvQixNQUFNLEtBQUssR0FBRyxTQUFTLEVBQUUsQ0FBQztJQUMxQixNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7SUFDdkIsS0FBSyxDQUFDLFFBQVEsSUFBSSxDQUFDLENBQUM7SUFDcEIsS0FBSyxDQUFDLFdBQVcsR0FBRyxHQUFHLENBQUM7SUFFeEIsSUFBSSxLQUFLLENBQUMsUUFBUSxJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ25DLEtBQUssQ0FBQyxXQUFXLEdBQUcsR0FBRyxHQUFHLFdBQVcsQ0FBQztJQUN4QyxDQUFDO0lBRUQsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ3BCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAyNiBQaXBlbGluZSBCdWlsZGVyIENvbnRyaWJ1dG9yc1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcblxuaW1wb3J0IGZzIGZyb20gJ2ZzJztcbmltcG9ydCBvcyBmcm9tICdvcyc7XG5pbXBvcnQgcGF0aCBmcm9tICdwYXRoJztcblxuLyoqXG4gKiBTaW1wbGUgZmlsZS1iYXNlZCByYXRlIGxpbWl0ZXIgZm9yIGF1dGggb3BlcmF0aW9ucy5cbiAqIFRyYWNrcyBmYWlsZWQgYXR0ZW1wdHMgYW5kIGVuZm9yY2VzIGEgY29vbGRvd24gcGVyaW9kIGFmdGVyIHRvbyBtYW55IGZhaWx1cmVzLlxuICogU3RhdGUgaXMgcGVyc2lzdGVkIGluIGEgdGVtcCBmaWxlIHNvIGl0IHN1cnZpdmVzIGFjcm9zcyBDTEkgaW52b2NhdGlvbnMuXG4gKi9cblxuY29uc3QgU1RBVEVfRklMRSA9IHBhdGguam9pbihvcy50bXBkaXIoKSwgJy5waXBlbGluZS1tYW5hZ2VyLWF1dGgtc3RhdGUuanNvbicpO1xuY29uc3QgTUFYX0ZBSUxVUkVTID0gNTtcbmNvbnN0IENPT0xET1dOX01TID0gNjBfMDAwOyAvLyAxIG1pbnV0ZVxuXG5pbnRlcmZhY2UgQXV0aFN0YXRlIHtcbiAgZmFpbHVyZXM6IG51bWJlcjtcbiAgbGFzdEZhaWx1cmU6IG51bWJlcjtcbiAgbG9ja2VkVW50aWw6IG51bWJlcjtcbn1cblxuZnVuY3Rpb24gcmVhZFN0YXRlKCk6IEF1dGhTdGF0ZSB7XG4gIHRyeSB7XG4gICAgaWYgKGZzLmV4aXN0c1N5bmMoU1RBVEVfRklMRSkpIHtcbiAgICAgIHJldHVybiBKU09OLnBhcnNlKGZzLnJlYWRGaWxlU3luYyhTVEFURV9GSUxFLCAndXRmLTgnKSkgYXMgQXV0aFN0YXRlO1xuICAgIH1cbiAgfSBjYXRjaCB7IC8qIGlnbm9yZSBjb3JydXB0IHN0YXRlICovIH1cbiAgcmV0dXJuIHsgZmFpbHVyZXM6IDAsIGxhc3RGYWlsdXJlOiAwLCBsb2NrZWRVbnRpbDogMCB9O1xufVxuXG5mdW5jdGlvbiB3cml0ZVN0YXRlKHN0YXRlOiBBdXRoU3RhdGUpOiB2b2lkIHtcbiAgdHJ5IHtcbiAgICBmcy53cml0ZUZpbGVTeW5jKFNUQVRFX0ZJTEUsIEpTT04uc3RyaW5naWZ5KHN0YXRlKSwgeyBtb2RlOiAwbzYwMCB9KTtcbiAgfSBjYXRjaCB7IC8qIGJlc3QtZWZmb3J0ICovIH1cbn1cblxuLyoqXG4gKiBDaGVjayBpZiBhdXRoIGF0dGVtcHRzIGFyZSBjdXJyZW50bHkgcmF0ZS1saW1pdGVkLlxuICogQHJldHVybnMgbnVsbCBpZiBhbGxvd2VkLCBvciBhIG1lc3NhZ2Ugc3RyaW5nIGlmIGJsb2NrZWQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjaGVja0F1dGhSYXRlTGltaXQoKTogc3RyaW5nIHwgbnVsbCB7XG4gIGNvbnN0IHN0YXRlID0gcmVhZFN0YXRlKCk7XG4gIGNvbnN0IG5vdyA9IERhdGUubm93KCk7XG5cbiAgaWYgKHN0YXRlLmxvY2tlZFVudGlsID4gbm93KSB7XG4gICAgY29uc3Qgd2FpdFNlYyA9IE1hdGguY2VpbCgoc3RhdGUubG9ja2VkVW50aWwgLSBub3cpIC8gMTAwMCk7XG4gICAgcmV0dXJuIGBUb28gbWFueSBmYWlsZWQgbG9naW4gYXR0ZW1wdHMuIFRyeSBhZ2FpbiBpbiAke3dhaXRTZWN9cy5gO1xuICB9XG5cbiAgLy8gUmVzZXQgaWYgY29vbGRvd24gaGFzIHBhc3NlZFxuICBpZiAobm93IC0gc3RhdGUubGFzdEZhaWx1cmUgPiBDT09MRE9XTl9NUykge1xuICAgIHdyaXRlU3RhdGUoeyBmYWlsdXJlczogMCwgbGFzdEZhaWx1cmU6IDAsIGxvY2tlZFVudGlsOiAwIH0pO1xuICB9XG5cbiAgcmV0dXJuIG51bGw7XG59XG5cbi8qKlxuICogUmVjb3JkIGEgc3VjY2Vzc2Z1bCBhdXRoIOKAlCByZXNldHMgdGhlIGZhaWx1cmUgY291bnRlci5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlY29yZEF1dGhTdWNjZXNzKCk6IHZvaWQge1xuICB3cml0ZVN0YXRlKHsgZmFpbHVyZXM6IDAsIGxhc3RGYWlsdXJlOiAwLCBsb2NrZWRVbnRpbDogMCB9KTtcbn1cblxuLyoqXG4gKiBSZWNvcmQgYSBmYWlsZWQgYXV0aCBhdHRlbXB0LiBBZnRlciBNQVhfRkFJTFVSRVMsIGxvY2tzIG91dCBmb3IgQ09PTERPV05fTVMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZWNvcmRBdXRoRmFpbHVyZSgpOiB2b2lkIHtcbiAgY29uc3Qgc3RhdGUgPSByZWFkU3RhdGUoKTtcbiAgY29uc3Qgbm93ID0gRGF0ZS5ub3coKTtcbiAgc3RhdGUuZmFpbHVyZXMgKz0gMTtcbiAgc3RhdGUubGFzdEZhaWx1cmUgPSBub3c7XG5cbiAgaWYgKHN0YXRlLmZhaWx1cmVzID49IE1BWF9GQUlMVVJFUykge1xuICAgIHN0YXRlLmxvY2tlZFVudGlsID0gbm93ICsgQ09PTERPV05fTVM7XG4gIH1cblxuICB3cml0ZVN0YXRlKHN0YXRlKTtcbn1cbiJdfQ==
95
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmF0ZS1saW1pdGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3V0aWxzL3JhdGUtbGltaXRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQ0FBK0M7QUFDL0Msc0NBQXNDO0FBRXRDLE9BQU8sTUFBTSxNQUFNLFFBQVEsQ0FBQztBQUM1QixPQUFPLEVBQUUsTUFBTSxJQUFJLENBQUM7QUFDcEIsT0FBTyxFQUFFLE1BQU0sSUFBSSxDQUFDO0FBQ3BCLE9BQU8sSUFBSSxNQUFNLE1BQU0sQ0FBQztBQUV4Qjs7Ozs7Ozs7R0FRRztBQUVILE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLE1BQU0sRUFBRSxFQUFFLG1DQUFtQyxDQUFDLENBQUM7QUFDL0UsTUFBTSxZQUFZLEdBQUcsQ0FBQyxDQUFDO0FBQ3ZCLE1BQU0sV0FBVyxHQUFHLE1BQU0sQ0FBQyxDQUFDLFdBQVc7QUFDdkMsTUFBTSxRQUFRLEdBQUcsRUFBRSxHQUFHLE1BQU0sQ0FBQyxDQUFDLGlEQUFpRDtBQVUvRSxNQUFNLEtBQUssR0FBYyxFQUFFLFFBQVEsRUFBRSxDQUFDLEVBQUUsV0FBVyxFQUFFLENBQUMsRUFBRSxXQUFXLEVBQUUsQ0FBQyxFQUFFLENBQUM7QUFFekUsMEVBQTBFO0FBQzFFLFNBQVMsTUFBTSxDQUFDLFVBQW1CLEVBQUUsT0FBZ0I7SUFDbkQsSUFBSSxDQUFDLFVBQVU7UUFBRSxPQUFPLFVBQVUsQ0FBQztJQUNuQyxPQUFPLE1BQU0sQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUMsTUFBTSxDQUFDLEdBQUcsT0FBTyxJQUFJLEVBQUUsS0FBSyxVQUFVLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQzFHLENBQUM7QUFFRCxTQUFTLE9BQU87SUFDZCxJQUFJLENBQUM7UUFDSCxJQUFJLEVBQUUsQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQztZQUM5QixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxZQUFZLENBQUMsVUFBVSxFQUFFLE9BQU8sQ0FBQyxDQUFZLENBQUM7WUFDM0UsSUFBSSxNQUFNLElBQUksT0FBTyxNQUFNLEtBQUssUUFBUTtnQkFBRSxPQUFPLE1BQWtCLENBQUM7UUFDdEUsQ0FBQztJQUNILENBQUM7SUFBQyxNQUFNLENBQUMsQ0FBQywwQkFBMEIsQ0FBQyxDQUFDO0lBQ3RDLE9BQU8sRUFBRSxDQUFDO0FBQ1osQ0FBQztBQUVELFNBQVMsUUFBUSxDQUFDLEdBQWE7SUFDN0IsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO0lBQ3ZCLGlGQUFpRjtJQUNqRixLQUFLLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1FBQ3pDLElBQUksQ0FBQyxDQUFDLFdBQVcsSUFBSSxHQUFHLElBQUksR0FBRyxHQUFHLENBQUMsQ0FBQyxXQUFXLEdBQUcsUUFBUTtZQUFFLE9BQU8sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzVFLENBQUM7SUFDRCxJQUFJLENBQUM7UUFDSCxFQUFFLENBQUMsYUFBYSxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7SUFDckUsQ0FBQztJQUFDLE1BQU0sQ0FBQyxDQUFDLGlCQUFpQixDQUFDLENBQUM7QUFDL0IsQ0FBQztBQUVEOzs7R0FHRztBQUNILE1BQU0sVUFBVSxrQkFBa0IsQ0FBQyxVQUFtQixFQUFFLE9BQWdCO0lBQ3RFLE1BQU0sR0FBRyxHQUFHLE1BQU0sQ0FBQyxVQUFVLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDeEMsTUFBTSxHQUFHLEdBQUcsT0FBTyxFQUFFLENBQUM7SUFDdEIsTUFBTSxLQUFLLEdBQUcsR0FBRyxDQUFDLEdBQUcsQ0FBQyxJQUFJLEtBQUssQ0FBQztJQUNoQyxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7SUFFdkIsSUFBSSxLQUFLLENBQUMsV0FBVyxHQUFHLEdBQUcsRUFBRSxDQUFDO1FBQzVCLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLENBQUMsV0FBVyxHQUFHLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDO1FBQzVELE9BQU8sZ0RBQWdELE9BQU8sSUFBSSxDQUFDO0lBQ3JFLENBQUM7SUFFRCx5REFBeUQ7SUFDekQsSUFBSSxLQUFLLENBQUMsV0FBVyxLQUFLLENBQUMsSUFBSSxHQUFHLEdBQUcsS0FBSyxDQUFDLFdBQVcsR0FBRyxXQUFXLEVBQUUsQ0FBQztRQUNyRSxPQUFPLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNoQixRQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDaEIsQ0FBQztJQUVELE9BQU8sSUFBSSxDQUFDO0FBQ2QsQ0FBQztBQUVEOztHQUVHO0FBQ0gsTUFBTSxVQUFVLGlCQUFpQixDQUFDLFVBQW1CLEVBQUUsT0FBZ0I7SUFDckUsTUFBTSxHQUFHLEdBQUcsT0FBTyxFQUFFLENBQUM7SUFDdEIsT0FBTyxHQUFHLENBQUMsTUFBTSxDQUFDLFVBQVUsRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDO0lBQ3hDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNoQixDQUFDO0FBRUQ7OztHQUdHO0FBQ0gsTUFBTSxVQUFVLGlCQUFpQixDQUFDLFVBQW1CLEVBQUUsT0FBZ0I7SUFDckUsTUFBTSxHQUFHLEdBQUcsTUFBTSxDQUFDLFVBQVUsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUN4QyxNQUFNLEdBQUcsR0FBRyxPQUFPLEVBQUUsQ0FBQztJQUN0QixNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7SUFDdkIsTUFBTSxLQUFLLEdBQUcsRUFBRSxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxJQUFJLEtBQUssQ0FBQyxFQUFFLENBQUM7SUFDekMsS0FBSyxDQUFDLFFBQVEsSUFBSSxDQUFDLENBQUM7SUFDcEIsS0FBSyxDQUFDLFdBQVcsR0FBRyxHQUFHLENBQUM7SUFDeEIsSUFBSSxLQUFLLENBQUMsUUFBUSxJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ25DLEtBQUssQ0FBQyxXQUFXLEdBQUcsR0FBRyxHQUFHLFdBQVcsQ0FBQztJQUN4QyxDQUFDO0lBQ0QsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEtBQUssQ0FBQztJQUNqQixRQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDaEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDI2IFBpcGVsaW5lIEJ1aWxkZXIgQ29udHJpYnV0b3JzXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuXG5pbXBvcnQgY3J5cHRvIGZyb20gJ2NyeXB0byc7XG5pbXBvcnQgZnMgZnJvbSAnZnMnO1xuaW1wb3J0IG9zIGZyb20gJ29zJztcbmltcG9ydCBwYXRoIGZyb20gJ3BhdGgnO1xuXG4vKipcbiAqIFNpbXBsZSBmaWxlLWJhc2VkIHJhdGUgbGltaXRlciBmb3IgYXV0aCBvcGVyYXRpb25zLlxuICogVHJhY2tzIGZhaWxlZCBhdHRlbXB0cyBhbmQgZW5mb3JjZXMgYSBjb29sZG93biBwZXJpb2QgYWZ0ZXIgdG9vIG1hbnkgZmFpbHVyZXMuXG4gKiBTdGF0ZSBpcyBwZXJzaXN0ZWQgaW4gYSB0ZW1wIGZpbGUgc28gaXQgc3Vydml2ZXMgYWNyb3NzIENMSSBpbnZvY2F0aW9ucy5cbiAqXG4gKiBTdGF0ZSBpcyBrZXllZCBwZXIgKGJhc2VVcmwsIGlkZW50aWZpZXIpIHNvIGEgZmFpbGVkIGxvZ2luIGZvciBvbmUgYWNjb3VudCBkb2VzXG4gKiBOT1QgbG9jayBvdXQgYW5vdGhlciBhY2NvdW50IG9uIGEgc2hhcmVkIHdvcmtzdGF0aW9uIC8gQ0kgaG9zdC4gQ2FsbHMgd2l0aG91dCBhblxuICogaWRlbnRpZmllciBmYWxsIGJhY2sgdG8gYSBzaGFyZWQgYF9kZWZhdWx0YCBidWNrZXQgKGNvYXJzZSBhbnRpLWJydXRlZm9yY2UpLlxuICovXG5cbmNvbnN0IFNUQVRFX0ZJTEUgPSBwYXRoLmpvaW4ob3MudG1wZGlyKCksICcucGlwZWxpbmUtbWFuYWdlci1hdXRoLXN0YXRlLmpzb24nKTtcbmNvbnN0IE1BWF9GQUlMVVJFUyA9IDU7XG5jb25zdCBDT09MRE9XTl9NUyA9IDYwXzAwMDsgLy8gMSBtaW51dGVcbmNvbnN0IFBSVU5FX01TID0gNjAgKiA2MF8wMDA7IC8vIGRyb3AgYnVja2V0cyBpZGxlIGZvciA+MWggdG8gYm91bmQgZmlsZSBncm93dGhcblxuaW50ZXJmYWNlIEF1dGhTdGF0ZSB7XG4gIGZhaWx1cmVzOiBudW1iZXI7XG4gIGxhc3RGYWlsdXJlOiBudW1iZXI7XG4gIGxvY2tlZFVudGlsOiBudW1iZXI7XG59XG5cbnR5cGUgU3RhdGVNYXAgPSBSZWNvcmQ8c3RyaW5nLCBBdXRoU3RhdGU+O1xuXG5jb25zdCBFTVBUWTogQXV0aFN0YXRlID0geyBmYWlsdXJlczogMCwgbGFzdEZhaWx1cmU6IDAsIGxvY2tlZFVudGlsOiAwIH07XG5cbi8qKiBTdGFibGUsIG5vbi1yZXZlcnNpYmxlIGJ1Y2tldCBrZXkgZm9yIGEgKGJhc2VVcmwsIGlkZW50aWZpZXIpIHBhaXIuICovXG5mdW5jdGlvbiBrZXlGb3IoaWRlbnRpZmllcj86IHN0cmluZywgYmFzZVVybD86IHN0cmluZyk6IHN0cmluZyB7XG4gIGlmICghaWRlbnRpZmllcikgcmV0dXJuICdfZGVmYXVsdCc7XG4gIHJldHVybiBjcnlwdG8uY3JlYXRlSGFzaCgnc2hhMjU2JykudXBkYXRlKGAke2Jhc2VVcmwgPz8gJyd9XFxuJHtpZGVudGlmaWVyfWApLmRpZ2VzdCgnaGV4Jykuc2xpY2UoMCwgMTYpO1xufVxuXG5mdW5jdGlvbiByZWFkTWFwKCk6IFN0YXRlTWFwIHtcbiAgdHJ5IHtcbiAgICBpZiAoZnMuZXhpc3RzU3luYyhTVEFURV9GSUxFKSkge1xuICAgICAgY29uc3QgcGFyc2VkID0gSlNPTi5wYXJzZShmcy5yZWFkRmlsZVN5bmMoU1RBVEVfRklMRSwgJ3V0Zi04JykpIGFzIHVua25vd247XG4gICAgICBpZiAocGFyc2VkICYmIHR5cGVvZiBwYXJzZWQgPT09ICdvYmplY3QnKSByZXR1cm4gcGFyc2VkIGFzIFN0YXRlTWFwO1xuICAgIH1cbiAgfSBjYXRjaCB7IC8qIGlnbm9yZSBjb3JydXB0IHN0YXRlICovIH1cbiAgcmV0dXJuIHt9O1xufVxuXG5mdW5jdGlvbiB3cml0ZU1hcChtYXA6IFN0YXRlTWFwKTogdm9pZCB7XG4gIGNvbnN0IG5vdyA9IERhdGUubm93KCk7XG4gIC8vIFBydW5lIGlkbGUgYnVja2V0cyBzbyB0aGUgZmlsZSBkb2Vzbid0IGdyb3cgdW5ib3VuZGVkIGFjcm9zcyBtYW55IGlkZW50aWZpZXJzLlxuICBmb3IgKGNvbnN0IFtrLCBzXSBvZiBPYmplY3QuZW50cmllcyhtYXApKSB7XG4gICAgaWYgKHMubG9ja2VkVW50aWwgPD0gbm93ICYmIG5vdyAtIHMubGFzdEZhaWx1cmUgPiBQUlVORV9NUykgZGVsZXRlIG1hcFtrXTtcbiAgfVxuICB0cnkge1xuICAgIGZzLndyaXRlRmlsZVN5bmMoU1RBVEVfRklMRSwgSlNPTi5zdHJpbmdpZnkobWFwKSwgeyBtb2RlOiAwbzYwMCB9KTtcbiAgfSBjYXRjaCB7IC8qIGJlc3QtZWZmb3J0ICovIH1cbn1cblxuLyoqXG4gKiBDaGVjayBpZiBhdXRoIGF0dGVtcHRzIGZvciB0aGlzIGlkZW50aWZpZXIgYXJlIGN1cnJlbnRseSByYXRlLWxpbWl0ZWQuXG4gKiBAcmV0dXJucyBudWxsIGlmIGFsbG93ZWQsIG9yIGEgbWVzc2FnZSBzdHJpbmcgaWYgYmxvY2tlZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNoZWNrQXV0aFJhdGVMaW1pdChpZGVudGlmaWVyPzogc3RyaW5nLCBiYXNlVXJsPzogc3RyaW5nKTogc3RyaW5nIHwgbnVsbCB7XG4gIGNvbnN0IGtleSA9IGtleUZvcihpZGVudGlmaWVyLCBiYXNlVXJsKTtcbiAgY29uc3QgbWFwID0gcmVhZE1hcCgpO1xuICBjb25zdCBzdGF0ZSA9IG1hcFtrZXldID8/IEVNUFRZO1xuICBjb25zdCBub3cgPSBEYXRlLm5vdygpO1xuXG4gIGlmIChzdGF0ZS5sb2NrZWRVbnRpbCA+IG5vdykge1xuICAgIGNvbnN0IHdhaXRTZWMgPSBNYXRoLmNlaWwoKHN0YXRlLmxvY2tlZFVudGlsIC0gbm93KSAvIDEwMDApO1xuICAgIHJldHVybiBgVG9vIG1hbnkgZmFpbGVkIGxvZ2luIGF0dGVtcHRzLiBUcnkgYWdhaW4gaW4gJHt3YWl0U2VjfXMuYDtcbiAgfVxuXG4gIC8vIFJlc2V0IHRoaXMgYnVja2V0IG9uY2UgdGhlIGNvb2xkb3duIHdpbmRvdyBoYXMgcGFzc2VkLlxuICBpZiAoc3RhdGUubGFzdEZhaWx1cmUgIT09IDAgJiYgbm93IC0gc3RhdGUubGFzdEZhaWx1cmUgPiBDT09MRE9XTl9NUykge1xuICAgIGRlbGV0ZSBtYXBba2V5XTtcbiAgICB3cml0ZU1hcChtYXApO1xuICB9XG5cbiAgcmV0dXJuIG51bGw7XG59XG5cbi8qKlxuICogUmVjb3JkIGEgc3VjY2Vzc2Z1bCBhdXRoIGZvciB0aGlzIGlkZW50aWZpZXIg4oCUIGNsZWFycyBpdHMgZmFpbHVyZSBjb3VudGVyLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVjb3JkQXV0aFN1Y2Nlc3MoaWRlbnRpZmllcj86IHN0cmluZywgYmFzZVVybD86IHN0cmluZyk6IHZvaWQge1xuICBjb25zdCBtYXAgPSByZWFkTWFwKCk7XG4gIGRlbGV0ZSBtYXBba2V5Rm9yKGlkZW50aWZpZXIsIGJhc2VVcmwpXTtcbiAgd3JpdGVNYXAobWFwKTtcbn1cblxuLyoqXG4gKiBSZWNvcmQgYSBmYWlsZWQgYXV0aCBhdHRlbXB0IGZvciB0aGlzIGlkZW50aWZpZXIuIEFmdGVyIE1BWF9GQUlMVVJFUywgbG9ja3Mgb3V0XG4gKiB0aGF0IGlkZW50aWZpZXIgZm9yIENPT0xET1dOX01TLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVjb3JkQXV0aEZhaWx1cmUoaWRlbnRpZmllcj86IHN0cmluZywgYmFzZVVybD86IHN0cmluZyk6IHZvaWQge1xuICBjb25zdCBrZXkgPSBrZXlGb3IoaWRlbnRpZmllciwgYmFzZVVybCk7XG4gIGNvbnN0IG1hcCA9IHJlYWRNYXAoKTtcbiAgY29uc3Qgbm93ID0gRGF0ZS5ub3coKTtcbiAgY29uc3Qgc3RhdGUgPSB7IC4uLihtYXBba2V5XSA/PyBFTVBUWSkgfTtcbiAgc3RhdGUuZmFpbHVyZXMgKz0gMTtcbiAgc3RhdGUubGFzdEZhaWx1cmUgPSBub3c7XG4gIGlmIChzdGF0ZS5mYWlsdXJlcyA+PSBNQVhfRkFJTFVSRVMpIHtcbiAgICBzdGF0ZS5sb2NrZWRVbnRpbCA9IG5vdyArIENPT0xET1dOX01TO1xuICB9XG4gIG1hcFtrZXldID0gc3RhdGU7XG4gIHdyaXRlTWFwKG1hcCk7XG59XG4iXX0=
@@ -0,0 +1,16 @@
1
+ import https from 'https';
2
+ /**
3
+ * Hosts that legitimately front a self-signed certificate — local dev stacks and
4
+ * kubectl port-forwards. Everything else (a real deploy domain) is expected to
5
+ * present a valid (ACM) certificate and MUST be verified, so a post-deploy probe
6
+ * can't be silently MITM'd.
7
+ */
8
+ export declare function isLocalHttpsHost(url: string): boolean;
9
+ /**
10
+ * Return an https.Agent that skips certificate verification ONLY for local /
11
+ * self-signed hosts; returns `undefined` (Node's default verification) for real
12
+ * domains. Pass the result straight to axios' `httpsAgent` — `undefined` keeps the
13
+ * default secure behavior.
14
+ */
15
+ export declare function httpsAgentForUrl(url: string): https.Agent | undefined;
16
+ //# sourceMappingURL=tls.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tls.d.ts","sourceRoot":"","sources":["../../src/utils/tls.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAgBrD;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,KAAK,CAAC,KAAK,GAAG,SAAS,CAErE"}
@@ -0,0 +1,35 @@
1
+ // Copyright 2026 Pipeline Builder Contributors
2
+ // SPDX-License-Identifier: Apache-2.0
3
+ import https from 'https';
4
+ /**
5
+ * Hosts that legitimately front a self-signed certificate — local dev stacks and
6
+ * kubectl port-forwards. Everything else (a real deploy domain) is expected to
7
+ * present a valid (ACM) certificate and MUST be verified, so a post-deploy probe
8
+ * can't be silently MITM'd.
9
+ */
10
+ export function isLocalHttpsHost(url) {
11
+ let hostname;
12
+ try {
13
+ hostname = new URL(url).hostname;
14
+ }
15
+ catch {
16
+ return false;
17
+ }
18
+ return (hostname === 'localhost' ||
19
+ hostname === '127.0.0.1' ||
20
+ hostname === '::1' ||
21
+ hostname.endsWith('.local') ||
22
+ /^10\./.test(hostname) ||
23
+ /^192\.168\./.test(hostname) ||
24
+ /^172\.(1[6-9]|2\d|3[01])\./.test(hostname));
25
+ }
26
+ /**
27
+ * Return an https.Agent that skips certificate verification ONLY for local /
28
+ * self-signed hosts; returns `undefined` (Node's default verification) for real
29
+ * domains. Pass the result straight to axios' `httpsAgent` — `undefined` keeps the
30
+ * default secure behavior.
31
+ */
32
+ export function httpsAgentForUrl(url) {
33
+ return isLocalHttpsHost(url) ? new https.Agent({ rejectUnauthorized: false }) : undefined;
34
+ }
35
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3V0aWxzL3Rscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQ0FBK0M7QUFDL0Msc0NBQXNDO0FBRXRDLE9BQU8sS0FBSyxNQUFNLE9BQU8sQ0FBQztBQUUxQjs7Ozs7R0FLRztBQUNILE1BQU0sVUFBVSxnQkFBZ0IsQ0FBQyxHQUFXO0lBQzFDLElBQUksUUFBZ0IsQ0FBQztJQUNyQixJQUFJLENBQUM7UUFDSCxRQUFRLEdBQUcsSUFBSSxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDO0lBQ25DLENBQUM7SUFBQyxNQUFNLENBQUM7UUFDUCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFDRCxPQUFPLENBQ0wsUUFBUSxLQUFLLFdBQVc7UUFDeEIsUUFBUSxLQUFLLFdBQVc7UUFDeEIsUUFBUSxLQUFLLEtBQUs7UUFDbEIsUUFBUSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUM7UUFDM0IsT0FBTyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUM7UUFDdEIsYUFBYSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUM7UUFDNUIsNEJBQTRCLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUM1QyxDQUFDO0FBQ0osQ0FBQztBQUVEOzs7OztHQUtHO0FBQ0gsTUFBTSxVQUFVLGdCQUFnQixDQUFDLEdBQVc7SUFDMUMsT0FBTyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLENBQUMsS0FBSyxDQUFDLEVBQUUsa0JBQWtCLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO0FBQzVGLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAyNiBQaXBlbGluZSBCdWlsZGVyIENvbnRyaWJ1dG9yc1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcblxuaW1wb3J0IGh0dHBzIGZyb20gJ2h0dHBzJztcblxuLyoqXG4gKiBIb3N0cyB0aGF0IGxlZ2l0aW1hdGVseSBmcm9udCBhIHNlbGYtc2lnbmVkIGNlcnRpZmljYXRlIOKAlCBsb2NhbCBkZXYgc3RhY2tzIGFuZFxuICoga3ViZWN0bCBwb3J0LWZvcndhcmRzLiBFdmVyeXRoaW5nIGVsc2UgKGEgcmVhbCBkZXBsb3kgZG9tYWluKSBpcyBleHBlY3RlZCB0b1xuICogcHJlc2VudCBhIHZhbGlkIChBQ00pIGNlcnRpZmljYXRlIGFuZCBNVVNUIGJlIHZlcmlmaWVkLCBzbyBhIHBvc3QtZGVwbG95IHByb2JlXG4gKiBjYW4ndCBiZSBzaWxlbnRseSBNSVRNJ2QuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0xvY2FsSHR0cHNIb3N0KHVybDogc3RyaW5nKTogYm9vbGVhbiB7XG4gIGxldCBob3N0bmFtZTogc3RyaW5nO1xuICB0cnkge1xuICAgIGhvc3RuYW1lID0gbmV3IFVSTCh1cmwpLmhvc3RuYW1lO1xuICB9IGNhdGNoIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgcmV0dXJuIChcbiAgICBob3N0bmFtZSA9PT0gJ2xvY2FsaG9zdCcgfHxcbiAgICBob3N0bmFtZSA9PT0gJzEyNy4wLjAuMScgfHxcbiAgICBob3N0bmFtZSA9PT0gJzo6MScgfHxcbiAgICBob3N0bmFtZS5lbmRzV2l0aCgnLmxvY2FsJykgfHxcbiAgICAvXjEwXFwuLy50ZXN0KGhvc3RuYW1lKSB8fFxuICAgIC9eMTkyXFwuMTY4XFwuLy50ZXN0KGhvc3RuYW1lKSB8fFxuICAgIC9eMTcyXFwuKDFbNi05XXwyXFxkfDNbMDFdKVxcLi8udGVzdChob3N0bmFtZSlcbiAgKTtcbn1cblxuLyoqXG4gKiBSZXR1cm4gYW4gaHR0cHMuQWdlbnQgdGhhdCBza2lwcyBjZXJ0aWZpY2F0ZSB2ZXJpZmljYXRpb24gT05MWSBmb3IgbG9jYWwgL1xuICogc2VsZi1zaWduZWQgaG9zdHM7IHJldHVybnMgYHVuZGVmaW5lZGAgKE5vZGUncyBkZWZhdWx0IHZlcmlmaWNhdGlvbikgZm9yIHJlYWxcbiAqIGRvbWFpbnMuIFBhc3MgdGhlIHJlc3VsdCBzdHJhaWdodCB0byBheGlvcycgYGh0dHBzQWdlbnRgIOKAlCBgdW5kZWZpbmVkYCBrZWVwcyB0aGVcbiAqIGRlZmF1bHQgc2VjdXJlIGJlaGF2aW9yLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaHR0cHNBZ2VudEZvclVybCh1cmw6IHN0cmluZyk6IGh0dHBzLkFnZW50IHwgdW5kZWZpbmVkIHtcbiAgcmV0dXJuIGlzTG9jYWxIdHRwc0hvc3QodXJsKSA/IG5ldyBodHRwcy5BZ2VudCh7IHJlamVjdFVuYXV0aG9yaXplZDogZmFsc2UgfSkgOiB1bmRlZmluZWQ7XG59XG4iXX0=
package/package.json CHANGED
@@ -97,7 +97,7 @@
97
97
  "access": "public",
98
98
  "registry": "https://registry.npmjs.org/"
99
99
  },
100
- "version": "3.4.126",
100
+ "version": "3.4.127",
101
101
  "bugs": {
102
102
  "url": "https://github.com/mwashburn160/pipeline-builder/issues"
103
103
  },