cdk-common 0.0.67 → 2.0.2
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/.gitattributes +23 -21
- package/.jsii +2662 -552
- package/API.md +27 -64
- package/README.md +19 -2
- package/lib/integ-default.d.ts +3 -3
- package/lib/integ-default.js +6 -5
- package/lib/main.d.ts +4 -4
- package/lib/main.js +7 -6
- package/node_modules/@aws-cdk/assert/BUILD.md +15 -0
- package/node_modules/@aws-cdk/assert/LICENSE +201 -0
- package/node_modules/@aws-cdk/assert/NOTICE +2 -0
- package/node_modules/@aws-cdk/assert/README.md +229 -0
- package/node_modules/@aws-cdk/assert/clone.sh +29 -0
- package/node_modules/@aws-cdk/assert/jest.d.ts +14 -0
- package/node_modules/@aws-cdk/assert/jest.js +57 -0
- package/node_modules/@aws-cdk/assert/lib/assertion.d.ts +17 -0
- package/node_modules/@aws-cdk/assert/lib/assertion.js +31 -0
- package/node_modules/@aws-cdk/assert/lib/assertions/and-assertion.d.ts +10 -0
- package/node_modules/@aws-cdk/assert/lib/assertions/and-assertion.js +21 -0
- package/node_modules/@aws-cdk/assert/lib/assertions/count-resources.d.ts +10 -0
- package/node_modules/@aws-cdk/assert/lib/assertions/count-resources.js +54 -0
- package/node_modules/@aws-cdk/assert/lib/assertions/exist.d.ts +3 -0
- package/node_modules/@aws-cdk/assert/lib/assertions/exist.js +18 -0
- package/node_modules/@aws-cdk/assert/lib/assertions/have-output.d.ts +29 -0
- package/node_modules/@aws-cdk/assert/lib/assertions/have-output.js +78 -0
- package/node_modules/@aws-cdk/assert/lib/assertions/have-resource-matchers.d.ts +123 -0
- package/node_modules/@aws-cdk/assert/lib/assertions/have-resource-matchers.js +404 -0
- package/node_modules/@aws-cdk/assert/lib/assertions/have-resource.d.ts +69 -0
- package/node_modules/@aws-cdk/assert/lib/assertions/have-resource.js +131 -0
- package/node_modules/@aws-cdk/assert/lib/assertions/have-type.d.ts +3 -0
- package/node_modules/@aws-cdk/assert/lib/assertions/have-type.js +22 -0
- package/node_modules/@aws-cdk/assert/lib/assertions/match-template.d.ts +19 -0
- package/node_modules/@aws-cdk/assert/lib/assertions/match-template.js +98 -0
- package/node_modules/@aws-cdk/assert/lib/assertions/negated-assertion.d.ts +8 -0
- package/node_modules/@aws-cdk/assert/lib/assertions/negated-assertion.js +18 -0
- package/node_modules/@aws-cdk/assert/lib/canonicalize-assets.d.ts +11 -0
- package/node_modules/@aws-cdk/assert/lib/canonicalize-assets.js +70 -0
- package/node_modules/@aws-cdk/assert/lib/expect.d.ts +4 -0
- package/node_modules/@aws-cdk/assert/lib/expect.js +16 -0
- package/node_modules/@aws-cdk/assert/lib/index.d.ts +14 -0
- package/node_modules/@aws-cdk/assert/lib/index.js +27 -0
- package/node_modules/@aws-cdk/assert/lib/inspector.d.ts +31 -0
- package/node_modules/@aws-cdk/assert/lib/inspector.js +69 -0
- package/node_modules/@aws-cdk/assert/lib/synth-utils.d.ts +30 -0
- package/node_modules/@aws-cdk/assert/lib/synth-utils.js +93 -0
- package/node_modules/@aws-cdk/assert/package.json +77 -0
- package/node_modules/@aws-cdk/cfnspec/CHANGELOG.md +9353 -0
- package/node_modules/@aws-cdk/cfnspec/LICENSE +201 -0
- package/node_modules/@aws-cdk/cfnspec/NOTICE +2 -0
- package/node_modules/@aws-cdk/cfnspec/README.md +14 -0
- package/node_modules/@aws-cdk/cfnspec/build-tools/build.d.ts +1 -0
- package/node_modules/@aws-cdk/cfnspec/build-tools/build.js +83 -0
- package/node_modules/@aws-cdk/cfnspec/build-tools/create-missing-libraries.d.ts +6 -0
- package/node_modules/@aws-cdk/cfnspec/build-tools/create-missing-libraries.js +308 -0
- package/node_modules/@aws-cdk/cfnspec/build-tools/massage-spec.d.ts +14 -0
- package/node_modules/@aws-cdk/cfnspec/build-tools/massage-spec.js +130 -0
- package/node_modules/@aws-cdk/cfnspec/build-tools/scrutiny.d.ts +12 -0
- package/node_modules/@aws-cdk/cfnspec/build-tools/scrutiny.js +85 -0
- package/node_modules/@aws-cdk/cfnspec/build-tools/spec-diff.d.ts +1 -0
- package/node_modules/@aws-cdk/cfnspec/build-tools/spec-diff.js +237 -0
- package/node_modules/@aws-cdk/cfnspec/build-tools/template/LICENSE +201 -0
- package/node_modules/@aws-cdk/cfnspec/build-tools/template/NOTICE +2 -0
- package/node_modules/@aws-cdk/cfnspec/build-tools/update-cfnlint.sh +18 -0
- package/node_modules/@aws-cdk/cfnspec/build-tools/update-metrics.sh +13 -0
- package/node_modules/@aws-cdk/cfnspec/build-tools/update.sh +81 -0
- package/node_modules/@aws-cdk/cfnspec/cfn.version +1 -0
- package/node_modules/@aws-cdk/cfnspec/coverage/base.css +224 -0
- package/node_modules/@aws-cdk/cfnspec/coverage/block-navigation.js +79 -0
- package/node_modules/@aws-cdk/cfnspec/coverage/build-tools/index.html +126 -0
- package/node_modules/@aws-cdk/cfnspec/coverage/build-tools/massage-spec.ts.html +443 -0
- package/node_modules/@aws-cdk/cfnspec/coverage/build-tools/scrutiny.ts.html +344 -0
- package/node_modules/@aws-cdk/cfnspec/coverage/favicon.png +0 -0
- package/node_modules/@aws-cdk/cfnspec/coverage/index.html +156 -0
- package/node_modules/@aws-cdk/cfnspec/coverage/junit.xml +31181 -0
- package/node_modules/@aws-cdk/cfnspec/coverage/lcov-report/base.css +224 -0
- package/node_modules/@aws-cdk/cfnspec/coverage/lcov-report/block-navigation.js +79 -0
- package/node_modules/@aws-cdk/cfnspec/coverage/lcov-report/build-tools/index.html +126 -0
- package/node_modules/@aws-cdk/cfnspec/coverage/lcov-report/build-tools/massage-spec.ts.html +443 -0
- package/node_modules/@aws-cdk/cfnspec/coverage/lcov-report/build-tools/scrutiny.ts.html +344 -0
- package/node_modules/@aws-cdk/cfnspec/coverage/lcov-report/favicon.png +0 -0
- package/node_modules/@aws-cdk/cfnspec/coverage/lcov-report/index.html +156 -0
- package/node_modules/@aws-cdk/cfnspec/coverage/lcov-report/lib/canned-metrics/canned-metrics-schema.ts.html +299 -0
- package/node_modules/@aws-cdk/cfnspec/coverage/lcov-report/lib/canned-metrics/index.html +111 -0
- package/node_modules/@aws-cdk/cfnspec/coverage/lcov-report/lib/canned-metrics.ts.html +440 -0
- package/node_modules/@aws-cdk/cfnspec/coverage/lcov-report/lib/index.html +126 -0
- package/node_modules/@aws-cdk/cfnspec/coverage/lcov-report/lib/index.ts.html +557 -0
- package/node_modules/@aws-cdk/cfnspec/coverage/lcov-report/lib/schema/augmentation.ts.html +371 -0
- package/node_modules/@aws-cdk/cfnspec/coverage/lcov-report/lib/schema/base-types.ts.html +167 -0
- package/node_modules/@aws-cdk/cfnspec/coverage/lcov-report/lib/schema/index.html +186 -0
- package/node_modules/@aws-cdk/cfnspec/coverage/lcov-report/lib/schema/index.ts.html +98 -0
- package/node_modules/@aws-cdk/cfnspec/coverage/lcov-report/lib/schema/property.ts.html +965 -0
- package/node_modules/@aws-cdk/cfnspec/coverage/lcov-report/lib/schema/resource-type.ts.html +572 -0
- package/node_modules/@aws-cdk/cfnspec/coverage/lcov-report/lib/schema/specification.ts.html +248 -0
- package/node_modules/@aws-cdk/cfnspec/coverage/lcov-report/prettify.css +1 -0
- package/node_modules/@aws-cdk/cfnspec/coverage/lcov-report/prettify.js +2 -0
- package/node_modules/@aws-cdk/cfnspec/coverage/lcov-report/sort-arrow-sprite.png +0 -0
- package/node_modules/@aws-cdk/cfnspec/coverage/lcov-report/sorter.js +170 -0
- package/node_modules/@aws-cdk/cfnspec/coverage/lcov.info +709 -0
- package/node_modules/@aws-cdk/cfnspec/coverage/lib/canned-metrics/canned-metrics-schema.ts.html +299 -0
- package/node_modules/@aws-cdk/cfnspec/coverage/lib/canned-metrics/index.html +111 -0
- package/node_modules/@aws-cdk/cfnspec/coverage/lib/canned-metrics.ts.html +440 -0
- package/node_modules/@aws-cdk/cfnspec/coverage/lib/index.html +126 -0
- package/node_modules/@aws-cdk/cfnspec/coverage/lib/index.ts.html +557 -0
- package/node_modules/@aws-cdk/cfnspec/coverage/lib/schema/augmentation.ts.html +371 -0
- package/node_modules/@aws-cdk/cfnspec/coverage/lib/schema/base-types.ts.html +167 -0
- package/node_modules/@aws-cdk/cfnspec/coverage/lib/schema/index.html +186 -0
- package/node_modules/@aws-cdk/cfnspec/coverage/lib/schema/index.ts.html +98 -0
- package/node_modules/@aws-cdk/cfnspec/coverage/lib/schema/property.ts.html +965 -0
- package/node_modules/@aws-cdk/cfnspec/coverage/lib/schema/resource-type.ts.html +572 -0
- package/node_modules/@aws-cdk/cfnspec/coverage/lib/schema/specification.ts.html +248 -0
- package/node_modules/@aws-cdk/cfnspec/coverage/prettify.css +1 -0
- package/node_modules/@aws-cdk/cfnspec/coverage/prettify.js +2 -0
- package/node_modules/@aws-cdk/cfnspec/coverage/sort-arrow-sprite.png +0 -0
- package/node_modules/@aws-cdk/cfnspec/coverage/sorter.js +170 -0
- package/node_modules/@aws-cdk/cfnspec/lib/_private_schema/cfn-lint.d.ts +24 -0
- package/node_modules/@aws-cdk/cfnspec/lib/_private_schema/cfn-lint.js +3 -0
- package/node_modules/@aws-cdk/cfnspec/lib/augmentations/AWS_EC2_VPNConnection.json +27 -0
- package/node_modules/@aws-cdk/cfnspec/lib/augmentations/AWS_Lambda_Function.json +27 -0
- package/node_modules/@aws-cdk/cfnspec/lib/augmentations/AWS_RDS_DBCluster.json +70 -0
- package/node_modules/@aws-cdk/cfnspec/lib/augmentations/AWS_RDS_DBInstance.json +37 -0
- package/node_modules/@aws-cdk/cfnspec/lib/augmentations/AWS_SNS_Topic.json +52 -0
- package/node_modules/@aws-cdk/cfnspec/lib/augmentations/AWS_SQS_Queue.json +53 -0
- package/node_modules/@aws-cdk/cfnspec/lib/canned-metrics/README.md +163 -0
- package/node_modules/@aws-cdk/cfnspec/lib/canned-metrics/canned-metrics-schema.d.ts +60 -0
- package/node_modules/@aws-cdk/cfnspec/lib/canned-metrics/canned-metrics-schema.js +12 -0
- package/node_modules/@aws-cdk/cfnspec/lib/canned-metrics/services.json +22175 -0
- package/node_modules/@aws-cdk/cfnspec/lib/canned-metrics.d.ts +41 -0
- package/node_modules/@aws-cdk/cfnspec/lib/canned-metrics.js +77 -0
- package/node_modules/@aws-cdk/cfnspec/lib/index.d.ts +55 -0
- package/node_modules/@aws-cdk/cfnspec/lib/index.js +171 -0
- package/node_modules/@aws-cdk/cfnspec/lib/schema/augmentation.d.ts +87 -0
- package/node_modules/@aws-cdk/cfnspec/lib/schema/augmentation.js +28 -0
- package/node_modules/@aws-cdk/cfnspec/lib/schema/base-types.d.ts +14 -0
- package/node_modules/@aws-cdk/cfnspec/lib/schema/base-types.js +29 -0
- package/node_modules/@aws-cdk/cfnspec/lib/schema/cfn-lint.d.ts +13 -0
- package/node_modules/@aws-cdk/cfnspec/lib/schema/cfn-lint.js +3 -0
- package/node_modules/@aws-cdk/cfnspec/lib/schema/index.d.ts +6 -0
- package/node_modules/@aws-cdk/cfnspec/lib/schema/index.js +19 -0
- package/node_modules/@aws-cdk/cfnspec/lib/schema/property.d.ts +174 -0
- package/node_modules/@aws-cdk/cfnspec/lib/schema/property.js +161 -0
- package/node_modules/@aws-cdk/cfnspec/lib/schema/resource-type.d.ts +117 -0
- package/node_modules/@aws-cdk/cfnspec/lib/schema/resource-type.js +99 -0
- package/node_modules/@aws-cdk/cfnspec/lib/schema/specification.d.ts +56 -0
- package/node_modules/@aws-cdk/cfnspec/lib/schema/specification.js +11 -0
- package/node_modules/@aws-cdk/cfnspec/package.json +61 -0
- package/node_modules/@aws-cdk/cfnspec/spec/cfn-lint.json +34 -0
- package/node_modules/@aws-cdk/cfnspec/spec/specification.json +110800 -0
- package/node_modules/@aws-cdk/cfnspec/tsconfig.json +24 -0
- package/node_modules/@aws-cdk/cfnspec/tsconfig.tsbuildinfo +4584 -0
- package/node_modules/@aws-cdk/cloudformation-diff/LICENSE +201 -0
- package/node_modules/@aws-cdk/cloudformation-diff/NOTICE +2 -0
- package/node_modules/@aws-cdk/cloudformation-diff/README.md +12 -0
- package/node_modules/@aws-cdk/cloudformation-diff/lib/diff/index.d.ts +9 -0
- package/node_modules/@aws-cdk/cloudformation-diff/lib/diff/index.js +94 -0
- package/node_modules/@aws-cdk/cloudformation-diff/lib/diff/types.d.ts +326 -0
- package/node_modules/@aws-cdk/cloudformation-diff/lib/diff/types.js +456 -0
- package/node_modules/@aws-cdk/cloudformation-diff/lib/diff/util.d.ts +41 -0
- package/node_modules/@aws-cdk/cloudformation-diff/lib/diff/util.js +165 -0
- package/node_modules/@aws-cdk/cloudformation-diff/lib/diff-template.d.ts +21 -0
- package/node_modules/@aws-cdk/cloudformation-diff/lib/diff-template.js +166 -0
- package/node_modules/@aws-cdk/cloudformation-diff/lib/diffable.d.ts +22 -0
- package/node_modules/@aws-cdk/cloudformation-diff/lib/diffable.js +47 -0
- package/node_modules/@aws-cdk/cloudformation-diff/lib/format-table.d.ts +6 -0
- package/node_modules/@aws-cdk/cloudformation-diff/lib/format-table.js +109 -0
- package/node_modules/@aws-cdk/cloudformation-diff/lib/format.d.ts +23 -0
- package/node_modules/@aws-cdk/cloudformation-diff/lib/format.js +414 -0
- package/node_modules/@aws-cdk/cloudformation-diff/lib/iam/iam-changes.d.ts +62 -0
- package/node_modules/@aws-cdk/cloudformation-diff/lib/iam/iam-changes.js +246 -0
- package/node_modules/@aws-cdk/cloudformation-diff/lib/iam/managed-policy.d.ts +18 -0
- package/node_modules/@aws-cdk/cloudformation-diff/lib/iam/managed-policy.js +29 -0
- package/node_modules/@aws-cdk/cloudformation-diff/lib/iam/statement.d.ts +127 -0
- package/node_modules/@aws-cdk/cloudformation-diff/lib/iam/statement.js +266 -0
- package/node_modules/@aws-cdk/cloudformation-diff/lib/index.d.ts +4 -0
- package/node_modules/@aws-cdk/cloudformation-diff/lib/index.js +18 -0
- package/node_modules/@aws-cdk/cloudformation-diff/lib/network/security-group-changes.d.ts +32 -0
- package/node_modules/@aws-cdk/cloudformation-diff/lib/network/security-group-changes.js +95 -0
- package/node_modules/@aws-cdk/cloudformation-diff/lib/network/security-group-rule.d.ts +50 -0
- package/node_modules/@aws-cdk/cloudformation-diff/lib/network/security-group-rule.js +91 -0
- package/node_modules/@aws-cdk/cloudformation-diff/lib/render-intrinsics.d.ts +21 -0
- package/node_modules/@aws-cdk/cloudformation-diff/lib/render-intrinsics.js +79 -0
- package/node_modules/@aws-cdk/cloudformation-diff/lib/util.d.ts +7 -0
- package/node_modules/@aws-cdk/cloudformation-diff/lib/util.js +63 -0
- package/node_modules/@aws-cdk/cloudformation-diff/node_modules/@types/node/LICENSE +21 -0
- package/node_modules/@aws-cdk/cloudformation-diff/node_modules/@types/node/README.md +16 -0
- package/node_modules/@aws-cdk/cloudformation-diff/node_modules/@types/node/assert.d.ts +99 -0
- package/node_modules/@aws-cdk/cloudformation-diff/node_modules/@types/node/async_hooks.d.ts +144 -0
- package/node_modules/@aws-cdk/cloudformation-diff/node_modules/@types/node/base.d.ts +19 -0
- package/node_modules/@aws-cdk/cloudformation-diff/node_modules/@types/node/buffer.d.ts +16 -0
- package/node_modules/@aws-cdk/cloudformation-diff/node_modules/@types/node/child_process.d.ts +369 -0
- package/node_modules/@aws-cdk/cloudformation-diff/node_modules/@types/node/cluster.d.ts +260 -0
- package/node_modules/@aws-cdk/cloudformation-diff/node_modules/@types/node/console.d.ts +3 -0
- package/node_modules/@aws-cdk/cloudformation-diff/node_modules/@types/node/constants.d.ts +449 -0
- package/node_modules/@aws-cdk/cloudformation-diff/node_modules/@types/node/crypto.d.ts +613 -0
- package/node_modules/@aws-cdk/cloudformation-diff/node_modules/@types/node/dgram.d.ts +97 -0
- package/node_modules/@aws-cdk/cloudformation-diff/node_modules/@types/node/dns.d.ts +366 -0
- package/node_modules/@aws-cdk/cloudformation-diff/node_modules/@types/node/domain.d.ts +16 -0
- package/node_modules/@aws-cdk/cloudformation-diff/node_modules/@types/node/events.d.ts +30 -0
- package/node_modules/@aws-cdk/cloudformation-diff/node_modules/@types/node/fs.d.ts +2302 -0
- package/node_modules/@aws-cdk/cloudformation-diff/node_modules/@types/node/globals.d.ts +1066 -0
- package/node_modules/@aws-cdk/cloudformation-diff/node_modules/@types/node/http.d.ts +274 -0
- package/node_modules/@aws-cdk/cloudformation-diff/node_modules/@types/node/http2.d.ts +859 -0
- package/node_modules/@aws-cdk/cloudformation-diff/node_modules/@types/node/https.d.ts +51 -0
- package/node_modules/@aws-cdk/cloudformation-diff/node_modules/@types/node/index.d.ts +41 -0
- package/node_modules/@aws-cdk/cloudformation-diff/node_modules/@types/node/inspector.d.ts +3162 -0
- package/node_modules/@aws-cdk/cloudformation-diff/node_modules/@types/node/module.d.ts +3 -0
- package/node_modules/@aws-cdk/cloudformation-diff/node_modules/@types/node/net.d.ts +251 -0
- package/node_modules/@aws-cdk/cloudformation-diff/node_modules/@types/node/os.d.ts +254 -0
- package/node_modules/@aws-cdk/cloudformation-diff/node_modules/@types/node/package.json +181 -0
- package/node_modules/@aws-cdk/cloudformation-diff/node_modules/@types/node/path.d.ts +159 -0
- package/node_modules/@aws-cdk/cloudformation-diff/node_modules/@types/node/perf_hooks.d.ts +169 -0
- package/node_modules/@aws-cdk/cloudformation-diff/node_modules/@types/node/process.d.ts +3 -0
- package/node_modules/@aws-cdk/cloudformation-diff/node_modules/@types/node/punycode.d.ts +68 -0
- package/node_modules/@aws-cdk/cloudformation-diff/node_modules/@types/node/querystring.d.ts +17 -0
- package/node_modules/@aws-cdk/cloudformation-diff/node_modules/@types/node/readline.d.ts +143 -0
- package/node_modules/@aws-cdk/cloudformation-diff/node_modules/@types/node/repl.d.ts +380 -0
- package/node_modules/@aws-cdk/cloudformation-diff/node_modules/@types/node/stream.d.ts +313 -0
- package/node_modules/@aws-cdk/cloudformation-diff/node_modules/@types/node/string_decoder.d.ts +9 -0
- package/node_modules/@aws-cdk/cloudformation-diff/node_modules/@types/node/timers.d.ts +16 -0
- package/node_modules/@aws-cdk/cloudformation-diff/node_modules/@types/node/tls.d.ts +459 -0
- package/node_modules/@aws-cdk/cloudformation-diff/node_modules/@types/node/trace_events.d.ts +61 -0
- package/node_modules/@aws-cdk/cloudformation-diff/node_modules/@types/node/ts3.6/assert.d.ts +73 -0
- package/node_modules/@aws-cdk/cloudformation-diff/node_modules/@types/node/ts3.6/base.d.ts +54 -0
- package/node_modules/@aws-cdk/cloudformation-diff/node_modules/@types/node/ts3.6/index.d.ts +6 -0
- package/node_modules/@aws-cdk/cloudformation-diff/node_modules/@types/node/tty.d.ts +17 -0
- package/node_modules/@aws-cdk/cloudformation-diff/node_modules/@types/node/url.d.ts +104 -0
- package/node_modules/@aws-cdk/cloudformation-diff/node_modules/@types/node/util.d.ts +187 -0
- package/node_modules/@aws-cdk/cloudformation-diff/node_modules/@types/node/v8.d.ts +28 -0
- package/node_modules/@aws-cdk/cloudformation-diff/node_modules/@types/node/vm.d.ts +81 -0
- package/node_modules/@aws-cdk/cloudformation-diff/node_modules/@types/node/worker_threads.d.ts +124 -0
- package/node_modules/@aws-cdk/cloudformation-diff/node_modules/@types/node/zlib.d.ts +327 -0
- package/node_modules/@aws-cdk/cloudformation-diff/package.json +61 -0
- package/node_modules/@types/concat-stream/node_modules/@types/node/README.md +1 -1
- package/node_modules/@types/concat-stream/node_modules/@types/node/http.d.ts +1 -1
- package/node_modules/@types/concat-stream/node_modules/@types/node/package.json +2 -2
- package/node_modules/@types/form-data/node_modules/@types/node/README.md +1 -1
- package/node_modules/@types/form-data/node_modules/@types/node/http.d.ts +1 -1
- package/node_modules/@types/form-data/node_modules/@types/node/package.json +2 -2
- package/node_modules/ansi-regex/index.d.ts +37 -0
- package/node_modules/ansi-regex/index.js +10 -0
- package/node_modules/ansi-regex/license +9 -0
- package/node_modules/ansi-regex/package.json +55 -0
- package/node_modules/ansi-regex/readme.md +78 -0
- package/node_modules/ansi-styles/index.d.ts +345 -0
- package/node_modules/ansi-styles/index.js +163 -0
- package/node_modules/ansi-styles/license +9 -0
- package/node_modules/ansi-styles/package.json +56 -0
- package/node_modules/ansi-styles/readme.md +152 -0
- package/node_modules/astral-regex/index.d.ts +28 -0
- package/node_modules/astral-regex/index.js +6 -0
- package/node_modules/astral-regex/license +9 -0
- package/node_modules/astral-regex/package.json +33 -0
- package/node_modules/astral-regex/readme.md +46 -0
- package/node_modules/at-least-node/LICENSE +6 -0
- package/node_modules/at-least-node/README.md +25 -0
- package/node_modules/at-least-node/index.js +5 -0
- package/node_modules/at-least-node/package.json +32 -0
- package/node_modules/charenc/LICENSE.mkd +27 -0
- package/node_modules/charenc/README.js +1 -0
- package/node_modules/charenc/charenc.js +33 -0
- package/node_modules/charenc/package.json +24 -0
- package/node_modules/color-convert/CHANGELOG.md +54 -0
- package/node_modules/color-convert/LICENSE +21 -0
- package/node_modules/color-convert/README.md +68 -0
- package/node_modules/color-convert/conversions.js +839 -0
- package/node_modules/color-convert/index.js +81 -0
- package/node_modules/color-convert/package.json +48 -0
- package/node_modules/color-convert/route.js +97 -0
- package/node_modules/color-name/LICENSE +8 -0
- package/node_modules/color-name/README.md +11 -0
- package/node_modules/color-name/index.js +152 -0
- package/node_modules/color-name/package.json +28 -0
- package/node_modules/colors/LICENSE +25 -0
- package/node_modules/colors/README.md +221 -0
- package/node_modules/colors/examples/normal-usage.js +82 -0
- package/node_modules/colors/examples/safe-string.js +79 -0
- package/node_modules/colors/index.d.ts +136 -0
- package/node_modules/colors/lib/colors.js +211 -0
- package/node_modules/colors/lib/custom/trap.js +46 -0
- package/node_modules/colors/lib/custom/zalgo.js +110 -0
- package/node_modules/colors/lib/extendStringPrototype.js +110 -0
- package/node_modules/colors/lib/index.js +13 -0
- package/node_modules/colors/lib/maps/america.js +10 -0
- package/node_modules/colors/lib/maps/rainbow.js +12 -0
- package/node_modules/colors/lib/maps/random.js +11 -0
- package/node_modules/colors/lib/maps/zebra.js +5 -0
- package/node_modules/colors/lib/styles.js +95 -0
- package/node_modules/colors/lib/system/has-flag.js +35 -0
- package/node_modules/colors/lib/system/supports-colors.js +151 -0
- package/node_modules/colors/package.json +45 -0
- package/node_modules/colors/safe.d.ts +48 -0
- package/node_modules/colors/safe.js +10 -0
- package/node_modules/colors/themes/generic-logging.js +12 -0
- package/node_modules/crypt/LICENSE.mkd +27 -0
- package/node_modules/crypt/README.mkd +1 -0
- package/node_modules/crypt/crypt.js +96 -0
- package/node_modules/crypt/package.json +22 -0
- package/node_modules/diff/CONTRIBUTING.md +39 -0
- package/node_modules/diff/LICENSE +31 -0
- package/node_modules/diff/README.md +208 -0
- package/node_modules/diff/dist/diff.js +1582 -0
- package/node_modules/diff/lib/convert/dmp.js +32 -0
- package/node_modules/diff/lib/convert/xml.js +42 -0
- package/node_modules/diff/lib/diff/array.js +45 -0
- package/node_modules/diff/lib/diff/base.js +304 -0
- package/node_modules/diff/lib/diff/character.js +37 -0
- package/node_modules/diff/lib/diff/css.js +41 -0
- package/node_modules/diff/lib/diff/json.js +163 -0
- package/node_modules/diff/lib/diff/line.js +89 -0
- package/node_modules/diff/lib/diff/sentence.js +41 -0
- package/node_modules/diff/lib/diff/word.js +108 -0
- package/node_modules/diff/lib/index.es6.js +1553 -0
- package/node_modules/diff/lib/index.js +216 -0
- package/node_modules/diff/lib/index.mjs +1553 -0
- package/node_modules/diff/lib/patch/apply.js +238 -0
- package/node_modules/diff/lib/patch/create.js +267 -0
- package/node_modules/diff/lib/patch/merge.js +613 -0
- package/node_modules/diff/lib/patch/parse.js +167 -0
- package/node_modules/diff/lib/util/array.js +32 -0
- package/node_modules/diff/lib/util/distance-iterator.js +57 -0
- package/node_modules/diff/lib/util/params.js +24 -0
- package/node_modules/diff/package.json +87 -0
- package/node_modules/diff/release-notes.md +303 -0
- package/node_modules/diff/runtime.js +3 -0
- package/node_modules/emoji-regex/LICENSE-MIT.txt +20 -0
- package/node_modules/emoji-regex/README.md +73 -0
- package/node_modules/emoji-regex/es2015/index.js +6 -0
- package/node_modules/emoji-regex/es2015/text.js +6 -0
- package/node_modules/emoji-regex/index.d.ts +23 -0
- package/node_modules/emoji-regex/index.js +6 -0
- package/node_modules/emoji-regex/package.json +50 -0
- package/node_modules/emoji-regex/text.js +6 -0
- package/node_modules/fast-deep-equal/LICENSE +21 -0
- package/node_modules/fast-deep-equal/README.md +96 -0
- package/node_modules/fast-deep-equal/es6/index.d.ts +2 -0
- package/node_modules/fast-deep-equal/es6/index.js +72 -0
- package/node_modules/fast-deep-equal/es6/react.d.ts +2 -0
- package/node_modules/fast-deep-equal/es6/react.js +79 -0
- package/node_modules/fast-deep-equal/index.d.ts +4 -0
- package/node_modules/fast-deep-equal/index.js +46 -0
- package/node_modules/fast-deep-equal/package.json +61 -0
- package/node_modules/fast-deep-equal/react.d.ts +2 -0
- package/node_modules/fast-deep-equal/react.js +53 -0
- package/node_modules/fs-extra/CHANGELOG.md +902 -0
- package/node_modules/fs-extra/LICENSE +15 -0
- package/node_modules/fs-extra/README.md +264 -0
- package/node_modules/fs-extra/lib/copy/copy.js +232 -0
- package/node_modules/fs-extra/lib/copy/index.js +6 -0
- package/node_modules/fs-extra/lib/copy-sync/copy-sync.js +166 -0
- package/node_modules/fs-extra/lib/copy-sync/index.js +5 -0
- package/node_modules/fs-extra/lib/empty/index.js +48 -0
- package/node_modules/fs-extra/lib/ensure/file.js +69 -0
- package/node_modules/fs-extra/lib/ensure/index.js +23 -0
- package/node_modules/fs-extra/lib/ensure/link.js +61 -0
- package/node_modules/fs-extra/lib/ensure/symlink-paths.js +99 -0
- package/node_modules/fs-extra/lib/ensure/symlink-type.js +31 -0
- package/node_modules/fs-extra/lib/ensure/symlink.js +63 -0
- package/node_modules/fs-extra/lib/fs/index.js +130 -0
- package/node_modules/fs-extra/lib/index.js +27 -0
- package/node_modules/fs-extra/lib/json/index.js +16 -0
- package/node_modules/fs-extra/lib/json/jsonfile.js +11 -0
- package/node_modules/fs-extra/lib/json/output-json-sync.js +12 -0
- package/node_modules/fs-extra/lib/json/output-json.js +12 -0
- package/node_modules/fs-extra/lib/mkdirs/index.js +14 -0
- package/node_modules/fs-extra/lib/mkdirs/make-dir.js +141 -0
- package/node_modules/fs-extra/lib/move/index.js +6 -0
- package/node_modules/fs-extra/lib/move/move.js +65 -0
- package/node_modules/fs-extra/lib/move-sync/index.js +5 -0
- package/node_modules/fs-extra/lib/move-sync/move-sync.js +47 -0
- package/node_modules/fs-extra/lib/output/index.js +40 -0
- package/node_modules/fs-extra/lib/path-exists/index.js +12 -0
- package/node_modules/fs-extra/lib/remove/index.js +9 -0
- package/node_modules/fs-extra/lib/remove/rimraf.js +302 -0
- package/node_modules/fs-extra/lib/util/stat.js +139 -0
- package/node_modules/fs-extra/lib/util/utimes.js +26 -0
- package/node_modules/fs-extra/package.json +70 -0
- package/node_modules/graceful-fs/LICENSE +15 -0
- package/node_modules/graceful-fs/README.md +143 -0
- package/node_modules/graceful-fs/clone.js +23 -0
- package/node_modules/graceful-fs/graceful-fs.js +429 -0
- package/node_modules/graceful-fs/legacy-streams.js +118 -0
- package/node_modules/graceful-fs/package.json +50 -0
- package/node_modules/graceful-fs/polyfills.js +346 -0
- package/node_modules/is-buffer/LICENSE +21 -0
- package/node_modules/is-buffer/README.md +53 -0
- package/node_modules/is-buffer/index.js +21 -0
- package/node_modules/is-buffer/package.json +51 -0
- package/node_modules/is-buffer/test/basic.js +24 -0
- package/node_modules/is-fullwidth-code-point/index.d.ts +17 -0
- package/node_modules/is-fullwidth-code-point/index.js +50 -0
- package/node_modules/is-fullwidth-code-point/license +9 -0
- package/node_modules/is-fullwidth-code-point/package.json +42 -0
- package/node_modules/is-fullwidth-code-point/readme.md +39 -0
- package/node_modules/jsonfile/CHANGELOG.md +171 -0
- package/node_modules/jsonfile/LICENSE +15 -0
- package/node_modules/jsonfile/README.md +230 -0
- package/node_modules/jsonfile/index.js +88 -0
- package/node_modules/jsonfile/package.json +40 -0
- package/node_modules/jsonfile/utils.js +14 -0
- package/node_modules/lodash.truncate/LICENSE +47 -0
- package/node_modules/lodash.truncate/README.md +18 -0
- package/node_modules/lodash.truncate/index.js +632 -0
- package/node_modules/lodash.truncate/package.json +17 -0
- package/node_modules/md5/.travis.yml +7 -0
- package/node_modules/md5/LICENSE +27 -0
- package/node_modules/md5/README.md +111 -0
- package/node_modules/md5/demo/index.html +48 -0
- package/node_modules/md5/dist/md5.min.js +7 -0
- package/node_modules/md5/md5.js +160 -0
- package/node_modules/md5/package.json +38 -0
- package/node_modules/md5/test.js +75 -0
- package/node_modules/md5/webpack.config.js +13 -0
- package/node_modules/punycode/LICENSE-MIT.txt +20 -0
- package/node_modules/punycode/README.md +122 -0
- package/node_modules/punycode/package.json +58 -0
- package/node_modules/punycode/punycode.es6.js +441 -0
- package/node_modules/punycode/punycode.js +440 -0
- package/node_modules/require-from-string/index.js +34 -0
- package/node_modules/require-from-string/license +21 -0
- package/node_modules/require-from-string/package.json +28 -0
- package/node_modules/require-from-string/readme.md +56 -0
- package/node_modules/slice-ansi/index.js +103 -0
- package/node_modules/slice-ansi/license +10 -0
- package/node_modules/slice-ansi/package.json +52 -0
- package/node_modules/slice-ansi/readme.md +66 -0
- package/node_modules/string-width/index.d.ts +29 -0
- package/node_modules/string-width/index.js +47 -0
- package/node_modules/string-width/license +9 -0
- package/node_modules/string-width/package.json +56 -0
- package/node_modules/string-width/readme.md +50 -0
- package/node_modules/strip-ansi/index.d.ts +17 -0
- package/node_modules/strip-ansi/index.js +4 -0
- package/node_modules/strip-ansi/license +9 -0
- package/node_modules/strip-ansi/package.json +54 -0
- package/node_modules/strip-ansi/readme.md +46 -0
- package/node_modules/table/LICENSE +24 -0
- package/node_modules/table/README.md +759 -0
- package/node_modules/table/dist/src/alignString.d.ts +6 -0
- package/node_modules/table/dist/src/alignString.js +60 -0
- package/node_modules/table/dist/src/alignTableData.d.ts +2 -0
- package/node_modules/table/dist/src/alignTableData.js +14 -0
- package/node_modules/table/dist/src/calculateCellHeight.d.ts +4 -0
- package/node_modules/table/dist/src/calculateCellHeight.js +12 -0
- package/node_modules/table/dist/src/calculateCellWidths.d.ts +5 -0
- package/node_modules/table/dist/src/calculateCellWidths.js +17 -0
- package/node_modules/table/dist/src/calculateColumnWidths.d.ts +6 -0
- package/node_modules/table/dist/src/calculateColumnWidths.js +17 -0
- package/node_modules/table/dist/src/calculateRowHeights.d.ts +5 -0
- package/node_modules/table/dist/src/calculateRowHeights.js +19 -0
- package/node_modules/table/dist/src/createStream.d.ts +2 -0
- package/node_modules/table/dist/src/createStream.js +73 -0
- package/node_modules/table/dist/src/drawBorder.d.ts +26 -0
- package/node_modules/table/dist/src/drawBorder.js +101 -0
- package/node_modules/table/dist/src/drawContent.d.ts +9 -0
- package/node_modules/table/dist/src/drawContent.js +27 -0
- package/node_modules/table/dist/src/drawHeader.d.ts +2 -0
- package/node_modules/table/dist/src/drawHeader.js +30 -0
- package/node_modules/table/dist/src/drawRow.d.ts +6 -0
- package/node_modules/table/dist/src/drawRow.js +21 -0
- package/node_modules/table/dist/src/drawTable.d.ts +2 -0
- package/node_modules/table/dist/src/drawTable.js +39 -0
- package/node_modules/table/dist/src/generated/validators.d.ts +13 -0
- package/node_modules/table/dist/src/generated/validators.js +2171 -0
- package/node_modules/table/dist/src/getBorderCharacters.d.ts +2 -0
- package/node_modules/table/dist/src/getBorderCharacters.js +89 -0
- package/node_modules/table/dist/src/index.d.ts +5 -0
- package/node_modules/table/dist/src/index.js +21 -0
- package/node_modules/table/dist/src/makeStreamConfig.d.ts +7 -0
- package/node_modules/table/dist/src/makeStreamConfig.js +43 -0
- package/node_modules/table/dist/src/makeTableConfig.d.ts +7 -0
- package/node_modules/table/dist/src/makeTableConfig.js +65 -0
- package/node_modules/table/dist/src/mapDataUsingRowHeights.d.ts +2 -0
- package/node_modules/table/dist/src/mapDataUsingRowHeights.js +45 -0
- package/node_modules/table/dist/src/padTableData.d.ts +3 -0
- package/node_modules/table/dist/src/padTableData.js +17 -0
- package/node_modules/table/dist/src/stringifyTableData.d.ts +2 -0
- package/node_modules/table/dist/src/stringifyTableData.js +13 -0
- package/node_modules/table/dist/src/table.d.ts +2 -0
- package/node_modules/table/dist/src/table.js +27 -0
- package/node_modules/table/dist/src/truncateTableData.d.ts +6 -0
- package/node_modules/table/dist/src/truncateTableData.js +24 -0
- package/node_modules/table/dist/src/types/api.d.ts +114 -0
- package/node_modules/table/dist/src/types/api.js +3 -0
- package/node_modules/table/dist/src/types/internal.d.ts +1 -0
- package/node_modules/table/dist/src/types/internal.js +3 -0
- package/node_modules/table/dist/src/utils.d.ts +1 -0
- package/node_modules/table/dist/src/utils.js +93 -0
- package/node_modules/table/dist/src/validateConfig.d.ts +2 -0
- package/node_modules/table/dist/src/validateConfig.js +27 -0
- package/node_modules/table/dist/src/validateTableData.d.ts +1 -0
- package/node_modules/table/dist/src/validateTableData.js +32 -0
- package/node_modules/table/dist/src/wrapCell.d.ts +8 -0
- package/node_modules/table/dist/src/wrapCell.js +33 -0
- package/node_modules/table/dist/src/wrapString.d.ts +9 -0
- package/node_modules/table/dist/src/wrapString.js +27 -0
- package/node_modules/table/dist/src/wrapWord.d.ts +1 -0
- package/node_modules/table/dist/src/wrapWord.js +42 -0
- package/node_modules/table/node_modules/ajv/.runkit_example.js +23 -0
- package/node_modules/table/node_modules/ajv/LICENSE +22 -0
- package/node_modules/table/node_modules/ajv/README.md +192 -0
- package/node_modules/table/node_modules/ajv/dist/2019.d.ts +17 -0
- package/node_modules/table/node_modules/ajv/dist/2019.js +55 -0
- package/node_modules/table/node_modules/ajv/dist/2019.js.map +1 -0
- package/node_modules/table/node_modules/ajv/dist/2020.d.ts +17 -0
- package/node_modules/table/node_modules/ajv/dist/2020.js +49 -0
- package/node_modules/table/node_modules/ajv/dist/2020.js.map +1 -0
- package/node_modules/table/node_modules/ajv/dist/ajv.d.ts +16 -0
- package/node_modules/table/node_modules/ajv/dist/ajv.js +44 -0
- package/node_modules/table/node_modules/ajv/dist/ajv.js.map +1 -0
- package/node_modules/table/node_modules/ajv/dist/compile/codegen/code.d.ts +39 -0
- package/node_modules/table/node_modules/ajv/dist/compile/codegen/code.js +147 -0
- package/node_modules/table/node_modules/ajv/dist/compile/codegen/code.js.map +1 -0
- package/node_modules/table/node_modules/ajv/dist/compile/codegen/index.d.ts +79 -0
- package/node_modules/table/node_modules/ajv/dist/compile/codegen/index.js +697 -0
- package/node_modules/table/node_modules/ajv/dist/compile/codegen/index.js.map +1 -0
- package/node_modules/table/node_modules/ajv/dist/compile/codegen/scope.d.ts +79 -0
- package/node_modules/table/node_modules/ajv/dist/compile/codegen/scope.js +143 -0
- package/node_modules/table/node_modules/ajv/dist/compile/codegen/scope.js.map +1 -0
- package/node_modules/table/node_modules/ajv/dist/compile/errors.d.ts +13 -0
- package/node_modules/table/node_modules/ajv/dist/compile/errors.js +123 -0
- package/node_modules/table/node_modules/ajv/dist/compile/errors.js.map +1 -0
- package/node_modules/table/node_modules/ajv/dist/compile/index.d.ts +80 -0
- package/node_modules/table/node_modules/ajv/dist/compile/index.js +243 -0
- package/node_modules/table/node_modules/ajv/dist/compile/index.js.map +1 -0
- package/node_modules/table/node_modules/ajv/dist/compile/jtd/parse.d.ts +4 -0
- package/node_modules/table/node_modules/ajv/dist/compile/jtd/parse.js +350 -0
- package/node_modules/table/node_modules/ajv/dist/compile/jtd/parse.js.map +1 -0
- package/node_modules/table/node_modules/ajv/dist/compile/jtd/serialize.d.ts +4 -0
- package/node_modules/table/node_modules/ajv/dist/compile/jtd/serialize.js +218 -0
- package/node_modules/table/node_modules/ajv/dist/compile/jtd/serialize.js.map +1 -0
- package/node_modules/table/node_modules/ajv/dist/compile/jtd/types.d.ts +6 -0
- package/node_modules/table/node_modules/ajv/dist/compile/jtd/types.js +14 -0
- package/node_modules/table/node_modules/ajv/dist/compile/jtd/types.js.map +1 -0
- package/node_modules/table/node_modules/ajv/dist/compile/names.d.ts +20 -0
- package/node_modules/table/node_modules/ajv/dist/compile/names.js +28 -0
- package/node_modules/table/node_modules/ajv/dist/compile/names.js.map +1 -0
- package/node_modules/table/node_modules/ajv/dist/compile/ref_error.d.ts +5 -0
- package/node_modules/table/node_modules/ajv/dist/compile/ref_error.js +12 -0
- package/node_modules/table/node_modules/ajv/dist/compile/ref_error.js.map +1 -0
- package/node_modules/table/node_modules/ajv/dist/compile/resolve.d.ts +12 -0
- package/node_modules/table/node_modules/ajv/dist/compile/resolve.js +153 -0
- package/node_modules/table/node_modules/ajv/dist/compile/resolve.js.map +1 -0
- package/node_modules/table/node_modules/ajv/dist/compile/rules.d.ts +28 -0
- package/node_modules/table/node_modules/ajv/dist/compile/rules.js +26 -0
- package/node_modules/table/node_modules/ajv/dist/compile/rules.js.map +1 -0
- package/node_modules/table/node_modules/ajv/dist/compile/util.d.ts +40 -0
- package/node_modules/table/node_modules/ajv/dist/compile/util.js +178 -0
- package/node_modules/table/node_modules/ajv/dist/compile/util.js.map +1 -0
- package/node_modules/table/node_modules/ajv/dist/compile/validate/applicability.d.ts +6 -0
- package/node_modules/table/node_modules/ajv/dist/compile/validate/applicability.js +19 -0
- package/node_modules/table/node_modules/ajv/dist/compile/validate/applicability.js.map +1 -0
- package/node_modules/table/node_modules/ajv/dist/compile/validate/boolSchema.d.ts +4 -0
- package/node_modules/table/node_modules/ajv/dist/compile/validate/boolSchema.js +50 -0
- package/node_modules/table/node_modules/ajv/dist/compile/validate/boolSchema.js.map +1 -0
- package/node_modules/table/node_modules/ajv/dist/compile/validate/dataType.d.ts +17 -0
- package/node_modules/table/node_modules/ajv/dist/compile/validate/dataType.js +202 -0
- package/node_modules/table/node_modules/ajv/dist/compile/validate/dataType.js.map +1 -0
- package/node_modules/table/node_modules/ajv/dist/compile/validate/defaults.d.ts +2 -0
- package/node_modules/table/node_modules/ajv/dist/compile/validate/defaults.js +35 -0
- package/node_modules/table/node_modules/ajv/dist/compile/validate/defaults.js.map +1 -0
- package/node_modules/table/node_modules/ajv/dist/compile/validate/index.d.ts +42 -0
- package/node_modules/table/node_modules/ajv/dist/compile/validate/index.js +510 -0
- package/node_modules/table/node_modules/ajv/dist/compile/validate/index.js.map +1 -0
- package/node_modules/table/node_modules/ajv/dist/compile/validate/keyword.d.ts +8 -0
- package/node_modules/table/node_modules/ajv/dist/compile/validate/keyword.js +124 -0
- package/node_modules/table/node_modules/ajv/dist/compile/validate/keyword.js.map +1 -0
- package/node_modules/table/node_modules/ajv/dist/compile/validate/subschema.d.ts +47 -0
- package/node_modules/table/node_modules/ajv/dist/compile/validate/subschema.js +81 -0
- package/node_modules/table/node_modules/ajv/dist/compile/validate/subschema.js.map +1 -0
- package/node_modules/table/node_modules/ajv/dist/core.d.ts +171 -0
- package/node_modules/table/node_modules/ajv/dist/core.js +614 -0
- package/node_modules/table/node_modules/ajv/dist/core.js.map +1 -0
- package/node_modules/table/node_modules/ajv/dist/jtd.d.ts +45 -0
- package/node_modules/table/node_modules/ajv/dist/jtd.js +66 -0
- package/node_modules/table/node_modules/ajv/dist/jtd.js.map +1 -0
- package/node_modules/table/node_modules/ajv/dist/refs/data.json +13 -0
- package/node_modules/table/node_modules/ajv/dist/refs/json-schema-2019-09/index.d.ts +2 -0
- package/node_modules/table/node_modules/ajv/dist/refs/json-schema-2019-09/index.js +28 -0
- package/node_modules/table/node_modules/ajv/dist/refs/json-schema-2019-09/index.js.map +1 -0
- package/node_modules/table/node_modules/ajv/dist/refs/json-schema-2019-09/meta/applicator.json +53 -0
- package/node_modules/table/node_modules/ajv/dist/refs/json-schema-2019-09/meta/content.json +17 -0
- package/node_modules/table/node_modules/ajv/dist/refs/json-schema-2019-09/meta/core.json +57 -0
- package/node_modules/table/node_modules/ajv/dist/refs/json-schema-2019-09/meta/format.json +14 -0
- package/node_modules/table/node_modules/ajv/dist/refs/json-schema-2019-09/meta/meta-data.json +37 -0
- package/node_modules/table/node_modules/ajv/dist/refs/json-schema-2019-09/meta/validation.json +90 -0
- package/node_modules/table/node_modules/ajv/dist/refs/json-schema-2019-09/schema.json +39 -0
- package/node_modules/table/node_modules/ajv/dist/refs/json-schema-2020-12/index.d.ts +2 -0
- package/node_modules/table/node_modules/ajv/dist/refs/json-schema-2020-12/index.js +30 -0
- package/node_modules/table/node_modules/ajv/dist/refs/json-schema-2020-12/index.js.map +1 -0
- package/node_modules/table/node_modules/ajv/dist/refs/json-schema-2020-12/meta/applicator.json +48 -0
- package/node_modules/table/node_modules/ajv/dist/refs/json-schema-2020-12/meta/content.json +17 -0
- package/node_modules/table/node_modules/ajv/dist/refs/json-schema-2020-12/meta/core.json +51 -0
- package/node_modules/table/node_modules/ajv/dist/refs/json-schema-2020-12/meta/format-annotation.json +14 -0
- package/node_modules/table/node_modules/ajv/dist/refs/json-schema-2020-12/meta/meta-data.json +37 -0
- package/node_modules/table/node_modules/ajv/dist/refs/json-schema-2020-12/meta/unevaluated.json +15 -0
- package/node_modules/table/node_modules/ajv/dist/refs/json-schema-2020-12/meta/validation.json +90 -0
- package/node_modules/table/node_modules/ajv/dist/refs/json-schema-2020-12/schema.json +55 -0
- package/node_modules/table/node_modules/ajv/dist/refs/json-schema-draft-06.json +137 -0
- package/node_modules/table/node_modules/ajv/dist/refs/json-schema-draft-07.json +151 -0
- package/node_modules/table/node_modules/ajv/dist/refs/json-schema-secure.json +88 -0
- package/node_modules/table/node_modules/ajv/dist/refs/jtd-schema.d.ts +3 -0
- package/node_modules/table/node_modules/ajv/dist/refs/jtd-schema.js +118 -0
- package/node_modules/table/node_modules/ajv/dist/refs/jtd-schema.js.map +1 -0
- package/node_modules/table/node_modules/ajv/dist/runtime/equal.d.ts +6 -0
- package/node_modules/table/node_modules/ajv/dist/runtime/equal.js +7 -0
- package/node_modules/table/node_modules/ajv/dist/runtime/equal.js.map +1 -0
- package/node_modules/table/node_modules/ajv/dist/runtime/parseJson.d.ts +18 -0
- package/node_modules/table/node_modules/ajv/dist/runtime/parseJson.js +184 -0
- package/node_modules/table/node_modules/ajv/dist/runtime/parseJson.js.map +1 -0
- package/node_modules/table/node_modules/ajv/dist/runtime/quote.d.ts +5 -0
- package/node_modules/table/node_modules/ajv/dist/runtime/quote.js +30 -0
- package/node_modules/table/node_modules/ajv/dist/runtime/quote.js.map +1 -0
- package/node_modules/table/node_modules/ajv/dist/runtime/re2.d.ts +6 -0
- package/node_modules/table/node_modules/ajv/dist/runtime/re2.js +6 -0
- package/node_modules/table/node_modules/ajv/dist/runtime/re2.js.map +1 -0
- package/node_modules/table/node_modules/ajv/dist/runtime/timestamp.d.ts +5 -0
- package/node_modules/table/node_modules/ajv/dist/runtime/timestamp.js +42 -0
- package/node_modules/table/node_modules/ajv/dist/runtime/timestamp.js.map +1 -0
- package/node_modules/table/node_modules/ajv/dist/runtime/ucs2length.d.ts +5 -0
- package/node_modules/table/node_modules/ajv/dist/runtime/ucs2length.js +24 -0
- package/node_modules/table/node_modules/ajv/dist/runtime/ucs2length.js.map +1 -0
- package/node_modules/table/node_modules/ajv/dist/runtime/validation_error.d.ts +7 -0
- package/node_modules/table/node_modules/ajv/dist/runtime/validation_error.js +11 -0
- package/node_modules/table/node_modules/ajv/dist/runtime/validation_error.js.map +1 -0
- package/node_modules/table/node_modules/ajv/dist/standalone/index.d.ts +6 -0
- package/node_modules/table/node_modules/ajv/dist/standalone/index.js +83 -0
- package/node_modules/table/node_modules/ajv/dist/standalone/index.js.map +1 -0
- package/node_modules/table/node_modules/ajv/dist/standalone/instance.d.ts +12 -0
- package/node_modules/table/node_modules/ajv/dist/standalone/instance.js +35 -0
- package/node_modules/table/node_modules/ajv/dist/standalone/instance.js.map +1 -0
- package/node_modules/table/node_modules/ajv/dist/types/index.d.ts +177 -0
- package/node_modules/table/node_modules/ajv/dist/types/index.js +3 -0
- package/node_modules/table/node_modules/ajv/dist/types/index.js.map +1 -0
- package/node_modules/table/node_modules/ajv/dist/types/json-schema.d.ts +124 -0
- package/node_modules/table/node_modules/ajv/dist/types/json-schema.js +3 -0
- package/node_modules/table/node_modules/ajv/dist/types/json-schema.js.map +1 -0
- package/node_modules/table/node_modules/ajv/dist/types/jtd-schema.d.ts +168 -0
- package/node_modules/table/node_modules/ajv/dist/types/jtd-schema.js +3 -0
- package/node_modules/table/node_modules/ajv/dist/types/jtd-schema.js.map +1 -0
- package/node_modules/table/node_modules/ajv/dist/vocabularies/applicator/additionalItems.d.ts +8 -0
- package/node_modules/table/node_modules/ajv/dist/vocabularies/applicator/additionalItems.js +49 -0
- package/node_modules/table/node_modules/ajv/dist/vocabularies/applicator/additionalItems.js.map +1 -0
- package/node_modules/table/node_modules/ajv/dist/vocabularies/applicator/additionalProperties.d.ts +6 -0
- package/node_modules/table/node_modules/ajv/dist/vocabularies/applicator/additionalProperties.js +106 -0
- package/node_modules/table/node_modules/ajv/dist/vocabularies/applicator/additionalProperties.js.map +1 -0
- package/node_modules/table/node_modules/ajv/dist/vocabularies/applicator/allOf.d.ts +3 -0
- package/node_modules/table/node_modules/ajv/dist/vocabularies/applicator/allOf.js +23 -0
- package/node_modules/table/node_modules/ajv/dist/vocabularies/applicator/allOf.js.map +1 -0
- package/node_modules/table/node_modules/ajv/dist/vocabularies/applicator/anyOf.d.ts +4 -0
- package/node_modules/table/node_modules/ajv/dist/vocabularies/applicator/anyOf.js +12 -0
- package/node_modules/table/node_modules/ajv/dist/vocabularies/applicator/anyOf.js.map +1 -0
- package/node_modules/table/node_modules/ajv/dist/vocabularies/applicator/contains.d.ts +7 -0
- package/node_modules/table/node_modules/ajv/dist/vocabularies/applicator/contains.js +95 -0
- package/node_modules/table/node_modules/ajv/dist/vocabularies/applicator/contains.js.map +1 -0
- package/node_modules/table/node_modules/ajv/dist/vocabularies/applicator/dependencies.d.ts +21 -0
- package/node_modules/table/node_modules/ajv/dist/vocabularies/applicator/dependencies.js +85 -0
- package/node_modules/table/node_modules/ajv/dist/vocabularies/applicator/dependencies.js.map +1 -0
- package/node_modules/table/node_modules/ajv/dist/vocabularies/applicator/dependentSchemas.d.ts +3 -0
- package/node_modules/table/node_modules/ajv/dist/vocabularies/applicator/dependentSchemas.js +11 -0
- package/node_modules/table/node_modules/ajv/dist/vocabularies/applicator/dependentSchemas.js.map +1 -0
- package/node_modules/table/node_modules/ajv/dist/vocabularies/applicator/if.d.ts +6 -0
- package/node_modules/table/node_modules/ajv/dist/vocabularies/applicator/if.js +66 -0
- package/node_modules/table/node_modules/ajv/dist/vocabularies/applicator/if.js.map +1 -0
- package/node_modules/table/node_modules/ajv/dist/vocabularies/applicator/index.d.ts +13 -0
- package/node_modules/table/node_modules/ajv/dist/vocabularies/applicator/index.js +44 -0
- package/node_modules/table/node_modules/ajv/dist/vocabularies/applicator/index.js.map +1 -0
- package/node_modules/table/node_modules/ajv/dist/vocabularies/applicator/items.d.ts +5 -0
- package/node_modules/table/node_modules/ajv/dist/vocabularies/applicator/items.js +52 -0
- package/node_modules/table/node_modules/ajv/dist/vocabularies/applicator/items.js.map +1 -0
- package/node_modules/table/node_modules/ajv/dist/vocabularies/applicator/items2020.d.ts +6 -0
- package/node_modules/table/node_modules/ajv/dist/vocabularies/applicator/items2020.js +30 -0
- package/node_modules/table/node_modules/ajv/dist/vocabularies/applicator/items2020.js.map +1 -0
- package/node_modules/table/node_modules/ajv/dist/vocabularies/applicator/not.d.ts +4 -0
- package/node_modules/table/node_modules/ajv/dist/vocabularies/applicator/not.js +26 -0
- package/node_modules/table/node_modules/ajv/dist/vocabularies/applicator/not.js.map +1 -0
- package/node_modules/table/node_modules/ajv/dist/vocabularies/applicator/oneOf.d.ts +6 -0
- package/node_modules/table/node_modules/ajv/dist/vocabularies/applicator/oneOf.js +60 -0
- package/node_modules/table/node_modules/ajv/dist/vocabularies/applicator/oneOf.js.map +1 -0
- package/node_modules/table/node_modules/ajv/dist/vocabularies/applicator/patternProperties.d.ts +3 -0
- package/node_modules/table/node_modules/ajv/dist/vocabularies/applicator/patternProperties.js +75 -0
- package/node_modules/table/node_modules/ajv/dist/vocabularies/applicator/patternProperties.js.map +1 -0
- package/node_modules/table/node_modules/ajv/dist/vocabularies/applicator/prefixItems.d.ts +3 -0
- package/node_modules/table/node_modules/ajv/dist/vocabularies/applicator/prefixItems.js +12 -0
- package/node_modules/table/node_modules/ajv/dist/vocabularies/applicator/prefixItems.js.map +1 -0
- package/node_modules/table/node_modules/ajv/dist/vocabularies/applicator/properties.d.ts +3 -0
- package/node_modules/table/node_modules/ajv/dist/vocabularies/applicator/properties.js +54 -0
- package/node_modules/table/node_modules/ajv/dist/vocabularies/applicator/properties.js.map +1 -0
- package/node_modules/table/node_modules/ajv/dist/vocabularies/applicator/propertyNames.d.ts +6 -0
- package/node_modules/table/node_modules/ajv/dist/vocabularies/applicator/propertyNames.js +38 -0
- package/node_modules/table/node_modules/ajv/dist/vocabularies/applicator/propertyNames.js.map +1 -0
- package/node_modules/table/node_modules/ajv/dist/vocabularies/applicator/thenElse.d.ts +3 -0
- package/node_modules/table/node_modules/ajv/dist/vocabularies/applicator/thenElse.js +13 -0
- package/node_modules/table/node_modules/ajv/dist/vocabularies/applicator/thenElse.js.map +1 -0
- package/node_modules/table/node_modules/ajv/dist/vocabularies/code.d.ts +17 -0
- package/node_modules/table/node_modules/ajv/dist/vocabularies/code.js +131 -0
- package/node_modules/table/node_modules/ajv/dist/vocabularies/code.js.map +1 -0
- package/node_modules/table/node_modules/ajv/dist/vocabularies/core/id.d.ts +3 -0
- package/node_modules/table/node_modules/ajv/dist/vocabularies/core/id.js +10 -0
- package/node_modules/table/node_modules/ajv/dist/vocabularies/core/id.js.map +1 -0
- package/node_modules/table/node_modules/ajv/dist/vocabularies/core/index.d.ts +3 -0
- package/node_modules/table/node_modules/ajv/dist/vocabularies/core/index.js +16 -0
- package/node_modules/table/node_modules/ajv/dist/vocabularies/core/index.js.map +1 -0
- package/node_modules/table/node_modules/ajv/dist/vocabularies/core/ref.d.ts +8 -0
- package/node_modules/table/node_modules/ajv/dist/vocabularies/core/ref.js +122 -0
- package/node_modules/table/node_modules/ajv/dist/vocabularies/core/ref.js.map +1 -0
- package/node_modules/table/node_modules/ajv/dist/vocabularies/discriminator/index.d.ts +5 -0
- package/node_modules/table/node_modules/ajv/dist/vocabularies/discriminator/index.js +93 -0
- package/node_modules/table/node_modules/ajv/dist/vocabularies/discriminator/index.js.map +1 -0
- package/node_modules/table/node_modules/ajv/dist/vocabularies/discriminator/types.d.ts +10 -0
- package/node_modules/table/node_modules/ajv/dist/vocabularies/discriminator/types.js +9 -0
- package/node_modules/table/node_modules/ajv/dist/vocabularies/discriminator/types.js.map +1 -0
- package/node_modules/table/node_modules/ajv/dist/vocabularies/draft2020.d.ts +3 -0
- package/node_modules/table/node_modules/ajv/dist/vocabularies/draft2020.js +23 -0
- package/node_modules/table/node_modules/ajv/dist/vocabularies/draft2020.js.map +1 -0
- package/node_modules/table/node_modules/ajv/dist/vocabularies/draft7.d.ts +3 -0
- package/node_modules/table/node_modules/ajv/dist/vocabularies/draft7.js +17 -0
- package/node_modules/table/node_modules/ajv/dist/vocabularies/draft7.js.map +1 -0
- package/node_modules/table/node_modules/ajv/dist/vocabularies/dynamic/dynamicAnchor.d.ts +5 -0
- package/node_modules/table/node_modules/ajv/dist/vocabularies/dynamic/dynamicAnchor.js +30 -0
- package/node_modules/table/node_modules/ajv/dist/vocabularies/dynamic/dynamicAnchor.js.map +1 -0
- package/node_modules/table/node_modules/ajv/dist/vocabularies/dynamic/dynamicRef.d.ts +5 -0
- package/node_modules/table/node_modules/ajv/dist/vocabularies/dynamic/dynamicRef.js +51 -0
- package/node_modules/table/node_modules/ajv/dist/vocabularies/dynamic/dynamicRef.js.map +1 -0
- package/node_modules/table/node_modules/ajv/dist/vocabularies/dynamic/index.d.ts +3 -0
- package/node_modules/table/node_modules/ajv/dist/vocabularies/dynamic/index.js +9 -0
- package/node_modules/table/node_modules/ajv/dist/vocabularies/dynamic/index.js.map +1 -0
- package/node_modules/table/node_modules/ajv/dist/vocabularies/dynamic/recursiveAnchor.d.ts +3 -0
- package/node_modules/table/node_modules/ajv/dist/vocabularies/dynamic/recursiveAnchor.js +16 -0
- package/node_modules/table/node_modules/ajv/dist/vocabularies/dynamic/recursiveAnchor.js.map +1 -0
- package/node_modules/table/node_modules/ajv/dist/vocabularies/dynamic/recursiveRef.d.ts +3 -0
- package/node_modules/table/node_modules/ajv/dist/vocabularies/dynamic/recursiveRef.js +10 -0
- package/node_modules/table/node_modules/ajv/dist/vocabularies/dynamic/recursiveRef.js.map +1 -0
- package/node_modules/table/node_modules/ajv/dist/vocabularies/errors.d.ts +9 -0
- package/node_modules/table/node_modules/ajv/dist/vocabularies/errors.js +3 -0
- package/node_modules/table/node_modules/ajv/dist/vocabularies/errors.js.map +1 -0
- package/node_modules/table/node_modules/ajv/dist/vocabularies/format/format.d.ts +8 -0
- package/node_modules/table/node_modules/ajv/dist/vocabularies/format/format.js +92 -0
- package/node_modules/table/node_modules/ajv/dist/vocabularies/format/format.js.map +1 -0
- package/node_modules/table/node_modules/ajv/dist/vocabularies/format/index.d.ts +3 -0
- package/node_modules/table/node_modules/ajv/dist/vocabularies/format/index.js +6 -0
- package/node_modules/table/node_modules/ajv/dist/vocabularies/format/index.js.map +1 -0
- package/node_modules/table/node_modules/ajv/dist/vocabularies/jtd/discriminator.d.ts +6 -0
- package/node_modules/table/node_modules/ajv/dist/vocabularies/jtd/discriminator.js +71 -0
- package/node_modules/table/node_modules/ajv/dist/vocabularies/jtd/discriminator.js.map +1 -0
- package/node_modules/table/node_modules/ajv/dist/vocabularies/jtd/elements.d.ts +5 -0
- package/node_modules/table/node_modules/ajv/dist/vocabularies/jtd/elements.js +24 -0
- package/node_modules/table/node_modules/ajv/dist/vocabularies/jtd/elements.js.map +1 -0
- package/node_modules/table/node_modules/ajv/dist/vocabularies/jtd/enum.d.ts +6 -0
- package/node_modules/table/node_modules/ajv/dist/vocabularies/jtd/enum.js +43 -0
- package/node_modules/table/node_modules/ajv/dist/vocabularies/jtd/enum.js.map +1 -0
- package/node_modules/table/node_modules/ajv/dist/vocabularies/jtd/error.d.ts +9 -0
- package/node_modules/table/node_modules/ajv/dist/vocabularies/jtd/error.js +20 -0
- package/node_modules/table/node_modules/ajv/dist/vocabularies/jtd/error.js.map +1 -0
- package/node_modules/table/node_modules/ajv/dist/vocabularies/jtd/index.d.ts +10 -0
- package/node_modules/table/node_modules/ajv/dist/vocabularies/jtd/index.js +29 -0
- package/node_modules/table/node_modules/ajv/dist/vocabularies/jtd/index.js.map +1 -0
- package/node_modules/table/node_modules/ajv/dist/vocabularies/jtd/metadata.d.ts +5 -0
- package/node_modules/table/node_modules/ajv/dist/vocabularies/jtd/metadata.js +25 -0
- package/node_modules/table/node_modules/ajv/dist/vocabularies/jtd/metadata.js.map +1 -0
- package/node_modules/table/node_modules/ajv/dist/vocabularies/jtd/nullable.d.ts +4 -0
- package/node_modules/table/node_modules/ajv/dist/vocabularies/jtd/nullable.js +22 -0
- package/node_modules/table/node_modules/ajv/dist/vocabularies/jtd/nullable.js.map +1 -0
- package/node_modules/table/node_modules/ajv/dist/vocabularies/jtd/optionalProperties.d.ts +3 -0
- package/node_modules/table/node_modules/ajv/dist/vocabularies/jtd/optionalProperties.js +15 -0
- package/node_modules/table/node_modules/ajv/dist/vocabularies/jtd/optionalProperties.js.map +1 -0
- package/node_modules/table/node_modules/ajv/dist/vocabularies/jtd/properties.d.ts +22 -0
- package/node_modules/table/node_modules/ajv/dist/vocabularies/jtd/properties.js +146 -0
- package/node_modules/table/node_modules/ajv/dist/vocabularies/jtd/properties.js.map +1 -0
- package/node_modules/table/node_modules/ajv/dist/vocabularies/jtd/ref.d.ts +4 -0
- package/node_modules/table/node_modules/ajv/dist/vocabularies/jtd/ref.js +66 -0
- package/node_modules/table/node_modules/ajv/dist/vocabularies/jtd/ref.js.map +1 -0
- package/node_modules/table/node_modules/ajv/dist/vocabularies/jtd/type.d.ts +10 -0
- package/node_modules/table/node_modules/ajv/dist/vocabularies/jtd/type.js +69 -0
- package/node_modules/table/node_modules/ajv/dist/vocabularies/jtd/type.js.map +1 -0
- package/node_modules/table/node_modules/ajv/dist/vocabularies/jtd/union.d.ts +3 -0
- package/node_modules/table/node_modules/ajv/dist/vocabularies/jtd/union.js +12 -0
- package/node_modules/table/node_modules/ajv/dist/vocabularies/jtd/union.js.map +1 -0
- package/node_modules/table/node_modules/ajv/dist/vocabularies/jtd/values.d.ts +5 -0
- package/node_modules/table/node_modules/ajv/dist/vocabularies/jtd/values.js +48 -0
- package/node_modules/table/node_modules/ajv/dist/vocabularies/jtd/values.js.map +1 -0
- package/node_modules/table/node_modules/ajv/dist/vocabularies/metadata.d.ts +3 -0
- package/node_modules/table/node_modules/ajv/dist/vocabularies/metadata.js +18 -0
- package/node_modules/table/node_modules/ajv/dist/vocabularies/metadata.js.map +1 -0
- package/node_modules/table/node_modules/ajv/dist/vocabularies/next.d.ts +3 -0
- package/node_modules/table/node_modules/ajv/dist/vocabularies/next.js +8 -0
- package/node_modules/table/node_modules/ajv/dist/vocabularies/next.js.map +1 -0
- package/node_modules/table/node_modules/ajv/dist/vocabularies/unevaluated/index.d.ts +3 -0
- package/node_modules/table/node_modules/ajv/dist/vocabularies/unevaluated/index.js +7 -0
- package/node_modules/table/node_modules/ajv/dist/vocabularies/unevaluated/index.js.map +1 -0
- package/node_modules/table/node_modules/ajv/dist/vocabularies/unevaluated/unevaluatedItems.d.ts +6 -0
- package/node_modules/table/node_modules/ajv/dist/vocabularies/unevaluated/unevaluatedItems.js +40 -0
- package/node_modules/table/node_modules/ajv/dist/vocabularies/unevaluated/unevaluatedItems.js.map +1 -0
- package/node_modules/table/node_modules/ajv/dist/vocabularies/unevaluated/unevaluatedProperties.d.ts +6 -0
- package/node_modules/table/node_modules/ajv/dist/vocabularies/unevaluated/unevaluatedProperties.js +65 -0
- package/node_modules/table/node_modules/ajv/dist/vocabularies/unevaluated/unevaluatedProperties.js.map +1 -0
- package/node_modules/table/node_modules/ajv/dist/vocabularies/validation/const.d.ts +6 -0
- package/node_modules/table/node_modules/ajv/dist/vocabularies/validation/const.js +25 -0
- package/node_modules/table/node_modules/ajv/dist/vocabularies/validation/const.js.map +1 -0
- package/node_modules/table/node_modules/ajv/dist/vocabularies/validation/dependentRequired.d.ts +5 -0
- package/node_modules/table/node_modules/ajv/dist/vocabularies/validation/dependentRequired.js +12 -0
- package/node_modules/table/node_modules/ajv/dist/vocabularies/validation/dependentRequired.js.map +1 -0
- package/node_modules/table/node_modules/ajv/dist/vocabularies/validation/enum.d.ts +8 -0
- package/node_modules/table/node_modules/ajv/dist/vocabularies/validation/enum.js +47 -0
- package/node_modules/table/node_modules/ajv/dist/vocabularies/validation/enum.js.map +1 -0
- package/node_modules/table/node_modules/ajv/dist/vocabularies/validation/index.d.ts +16 -0
- package/node_modules/table/node_modules/ajv/dist/vocabularies/validation/index.js +33 -0
- package/node_modules/table/node_modules/ajv/dist/vocabularies/validation/index.js.map +1 -0
- package/node_modules/table/node_modules/ajv/dist/vocabularies/validation/limitContains.d.ts +3 -0
- package/node_modules/table/node_modules/ajv/dist/vocabularies/validation/limitContains.js +15 -0
- package/node_modules/table/node_modules/ajv/dist/vocabularies/validation/limitContains.js.map +1 -0
- package/node_modules/table/node_modules/ajv/dist/vocabularies/validation/limitItems.d.ts +3 -0
- package/node_modules/table/node_modules/ajv/dist/vocabularies/validation/limitItems.js +24 -0
- package/node_modules/table/node_modules/ajv/dist/vocabularies/validation/limitItems.js.map +1 -0
- package/node_modules/table/node_modules/ajv/dist/vocabularies/validation/limitLength.d.ts +3 -0
- package/node_modules/table/node_modules/ajv/dist/vocabularies/validation/limitLength.js +27 -0
- package/node_modules/table/node_modules/ajv/dist/vocabularies/validation/limitLength.js.map +1 -0
- package/node_modules/table/node_modules/ajv/dist/vocabularies/validation/limitNumber.d.ts +11 -0
- package/node_modules/table/node_modules/ajv/dist/vocabularies/validation/limitNumber.js +27 -0
- package/node_modules/table/node_modules/ajv/dist/vocabularies/validation/limitNumber.js.map +1 -0
- package/node_modules/table/node_modules/ajv/dist/vocabularies/validation/limitProperties.d.ts +3 -0
- package/node_modules/table/node_modules/ajv/dist/vocabularies/validation/limitProperties.js +24 -0
- package/node_modules/table/node_modules/ajv/dist/vocabularies/validation/limitProperties.js.map +1 -0
- package/node_modules/table/node_modules/ajv/dist/vocabularies/validation/multipleOf.d.ts +8 -0
- package/node_modules/table/node_modules/ajv/dist/vocabularies/validation/multipleOf.js +26 -0
- package/node_modules/table/node_modules/ajv/dist/vocabularies/validation/multipleOf.js.map +1 -0
- package/node_modules/table/node_modules/ajv/dist/vocabularies/validation/pattern.d.ts +8 -0
- package/node_modules/table/node_modules/ajv/dist/vocabularies/validation/pattern.js +24 -0
- package/node_modules/table/node_modules/ajv/dist/vocabularies/validation/pattern.js.map +1 -0
- package/node_modules/table/node_modules/ajv/dist/vocabularies/validation/required.d.ts +8 -0
- package/node_modules/table/node_modules/ajv/dist/vocabularies/validation/required.js +79 -0
- package/node_modules/table/node_modules/ajv/dist/vocabularies/validation/required.js.map +1 -0
- package/node_modules/table/node_modules/ajv/dist/vocabularies/validation/uniqueItems.d.ts +9 -0
- package/node_modules/table/node_modules/ajv/dist/vocabularies/validation/uniqueItems.js +64 -0
- package/node_modules/table/node_modules/ajv/dist/vocabularies/validation/uniqueItems.js.map +1 -0
- package/node_modules/table/node_modules/ajv/lib/2019.ts +78 -0
- package/node_modules/table/node_modules/ajv/lib/2020.ts +72 -0
- package/node_modules/table/node_modules/ajv/lib/ajv.ts +67 -0
- package/node_modules/table/node_modules/ajv/lib/compile/codegen/code.ts +160 -0
- package/node_modules/table/node_modules/ajv/lib/compile/codegen/index.ts +832 -0
- package/node_modules/table/node_modules/ajv/lib/compile/codegen/scope.ts +215 -0
- package/node_modules/table/node_modules/ajv/lib/compile/errors.ts +184 -0
- package/node_modules/table/node_modules/ajv/lib/compile/index.ts +324 -0
- package/node_modules/table/node_modules/ajv/lib/compile/jtd/parse.ts +411 -0
- package/node_modules/table/node_modules/ajv/lib/compile/jtd/serialize.ts +260 -0
- package/node_modules/table/node_modules/ajv/lib/compile/jtd/types.ts +16 -0
- package/node_modules/table/node_modules/ajv/lib/compile/names.ts +27 -0
- package/node_modules/table/node_modules/ajv/lib/compile/ref_error.ts +12 -0
- package/node_modules/table/node_modules/ajv/lib/compile/resolve.ts +146 -0
- package/node_modules/table/node_modules/ajv/lib/compile/rules.ts +50 -0
- package/node_modules/table/node_modules/ajv/lib/compile/util.ts +213 -0
- package/node_modules/table/node_modules/ajv/lib/compile/validate/applicability.ts +22 -0
- package/node_modules/table/node_modules/ajv/lib/compile/validate/boolSchema.ts +47 -0
- package/node_modules/table/node_modules/ajv/lib/compile/validate/dataType.ts +229 -0
- package/node_modules/table/node_modules/ajv/lib/compile/validate/defaults.ts +32 -0
- package/node_modules/table/node_modules/ajv/lib/compile/validate/index.ts +573 -0
- package/node_modules/table/node_modules/ajv/lib/compile/validate/keyword.ts +171 -0
- package/node_modules/table/node_modules/ajv/lib/compile/validate/subschema.ts +135 -0
- package/node_modules/table/node_modules/ajv/lib/core.ts +880 -0
- package/node_modules/table/node_modules/ajv/lib/jtd.ts +129 -0
- package/node_modules/table/node_modules/ajv/lib/refs/data.json +13 -0
- package/node_modules/table/node_modules/ajv/lib/refs/json-schema-2019-09/index.ts +28 -0
- package/node_modules/table/node_modules/ajv/lib/refs/json-schema-2019-09/meta/applicator.json +53 -0
- package/node_modules/table/node_modules/ajv/lib/refs/json-schema-2019-09/meta/content.json +17 -0
- package/node_modules/table/node_modules/ajv/lib/refs/json-schema-2019-09/meta/core.json +57 -0
- package/node_modules/table/node_modules/ajv/lib/refs/json-schema-2019-09/meta/format.json +14 -0
- package/node_modules/table/node_modules/ajv/lib/refs/json-schema-2019-09/meta/meta-data.json +37 -0
- package/node_modules/table/node_modules/ajv/lib/refs/json-schema-2019-09/meta/validation.json +90 -0
- package/node_modules/table/node_modules/ajv/lib/refs/json-schema-2019-09/schema.json +39 -0
- package/node_modules/table/node_modules/ajv/lib/refs/json-schema-2020-12/index.ts +30 -0
- package/node_modules/table/node_modules/ajv/lib/refs/json-schema-2020-12/meta/applicator.json +48 -0
- package/node_modules/table/node_modules/ajv/lib/refs/json-schema-2020-12/meta/content.json +17 -0
- package/node_modules/table/node_modules/ajv/lib/refs/json-schema-2020-12/meta/core.json +51 -0
- package/node_modules/table/node_modules/ajv/lib/refs/json-schema-2020-12/meta/format-annotation.json +14 -0
- package/node_modules/table/node_modules/ajv/lib/refs/json-schema-2020-12/meta/meta-data.json +37 -0
- package/node_modules/table/node_modules/ajv/lib/refs/json-schema-2020-12/meta/unevaluated.json +15 -0
- package/node_modules/table/node_modules/ajv/lib/refs/json-schema-2020-12/meta/validation.json +90 -0
- package/node_modules/table/node_modules/ajv/lib/refs/json-schema-2020-12/schema.json +55 -0
- package/node_modules/table/node_modules/ajv/lib/refs/json-schema-draft-06.json +137 -0
- package/node_modules/table/node_modules/ajv/lib/refs/json-schema-draft-07.json +151 -0
- package/node_modules/table/node_modules/ajv/lib/refs/json-schema-secure.json +88 -0
- package/node_modules/table/node_modules/ajv/lib/refs/jtd-schema.ts +130 -0
- package/node_modules/table/node_modules/ajv/lib/runtime/equal.ts +7 -0
- package/node_modules/table/node_modules/ajv/lib/runtime/parseJson.ts +176 -0
- package/node_modules/table/node_modules/ajv/lib/runtime/quote.ts +31 -0
- package/node_modules/table/node_modules/ajv/lib/runtime/re2.ts +6 -0
- package/node_modules/table/node_modules/ajv/lib/runtime/timestamp.ts +46 -0
- package/node_modules/table/node_modules/ajv/lib/runtime/ucs2length.ts +20 -0
- package/node_modules/table/node_modules/ajv/lib/runtime/validation_error.ts +13 -0
- package/node_modules/table/node_modules/ajv/lib/standalone/index.ts +93 -0
- package/node_modules/table/node_modules/ajv/lib/standalone/instance.ts +36 -0
- package/node_modules/table/node_modules/ajv/lib/types/index.ts +233 -0
- package/node_modules/table/node_modules/ajv/lib/types/json-schema.ts +189 -0
- package/node_modules/table/node_modules/ajv/lib/types/jtd-schema.ts +264 -0
- package/node_modules/table/node_modules/ajv/lib/vocabularies/applicator/additionalItems.ts +56 -0
- package/node_modules/table/node_modules/ajv/lib/vocabularies/applicator/additionalProperties.ts +118 -0
- package/node_modules/table/node_modules/ajv/lib/vocabularies/applicator/allOf.ts +22 -0
- package/node_modules/table/node_modules/ajv/lib/vocabularies/applicator/anyOf.ts +14 -0
- package/node_modules/table/node_modules/ajv/lib/vocabularies/applicator/contains.ts +109 -0
- package/node_modules/table/node_modules/ajv/lib/vocabularies/applicator/dependencies.ts +112 -0
- package/node_modules/table/node_modules/ajv/lib/vocabularies/applicator/dependentSchemas.ts +11 -0
- package/node_modules/table/node_modules/ajv/lib/vocabularies/applicator/if.ts +80 -0
- package/node_modules/table/node_modules/ajv/lib/vocabularies/applicator/index.ts +53 -0
- package/node_modules/table/node_modules/ajv/lib/vocabularies/applicator/items.ts +59 -0
- package/node_modules/table/node_modules/ajv/lib/vocabularies/applicator/items2020.ts +36 -0
- package/node_modules/table/node_modules/ajv/lib/vocabularies/applicator/not.ts +38 -0
- package/node_modules/table/node_modules/ajv/lib/vocabularies/applicator/oneOf.ts +82 -0
- package/node_modules/table/node_modules/ajv/lib/vocabularies/applicator/patternProperties.ts +91 -0
- package/node_modules/table/node_modules/ajv/lib/vocabularies/applicator/prefixItems.ts +12 -0
- package/node_modules/table/node_modules/ajv/lib/vocabularies/applicator/properties.ts +57 -0
- package/node_modules/table/node_modules/ajv/lib/vocabularies/applicator/propertyNames.ts +50 -0
- package/node_modules/table/node_modules/ajv/lib/vocabularies/applicator/thenElse.ts +13 -0
- package/node_modules/table/node_modules/ajv/lib/vocabularies/code.ts +168 -0
- package/node_modules/table/node_modules/ajv/lib/vocabularies/core/id.ts +10 -0
- package/node_modules/table/node_modules/ajv/lib/vocabularies/core/index.ts +16 -0
- package/node_modules/table/node_modules/ajv/lib/vocabularies/core/ref.ts +129 -0
- package/node_modules/table/node_modules/ajv/lib/vocabularies/discriminator/index.ts +102 -0
- package/node_modules/table/node_modules/ajv/lib/vocabularies/discriminator/types.ts +12 -0
- package/node_modules/table/node_modules/ajv/lib/vocabularies/draft2020.ts +23 -0
- package/node_modules/table/node_modules/ajv/lib/vocabularies/draft7.ts +17 -0
- package/node_modules/table/node_modules/ajv/lib/vocabularies/dynamic/dynamicAnchor.ts +31 -0
- package/node_modules/table/node_modules/ajv/lib/vocabularies/dynamic/dynamicRef.ts +51 -0
- package/node_modules/table/node_modules/ajv/lib/vocabularies/dynamic/index.ts +9 -0
- package/node_modules/table/node_modules/ajv/lib/vocabularies/dynamic/recursiveAnchor.ts +14 -0
- package/node_modules/table/node_modules/ajv/lib/vocabularies/dynamic/recursiveRef.ts +10 -0
- package/node_modules/table/node_modules/ajv/lib/vocabularies/errors.ts +18 -0
- package/node_modules/table/node_modules/ajv/lib/vocabularies/format/format.ts +120 -0
- package/node_modules/table/node_modules/ajv/lib/vocabularies/format/index.ts +6 -0
- package/node_modules/table/node_modules/ajv/lib/vocabularies/jtd/discriminator.ts +89 -0
- package/node_modules/table/node_modules/ajv/lib/vocabularies/jtd/elements.ts +32 -0
- package/node_modules/table/node_modules/ajv/lib/vocabularies/jtd/enum.ts +45 -0
- package/node_modules/table/node_modules/ajv/lib/vocabularies/jtd/error.ts +23 -0
- package/node_modules/table/node_modules/ajv/lib/vocabularies/jtd/index.ts +37 -0
- package/node_modules/table/node_modules/ajv/lib/vocabularies/jtd/metadata.ts +24 -0
- package/node_modules/table/node_modules/ajv/lib/vocabularies/jtd/nullable.ts +21 -0
- package/node_modules/table/node_modules/ajv/lib/vocabularies/jtd/optionalProperties.ts +15 -0
- package/node_modules/table/node_modules/ajv/lib/vocabularies/jtd/properties.ts +177 -0
- package/node_modules/table/node_modules/ajv/lib/vocabularies/jtd/ref.ts +74 -0
- package/node_modules/table/node_modules/ajv/lib/vocabularies/jtd/type.ts +75 -0
- package/node_modules/table/node_modules/ajv/lib/vocabularies/jtd/union.ts +12 -0
- package/node_modules/table/node_modules/ajv/lib/vocabularies/jtd/values.ts +55 -0
- package/node_modules/table/node_modules/ajv/lib/vocabularies/metadata.ts +17 -0
- package/node_modules/table/node_modules/ajv/lib/vocabularies/next.ts +8 -0
- package/node_modules/table/node_modules/ajv/lib/vocabularies/unevaluated/index.ts +7 -0
- package/node_modules/table/node_modules/ajv/lib/vocabularies/unevaluated/unevaluatedItems.ts +47 -0
- package/node_modules/table/node_modules/ajv/lib/vocabularies/unevaluated/unevaluatedProperties.ts +85 -0
- package/node_modules/table/node_modules/ajv/lib/vocabularies/validation/const.ts +28 -0
- package/node_modules/table/node_modules/ajv/lib/vocabularies/validation/dependentRequired.ts +23 -0
- package/node_modules/table/node_modules/ajv/lib/vocabularies/validation/enum.ts +52 -0
- package/node_modules/table/node_modules/ajv/lib/vocabularies/validation/index.ts +49 -0
- package/node_modules/table/node_modules/ajv/lib/vocabularies/validation/limitContains.ts +16 -0
- package/node_modules/table/node_modules/ajv/lib/vocabularies/validation/limitItems.ts +26 -0
- package/node_modules/table/node_modules/ajv/lib/vocabularies/validation/limitLength.ts +30 -0
- package/node_modules/table/node_modules/ajv/lib/vocabularies/validation/limitNumber.ts +42 -0
- package/node_modules/table/node_modules/ajv/lib/vocabularies/validation/limitProperties.ts +26 -0
- package/node_modules/table/node_modules/ajv/lib/vocabularies/validation/multipleOf.ts +34 -0
- package/node_modules/table/node_modules/ajv/lib/vocabularies/validation/pattern.ts +28 -0
- package/node_modules/table/node_modules/ajv/lib/vocabularies/validation/required.ts +98 -0
- package/node_modules/table/node_modules/ajv/lib/vocabularies/validation/uniqueItems.ts +79 -0
- package/node_modules/table/node_modules/ajv/package.json +124 -0
- package/node_modules/table/node_modules/json-schema-traverse/.eslintrc.yml +27 -0
- package/node_modules/table/node_modules/json-schema-traverse/.github/FUNDING.yml +2 -0
- package/node_modules/table/node_modules/json-schema-traverse/.github/workflows/build.yml +28 -0
- package/node_modules/table/node_modules/json-schema-traverse/.github/workflows/publish.yml +27 -0
- package/node_modules/table/node_modules/json-schema-traverse/LICENSE +21 -0
- package/node_modules/table/node_modules/json-schema-traverse/README.md +95 -0
- package/node_modules/table/node_modules/json-schema-traverse/index.d.ts +40 -0
- package/node_modules/table/node_modules/json-schema-traverse/index.js +93 -0
- package/node_modules/table/node_modules/json-schema-traverse/package.json +43 -0
- package/node_modules/table/node_modules/json-schema-traverse/spec/.eslintrc.yml +6 -0
- package/node_modules/table/node_modules/json-schema-traverse/spec/fixtures/schema.js +125 -0
- package/node_modules/table/node_modules/json-schema-traverse/spec/index.spec.js +171 -0
- package/node_modules/table/package.json +78 -0
- package/node_modules/universalify/LICENSE +20 -0
- package/node_modules/universalify/README.md +76 -0
- package/node_modules/universalify/index.js +24 -0
- package/node_modules/universalify/package.json +34 -0
- package/node_modules/uri-js/LICENSE +11 -0
- package/node_modules/uri-js/README.md +203 -0
- package/node_modules/uri-js/dist/es5/uri.all.d.ts +59 -0
- package/node_modules/uri-js/dist/es5/uri.all.js +1443 -0
- package/node_modules/uri-js/dist/es5/uri.all.js.map +1 -0
- package/node_modules/uri-js/dist/es5/uri.all.min.d.ts +59 -0
- package/node_modules/uri-js/dist/es5/uri.all.min.js +3 -0
- package/node_modules/uri-js/dist/es5/uri.all.min.js.map +1 -0
- package/node_modules/uri-js/dist/esnext/index.d.ts +1 -0
- package/node_modules/uri-js/dist/esnext/index.js +17 -0
- package/node_modules/uri-js/dist/esnext/index.js.map +1 -0
- package/node_modules/uri-js/dist/esnext/regexps-iri.d.ts +3 -0
- package/node_modules/uri-js/dist/esnext/regexps-iri.js +3 -0
- package/node_modules/uri-js/dist/esnext/regexps-iri.js.map +1 -0
- package/node_modules/uri-js/dist/esnext/regexps-uri.d.ts +4 -0
- package/node_modules/uri-js/dist/esnext/regexps-uri.js +42 -0
- package/node_modules/uri-js/dist/esnext/regexps-uri.js.map +1 -0
- package/node_modules/uri-js/dist/esnext/schemes/http.d.ts +3 -0
- package/node_modules/uri-js/dist/esnext/schemes/http.js +28 -0
- package/node_modules/uri-js/dist/esnext/schemes/http.js.map +1 -0
- package/node_modules/uri-js/dist/esnext/schemes/https.d.ts +3 -0
- package/node_modules/uri-js/dist/esnext/schemes/https.js +9 -0
- package/node_modules/uri-js/dist/esnext/schemes/https.js.map +1 -0
- package/node_modules/uri-js/dist/esnext/schemes/mailto.d.ts +12 -0
- package/node_modules/uri-js/dist/esnext/schemes/mailto.js +148 -0
- package/node_modules/uri-js/dist/esnext/schemes/mailto.js.map +1 -0
- package/node_modules/uri-js/dist/esnext/schemes/urn-uuid.d.ts +7 -0
- package/node_modules/uri-js/dist/esnext/schemes/urn-uuid.js +23 -0
- package/node_modules/uri-js/dist/esnext/schemes/urn-uuid.js.map +1 -0
- package/node_modules/uri-js/dist/esnext/schemes/urn.d.ts +10 -0
- package/node_modules/uri-js/dist/esnext/schemes/urn.js +49 -0
- package/node_modules/uri-js/dist/esnext/schemes/urn.js.map +1 -0
- package/node_modules/uri-js/dist/esnext/schemes/ws.d.ts +7 -0
- package/node_modules/uri-js/dist/esnext/schemes/ws.js +41 -0
- package/node_modules/uri-js/dist/esnext/schemes/ws.js.map +1 -0
- package/node_modules/uri-js/dist/esnext/schemes/wss.d.ts +3 -0
- package/node_modules/uri-js/dist/esnext/schemes/wss.js +9 -0
- package/node_modules/uri-js/dist/esnext/schemes/wss.js.map +1 -0
- package/node_modules/uri-js/dist/esnext/uri.d.ts +59 -0
- package/node_modules/uri-js/dist/esnext/uri.js +480 -0
- package/node_modules/uri-js/dist/esnext/uri.js.map +1 -0
- package/node_modules/uri-js/dist/esnext/util.d.ts +6 -0
- package/node_modules/uri-js/dist/esnext/util.js +36 -0
- package/node_modules/uri-js/dist/esnext/util.js.map +1 -0
- package/node_modules/uri-js/package.json +77 -0
- package/node_modules/uri-js/yarn.lock +2558 -0
- package/package.json +11 -19
|
@@ -0,0 +1,414 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.formatSecurityChanges = exports.formatDifferences = void 0;
|
|
4
|
+
const util_1 = require("util");
|
|
5
|
+
const colors = require("colors/safe");
|
|
6
|
+
const diff_template_1 = require("./diff-template");
|
|
7
|
+
const util_2 = require("./diff/util");
|
|
8
|
+
const format_table_1 = require("./format-table");
|
|
9
|
+
// from cx-api
|
|
10
|
+
const PATH_METADATA_KEY = 'aws:cdk:path';
|
|
11
|
+
/* eslint-disable @typescript-eslint/no-require-imports */
|
|
12
|
+
const { structuredPatch } = require('diff');
|
|
13
|
+
/**
|
|
14
|
+
* Renders template differences to the process' console.
|
|
15
|
+
*
|
|
16
|
+
* @param stream The IO stream where to output the rendered diff.
|
|
17
|
+
* @param templateDiff TemplateDiff to be rendered to the console.
|
|
18
|
+
* @param logicalToPathMap A map from logical ID to construct path. Useful in
|
|
19
|
+
* case there is no aws:cdk:path metadata in the template.
|
|
20
|
+
* @param context the number of context lines to use in arbitrary JSON diff (defaults to 3).
|
|
21
|
+
*/
|
|
22
|
+
function formatDifferences(stream, templateDiff, logicalToPathMap = {}, context = 3) {
|
|
23
|
+
const formatter = new Formatter(stream, logicalToPathMap, templateDiff, context);
|
|
24
|
+
if (templateDiff.awsTemplateFormatVersion || templateDiff.transform || templateDiff.description) {
|
|
25
|
+
formatter.printSectionHeader('Template');
|
|
26
|
+
formatter.formatDifference('AWSTemplateFormatVersion', 'AWSTemplateFormatVersion', templateDiff.awsTemplateFormatVersion);
|
|
27
|
+
formatter.formatDifference('Transform', 'Transform', templateDiff.transform);
|
|
28
|
+
formatter.formatDifference('Description', 'Description', templateDiff.description);
|
|
29
|
+
formatter.printSectionFooter();
|
|
30
|
+
}
|
|
31
|
+
formatSecurityChangesWithBanner(formatter, templateDiff);
|
|
32
|
+
formatter.formatSection('Parameters', 'Parameter', templateDiff.parameters);
|
|
33
|
+
formatter.formatSection('Metadata', 'Metadata', templateDiff.metadata);
|
|
34
|
+
formatter.formatSection('Mappings', 'Mapping', templateDiff.mappings);
|
|
35
|
+
formatter.formatSection('Conditions', 'Condition', templateDiff.conditions);
|
|
36
|
+
formatter.formatSection('Resources', 'Resource', templateDiff.resources, formatter.formatResourceDifference.bind(formatter));
|
|
37
|
+
formatter.formatSection('Outputs', 'Output', templateDiff.outputs);
|
|
38
|
+
formatter.formatSection('Other Changes', 'Unknown', templateDiff.unknown);
|
|
39
|
+
}
|
|
40
|
+
exports.formatDifferences = formatDifferences;
|
|
41
|
+
/**
|
|
42
|
+
* Renders a diff of security changes to the given stream
|
|
43
|
+
*/
|
|
44
|
+
function formatSecurityChanges(stream, templateDiff, logicalToPathMap = {}, context) {
|
|
45
|
+
const formatter = new Formatter(stream, logicalToPathMap, templateDiff, context);
|
|
46
|
+
formatSecurityChangesWithBanner(formatter, templateDiff);
|
|
47
|
+
}
|
|
48
|
+
exports.formatSecurityChanges = formatSecurityChanges;
|
|
49
|
+
function formatSecurityChangesWithBanner(formatter, templateDiff) {
|
|
50
|
+
if (!templateDiff.iamChanges.hasChanges && !templateDiff.securityGroupChanges.hasChanges) {
|
|
51
|
+
return;
|
|
52
|
+
}
|
|
53
|
+
formatter.formatIamChanges(templateDiff.iamChanges);
|
|
54
|
+
formatter.formatSecurityGroupChanges(templateDiff.securityGroupChanges);
|
|
55
|
+
formatter.warning('(NOTE: There may be security-related changes not in this list. See https://github.com/aws/aws-cdk/issues/1299)');
|
|
56
|
+
formatter.printSectionFooter();
|
|
57
|
+
}
|
|
58
|
+
const ADDITION = colors.green('[+]');
|
|
59
|
+
const CONTEXT = colors.grey('[ ]');
|
|
60
|
+
const UPDATE = colors.yellow('[~]');
|
|
61
|
+
const REMOVAL = colors.red('[-]');
|
|
62
|
+
class Formatter {
|
|
63
|
+
constructor(stream, logicalToPathMap, diff, context = 3) {
|
|
64
|
+
this.stream = stream;
|
|
65
|
+
this.logicalToPathMap = logicalToPathMap;
|
|
66
|
+
this.context = context;
|
|
67
|
+
// Read additional construct paths from the diff if it is supplied
|
|
68
|
+
if (diff) {
|
|
69
|
+
this.readConstructPathsFrom(diff);
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
print(fmt, ...args) {
|
|
73
|
+
this.stream.write(colors.white(util_1.format(fmt, ...args)) + '\n');
|
|
74
|
+
}
|
|
75
|
+
warning(fmt, ...args) {
|
|
76
|
+
this.stream.write(colors.yellow(util_1.format(fmt, ...args)) + '\n');
|
|
77
|
+
}
|
|
78
|
+
formatSection(title, entryType, collection, formatter = this.formatDifference.bind(this)) {
|
|
79
|
+
if (collection.differenceCount === 0) {
|
|
80
|
+
return;
|
|
81
|
+
}
|
|
82
|
+
this.printSectionHeader(title);
|
|
83
|
+
collection.forEachDifference((id, diff) => formatter(entryType, id, diff));
|
|
84
|
+
this.printSectionFooter();
|
|
85
|
+
}
|
|
86
|
+
printSectionHeader(title) {
|
|
87
|
+
this.print(colors.underline(colors.bold(title)));
|
|
88
|
+
}
|
|
89
|
+
printSectionFooter() {
|
|
90
|
+
this.print('');
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Print a simple difference for a given named entity.
|
|
94
|
+
*
|
|
95
|
+
* @param logicalId the name of the entity that is different.
|
|
96
|
+
* @param diff the difference to be rendered.
|
|
97
|
+
*/
|
|
98
|
+
formatDifference(type, logicalId, diff) {
|
|
99
|
+
if (!diff || !diff.isDifferent) {
|
|
100
|
+
return;
|
|
101
|
+
}
|
|
102
|
+
let value;
|
|
103
|
+
const oldValue = this.formatValue(diff.oldValue, colors.red);
|
|
104
|
+
const newValue = this.formatValue(diff.newValue, colors.green);
|
|
105
|
+
if (diff.isAddition) {
|
|
106
|
+
value = newValue;
|
|
107
|
+
}
|
|
108
|
+
else if (diff.isUpdate) {
|
|
109
|
+
value = `${oldValue} to ${newValue}`;
|
|
110
|
+
}
|
|
111
|
+
else if (diff.isRemoval) {
|
|
112
|
+
value = oldValue;
|
|
113
|
+
}
|
|
114
|
+
this.print(`${this.formatPrefix(diff)} ${colors.cyan(type)} ${this.formatLogicalId(logicalId)}: ${value}`);
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* Print a resource difference for a given logical ID.
|
|
118
|
+
*
|
|
119
|
+
* @param logicalId the logical ID of the resource that changed.
|
|
120
|
+
* @param diff the change to be rendered.
|
|
121
|
+
*/
|
|
122
|
+
formatResourceDifference(_type, logicalId, diff) {
|
|
123
|
+
if (!diff.isDifferent) {
|
|
124
|
+
return;
|
|
125
|
+
}
|
|
126
|
+
const resourceType = diff.isRemoval ? diff.oldResourceType : diff.newResourceType;
|
|
127
|
+
// eslint-disable-next-line max-len
|
|
128
|
+
this.print(`${this.formatPrefix(diff)} ${this.formatValue(resourceType, colors.cyan)} ${this.formatLogicalId(logicalId)} ${this.formatImpact(diff.changeImpact)}`);
|
|
129
|
+
if (diff.isUpdate) {
|
|
130
|
+
const differenceCount = diff.differenceCount;
|
|
131
|
+
let processedCount = 0;
|
|
132
|
+
diff.forEachDifference((_, name, values) => {
|
|
133
|
+
processedCount += 1;
|
|
134
|
+
this.formatTreeDiff(name, values, processedCount === differenceCount);
|
|
135
|
+
});
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
formatPrefix(diff) {
|
|
139
|
+
if (diff.isAddition) {
|
|
140
|
+
return ADDITION;
|
|
141
|
+
}
|
|
142
|
+
if (diff.isUpdate) {
|
|
143
|
+
return UPDATE;
|
|
144
|
+
}
|
|
145
|
+
if (diff.isRemoval) {
|
|
146
|
+
return REMOVAL;
|
|
147
|
+
}
|
|
148
|
+
return colors.white('[?]');
|
|
149
|
+
}
|
|
150
|
+
/**
|
|
151
|
+
* @param value the value to be formatted.
|
|
152
|
+
* @param color the color to be used.
|
|
153
|
+
*
|
|
154
|
+
* @returns the formatted string, with color applied.
|
|
155
|
+
*/
|
|
156
|
+
formatValue(value, color) {
|
|
157
|
+
if (value == null) {
|
|
158
|
+
return undefined;
|
|
159
|
+
}
|
|
160
|
+
if (typeof value === 'string') {
|
|
161
|
+
return color(value);
|
|
162
|
+
}
|
|
163
|
+
return color(JSON.stringify(value));
|
|
164
|
+
}
|
|
165
|
+
/**
|
|
166
|
+
* @param impact the impact to be formatted
|
|
167
|
+
* @returns a user-friendly, colored string representing the impact.
|
|
168
|
+
*/
|
|
169
|
+
formatImpact(impact) {
|
|
170
|
+
switch (impact) {
|
|
171
|
+
case diff_template_1.ResourceImpact.MAY_REPLACE:
|
|
172
|
+
return colors.italic(colors.yellow('may be replaced'));
|
|
173
|
+
case diff_template_1.ResourceImpact.WILL_REPLACE:
|
|
174
|
+
return colors.italic(colors.bold(colors.red('replace')));
|
|
175
|
+
case diff_template_1.ResourceImpact.WILL_DESTROY:
|
|
176
|
+
return colors.italic(colors.bold(colors.red('destroy')));
|
|
177
|
+
case diff_template_1.ResourceImpact.WILL_ORPHAN:
|
|
178
|
+
return colors.italic(colors.yellow('orphan'));
|
|
179
|
+
case diff_template_1.ResourceImpact.WILL_UPDATE:
|
|
180
|
+
case diff_template_1.ResourceImpact.WILL_CREATE:
|
|
181
|
+
case diff_template_1.ResourceImpact.NO_CHANGE:
|
|
182
|
+
return ''; // no extra info is gained here
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
/**
|
|
186
|
+
* Renders a tree of differences under a particular name.
|
|
187
|
+
* @param name the name of the root of the tree.
|
|
188
|
+
* @param diff the difference on the tree.
|
|
189
|
+
* @param last whether this is the last node of a parent tree.
|
|
190
|
+
*/
|
|
191
|
+
formatTreeDiff(name, diff, last) {
|
|
192
|
+
let additionalInfo = '';
|
|
193
|
+
if (diff_template_1.isPropertyDifference(diff)) {
|
|
194
|
+
if (diff.changeImpact === diff_template_1.ResourceImpact.MAY_REPLACE) {
|
|
195
|
+
additionalInfo = ' (may cause replacement)';
|
|
196
|
+
}
|
|
197
|
+
else if (diff.changeImpact === diff_template_1.ResourceImpact.WILL_REPLACE) {
|
|
198
|
+
additionalInfo = ' (requires replacement)';
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
this.print(' %s─ %s %s%s', last ? '└' : '├', this.changeTag(diff.oldValue, diff.newValue), name, additionalInfo);
|
|
202
|
+
return this.formatObjectDiff(diff.oldValue, diff.newValue, ` ${last ? ' ' : '│'}`);
|
|
203
|
+
}
|
|
204
|
+
/**
|
|
205
|
+
* Renders the difference between two objects, looking for the differences as deep as possible,
|
|
206
|
+
* and rendering a tree graph of the path until the difference is found.
|
|
207
|
+
*
|
|
208
|
+
* @param oldObject the old object.
|
|
209
|
+
* @param newObject the new object.
|
|
210
|
+
* @param linePrefix a prefix (indent-like) to be used on every line.
|
|
211
|
+
*/
|
|
212
|
+
formatObjectDiff(oldObject, newObject, linePrefix) {
|
|
213
|
+
if ((typeof oldObject !== typeof newObject) || Array.isArray(oldObject) || typeof oldObject === 'string' || typeof oldObject === 'number') {
|
|
214
|
+
if (oldObject !== undefined && newObject !== undefined) {
|
|
215
|
+
if (typeof oldObject === 'object' || typeof newObject === 'object') {
|
|
216
|
+
const oldStr = JSON.stringify(oldObject, null, 2);
|
|
217
|
+
const newStr = JSON.stringify(newObject, null, 2);
|
|
218
|
+
const diff = _diffStrings(oldStr, newStr, this.context);
|
|
219
|
+
for (let i = 0; i < diff.length; i++) {
|
|
220
|
+
this.print('%s %s %s', linePrefix, i === 0 ? '└─' : ' ', diff[i]);
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
else {
|
|
224
|
+
this.print('%s ├─ %s %s', linePrefix, REMOVAL, this.formatValue(oldObject, colors.red));
|
|
225
|
+
this.print('%s └─ %s %s', linePrefix, ADDITION, this.formatValue(newObject, colors.green));
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
else if (oldObject !== undefined /* && newObject === undefined */) {
|
|
229
|
+
this.print('%s └─ %s', linePrefix, this.formatValue(oldObject, colors.red));
|
|
230
|
+
}
|
|
231
|
+
else /* if (oldObject === undefined && newObject !== undefined) */ {
|
|
232
|
+
this.print('%s └─ %s', linePrefix, this.formatValue(newObject, colors.green));
|
|
233
|
+
}
|
|
234
|
+
return;
|
|
235
|
+
}
|
|
236
|
+
const keySet = new Set(Object.keys(oldObject));
|
|
237
|
+
Object.keys(newObject).forEach(k => keySet.add(k));
|
|
238
|
+
const keys = new Array(...keySet).filter(k => !util_2.deepEqual(oldObject[k], newObject[k])).sort();
|
|
239
|
+
const lastKey = keys[keys.length - 1];
|
|
240
|
+
for (const key of keys) {
|
|
241
|
+
const oldValue = oldObject[key];
|
|
242
|
+
const newValue = newObject[key];
|
|
243
|
+
const treePrefix = key === lastKey ? '└' : '├';
|
|
244
|
+
if (oldValue !== undefined && newValue !== undefined) {
|
|
245
|
+
this.print('%s %s─ %s %s:', linePrefix, treePrefix, this.changeTag(oldValue, newValue), colors.blue(`.${key}`));
|
|
246
|
+
this.formatObjectDiff(oldValue, newValue, `${linePrefix} ${key === lastKey ? ' ' : '│'}`);
|
|
247
|
+
}
|
|
248
|
+
else if (oldValue !== undefined /* && newValue === undefined */) {
|
|
249
|
+
this.print('%s %s─ %s Removed: %s', linePrefix, treePrefix, REMOVAL, colors.blue(`.${key}`));
|
|
250
|
+
}
|
|
251
|
+
else /* if (oldValue === undefined && newValue !== undefined */ {
|
|
252
|
+
this.print('%s %s─ %s Added: %s', linePrefix, treePrefix, ADDITION, colors.blue(`.${key}`));
|
|
253
|
+
}
|
|
254
|
+
}
|
|
255
|
+
}
|
|
256
|
+
/**
|
|
257
|
+
* @param oldValue the old value of a difference.
|
|
258
|
+
* @param newValue the new value of a difference.
|
|
259
|
+
*
|
|
260
|
+
* @returns a tag to be rendered in the diff, reflecting whether the difference
|
|
261
|
+
* was an ADDITION, UPDATE or REMOVAL.
|
|
262
|
+
*/
|
|
263
|
+
changeTag(oldValue, newValue) {
|
|
264
|
+
if (oldValue !== undefined && newValue !== undefined) {
|
|
265
|
+
return UPDATE;
|
|
266
|
+
}
|
|
267
|
+
else if (oldValue !== undefined /* && newValue === undefined*/) {
|
|
268
|
+
return REMOVAL;
|
|
269
|
+
}
|
|
270
|
+
else /* if (oldValue === undefined && newValue !== undefined) */ {
|
|
271
|
+
return ADDITION;
|
|
272
|
+
}
|
|
273
|
+
}
|
|
274
|
+
/**
|
|
275
|
+
* Find 'aws:cdk:path' metadata in the diff and add it to the logicalToPathMap
|
|
276
|
+
*
|
|
277
|
+
* There are multiple sources of logicalID -> path mappings: synth metadata
|
|
278
|
+
* and resource metadata, and we combine all sources into a single map.
|
|
279
|
+
*/
|
|
280
|
+
readConstructPathsFrom(templateDiff) {
|
|
281
|
+
for (const [logicalId, resourceDiff] of Object.entries(templateDiff.resources)) {
|
|
282
|
+
if (!resourceDiff) {
|
|
283
|
+
continue;
|
|
284
|
+
}
|
|
285
|
+
const oldPathMetadata = resourceDiff.oldValue && resourceDiff.oldValue.Metadata && resourceDiff.oldValue.Metadata[PATH_METADATA_KEY];
|
|
286
|
+
if (oldPathMetadata && !(logicalId in this.logicalToPathMap)) {
|
|
287
|
+
this.logicalToPathMap[logicalId] = oldPathMetadata;
|
|
288
|
+
}
|
|
289
|
+
const newPathMetadata = resourceDiff.newValue && resourceDiff.newValue.Metadata && resourceDiff.newValue.Metadata[PATH_METADATA_KEY];
|
|
290
|
+
if (newPathMetadata && !(logicalId in this.logicalToPathMap)) {
|
|
291
|
+
this.logicalToPathMap[logicalId] = newPathMetadata;
|
|
292
|
+
}
|
|
293
|
+
}
|
|
294
|
+
}
|
|
295
|
+
formatLogicalId(logicalId) {
|
|
296
|
+
// if we have a path in the map, return it
|
|
297
|
+
const normalized = this.normalizedLogicalIdPath(logicalId);
|
|
298
|
+
if (normalized) {
|
|
299
|
+
return `${normalized} ${colors.gray(logicalId)}`;
|
|
300
|
+
}
|
|
301
|
+
return logicalId;
|
|
302
|
+
}
|
|
303
|
+
normalizedLogicalIdPath(logicalId) {
|
|
304
|
+
// if we have a path in the map, return it
|
|
305
|
+
const path = this.logicalToPathMap[logicalId];
|
|
306
|
+
return path ? normalizePath(path) : undefined;
|
|
307
|
+
/**
|
|
308
|
+
* Path is supposed to start with "/stack-name". If this is the case (i.e. path has more than
|
|
309
|
+
* two components, we remove the first part. Otherwise, we just use the full path.
|
|
310
|
+
* @param p
|
|
311
|
+
*/
|
|
312
|
+
function normalizePath(p) {
|
|
313
|
+
if (p.startsWith('/')) {
|
|
314
|
+
p = p.substr(1);
|
|
315
|
+
}
|
|
316
|
+
let parts = p.split('/');
|
|
317
|
+
if (parts.length > 1) {
|
|
318
|
+
parts = parts.slice(1);
|
|
319
|
+
// remove the last component if it's "Resource" or "Default" (if we have more than a single component)
|
|
320
|
+
if (parts.length > 1) {
|
|
321
|
+
const last = parts[parts.length - 1];
|
|
322
|
+
if (last === 'Resource' || last === 'Default') {
|
|
323
|
+
parts = parts.slice(0, parts.length - 1);
|
|
324
|
+
}
|
|
325
|
+
}
|
|
326
|
+
p = parts.join('/');
|
|
327
|
+
}
|
|
328
|
+
return p;
|
|
329
|
+
}
|
|
330
|
+
}
|
|
331
|
+
formatIamChanges(changes) {
|
|
332
|
+
if (!changes.hasChanges) {
|
|
333
|
+
return;
|
|
334
|
+
}
|
|
335
|
+
if (changes.statements.hasChanges) {
|
|
336
|
+
this.printSectionHeader('IAM Statement Changes');
|
|
337
|
+
this.print(format_table_1.formatTable(this.deepSubstituteBracedLogicalIds(changes.summarizeStatements()), this.stream.columns));
|
|
338
|
+
}
|
|
339
|
+
if (changes.managedPolicies.hasChanges) {
|
|
340
|
+
this.printSectionHeader('IAM Policy Changes');
|
|
341
|
+
this.print(format_table_1.formatTable(this.deepSubstituteBracedLogicalIds(changes.summarizeManagedPolicies()), this.stream.columns));
|
|
342
|
+
}
|
|
343
|
+
}
|
|
344
|
+
formatSecurityGroupChanges(changes) {
|
|
345
|
+
if (!changes.hasChanges) {
|
|
346
|
+
return;
|
|
347
|
+
}
|
|
348
|
+
this.printSectionHeader('Security Group Changes');
|
|
349
|
+
this.print(format_table_1.formatTable(this.deepSubstituteBracedLogicalIds(changes.summarize()), this.stream.columns));
|
|
350
|
+
}
|
|
351
|
+
deepSubstituteBracedLogicalIds(rows) {
|
|
352
|
+
return rows.map(row => row.map(this.substituteBracedLogicalIds.bind(this)));
|
|
353
|
+
}
|
|
354
|
+
/**
|
|
355
|
+
* Substitute all strings like ${LogId.xxx} with the path instead of the logical ID
|
|
356
|
+
*/
|
|
357
|
+
substituteBracedLogicalIds(source) {
|
|
358
|
+
return source.replace(/\$\{([^.}]+)(.[^}]+)?\}/ig, (_match, logId, suffix) => {
|
|
359
|
+
return '${' + (this.normalizedLogicalIdPath(logId) || logId) + (suffix || '') + '}';
|
|
360
|
+
});
|
|
361
|
+
}
|
|
362
|
+
}
|
|
363
|
+
/**
|
|
364
|
+
* Creates a unified diff of two strings.
|
|
365
|
+
*
|
|
366
|
+
* @param oldStr the "old" version of the string.
|
|
367
|
+
* @param newStr the "new" version of the string.
|
|
368
|
+
* @param context the number of context lines to use in arbitrary JSON diff.
|
|
369
|
+
*
|
|
370
|
+
* @returns an array of diff lines.
|
|
371
|
+
*/
|
|
372
|
+
function _diffStrings(oldStr, newStr, context) {
|
|
373
|
+
const patch = structuredPatch(null, null, oldStr, newStr, null, null, { context });
|
|
374
|
+
const result = new Array();
|
|
375
|
+
for (const hunk of patch.hunks) {
|
|
376
|
+
result.push(colors.magenta(`@@ -${hunk.oldStart},${hunk.oldLines} +${hunk.newStart},${hunk.newLines} @@`));
|
|
377
|
+
const baseIndent = _findIndent(hunk.lines);
|
|
378
|
+
for (const line of hunk.lines) {
|
|
379
|
+
// Don't care about termination newline.
|
|
380
|
+
if (line === '\') {
|
|
381
|
+
continue;
|
|
382
|
+
}
|
|
383
|
+
const marker = line.charAt(0);
|
|
384
|
+
const text = line.slice(1 + baseIndent);
|
|
385
|
+
switch (marker) {
|
|
386
|
+
case ' ':
|
|
387
|
+
result.push(`${CONTEXT} ${text}`);
|
|
388
|
+
break;
|
|
389
|
+
case '+':
|
|
390
|
+
result.push(colors.bold(`${ADDITION} ${colors.green(text)}`));
|
|
391
|
+
break;
|
|
392
|
+
case '-':
|
|
393
|
+
result.push(colors.bold(`${REMOVAL} ${colors.red(text)}`));
|
|
394
|
+
break;
|
|
395
|
+
default:
|
|
396
|
+
throw new Error(`Unexpected diff marker: ${marker} (full line: ${line})`);
|
|
397
|
+
}
|
|
398
|
+
}
|
|
399
|
+
}
|
|
400
|
+
return result;
|
|
401
|
+
function _findIndent(lines) {
|
|
402
|
+
let indent = Number.MAX_SAFE_INTEGER;
|
|
403
|
+
for (const line of lines) {
|
|
404
|
+
for (let i = 1; i < line.length; i++) {
|
|
405
|
+
if (line.charAt(i) !== ' ') {
|
|
406
|
+
indent = indent > i - 1 ? i - 1 : indent;
|
|
407
|
+
break;
|
|
408
|
+
}
|
|
409
|
+
}
|
|
410
|
+
}
|
|
411
|
+
return indent;
|
|
412
|
+
}
|
|
413
|
+
}
|
|
414
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybWF0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiZm9ybWF0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLCtCQUE4QjtBQUM5QixzQ0FBc0M7QUFDdEMsbURBQXVHO0FBRXZHLHNDQUF3QztBQUN4QyxpREFBNkM7QUFJN0MsY0FBYztBQUNkLE1BQU0saUJBQWlCLEdBQUcsY0FBYyxDQUFDO0FBRXpDLDBEQUEwRDtBQUMxRCxNQUFNLEVBQUUsZUFBZSxFQUFFLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBTzVDOzs7Ozs7OztHQVFHO0FBQ0gsU0FBZ0IsaUJBQWlCLENBQy9CLE1BQW9CLEVBQ3BCLFlBQTBCLEVBQzFCLG1CQUFvRCxFQUFHLEVBQ3ZELFVBQWtCLENBQUM7SUFDbkIsTUFBTSxTQUFTLEdBQUcsSUFBSSxTQUFTLENBQUMsTUFBTSxFQUFFLGdCQUFnQixFQUFFLFlBQVksRUFBRSxPQUFPLENBQUMsQ0FBQztJQUVqRixJQUFJLFlBQVksQ0FBQyx3QkFBd0IsSUFBSSxZQUFZLENBQUMsU0FBUyxJQUFJLFlBQVksQ0FBQyxXQUFXLEVBQUU7UUFDL0YsU0FBUyxDQUFDLGtCQUFrQixDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ3pDLFNBQVMsQ0FBQyxnQkFBZ0IsQ0FBQywwQkFBMEIsRUFBRSwwQkFBMEIsRUFBRSxZQUFZLENBQUMsd0JBQXdCLENBQUMsQ0FBQztRQUMxSCxTQUFTLENBQUMsZ0JBQWdCLENBQUMsV0FBVyxFQUFFLFdBQVcsRUFBRSxZQUFZLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDN0UsU0FBUyxDQUFDLGdCQUFnQixDQUFDLGFBQWEsRUFBRSxhQUFhLEVBQUUsWUFBWSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ25GLFNBQVMsQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO0tBQ2hDO0lBRUQsK0JBQStCLENBQUMsU0FBUyxFQUFFLFlBQVksQ0FBQyxDQUFDO0lBRXpELFNBQVMsQ0FBQyxhQUFhLENBQUMs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QUcsQ0FBQyxDQUFDO2FBQzdFO1NBQ0Y7S0FDRjtJQUNELE9BQU8sTUFBTSxDQUFDO0lBRWQsU0FBUyxXQUFXLENBQUMsS0FBZTtRQUNsQyxJQUFJLE1BQU0sR0FBRyxNQUFNLENBQUMsZ0JBQWdCLENBQUM7UUFDckMsS0FBSyxNQUFNLElBQUksSUFBSSxLQUFLLEVBQUU7WUFDeEIsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUcsQ0FBQyxFQUFFLEVBQUU7Z0JBQ3RDLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsS0FBSyxHQUFHLEVBQUU7b0JBQzFCLE1BQU0sR0FBRyxNQUFNLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDO29CQUN6QyxNQUFNO2lCQUNQO2FBQ0Y7U0FDRjtRQUNELE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZm9ybWF0IH0gZnJvbSAndXRpbCc7XG5pbXBvcnQgKiBhcyBjb2xvcnMgZnJvbSAnY29sb3JzL3NhZmUnO1xuaW1wb3J0IHsgRGlmZmVyZW5jZSwgaXNQcm9wZXJ0eURpZmZlcmVuY2UsIFJlc291cmNlRGlmZmVyZW5jZSwgUmVzb3VyY2VJbXBhY3QgfSBmcm9tICcuL2RpZmYtdGVtcGxhdGUnO1xuaW1wb3J0IHsgRGlmZmVyZW5jZUNvbGxlY3Rpb24sIFRlbXBsYXRlRGlmZiB9IGZyb20gJy4vZGlmZi90eXBlcyc7XG5pbXBvcnQgeyBkZWVwRXF1YWwgfSBmcm9tICcuL2RpZmYvdXRpbCc7XG5pbXBvcnQgeyBmb3JtYXRUYWJsZSB9IGZyb20gJy4vZm9ybWF0LXRhYmxlJztcbmltcG9ydCB7IElhbUNoYW5nZXMgfSBmcm9tICcuL2lhbS9pYW0tY2hhbmdlcyc7XG5pbXBvcnQgeyBTZWN1cml0eUdyb3VwQ2hhbmdlcyB9IGZyb20gJy4vbmV0d29yay9zZWN1cml0eS1ncm91cC1jaGFuZ2VzJztcblxuLy8gZnJvbSBjeC1hcGlcbmNvbnN0IFBBVEhfTUVUQURBVEFfS0VZID0gJ2F3czpjZGs6cGF0aCc7XG5cbi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1yZXF1aXJlLWltcG9ydHMgKi9cbmNvbnN0IHsgc3RydWN0dXJlZFBhdGNoIH0gPSByZXF1aXJlKCdkaWZmJyk7XG4vKiBlc2xpbnQtZW5hYmxlICovXG5cbmV4cG9ydCBpbnRlcmZhY2UgRm9ybWF0U3RyZWFtIGV4dGVuZHMgTm9kZUpTLldyaXRhYmxlU3RyZWFtIHtcbiAgY29sdW1ucz86IG51bWJlcjtcbn1cblxuLyoqXG4gKiBSZW5kZXJzIHRlbXBsYXRlIGRpZmZlcmVuY2VzIHRvIHRoZSBwcm9jZXNzJyBjb25zb2xlLlxuICpcbiAqIEBwYXJhbSBzdHJlYW0gICAgICAgICAgIFRoZSBJTyBzdHJlYW0gd2hlcmUgdG8gb3V0cHV0IHRoZSByZW5kZXJlZCBkaWZmLlxuICogQHBhcmFtIHRlbXBsYXRlRGlmZiAgICAgVGVtcGxhdGVEaWZmIHRvIGJlIHJlbmRlcmVkIHRvIHRoZSBjb25zb2xlLlxuICogQHBhcmFtIGxvZ2ljYWxUb1BhdGhNYXAgQSBtYXAgZnJvbSBsb2dpY2FsIElEIHRvIGNvbnN0cnVjdCBwYXRoLiBVc2VmdWwgaW5cbiAqICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgdGhlcmUgaXMgbm8gYXdzOmNkazpwYXRoIG1ldGFkYXRhIGluIHRoZSB0ZW1wbGF0ZS5cbiAqIEBwYXJhbSBjb250ZXh0ICAgICAgICAgIHRoZSBudW1iZXIgb2YgY29udGV4dCBsaW5lcyB0byB1c2UgaW4gYXJiaXRyYXJ5IEpTT04gZGlmZiAoZGVmYXVsdHMgdG8gMykuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmb3JtYXREaWZmZXJlbmNlcyhcbiAgc3RyZWFtOiBGb3JtYXRTdHJlYW0sXG4gIHRlbXBsYXRlRGlmZjogVGVtcGxhdGVEaWZmLFxuICBsb2dpY2FsVG9QYXRoTWFwOiB7IFtsb2dpY2FsSWQ6IHN0cmluZ106IHN0cmluZyB9ID0geyB9LFxuICBjb250ZXh0OiBudW1iZXIgPSAzKSB7XG4gIGNvbnN0IGZvcm1hdHRlciA9IG5ldyBGb3JtYXR0ZXIoc3RyZWFtLCBsb2dpY2FsVG9QYXRoTWFwLCB0ZW1wbGF0ZURpZmYsIGNvbnRleHQpO1xuXG4gIGlmICh0ZW1wbGF0ZURpZmYuYXdzVGVtcGxhdGVGb3JtYXRWZXJzaW9uIHx8IHRlbXBsYXRlRGlmZi50cmFuc2Zvcm0gfHwgdGVtcGxhdGVEaWZmLmRlc2NyaXB0aW9uKSB7XG4gICAgZm9ybWF0dGVyLnByaW50U2VjdGlvbkhlYWRlcignVGVtcGxhdGUnKTtcbiAgICBmb3JtYXR0ZXIuZm9ybWF0RGlmZmVyZW5jZSgnQVdTVGVtcGxhdGVGb3JtYXRWZXJzaW9uJywgJ0FXU1RlbXBsYXRlRm9ybWF0VmVyc2lvbicsIHRlbXBsYXRlRGlmZi5hd3NUZW1wbGF0ZUZvcm1hdFZlcnNpb24pO1xuICAgIGZvcm1hdHRlci5mb3JtYXREaWZmZXJlbmNlKCdUcmFuc2Zvcm0nLCAnVHJhbnNmb3JtJywgdGVtcGxhdGVEaWZmLnRyYW5zZm9ybSk7XG4gICAgZm9ybWF0dGVyLmZvcm1hdERpZmZlcmVuY2UoJ0Rlc2NyaXB0aW9uJywgJ0Rlc2NyaXB0aW9uJywgdGVtcGxhdGVEaWZmLmRlc2NyaXB0aW9uKTtcbiAgICBmb3JtYXR0ZXIucHJpbnRTZWN0aW9uRm9vdGVyKCk7XG4gIH1cblxuICBmb3JtYXRTZWN1cml0eUNoYW5nZXNXaXRoQmFubmVyKGZvcm1hdHRlciwgdGVtcGxhdGVEaWZmKTtcblxuICBmb3JtYXR0ZXIuZm9ybWF0U2VjdGlvbignUGFyYW1ldGVycycsICdQYXJhbWV0ZXInLCB0ZW1wbGF0ZURpZmYucGFyYW1ldGVycyk7XG4gIGZvcm1hdHRlci5mb3JtYXRTZWN0aW9uKCdNZXRhZGF0YScsICdNZXRhZGF0YScsIHRlbXBsYXRlRGlmZi5tZXRhZGF0YSk7XG4gIGZvcm1hdHRlci5mb3JtYXRTZWN0aW9uKCdNYXBwaW5ncycsICdNYXBwaW5nJywgdGVtcGxhdGVEaWZmLm1hcHBpbmdzKTtcbiAgZm9ybWF0dGVyLmZvcm1hdFNlY3Rpb24oJ0NvbmRpdGlvbnMnLCAnQ29uZGl0aW9uJywgdGVtcGxhdGVEaWZmLmNvbmRpdGlvbnMpO1xuICBmb3JtYXR0ZXIuZm9ybWF0U2VjdGlvbignUmVzb3VyY2VzJywgJ1Jlc291cmNlJywgdGVtcGxhdGVEaWZmLnJlc291cmNlcywgZm9ybWF0dGVyLmZvcm1hdFJlc291cmNlRGlmZmVyZW5jZS5iaW5kKGZvcm1hdHRlcikpO1xuICBmb3JtYXR0ZXIuZm9ybWF0U2VjdGlvbignT3V0cHV0cycsICdPdXRwdXQnLCB0ZW1wbGF0ZURpZmYub3V0cHV0cyk7XG4gIGZvcm1hdHRlci5mb3JtYXRTZWN0aW9uKCdPdGhlciBDaGFuZ2VzJywgJ1Vua25vd24nLCB0ZW1wbGF0ZURpZmYudW5rbm93bik7XG59XG5cbi8qKlxuICogUmVuZGVycyBhIGRpZmYgb2Ygc2VjdXJpdHkgY2hhbmdlcyB0byB0aGUgZ2l2ZW4gc3RyZWFtXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmb3JtYXRTZWN1cml0eUNoYW5nZXMoXG4gIHN0cmVhbTogTm9kZUpTLldyaXRlU3RyZWFtLFxuICB0ZW1wbGF0ZURpZmY6IFRlbXBsYXRlRGlmZixcbiAgbG9naWNhbFRvUGF0aE1hcDoge1tsb2dpY2FsSWQ6IHN0cmluZ106IHN0cmluZ30gPSB7fSxcbiAgY29udGV4dD86IG51bWJlcikge1xuICBjb25zdCBmb3JtYXR0ZXIgPSBuZXcgRm9ybWF0dGVyKHN0cmVhbSwgbG9naWNhbFRvUGF0aE1hcCwgdGVtcGxhdGVEaWZmLCBjb250ZXh0KTtcblxuICBmb3JtYXRTZWN1cml0eUNoYW5nZXNXaXRoQmFubmVyKGZvcm1hdHRlciwgdGVtcGxhdGVEaWZmKTtcbn1cblxuZnVuY3Rpb24gZm9ybWF0U2VjdXJpdHlDaGFuZ2VzV2l0aEJhbm5lcihmb3JtYXR0ZXI6IEZvcm1hdHRlciwgdGVtcGxhdGVEaWZmOiBUZW1wbGF0ZURpZmYpIHtcbiAgaWYgKCF0ZW1wbGF0ZURpZmYuaWFtQ2hhbmdlcy5oYXNDaGFuZ2VzICYmICF0ZW1wbGF0ZURpZmYuc2VjdXJpdHlHcm91cENoYW5nZXMuaGFzQ2hhbmdlcykgeyByZXR1cm47IH1cbiAgZm9ybWF0dGVyLmZvcm1hdElhbUNoYW5nZXModGVtcGxhdGVEaWZmLmlhbUNoYW5nZXMpO1xuICBmb3JtYXR0ZXIuZm9ybWF0U2VjdXJpdHlHcm91cENoYW5nZXModGVtcGxhdGVEaWZmLnNlY3VyaXR5R3JvdXBDaGFuZ2VzKTtcblxuICBmb3JtYXR0ZXIud2FybmluZygnKE5PVEU6IFRoZXJlIG1heSBiZSBzZWN1cml0eS1yZWxhdGVkIGNoYW5nZXMgbm90IGluIHRoaXMgbGlzdC4gU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9hd3MvYXdzLWNkay9pc3N1ZXMvMTI5OSknKTtcbiAgZm9ybWF0dGVyLnByaW50U2VjdGlvbkZvb3RlcigpO1xufVxuXG5jb25zdCBBRERJVElPTiA9IGNvbG9ycy5ncmVlbignWytdJyk7XG5jb25zdCBDT05URVhUID0gY29sb3JzLmdyZXkoJ1sgXScpO1xuY29uc3QgVVBEQVRFID0gY29sb3JzLnllbGxvdygnW35dJyk7XG5jb25zdCBSRU1PVkFMID0gY29sb3JzLnJlZCgnWy1dJyk7XG5cbmNsYXNzIEZvcm1hdHRlciB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgc3RyZWFtOiBGb3JtYXRTdHJlYW0sXG4gICAgcHJpdmF0ZSByZWFkb25seSBsb2dpY2FsVG9QYXRoTWFwOiB7IFtsb2dpY2FsSWQ6IHN0cmluZ106IHN0cmluZyB9LFxuICAgIGRpZmY/OiBUZW1wbGF0ZURpZmYsXG4gICAgcHJpdmF0ZSByZWFkb25seSBjb250ZXh0OiBudW1iZXIgPSAzKSB7XG4gICAgLy8gUmVhZCBhZGRpdGlvbmFsIGNvbnN0cnVjdCBwYXRocyBmcm9tIHRoZSBkaWZmIGlmIGl0IGlzIHN1cHBsaWVkXG4gICAgaWYgKGRpZmYpIHtcbiAgICAgIHRoaXMucmVhZENvbnN0cnVjdFBhdGhzRnJvbShkaWZmKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgcHJpbnQoZm10OiBzdHJpbmcsIC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgdGhpcy5zdHJlYW0ud3JpdGUoY29sb3JzLndoaXRlKGZvcm1hdChmbXQsIC4uLmFyZ3MpKSArICdcXG4nKTtcbiAgfVxuXG4gIHB1YmxpYyB3YXJuaW5nKGZtdDogc3RyaW5nLCAuLi5hcmdzOiBhbnlbXSkge1xuICAgIHRoaXMuc3RyZWFtLndyaXRlKGNvbG9ycy55ZWxsb3coZm9ybWF0KGZtdCwgLi4uYXJncykpICsgJ1xcbicpO1xuICB9XG5cbiAgcHVibGljIGZvcm1hdFNlY3Rpb248ViwgVCBleHRlbmRzIERpZmZlcmVuY2U8Vj4+KFxuICAgIHRpdGxlOiBzdHJpbmcsXG4gICAgZW50cnlUeXBlOiBzdHJpbmcsXG4gICAgY29sbGVjdGlvbjogRGlmZmVyZW5jZUNvbGxlY3Rpb248ViwgVD4sXG4gICAgZm9ybWF0dGVyOiAodHlwZTogc3RyaW5nLCBpZDogc3RyaW5nLCBkaWZmOiBUKSA9PiB2b2lkID0gdGhpcy5mb3JtYXREaWZmZXJlbmNlLmJpbmQodGhpcykpIHtcblxuICAgIGlmIChjb2xsZWN0aW9uLmRpZmZlcmVuY2VDb3VudCA9PT0gMCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMucHJpbnRTZWN0aW9uSGVhZGVyKHRpdGxlKTtcbiAgICBjb2xsZWN0aW9uLmZvckVhY2hEaWZmZXJlbmNlKChpZCwgZGlmZikgPT4gZm9ybWF0dGVyKGVudHJ5VHlwZSwgaWQsIGRpZmYpKTtcbiAgICB0aGlzLnByaW50U2VjdGlvbkZvb3RlcigpO1xuICB9XG5cbiAgcHVibGljIHByaW50U2VjdGlvbkhlYWRlcih0aXRsZTogc3RyaW5nKSB7XG4gICAgdGhpcy5wcmludChjb2xvcnMudW5kZXJsaW5lKGNvbG9ycy5ib2xkKHRpdGxlKSkpO1xuICB9XG5cbiAgcHVibGljIHByaW50U2VjdGlvbkZvb3RlcigpIHtcbiAgICB0aGlzLnByaW50KCcnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBQcmludCBhIHNpbXBsZSBkaWZmZXJlbmNlIGZvciBhIGdpdmVuIG5hbWVkIGVudGl0eS5cbiAgICpcbiAgICogQHBhcmFtIGxvZ2ljYWxJZCB0aGUgbmFtZSBvZiB0aGUgZW50aXR5IHRoYXQgaXMgZGlmZmVyZW50LlxuICAgKiBAcGFyYW0gZGlmZiB0aGUgZGlmZmVyZW5jZSB0byBiZSByZW5kZXJlZC5cbiAgICovXG4gIHB1YmxpYyBmb3JtYXREaWZmZXJlbmNlKHR5cGU6IHN0cmluZywgbG9naWNhbElkOiBzdHJpbmcsIGRpZmY6IERpZmZlcmVuY2U8YW55PiB8IHVuZGVmaW5lZCkge1xuICAgIGlmICghZGlmZiB8fCAhZGlmZi5pc0RpZmZlcmVudCkgeyByZXR1cm47IH1cblxuICAgIGxldCB2YWx1ZTtcblxuICAgIGNvbnN0IG9sZFZhbHVlID0gdGhpcy5mb3JtYXRWYWx1ZShkaWZmLm9sZFZhbHVlLCBjb2xvcnMucmVkKTtcbiAgICBjb25zdCBuZXdWYWx1ZSA9IHRoaXMuZm9ybWF0VmFsdWUoZGlmZi5uZXdWYWx1ZSwgY29sb3JzLmdyZWVuKTtcbiAgICBpZiAoZGlmZi5pc0FkZGl0aW9uKSB7XG4gICAgICB2YWx1ZSA9IG5ld1ZhbHVlO1xuICAgIH0gZWxzZSBpZiAoZGlmZi5pc1VwZGF0ZSkge1xuICAgICAgdmFsdWUgPSBgJHtvbGRWYWx1ZX0gdG8gJHtuZXdWYWx1ZX1gO1xuICAgIH0gZWxzZSBpZiAoZGlmZi5pc1JlbW92YWwpIHtcbiAgICAgIHZhbHVlID0gb2xkVmFsdWU7XG4gICAgfVxuXG4gICAgdGhpcy5wcmludChgJHt0aGlzLmZvcm1hdFByZWZpeChkaWZmKX0gJHtjb2xvcnMuY3lhbih0eXBlKX0gJHt0aGlzLmZvcm1hdExvZ2ljYWxJZChsb2dpY2FsSWQpfTogJHt2YWx1ZX1gKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBQcmludCBhIHJlc291cmNlIGRpZmZlcmVuY2UgZm9yIGEgZ2l2ZW4gbG9naWNhbCBJRC5cbiAgICpcbiAgICogQHBhcmFtIGxvZ2ljYWxJZCB0aGUgbG9naWNhbCBJRCBvZiB0aGUgcmVzb3VyY2UgdGhhdCBjaGFuZ2VkLlxuICAgKiBAcGFyYW0gZGlmZiAgICAgIHRoZSBjaGFuZ2UgdG8gYmUgcmVuZGVyZWQuXG4gICAqL1xuICBwdWJsaWMgZm9ybWF0UmVzb3VyY2VEaWZmZXJlbmNlKF90eXBlOiBzdHJpbmcsIGxvZ2ljYWxJZDogc3RyaW5nLCBkaWZmOiBSZXNvdXJjZURpZmZlcmVuY2UpIHtcbiAgICBpZiAoIWRpZmYuaXNEaWZmZXJlbnQpIHsgcmV0dXJuOyB9XG5cbiAgICBjb25zdCByZXNvdXJjZVR5cGUgPSBkaWZmLmlzUmVtb3ZhbCA/IGRpZmYub2xkUmVzb3VyY2VUeXBlIDogZGlmZi5uZXdSZXNvdXJjZVR5cGU7XG5cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbWF4LWxlblxuICAgIHRoaXMucHJpbnQoYCR7dGhpcy5mb3JtYXRQcmVmaXgoZGlmZil9ICR7dGhpcy5mb3JtYXRWYWx1ZShyZXNvdXJjZVR5cGUsIGNvbG9ycy5jeWFuKX0gJHt0aGlzLmZvcm1hdExvZ2ljYWxJZChsb2dpY2FsSWQpfSAke3RoaXMuZm9ybWF0SW1wYWN0KGRpZmYuY2hhbmdlSW1wYWN0KX1gKTtcblxuICAgIGlmIChkaWZmLmlzVXBkYXRlKSB7XG4gICAgICBjb25zdCBkaWZmZXJlbmNlQ291bnQgPSBkaWZmLmRpZmZlcmVuY2VDb3VudDtcbiAgICAgIGxldCBwcm9jZXNzZWRDb3VudCA9IDA7XG4gICAgICBkaWZmLmZvckVhY2hEaWZmZXJlbmNlKChfLCBuYW1lLCB2YWx1ZXMpID0+IHtcbiAgICAgICAgcHJvY2Vzc2VkQ291bnQgKz0gMTtcbiAgICAgICAgdGhpcy5mb3JtYXRUcmVlRGlmZihuYW1lLCB2YWx1ZXMsIHByb2Nlc3NlZENvdW50ID09PSBkaWZmZXJlbmNlQ291bnQpO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGZvcm1hdFByZWZpeDxUPihkaWZmOiBEaWZmZXJlbmNlPFQ+KSB7XG4gICAgaWYgKGRpZmYuaXNBZGRpdGlvbikgeyByZXR1cm4gQURESVRJT047IH1cbiAgICBpZiAoZGlmZi5pc1VwZGF0ZSkgeyByZXR1cm4gVVBEQVRFOyB9XG4gICAgaWYgKGRpZmYuaXNSZW1vdmFsKSB7IHJldHVybiBSRU1PVkFMOyB9XG4gICAgcmV0dXJuIGNvbG9ycy53aGl0ZSgnWz9dJyk7XG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHZhbHVlIHRoZSB2YWx1ZSB0byBiZSBmb3JtYXR0ZWQuXG4gICAqIEBwYXJhbSBjb2xvciB0aGUgY29sb3IgdG8gYmUgdXNlZC5cbiAgICpcbiAgICogQHJldHVybnMgdGhlIGZvcm1hdHRlZCBzdHJpbmcsIHdpdGggY29sb3IgYXBwbGllZC5cbiAgICovXG4gIHB1YmxpYyBmb3JtYXRWYWx1ZSh2YWx1ZTogYW55LCBjb2xvcjogKHN0cjogc3RyaW5nKSA9PiBzdHJpbmcpIHtcbiAgICBpZiAodmFsdWUgPT0gbnVsbCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIHsgcmV0dXJuIGNvbG9yKHZhbHVlKTsgfVxuICAgIHJldHVybiBjb2xvcihKU09OLnN0cmluZ2lmeSh2YWx1ZSkpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSBpbXBhY3QgdGhlIGltcGFjdCB0byBiZSBmb3JtYXR0ZWRcbiAgICogQHJldHVybnMgYSB1c2VyLWZyaWVuZGx5LCBjb2xvcmVkIHN0cmluZyByZXByZXNlbnRpbmcgdGhlIGltcGFjdC5cbiAgICovXG4gIHB1YmxpYyBmb3JtYXRJbXBhY3QoaW1wYWN0OiBSZXNvdXJjZUltcGFjdCkge1xuICAgIHN3aXRjaCAoaW1wYWN0KSB7XG4gICAgICBjYXNlIFJlc291cmNlSW1wYWN0Lk1BWV9SRVBMQUNFOlxuICAgICAgICByZXR1cm4gY29sb3JzLml0YWxpYyhjb2xvcnMueWVsbG93KCdtYXkgYmUgcmVwbGFjZWQnKSk7XG4gICAgICBjYXNlIFJlc291cmNlSW1wYWN0LldJTExfUkVQTEFDRTpcbiAgICAgICAgcmV0dXJuIGNvbG9ycy5pdGFsaWMoY29sb3JzLmJvbGQoY29sb3JzLnJlZCgncmVwbGFjZScpKSk7XG4gICAgICBjYXNlIFJlc291cmNlSW1wYWN0LldJTExfREVTVFJPWTpcbiAgICAgICAgcmV0dXJuIGNvbG9ycy5pdGFsaWMoY29sb3JzLmJvbGQoY29sb3JzLnJlZCgnZGVzdHJveScpKSk7XG4gICAgICBjYXNlIFJlc291cmNlSW1wYWN0LldJTExfT1JQSEFOOlxuICAgICAgICByZXR1cm4gY29sb3JzLml0YWxpYyhjb2xvcnMueWVsbG93KCdvcnBoYW4nKSk7XG4gICAgICBjYXNlIFJlc291cmNlSW1wYWN0LldJTExfVVBEQVRFOlxuICAgICAgY2FzZSBSZXNvdXJjZUltcGFjdC5XSUxMX0NSRUFURTpcbiAgICAgIGNhc2UgUmVzb3VyY2VJbXBhY3QuTk9fQ0hBTkdFOlxuICAgICAgICByZXR1cm4gJyc7IC8vIG5vIGV4dHJhIGluZm8gaXMgZ2FpbmVkIGhlcmVcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUmVuZGVycyBhIHRyZWUgb2YgZGlmZmVyZW5jZXMgdW5kZXIgYSBwYXJ0aWN1bGFyIG5hbWUuXG4gICAqIEBwYXJhbSBuYW1lICAgIHRoZSBuYW1lIG9mIHRoZSByb290IG9mIHRoZSB0cmVlLlxuICAgKiBAcGFyYW0gZGlmZiAgICB0aGUgZGlmZmVyZW5jZSBvbiB0aGUgdHJlZS5cbiAgICogQHBhcmFtIGxhc3QgICAgd2hldGhlciB0aGlzIGlzIHRoZSBsYXN0IG5vZGUgb2YgYSBwYXJlbnQgdHJlZS5cbiAgICovXG4gIHB1YmxpYyBmb3JtYXRUcmVlRGlmZihuYW1lOiBzdHJpbmcsIGRpZmY6IERpZmZlcmVuY2U8YW55PiwgbGFzdDogYm9vbGVhbikge1xuICAgIGxldCBhZGRpdGlvbmFsSW5mbyA9ICcnO1xuICAgIGlmIChpc1Byb3BlcnR5RGlmZmVyZW5jZShkaWZmKSkge1xuICAgICAgaWYgKGRpZmYuY2hhbmdlSW1wYWN0ID09PSBSZXNvdXJjZUltcGFjdC5NQVlfUkVQTEFDRSkge1xuICAgICAgICBhZGRpdGlvbmFsSW5mbyA9ICcgKG1heSBjYXVzZSByZXBsYWNlbWVudCknO1xuICAgICAgfSBlbHNlIGlmIChkaWZmLmNoYW5nZUltcGFjdCA9PT0gUmVzb3VyY2VJbXBhY3QuV0lMTF9SRVBMQUNFKSB7XG4gICAgICAgIGFkZGl0aW9uYWxJbmZvID0gJyAocmVxdWlyZXMgcmVwbGFjZW1lbnQpJztcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5wcmludCgnICVz4pSAICVzICVzJXMnLCBsYXN0ID8gJ+KUlCcgOiAn4pScJywgdGhpcy5jaGFuZ2VUYWcoZGlmZi5vbGRWYWx1ZSwgZGlmZi5uZXdWYWx1ZSksIG5hbWUsIGFkZGl0aW9uYWxJbmZvKTtcbiAgICByZXR1cm4gdGhpcy5mb3JtYXRPYmplY3REaWZmKGRpZmYub2xkVmFsdWUsIGRpZmYubmV3VmFsdWUsIGAgJHtsYXN0ID8gJyAnIDogJ+KUgid9YCk7XG4gIH1cblxuICAvKipcbiAgICogUmVuZGVycyB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuIHR3byBvYmplY3RzLCBsb29raW5nIGZvciB0aGUgZGlmZmVyZW5jZXMgYXMgZGVlcCBhcyBwb3NzaWJsZSxcbiAgICogYW5kIHJlbmRlcmluZyBhIHRyZWUgZ3JhcGggb2YgdGhlIHBhdGggdW50aWwgdGhlIGRpZmZlcmVuY2UgaXMgZm91bmQuXG4gICAqXG4gICAqIEBwYXJhbSBvbGRPYmplY3QgIHRoZSBvbGQgb2JqZWN0LlxuICAgKiBAcGFyYW0gbmV3T2JqZWN0ICB0aGUgbmV3IG9iamVjdC5cbiAgICogQHBhcmFtIGxpbmVQcmVmaXggYSBwcmVmaXggKGluZGVudC1saWtlKSB0byBiZSB1c2VkIG9uIGV2ZXJ5IGxpbmUuXG4gICAqL1xuICBwdWJsaWMgZm9ybWF0T2JqZWN0RGlmZihvbGRPYmplY3Q6IGFueSwgbmV3T2JqZWN0OiBhbnksIGxpbmVQcmVmaXg6IHN0cmluZykge1xuICAgIGlmICgodHlwZW9mIG9sZE9iamVjdCAhPT0gdHlwZW9mIG5ld09iamVjdCkgfHwgQXJyYXkuaXNBcnJheShvbGRPYmplY3QpIHx8IHR5cGVvZiBvbGRPYmplY3QgPT09ICdzdHJpbmcnIHx8IHR5cGVvZiBvbGRPYmplY3QgPT09ICdudW1iZXInKSB7XG4gICAgICBpZiAob2xkT2JqZWN0ICE9PSB1bmRlZmluZWQgJiYgbmV3T2JqZWN0ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgaWYgKHR5cGVvZiBvbGRPYmplY3QgPT09ICdvYmplY3QnIHx8IHR5cGVvZiBuZXdPYmplY3QgPT09ICdvYmplY3QnKSB7XG4gICAgICAgICAgY29uc3Qgb2xkU3RyID0gSlNPTi5zdHJpbmdpZnkob2xkT2JqZWN0LCBudWxsLCAyKTtcbiAgICAgICAgICBjb25zdCBuZXdTdHIgPSBKU09OLnN0cmluZ2lmeShuZXdPYmplY3QsIG51bGwsIDIpO1xuICAgICAgICAgIGNvbnN0IGRpZmYgPSBfZGlmZlN0cmluZ3Mob2xkU3RyLCBuZXdTdHIsIHRoaXMuY29udGV4dCk7XG4gICAgICAgICAgZm9yIChsZXQgaSA9IDAgOyBpIDwgZGlmZi5sZW5ndGggOyBpKyspIHtcbiAgICAgICAgICAgIHRoaXMucHJpbnQoJyVzICAgJXMgJXMnLCBsaW5lUHJlZml4LCBpID09PSAwID8gJ+KUlOKUgCcgOiAnICAnLCBkaWZmW2ldKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5wcmludCgnJXMgICDilJzilIAgJXMgJXMnLCBsaW5lUHJlZml4LCBSRU1PVkFMLCB0aGlzLmZvcm1hdFZhbHVlKG9sZE9iamVjdCwgY29sb3JzLnJlZCkpO1xuICAgICAgICAgIHRoaXMucHJpbnQoJyVzICAg4pSU4pSAICVzICVzJywgbGluZVByZWZpeCwgQURESVRJT04sIHRoaXMuZm9ybWF0VmFsdWUobmV3T2JqZWN0LCBjb2xvcnMuZ3JlZW4pKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChvbGRPYmplY3QgIT09IHVuZGVmaW5lZCAvKiAmJiBuZXdPYmplY3QgPT09IHVuZGVmaW5lZCAqLykge1xuICAgICAgICB0aGlzLnByaW50KCclcyAgIOKUlOKUgCAlcycsIGxpbmVQcmVmaXgsIHRoaXMuZm9ybWF0VmFsdWUob2xkT2JqZWN0LCBjb2xvcnMucmVkKSk7XG4gICAgICB9IGVsc2UgLyogaWYgKG9sZE9iamVjdCA9PT0gdW5kZWZpbmVkICYmIG5ld09iamVjdCAhPT0gdW5kZWZpbmVkKSAqLyB7XG4gICAgICAgIHRoaXMucHJpbnQoJyVzICAg4pSU4pSAICVzJywgbGluZVByZWZpeCwgdGhpcy5mb3JtYXRWYWx1ZShuZXdPYmplY3QsIGNvbG9ycy5ncmVlbikpO1xuICAgICAgfVxuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBrZXlTZXQgPSBuZXcgU2V0KE9iamVjdC5rZXlzKG9sZE9iamVjdCkpO1xuICAgIE9iamVjdC5rZXlzKG5ld09iamVjdCkuZm9yRWFjaChrID0+IGtleVNldC5hZGQoaykpO1xuICAgIGNvbnN0IGtleXMgPSBuZXcgQXJyYXkoLi4ua2V5U2V0KS5maWx0ZXIoayA9PiAhZGVlcEVxdWFsKG9sZE9iamVjdFtrXSwgbmV3T2JqZWN0W2tdKSkuc29ydCgpO1xuICAgIGNvbnN0IGxhc3RLZXkgPSBrZXlzW2tleXMubGVuZ3RoIC0gMV07XG4gICAgZm9yIChjb25zdCBrZXkgb2Yga2V5cykge1xuICAgICAgY29uc3Qgb2xkVmFsdWUgPSBvbGRPYmplY3Rba2V5XTtcbiAgICAgIGNvbnN0IG5ld1ZhbHVlID0gbmV3T2JqZWN0W2tleV07XG4gICAgICBjb25zdCB0cmVlUHJlZml4ID0ga2V5ID09PSBsYXN0S2V5ID8gJ+KUlCcgOiAn4pScJztcbiAgICAgIGlmIChvbGRWYWx1ZSAhPT0gdW5kZWZpbmVkICYmIG5ld1ZhbHVlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgdGhpcy5wcmludCgnJXMgICAlc+KUgCAlcyAlczonLCBsaW5lUHJlZml4LCB0cmVlUHJlZml4LCB0aGlzLmNoYW5nZVRhZyhvbGRWYWx1ZSwgbmV3VmFsdWUpLCBjb2xvcnMuYmx1ZShgLiR7a2V5fWApKTtcbiAgICAgICAgdGhpcy5mb3JtYXRPYmplY3REaWZmKG9sZFZhbHVlLCBuZXdWYWx1ZSwgYCR7bGluZVByZWZpeH0gICAke2tleSA9PT0gbGFzdEtleSA/ICcgJyA6ICfilIInfWApO1xuICAgICAgfSBlbHNlIGlmIChvbGRWYWx1ZSAhPT0gdW5kZWZpbmVkIC8qICYmIG5ld1ZhbHVlID09PSB1bmRlZmluZWQgKi8pIHtcbiAgICAgICAgdGhpcy5wcmludCgnJXMgICAlc+KUgCAlcyBSZW1vdmVkOiAlcycsIGxpbmVQcmVmaXgsIHRyZWVQcmVmaXgsIFJFTU9WQUwsIGNvbG9ycy5ibHVlKGAuJHtrZXl9YCkpO1xuICAgICAgfSBlbHNlIC8qIGlmIChvbGRWYWx1ZSA9PT0gdW5kZWZpbmVkICYmIG5ld1ZhbHVlICE9PSB1bmRlZmluZWQgKi8ge1xuICAgICAgICB0aGlzLnByaW50KCclcyAgICVz4pSAICVzIEFkZGVkOiAlcycsIGxpbmVQcmVmaXgsIHRyZWVQcmVmaXgsIEFERElUSU9OLCBjb2xvcnMuYmx1ZShgLiR7a2V5fWApKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIG9sZFZhbHVlIHRoZSBvbGQgdmFsdWUgb2YgYSBkaWZmZXJlbmNlLlxuICAgKiBAcGFyYW0gbmV3VmFsdWUgdGhlIG5ldyB2YWx1ZSBvZiBhIGRpZmZlcmVuY2UuXG4gICAqXG4gICAqIEByZXR1cm5zIGEgdGFnIHRvIGJlIHJlbmRlcmVkIGluIHRoZSBkaWZmLCByZWZsZWN0aW5nIHdoZXRoZXIgdGhlIGRpZmZlcmVuY2VcbiAgICogICAgICB3YXMgYW4gQURESVRJT04sIFVQREFURSBvciBSRU1PVkFMLlxuICAgKi9cbiAgcHVibGljIGNoYW5nZVRhZyhvbGRWYWx1ZTogYW55IHwgdW5kZWZpbmVkLCBuZXdWYWx1ZTogYW55IHwgdW5kZWZpbmVkKTogc3RyaW5nIHtcbiAgICBpZiAob2xkVmFsdWUgIT09IHVuZGVmaW5lZCAmJiBuZXdWYWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gVVBEQVRFO1xuICAgIH0gZWxzZSBpZiAob2xkVmFsdWUgIT09IHVuZGVmaW5lZCAvKiAmJiBuZXdWYWx1ZSA9PT0gdW5kZWZpbmVkKi8pIHtcbiAgICAgIHJldHVybiBSRU1PVkFMO1xuICAgIH0gZWxzZSAvKiBpZiAob2xkVmFsdWUgPT09IHVuZGVmaW5lZCAmJiBuZXdWYWx1ZSAhPT0gdW5kZWZpbmVkKSAqLyB7XG4gICAgICByZXR1cm4gQURESVRJT047XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEZpbmQgJ2F3czpjZGs6cGF0aCcgbWV0YWRhdGEgaW4gdGhlIGRpZmYgYW5kIGFkZCBpdCB0byB0aGUgbG9naWNhbFRvUGF0aE1hcFxuICAgKlxuICAgKiBUaGVyZSBhcmUgbXVsdGlwbGUgc291cmNlcyBvZiBsb2dpY2FsSUQgLT4gcGF0aCBtYXBwaW5nczogc3ludGggbWV0YWRhdGFcbiAgICogYW5kIHJlc291cmNlIG1ldGFkYXRhLCBhbmQgd2UgY29tYmluZSBhbGwgc291cmNlcyBpbnRvIGEgc2luZ2xlIG1hcC5cbiAgICovXG4gIHB1YmxpYyByZWFkQ29uc3RydWN0UGF0aHNGcm9tKHRlbXBsYXRlRGlmZjogVGVtcGxhdGVEaWZmKSB7XG4gICAgZm9yIChjb25zdCBbbG9naWNhbElkLCByZXNvdXJjZURpZmZdIG9mIE9iamVjdC5lbnRyaWVzKHRlbXBsYXRlRGlmZi5yZXNvdXJjZXMpKSB7XG4gICAgICBpZiAoIXJlc291cmNlRGlmZikgeyBjb250aW51ZTsgfVxuXG4gICAgICBjb25zdCBvbGRQYXRoTWV0YWRhdGEgPSByZXNvdXJjZURpZmYub2xkVmFsdWUgJiYgcmVzb3VyY2VEaWZmLm9sZFZhbHVlLk1ldGFkYXRhICYmIHJlc291cmNlRGlmZi5vbGRWYWx1ZS5NZXRhZGF0YVtQQVRIX01FVEFEQVRBX0tFWV07XG4gICAgICBpZiAob2xkUGF0aE1ldGFkYXRhICYmICEobG9naWNhbElkIGluIHRoaXMubG9naWNhbFRvUGF0aE1hcCkpIHtcbiAgICAgICAgdGhpcy5sb2dpY2FsVG9QYXRoTWFwW2xvZ2ljYWxJZF0gPSBvbGRQYXRoTWV0YWRhdGE7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IG5ld1BhdGhNZXRhZGF0YSA9IHJlc291cmNlRGlmZi5uZXdWYWx1ZSAmJiByZXNvdXJjZURpZmYubmV3VmFsdWUuTWV0YWRhdGEgJiYgcmVzb3VyY2VEaWZmLm5ld1ZhbHVlLk1ldGFkYXRhW1BBVEhfTUVUQURBVEFfS0VZXTtcbiAgICAgIGlmIChuZXdQYXRoTWV0YWRhdGEgJiYgIShsb2dpY2FsSWQgaW4gdGhpcy5sb2dpY2FsVG9QYXRoTWFwKSkge1xuICAgICAgICB0aGlzLmxvZ2ljYWxUb1BhdGhNYXBbbG9naWNhbElkXSA9IG5ld1BhdGhNZXRhZGF0YTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZm9ybWF0TG9naWNhbElkKGxvZ2ljYWxJZDogc3RyaW5nKSB7XG4gICAgLy8gaWYgd2UgaGF2ZSBhIHBhdGggaW4gdGhlIG1hcCwgcmV0dXJuIGl0XG4gICAgY29uc3Qgbm9ybWFsaXplZCA9IHRoaXMubm9ybWFsaXplZExvZ2ljYWxJZFBhdGgobG9naWNhbElkKTtcblxuICAgIGlmIChub3JtYWxpemVkKSB7XG4gICAgICByZXR1cm4gYCR7bm9ybWFsaXplZH0gJHtjb2xvcnMuZ3JheShsb2dpY2FsSWQpfWA7XG4gICAgfVxuXG4gICAgcmV0dXJuIGxvZ2ljYWxJZDtcbiAgfVxuXG4gIHB1YmxpYyBub3JtYWxpemVkTG9naWNhbElkUGF0aChsb2dpY2FsSWQ6IHN0cmluZyk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgLy8gaWYgd2UgaGF2ZSBhIHBhdGggaW4gdGhlIG1hcCwgcmV0dXJuIGl0XG4gICAgY29uc3QgcGF0aCA9IHRoaXMubG9naWNhbFRvUGF0aE1hcFtsb2dpY2FsSWRdO1xuICAgIHJldHVybiBwYXRoID8gbm9ybWFsaXplUGF0aChwYXRoKSA6IHVuZGVmaW5lZDtcblxuICAgIC8qKlxuICAgICAqIFBhdGggaXMgc3VwcG9zZWQgdG8gc3RhcnQgd2l0aCBcIi9zdGFjay1uYW1lXCIuIElmIHRoaXMgaXMgdGhlIGNhc2UgKGkuZS4gcGF0aCBoYXMgbW9yZSB0aGFuXG4gICAgICogdHdvIGNvbXBvbmVudHMsIHdlIHJlbW92ZSB0aGUgZmlyc3QgcGFydC4gT3RoZXJ3aXNlLCB3ZSBqdXN0IHVzZSB0aGUgZnVsbCBwYXRoLlxuICAgICAqIEBwYXJhbSBwXG4gICAgICovXG4gICAgZnVuY3Rpb24gbm9ybWFsaXplUGF0aChwOiBzdHJpbmcpIHtcbiAgICAgIGlmIChwLnN0YXJ0c1dpdGgoJy8nKSkge1xuICAgICAgICBwID0gcC5zdWJzdHIoMSk7XG4gICAgICB9XG5cbiAgICAgIGxldCBwYXJ0cyA9IHAuc3BsaXQoJy8nKTtcbiAgICAgIGlmIChwYXJ0cy5sZW5ndGggPiAxKSB7XG4gICAgICAgIHBhcnRzID0gcGFydHMuc2xpY2UoMSk7XG5cbiAgICAgICAgLy8gcmVtb3ZlIHRoZSBsYXN0IGNvbXBvbmVudCBpZiBpdCdzIFwiUmVzb3VyY2VcIiBvciBcIkRlZmF1bHRcIiAoaWYgd2UgaGF2ZSBtb3JlIHRoYW4gYSBzaW5nbGUgY29tcG9uZW50KVxuICAgICAgICBpZiAocGFydHMubGVuZ3RoID4gMSkge1xuICAgICAgICAgIGNvbnN0IGxhc3QgPSBwYXJ0c1twYXJ0cy5sZW5ndGggLSAxXTtcbiAgICAgICAgICBpZiAobGFzdCA9PT0gJ1Jlc291cmNlJyB8fCBsYXN0ID09PSAnRGVmYXVsdCcpIHtcbiAgICAgICAgICAgIHBhcnRzID0gcGFydHMuc2xpY2UoMCwgcGFydHMubGVuZ3RoIC0gMSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcCA9IHBhcnRzLmpvaW4oJy8nKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBwO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBmb3JtYXRJYW1DaGFuZ2VzKGNoYW5nZXM6IElhbUNoYW5nZXMpIHtcbiAgICBpZiAoIWNoYW5nZXMuaGFzQ2hhbmdlcykgeyByZXR1cm47IH1cblxuICAgIGlmIChjaGFuZ2VzLnN0YXRlbWVudHMuaGFzQ2hhbmdlcykge1xuICAgICAgdGhpcy5wcmludFNlY3Rpb25IZWFkZXIoJ0lBTSBTdGF0ZW1lbnQgQ2hhbmdlcycpO1xuICAgICAgdGhpcy5wcmludChmb3JtYXRUYWJsZSh0aGlzLmRlZXBTdWJzdGl0dXRlQnJhY2VkTG9naWNhbElkcyhjaGFuZ2VzLnN1bW1hcml6ZVN0YXRlbWVudHMoKSksIHRoaXMuc3RyZWFtLmNvbHVtbnMpKTtcbiAgICB9XG5cbiAgICBpZiAoY2hhbmdlcy5tYW5hZ2VkUG9saWNpZXMuaGFzQ2hhbmdlcykge1xuICAgICAgdGhpcy5wcmludFNlY3Rpb25IZWFkZXIoJ0lBTSBQb2xpY3kgQ2hhbmdlcycpO1xuICAgICAgdGhpcy5wcmludChmb3JtYXRUYWJsZSh0aGlzLmRlZXBTdWJzdGl0dXRlQnJhY2VkTG9naWNhbElkcyhjaGFuZ2VzLnN1bW1hcml6ZU1hbmFnZWRQb2xpY2llcygpKSwgdGhpcy5zdHJlYW0uY29sdW1ucykpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBmb3JtYXRTZWN1cml0eUdyb3VwQ2hhbmdlcyhjaGFuZ2VzOiBTZWN1cml0eUdyb3VwQ2hhbmdlcykge1xuICAgIGlmICghY2hhbmdlcy5oYXNDaGFuZ2VzKSB7IHJldHVybjsgfVxuXG4gICAgdGhpcy5wcmludFNlY3Rpb25IZWFkZXIoJ1NlY3VyaXR5IEdyb3VwIENoYW5nZXMnKTtcbiAgICB0aGlzLnByaW50KGZvcm1hdFRhYmxlKHRoaXMuZGVlcFN1YnN0aXR1dGVCcmFjZWRMb2dpY2FsSWRzKGNoYW5nZXMuc3VtbWFyaXplKCkpLCB0aGlzLnN0cmVhbS5jb2x1bW5zKSk7XG4gIH1cblxuICBwdWJsaWMgZGVlcFN1YnN0aXR1dGVCcmFjZWRMb2dpY2FsSWRzKHJvd3M6IHN0cmluZ1tdW10pOiBzdHJpbmdbXVtdIHtcbiAgICByZXR1cm4gcm93cy5tYXAocm93ID0+IHJvdy5tYXAodGhpcy5zdWJzdGl0dXRlQnJhY2VkTG9naWNhbElkcy5iaW5kKHRoaXMpKSk7XG4gIH1cblxuICAvKipcbiAgICogU3Vic3RpdHV0ZSBhbGwgc3RyaW5ncyBsaWtlICR7TG9nSWQueHh4fSB3aXRoIHRoZSBwYXRoIGluc3RlYWQgb2YgdGhlIGxvZ2ljYWwgSURcbiAgICovXG4gIHB1YmxpYyBzdWJzdGl0dXRlQnJhY2VkTG9naWNhbElkcyhzb3VyY2U6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHNvdXJjZS5yZXBsYWNlKC9cXCRcXHsoW14ufV0rKSguW159XSspP1xcfS9pZywgKF9tYXRjaCwgbG9nSWQsIHN1ZmZpeCkgPT4ge1xuICAgICAgcmV0dXJuICckeycgKyAodGhpcy5ub3JtYWxpemVkTG9naWNhbElkUGF0aChsb2dJZCkgfHwgbG9nSWQpICsgKHN1ZmZpeCB8fCAnJykgKyAnfSc7XG4gICAgfSk7XG4gIH1cbn1cblxuLyoqXG4gKiBBIHBhdGNoIGFzIHJldHVybmVkIGJ5IGBgZGlmZi5zdHJ1Y3R1cmVkUGF0Y2hgYC5cbiAqL1xuaW50ZXJmYWNlIFBhdGNoIHtcbiAgLyoqXG4gICAqIEh1bmtzIGluIHRoZSBwYXRjaC5cbiAgICovXG4gIGh1bmtzOiBSZWFkb25seUFycmF5PFBhdGNoSHVuaz47XG59XG5cbi8qKlxuICogQSBodW5rIGluIGEgcGF0Y2ggcHJvZHVjZWQgYnkgYGBkaWZmLnN0cnVjdHVyZWRQYXRjaGBgLlxuICovXG5pbnRlcmZhY2UgUGF0Y2hIdW5rIHtcbiAgb2xkU3RhcnQ6IG51bWJlcjtcbiAgb2xkTGluZXM6IG51bWJlcjtcbiAgbmV3U3RhcnQ6IG51bWJlcjtcbiAgbmV3TGluZXM6IG51bWJlcjtcbiAgbGluZXM6IHN0cmluZ1tdO1xufVxuXG4vKipcbiAqIENyZWF0ZXMgYSB1bmlmaWVkIGRpZmYgb2YgdHdvIHN0cmluZ3MuXG4gKlxuICogQHBhcmFtIG9sZFN0ciAgdGhlIFwib2xkXCIgdmVyc2lvbiBvZiB0aGUgc3RyaW5nLlxuICogQHBhcmFtIG5ld1N0ciAgdGhlIFwibmV3XCIgdmVyc2lvbiBvZiB0aGUgc3RyaW5nLlxuICogQHBhcmFtIGNvbnRleHQgdGhlIG51bWJlciBvZiBjb250ZXh0IGxpbmVzIHRvIHVzZSBpbiBhcmJpdHJhcnkgSlNPTiBkaWZmLlxuICpcbiAqIEByZXR1cm5zIGFuIGFycmF5IG9mIGRpZmYgbGluZXMuXG4gKi9cbmZ1bmN0aW9uIF9kaWZmU3RyaW5ncyhvbGRTdHI6IHN0cmluZywgbmV3U3RyOiBzdHJpbmcsIGNvbnRleHQ6IG51bWJlcik6IHN0cmluZ1tdIHtcbiAgY29uc3QgcGF0Y2g6IFBhdGNoID0gc3RydWN0dXJlZFBhdGNoKG51bGwsIG51bGwsIG9sZFN0ciwgbmV3U3RyLCBudWxsLCBudWxsLCB7IGNvbnRleHQgfSk7XG4gIGNvbnN0IHJlc3VsdCA9IG5ldyBBcnJheTxzdHJpbmc+KCk7XG4gIGZvciAoY29uc3QgaHVuayBvZiBwYXRjaC5odW5rcykge1xuICAgIHJlc3VsdC5wdXNoKGNvbG9ycy5tYWdlbnRhKGBAQCAtJHtodW5rLm9sZFN0YXJ0fSwke2h1bmsub2xkTGluZXN9ICske2h1bmsubmV3U3RhcnR9LCR7aHVuay5uZXdMaW5lc30gQEBgKSk7XG4gICAgY29uc3QgYmFzZUluZGVudCA9IF9maW5kSW5kZW50KGh1bmsubGluZXMpO1xuICAgIGZvciAoY29uc3QgbGluZSBvZiBodW5rLmxpbmVzKSB7XG4gICAgICAvLyBEb24ndCBjYXJlIGFib3V0IHRlcm1pbmF0aW9uIG5ld2xpbmUuXG4gICAgICBpZiAobGluZSA9PT0gJ1xcXFwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZScpIHsgY29udGludWU7IH1cbiAgICAgIGNvbnN0IG1hcmtlciA9IGxpbmUuY2hhckF0KDApO1xuICAgICAgY29uc3QgdGV4dCA9IGxpbmUuc2xpY2UoMSArIGJhc2VJbmRlbnQpO1xuICAgICAgc3dpdGNoIChtYXJrZXIpIHtcbiAgICAgICAgY2FzZSAnICc6XG4gICAgICAgICAgcmVzdWx0LnB1c2goYCR7Q09OVEVYVH0gJHt0ZXh0fWApO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICcrJzpcbiAgICAgICAgICByZXN1bHQucHVzaChjb2xvcnMuYm9sZChgJHtBRERJVElPTn0gJHtjb2xvcnMuZ3JlZW4odGV4dCl9YCkpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICctJzpcbiAgICAgICAgICByZXN1bHQucHVzaChjb2xvcnMuYm9sZChgJHtSRU1PVkFMfSAke2NvbG9ycy5yZWQodGV4dCl9YCkpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgVW5leHBlY3RlZCBkaWZmIG1hcmtlcjogJHttYXJrZXJ9IChmdWxsIGxpbmU6ICR7bGluZX0pYCk7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHJldHVybiByZXN1bHQ7XG5cbiAgZnVuY3Rpb24gX2ZpbmRJbmRlbnQobGluZXM6IHN0cmluZ1tdKTogbnVtYmVyIHtcbiAgICBsZXQgaW5kZW50ID0gTnVtYmVyLk1BWF9TQUZFX0lOVEVHRVI7XG4gICAgZm9yIChjb25zdCBsaW5lIG9mIGxpbmVzKSB7XG4gICAgICBmb3IgKGxldCBpID0gMSA7IGkgPCBsaW5lLmxlbmd0aCA7IGkrKykge1xuICAgICAgICBpZiAobGluZS5jaGFyQXQoaSkgIT09ICcgJykge1xuICAgICAgICAgIGluZGVudCA9IGluZGVudCA+IGkgLSAxID8gaSAtIDEgOiBpbmRlbnQ7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGluZGVudDtcbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import * as cfnspec from '@aws-cdk/cfnspec';
|
|
2
|
+
import { PropertyChange, ResourceChange } from '../diff/types';
|
|
3
|
+
import { DiffableCollection } from '../diffable';
|
|
4
|
+
import { ManagedPolicyAttachment, ManagedPolicyJson } from './managed-policy';
|
|
5
|
+
import { Statement, StatementJson } from './statement';
|
|
6
|
+
export interface IamChangesProps {
|
|
7
|
+
propertyChanges: PropertyChange[];
|
|
8
|
+
resourceChanges: ResourceChange[];
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Changes to IAM statements
|
|
12
|
+
*/
|
|
13
|
+
export declare class IamChanges {
|
|
14
|
+
static IamPropertyScrutinies: cfnspec.schema.PropertyScrutinyType[];
|
|
15
|
+
static IamResourceScrutinies: cfnspec.schema.ResourceScrutinyType[];
|
|
16
|
+
readonly statements: DiffableCollection<Statement>;
|
|
17
|
+
readonly managedPolicies: DiffableCollection<ManagedPolicyAttachment>;
|
|
18
|
+
constructor(props: IamChangesProps);
|
|
19
|
+
get hasChanges(): boolean;
|
|
20
|
+
/**
|
|
21
|
+
* Return whether the changes include broadened permissions
|
|
22
|
+
*
|
|
23
|
+
* Permissions are broadened if positive statements are added or
|
|
24
|
+
* negative statements are removed, or if managed policies are added.
|
|
25
|
+
*/
|
|
26
|
+
get permissionsBroadened(): boolean;
|
|
27
|
+
/**
|
|
28
|
+
* Return a summary table of changes
|
|
29
|
+
*/
|
|
30
|
+
summarizeStatements(): string[][];
|
|
31
|
+
summarizeManagedPolicies(): string[][];
|
|
32
|
+
/**
|
|
33
|
+
* Return a machine-readable version of the changes.
|
|
34
|
+
* This is only used in tests.
|
|
35
|
+
*
|
|
36
|
+
* @internal
|
|
37
|
+
*/
|
|
38
|
+
_toJson(): IamChangesJson;
|
|
39
|
+
private readPropertyChange;
|
|
40
|
+
private readResourceChange;
|
|
41
|
+
/**
|
|
42
|
+
* Parse a list of policies on an identity
|
|
43
|
+
*/
|
|
44
|
+
private readIdentityPolicies;
|
|
45
|
+
/**
|
|
46
|
+
* Parse an IAM::Policy resource
|
|
47
|
+
*/
|
|
48
|
+
private readIdentityPolicyResource;
|
|
49
|
+
private readResourceStatements;
|
|
50
|
+
/**
|
|
51
|
+
* Parse an AWS::*::{Bucket,Topic,Queue}policy
|
|
52
|
+
*/
|
|
53
|
+
private readResourcePolicyResource;
|
|
54
|
+
private readManagedPolicies;
|
|
55
|
+
private readLambdaStatements;
|
|
56
|
+
}
|
|
57
|
+
export interface IamChangesJson {
|
|
58
|
+
statementAdditions?: StatementJson[];
|
|
59
|
+
statementRemovals?: StatementJson[];
|
|
60
|
+
managedPolicyAdditions?: ManagedPolicyJson[];
|
|
61
|
+
managedPolicyRemovals?: ManagedPolicyJson[];
|
|
62
|
+
}
|