@aws-cdk/toolkit-lib 1.29.1 → 1.30.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (38) hide show
  1. package/build-info.json +2 -2
  2. package/lib/actions/diagnose/index.d.ts +28 -0
  3. package/lib/actions/diagnose/index.js +1 -1
  4. package/lib/actions/validate/index.d.ts +2 -0
  5. package/lib/actions/validate/index.js +1 -1
  6. package/lib/api/aws-auth/sdk.d.ts +5 -1
  7. package/lib/api/aws-auth/sdk.js +5 -1
  8. package/lib/api/cloud-assembly/environment.js +4 -1
  9. package/lib/api/cloud-assembly/stack-collection.d.ts +2 -0
  10. package/lib/api/cloud-assembly/stack-collection.js +3 -1
  11. package/lib/api/deployments/deploy-stack.js +4 -2
  12. package/lib/api/deployments/deployments.js +3 -1
  13. package/lib/api/diagnosing/diagnosis-formatting.js +54 -13
  14. package/lib/api/diagnosing/format-utils.d.ts +3 -0
  15. package/lib/api/diagnosing/format-utils.js +36 -0
  16. package/lib/api/diagnosing/resource-investigation.d.ts +41 -0
  17. package/lib/api/diagnosing/resource-investigation.js +302 -0
  18. package/lib/api/diagnosing/stack-diagnoser.d.ts +39 -3
  19. package/lib/api/diagnosing/stack-diagnoser.js +71 -30
  20. package/lib/api/io/private/messages.js +2 -2
  21. package/lib/api/validate/validate-formatting.d.ts +9 -2
  22. package/lib/api/validate/validate-formatting.js +117 -69
  23. package/lib/private/tools.js +26 -24
  24. package/lib/toolkit/private/collect-annotation-report.d.ts +12 -0
  25. package/lib/toolkit/private/collect-annotation-report.js +85 -0
  26. package/lib/toolkit/private/validation-report.d.ts +32 -0
  27. package/lib/toolkit/private/validation-report.js +119 -0
  28. package/lib/toolkit/toolkit.d.ts +4 -7
  29. package/lib/toolkit/toolkit.js +24 -67
  30. package/lib/toolkit/types.d.ts +1 -0
  31. package/lib/toolkit/types.js +1 -1
  32. package/lib/util/glob-matcher.d.ts +19 -7
  33. package/lib/util/glob-matcher.js +63 -14
  34. package/package.json +5 -5
  35. package/lib/api/diagnosing/tree-builder.d.ts +0 -13
  36. package/lib/api/diagnosing/tree-builder.js +0 -86
  37. package/lib/api/diagnosing/tree.d.ts +0 -19
  38. package/lib/api/diagnosing/tree.js +0 -72
@@ -146,4 +146,5 @@ export interface FeatureFlag {
146
146
  v2?: any;
147
147
  };
148
148
  }
149
+ export type MinimumSeverity = 'error' | 'warn' | 'none';
149
150
  //# sourceMappingURL=types.d.ts.map
@@ -1,3 +1,3 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJ0eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBQcm9wZXJ0aWVzIHRoYXQgZGVzY3JpYmUgYSBwaHlzaWNhbGx5IGRlcGxveWVkIHN0YWNrXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUGh5c2ljYWxTdGFjazxBcm4gZXh0ZW5kcyAnYXJuUmVxdWlyZWQnIHwgJ2Fybk9wdGlvbmFsJyA9ICdhcm5SZXF1aXJlZCc+IHtcbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBzdGFja1xuICAgKlxuICAgKiBBIHN0YWNrIG5hbWUgaXMgdW5pcXVlIGluc2lkZSBpdHMgZW52aXJvbm1lbnQsIGJ1dCBub3QgdW5pcXVlIGdsb2JhbGx5LlxuICAgKi9cbiAgcmVhZG9ubHkgc3RhY2tOYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBlbnZpcm9ubWVudCBvZiB0aGUgc3RhY2tcbiAgICpcbiAgICogVGhpcyBlbnZpcm9ubWVudCBpcyBhbHdheXMgY29uY3JldGUsIGJlY2F1c2UgZXZlbiB0aG91Z2ggdGhlIENESyBhcHAnc1xuICAgKiBzdGFjayBtYXkgYmUgcmVnaW9uLWFnbm9zdGljLCBpbiBvcmRlciB0byBiZSBkZXBsb3llZCBpdCB3aWxsIGhhdmUgdG8gaGF2ZVxuICAgKiBiZWVuIHNwZWNpYWxpemVkLlxuICAgKi9cbiAgcmVhZG9ubHkgZW52aXJvbm1lbnQ6IEVudmlyb25tZW50O1xuXG4gIC8qKlxuICAgKiBUaGUgQVJOIG9mIHRoZSBzdGFja1xuICAgKi9cbiAgcmVhZG9ubHkgc3RhY2tBcm46IEFybiBleHRlbmRzICdhcm5PcHRpb25hbCcgPyBzdHJpbmcgfCB1bmRlZmluZWQgOiBzdHJpbmc7XG59XG5cbi8qKlxuICogUmVzdWx0IGludGVyZmFjZSBmb3IgdG9vbGtpdC5kZXBsb3kgb3BlcmF0aW9uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRGVwbG95UmVzdWx0IHtcbiAgLyoqXG4gICAqIExpc3Qgb2Ygc3RhY2tzIGRlcGxveWVkIGJ5IHRoaXMgb3BlcmF0aW9uXG4gICAqL1xuICByZWFkb25seSBzdGFja3M6IERlcGxveWVkU3RhY2tbXTtcbn1cblxuLyoqXG4gKiBJbmZvcm1hdGlvbiBhYm91dCBhIGRlcGxveWVkIHN0YWNrXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRGVwbG95ZWRTdGFjayBleHRlbmRzIFBoeXNpY2FsU3RhY2sge1xuICAvKipcbiAgICogSGllcmFyY2hpY2FsIGlkZW50aWZpZXJcbiAgICpcbiAgICogVGhpcyB1bmlxdWVseSBpZGVudGlmaWVzIHRoZSBzdGFjayBpbnNpZGUgdGhlIENESyBhcHAuXG4gICAqXG4gICAqIEluIHByYWN0aWNlIHRoaXMgd2lsbCBiZSB0aGUgc3RhY2sncyBjb25zdHJ1Y3QgcGF0aCwgYnV0IHVuZm9ydHVuYXRlbHkgdGhlXG4gICAqIENsb3VkIEFzc2VtYmx5IGNvbnRyYWN0IGRvZXNuJ3QgcmVxdWlyZSBvciBndWFyYW50ZWUgdGhhdC5cbiAgICovXG4gIHJlYWRvbmx5IGhpZXJhcmNoaWNhbElkOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBvdXRwdXRzIG9mIHRoZSBkZXBsb3llZCBDbG91ZEZvcm1hdGlvbiBzdGFja1xuICAgKi9cbiAgcmVhZG9ubHkgb3V0cHV0czogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfTtcblxuICAvKipcbiAgICogUmVzb3VyY2VzIHRoYXQgQ2xvdWRGb3JtYXRpb24gZmFpbGVkIHRvIGRlbGV0ZSBkdXJpbmcgdGhlIHN0YWNrIHVwZGF0ZVxuICAgKlxuICAgKiBXaGVuIGEgcmVzb3VyY2UgcmVwbGFjZW1lbnQgb3IgcmVtb3ZhbCB0cmlnZ2VycyBhIGRlbGV0ZSB0aGF0IGZhaWxzLFxuICAgKiBDbG91ZEZvcm1hdGlvbiBza2lwcyB0aGUgZGVsZXRpb24gYW5kIGNvbXBsZXRlcyB0aGUgdXBkYXRlIGFueXdheS4gVGhlc2VcbiAgICogcmVzb3VyY2VzIGFyZSBubyBsb25nZXIgbWFuYWdlZCBieSBDbG91ZEZvcm1hdGlvbiBidXQgc3RpbGwgZXhpc3QgYW5kIG1heVxuICAgKiBpbmN1ciBjaGFyZ2VzLlxuICAgKi9cbiAgcmVhZG9ubHkgZGVsZXRlRmFpbHVyZXM6IFJlc291cmNlRGVsZXRlRmFpbHVyZVtdO1xufVxuXG4vKipcbiAqIEEgcmVzb3VyY2UgdGhhdCBDbG91ZEZvcm1hdGlvbiBmYWlsZWQgdG8gZGVsZXRlIGR1cmluZyBhIHN0YWNrIHVwZGF0ZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJlc291cmNlRGVsZXRlRmFpbHVyZSB7XG4gIC8qKlxuICAgKiBUaGUgbG9naWNhbCBJRCBvZiB0aGUgcmVzb3VyY2UgaW4gdGhlIENsb3VkRm9ybWF0aW9uIHRlbXBsYXRlXG4gICAqL1xuICByZWFkb25seSBsb2dpY2FsUmVzb3VyY2VJZDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgcGh5c2ljYWwgSUQgb2YgdGhlIHJlc291cmNlIChlLmcuIGFuIEFSTiBvciBuYW1lKVxuICAgKi9cbiAgcmVhZG9ubHkgcGh5c2ljYWxSZXNvdXJjZUlkPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgQ2xvdWRGb3JtYXRpb24gcmVzb3VyY2UgdHlwZSAoZS5nLiBBV1M6OlMzOjpCdWNrZXQpXG4gICAqL1xuICByZWFkb25seSByZXNvdXJjZVR5cGU6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHJlYXNvbiBDbG91ZEZvcm1hdGlvbiBnYXZlIGZvciB0aGUgZGVsZXRpb24gZmFpbHVyZVxuICAgKi9cbiAgcmVhZG9ubHkgcmVhc29uOiBzdHJpbmc7XG59XG5cbi8qKlxuICogQW4gZW52aXJvbm1lbnQsIHdoaWNoIGlzIGFuIChhY2NvdW50LCByZWdpb24pIHBhaXJcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBFbnZpcm9ubWVudCB7XG4gIC8qKlxuICAgKiBUaGUgYWNjb3VudCBudW1iZXJcbiAgICovXG4gIHJlYWRvbmx5IGFjY291bnQ6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHJlZ2lvbiBudW1iZXJcbiAgICovXG4gIHJlYWRvbmx5IHJlZ2lvbjogc3RyaW5nO1xufVxuXG4vKipcbiAqIFJlc3VsdCBpbnRlcmZhY2UgZm9yIHRvb2xraXQuZGVzdHJveSBvcGVyYXRpb25cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBEZXN0cm95UmVzdWx0IHtcbiAgLyoqXG4gICAqIExpc3Qgb2Ygc3RhY2tzIGRlc3Ryb3llZCBieSB0aGlzIG9wZXJhdGlvblxuICAgKi9cbiAgcmVhZG9ubHkgc3RhY2tzOiBEZXN0cm95ZWRTdGFja1tdO1xufVxuXG4vKipcbiAqIEEgc3RhY2sgdGFyZ2V0ZWQgYnkgYSBkZXN0cm95IG9wZXJhdGlvblxuICovXG5leHBvcnQgaW50ZXJmYWNlIERlc3Ryb3llZFN0YWNrIGV4dGVuZHMgUGh5c2ljYWxTdGFjazwnYXJuT3B0aW9uYWwnPiB7XG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSBzdGFjayBleGlzdGVkIHRvIGJlZ2luIHdpdGhcbiAgICpcbiAgICogSWYgYCFzdGFja0V4aXN0ZWRgLCB0aGUgc3RhY2sgZGlkbid0IGV4aXN0LCB3YXNuJ3QgZGVsZXRlZCwgYW5kIGBzdGFja0FybmBcbiAgICogd2lsbCBiZSBgdW5kZWZpbmVkYC5cbiAgICovXG4gIHJlYWRvbmx5IHN0YWNrRXhpc3RlZDogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBSZXN1bHQgaW50ZXJmYWNlIGZvciB0b29sa2l0LnJvbGxiYWNrIG9wZXJhdGlvblxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJvbGxiYWNrUmVzdWx0IHtcbiAgLyoqXG4gICAqIExpc3Qgb2Ygc3RhY2tzIHJvbGxlZCBiYWNrIGJ5IHRoaXMgb3BlcmF0aW9uXG4gICAqL1xuICByZWFkb25seSBzdGFja3M6IFJvbGxlZEJhY2tTdGFja1tdO1xufVxuXG4vKipcbiAqIEEgc3RhY2sgdGFyZ2V0ZWQgYnkgYSByb2xsYmFjayBvcGVyYXRpb25cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSb2xsZWRCYWNrU3RhY2sgZXh0ZW5kcyBQaHlzaWNhbFN0YWNrIHtcbiAgLyoqXG4gICAqIFdoYXQgb3BlcmF0aW9uIHdlIGRpZCBmb3IgdGhpcyBzdGFja1xuICAgKlxuICAgKiBFaXRoZXI6IHdlIGRpZCByb2xsIGl0IGJhY2ssIG9yIHdlIGRpZG4ndCBuZWVkIHRvIHJvbGwgaXQgYmFjayBiZWNhdXNlXG4gICAqIGl0IHdhcyBhbHJlYWR5IHN0YWJsZS5cbiAgICovXG4gIHJlYWRvbmx5IHJlc3VsdDogU3RhY2tSb2xsYmFja1Jlc3VsdDtcbn1cblxuZXhwb3J0IHR5cGUgU3RhY2tSb2xsYmFja1Jlc3VsdCA9ICdyb2xsZWQtYmFjaycgfCAnYWxyZWFkeS1zdGFibGUnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEZlYXR1cmVGbGFnIHtcbiAgcmVhZG9ubHkgbW9kdWxlOiBzdHJpbmc7XG4gIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcbiAgcmVhZG9ubHkgcmVjb21tZW5kZWRWYWx1ZTogdW5rbm93bjtcbiAgcmVhZG9ubHkgdXNlclZhbHVlPzogdW5rbm93bjtcbiAgcmVhZG9ubHkgZXhwbGFuYXRpb24/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IHVuY29uZmlndXJlZEJlaGF2ZXNMaWtlPzogeyB2Mj86IGFueSB9O1xufVxuIl19
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJ0eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBQcm9wZXJ0aWVzIHRoYXQgZGVzY3JpYmUgYSBwaHlzaWNhbGx5IGRlcGxveWVkIHN0YWNrXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUGh5c2ljYWxTdGFjazxBcm4gZXh0ZW5kcyAnYXJuUmVxdWlyZWQnIHwgJ2Fybk9wdGlvbmFsJyA9ICdhcm5SZXF1aXJlZCc+IHtcbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBzdGFja1xuICAgKlxuICAgKiBBIHN0YWNrIG5hbWUgaXMgdW5pcXVlIGluc2lkZSBpdHMgZW52aXJvbm1lbnQsIGJ1dCBub3QgdW5pcXVlIGdsb2JhbGx5LlxuICAgKi9cbiAgcmVhZG9ubHkgc3RhY2tOYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBlbnZpcm9ubWVudCBvZiB0aGUgc3RhY2tcbiAgICpcbiAgICogVGhpcyBlbnZpcm9ubWVudCBpcyBhbHdheXMgY29uY3JldGUsIGJlY2F1c2UgZXZlbiB0aG91Z2ggdGhlIENESyBhcHAnc1xuICAgKiBzdGFjayBtYXkgYmUgcmVnaW9uLWFnbm9zdGljLCBpbiBvcmRlciB0byBiZSBkZXBsb3llZCBpdCB3aWxsIGhhdmUgdG8gaGF2ZVxuICAgKiBiZWVuIHNwZWNpYWxpemVkLlxuICAgKi9cbiAgcmVhZG9ubHkgZW52aXJvbm1lbnQ6IEVudmlyb25tZW50O1xuXG4gIC8qKlxuICAgKiBUaGUgQVJOIG9mIHRoZSBzdGFja1xuICAgKi9cbiAgcmVhZG9ubHkgc3RhY2tBcm46IEFybiBleHRlbmRzICdhcm5PcHRpb25hbCcgPyBzdHJpbmcgfCB1bmRlZmluZWQgOiBzdHJpbmc7XG59XG5cbi8qKlxuICogUmVzdWx0IGludGVyZmFjZSBmb3IgdG9vbGtpdC5kZXBsb3kgb3BlcmF0aW9uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRGVwbG95UmVzdWx0IHtcbiAgLyoqXG4gICAqIExpc3Qgb2Ygc3RhY2tzIGRlcGxveWVkIGJ5IHRoaXMgb3BlcmF0aW9uXG4gICAqL1xuICByZWFkb25seSBzdGFja3M6IERlcGxveWVkU3RhY2tbXTtcbn1cblxuLyoqXG4gKiBJbmZvcm1hdGlvbiBhYm91dCBhIGRlcGxveWVkIHN0YWNrXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRGVwbG95ZWRTdGFjayBleHRlbmRzIFBoeXNpY2FsU3RhY2sge1xuICAvKipcbiAgICogSGllcmFyY2hpY2FsIGlkZW50aWZpZXJcbiAgICpcbiAgICogVGhpcyB1bmlxdWVseSBpZGVudGlmaWVzIHRoZSBzdGFjayBpbnNpZGUgdGhlIENESyBhcHAuXG4gICAqXG4gICAqIEluIHByYWN0aWNlIHRoaXMgd2lsbCBiZSB0aGUgc3RhY2sncyBjb25zdHJ1Y3QgcGF0aCwgYnV0IHVuZm9ydHVuYXRlbHkgdGhlXG4gICAqIENsb3VkIEFzc2VtYmx5IGNvbnRyYWN0IGRvZXNuJ3QgcmVxdWlyZSBvciBndWFyYW50ZWUgdGhhdC5cbiAgICovXG4gIHJlYWRvbmx5IGhpZXJhcmNoaWNhbElkOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBvdXRwdXRzIG9mIHRoZSBkZXBsb3llZCBDbG91ZEZvcm1hdGlvbiBzdGFja1xuICAgKi9cbiAgcmVhZG9ubHkgb3V0cHV0czogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfTtcblxuICAvKipcbiAgICogUmVzb3VyY2VzIHRoYXQgQ2xvdWRGb3JtYXRpb24gZmFpbGVkIHRvIGRlbGV0ZSBkdXJpbmcgdGhlIHN0YWNrIHVwZGF0ZVxuICAgKlxuICAgKiBXaGVuIGEgcmVzb3VyY2UgcmVwbGFjZW1lbnQgb3IgcmVtb3ZhbCB0cmlnZ2VycyBhIGRlbGV0ZSB0aGF0IGZhaWxzLFxuICAgKiBDbG91ZEZvcm1hdGlvbiBza2lwcyB0aGUgZGVsZXRpb24gYW5kIGNvbXBsZXRlcyB0aGUgdXBkYXRlIGFueXdheS4gVGhlc2VcbiAgICogcmVzb3VyY2VzIGFyZSBubyBsb25nZXIgbWFuYWdlZCBieSBDbG91ZEZvcm1hdGlvbiBidXQgc3RpbGwgZXhpc3QgYW5kIG1heVxuICAgKiBpbmN1ciBjaGFyZ2VzLlxuICAgKi9cbiAgcmVhZG9ubHkgZGVsZXRlRmFpbHVyZXM6IFJlc291cmNlRGVsZXRlRmFpbHVyZVtdO1xufVxuXG4vKipcbiAqIEEgcmVzb3VyY2UgdGhhdCBDbG91ZEZvcm1hdGlvbiBmYWlsZWQgdG8gZGVsZXRlIGR1cmluZyBhIHN0YWNrIHVwZGF0ZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJlc291cmNlRGVsZXRlRmFpbHVyZSB7XG4gIC8qKlxuICAgKiBUaGUgbG9naWNhbCBJRCBvZiB0aGUgcmVzb3VyY2UgaW4gdGhlIENsb3VkRm9ybWF0aW9uIHRlbXBsYXRlXG4gICAqL1xuICByZWFkb25seSBsb2dpY2FsUmVzb3VyY2VJZDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgcGh5c2ljYWwgSUQgb2YgdGhlIHJlc291cmNlIChlLmcuIGFuIEFSTiBvciBuYW1lKVxuICAgKi9cbiAgcmVhZG9ubHkgcGh5c2ljYWxSZXNvdXJjZUlkPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgQ2xvdWRGb3JtYXRpb24gcmVzb3VyY2UgdHlwZSAoZS5nLiBBV1M6OlMzOjpCdWNrZXQpXG4gICAqL1xuICByZWFkb25seSByZXNvdXJjZVR5cGU6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHJlYXNvbiBDbG91ZEZvcm1hdGlvbiBnYXZlIGZvciB0aGUgZGVsZXRpb24gZmFpbHVyZVxuICAgKi9cbiAgcmVhZG9ubHkgcmVhc29uOiBzdHJpbmc7XG59XG5cbi8qKlxuICogQW4gZW52aXJvbm1lbnQsIHdoaWNoIGlzIGFuIChhY2NvdW50LCByZWdpb24pIHBhaXJcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBFbnZpcm9ubWVudCB7XG4gIC8qKlxuICAgKiBUaGUgYWNjb3VudCBudW1iZXJcbiAgICovXG4gIHJlYWRvbmx5IGFjY291bnQ6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHJlZ2lvbiBudW1iZXJcbiAgICovXG4gIHJlYWRvbmx5IHJlZ2lvbjogc3RyaW5nO1xufVxuXG4vKipcbiAqIFJlc3VsdCBpbnRlcmZhY2UgZm9yIHRvb2xraXQuZGVzdHJveSBvcGVyYXRpb25cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBEZXN0cm95UmVzdWx0IHtcbiAgLyoqXG4gICAqIExpc3Qgb2Ygc3RhY2tzIGRlc3Ryb3llZCBieSB0aGlzIG9wZXJhdGlvblxuICAgKi9cbiAgcmVhZG9ubHkgc3RhY2tzOiBEZXN0cm95ZWRTdGFja1tdO1xufVxuXG4vKipcbiAqIEEgc3RhY2sgdGFyZ2V0ZWQgYnkgYSBkZXN0cm95IG9wZXJhdGlvblxuICovXG5leHBvcnQgaW50ZXJmYWNlIERlc3Ryb3llZFN0YWNrIGV4dGVuZHMgUGh5c2ljYWxTdGFjazwnYXJuT3B0aW9uYWwnPiB7XG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSBzdGFjayBleGlzdGVkIHRvIGJlZ2luIHdpdGhcbiAgICpcbiAgICogSWYgYCFzdGFja0V4aXN0ZWRgLCB0aGUgc3RhY2sgZGlkbid0IGV4aXN0LCB3YXNuJ3QgZGVsZXRlZCwgYW5kIGBzdGFja0FybmBcbiAgICogd2lsbCBiZSBgdW5kZWZpbmVkYC5cbiAgICovXG4gIHJlYWRvbmx5IHN0YWNrRXhpc3RlZDogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBSZXN1bHQgaW50ZXJmYWNlIGZvciB0b29sa2l0LnJvbGxiYWNrIG9wZXJhdGlvblxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJvbGxiYWNrUmVzdWx0IHtcbiAgLyoqXG4gICAqIExpc3Qgb2Ygc3RhY2tzIHJvbGxlZCBiYWNrIGJ5IHRoaXMgb3BlcmF0aW9uXG4gICAqL1xuICByZWFkb25seSBzdGFja3M6IFJvbGxlZEJhY2tTdGFja1tdO1xufVxuXG4vKipcbiAqIEEgc3RhY2sgdGFyZ2V0ZWQgYnkgYSByb2xsYmFjayBvcGVyYXRpb25cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSb2xsZWRCYWNrU3RhY2sgZXh0ZW5kcyBQaHlzaWNhbFN0YWNrIHtcbiAgLyoqXG4gICAqIFdoYXQgb3BlcmF0aW9uIHdlIGRpZCBmb3IgdGhpcyBzdGFja1xuICAgKlxuICAgKiBFaXRoZXI6IHdlIGRpZCByb2xsIGl0IGJhY2ssIG9yIHdlIGRpZG4ndCBuZWVkIHRvIHJvbGwgaXQgYmFjayBiZWNhdXNlXG4gICAqIGl0IHdhcyBhbHJlYWR5IHN0YWJsZS5cbiAgICovXG4gIHJlYWRvbmx5IHJlc3VsdDogU3RhY2tSb2xsYmFja1Jlc3VsdDtcbn1cblxuZXhwb3J0IHR5cGUgU3RhY2tSb2xsYmFja1Jlc3VsdCA9ICdyb2xsZWQtYmFjaycgfCAnYWxyZWFkeS1zdGFibGUnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEZlYXR1cmVGbGFnIHtcbiAgcmVhZG9ubHkgbW9kdWxlOiBzdHJpbmc7XG4gIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcbiAgcmVhZG9ubHkgcmVjb21tZW5kZWRWYWx1ZTogdW5rbm93bjtcbiAgcmVhZG9ubHkgdXNlclZhbHVlPzogdW5rbm93bjtcbiAgcmVhZG9ubHkgZXhwbGFuYXRpb24/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IHVuY29uZmlndXJlZEJlaGF2ZXNMaWtlPzogeyB2Mj86IGFueSB9O1xufVxuXG5leHBvcnQgdHlwZSBNaW5pbXVtU2V2ZXJpdHkgPSAnZXJyb3InIHwgJ3dhcm4nIHwgJ25vbmUnO1xuIl19
@@ -1,3 +1,4 @@
1
+ import type { Stats } from 'fs';
1
2
  /**
2
3
  * Options for creating a glob matcher
3
4
  */
@@ -20,15 +21,26 @@ export interface GlobMatcherOptions {
20
21
  rootDir?: string;
21
22
  }
22
23
  /**
23
- * Creates a function that returns true if a file should be ignored.
24
- * A file is ignored if:
25
- * - It matches any exclude pattern, OR
26
- * - It does NOT match any include pattern
24
+ * Creates a function that returns true if a path should be ignored by chokidar.
27
25
  *
28
- * This replicates the behavior of chokidar v3's glob pattern support.
26
+ * The function is used as chokidar v4's `ignored` callback, which is consulted
27
+ * both for files (to decide whether to watch them) and for directories (to
28
+ * decide whether to descend into them). Chokidar v4 removed native glob support,
29
+ * so this replicates chokidar v3's behavior using picomatch.
30
+ *
31
+ * The path is classified using the `Stats` chokidar provides (when available):
32
+ * - Exclude patterns always take precedence and prune both files and directories.
33
+ * - A **directory** is only pruned by excludes. It is never ignored merely for
34
+ * failing the include filter, because nested files may still match — pruning
35
+ * it would silently drop the entire subtree (the root cause of the original
36
+ * bug where `include: ['src/**\/*.ts']` matched nothing).
37
+ * - A **file** must match an include pattern to be watched.
38
+ * - When `Stats` is absent (chokidar invokes the callback both with and without
39
+ * stats during traversal), the path is kept if it either matches a file
40
+ * include pattern or is a potential ancestor directory of one.
29
41
  *
30
42
  * @param options - The include and exclude patterns
31
- * @returns A function that takes a file path and returns true if it should be ignored
43
+ * @returns A function that takes a path (and optional stats) and returns true if it should be ignored
32
44
  */
33
- export declare function createIgnoreMatcher(options: GlobMatcherOptions): (filePath: string) => boolean;
45
+ export declare function createIgnoreMatcher(options: GlobMatcherOptions): (filePath: string, stats?: Stats) => boolean;
34
46
  //# sourceMappingURL=glob-matcher.d.ts.map
@@ -22,15 +22,52 @@ function normalizePattern(pattern) {
22
22
  return `${normalized}/**`;
23
23
  }
24
24
  /**
25
- * Creates a function that returns true if a file should be ignored.
26
- * A file is ignored if:
27
- * - It matches any exclude pattern, OR
28
- * - It does NOT match any include pattern
25
+ * Builds the list of directory-prefix globs for an include pattern.
29
26
  *
30
- * This replicates the behavior of chokidar v3's glob pattern support.
27
+ * A pattern like `src/**\/*.ts` only matches files (e.g. `src/a.ts`), never the
28
+ * directories that contain them (`src`, `src/sub`). But chokidar v4 uses the
29
+ * `ignored` callback to decide whether to *descend* into a directory: if a
30
+ * directory is ignored, its entire subtree is pruned and no nested file is ever
31
+ * discovered. We must therefore allow traversal of any directory that could be
32
+ * an ancestor of a matching file.
33
+ *
34
+ * We derive those ancestors from the progressive `/`-delimited prefixes of the
35
+ * pattern: `src/**\/*.ts` yields `src`, `src/**`, `src/**\/*.ts`. Matching a
36
+ * directory path against this set answers "could a matching file live under
37
+ * here?" without touching the filesystem.
38
+ *
39
+ * @param pattern - A normalized include pattern
40
+ * @returns The progressive prefix globs of the pattern
41
+ */
42
+ function directoryPrefixGlobs(pattern) {
43
+ const segments = pattern.split('/');
44
+ const prefixes = [];
45
+ for (let i = 1; i <= segments.length; i++) {
46
+ prefixes.push(segments.slice(0, i).join('/'));
47
+ }
48
+ return prefixes;
49
+ }
50
+ /**
51
+ * Creates a function that returns true if a path should be ignored by chokidar.
52
+ *
53
+ * The function is used as chokidar v4's `ignored` callback, which is consulted
54
+ * both for files (to decide whether to watch them) and for directories (to
55
+ * decide whether to descend into them). Chokidar v4 removed native glob support,
56
+ * so this replicates chokidar v3's behavior using picomatch.
57
+ *
58
+ * The path is classified using the `Stats` chokidar provides (when available):
59
+ * - Exclude patterns always take precedence and prune both files and directories.
60
+ * - A **directory** is only pruned by excludes. It is never ignored merely for
61
+ * failing the include filter, because nested files may still match — pruning
62
+ * it would silently drop the entire subtree (the root cause of the original
63
+ * bug where `include: ['src/**\/*.ts']` matched nothing).
64
+ * - A **file** must match an include pattern to be watched.
65
+ * - When `Stats` is absent (chokidar invokes the callback both with and without
66
+ * stats during traversal), the path is kept if it either matches a file
67
+ * include pattern or is a potential ancestor directory of one.
31
68
  *
32
69
  * @param options - The include and exclude patterns
33
- * @returns A function that takes a file path and returns true if it should be ignored
70
+ * @returns A function that takes a path (and optional stats) and returns true if it should be ignored
34
71
  */
35
72
  function createIgnoreMatcher(options) {
36
73
  const includePatterns = options.include && options.include.length > 0
@@ -43,10 +80,13 @@ function createIgnoreMatcher(options) {
43
80
  dot: true, // Match dotfiles when pattern explicitly includes them
44
81
  };
45
82
  const includeMatcher = picomatch(includePatterns, picomatchOptions);
83
+ // Matches a directory that could be an ancestor of an included file, so we
84
+ // don't prune subtrees before discovering the files we actually want.
85
+ const directoryMatcher = picomatch(includePatterns.flatMap(directoryPrefixGlobs), picomatchOptions);
46
86
  const excludeMatcher = excludePatterns.length > 0
47
87
  ? picomatch(excludePatterns, picomatchOptions)
48
88
  : () => false;
49
- return (filePath) => {
89
+ return (filePath, stats) => {
50
90
  // Normalize path separators for cross-platform compatibility
51
91
  let normalizedPath = filePath.replace(/\\/g, '/');
52
92
  // If rootDir is provided and the path appears to be absolute, make it relative
@@ -61,16 +101,25 @@ function createIgnoreMatcher(options) {
61
101
  return false;
62
102
  }
63
103
  }
64
- // A file is ignored if:
65
- // 1. It matches any exclude pattern, OR
66
- // 2. It does NOT match any include pattern
104
+ // Excludes always take precedence, for both files and directories.
67
105
  if (excludeMatcher(normalizedPath)) {
68
106
  return true; // Ignore: matches exclude
69
107
  }
70
- if (!includeMatcher(normalizedPath)) {
71
- return true; // Ignore: doesn't match include
108
+ // A directory is kept if it could be an ancestor of an included file, so we
109
+ // descend into it and discover the nested files we actually want. It is
110
+ // never pruned merely for failing the file-level include filter (it can't
111
+ // match a pattern like 'src/**\/*.ts'), which would drop the entire subtree.
112
+ if (stats?.isDirectory()) {
113
+ return !directoryMatcher(normalizedPath);
114
+ }
115
+ // Files must match an include pattern.
116
+ if (stats?.isFile()) {
117
+ return !includeMatcher(normalizedPath);
72
118
  }
73
- return false; // Don't ignore: matches include and doesn't match exclude
119
+ // No stats available: chokidar consults the callback both with and without
120
+ // stats during traversal. Keep the path if it matches a file include
121
+ // pattern, or if it could be an ancestor directory of an included file.
122
+ return !(includeMatcher(normalizedPath) || directoryMatcher(normalizedPath));
74
123
  };
75
124
  }
76
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2xvYi1tYXRjaGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiZ2xvYi1tYXRjaGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBeURBLGtEQThDQztBQXZHRCxpRUFBaUU7QUFDakUsdUNBQXdDO0FBMEJ4Qzs7Ozs7OztHQU9HO0FBQ0gsU0FBUyxnQkFBZ0IsQ0FBQyxPQUFlO0lBQ3ZDLHlEQUF5RDtJQUN6RCxJQUFJLE9BQU8sQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLElBQUksT0FBTyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsSUFBSSxPQUFPLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7UUFDNUUsT0FBTyxPQUFPLENBQUM7SUFDakIsQ0FBQztJQUNELDZEQUE2RDtJQUM3RCxvREFBb0Q7SUFDcEQsTUFBTSxVQUFVLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDL0MsT0FBTyxHQUFHLFVBQVUsS0FBSyxDQUFDO0FBQzVCLENBQUM7QUFFRDs7Ozs7Ozs7OztHQVVHO0FBQ0gsU0FBZ0IsbUJBQW1CLENBQUMsT0FBMkI7SUFDN0QsTUFBTSxlQUFlLEdBQUcsT0FBTyxDQUFDLE9BQU8sSUFBSSxPQUFPLENBQUMsT0FBTyxDQUFDLE1BQU0sR0FBRyxDQUFDO1FBQ25FLENBQUMsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQztRQUN2QyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNYLE1BQU0sZUFBZSxHQUFHLENBQUMsT0FBTyxDQUFDLE9BQU8sSUFBSSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztJQUN0RSxNQUFNLE9BQU8sR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO0lBRXRHLHdEQUF3RDtJQUN4RCxNQUFNLGdCQUFnQixHQUErQjtRQUNuRCxHQUFHLEVBQUUsSUFBSSxFQUFFLHVEQUF1RDtLQUNuRSxDQUFDO0lBRUYsTUFBTSxjQUFjLEdBQUcsU0FBUyxDQUFDLGVBQWUsRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDO0lBQ3BFLE1BQU0sY0FBYyxHQUFHLGVBQWUsQ0FBQyxNQUFNLEdBQUcsQ0FBQztRQUMvQyxDQUFDLENBQUMsU0FBUyxDQUFDLGVBQWUsRUFBRSxnQkFBZ0IsQ0FBQztRQUM5QyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsS0FBSyxDQUFDO0lBRWhCLE9BQU8sQ0FBQyxRQUFnQixFQUFXLEVBQUU7UUFDbkMsNkRBQTZEO1FBQzdELElBQUksY0FBYyxHQUFHLFFBQVEsQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBRWxELCtFQUErRTtRQUMvRSxxRUFBcUU7UUFDckUsZ0RBQWdEO1FBQ2hELElBQUksT0FBTyxFQUFFLENBQUM7WUFDWixJQUFJLGNBQWMsQ0FBQyxVQUFVLENBQUMsT0FBTyxHQUFHLEdBQUcsQ0FBQyxFQUFFLENBQUM7Z0JBQzdDLGNBQWMsR0FBRyxjQUFjLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFDNUQsQ0FBQztpQkFBTSxJQUFJLGNBQWMsS0FBSyxPQUFPLEVBQUUsQ0FBQztnQkFDdEMsOENBQThDO2dCQUM5QyxPQUFPLEtBQUssQ0FBQztZQUNmLENBQUM7UUFDSCxDQUFDO1FBRUQsd0JBQXdCO1FBQ3hCLHdDQUF3QztRQUN4QywyQ0FBMkM7UUFDM0MsSUFBSSxjQUFjLENBQUMsY0FBYyxDQUFDLEVBQUUsQ0FBQztZQUNuQyxPQUFPLElBQUksQ0FBQyxDQUFDLDBCQUEwQjtRQUN6QyxDQUFDO1FBRUQsSUFBSSxDQUFDLGNBQWMsQ0FBQyxjQUFjLENBQUMsRUFBRSxDQUFDO1lBQ3BDLE9BQU8sSUFBSSxDQUFDLENBQUMsZ0NBQWdDO1FBQy9DLENBQUM7UUFFRCxPQUFPLEtBQUssQ0FBQyxDQUFDLDBEQUEwRDtJQUMxRSxDQUFDLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1yZXF1aXJlLWltcG9ydHNcbmltcG9ydCBwaWNvbWF0Y2ggPSByZXF1aXJlKCdwaWNvbWF0Y2gnKTtcblxuLyoqXG4gKiBPcHRpb25zIGZvciBjcmVhdGluZyBhIGdsb2IgbWF0Y2hlclxuICovXG5leHBvcnQgaW50ZXJmYWNlIEdsb2JNYXRjaGVyT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBQYXR0ZXJucyBmb3IgZmlsZXMgdG8gaW5jbHVkZSAoZ2xvYiBwYXR0ZXJucylcbiAgICogQGRlZmF1bHQgWycqKiddIC0gbWF0Y2ggYWxsIGZpbGVzXG4gICAqL1xuICBpbmNsdWRlPzogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIFBhdHRlcm5zIGZvciBmaWxlcyB0byBleGNsdWRlIChnbG9iIHBhdHRlcm5zKVxuICAgKi9cbiAgZXhjbHVkZT86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBUaGUgcm9vdCBkaXJlY3RvcnkgZm9yIG1hdGNoaW5nLiBJZiBwcm92aWRlZCwgYWJzb2x1dGUgcGF0aHMgd2lsbCBiZVxuICAgKiBjb252ZXJ0ZWQgdG8gcmVsYXRpdmUgcGF0aHMgYmVmb3JlIG1hdGNoaW5nIGFnYWluc3QgcGF0dGVybnMuXG4gICAqIFRoaXMgaXMgbmVjZXNzYXJ5IGJlY2F1c2UgY2hva2lkYXIgdjQgcGFzc2VzIGFic29sdXRlIHBhdGhzIHRvIHRoZVxuICAgKiBpZ25vcmVkIGNhbGxiYWNrIGV2ZW4gd2hlbiBhIGN3ZCBpcyBzcGVjaWZpZWQuXG4gICAqL1xuICByb290RGlyPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIE5vcm1hbGl6ZXMgYSBwYXR0ZXJuIHRvIGVuc3VyZSBpdCBtYXRjaGVzIGZpbGVzIHdpdGhpbiBkaXJlY3Rvcmllcy5cbiAqIElmIGEgcGF0dGVybiBkb2Vzbid0IGNvbnRhaW4gZ2xvYiBjaGFyYWN0ZXJzLCBpdCdzIHRyZWF0ZWQgYXMgYSBkaXJlY3RvcnlcbiAqIGFuZCBgLyoqYCBpcyBhcHBlbmRlZCB0byBtYXRjaCBhbGwgZmlsZXMgd2l0aGluIGl0LlxuICpcbiAqIEBwYXJhbSBwYXR0ZXJuIC0gVGhlIHBhdHRlcm4gdG8gbm9ybWFsaXplXG4gKiBAcmV0dXJucyBUaGUgbm9ybWFsaXplZCBwYXR0ZXJuXG4gKi9cbmZ1bmN0aW9uIG5vcm1hbGl6ZVBhdHRlcm4ocGF0dGVybjogc3RyaW5nKTogc3RyaW5nIHtcbiAgLy8gSWYgcGF0dGVybiBhbHJlYWR5IGNvbnRhaW5zIGdsb2IgY2hhcmFjdGVycywgdXNlIGFzLWlzXG4gIGlmIChwYXR0ZXJuLmluY2x1ZGVzKCcqJykgfHwgcGF0dGVybi5pbmNsdWRlcygnPycpIHx8IHBhdHRlcm4uaW5jbHVkZXMoJ1snKSkge1xuICAgIHJldHVybiBwYXR0ZXJuO1xuICB9XG4gIC8vIE90aGVyd2lzZSwgdHJlYXQgYXMgYSBkaXJlY3RvcnkgYW5kIG1hdGNoIGFsbCBmaWxlcyB3aXRoaW5cbiAgLy8gUmVtb3ZlIHRyYWlsaW5nIHNsYXNoIGlmIHByZXNlbnQsIHRoZW4gYXBwZW5kIC8qKlxuICBjb25zdCBub3JtYWxpemVkID0gcGF0dGVybi5yZXBsYWNlKC9cXC8rJC8sICcnKTtcbiAgcmV0dXJuIGAke25vcm1hbGl6ZWR9LyoqYDtcbn1cblxuLyoqXG4gKiBDcmVhdGVzIGEgZnVuY3Rpb24gdGhhdCByZXR1cm5zIHRydWUgaWYgYSBmaWxlIHNob3VsZCBiZSBpZ25vcmVkLlxuICogQSBmaWxlIGlzIGlnbm9yZWQgaWY6XG4gKiAtIEl0IG1hdGNoZXMgYW55IGV4Y2x1ZGUgcGF0dGVybiwgT1JcbiAqIC0gSXQgZG9lcyBOT1QgbWF0Y2ggYW55IGluY2x1ZGUgcGF0dGVyblxuICpcbiAqIFRoaXMgcmVwbGljYXRlcyB0aGUgYmVoYXZpb3Igb2YgY2hva2lkYXIgdjMncyBnbG9iIHBhdHRlcm4gc3VwcG9ydC5cbiAqXG4gKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBpbmNsdWRlIGFuZCBleGNsdWRlIHBhdHRlcm5zXG4gKiBAcmV0dXJucyBBIGZ1bmN0aW9uIHRoYXQgdGFrZXMgYSBmaWxlIHBhdGggYW5kIHJldHVybnMgdHJ1ZSBpZiBpdCBzaG91bGQgYmUgaWdub3JlZFxuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlSWdub3JlTWF0Y2hlcihvcHRpb25zOiBHbG9iTWF0Y2hlck9wdGlvbnMpOiAoZmlsZVBhdGg6IHN0cmluZykgPT4gYm9vbGVhbiB7XG4gIGNvbnN0IGluY2x1ZGVQYXR0ZXJucyA9IG9wdGlvbnMuaW5jbHVkZSAmJiBvcHRpb25zLmluY2x1ZGUubGVuZ3RoID4gMFxuICAgID8gb3B0aW9ucy5pbmNsdWRlLm1hcChub3JtYWxpemVQYXR0ZXJuKVxuICAgIDogWycqKiddO1xuICBjb25zdCBleGNsdWRlUGF0dGVybnMgPSAob3B0aW9ucy5leGNsdWRlID8/IFtdKS5tYXAobm9ybWFsaXplUGF0dGVybik7XG4gIGNvbnN0IHJvb3REaXIgPSBvcHRpb25zLnJvb3REaXIgPyBvcHRpb25zLnJvb3REaXIucmVwbGFjZSgvXFxcXC9nLCAnLycpLnJlcGxhY2UoL1xcLyskLywgJycpIDogdW5kZWZpbmVkO1xuXG4gIC8vIENvbXBpbGUgcGF0dGVybnMgaW50byBtYXRjaGVycyBmb3IgYmV0dGVyIHBlcmZvcm1hbmNlXG4gIGNvbnN0IHBpY29tYXRjaE9wdGlvbnM6IHBpY29tYXRjaC5QaWNvbWF0Y2hPcHRpb25zID0ge1xuICAgIGRvdDogdHJ1ZSwgLy8gTWF0Y2ggZG90ZmlsZXMgd2hlbiBwYXR0ZXJuIGV4cGxpY2l0bHkgaW5jbHVkZXMgdGhlbVxuICB9O1xuXG4gIGNvbnN0IGluY2x1ZGVNYXRjaGVyID0gcGljb21hdGNoKGluY2x1ZGVQYXR0ZXJucywgcGljb21hdGNoT3B0aW9ucyk7XG4gIGNvbnN0IGV4Y2x1ZGVNYXRjaGVyID0gZXhjbHVkZVBhdHRlcm5zLmxlbmd0aCA+IDBcbiAgICA/IHBpY29tYXRjaChleGNsdWRlUGF0dGVybnMsIHBpY29tYXRjaE9wdGlvbnMpXG4gICAgOiAoKSA9PiBmYWxzZTtcblxuICByZXR1cm4gKGZpbGVQYXRoOiBzdHJpbmcpOiBib29sZWFuID0+IHtcbiAgICAvLyBOb3JtYWxpemUgcGF0aCBzZXBhcmF0b3JzIGZvciBjcm9zcy1wbGF0Zm9ybSBjb21wYXRpYmlsaXR5XG4gICAgbGV0IG5vcm1hbGl6ZWRQYXRoID0gZmlsZVBhdGgucmVwbGFjZSgvXFxcXC9nLCAnLycpO1xuXG4gICAgLy8gSWYgcm9vdERpciBpcyBwcm92aWRlZCBhbmQgdGhlIHBhdGggYXBwZWFycyB0byBiZSBhYnNvbHV0ZSwgbWFrZSBpdCByZWxhdGl2ZVxuICAgIC8vIFRoaXMgaXMgbmVjZXNzYXJ5IGJlY2F1c2UgY2hva2lkYXIgdjQgcGFzc2VzIGFic29sdXRlIHBhdGhzIHRvIHRoZVxuICAgIC8vIGlnbm9yZWQgY2FsbGJhY2sgZXZlbiB3aGVuIGEgY3dkIGlzIHNwZWNpZmllZFxuICAgIGlmIChyb290RGlyKSB7XG4gICAgICBpZiAobm9ybWFsaXplZFBhdGguc3RhcnRzV2l0aChyb290RGlyICsgJy8nKSkge1xuICAgICAgICBub3JtYWxpemVkUGF0aCA9IG5vcm1hbGl6ZWRQYXRoLnNsaWNlKHJvb3REaXIubGVuZ3RoICsgMSk7XG4gICAgICB9IGVsc2UgaWYgKG5vcm1hbGl6ZWRQYXRoID09PSByb290RGlyKSB7XG4gICAgICAgIC8vIFRoZSByb290IGRpcmVjdG9yeSBpdHNlbGYgLSBkb24ndCBpZ25vcmUgaXRcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIEEgZmlsZSBpcyBpZ25vcmVkIGlmOlxuICAgIC8vIDEuIEl0IG1hdGNoZXMgYW55IGV4Y2x1ZGUgcGF0dGVybiwgT1JcbiAgICAvLyAyLiBJdCBkb2VzIE5PVCBtYXRjaCBhbnkgaW5jbHVkZSBwYXR0ZXJuXG4gICAgaWYgKGV4Y2x1ZGVNYXRjaGVyKG5vcm1hbGl6ZWRQYXRoKSkge1xuICAgICAgcmV0dXJuIHRydWU7IC8vIElnbm9yZTogbWF0Y2hlcyBleGNsdWRlXG4gICAgfVxuXG4gICAgaWYgKCFpbmNsdWRlTWF0Y2hlcihub3JtYWxpemVkUGF0aCkpIHtcbiAgICAgIHJldHVybiB0cnVlOyAvLyBJZ25vcmU6IGRvZXNuJ3QgbWF0Y2ggaW5jbHVkZVxuICAgIH1cblxuICAgIHJldHVybiBmYWxzZTsgLy8gRG9uJ3QgaWdub3JlOiBtYXRjaGVzIGluY2x1ZGUgYW5kIGRvZXNuJ3QgbWF0Y2ggZXhjbHVkZVxuICB9O1xufVxuIl19
125
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2xvYi1tYXRjaGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiZ2xvYi1tYXRjaGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBZ0dBLGtEQTJEQztBQTFKRCxpRUFBaUU7QUFDakUsdUNBQXdDO0FBMEJ4Qzs7Ozs7OztHQU9HO0FBQ0gsU0FBUyxnQkFBZ0IsQ0FBQyxPQUFlO0lBQ3ZDLHlEQUF5RDtJQUN6RCxJQUFJLE9BQU8sQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLElBQUksT0FBTyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsSUFBSSxPQUFPLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7UUFDNUUsT0FBTyxPQUFPLENBQUM7SUFDakIsQ0FBQztJQUNELDZEQUE2RDtJQUM3RCxvREFBb0Q7SUFDcEQsTUFBTSxVQUFVLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDL0MsT0FBTyxHQUFHLFVBQVUsS0FBSyxDQUFDO0FBQzVCLENBQUM7QUFFRDs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FpQkc7QUFDSCxTQUFTLG9CQUFvQixDQUFDLE9BQWU7SUFDM0MsTUFBTSxRQUFRLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNwQyxNQUFNLFFBQVEsR0FBYSxFQUFFLENBQUM7SUFDOUIsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxJQUFJLFFBQVEsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztRQUMxQyxRQUFRLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQ2hELENBQUM7SUFDRCxPQUFPLFFBQVEsQ0FBQztBQUNsQixDQUFDO0FBRUQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXFCRztBQUNILFNB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LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1yZXF1aXJlLWltcG9ydHNcbmltcG9ydCBwaWNvbWF0Y2ggPSByZXF1aXJlKCdwaWNvbWF0Y2gnKTtcblxuLyoqXG4gKiBPcHRpb25zIGZvciBjcmVhdGluZyBhIGdsb2IgbWF0Y2hlclxuICovXG5leHBvcnQgaW50ZXJmYWNlIEdsb2JNYXRjaGVyT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBQYXR0ZXJucyBmb3IgZmlsZXMgdG8gaW5jbHVkZSAoZ2xvYiBwYXR0ZXJucylcbiAgICogQGRlZmF1bHQgWycqKiddIC0gbWF0Y2ggYWxsIGZpbGVzXG4gICAqL1xuICBpbmNsdWRlPzogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIFBhdHRlcm5zIGZvciBmaWxlcyB0byBleGNsdWRlIChnbG9iIHBhdHRlcm5zKVxuICAgKi9cbiAgZXhjbHVkZT86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBUaGUgcm9vdCBkaXJlY3RvcnkgZm9yIG1hdGNoaW5nLiBJZiBwcm92aWRlZCwgYWJzb2x1dGUgcGF0aHMgd2lsbCBiZVxuICAgKiBjb252ZXJ0ZWQgdG8gcmVsYXRpdmUgcGF0aHMgYmVmb3JlIG1hdGNoaW5nIGFnYWluc3QgcGF0dGVybnMuXG4gICAqIFRoaXMgaXMgbmVjZXNzYXJ5IGJlY2F1c2UgY2hva2lkYXIgdjQgcGFzc2VzIGFic29sdXRlIHBhdGhzIHRvIHRoZVxuICAgKiBpZ25vcmVkIGNhbGxiYWNrIGV2ZW4gd2hlbiBhIGN3ZCBpcyBzcGVjaWZpZWQuXG4gICAqL1xuICByb290RGlyPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIE5vcm1hbGl6ZXMgYSBwYXR0ZXJuIHRvIGVuc3VyZSBpdCBtYXRjaGVzIGZpbGVzIHdpdGhpbiBkaXJlY3Rvcmllcy5cbiAqIElmIGEgcGF0dGVybiBkb2Vzbid0IGNvbnRhaW4gZ2xvYiBjaGFyYWN0ZXJzLCBpdCdzIHRyZWF0ZWQgYXMgYSBkaXJlY3RvcnlcbiAqIGFuZCBgLyoqYCBpcyBhcHBlbmRlZCB0byBtYXRjaCBhbGwgZmlsZXMgd2l0aGluIGl0LlxuICpcbiAqIEBwYXJhbSBwYXR0ZXJuIC0gVGhlIHBhdHRlcm4gdG8gbm9ybWFsaXplXG4gKiBAcmV0dXJucyBUaGUgbm9ybWFsaXplZCBwYXR0ZXJuXG4gKi9cbmZ1bmN0aW9uIG5vcm1hbGl6ZVBhdHRlcm4ocGF0dGVybjogc3RyaW5nKTogc3RyaW5nIHtcbiAgLy8gSWYgcGF0dGVybiBhbHJlYWR5IGNvbnRhaW5zIGdsb2IgY2hhcmFjdGVycywgdXNlIGFzLWlzXG4gIGlmIChwYXR0ZXJuLmluY2x1ZGVzKCcqJykgfHwgcGF0dGVybi5pbmNsdWRlcygnPycpIHx8IHBhdHRlcm4uaW5jbHVkZXMoJ1snKSkge1xuICAgIHJldHVybiBwYXR0ZXJuO1xuICB9XG4gIC8vIE90aGVyd2lzZSwgdHJlYXQgYXMgYSBkaXJlY3RvcnkgYW5kIG1hdGNoIGFsbCBmaWxlcyB3aXRoaW5cbiAgLy8gUmVtb3ZlIHRyYWlsaW5nIHNsYXNoIGlmIHByZXNlbnQsIHRoZW4gYXBwZW5kIC8qKlxuICBjb25zdCBub3JtYWxpemVkID0gcGF0dGVybi5yZXBsYWNlKC9cXC8rJC8sICcnKTtcbiAgcmV0dXJuIGAke25vcm1hbGl6ZWR9LyoqYDtcbn1cblxuLyoqXG4gKiBCdWlsZHMgdGhlIGxpc3Qgb2YgZGlyZWN0b3J5LXByZWZpeCBnbG9icyBmb3IgYW4gaW5jbHVkZSBwYXR0ZXJuLlxuICpcbiAqIEEgcGF0dGVybiBsaWtlIGBzcmMvKipcXC8qLnRzYCBvbmx5IG1hdGNoZXMgZmlsZXMgKGUuZy4gYHNyYy9hLnRzYCksIG5ldmVyIHRoZVxuICogZGlyZWN0b3JpZXMgdGhhdCBjb250YWluIHRoZW0gKGBzcmNgLCBgc3JjL3N1YmApLiBCdXQgY2hva2lkYXIgdjQgdXNlcyB0aGVcbiAqIGBpZ25vcmVkYCBjYWxsYmFjayB0byBkZWNpZGUgd2hldGhlciB0byAqZGVzY2VuZCogaW50byBhIGRpcmVjdG9yeTogaWYgYVxuICogZGlyZWN0b3J5IGlzIGlnbm9yZWQsIGl0cyBlbnRpcmUgc3VidHJlZSBpcyBwcnVuZWQgYW5kIG5vIG5lc3RlZCBmaWxlIGlzIGV2ZXJcbiAqIGRpc2NvdmVyZWQuIFdlIG11c3QgdGhlcmVmb3JlIGFsbG93IHRyYXZlcnNhbCBvZiBhbnkgZGlyZWN0b3J5IHRoYXQgY291bGQgYmVcbiAqIGFuIGFuY2VzdG9yIG9mIGEgbWF0Y2hpbmcgZmlsZS5cbiAqXG4gKiBXZSBkZXJpdmUgdGhvc2UgYW5jZXN0b3JzIGZyb20gdGhlIHByb2dyZXNzaXZlIGAvYC1kZWxpbWl0ZWQgcHJlZml4ZXMgb2YgdGhlXG4gKiBwYXR0ZXJuOiBgc3JjLyoqXFwvKi50c2AgeWllbGRzIGBzcmNgLCBgc3JjLyoqYCwgYHNyYy8qKlxcLyoudHNgLiBNYXRjaGluZyBhXG4gKiBkaXJlY3RvcnkgcGF0aCBhZ2FpbnN0IHRoaXMgc2V0IGFuc3dlcnMgXCJjb3VsZCBhIG1hdGNoaW5nIGZpbGUgbGl2ZSB1bmRlclxuICogaGVyZT9cIiB3aXRob3V0IHRvdWNoaW5nIHRoZSBmaWxlc3lzdGVtLlxuICpcbiAqIEBwYXJhbSBwYXR0ZXJuIC0gQSBub3JtYWxpemVkIGluY2x1ZGUgcGF0dGVyblxuICogQHJldHVybnMgVGhlIHByb2dyZXNzaXZlIHByZWZpeCBnbG9icyBvZiB0aGUgcGF0dGVyblxuICovXG5mdW5jdGlvbiBkaXJlY3RvcnlQcmVmaXhHbG9icyhwYXR0ZXJuOiBzdHJpbmcpOiBzdHJpbmdbXSB7XG4gIGNvbnN0IHNlZ21lbnRzID0gcGF0dGVybi5zcGxpdCgnLycpO1xuICBjb25zdCBwcmVmaXhlczogc3RyaW5nW10gPSBbXTtcbiAgZm9yIChsZXQgaSA9IDE7IGkgPD0gc2VnbWVudHMubGVuZ3RoOyBpKyspIHtcbiAgICBwcmVmaXhlcy5wdXNoKHNlZ21lbnRzLnNsaWNlKDAsIGkpLmpvaW4oJy8nKSk7XG4gIH1cbiAgcmV0dXJuIHByZWZpeGVzO1xufVxuXG4vKipcbiAqIENyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0IHJldHVybnMgdHJ1ZSBpZiBhIHBhdGggc2hvdWxkIGJlIGlnbm9yZWQgYnkgY2hva2lkYXIuXG4gKlxuICogVGhlIGZ1bmN0aW9uIGlzIHVzZWQgYXMgY2hva2lkYXIgdjQncyBgaWdub3JlZGAgY2FsbGJhY2ssIHdoaWNoIGlzIGNvbnN1bHRlZFxuICogYm90aCBmb3IgZmlsZXMgKHRvIGRlY2lkZSB3aGV0aGVyIHRvIHdhdGNoIHRoZW0pIGFuZCBmb3IgZGlyZWN0b3JpZXMgKHRvXG4gKiBkZWNpZGUgd2hldGhlciB0byBkZXNjZW5kIGludG8gdGhlbSkuIENob2tpZGFyIHY0IHJlbW92ZWQgbmF0aXZlIGdsb2Igc3VwcG9ydCxcbiAqIHNvIHRoaXMgcmVwbGljYXRlcyBjaG9raWRhciB2MydzIGJlaGF2aW9yIHVzaW5nIHBpY29tYXRjaC5cbiAqXG4gKiBUaGUgcGF0aCBpcyBjbGFzc2lmaWVkIHVzaW5nIHRoZSBgU3RhdHNgIGNob2tpZGFyIHByb3ZpZGVzICh3aGVuIGF2YWlsYWJsZSk6XG4gKiAtIEV4Y2x1ZGUgcGF0dGVybnMgYWx3YXlzIHRha2UgcHJlY2VkZW5jZSBhbmQgcHJ1bmUgYm90aCBmaWxlcyBhbmQgZGlyZWN0b3JpZXMuXG4gKiAtIEEgKipkaXJlY3RvcnkqKiBpcyBvbmx5IHBydW5lZCBieSBleGNsdWRlcy4gSXQgaXMgbmV2ZXIgaWdub3JlZCBtZXJlbHkgZm9yXG4gKiAgIGZhaWxpbmcgdGhlIGluY2x1ZGUgZmlsdGVyLCBiZWNhdXNlIG5lc3RlZCBmaWxlcyBtYXkgc3RpbGwgbWF0Y2gg4oCUIHBydW5pbmdcbiAqICAgaXQgd291bGQgc2lsZW50bHkgZHJvcCB0aGUgZW50aXJlIHN1YnRyZWUgKHRoZSByb290IGNhdXNlIG9mIHRoZSBvcmlnaW5hbFxuICogICBidWcgd2hlcmUgYGluY2x1ZGU6IFsnc3JjLyoqXFwvKi50cyddYCBtYXRjaGVkIG5vdGhpbmcpLlxuICogLSBBICoqZmlsZSoqIG11c3QgbWF0Y2ggYW4gaW5jbHVkZSBwYXR0ZXJuIHRvIGJlIHdhdGNoZWQuXG4gKiAtIFdoZW4gYFN0YXRzYCBpcyBhYnNlbnQgKGNob2tpZGFyIGludm9rZXMgdGhlIGNhbGxiYWNrIGJvdGggd2l0aCBhbmQgd2l0aG91dFxuICogICBzdGF0cyBkdXJpbmcgdHJhdmVyc2FsKSwgdGhlIHBhdGggaXMga2VwdCBpZiBpdCBlaXRoZXIgbWF0Y2hlcyBhIGZpbGVcbiAqICAgaW5jbHVkZSBwYXR0ZXJuIG9yIGlzIGEgcG90ZW50aWFsIGFuY2VzdG9yIGRpcmVjdG9yeSBvZiBvbmUuXG4gKlxuICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgaW5jbHVkZSBhbmQgZXhjbHVkZSBwYXR0ZXJuc1xuICogQHJldHVybnMgQSBmdW5jdGlvbiB0aGF0IHRha2VzIGEgcGF0aCAoYW5kIG9wdGlvbmFsIHN0YXRzKSBhbmQgcmV0dXJucyB0cnVlIGlmIGl0IHNob3VsZCBiZSBpZ25vcmVkXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVJZ25vcmVNYXRjaGVyKG9wdGlvbnM6IEdsb2JNYXRjaGVyT3B0aW9ucyk6IChmaWxlUGF0aDogc3RyaW5nLCBzdGF0cz86IFN0YXRzKSA9PiBib29sZWFuIHtcbiAgY29uc3QgaW5jbHVkZVBhdHRlcm5zID0gb3B0aW9ucy5pbmNsdWRlICYmIG9wdGlvbnMuaW5jbHVkZS5sZW5ndGggPiAwXG4gICAgPyBvcHRpb25zLmluY2x1ZGUubWFwKG5vcm1hbGl6ZVBhdHRlcm4pXG4gICAgOiBbJyoqJ107XG4gIGNvbnN0IGV4Y2x1ZGVQYXR0ZXJucyA9IChvcHRpb25zLmV4Y2x1ZGUgPz8gW10pLm1hcChub3JtYWxpemVQYXR0ZXJuKTtcbiAgY29uc3Qgcm9vdERpciA9IG9wdGlvbnMucm9vdERpciA/IG9wdGlvbnMucm9vdERpci5yZXBsYWNlKC9cXFxcL2csICcvJykucmVwbGFjZSgvXFwvKyQvLCAnJykgOiB1bmRlZmluZWQ7XG5cbiAgLy8gQ29tcGlsZSBwYXR0ZXJucyBpbnRvIG1hdGNoZXJzIGZvciBiZXR0ZXIgcGVyZm9ybWFuY2VcbiAgY29uc3QgcGljb21hdGNoT3B0aW9uczogcGljb21hdGNoLlBpY29tYXRjaE9wdGlvbnMgPSB7XG4gICAgZG90OiB0cnVlLCAvLyBNYXRjaCBkb3RmaWxlcyB3aGVuIHBhdHRlcm4gZXhwbGljaXRseSBpbmNsdWRlcyB0aGVtXG4gIH07XG5cbiAgY29uc3QgaW5jbHVkZU1hdGNoZXIgPSBwaWNvbWF0Y2goaW5jbHVkZVBhdHRlcm5zLCBwaWNvbWF0Y2hPcHRpb25zKTtcbiAgLy8gTWF0Y2hlcyBhIGRpcmVjdG9yeSB0aGF0IGNvdWxkIGJlIGFuIGFuY2VzdG9yIG9mIGFuIGluY2x1ZGVkIGZpbGUsIHNvIHdlXG4gIC8vIGRvbid0IHBydW5lIHN1YnRyZWVzIGJlZm9yZSBkaXNjb3ZlcmluZyB0aGUgZmlsZXMgd2UgYWN0dWFsbHkgd2FudC5cbiAgY29uc3QgZGlyZWN0b3J5TWF0Y2hlciA9IHBpY29tYXRjaChpbmNsdWRlUGF0dGVybnMuZmxhdE1hcChkaXJlY3RvcnlQcmVmaXhHbG9icyksIHBpY29tYXRjaE9wdGlvbnMpO1xuICBjb25zdCBleGNsdWRlTWF0Y2hlciA9IGV4Y2x1ZGVQYXR0ZXJucy5sZW5ndGggPiAwXG4gICAgPyBwaWNvbWF0Y2goZXhjbHVkZVBhdHRlcm5zLCBwaWNvbWF0Y2hPcHRpb25zKVxuICAgIDogKCkgPT4gZmFsc2U7XG5cbiAgcmV0dXJuIChmaWxlUGF0aDogc3RyaW5nLCBzdGF0cz86IFN0YXRzKTogYm9vbGVhbiA9PiB7XG4gICAgLy8gTm9ybWFsaXplIHBhdGggc2VwYXJhdG9ycyBmb3IgY3Jvc3MtcGxhdGZvcm0gY29tcGF0aWJpbGl0eVxuICAgIGxldCBub3JtYWxpemVkUGF0aCA9IGZpbGVQYXRoLnJlcGxhY2UoL1xcXFwvZywgJy8nKTtcblxuICAgIC8vIElmIHJvb3REaXIgaXMgcHJvdmlkZWQgYW5kIHRoZSBwYXRoIGFwcGVhcnMgdG8gYmUgYWJzb2x1dGUsIG1ha2UgaXQgcmVsYXRpdmVcbiAgICAvLyBUaGlzIGlzIG5lY2Vzc2FyeSBiZWNhdXNlIGNob2tpZGFyIHY0IHBhc3NlcyBhYnNvbHV0ZSBwYXRocyB0byB0aGVcbiAgICAvLyBpZ25vcmVkIGNhbGxiYWNrIGV2ZW4gd2hlbiBhIGN3ZCBpcyBzcGVjaWZpZWRcbiAgICBpZiAocm9vdERpcikge1xuICAgICAgaWYgKG5vcm1hbGl6ZWRQYXRoLnN0YXJ0c1dpdGgocm9vdERpciArICcvJykpIHtcbiAgICAgICAgbm9ybWFsaXplZFBhdGggPSBub3JtYWxpemVkUGF0aC5zbGljZShyb290RGlyLmxlbmd0aCArIDEpO1xuICAgICAgfSBlbHNlIGlmIChub3JtYWxpemVkUGF0aCA9PT0gcm9vdERpcikge1xuICAgICAgICAvLyBUaGUgcm9vdCBkaXJlY3RvcnkgaXRzZWxmIC0gZG9uJ3QgaWdub3JlIGl0XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBFeGNsdWRlcyBhbHdheXMgdGFrZSBwcmVjZWRlbmNlLCBmb3IgYm90aCBmaWxlcyBhbmQgZGlyZWN0b3JpZXMuXG4gICAgaWYgKGV4Y2x1ZGVNYXRjaGVyKG5vcm1hbGl6ZWRQYXRoKSkge1xuICAgICAgcmV0dXJuIHRydWU7IC8vIElnbm9yZTogbWF0Y2hlcyBleGNsdWRlXG4gICAgfVxuXG4gICAgLy8gQSBkaXJlY3RvcnkgaXMga2VwdCBpZiBpdCBjb3VsZCBiZSBhbiBhbmNlc3RvciBvZiBhbiBpbmNsdWRlZCBmaWxlLCBzbyB3ZVxuICAgIC8vIGRlc2NlbmQgaW50byBpdCBhbmQgZGlzY292ZXIgdGhlIG5lc3RlZCBmaWxlcyB3ZSBhY3R1YWxseSB3YW50LiBJdCBpc1xuICAgIC8vIG5ldmVyIHBydW5lZCBtZXJlbHkgZm9yIGZhaWxpbmcgdGhlIGZpbGUtbGV2ZWwgaW5jbHVkZSBmaWx0ZXIgKGl0IGNhbid0XG4gICAgLy8gbWF0Y2ggYSBwYXR0ZXJuIGxpa2UgJ3NyYy8qKlxcLyoudHMnKSwgd2hpY2ggd291bGQgZHJvcCB0aGUgZW50aXJlIHN1YnRyZWUuXG4gICAgaWYgKHN0YXRzPy5pc0RpcmVjdG9yeSgpKSB7XG4gICAgICByZXR1cm4gIWRpcmVjdG9yeU1hdGNoZXIobm9ybWFsaXplZFBhdGgpO1xuICAgIH1cblxuICAgIC8vIEZpbGVzIG11c3QgbWF0Y2ggYW4gaW5jbHVkZSBwYXR0ZXJuLlxuICAgIGlmIChzdGF0cz8uaXNGaWxlKCkpIHtcbiAgICAgIHJldHVybiAhaW5jbHVkZU1hdGNoZXIobm9ybWFsaXplZFBhdGgpO1xuICAgIH1cblxuICAgIC8vIE5vIHN0YXRzIGF2YWlsYWJsZTogY2hva2lkYXIgY29uc3VsdHMgdGhlIGNhbGxiYWNrIGJvdGggd2l0aCBhbmQgd2l0aG91dFxuICAgIC8vIHN0YXRzIGR1cmluZyB0cmF2ZXJzYWwuIEtlZXAgdGhlIHBhdGggaWYgaXQgbWF0Y2hlcyBhIGZpbGUgaW5jbHVkZVxuICAgIC8vIHBhdHRlcm4sIG9yIGlmIGl0IGNvdWxkIGJlIGFuIGFuY2VzdG9yIGRpcmVjdG9yeSBvZiBhbiBpbmNsdWRlZCBmaWxlLlxuICAgIHJldHVybiAhKGluY2x1ZGVNYXRjaGVyKG5vcm1hbGl6ZWRQYXRoKSB8fCBkaXJlY3RvcnlNYXRjaGVyKG5vcm1hbGl6ZWRQYXRoKSk7XG4gIH07XG59XG4iXX0=
package/package.json CHANGED
@@ -85,8 +85,8 @@
85
85
  },
86
86
  "dependencies": {
87
87
  "@aws-cdk/cdk-assets-lib": "^1",
88
- "@aws-cdk/cloud-assembly-api": "2.2.5",
89
- "@aws-cdk/cloud-assembly-schema": ">=54.4.0",
88
+ "@aws-cdk/cloud-assembly-api": "2.2.6",
89
+ "@aws-cdk/cloud-assembly-schema": ">=54.5.0",
90
90
  "@aws-cdk/cloudformation-diff": "^2",
91
91
  "@aws-cdk/cx-api": "^2",
92
92
  "@aws-sdk/client-appsync": "^3",
@@ -116,7 +116,6 @@
116
116
  "@smithy/shared-ini-file-loader": "^4",
117
117
  "@smithy/util-retry": "^4",
118
118
  "@smithy/util-waiter": "^4",
119
- "archiver": "^7.0.1",
120
119
  "cdk-from-cfn": "^0.304.0",
121
120
  "chalk": "^4",
122
121
  "chokidar": "^4",
@@ -128,7 +127,8 @@
128
127
  "semver": "^7.8.4",
129
128
  "split2": "^4.2.0",
130
129
  "wrap-ansi": "^7",
131
- "yaml": "^1"
130
+ "yaml": "^1",
131
+ "yazl": "^3.3.1"
132
132
  },
133
133
  "keywords": [
134
134
  "aws",
@@ -150,7 +150,7 @@
150
150
  "publishConfig": {
151
151
  "access": "public"
152
152
  },
153
- "version": "1.29.1",
153
+ "version": "1.30.0",
154
154
  "packageManager": "yarn@4.13.0",
155
155
  "types": "lib/index.d.ts",
156
156
  "exports": {
@@ -1,13 +0,0 @@
1
- import { TreeText } from './tree';
2
- export declare class TreeBuilder {
3
- private readonly rootText;
4
- private readonly root;
5
- constructor(rootText: string);
6
- nodeText(constructPath: string): TreeText;
7
- render(): string;
8
- toString(): string;
9
- private obtainNode;
10
- }
11
- export declare function sideBySide(left: string[], sep: string, right: string[]): string[];
12
- export declare function wrapText(n: number, text: string): string[];
13
- //# sourceMappingURL=tree-builder.d.ts.map
@@ -1,86 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.TreeBuilder = void 0;
4
- exports.sideBySide = sideBySide;
5
- exports.wrapText = wrapText;
6
- const tree_1 = require("./tree");
7
- class TreeBuilder {
8
- rootText;
9
- root;
10
- constructor(rootText) {
11
- this.rootText = rootText;
12
- this.root = {
13
- tree: new tree_1.Tree(new tree_1.TreeText([rootText])),
14
- children: {},
15
- };
16
- }
17
- nodeText(constructPath) {
18
- return this.obtainNode(constructPath).text;
19
- }
20
- render() {
21
- const out = this.root.tree.render();
22
- if (this.rootText) {
23
- return out;
24
- }
25
- // RootText is empty, hide the entire node (slice off the initial newline)
26
- return out.slice(1);
27
- }
28
- toString() {
29
- return this.render();
30
- }
31
- obtainNode(constructPath) {
32
- const parts = constructPath.split('/');
33
- let cur = this.root;
34
- while (true) {
35
- const next = parts.shift();
36
- if (next === undefined) {
37
- return cur.tree;
38
- }
39
- const child = cur.children[next];
40
- if (child) {
41
- cur = child;
42
- }
43
- else {
44
- const tree = new tree_1.Tree(new tree_1.TreeText([next]));
45
- cur.tree.addChild(tree);
46
- cur = cur.children[next] = {
47
- tree,
48
- children: {},
49
- };
50
- }
51
- }
52
- }
53
- }
54
- exports.TreeBuilder = TreeBuilder;
55
- function sideBySide(left, sep, right) {
56
- const width = left.map(x => x.length).reduce((acc, n) => Math.max(acc, n), 0);
57
- const ret = [];
58
- for (let i = 0; i < left.length || i < right.length; i++) {
59
- const l = i < left.length ? left[i] : ' '.repeat(width);
60
- const r = i < right.length ? right[i] : '';
61
- ret.push(`${l}${sep}${r}`);
62
- }
63
- return ret;
64
- }
65
- function wrapText(n, text) {
66
- const breakers = [' ', '\n'];
67
- const ret = [];
68
- let lineStart = 0;
69
- while (lineStart < text.length) {
70
- let lineEnd = lineStart + n;
71
- while (lineEnd > lineStart && lineEnd < text.length && !breakers.includes(text[lineEnd])) {
72
- lineEnd -= 1;
73
- }
74
- if (lineEnd === lineStart) {
75
- // Could not find a space in this line. Seek forward to the first space to get the smallest line overflow
76
- lineEnd = lineStart + n;
77
- while (lineEnd < text.length && !breakers.includes(text[lineEnd])) {
78
- lineEnd += 1;
79
- }
80
- }
81
- ret.push(text.slice(lineStart, lineEnd));
82
- lineStart = lineEnd + 1;
83
- }
84
- return ret;
85
- }
86
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZS1idWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsidHJlZS1idWlsZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQTBEQSxnQ0FVQztBQUVELDRCQXNCQztBQTVGRCxpQ0FBd0M7QUFFeEMsTUFBYSxXQUFXO0lBR087SUFGWixJQUFJLENBQWtCO0lBRXZDLFlBQTZCLFFBQWdCO1FBQWhCLGFBQVEsR0FBUixRQUFRLENBQVE7UUFDM0MsSUFBSSxDQUFDLElBQUksR0FBRztZQUNWLElBQUksRUFBRSxJQUFJLFdBQUksQ0FBQyxJQUFJLGVBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7WUFDeEMsUUFBUSxFQUFFLEVBQUU7U0FDYixDQUFDO0lBQ0osQ0FBQztJQUVNLFFBQVEsQ0FBQyxhQUFxQjtRQUNuQyxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQzdDLENBQUM7SUFFTSxNQUFNO1FBQ1gsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDcEMsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDbEIsT0FBTyxHQUFHLENBQUM7UUFDYixDQUFDO1FBQ0QsMEVBQTBFO1FBQzFFLE9BQU8sR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN0QixDQUFDO0lBRU0sUUFBUTtRQUNiLE9BQU8sSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBQ3ZCLENBQUM7SUFFTyxVQUFVLENBQUMsYUFBcUI7UUFDdEMsTUFBTSxLQUFLLEdBQUcsYUFBYSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN2QyxJQUFJLEdBQUcsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDO1FBQ3BCLE9BQU8sSUFBSSxFQUFFLENBQUM7WUFDWixNQUFNLElBQUksR0FBRyxLQUFLLENBQUMsS0FBSyxF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QUFDO2dCQUNsRSxPQUFPLElBQUksQ0FBQyxDQUFDO1lBQ2YsQ0FBQztRQUNILENBQUM7UUFFRCxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUM7UUFDekMsU0FBUyxHQUFHLE9BQU8sR0FBRyxDQUFDLENBQUM7SUFDMUIsQ0FBQztJQUNELE9BQU8sR0FBRyxDQUFDO0FBQ2IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFRyZWUsIFRyZWVUZXh0IH0gZnJvbSAnLi90cmVlJztcblxuZXhwb3J0IGNsYXNzIFRyZWVCdWlsZGVyIHtcbiAgcHJpdmF0ZSByZWFkb25seSByb290OiBUcmVlQnVpbGRlck5vZGU7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSByb290VGV4dDogc3RyaW5nKSB7XG4gICAgdGhpcy5yb290ID0ge1xuICAgICAgdHJlZTogbmV3IFRyZWUobmV3IFRyZWVUZXh0KFtyb290VGV4dF0pKSxcbiAgICAgIGNoaWxkcmVuOiB7fSxcbiAgICB9O1xuICB9XG5cbiAgcHVibGljIG5vZGVUZXh0KGNvbnN0cnVjdFBhdGg6IHN0cmluZyk6IFRyZWVUZXh0IHtcbiAgICByZXR1cm4gdGhpcy5vYnRhaW5Ob2RlKGNvbnN0cnVjdFBhdGgpLnRleHQ7XG4gIH1cblxuICBwdWJsaWMgcmVuZGVyKCkge1xuICAgIGNvbnN0IG91dCA9IHRoaXMucm9vdC50cmVlLnJlbmRlcigpO1xuICAgIGlmICh0aGlzLnJvb3RUZXh0KSB7XG4gICAgICByZXR1cm4gb3V0O1xuICAgIH1cbiAgICAvLyBSb290VGV4dCBpcyBlbXB0eSwgaGlkZSB0aGUgZW50aXJlIG5vZGUgKHNsaWNlIG9mZiB0aGUgaW5pdGlhbCBuZXdsaW5lKVxuICAgIHJldHVybiBvdXQuc2xpY2UoMSk7XG4gIH1cblxuICBwdWJsaWMgdG9TdHJpbmcoKSB7XG4gICAgcmV0dXJuIHRoaXMucmVuZGVyKCk7XG4gIH1cblxuICBwcml2YXRlIG9idGFpbk5vZGUoY29uc3RydWN0UGF0aDogc3RyaW5nKTogVHJlZSB7XG4gICAgY29uc3QgcGFydHMgPSBjb25zdHJ1Y3RQYXRoLnNwbGl0KCcvJyk7XG4gICAgbGV0IGN1ciA9IHRoaXMucm9vdDtcbiAgICB3aGlsZSAodHJ1ZSkge1xuICAgICAgY29uc3QgbmV4dCA9IHBhcnRzLnNoaWZ0KCk7XG4gICAgICBpZiAobmV4dCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHJldHVybiBjdXIudHJlZTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgY2hpbGQgPSBjdXIuY2hpbGRyZW5bbmV4dF07XG4gICAgICBpZiAoY2hpbGQpIHtcbiAgICAgICAgY3VyID0gY2hpbGQ7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCB0cmVlID0gbmV3IFRyZWUobmV3IFRyZWVUZXh0KFtuZXh0XSkpO1xuICAgICAgICBjdXIudHJlZS5hZGRDaGlsZCh0cmVlKTtcbiAgICAgICAgY3VyID0gY3VyLmNoaWxkcmVuW25leHRdID0ge1xuICAgICAgICAgIHRyZWUsXG4gICAgICAgICAgY2hpbGRyZW46IHt9LFxuICAgICAgICB9O1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5pbnRlcmZhY2UgVHJlZUJ1aWxkZXJOb2RlIHtcbiAgdHJlZTogVHJlZTtcbiAgY2hpbGRyZW46IFJlY29yZDxzdHJpbmcsIFRyZWVCdWlsZGVyTm9kZT47XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzaWRlQnlTaWRlKGxlZnQ6IHN0cmluZ1tdLCBzZXA6IHN0cmluZywgcmlnaHQ6IHN0cmluZ1tdKSB7XG4gIGNvbnN0IHdpZHRoID0gbGVmdC5tYXAoeCA9PiB4Lmxlbmd0aCkucmVkdWNlKChhY2MsIG4pID0+IE1hdGgubWF4KGFjYywgbiksIDApO1xuXG4gIGNvbnN0IHJldDogc3RyaW5nW10gPSBbXTtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBsZWZ0Lmxlbmd0aCB8fCBpIDwgcmlnaHQubGVuZ3RoOyBpKyspIHtcbiAgICBjb25zdCBsID0gaSA8IGxlZnQubGVuZ3RoID8gbGVmdFtpXSA6ICcgJy5yZXBlYXQod2lkdGgpO1xuICAgIGNvbnN0IHIgPSBpIDwgcmlnaHQubGVuZ3RoID8gcmlnaHRbaV0gOiAnJztcbiAgICByZXQucHVzaChgJHtsfSR7c2VwfSR7cn1gKTtcbiAgfVxuICByZXR1cm4gcmV0O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gd3JhcFRleHQobjogbnVtYmVyLCB0ZXh0OiBzdHJpbmcpOiBzdHJpbmdbXSB7XG4gIGNvbnN0IGJyZWFrZXJzID0gWycgJywgJ1xcbiddO1xuXG4gIGNvbnN0IHJldDogc3RyaW5nW10gPSBbXTtcbiAgbGV0IGxpbmVTdGFydCA9IDA7XG4gIHdoaWxlIChsaW5lU3RhcnQgPCB0ZXh0Lmxlbmd0aCkge1xuICAgIGxldCBsaW5lRW5kID0gbGluZVN0YXJ0ICsgbjtcbiAgICB3aGlsZSAobGluZUVuZCA+IGxpbmVTdGFydCAmJiBsaW5lRW5kIDwgdGV4dC5sZW5ndGggJiYgIWJyZWFrZXJzLmluY2x1ZGVzKHRleHRbbGluZUVuZF0pKSB7XG4gICAgICBsaW5lRW5kIC09IDE7XG4gICAgfVxuICAgIGlmIChsaW5lRW5kID09PSBsaW5lU3RhcnQpIHtcbiAgICAgIC8vIENvdWxkIG5vdCBmaW5kIGEgc3BhY2UgaW4gdGhpcyBsaW5lLiBTZWVrIGZvcndhcmQgdG8gdGhlIGZpcnN0IHNwYWNlIHRvIGdldCB0aGUgc21hbGxlc3QgbGluZSBvdmVyZmxvd1xuICAgICAgbGluZUVuZCA9IGxpbmVTdGFydCArIG47XG4gICAgICB3aGlsZSAobGluZUVuZCA8IHRleHQubGVuZ3RoICYmICFicmVha2Vycy5pbmNsdWRlcyh0ZXh0W2xpbmVFbmRdKSkge1xuICAgICAgICBsaW5lRW5kICs9IDE7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0LnB1c2godGV4dC5zbGljZShsaW5lU3RhcnQsIGxpbmVFbmQpKTtcbiAgICBsaW5lU3RhcnQgPSBsaW5lRW5kICsgMTtcbiAgfVxuICByZXR1cm4gcmV0O1xufVxuIl19
@@ -1,19 +0,0 @@
1
- export declare class Tree {
2
- text: TreeText;
3
- private readonly children;
4
- constructor(text: TreeText, children?: Tree[]);
5
- addChild(tree: Tree): void;
6
- height(): number;
7
- render(): string;
8
- toString(): string;
9
- private _render;
10
- }
11
- export declare class TreeText {
12
- header: string[];
13
- body: string[];
14
- footer: string[];
15
- constructor(header?: string[], body?: string[], footer?: string[]);
16
- get lines(): string[];
17
- lineCount(): number;
18
- }
19
- //# sourceMappingURL=tree.d.ts.map
@@ -1,72 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.TreeText = exports.Tree = void 0;
4
- class Tree {
5
- text;
6
- children;
7
- constructor(text, children = []) {
8
- this.text = text;
9
- this.children = [...children];
10
- }
11
- addChild(tree) {
12
- this.children.push(tree);
13
- }
14
- height() {
15
- return this.text.lineCount() + sum(this.children.map(c => c.height()));
16
- }
17
- render() {
18
- return this._render().join('\n');
19
- }
20
- toString() {
21
- return this.render();
22
- }
23
- _render() {
24
- const ret = [];
25
- ret.push(...this.text.lines);
26
- for (let i = 0; i < this.children.length; i++) {
27
- const isLastChild = i === this.children.length - 1;
28
- let bullet;
29
- let hanger;
30
- if (isLastChild) {
31
- bullet = ' └─ ';
32
- hanger = ' ';
33
- }
34
- else {
35
- bullet = ' ├─ ';
36
- hanger = ' │ ';
37
- }
38
- const childRender = this.children[i]._render();
39
- for (let j = 0; j < childRender.length; j++) {
40
- const isFirstLine = j === 0;
41
- ret.push((isFirstLine ? bullet : hanger) + childRender[j]);
42
- }
43
- }
44
- return ret;
45
- }
46
- }
47
- exports.Tree = Tree;
48
- class TreeText {
49
- header;
50
- body;
51
- footer;
52
- constructor(header = [], body = [], footer = []) {
53
- this.header = header;
54
- this.body = body;
55
- this.footer = footer;
56
- }
57
- get lines() {
58
- return [...this.header, ...this.body, ...this.footer];
59
- }
60
- lineCount() {
61
- return this.header.length + this.body.length + this.footer.length;
62
- }
63
- }
64
- exports.TreeText = TreeText;
65
- function sum(xs) {
66
- let ret = 0;
67
- for (const x of xs) {
68
- ret += x;
69
- }
70
- return ret;
71
- }
72
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInRyZWUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsTUFBYSxJQUFJO0lBQ1IsSUFBSSxDQUFXO0lBQ0wsUUFBUSxDQUFTO0lBRWxDLFlBQVksSUFBYyxFQUFFLFdBQW1CLEVBQUU7UUFDL0MsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7UUFDakIsSUFBSSxDQUFDLFFBQVEsR0FBRyxDQUFDLEdBQUcsUUFBUSxDQUFDLENBQUM7SUFDaEMsQ0FBQztJQUVNLFFBQVEsQ0FBQyxJQUFVO1FBQ3hCLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzNCLENBQUM7SUFFTSxNQUFNO1FBQ1gsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDekUsQ0FBQztJQUVNLE1BQU07UUFDWCxPQUFPLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDbkMsQ0FBQztJQUVNLFFBQVE7UUFDYixPQUFPLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztJQUN2QixDQUFDO0lBRU8sT0FBTztRQUNiLE1BQU0sR0FBRyxHQUFhLEVBQUUsQ0FBQztRQUN6QixHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM3QixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztZQUM5QyxNQUFNLFdBQVcsR0FBRyxDQUFDLEtBQUssSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO1lBRW5ELElBQUksTUFBTSxDQUFDO1lBQ1gsSUFBSSxNQUFNLENBQUM7WUFDWCxJQUFJLFdBQVcsRUFBRSxDQUFDO2dCQUNoQixNQUFNLEdBQUcsTUFBTSxDQUFDO2dCQUNoQixNQUFNLEdBQUcsTUFBTSxDQUFDO1lBQ2xCLENBQUM7aUJBQU0sQ0FBQztnQkFDTixNQUFNLEdBQUcsTUFBTSxDQUFDO2dCQUNoQixNQUFNLEdBQUcsTUFBTSxDQUFDO1lBQ2xCLENBQUM7WUFFRCxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQy9DLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxXQUFXLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7Z0JBQzVDLE1BQU0sV0FBVyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBRTVCLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEdBQUcsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDN0QsQ0FBQztRQUNILENBQUM7UUFDRCxPQUFPLEdBQUcsQ0FBQztJQUNiLENBQUM7Q0FDRjtBQWxERCxvQkFrREM7QUFFRCxNQUFhLFFBQVE7SUFFVjtJQUNBO0lBQ0E7SUFIVCxZQUNTLFNBQW1CLEVBQUUsRUFDckIsT0FBaUIsRUFBRSxFQUNuQixTQUFtQixFQUFFO1FBRnJCLFdBQU0sR0FBTixNQUFNLENBQWU7UUFDckIsU0FBSSxHQUFKLElBQUksQ0FBZTtRQUNuQixXQUFNLEdBQU4sTUFBTSxDQUFlO0lBRTlCLENBQUM7SUFFRCxJQUFXLEtBQUs7UUFDZCxPQUFPLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLElBQUksRUFBRSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUN4RCxDQUFDO0lBRU0sU0FBUztRQUNkLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUM7SUFDcEUsQ0FBQztDQUNGO0FBZkQsNEJBZUM7QUFFRCxTQUFTLEdBQUcsQ0FBQyxFQUFvQjtJQUMvQixJQUFJLEdBQUcsR0FBRyxDQUFDLENBQUM7SUFDWixLQUFLLE1BQU0sQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDO1FBQ25CLEdBQUcsSUFBSSxDQUFDLENBQUM7SUFDWCxDQUFDO0lBQ0QsT0FBTyxHQUFHLENBQUM7QUFDYixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNsYXNzIFRyZWUge1xuICBwdWJsaWMgdGV4dDogVHJlZVRleHQ7XG4gIHByaXZhdGUgcmVhZG9ubHkgY2hpbGRyZW46IFRyZWVbXTtcblxuICBjb25zdHJ1Y3Rvcih0ZXh0OiBUcmVlVGV4dCwgY2hpbGRyZW46IFRyZWVbXSA9IFtdKSB7XG4gICAgdGhpcy50ZXh0ID0gdGV4dDtcbiAgICB0aGlzLmNoaWxkcmVuID0gWy4uLmNoaWxkcmVuXTtcbiAgfVxuXG4gIHB1YmxpYyBhZGRDaGlsZCh0cmVlOiBUcmVlKSB7XG4gICAgdGhpcy5jaGlsZHJlbi5wdXNoKHRyZWUpO1xuICB9XG5cbiAgcHVibGljIGhlaWdodCgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLnRleHQubGluZUNvdW50KCkgKyBzdW0odGhpcy5jaGlsZHJlbi5tYXAoYyA9PiBjLmhlaWdodCgpKSk7XG4gIH1cblxuICBwdWJsaWMgcmVuZGVyKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX3JlbmRlcigpLmpvaW4oJ1xcbicpO1xuICB9XG5cbiAgcHVibGljIHRvU3RyaW5nKCkge1xuICAgIHJldHVybiB0aGlzLnJlbmRlcigpO1xuICB9XG5cbiAgcHJpdmF0ZSBfcmVuZGVyKCk6IHN0cmluZ1tdIHtcbiAgICBjb25zdCByZXQ6IHN0cmluZ1tdID0gW107XG4gICAgcmV0LnB1c2goLi4udGhpcy50ZXh0LmxpbmVzKTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuY2hpbGRyZW4ubGVuZ3RoOyBpKyspIHtcbiAgICAgIGNvbnN0IGlzTGFzdENoaWxkID0gaSA9PT0gdGhpcy5jaGlsZHJlbi5sZW5ndGggLSAxO1xuXG4gICAgICBsZXQgYnVsbGV0O1xuICAgICAgbGV0IGhhbmdlcjtcbiAgICAgIGlmIChpc0xhc3RDaGlsZCkge1xuICAgICAgICBidWxsZXQgPSAnIOKUlOKUgCAnO1xuICAgICAgICBoYW5nZXIgPSAnICAgICc7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBidWxsZXQgPSAnIOKUnOKUgCAnO1xuICAgICAgICBoYW5nZXIgPSAnIOKUgiAgJztcbiAgICAgIH1cblxuICAgICAgY29uc3QgY2hpbGRSZW5kZXIgPSB0aGlzLmNoaWxkcmVuW2ldLl9yZW5kZXIoKTtcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgY2hpbGRSZW5kZXIubGVuZ3RoOyBqKyspIHtcbiAgICAgICAgY29uc3QgaXNGaXJzdExpbmUgPSBqID09PSAwO1xuXG4gICAgICAgIHJldC5wdXNoKChpc0ZpcnN0TGluZSA/IGJ1bGxldCA6IGhhbmdlcikgKyBjaGlsZFJlbmRlcltqXSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiByZXQ7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFRyZWVUZXh0IHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIGhlYWRlcjogc3RyaW5nW10gPSBbXSxcbiAgICBwdWJsaWMgYm9keTogc3RyaW5nW10gPSBbXSxcbiAgICBwdWJsaWMgZm9vdGVyOiBzdHJpbmdbXSA9IFtdLFxuICApIHtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgbGluZXMoKSB7XG4gICAgcmV0dXJuIFsuLi50aGlzLmhlYWRlciwgLi4udGhpcy5ib2R5LCAuLi50aGlzLmZvb3Rlcl07XG4gIH1cblxuICBwdWJsaWMgbGluZUNvdW50KCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuaGVhZGVyLmxlbmd0aCArIHRoaXMuYm9keS5sZW5ndGggKyB0aGlzLmZvb3Rlci5sZW5ndGg7XG4gIH1cbn1cblxuZnVuY3Rpb24gc3VtKHhzOiBJdGVyYWJsZTxudW1iZXI+KTogbnVtYmVyIHtcbiAgbGV0IHJldCA9IDA7XG4gIGZvciAoY29uc3QgeCBvZiB4cykge1xuICAgIHJldCArPSB4O1xuICB9XG4gIHJldHVybiByZXQ7XG59XG4iXX0=