@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.
- package/build-info.json +2 -2
- package/lib/actions/diagnose/index.d.ts +28 -0
- package/lib/actions/diagnose/index.js +1 -1
- package/lib/actions/validate/index.d.ts +2 -0
- package/lib/actions/validate/index.js +1 -1
- package/lib/api/aws-auth/sdk.d.ts +5 -1
- package/lib/api/aws-auth/sdk.js +5 -1
- package/lib/api/cloud-assembly/environment.js +4 -1
- package/lib/api/cloud-assembly/stack-collection.d.ts +2 -0
- package/lib/api/cloud-assembly/stack-collection.js +3 -1
- package/lib/api/deployments/deploy-stack.js +4 -2
- package/lib/api/deployments/deployments.js +3 -1
- package/lib/api/diagnosing/diagnosis-formatting.js +54 -13
- package/lib/api/diagnosing/format-utils.d.ts +3 -0
- package/lib/api/diagnosing/format-utils.js +36 -0
- package/lib/api/diagnosing/resource-investigation.d.ts +41 -0
- package/lib/api/diagnosing/resource-investigation.js +302 -0
- package/lib/api/diagnosing/stack-diagnoser.d.ts +39 -3
- package/lib/api/diagnosing/stack-diagnoser.js +71 -30
- package/lib/api/io/private/messages.js +2 -2
- package/lib/api/validate/validate-formatting.d.ts +9 -2
- package/lib/api/validate/validate-formatting.js +117 -69
- package/lib/private/tools.js +26 -24
- package/lib/toolkit/private/collect-annotation-report.d.ts +12 -0
- package/lib/toolkit/private/collect-annotation-report.js +85 -0
- package/lib/toolkit/private/validation-report.d.ts +32 -0
- package/lib/toolkit/private/validation-report.js +119 -0
- package/lib/toolkit/toolkit.d.ts +4 -7
- package/lib/toolkit/toolkit.js +24 -67
- package/lib/toolkit/types.d.ts +1 -0
- package/lib/toolkit/types.js +1 -1
- package/lib/util/glob-matcher.d.ts +19 -7
- package/lib/util/glob-matcher.js +63 -14
- package/package.json +5 -5
- package/lib/api/diagnosing/tree-builder.d.ts +0 -13
- package/lib/api/diagnosing/tree-builder.js +0 -86
- package/lib/api/diagnosing/tree.d.ts +0 -19
- package/lib/api/diagnosing/tree.js +0 -72
package/lib/toolkit/types.d.ts
CHANGED
package/lib/toolkit/types.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJ0eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBQcm9wZXJ0aWVzIHRoYXQgZGVzY3JpYmUgYSBwaHlzaWNhbGx5IGRlcGxveWVkIHN0YWNrXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUGh5c2ljYWxTdGFjazxBcm4gZXh0ZW5kcyAnYXJuUmVxdWlyZWQnIHwgJ2Fybk9wdGlvbmFsJyA9ICdhcm5SZXF1aXJlZCc+IHtcbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBzdGFja1xuICAgKlxuICAgKiBBIHN0YWNrIG5hbWUgaXMgdW5pcXVlIGluc2lkZSBpdHMgZW52aXJvbm1lbnQsIGJ1dCBub3QgdW5pcXVlIGdsb2JhbGx5LlxuICAgKi9cbiAgcmVhZG9ubHkgc3RhY2tOYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBlbnZpcm9ubWVudCBvZiB0aGUgc3RhY2tcbiAgICpcbiAgICogVGhpcyBlbnZpcm9ubWVudCBpcyBhbHdheXMgY29uY3JldGUsIGJlY2F1c2UgZXZlbiB0aG91Z2ggdGhlIENESyBhcHAnc1xuICAgKiBzdGFjayBtYXkgYmUgcmVnaW9uLWFnbm9zdGljLCBpbiBvcmRlciB0byBiZSBkZXBsb3llZCBpdCB3aWxsIGhhdmUgdG8gaGF2ZVxuICAgKiBiZWVuIHNwZWNpYWxpemVkLlxuICAgKi9cbiAgcmVhZG9ubHkgZW52aXJvbm1lbnQ6IEVudmlyb25tZW50O1xuXG4gIC8qKlxuICAgKiBUaGUgQVJOIG9mIHRoZSBzdGFja1xuICAgKi9cbiAgcmVhZG9ubHkgc3RhY2tBcm46IEFybiBleHRlbmRzICdhcm5PcHRpb25hbCcgPyBzdHJpbmcgfCB1bmRlZmluZWQgOiBzdHJpbmc7XG59XG5cbi8qKlxuICogUmVzdWx0IGludGVyZmFjZSBmb3IgdG9vbGtpdC5kZXBsb3kgb3BlcmF0aW9uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRGVwbG95UmVzdWx0IHtcbiAgLyoqXG4gICAqIExpc3Qgb2Ygc3RhY2tzIGRlcGxveWVkIGJ5IHRoaXMgb3BlcmF0aW9uXG4gICAqL1xuICByZWFkb25seSBzdGFja3M6IERlcGxveWVkU3RhY2tbXTtcbn1cblxuLyoqXG4gKiBJbmZvcm1hdGlvbiBhYm91dCBhIGRlcGxveWVkIHN0YWNrXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRGVwbG95ZWRTdGFjayBleHRlbmRzIFBoeXNpY2FsU3RhY2sge1xuICAvKipcbiAgICogSGllcmFyY2hpY2FsIGlkZW50aWZpZXJcbiAgICpcbiAgICogVGhpcyB1bmlxdWVseSBpZGVudGlmaWVzIHRoZSBzdGFjayBpbnNpZGUgdGhlIENESyBhcHAuXG4gICAqXG4gICAqIEluIHByYWN0aWNlIHRoaXMgd2lsbCBiZSB0aGUgc3RhY2sncyBjb25zdHJ1Y3QgcGF0aCwgYnV0IHVuZm9ydHVuYXRlbHkgdGhlXG4gICAqIENsb3VkIEFzc2VtYmx5IGNvbnRyYWN0IGRvZXNuJ3QgcmVxdWlyZSBvciBndWFyYW50ZWUgdGhhdC5cbiAgICovXG4gIHJlYWRvbmx5IGhpZXJhcmNoaWNhbElkOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBvdXRwdXRzIG9mIHRoZSBkZXBsb3llZCBDbG91ZEZvcm1hdGlvbiBzdGFja1xuICAgKi9cbiAgcmVhZG9ubHkgb3V0cHV0czogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfTtcblxuICAvKipcbiAgICogUmVzb3VyY2VzIHRoYXQgQ2xvdWRGb3JtYXRpb24gZmFpbGVkIHRvIGRlbGV0ZSBkdXJpbmcgdGhlIHN0YWNrIHVwZGF0ZVxuICAgKlxuICAgKiBXaGVuIGEgcmVzb3VyY2UgcmVwbGFjZW1lbnQgb3IgcmVtb3ZhbCB0cmlnZ2VycyBhIGRlbGV0ZSB0aGF0IGZhaWxzLFxuICAgKiBDbG91ZEZvcm1hdGlvbiBza2lwcyB0aGUgZGVsZXRpb24gYW5kIGNvbXBsZXRlcyB0aGUgdXBkYXRlIGFueXdheS4gVGhlc2VcbiAgICogcmVzb3VyY2VzIGFyZSBubyBsb25nZXIgbWFuYWdlZCBieSBDbG91ZEZvcm1hdGlvbiBidXQgc3RpbGwgZXhpc3QgYW5kIG1heVxuICAgKiBpbmN1ciBjaGFyZ2VzLlxuICAgKi9cbiAgcmVhZG9ubHkgZGVsZXRlRmFpbHVyZXM6IFJlc291cmNlRGVsZXRlRmFpbHVyZVtdO1xufVxuXG4vKipcbiAqIEEgcmVzb3VyY2UgdGhhdCBDbG91ZEZvcm1hdGlvbiBmYWlsZWQgdG8gZGVsZXRlIGR1cmluZyBhIHN0YWNrIHVwZGF0ZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJlc291cmNlRGVsZXRlRmFpbHVyZSB7XG4gIC8qKlxuICAgKiBUaGUgbG9naWNhbCBJRCBvZiB0aGUgcmVzb3VyY2UgaW4gdGhlIENsb3VkRm9ybWF0aW9uIHRlbXBsYXRlXG4gICAqL1xuICByZWFkb25seSBsb2dpY2FsUmVzb3VyY2VJZDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgcGh5c2ljYWwgSUQgb2YgdGhlIHJlc291cmNlIChlLmcuIGFuIEFSTiBvciBuYW1lKVxuICAgKi9cbiAgcmVhZG9ubHkgcGh5c2ljYWxSZXNvdXJjZUlkPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgQ2xvdWRGb3JtYXRpb24gcmVzb3VyY2UgdHlwZSAoZS5nLiBBV1M6OlMzOjpCdWNrZXQpXG4gICAqL1xuICByZWFkb25seSByZXNvdXJjZVR5cGU6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHJlYXNvbiBDbG91ZEZvcm1hdGlvbiBnYXZlIGZvciB0aGUgZGVsZXRpb24gZmFpbHVyZVxuICAgKi9cbiAgcmVhZG9ubHkgcmVhc29uOiBzdHJpbmc7XG59XG5cbi8qKlxuICogQW4gZW52aXJvbm1lbnQsIHdoaWNoIGlzIGFuIChhY2NvdW50LCByZWdpb24pIHBhaXJcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBFbnZpcm9ubWVudCB7XG4gIC8qKlxuICAgKiBUaGUgYWNjb3VudCBudW1iZXJcbiAgICovXG4gIHJlYWRvbmx5IGFjY291bnQ6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHJlZ2lvbiBudW1iZXJcbiAgICovXG4gIHJlYWRvbmx5IHJlZ2lvbjogc3RyaW5nO1xufVxuXG4vKipcbiAqIFJlc3VsdCBpbnRlcmZhY2UgZm9yIHRvb2xraXQuZGVzdHJveSBvcGVyYXRpb25cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBEZXN0cm95UmVzdWx0IHtcbiAgLyoqXG4gICAqIExpc3Qgb2Ygc3RhY2tzIGRlc3Ryb3llZCBieSB0aGlzIG9wZXJhdGlvblxuICAgKi9cbiAgcmVhZG9ubHkgc3RhY2tzOiBEZXN0cm95ZWRTdGFja1tdO1xufVxuXG4vKipcbiAqIEEgc3RhY2sgdGFyZ2V0ZWQgYnkgYSBkZXN0cm95IG9wZXJhdGlvblxuICovXG5leHBvcnQgaW50ZXJmYWNlIERlc3Ryb3llZFN0YWNrIGV4dGVuZHMgUGh5c2ljYWxTdGFjazwnYXJuT3B0aW9uYWwnPiB7XG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSBzdGFjayBleGlzdGVkIHRvIGJlZ2luIHdpdGhcbiAgICpcbiAgICogSWYgYCFzdGFja0V4aXN0ZWRgLCB0aGUgc3RhY2sgZGlkbid0IGV4aXN0LCB3YXNuJ3QgZGVsZXRlZCwgYW5kIGBzdGFja0FybmBcbiAgICogd2lsbCBiZSBgdW5kZWZpbmVkYC5cbiAgICovXG4gIHJlYWRvbmx5IHN0YWNrRXhpc3RlZDogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBSZXN1bHQgaW50ZXJmYWNlIGZvciB0b29sa2l0LnJvbGxiYWNrIG9wZXJhdGlvblxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJvbGxiYWNrUmVzdWx0IHtcbiAgLyoqXG4gICAqIExpc3Qgb2Ygc3RhY2tzIHJvbGxlZCBiYWNrIGJ5IHRoaXMgb3BlcmF0aW9uXG4gICAqL1xuICByZWFkb25seSBzdGFja3M6IFJvbGxlZEJhY2tTdGFja1tdO1xufVxuXG4vKipcbiAqIEEgc3RhY2sgdGFyZ2V0ZWQgYnkgYSByb2xsYmFjayBvcGVyYXRpb25cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSb2xsZWRCYWNrU3RhY2sgZXh0ZW5kcyBQaHlzaWNhbFN0YWNrIHtcbiAgLyoqXG4gICAqIFdoYXQgb3BlcmF0aW9uIHdlIGRpZCBmb3IgdGhpcyBzdGFja1xuICAgKlxuICAgKiBFaXRoZXI6IHdlIGRpZCByb2xsIGl0IGJhY2ssIG9yIHdlIGRpZG4ndCBuZWVkIHRvIHJvbGwgaXQgYmFjayBiZWNhdXNlXG4gICAqIGl0IHdhcyBhbHJlYWR5IHN0YWJsZS5cbiAgICovXG4gIHJlYWRvbmx5IHJlc3VsdDogU3RhY2tSb2xsYmFja1Jlc3VsdDtcbn1cblxuZXhwb3J0IHR5cGUgU3RhY2tSb2xsYmFja1Jlc3VsdCA9ICdyb2xsZWQtYmFjaycgfCAnYWxyZWFkeS1zdGFibGUnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEZlYXR1cmVGbGFnIHtcbiAgcmVhZG9ubHkgbW9kdWxlOiBzdHJpbmc7XG4gIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcbiAgcmVhZG9ubHkgcmVjb21tZW5kZWRWYWx1ZTogdW5rbm93bjtcbiAgcmVhZG9ubHkgdXNlclZhbHVlPzogdW5rbm93bjtcbiAgcmVhZG9ubHkgZXhwbGFuYXRpb24/
|
|
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
|
|
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
|
-
*
|
|
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
|
|
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
|
package/lib/util/glob-matcher.js
CHANGED
|
@@ -22,15 +22,52 @@ function normalizePattern(pattern) {
|
|
|
22
22
|
return `${normalized}/**`;
|
|
23
23
|
}
|
|
24
24
|
/**
|
|
25
|
-
*
|
|
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
|
-
*
|
|
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
|
|
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
|
-
//
|
|
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
|
|
71
|
-
|
|
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
|
-
|
|
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.
|
|
89
|
-
"@aws-cdk/cloud-assembly-schema": ">=54.
|
|
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.
|
|
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=
|