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,456 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.isPropertyDifference = exports.ResourceDifference = exports.ResourceImpact = exports.ParameterDifference = exports.OutputDifference = exports.MetadataDifference = exports.MappingDifference = exports.ConditionDifference = exports.DifferenceCollection = exports.PropertyDifference = exports.Difference = exports.TemplateDiff = void 0;
|
|
4
|
+
const assert_1 = require("assert");
|
|
5
|
+
const cfnspec = require("@aws-cdk/cfnspec");
|
|
6
|
+
const iam_changes_1 = require("../iam/iam-changes");
|
|
7
|
+
const security_group_changes_1 = require("../network/security-group-changes");
|
|
8
|
+
const util_1 = require("./util");
|
|
9
|
+
/** Semantic differences between two CloudFormation templates. */
|
|
10
|
+
class TemplateDiff {
|
|
11
|
+
constructor(args) {
|
|
12
|
+
if (args.awsTemplateFormatVersion !== undefined) {
|
|
13
|
+
this.awsTemplateFormatVersion = args.awsTemplateFormatVersion;
|
|
14
|
+
}
|
|
15
|
+
if (args.description !== undefined) {
|
|
16
|
+
this.description = args.description;
|
|
17
|
+
}
|
|
18
|
+
if (args.transform !== undefined) {
|
|
19
|
+
this.transform = args.transform;
|
|
20
|
+
}
|
|
21
|
+
this.conditions = args.conditions || new DifferenceCollection({});
|
|
22
|
+
this.mappings = args.mappings || new DifferenceCollection({});
|
|
23
|
+
this.metadata = args.metadata || new DifferenceCollection({});
|
|
24
|
+
this.outputs = args.outputs || new DifferenceCollection({});
|
|
25
|
+
this.parameters = args.parameters || new DifferenceCollection({});
|
|
26
|
+
this.resources = args.resources || new DifferenceCollection({});
|
|
27
|
+
this.unknown = args.unknown || new DifferenceCollection({});
|
|
28
|
+
this.iamChanges = new iam_changes_1.IamChanges({
|
|
29
|
+
propertyChanges: this.scrutinizablePropertyChanges(iam_changes_1.IamChanges.IamPropertyScrutinies),
|
|
30
|
+
resourceChanges: this.scrutinizableResourceChanges(iam_changes_1.IamChanges.IamResourceScrutinies),
|
|
31
|
+
});
|
|
32
|
+
this.securityGroupChanges = new security_group_changes_1.SecurityGroupChanges({
|
|
33
|
+
egressRulePropertyChanges: this.scrutinizablePropertyChanges([cfnspec.schema.PropertyScrutinyType.EgressRules]),
|
|
34
|
+
ingressRulePropertyChanges: this.scrutinizablePropertyChanges([cfnspec.schema.PropertyScrutinyType.IngressRules]),
|
|
35
|
+
egressRuleResourceChanges: this.scrutinizableResourceChanges([cfnspec.schema.ResourceScrutinyType.EgressRuleResource]),
|
|
36
|
+
ingressRuleResourceChanges: this.scrutinizableResourceChanges([cfnspec.schema.ResourceScrutinyType.IngressRuleResource]),
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
get differenceCount() {
|
|
40
|
+
let count = 0;
|
|
41
|
+
if (this.awsTemplateFormatVersion !== undefined) {
|
|
42
|
+
count += 1;
|
|
43
|
+
}
|
|
44
|
+
if (this.description !== undefined) {
|
|
45
|
+
count += 1;
|
|
46
|
+
}
|
|
47
|
+
if (this.transform !== undefined) {
|
|
48
|
+
count += 1;
|
|
49
|
+
}
|
|
50
|
+
count += this.conditions.differenceCount;
|
|
51
|
+
count += this.mappings.differenceCount;
|
|
52
|
+
count += this.metadata.differenceCount;
|
|
53
|
+
count += this.outputs.differenceCount;
|
|
54
|
+
count += this.parameters.differenceCount;
|
|
55
|
+
count += this.resources.differenceCount;
|
|
56
|
+
count += this.unknown.differenceCount;
|
|
57
|
+
return count;
|
|
58
|
+
}
|
|
59
|
+
get isEmpty() {
|
|
60
|
+
return this.differenceCount === 0;
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Return true if any of the permissions objects involve a broadening of permissions
|
|
64
|
+
*/
|
|
65
|
+
get permissionsBroadened() {
|
|
66
|
+
return this.iamChanges.permissionsBroadened || this.securityGroupChanges.rulesAdded;
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Return true if any of the permissions objects have changed
|
|
70
|
+
*/
|
|
71
|
+
get permissionsAnyChanges() {
|
|
72
|
+
return this.iamChanges.hasChanges || this.securityGroupChanges.hasChanges;
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Return all property changes of a given scrutiny type
|
|
76
|
+
*
|
|
77
|
+
* We don't just look at property updates; we also look at resource additions and deletions (in which
|
|
78
|
+
* case there is no further detail on property values), and resource type changes.
|
|
79
|
+
*/
|
|
80
|
+
scrutinizablePropertyChanges(scrutinyTypes) {
|
|
81
|
+
const ret = new Array();
|
|
82
|
+
for (const [resourceLogicalId, resourceChange] of Object.entries(this.resources.changes)) {
|
|
83
|
+
if (!resourceChange) {
|
|
84
|
+
continue;
|
|
85
|
+
}
|
|
86
|
+
const props = cfnspec.scrutinizablePropertyNames(resourceChange.newResourceType, scrutinyTypes);
|
|
87
|
+
for (const propertyName of props) {
|
|
88
|
+
ret.push({
|
|
89
|
+
resourceLogicalId,
|
|
90
|
+
propertyName,
|
|
91
|
+
resourceType: resourceChange.resourceType,
|
|
92
|
+
scrutinyType: cfnspec.propertySpecification(resourceChange.resourceType, propertyName).ScrutinyType,
|
|
93
|
+
oldValue: resourceChange.oldProperties && resourceChange.oldProperties[propertyName],
|
|
94
|
+
newValue: resourceChange.newProperties && resourceChange.newProperties[propertyName],
|
|
95
|
+
});
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
return ret;
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Return all resource changes of a given scrutiny type
|
|
102
|
+
*
|
|
103
|
+
* We don't just look at resource updates; we also look at resource additions and deletions (in which
|
|
104
|
+
* case there is no further detail on property values), and resource type changes.
|
|
105
|
+
*/
|
|
106
|
+
scrutinizableResourceChanges(scrutinyTypes) {
|
|
107
|
+
const ret = new Array();
|
|
108
|
+
const scrutinizableTypes = new Set(cfnspec.scrutinizableResourceTypes(scrutinyTypes));
|
|
109
|
+
for (const [resourceLogicalId, resourceChange] of Object.entries(this.resources.changes)) {
|
|
110
|
+
if (!resourceChange) {
|
|
111
|
+
continue;
|
|
112
|
+
}
|
|
113
|
+
const commonProps = {
|
|
114
|
+
oldProperties: resourceChange.oldProperties,
|
|
115
|
+
newProperties: resourceChange.newProperties,
|
|
116
|
+
resourceLogicalId,
|
|
117
|
+
};
|
|
118
|
+
// Even though it's not physically possible in CFN, let's pretend to handle a change of 'Type'.
|
|
119
|
+
if (resourceChange.resourceTypeChanged) {
|
|
120
|
+
// Treat as DELETE+ADD
|
|
121
|
+
if (scrutinizableTypes.has(resourceChange.oldResourceType)) {
|
|
122
|
+
ret.push({
|
|
123
|
+
...commonProps,
|
|
124
|
+
newProperties: undefined,
|
|
125
|
+
resourceType: resourceChange.oldResourceType,
|
|
126
|
+
scrutinyType: cfnspec.resourceSpecification(resourceChange.oldResourceType).ScrutinyType,
|
|
127
|
+
});
|
|
128
|
+
}
|
|
129
|
+
if (scrutinizableTypes.has(resourceChange.newResourceType)) {
|
|
130
|
+
ret.push({
|
|
131
|
+
...commonProps,
|
|
132
|
+
oldProperties: undefined,
|
|
133
|
+
resourceType: resourceChange.newResourceType,
|
|
134
|
+
scrutinyType: cfnspec.resourceSpecification(resourceChange.newResourceType).ScrutinyType,
|
|
135
|
+
});
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
else {
|
|
139
|
+
if (scrutinizableTypes.has(resourceChange.resourceType)) {
|
|
140
|
+
ret.push({
|
|
141
|
+
...commonProps,
|
|
142
|
+
resourceType: resourceChange.resourceType,
|
|
143
|
+
scrutinyType: cfnspec.resourceSpecification(resourceChange.resourceType).ScrutinyType,
|
|
144
|
+
});
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
return ret;
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
exports.TemplateDiff = TemplateDiff;
|
|
152
|
+
/**
|
|
153
|
+
* Models an entity that changed between two versions of a CloudFormation template.
|
|
154
|
+
*/
|
|
155
|
+
class Difference {
|
|
156
|
+
/**
|
|
157
|
+
* @param oldValue the old value, cannot be equal (to the sense of +deepEqual+) to +newValue+.
|
|
158
|
+
* @param newValue the new value, cannot be equal (to the sense of +deepEqual+) to +oldValue+.
|
|
159
|
+
*/
|
|
160
|
+
constructor(oldValue, newValue) {
|
|
161
|
+
this.oldValue = oldValue;
|
|
162
|
+
this.newValue = newValue;
|
|
163
|
+
if (oldValue === undefined && newValue === undefined) {
|
|
164
|
+
throw new assert_1.AssertionError({ message: 'oldValue and newValue are both undefined!' });
|
|
165
|
+
}
|
|
166
|
+
this.isDifferent = !util_1.deepEqual(oldValue, newValue);
|
|
167
|
+
}
|
|
168
|
+
/** @returns +true+ if the element is new to the template. */
|
|
169
|
+
get isAddition() {
|
|
170
|
+
return this.oldValue === undefined;
|
|
171
|
+
}
|
|
172
|
+
/** @returns +true+ if the element was removed from the template. */
|
|
173
|
+
get isRemoval() {
|
|
174
|
+
return this.newValue === undefined;
|
|
175
|
+
}
|
|
176
|
+
/** @returns +true+ if the element was already in the template and is updated. */
|
|
177
|
+
get isUpdate() {
|
|
178
|
+
return this.oldValue !== undefined
|
|
179
|
+
&& this.newValue !== undefined;
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
exports.Difference = Difference;
|
|
183
|
+
class PropertyDifference extends Difference {
|
|
184
|
+
constructor(oldValue, newValue, args) {
|
|
185
|
+
super(oldValue, newValue);
|
|
186
|
+
this.changeImpact = args.changeImpact;
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
exports.PropertyDifference = PropertyDifference;
|
|
190
|
+
class DifferenceCollection {
|
|
191
|
+
constructor(diffs) {
|
|
192
|
+
this.diffs = diffs;
|
|
193
|
+
}
|
|
194
|
+
get changes() {
|
|
195
|
+
return onlyChanges(this.diffs);
|
|
196
|
+
}
|
|
197
|
+
get differenceCount() {
|
|
198
|
+
return Object.values(this.changes).length;
|
|
199
|
+
}
|
|
200
|
+
get(logicalId) {
|
|
201
|
+
const ret = this.diffs[logicalId];
|
|
202
|
+
if (!ret) {
|
|
203
|
+
throw new Error(`No object with logical ID '${logicalId}'`);
|
|
204
|
+
}
|
|
205
|
+
return ret;
|
|
206
|
+
}
|
|
207
|
+
get logicalIds() {
|
|
208
|
+
return Object.keys(this.changes);
|
|
209
|
+
}
|
|
210
|
+
/**
|
|
211
|
+
* Returns a new TemplateDiff which only contains changes for which `predicate`
|
|
212
|
+
* returns `true`.
|
|
213
|
+
*/
|
|
214
|
+
filter(predicate) {
|
|
215
|
+
const newChanges = {};
|
|
216
|
+
for (const id of Object.keys(this.changes)) {
|
|
217
|
+
const diff = this.changes[id];
|
|
218
|
+
if (predicate(diff)) {
|
|
219
|
+
newChanges[id] = diff;
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
return new DifferenceCollection(newChanges);
|
|
223
|
+
}
|
|
224
|
+
/**
|
|
225
|
+
* Invokes `cb` for all changes in this collection.
|
|
226
|
+
*
|
|
227
|
+
* Changes will be sorted as follows:
|
|
228
|
+
* - Removed
|
|
229
|
+
* - Added
|
|
230
|
+
* - Updated
|
|
231
|
+
* - Others
|
|
232
|
+
*
|
|
233
|
+
* @param cb
|
|
234
|
+
*/
|
|
235
|
+
forEachDifference(cb) {
|
|
236
|
+
const removed = new Array();
|
|
237
|
+
const added = new Array();
|
|
238
|
+
const updated = new Array();
|
|
239
|
+
const others = new Array();
|
|
240
|
+
for (const logicalId of this.logicalIds) {
|
|
241
|
+
const change = this.changes[logicalId];
|
|
242
|
+
if (change.isAddition) {
|
|
243
|
+
added.push({ logicalId, change });
|
|
244
|
+
}
|
|
245
|
+
else if (change.isRemoval) {
|
|
246
|
+
removed.push({ logicalId, change });
|
|
247
|
+
}
|
|
248
|
+
else if (change.isUpdate) {
|
|
249
|
+
updated.push({ logicalId, change });
|
|
250
|
+
}
|
|
251
|
+
else if (change.isDifferent) {
|
|
252
|
+
others.push({ logicalId, change });
|
|
253
|
+
}
|
|
254
|
+
}
|
|
255
|
+
removed.forEach(v => cb(v.logicalId, v.change));
|
|
256
|
+
added.forEach(v => cb(v.logicalId, v.change));
|
|
257
|
+
updated.forEach(v => cb(v.logicalId, v.change));
|
|
258
|
+
others.forEach(v => cb(v.logicalId, v.change));
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
exports.DifferenceCollection = DifferenceCollection;
|
|
262
|
+
class ConditionDifference extends Difference {
|
|
263
|
+
}
|
|
264
|
+
exports.ConditionDifference = ConditionDifference;
|
|
265
|
+
class MappingDifference extends Difference {
|
|
266
|
+
}
|
|
267
|
+
exports.MappingDifference = MappingDifference;
|
|
268
|
+
class MetadataDifference extends Difference {
|
|
269
|
+
}
|
|
270
|
+
exports.MetadataDifference = MetadataDifference;
|
|
271
|
+
class OutputDifference extends Difference {
|
|
272
|
+
}
|
|
273
|
+
exports.OutputDifference = OutputDifference;
|
|
274
|
+
class ParameterDifference extends Difference {
|
|
275
|
+
}
|
|
276
|
+
exports.ParameterDifference = ParameterDifference;
|
|
277
|
+
var ResourceImpact;
|
|
278
|
+
(function (ResourceImpact) {
|
|
279
|
+
/** The existing physical resource will be updated */
|
|
280
|
+
ResourceImpact["WILL_UPDATE"] = "WILL_UPDATE";
|
|
281
|
+
/** A new physical resource will be created */
|
|
282
|
+
ResourceImpact["WILL_CREATE"] = "WILL_CREATE";
|
|
283
|
+
/** The existing physical resource will be replaced */
|
|
284
|
+
ResourceImpact["WILL_REPLACE"] = "WILL_REPLACE";
|
|
285
|
+
/** The existing physical resource may be replaced */
|
|
286
|
+
ResourceImpact["MAY_REPLACE"] = "MAY_REPLACE";
|
|
287
|
+
/** The existing physical resource will be destroyed */
|
|
288
|
+
ResourceImpact["WILL_DESTROY"] = "WILL_DESTROY";
|
|
289
|
+
/** The existing physical resource will be removed from CloudFormation supervision */
|
|
290
|
+
ResourceImpact["WILL_ORPHAN"] = "WILL_ORPHAN";
|
|
291
|
+
/** There is no change in this resource */
|
|
292
|
+
ResourceImpact["NO_CHANGE"] = "NO_CHANGE";
|
|
293
|
+
})(ResourceImpact = exports.ResourceImpact || (exports.ResourceImpact = {}));
|
|
294
|
+
/**
|
|
295
|
+
* This function can be used as a reducer to obtain the resource-level impact of a list
|
|
296
|
+
* of property-level impacts.
|
|
297
|
+
* @param one the current worst impact so far.
|
|
298
|
+
* @param two the new impact being considered (can be undefined, as we may not always be
|
|
299
|
+
* able to determine some peroperty's impact).
|
|
300
|
+
*/
|
|
301
|
+
function worstImpact(one, two) {
|
|
302
|
+
if (!two) {
|
|
303
|
+
return one;
|
|
304
|
+
}
|
|
305
|
+
const badness = {
|
|
306
|
+
[ResourceImpact.NO_CHANGE]: 0,
|
|
307
|
+
[ResourceImpact.WILL_UPDATE]: 1,
|
|
308
|
+
[ResourceImpact.WILL_CREATE]: 2,
|
|
309
|
+
[ResourceImpact.WILL_ORPHAN]: 3,
|
|
310
|
+
[ResourceImpact.MAY_REPLACE]: 4,
|
|
311
|
+
[ResourceImpact.WILL_REPLACE]: 5,
|
|
312
|
+
[ResourceImpact.WILL_DESTROY]: 6,
|
|
313
|
+
};
|
|
314
|
+
return badness[one] > badness[two] ? one : two;
|
|
315
|
+
}
|
|
316
|
+
/**
|
|
317
|
+
* Change to a single resource between two CloudFormation templates
|
|
318
|
+
*
|
|
319
|
+
* This class can be mutated after construction.
|
|
320
|
+
*/
|
|
321
|
+
class ResourceDifference {
|
|
322
|
+
constructor(oldValue, newValue, args) {
|
|
323
|
+
this.oldValue = oldValue;
|
|
324
|
+
this.newValue = newValue;
|
|
325
|
+
this.resourceTypes = args.resourceType;
|
|
326
|
+
this.propertyDiffs = args.propertyDiffs;
|
|
327
|
+
this.otherDiffs = args.otherDiffs;
|
|
328
|
+
this.isAddition = oldValue === undefined;
|
|
329
|
+
this.isRemoval = newValue === undefined;
|
|
330
|
+
}
|
|
331
|
+
get oldProperties() {
|
|
332
|
+
return this.oldValue && this.oldValue.Properties;
|
|
333
|
+
}
|
|
334
|
+
get newProperties() {
|
|
335
|
+
return this.newValue && this.newValue.Properties;
|
|
336
|
+
}
|
|
337
|
+
/**
|
|
338
|
+
* Whether this resource was modified at all
|
|
339
|
+
*/
|
|
340
|
+
get isDifferent() {
|
|
341
|
+
return this.differenceCount > 0 || this.oldResourceType !== this.newResourceType;
|
|
342
|
+
}
|
|
343
|
+
/**
|
|
344
|
+
* Whether the resource was updated in-place
|
|
345
|
+
*/
|
|
346
|
+
get isUpdate() {
|
|
347
|
+
return this.isDifferent && !this.isAddition && !this.isRemoval;
|
|
348
|
+
}
|
|
349
|
+
get oldResourceType() {
|
|
350
|
+
return this.resourceTypes.oldType;
|
|
351
|
+
}
|
|
352
|
+
get newResourceType() {
|
|
353
|
+
return this.resourceTypes.newType;
|
|
354
|
+
}
|
|
355
|
+
/**
|
|
356
|
+
* All actual property updates
|
|
357
|
+
*/
|
|
358
|
+
get propertyUpdates() {
|
|
359
|
+
return onlyChanges(this.propertyDiffs);
|
|
360
|
+
}
|
|
361
|
+
/**
|
|
362
|
+
* All actual "other" updates
|
|
363
|
+
*/
|
|
364
|
+
get otherChanges() {
|
|
365
|
+
return onlyChanges(this.otherDiffs);
|
|
366
|
+
}
|
|
367
|
+
/**
|
|
368
|
+
* Return whether the resource type was changed in this diff
|
|
369
|
+
*
|
|
370
|
+
* This is not a valid operation in CloudFormation but to be defensive we're going
|
|
371
|
+
* to be aware of it anyway.
|
|
372
|
+
*/
|
|
373
|
+
get resourceTypeChanged() {
|
|
374
|
+
return (this.resourceTypes.oldType !== undefined
|
|
375
|
+
&& this.resourceTypes.newType !== undefined
|
|
376
|
+
&& this.resourceTypes.oldType !== this.resourceTypes.newType);
|
|
377
|
+
}
|
|
378
|
+
/**
|
|
379
|
+
* Return the resource type if it was unchanged
|
|
380
|
+
*
|
|
381
|
+
* If the resource type was changed, it's an error to call this.
|
|
382
|
+
*/
|
|
383
|
+
get resourceType() {
|
|
384
|
+
if (this.resourceTypeChanged) {
|
|
385
|
+
throw new Error('Cannot get .resourceType, because the type was changed');
|
|
386
|
+
}
|
|
387
|
+
return this.resourceTypes.oldType || this.resourceTypes.newType;
|
|
388
|
+
}
|
|
389
|
+
/**
|
|
390
|
+
* Replace a PropertyChange in this object
|
|
391
|
+
*
|
|
392
|
+
* This affects the property diff as it is summarized to users, but it DOES
|
|
393
|
+
* NOT affect either the "oldValue" or "newValue" values; those still contain
|
|
394
|
+
* the actual template values as provided by the user (they might still be
|
|
395
|
+
* used for downstream processing).
|
|
396
|
+
*/
|
|
397
|
+
setPropertyChange(propertyName, change) {
|
|
398
|
+
this.propertyDiffs[propertyName] = change;
|
|
399
|
+
}
|
|
400
|
+
get changeImpact() {
|
|
401
|
+
// Check the Type first
|
|
402
|
+
if (this.resourceTypes.oldType !== this.resourceTypes.newType) {
|
|
403
|
+
if (this.resourceTypes.oldType === undefined) {
|
|
404
|
+
return ResourceImpact.WILL_CREATE;
|
|
405
|
+
}
|
|
406
|
+
if (this.resourceTypes.newType === undefined) {
|
|
407
|
+
return this.oldValue.DeletionPolicy === 'Retain'
|
|
408
|
+
? ResourceImpact.WILL_ORPHAN
|
|
409
|
+
: ResourceImpact.WILL_DESTROY;
|
|
410
|
+
}
|
|
411
|
+
return ResourceImpact.WILL_REPLACE;
|
|
412
|
+
}
|
|
413
|
+
// Base impact (before we mix in the worst of the property impacts);
|
|
414
|
+
// WILL_UPDATE if we have "other" changes, NO_CHANGE if there are no "other" changes.
|
|
415
|
+
const baseImpact = Object.keys(this.otherChanges).length > 0 ? ResourceImpact.WILL_UPDATE : ResourceImpact.NO_CHANGE;
|
|
416
|
+
return Object.values(this.propertyDiffs)
|
|
417
|
+
.map(elt => elt.changeImpact)
|
|
418
|
+
.reduce(worstImpact, baseImpact);
|
|
419
|
+
}
|
|
420
|
+
/**
|
|
421
|
+
* Count of actual differences (not of elements)
|
|
422
|
+
*/
|
|
423
|
+
get differenceCount() {
|
|
424
|
+
return Object.values(this.propertyUpdates).length
|
|
425
|
+
+ Object.values(this.otherChanges).length;
|
|
426
|
+
}
|
|
427
|
+
/**
|
|
428
|
+
* Invoke a callback for each actual difference
|
|
429
|
+
*/
|
|
430
|
+
forEachDifference(cb) {
|
|
431
|
+
for (const key of Object.keys(this.propertyUpdates).sort()) {
|
|
432
|
+
cb('Property', key, this.propertyUpdates[key]);
|
|
433
|
+
}
|
|
434
|
+
for (const key of Object.keys(this.otherChanges).sort()) {
|
|
435
|
+
cb('Other', key, this.otherDiffs[key]);
|
|
436
|
+
}
|
|
437
|
+
}
|
|
438
|
+
}
|
|
439
|
+
exports.ResourceDifference = ResourceDifference;
|
|
440
|
+
function isPropertyDifference(diff) {
|
|
441
|
+
return diff.changeImpact !== undefined;
|
|
442
|
+
}
|
|
443
|
+
exports.isPropertyDifference = isPropertyDifference;
|
|
444
|
+
/**
|
|
445
|
+
* Filter a map of IDifferences down to only retain the actual changes
|
|
446
|
+
*/
|
|
447
|
+
function onlyChanges(xs) {
|
|
448
|
+
const ret = {};
|
|
449
|
+
for (const [key, diff] of Object.entries(xs)) {
|
|
450
|
+
if (diff.isDifferent) {
|
|
451
|
+
ret[key] = diff;
|
|
452
|
+
}
|
|
453
|
+
}
|
|
454
|
+
return ret;
|
|
455
|
+
}
|
|
456
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJ0eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxtQ0FBd0M7QUFDeEMsNENBQTRDO0FBQzVDLG9EQUFnRDtBQUNoRCw4RUFBeUU7QUFDekUsaUNBQW1DO0FBSW5DLGlFQUFpRTtBQUNqRSxNQUFhLFlBQVk7SUF1QnZCLFlBQVksSUFBbUI7UUFDN0IsSUFBSSxJQUFJLENBQUMsd0JBQXdCLEtBQUssU0FBUyxFQUFFO1lBQy9DLElBQUksQ0FBQyx3QkFBd0IsR0FBRyxJQUFJLENBQUMsd0JBQXdCLENBQUM7U0FDL0Q7UUFDRCxJQUFJLElBQUksQ0FBQyxXQUFXLEtBQUssU0FBUyxFQUFFO1lBQ2xDLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQztTQUNyQztRQUNELElBQUksSUFBSSxDQUFDLFNBQVMsS0FBSyxTQUFTLEVBQUU7WUFDaEMsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDO1NBQ2pDO1FBRUQsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsVUFBVSxJQUFJLElBQUksb0JBQW9CLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDbEUsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxJQUFJLElBQUksb0JBQW9CLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDOUQsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxJQUFJLElBQUksb0JBQW9CLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDOUQsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxJQUFJLElBQUksb0JBQW9CLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDNUQsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsVUFBVSxJQUFJLElBQUksb0JBQW9CLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDbEUsSUFBSSxDQUFDLFNBQVMs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LENBQUMsWUFBWSxDQUFDLENBQUMsTUFBTSxDQUFDO0lBQzlDLENBQUM7SUFFRDs7T0FFRztJQUNJLGlCQUFpQixDQUFDLEVBQXVHO1FBQzlILEtBQUssTUFBTSxHQUFHLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7WUFDMUQsRUFBRSxDQUFDLFVBQVUsRUFBRSxHQUFHLEVBQUUsSUFBSSxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1NBQ2hEO1FBQ0QsS0FBSyxNQUFNLEdBQUcsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtZQUN2RCxFQUFFLENBQUMsT0FBTyxFQUFFLEdBQUcsRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7U0FDeEM7SUFDSCxDQUFDO0NBQ0Y7QUE3SkQsZ0RBNkpDO0FBRUQsU0FBZ0Isb0JBQW9CLENBQUksSUFBbUI7SUFDekQsT0FBUSxJQUE4QixDQUFDLFlBQVksS0FBSyxTQUFTLENBQUM7QUFDcEUsQ0FBQztBQUZELG9EQUVDO0FBRUQ7O0dBRUc7QUFDSCxTQUFTLFdBQVcsQ0FBOEIsRUFBc0I7SUFDdEUsTUFBTSxHQUFHLEdBQXlCLEVBQUUsQ0FBQztJQUNyQyxLQUFLLE1BQU0sQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsRUFBRTtRQUM1QyxJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUU7WUFDcEIsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQztTQUNqQjtLQUNGO0lBQ0QsT0FBTyxHQUFHLENBQUM7QUFDYixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQXNzZXJ0aW9uRXJyb3IgfSBmcm9tICdhc3NlcnQnO1xuaW1wb3J0ICogYXMgY2Zuc3BlYyBmcm9tICdAYXdzLWNkay9jZm5zcGVjJztcbmltcG9ydCB7IElhbUNoYW5nZXMgfSBmcm9tICcuLi9pYW0vaWFtLWNoYW5nZXMnO1xuaW1wb3J0IHsgU2VjdXJpdHlHcm91cENoYW5nZXMgfSBmcm9tICcuLi9uZXR3b3JrL3NlY3VyaXR5LWdyb3VwLWNoYW5nZXMnO1xuaW1wb3J0IHsgZGVlcEVxdWFsIH0gZnJvbSAnLi91dGlsJztcblxuZXhwb3J0IHR5cGUgUHJvcGVydHlNYXAgPSB7W2tleTogc3RyaW5nXTogYW55IH07XG5cbi8qKiBTZW1hbnRpYyBkaWZmZXJlbmNlcyBiZXR3ZWVuIHR3byBDbG91ZEZvcm1hdGlvbiB0ZW1wbGF0ZXMuICovXG5leHBvcnQgY2xhc3MgVGVtcGxhdGVEaWZmIGltcGxlbWVudHMgSVRlbXBsYXRlRGlmZiB7XG4gIHB1YmxpYyBhd3NUZW1wbGF0ZUZvcm1hdFZlcnNpb24/OiBEaWZmZXJlbmNlPHN0cmluZz47XG4gIHB1YmxpYyBkZXNjcmlwdGlvbj86IERpZmZlcmVuY2U8c3RyaW5nPjtcbiAgcHVibGljIHRyYW5zZm9ybT86IERpZmZlcmVuY2U8c3RyaW5nPjtcbiAgcHVibGljIGNvbmRpdGlvbnM6IERpZmZlcmVuY2VDb2xsZWN0aW9uPENvbmRpdGlvbiwgQ29uZGl0aW9uRGlmZmVyZW5jZT47XG4gIHB1YmxpYyBtYXBwaW5nczogRGlmZmVyZW5jZUNvbGxlY3Rpb248TWFwcGluZywgTWFwcGluZ0RpZmZlcmVuY2U+O1xuICBwdWJsaWMgbWV0YWRhdGE6IERpZmZlcmVuY2VDb2xsZWN0aW9uPE1ldGFkYXRhLCBNZXRhZGF0YURpZmZlcmVuY2U+O1xuICBwdWJsaWMgb3V0cHV0czogRGlmZmVyZW5jZUNvbGxlY3Rpb248T3V0cHV0LCBPdXRwdXREaWZmZXJlbmNlPjtcbiAgcHVibGljIHBhcmFtZXRlcnM6IERpZmZlcmVuY2VDb2xsZWN0aW9uPFBhcmFtZXRlciwgUGFyYW1ldGVyRGlmZmVyZW5jZT47XG4gIHB1YmxpYyByZXNvdXJjZXM6IERpZmZlcmVuY2VDb2xsZWN0aW9uPFJlc291cmNlLCBSZXNvdXJjZURpZmZlcmVuY2U+O1xuICAvKiogVGhlIGRpZmZlcmVuY2VzIGluIHVua25vd24vdW5leHBlY3RlZCBwYXJ0cyBvZiB0aGUgdGVtcGxhdGUgKi9cbiAgcHVibGljIHVua25vd246IERpZmZlcmVuY2VDb2xsZWN0aW9uPGFueSwgRGlmZmVyZW5jZTxhbnk+PjtcblxuICAvKipcbiAgICogQ2hhbmdlcyB0byBJQU0gcG9saWNpZXNcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBpYW1DaGFuZ2VzOiBJYW1DaGFuZ2VzO1xuXG4gIC8qKlxuICAgKiBDaGFuZ2VzIHRvIFNlY3VyaXR5IEdyb3VwIGluZ3Jlc3MgYW5kIGVncmVzcyBydWxlc1xuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHNlY3VyaXR5R3JvdXBDaGFuZ2VzOiBTZWN1cml0eUdyb3VwQ2hhbmdlcztcblxuICBjb25zdHJ1Y3RvcihhcmdzOiBJVGVtcGxhdGVEaWZmKSB7XG4gICAgaWYgKGFyZ3MuYXdzVGVtcGxhdGVGb3JtYXRWZXJzaW9uICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMuYXdzVGVtcGxhdGVGb3JtYXRWZXJzaW9uID0gYXJncy5hd3NUZW1wbGF0ZUZvcm1hdFZlcnNpb247XG4gICAgfVxuICAgIGlmIChhcmdzLmRlc2NyaXB0aW9uICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMuZGVzY3JpcHRpb24gPSBhcmdzLmRlc2NyaXB0aW9uO1xuICAgIH1cbiAgICBpZiAoYXJncy50cmFuc2Zvcm0gIT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy50cmFuc2Zvcm0gPSBhcmdzLnRyYW5zZm9ybTtcbiAgICB9XG5cbiAgICB0aGlzLmNvbmRpdGlvbnMgPSBhcmdzLmNvbmRpdGlvbnMgfHwgbmV3IERpZmZlcmVuY2VDb2xsZWN0aW9uKHt9KTtcbiAgICB0aGlzLm1hcHBpbmdzID0gYXJncy5tYXBwaW5ncyB8fCBuZXcgRGlmZmVyZW5jZUNvbGxlY3Rpb24oe30pO1xuICAgIHRoaXMubWV0YWRhdGEgPSBhcmdzLm1ldGFkYXRhIHx8IG5ldyBEaWZmZXJlbmNlQ29sbGVjdGlvbih7fSk7XG4gICAgdGhpcy5vdXRwdXRzID0gYXJncy5vdXRwdXRzIHx8IG5ldyBEaWZmZXJlbmNlQ29sbGVjdGlvbih7fSk7XG4gICAgdGhpcy5wYXJhbWV0ZXJzID0gYXJncy5wYXJhbWV0ZXJzIHx8IG5ldyBEaWZmZXJlbmNlQ29sbGVjdGlvbih7fSk7XG4gICAgdGhpcy5yZXNvdXJjZXMgPSBhcmdzLnJlc291cmNlcyB8fCBuZXcgRGlmZmVyZW5jZUNvbGxlY3Rpb24oe30pO1xuICAgIHRoaXMudW5rbm93biA9IGFyZ3MudW5rbm93biB8fCBuZXcgRGlmZmVyZW5jZUNvbGxlY3Rpb24oe30pO1xuXG4gICAgdGhpcy5pYW1DaGFuZ2VzID0gbmV3IElhbUNoYW5nZXMoe1xuICAgICAgcHJvcGVydHlDaGFuZ2VzOiB0aGlzLnNjcnV0aW5pemFibGVQcm9wZXJ0eUNoYW5nZXMoSWFtQ2hhbmdlcy5JYW1Qcm9wZXJ0eVNjcnV0aW5pZXMpLFxuICAgICAgcmVzb3VyY2VDaGFuZ2VzOiB0aGlzLnNjcnV0aW5pemFibGVSZXNvdXJjZUNoYW5nZXMoSWFtQ2hhbmdlcy5JYW1SZXNvdXJjZVNjcnV0aW5pZXMpLFxuICAgIH0pO1xuXG4gICAgdGhpcy5zZWN1cml0eUdyb3VwQ2hhbmdlcyA9IG5ldyBTZWN1cml0eUdyb3VwQ2hhbmdlcyh7XG4gICAgICBlZ3Jlc3NSdWxlUHJvcGVydHlDaGFuZ2VzOiB0aGlzLnNjcnV0aW5pemFibGVQcm9wZXJ0eUNoYW5nZXMoW2NmbnNwZWMuc2NoZW1hLlByb3BlcnR5U2NydXRpbnlUeXBlLkVncmVzc1J1bGVzXSksXG4gICAgICBpbmdyZXNzUnVsZVByb3BlcnR5Q2hhbmdlczogdGhpcy5zY3J1dGluaXphYmxlUHJvcGVydHlDaGFuZ2VzKFtjZm5zcGVjLnNjaGVtYS5Qcm9wZXJ0eVNjcnV0aW55VHlwZS5JbmdyZXNzUnVsZXNdKSxcbiAgICAgIGVncmVzc1J1bGVSZXNvdXJjZUNoYW5nZXM6IHRoaXMuc2NydXRpbml6YWJsZVJlc291cmNlQ2hhbmdlcyhbY2Zuc3BlYy5zY2hlbWEuUmVzb3VyY2VTY3J1dGlueVR5cGUuRWdyZXNzUnVsZVJlc291cmNlXSksXG4gICAgICBpbmdyZXNzUnVsZVJlc291cmNlQ2hhbmdlczogdGhpcy5zY3J1dGluaXphYmxlUmVzb3VyY2VDaGFuZ2VzKFtjZm5zcGVjLnNjaGVtYS5SZXNvdXJjZVNjcnV0aW55VHlwZS5JbmdyZXNzUnVsZVJlc291cmNlXSksXG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGRpZmZlcmVuY2VDb3VudCgpIHtcbiAgICBsZXQgY291bnQgPSAwO1xuXG4gICAgaWYgKHRoaXMuYXdzVGVtcGxhdGVGb3JtYXRWZXJzaW9uICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGNvdW50ICs9IDE7XG4gICAgfVxuICAgIGlmICh0aGlzLmRlc2NyaXB0aW9uICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGNvdW50ICs9IDE7XG4gICAgfVxuICAgIGlmICh0aGlzLnRyYW5zZm9ybSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBjb3VudCArPSAxO1xuICAgIH1cblxuICAgIGNvdW50ICs9IHRoaXMuY29uZGl0aW9ucy5kaWZmZXJlbmNlQ291bnQ7XG4gICAgY291bnQgKz0gdGhpcy5tYXBwaW5ncy5kaWZmZXJlbmNlQ291bnQ7XG4gICAgY291bnQgKz0gdGhpcy5tZXRhZGF0YS5kaWZmZXJlbmNlQ291bnQ7XG4gICAgY291bnQgKz0gdGhpcy5vdXRwdXRzLmRpZmZlcmVuY2VDb3VudDtcbiAgICBjb3VudCArPSB0aGlzLnBhcmFtZXRlcnMuZGlmZmVyZW5jZUNvdW50O1xuICAgIGNvdW50ICs9IHRoaXMucmVzb3VyY2VzLmRpZmZlcmVuY2VDb3VudDtcbiAgICBjb3VudCArPSB0aGlzLnVua25vd24uZGlmZmVyZW5jZUNvdW50O1xuXG4gICAgcmV0dXJuIGNvdW50O1xuICB9XG5cbiAgcHVibGljIGdldCBpc0VtcHR5KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmRpZmZlcmVuY2VDb3VudCA9PT0gMDtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gdHJ1ZSBpZiBhbnkgb2YgdGhlIHBlcm1pc3Npb25zIG9iamVjdHMgaW52b2x2ZSBhIGJyb2FkZW5pbmcgb2YgcGVybWlzc2lvbnNcbiAgICovXG4gIHB1YmxpYyBnZXQgcGVybWlzc2lvbnNCcm9hZGVuZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuaWFtQ2hhbmdlcy5wZXJtaXNzaW9uc0Jyb2FkZW5lZCB8fCB0aGlzLnNlY3VyaXR5R3JvdXBDaGFuZ2VzLnJ1bGVzQWRkZWQ7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIHRydWUgaWYgYW55IG9mIHRoZSBwZXJtaXNzaW9ucyBvYmplY3RzIGhhdmUgY2hhbmdlZFxuICAgKi9cbiAgcHVibGljIGdldCBwZXJtaXNzaW9uc0FueUNoYW5nZXMoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuaWFtQ2hhbmdlcy5oYXNDaGFuZ2VzIHx8IHRoaXMuc2VjdXJpdHlHcm91cENoYW5nZXMuaGFzQ2hhbmdlcztcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gYWxsIHByb3BlcnR5IGNoYW5nZXMgb2YgYSBnaXZlbiBzY3J1dGlueSB0eXBlXG4gICAqXG4gICAqIFdlIGRvbid0IGp1c3QgbG9vayBhdCBwcm9wZXJ0eSB1cGRhdGVzOyB3ZSBhbHNvIGxvb2sgYXQgcmVzb3VyY2UgYWRkaXRpb25zIGFuZCBkZWxldGlvbnMgKGluIHdoaWNoXG4gICAqIGNhc2UgdGhlcmUgaXMgbm8gZnVydGhlciBkZXRhaWwgb24gcHJvcGVydHkgdmFsdWVzKSwgYW5kIHJlc291cmNlIHR5cGUgY2hhbmdlcy5cbiAgICovXG4gIHByaXZhdGUgc2NydXRpbml6YWJsZVByb3BlcnR5Q2hhbmdlcyhzY3J1dGlueVR5cGVzOiBjZm5zcGVjLnNjaGVtYS5Qcm9wZXJ0eVNjcnV0aW55VHlwZVtdKTogUHJvcGVydHlDaGFuZ2VbXSB7XG4gICAgY29uc3QgcmV0ID0gbmV3IEFycmF5PFByb3BlcnR5Q2hhbmdlPigpO1xuXG4gICAgZm9yIChjb25zdCBbcmVzb3VyY2VMb2dpY2FsSWQsIHJlc291cmNlQ2hhbmdlXSBvZiBPYmplY3QuZW50cmllcyh0aGlzLnJlc291cmNlcy5jaGFuZ2VzKSkge1xuICAgICAgaWYgKCFyZXNvdXJjZUNoYW5nZSkgeyBjb250aW51ZTsgfVxuXG4gICAgICBjb25zdCBwcm9wcyA9IGNmbnNwZWMuc2NydXRpbml6YWJsZVByb3BlcnR5TmFtZXMocmVzb3VyY2VDaGFuZ2UubmV3UmVzb3VyY2VUeXBlISwgc2NydXRpbnlUeXBlcyk7XG4gICAgICBmb3IgKGNvbnN0IHByb3BlcnR5TmFtZSBvZiBwcm9wcykge1xuICAgICAgICByZXQucHVzaCh7XG4gICAgICAgICAgcmVzb3VyY2VMb2dpY2FsSWQsXG4gICAgICAgICAgcHJvcGVydHlOYW1lLFxuICAgICAgICAgIHJlc291cmNlVHlwZTogcmVzb3VyY2VDaGFuZ2UucmVzb3VyY2VUeXBlLFxuICAgICAgICAgIHNjcnV0aW55VHlwZTogY2Zuc3BlYy5wcm9wZXJ0eVNwZWNpZmljYXRpb24ocmVzb3VyY2VDaGFuZ2UucmVzb3VyY2VUeXBlLCBwcm9wZXJ0eU5hbWUpLlNjcnV0aW55VHlwZSEsXG4gICAgICAgICAgb2xkVmFsdWU6IHJlc291cmNlQ2hhbmdlLm9sZFByb3BlcnRpZXMgJiYgcmVzb3VyY2VDaGFuZ2Uub2xkUHJvcGVydGllc1twcm9wZXJ0eU5hbWVdLFxuICAgICAgICAgIG5ld1ZhbHVlOiByZXNvdXJjZUNoYW5nZS5uZXdQcm9wZXJ0aWVzICYmIHJlc291cmNlQ2hhbmdlLm5ld1Byb3BlcnRpZXNbcHJvcGVydHlOYW1lXSxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHJldDtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gYWxsIHJlc291cmNlIGNoYW5nZXMgb2YgYSBnaXZlbiBzY3J1dGlueSB0eXBlXG4gICAqXG4gICAqIFdlIGRvbid0IGp1c3QgbG9vayBhdCByZXNvdXJjZSB1cGRhdGVzOyB3ZSBhbHNvIGxvb2sgYXQgcmVzb3VyY2UgYWRkaXRpb25zIGFuZCBkZWxldGlvbnMgKGluIHdoaWNoXG4gICAqIGNhc2UgdGhlcmUgaXMgbm8gZnVydGhlciBkZXRhaWwgb24gcHJvcGVydHkgdmFsdWVzKSwgYW5kIHJlc291cmNlIHR5cGUgY2hhbmdlcy5cbiAgICovXG4gIHByaXZhdGUgc2NydXRpbml6YWJsZVJlc291cmNlQ2hhbmdlcyhzY3J1dGlueVR5cGVzOiBjZm5zcGVjLnNjaGVtYS5SZXNvdXJjZVNjcnV0aW55VHlwZVtdKTogUmVzb3VyY2VDaGFuZ2VbXSB7XG4gICAgY29uc3QgcmV0ID0gbmV3IEFycmF5PFJlc291cmNlQ2hhbmdlPigpO1xuXG4gICAgY29uc3Qgc2NydXRpbml6YWJsZVR5cGVzID0gbmV3IFNldChjZm5zcGVjLnNjcnV0aW5pemFibGVSZXNvdXJjZVR5cGVzKHNjcnV0aW55VHlwZXMpKTtcblxuICAgIGZvciAoY29uc3QgW3Jlc291cmNlTG9naWNhbElkLCByZXNvdXJjZUNoYW5nZV0gb2YgT2JqZWN0LmVudHJpZXModGhpcy5yZXNvdXJjZXMuY2hhbmdlcykpIHtcbiAgICAgIGlmICghcmVzb3VyY2VDaGFuZ2UpIHsgY29udGludWU7IH1cblxuICAgICAgY29uc3QgY29tbW9uUHJvcHMgPSB7XG4gICAgICAgIG9sZFByb3BlcnRpZXM6IHJlc291cmNlQ2hhbmdlLm9sZFByb3BlcnRpZXMsXG4gICAgICAgIG5ld1Byb3BlcnRpZXM6IHJlc291cmNlQ2hhbmdlLm5ld1Byb3BlcnRpZXMsXG4gICAgICAgIHJlc291cmNlTG9naWNhbElkLFxuICAgICAgfTtcblxuICAgICAgLy8gRXZlbiB0aG91Z2ggaXQncyBub3QgcGh5c2ljYWxseSBwb3NzaWJsZSBpbiBDRk4sIGxldCdzIHByZXRlbmQgdG8gaGFuZGxlIGEgY2hhbmdlIG9mICdUeXBlJy5cbiAgICAgIGlmIChyZXNvdXJjZUNoYW5nZS5yZXNvdXJjZVR5cGVDaGFuZ2VkKSB7XG4gICAgICAgIC8vIFRyZWF0IGFzIERFTEVURStBRERcbiAgICAgICAgaWYgKHNjcnV0aW5pemFibGVUeXBlcy5oYXMocmVzb3VyY2VDaGFuZ2Uub2xkUmVzb3VyY2VUeXBlISkpIHtcbiAgICAgICAgICByZXQucHVzaCh7XG4gICAgICAgICAgICAuLi5jb21tb25Qcm9wcyxcbiAgICAgICAgICAgIG5ld1Byb3BlcnRpZXM6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIHJlc291cmNlVHlwZTogcmVzb3VyY2VDaGFuZ2Uub2xkUmVzb3VyY2VUeXBlISxcbiAgICAgICAgICAgIHNjcnV0aW55VHlwZTogY2Zuc3BlYy5yZXNvdXJjZVNwZWNpZmljYXRpb24ocmVzb3VyY2VDaGFuZ2Uub2xkUmVzb3VyY2VUeXBlISkuU2NydXRpbnlUeXBlISxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoc2NydXRpbml6YWJsZVR5cGVzLmhhcyhyZXNvdXJjZUNoYW5nZS5uZXdSZXNvdXJjZVR5cGUhKSkge1xuICAgICAgICAgIHJldC5wdXNoKHtcbiAgICAgICAgICAgIC4uLmNvbW1vblByb3BzLFxuICAgICAgICAgICAgb2xkUHJvcGVydGllczogdW5kZWZpbmVkLFxuICAgICAgICAgICAgcmVzb3VyY2VUeXBlOiByZXNvdXJjZUNoYW5nZS5uZXdSZXNvdXJjZVR5cGUhLFxuICAgICAgICAgICAgc2NydXRpbnlUeXBlOiBjZm5zcGVjLnJlc291cmNlU3BlY2lmaWNhdGlvbihyZXNvdXJjZUNoYW5nZS5uZXdSZXNvdXJjZVR5cGUhKS5TY3J1dGlueVR5cGUhLFxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAoc2NydXRpbml6YWJsZVR5cGVzLmhhcyhyZXNvdXJjZUNoYW5nZS5yZXNvdXJjZVR5cGUpKSB7XG4gICAgICAgICAgcmV0LnB1c2goe1xuICAgICAgICAgICAgLi4uY29tbW9uUHJvcHMsXG4gICAgICAgICAgICByZXNvdXJjZVR5cGU6IHJlc291cmNlQ2hhbmdlLnJlc291cmNlVHlwZSxcbiAgICAgICAgICAgIHNjcnV0aW55VHlwZTogY2Zuc3BlYy5yZXNvdXJjZVNwZWNpZmljYXRpb24ocmVzb3VyY2VDaGFuZ2UucmVzb3VyY2VUeXBlKS5TY3J1dGlueVR5cGUhLFxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHJldDtcbiAgfVxufVxuXG4vKipcbiAqIEEgY2hhbmdlIGluIHByb3BlcnR5IHZhbHVlc1xuICpcbiAqIE5vdCBuZWNlc3NhcmlseSBhbiB1cGRhdGUsIGl0IGNvdWxkIGJlIHRoYXQgdGhlcmUgdXNlZCB0byBiZSBubyB2YWx1ZSB0aGVyZVxuICogYmVjYXVzZSB0aGVyZSB3YXMgbm8gcmVzb3VyY2UsIGFuZCBub3cgdGhlcmUgaXMgKG9yIHZpY2UgdmVyc2EpLlxuICpcbiAqIFRoZXJlZm9yZSwgd2UganVzdCBjb250YWluIHBsYWluIHZhbHVlcyBhbmQgbm90IGEgUHJvcGVydHlEaWZmZXJlbmNlPGFueT4uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUHJvcGVydHlDaGFuZ2Uge1xuICAvKipcbiAgICogTG9naWNhbCBJRCBvZiB0aGUgcmVzb3VyY2Ugd2hlcmUgdGhpcyBwcm9wZXJ0eSBjaGFuZ2Ugd2FzIGZvdW5kXG4gICAqL1xuICByZXNvdXJjZUxvZ2ljYWxJZDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUeXBlIG9mIHRoZSByZXNvdXJjZVxuICAgKi9cbiAgcmVzb3VyY2VUeXBlOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFNjcnV0aW55IHR5cGUgZm9yIHRoaXMgcHJvcGVydHkgY2hhbmdlXG4gICAqL1xuICBzY3J1dGlueVR5cGU6IGNmbnNwZWMuc2NoZW1hLlByb3BlcnR5U2NydXRpbnlUeXBlO1xuXG4gIC8qKlxuICAgKiBOYW1lIG9mIHRoZSBwcm9wZXJ0eSB0aGF0IGlzIGNoYW5naW5nXG4gICAqL1xuICBwcm9wZXJ0eU5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIG9sZCBwcm9wZXJ0eSB2YWx1ZVxuICAgKi9cbiAgb2xkVmFsdWU/OiBhbnk7XG5cbiAgLyoqXG4gICAqIFRoZSBuZXcgcHJvcGVydHkgdmFsdWVcbiAgICovXG4gIG5ld1ZhbHVlPzogYW55O1xufVxuXG4vKipcbiAqIEEgcmVzb3VyY2UgY2hhbmdlXG4gKlxuICogRWl0aGVyIGEgY3JlYXRpb24sIGRlbGV0aW9uIG9yIHVwZGF0ZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZXNvdXJjZUNoYW5nZSB7XG4gIC8qKlxuICAgKiBMb2dpY2FsIElEIG9mIHRoZSByZXNvdXJjZSB3aGVyZSB0aGlzIHByb3BlcnR5IGNoYW5nZSB3YXMgZm91bmRcbiAgICovXG4gIHJlc291cmNlTG9naWNhbElkOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFNjcnV0aW55IHR5cGUgZm9yIHRoaXMgcmVzb3VyY2UgY2hhbmdlXG4gICAqL1xuICBzY3J1dGlueVR5cGU6IGNmbnNwZWMuc2NoZW1hLlJlc291cmNlU2NydXRpbnlUeXBlO1xuXG4gIC8qKlxuICAgKiBUaGUgdHlwZSBvZiB0aGUgcmVzb3VyY2VcbiAgICovXG4gIHJlc291cmNlVHlwZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgb2xkIHByb3BlcnRpZXMgdmFsdWUgKG1pZ2h0IGJlIHVuZGVmaW5lZCBpbiBjYXNlIG9mIGNyZWF0aW9uKVxuICAgKi9cbiAgb2xkUHJvcGVydGllcz86IFByb3BlcnR5TWFwO1xuXG4gIC8qKlxuICAgKiBUaGUgbmV3IHByb3BlcnRpZXMgdmFsdWUgKG1pZ2h0IGJlIHVuZGVmaW5lZCBpbiBjYXNlIG9mIGRlbGV0aW9uKVxuICAgKi9cbiAgbmV3UHJvcGVydGllcz86IFByb3BlcnR5TWFwO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElEaWZmZXJlbmNlPFZhbHVlVHlwZT4ge1xuICByZWFkb25seSBvbGRWYWx1ZTogVmFsdWVUeXBlIHwgdW5kZWZpbmVkO1xuICByZWFkb25seSBuZXdWYWx1ZTogVmFsdWVUeXBlIHwgdW5kZWZpbmVkO1xuICByZWFkb25seSBpc0RpZmZlcmVudDogYm9vbGVhbjtcbiAgcmVhZG9ubHkgaXNBZGRpdGlvbjogYm9vbGVhbjtcbiAgcmVhZG9ubHkgaXNSZW1vdmFsOiBib29sZWFuO1xuICByZWFkb25seSBpc1VwZGF0ZTogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBNb2RlbHMgYW4gZW50aXR5IHRoYXQgY2hhbmdlZCBiZXR3ZWVuIHR3byB2ZXJzaW9ucyBvZiBhIENsb3VkRm9ybWF0aW9uIHRlbXBsYXRlLlxuICovXG5leHBvcnQgY2xhc3MgRGlmZmVyZW5jZTxWYWx1ZVR5cGU+IGltcGxlbWVudHMgSURpZmZlcmVuY2U8VmFsdWVUeXBlPiB7XG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoaXMgaXMgYW4gYWN0dWFsIGRpZmZlcmVudCBvciB0aGUgdmFsdWVzIGFyZSBhY3R1YWxseSB0aGUgc2FtZVxuICAgKlxuICAgKiBpc0RpZmZlcmVudCA9PiAoaXNVcGRhdGUgfCBpc1JlbW92ZWQgfCBpc1VwZGF0ZSlcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBpc0RpZmZlcmVudDogYm9vbGVhbjtcblxuICAvKipcbiAgICogQHBhcmFtIG9sZFZhbHVlIHRoZSBvbGQgdmFsdWUsIGNhbm5vdCBiZSBlcXVhbCAodG8gdGhlIHNlbnNlIG9mICtkZWVwRXF1YWwrKSB0byArbmV3VmFsdWUrLlxuICAgKiBAcGFyYW0gbmV3VmFsdWUgdGhlIG5ldyB2YWx1ZSwgY2Fubm90IGJlIGVxdWFsICh0byB0aGUgc2Vuc2Ugb2YgK2RlZXBFcXVhbCspIHRvICtvbGRWYWx1ZSsuXG4gICAqL1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgcmVhZG9ubHkgb2xkVmFsdWU6IFZhbHVlVHlwZSB8IHVuZGVmaW5lZCwgcHVibGljIHJlYWRvbmx5IG5ld1ZhbHVlOiBWYWx1ZVR5cGUgfCB1bmRlZmluZWQpIHtcbiAgICBpZiAob2xkVmFsdWUgPT09IHVuZGVmaW5lZCAmJiBuZXdWYWx1ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aHJvdyBuZXcgQXNzZXJ0aW9uRXJyb3IoeyBtZXNzYWdlOiAnb2xkVmFsdWUgYW5kIG5ld1ZhbHVlIGFyZSBib3RoIHVuZGVmaW5lZCEnIH0pO1xuICAgIH1cbiAgICB0aGlzLmlzRGlmZmVyZW50ID0gIWRlZXBFcXVhbChvbGRWYWx1ZSwgbmV3VmFsdWUpO1xuICB9XG5cbiAgLyoqIEByZXR1cm5zICt0cnVlKyBpZiB0aGUgZWxlbWVudCBpcyBuZXcgdG8gdGhlIHRlbXBsYXRlLiAqL1xuICBwdWJsaWMgZ2V0IGlzQWRkaXRpb24oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMub2xkVmFsdWUgPT09IHVuZGVmaW5lZDtcbiAgfVxuXG4gIC8qKiBAcmV0dXJucyArdHJ1ZSsgaWYgdGhlIGVsZW1lbnQgd2FzIHJlbW92ZWQgZnJvbSB0aGUgdGVtcGxhdGUuICovXG4gIHB1YmxpYyBnZXQgaXNSZW1vdmFsKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLm5ld1ZhbHVlID09PSB1bmRlZmluZWQ7XG4gIH1cblxuICAvKiogQHJldHVybnMgK3RydWUrIGlmIHRoZSBlbGVtZW50IHdhcyBhbHJlYWR5IGluIHRoZSB0ZW1wbGF0ZSBhbmQgaXMgdXBkYXRlZC4gKi9cbiAgcHVibGljIGdldCBpc1VwZGF0ZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5vbGRWYWx1ZSAhPT0gdW5kZWZpbmVkXG4gICAgICAmJiB0aGlzLm5ld1ZhbHVlICE9PSB1bmRlZmluZWQ7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFByb3BlcnR5RGlmZmVyZW5jZTxWYWx1ZVR5cGU+IGV4dGVuZHMgRGlmZmVyZW5jZTxWYWx1ZVR5cGU+IHtcbiAgcHVibGljIHJlYWRvbmx5IGNoYW5nZUltcGFjdD86IFJlc291cmNlSW1wYWN0O1xuXG4gIGNvbnN0cnVjdG9yKG9sZFZhbHVlOiBWYWx1ZVR5cGUgfCB1bmRlZmluZWQsIG5ld1ZhbHVlOiBWYWx1ZVR5cGUgfCB1bmRlZmluZWQsIGFyZ3M6IHsgY2hhbmdlSW1wYWN0PzogUmVzb3VyY2VJbXBhY3QgfSkge1xuICAgIHN1cGVyKG9sZFZhbHVlLCBuZXdWYWx1ZSk7XG4gICAgdGhpcy5jaGFuZ2VJbXBhY3QgPSBhcmdzLmNoYW5nZUltcGFjdDtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgRGlmZmVyZW5jZUNvbGxlY3Rpb248ViwgVCBleHRlbmRzIElEaWZmZXJlbmNlPFY+PiB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgZGlmZnM6IHsgW2xvZ2ljYWxJZDogc3RyaW5nXTogVCB9KSB7fVxuXG4gIHB1YmxpYyBnZXQgY2hhbmdlcygpOiB7IFtsb2dpY2FsSWQ6IHN0cmluZ106IFQgfSB7XG4gICAgcmV0dXJuIG9ubHlDaGFuZ2VzKHRoaXMuZGlmZnMpO1xuICB9XG5cbiAgcHVibGljIGdldCBkaWZmZXJlbmNlQ291bnQoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gT2JqZWN0LnZhbHVlcyh0aGlzLmNoYW5nZXMpLmxlbmd0aDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQobG9naWNhbElkOiBzdHJpbmcpOiBUIHtcbiAgICBjb25zdCByZXQgPSB0aGlzLmRpZmZzW2xvZ2ljYWxJZF07XG4gICAgaWYgKCFyZXQpIHsgdGhyb3cgbmV3IEVycm9yKGBObyBvYmplY3Qgd2l0aCBsb2dpY2FsIElEICcke2xvZ2ljYWxJZH0nYCk7IH1cbiAgICByZXR1cm4gcmV0O1xuICB9XG5cbiAgcHVibGljIGdldCBsb2dpY2FsSWRzKCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gT2JqZWN0LmtleXModGhpcy5jaGFuZ2VzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGEgbmV3IFRlbXBsYXRlRGlmZiB3aGljaCBvbmx5IGNvbnRhaW5zIGNoYW5nZXMgZm9yIHdoaWNoIGBwcmVkaWNhdGVgXG4gICAqIHJldHVybnMgYHRydWVgLlxuICAgKi9cbiAgcHVibGljIGZpbHRlcihwcmVkaWNhdGU6IChkaWZmOiBUIHwgdW5kZWZpbmVkKSA9PiBib29sZWFuKTogRGlmZmVyZW5jZUNvbGxlY3Rpb248ViwgVD4ge1xuICAgIGNvbnN0IG5ld0NoYW5nZXM6IHsgW2xvZ2ljYWxJZDogc3RyaW5nXTogVCB9ID0geyB9O1xuICAgIGZvciAoY29uc3QgaWQgb2YgT2JqZWN0LmtleXModGhpcy5jaGFuZ2VzKSkge1xuICAgICAgY29uc3QgZGlmZiA9IHRoaXMuY2hhbmdlc1tpZF07XG5cbiAgICAgIGlmIChwcmVkaWNhdGUoZGlmZikpIHtcbiAgICAgICAgbmV3Q2hhbmdlc1tpZF0gPSBkaWZmO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBuZXcgRGlmZmVyZW5jZUNvbGxlY3Rpb248ViwgVD4obmV3Q2hhbmdlcyk7XG4gIH1cblxuICAvKipcbiAgICogSW52b2tlcyBgY2JgIGZvciBhbGwgY2hhbmdlcyBpbiB0aGlzIGNvbGxlY3Rpb24uXG4gICAqXG4gICAqIENoYW5nZXMgd2lsbCBiZSBzb3J0ZWQgYXMgZm9sbG93czpcbiAgICogIC0gUmVtb3ZlZFxuICAgKiAgLSBBZGRlZFxuICAgKiAgLSBVcGRhdGVkXG4gICAqICAtIE90aGVyc1xuICAgKlxuICAgKiBAcGFyYW0gY2JcbiAgICovXG4gIHB1YmxpYyBmb3JFYWNoRGlmZmVyZW5jZShjYjogKGxvZ2ljYWxJZDogc3RyaW5nLCBjaGFuZ2U6IFQpID0+IGFueSk6IHZvaWQge1xuICAgIGNvbnN0IHJlbW92ZWQgPSBuZXcgQXJyYXk8eyBsb2dpY2FsSWQ6IHN0cmluZywgY2hhbmdlOiBUIH0+KCk7XG4gICAgY29uc3QgYWRkZWQgPSBuZXcgQXJyYXk8eyBsb2dpY2FsSWQ6IHN0cmluZywgY2hhbmdlOiBUIH0+KCk7XG4gICAgY29uc3QgdXBkYXRlZCA9IG5ldyBBcnJheTx7IGxvZ2ljYWxJZDogc3RyaW5nLCBjaGFuZ2U6IFQgfT4oKTtcbiAgICBjb25zdCBvdGhlcnMgPSBuZXcgQXJyYXk8eyBsb2dpY2FsSWQ6IHN0cmluZywgY2hhbmdlOiBUIH0+KCk7XG5cbiAgICBmb3IgKGNvbnN0IGxvZ2ljYWxJZCBvZiB0aGlzLmxvZ2ljYWxJZHMpIHtcbiAgICAgIGNvbnN0IGNoYW5nZTogVCA9IHRoaXMuY2hhbmdlc1tsb2dpY2FsSWRdITtcbiAgICAgIGlmIChjaGFuZ2UuaXNBZGRpdGlvbikge1xuICAgICAgICBhZGRlZC5wdXNoKHsgbG9naWNhbElkLCBjaGFuZ2UgfSk7XG4gICAgICB9IGVsc2UgaWYgKGNoYW5nZS5pc1JlbW92YWwpIHtcbiAgICAgICAgcmVtb3ZlZC5wdXNoKHsgbG9naWNhbElkLCBjaGFuZ2UgfSk7XG4gICAgICB9IGVsc2UgaWYgKGNoYW5nZS5pc1VwZGF0ZSkge1xuICAgICAgICB1cGRhdGVkLnB1c2goeyBsb2dpY2FsSWQsIGNoYW5nZSB9KTtcbiAgICAgIH0gZWxzZSBpZiAoY2hhbmdlLmlzRGlmZmVyZW50KSB7XG4gICAgICAgIG90aGVycy5wdXNoKHsgbG9naWNhbElkLCBjaGFuZ2UgfSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmVtb3ZlZC5mb3JFYWNoKHYgPT4gY2Iodi5sb2dpY2FsSWQsIHYuY2hhbmdlKSk7XG4gICAgYWRkZWQuZm9yRWFjaCh2ID0+IGNiKHYubG9naWNhbElkLCB2LmNoYW5nZSkpO1xuICAgIHVwZGF0ZWQuZm9yRWFjaCh2ID0+IGNiKHYubG9naWNhbElkLCB2LmNoYW5nZSkpO1xuICAgIG90aGVycy5mb3JFYWNoKHYgPT4gY2Iodi5sb2dpY2FsSWQsIHYuY2hhbmdlKSk7XG4gIH1cbn1cblxuLyoqXG4gKiBBcmd1bWVudHMgZXhwZWN0ZWQgYnkgdGhlIGNvbnN0cnVjdG9yIG9mICtUZW1wbGF0ZURpZmYrLCBleHRyYWN0ZWQgYXMgYW4gaW50ZXJmYWNlIGZvciB0aGUgc2FrZVxuICogb2YgKHJlbGF0aXZlKSBjb25jaXNlbmVzcyBvZiB0aGUgY29uc3RydWN0b3IncyBzaWduYXR1cmUuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSVRlbXBsYXRlRGlmZiB7XG4gIGF3c1RlbXBsYXRlRm9ybWF0VmVyc2lvbj86IElEaWZmZXJlbmNlPHN0cmluZz47XG4gIGRlc2NyaXB0aW9uPzogSURpZmZlcmVuY2U8c3RyaW5nPjtcbiAgdHJhbnNmb3JtPzogSURpZmZlcmVuY2U8c3RyaW5nPjtcblxuICBjb25kaXRpb25zPzogRGlmZmVyZW5jZUNvbGxlY3Rpb248Q29uZGl0aW9uLCBDb25kaXRpb25EaWZmZXJlbmNlPjtcbiAgbWFwcGluZ3M/OiBEaWZmZXJlbmNlQ29sbGVjdGlvbjxNYXBwaW5nLCBNYXBwaW5nRGlmZmVyZW5jZT47XG4gIG1ldGFkYXRhPzogRGlmZmVyZW5jZUNvbGxlY3Rpb248TWV0YWRhdGEsIE1ldGFkYXRhRGlmZmVyZW5jZT47XG4gIG91dHB1dHM/OiBEaWZmZXJlbmNlQ29sbGVjdGlvbjxPdXRwdXQsIE91dHB1dERpZmZlcmVuY2U+O1xuICBwYXJhbWV0ZXJzPzogRGlmZmVyZW5jZUNvbGxlY3Rpb248UGFyYW1ldGVyLCBQYXJhbWV0ZXJEaWZmZXJlbmNlPjtcbiAgcmVzb3VyY2VzPzogRGlmZmVyZW5jZUNvbGxlY3Rpb248UmVzb3VyY2UsIFJlc291cmNlRGlmZmVyZW5jZT47XG5cbiAgdW5rbm93bj86IERpZmZlcmVuY2VDb2xsZWN0aW9uPGFueSwgSURpZmZlcmVuY2U8YW55Pj47XG59XG5cbmV4cG9ydCB0eXBlIENvbmRpdGlvbiA9IGFueTtcbmV4cG9ydCBjbGFzcyBDb25kaXRpb25EaWZmZXJlbmNlIGV4dGVuZHMgRGlmZmVyZW5jZTxDb25kaXRpb24+IHtcbiAgLy8gVE9ETzogZGVmaW5lIHNwZWNpZmljIGRpZmZlcmVuY2UgYXR0cmlidXRlc1xufVxuXG5leHBvcnQgdHlwZSBNYXBwaW5nID0gYW55O1xuZXhwb3J0IGNsYXNzIE1hcHBpbmdEaWZmZXJlbmNlIGV4dGVuZHMgRGlmZmVyZW5jZTxNYXBwaW5nPiB7XG4gIC8vIFRPRE86IGRlZmluZSBzcGVjaWZpYyBkaWZmZXJlbmNlIGF0dHJpYnV0ZXNcbn1cblxuZXhwb3J0IHR5cGUgTWV0YWRhdGEgPSBhbnk7XG5leHBvcnQgY2xhc3MgTWV0YWRhdGFEaWZmZXJlbmNlIGV4dGVuZHMgRGlmZmVyZW5jZTxNZXRhZGF0YT4ge1xuICAvLyBUT0RPOiBkZWZpbmUgc3BlY2lmaWMgZGlmZmVyZW5jZSBhdHRyaWJ1dGVzXG59XG5cbmV4cG9ydCB0eXBlIE91dHB1dCA9IGFueTtcbmV4cG9ydCBjbGFzcyBPdXRwdXREaWZmZXJlbmNlIGV4dGVuZHMgRGlmZmVyZW5jZTxPdXRwdXQ+IHtcbiAgLy8gVE9ETzogZGVmaW5lIHNwZWNpZmljIGRpZmZlcmVuY2UgYXR0cmlidXRlc1xufVxuXG5leHBvcnQgdHlwZSBQYXJhbWV0ZXIgPSBhbnk7XG5leHBvcnQgY2xhc3MgUGFyYW1ldGVyRGlmZmVyZW5jZSBleHRlbmRzIERpZmZlcmVuY2U8UGFyYW1ldGVyPiB7XG4gIC8vIFRPRE86IGRlZmluZSBzcGVjaWZpYyBkaWZmZXJlbmNlIGF0dHJpYnV0ZXNcbn1cblxuZXhwb3J0IGVudW0gUmVzb3VyY2VJbXBhY3Qge1xuICAvKiogVGhlIGV4aXN0aW5nIHBoeXNpY2FsIHJlc291cmNlIHdpbGwgYmUgdXBkYXRlZCAqL1xuICBXSUxMX1VQREFURSA9ICdXSUxMX1VQREFURScsXG4gIC8qKiBBIG5ldyBwaHlzaWNhbCByZXNvdXJjZSB3aWxsIGJlIGNyZWF0ZWQgKi9cbiAgV0lMTF9DUkVBVEUgPSAnV0lMTF9DUkVBVEUnLFxuICAvKiogVGhlIGV4aXN0aW5nIHBoeXNpY2FsIHJlc291cmNlIHdpbGwgYmUgcmVwbGFjZWQgKi9cbiAgV0lMTF9SRVBMQUNFID0gJ1dJTExfUkVQTEFDRScsXG4gIC8qKiBUaGUgZXhpc3RpbmcgcGh5c2ljYWwgcmVzb3VyY2UgbWF5IGJlIHJlcGxhY2VkICovXG4gIE1BWV9SRVBMQUNFID0gJ01BWV9SRVBMQUNFJyxcbiAgLyoqIFRoZSBleGlzdGluZyBwaHlzaWNhbCByZXNvdXJjZSB3aWxsIGJlIGRlc3Ryb3llZCAqL1xuICBXSUxMX0RFU1RST1kgPSAnV0lMTF9ERVNUUk9ZJyxcbiAgLyoqIFRoZSBleGlzdGluZyBwaHlzaWNhbCByZXNvdXJjZSB3aWxsIGJlIHJlbW92ZWQgZnJvbSBDbG91ZEZvcm1hdGlvbiBzdXBlcnZpc2lvbiAqL1xuICBXSUxMX09SUEhBTiA9ICdXSUxMX09SUEhBTicsXG4gIC8qKiBUaGVyZSBpcyBubyBjaGFuZ2UgaW4gdGhpcyByZXNvdXJjZSAqL1xuICBOT19DSEFOR0UgPSAnTk9fQ0hBTkdFJyxcbn1cblxuLyoqXG4gKiBUaGlzIGZ1bmN0aW9uIGNhbiBiZSB1c2VkIGFzIGEgcmVkdWNlciB0byBvYnRhaW4gdGhlIHJlc291cmNlLWxldmVsIGltcGFjdCBvZiBhIGxpc3RcbiAqIG9mIHByb3BlcnR5LWxldmVsIGltcGFjdHMuXG4gKiBAcGFyYW0gb25lIHRoZSBjdXJyZW50IHdvcnN0IGltcGFjdCBzbyBmYXIuXG4gKiBAcGFyYW0gdHdvIHRoZSBuZXcgaW1wYWN0IGJlaW5nIGNvbnNpZGVyZWQgKGNhbiBiZSB1bmRlZmluZWQsIGFzIHdlIG1heSBub3QgYWx3YXlzIGJlXG4gKiAgICAgIGFibGUgdG8gZGV0ZXJtaW5lIHNvbWUgcGVyb3BlcnR5J3MgaW1wYWN0KS5cbiAqL1xuZnVuY3Rpb24gd29yc3RJbXBhY3Qob25lOiBSZXNvdXJjZUltcGFjdCwgdHdvPzogUmVzb3VyY2VJbXBhY3QpOiBSZXNvdXJjZUltcGFjdCB7XG4gIGlmICghdHdvKSB7IHJldHVybiBvbmU7IH1cbiAgY29uc3QgYmFkbmVzcyA9IHtcbiAgICBbUmVzb3VyY2VJbXBhY3QuTk9fQ0hBTkdFXTogMCxcbiAgICBbUmVzb3VyY2VJbXBhY3QuV0lMTF9VUERBVEVdOiAxLFxuICAgIFtSZXNvdXJjZUltcGFjdC5XSUxMX0NSRUFURV06IDIsXG4gICAgW1Jlc291cmNlSW1wYWN0LldJTExfT1JQSEFOXTogMyxcbiAgICBbUmVzb3VyY2VJbXBhY3QuTUFZX1JFUExBQ0VdOiA0LFxuICAgIFtSZXNvdXJjZUltcGFjdC5XSUxMX1JFUExBQ0VdOiA1LFxuICAgIFtSZXNvdXJjZUltcGFjdC5XSUxMX0RFU1RST1ldOiA2LFxuICB9O1xuICByZXR1cm4gYmFkbmVzc1tvbmVdID4gYmFkbmVzc1t0d29dID8gb25lIDogdHdvO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFJlc291cmNlIHtcbiAgVHlwZTogc3RyaW5nO1xuICBQcm9wZXJ0aWVzPzogeyBbbmFtZTogc3RyaW5nXTogYW55IH07XG5cbiAgW2tleTogc3RyaW5nXTogYW55O1xufVxuXG4vKipcbiAqIENoYW5nZSB0byBhIHNpbmdsZSByZXNvdXJjZSBiZXR3ZWVuIHR3byBDbG91ZEZvcm1hdGlvbiB0ZW1wbGF0ZXNcbiAqXG4gKiBUaGlzIGNsYXNzIGNhbiBiZSBtdXRhdGVkIGFmdGVyIGNvbnN0cnVjdGlvbi5cbiAqL1xuZXhwb3J0IGNsYXNzIFJlc291cmNlRGlmZmVyZW5jZSBpbXBsZW1lbnRzIElEaWZmZXJlbmNlPFJlc291cmNlPiB7XG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoaXMgcmVzb3VyY2Ugd2FzIGFkZGVkXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgaXNBZGRpdGlvbjogYm9vbGVhbjtcblxuICAvKipcbiAgICogV2hldGhlciB0aGlzIHJlc291cmNlIHdhcyByZW1vdmVkXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgaXNSZW1vdmFsOiBib29sZWFuO1xuXG4gIC8qKiBQcm9wZXJ0eS1sZXZlbCBjaGFuZ2VzIG9uIHRoZSByZXNvdXJjZSAqL1xuICBwcml2YXRlIHJlYWRvbmx5IHByb3BlcnR5RGlmZnM6IHsgW2tleTogc3RyaW5nXTogUHJvcGVydHlEaWZmZXJlbmNlPGFueT4gfTtcblxuICAvKiogQ2hhbmdlcyB0byBub24tcHJvcGVydHkgbGV2ZWwgYXR0cmlidXRlcyBvZiB0aGUgcmVzb3VyY2UgKi9cbiAgcHJpdmF0ZSByZWFkb25seSBvdGhlckRpZmZzOiB7IFtrZXk6IHN0cmluZ106IERpZmZlcmVuY2U8YW55PiB9O1xuXG4gIC8qKiBUaGUgcmVzb3VyY2UgdHlwZSAob3Igb2xkIGFuZCBuZXcgdHlwZSBpZiBpdCBoYXMgY2hhbmdlZCkgKi9cbiAgcHJpdmF0ZSByZWFkb25seSByZXNvdXJjZVR5cGVzOiB7IHJlYWRvbmx5IG9sZFR5cGU/OiBzdHJpbmcsIHJlYWRvbmx5IG5ld1R5cGU/OiBzdHJpbmcgfTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgcmVhZG9ubHkgb2xkVmFsdWU6IFJlc291cmNlIHwgdW5kZWZpbmVkLFxuICAgIHB1YmxpYyByZWFkb25seSBuZXdWYWx1ZTogUmVzb3VyY2UgfCB1bmRlZmluZWQsXG4gICAgYXJnczoge1xuICAgICAgcmVzb3VyY2VUeXBlOiB7IG9sZFR5cGU/OiBzdHJpbmcsIG5ld1R5cGU/OiBzdHJpbmcgfSxcbiAgICAgIHByb3BlcnR5RGlmZnM6IHsgW2tleTogc3RyaW5nXTogUHJvcGVydHlEaWZmZXJlbmNlPGFueT4gfSxcbiAgICAgIG90aGVyRGlmZnM6IHsgW2tleTogc3RyaW5nXTogRGlmZmVyZW5jZTxhbnk+IH1cbiAgICB9LFxuICApIHtcbiAgICB0aGlzLnJlc291cmNlVHlwZXMgPSBhcmdzLnJlc291cmNlVHlwZTtcbiAgICB0aGlzLnByb3BlcnR5RGlmZnMgPSBhcmdzLnByb3BlcnR5RGlmZnM7XG4gICAgdGhpcy5vdGhlckRpZmZzID0gYXJncy5vdGhlckRpZmZzO1xuXG4gICAgdGhpcy5pc0FkZGl0aW9uID0gb2xkVmFsdWUgPT09IHVuZGVmaW5lZDtcbiAgICB0aGlzLmlzUmVtb3ZhbCA9IG5ld1ZhbHVlID09PSB1bmRlZmluZWQ7XG4gIH1cblxuICBwdWJsaWMgZ2V0IG9sZFByb3BlcnRpZXMoKTogUHJvcGVydHlNYXAgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLm9sZFZhbHVlICYmIHRoaXMub2xkVmFsdWUuUHJvcGVydGllcztcbiAgfVxuXG4gIHB1YmxpYyBnZXQgbmV3UHJvcGVydGllcygpOiBQcm9wZXJ0eU1hcCB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMubmV3VmFsdWUgJiYgdGhpcy5uZXdWYWx1ZS5Qcm9wZXJ0aWVzO1xuICB9XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhpcyByZXNvdXJjZSB3YXMgbW9kaWZpZWQgYXQgYWxsXG4gICAqL1xuICBwdWJsaWMgZ2V0IGlzRGlmZmVyZW50KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmRpZmZlcmVuY2VDb3VudCA+IDAgfHwgdGhpcy5vbGRSZXNvdXJjZVR5cGUgIT09IHRoaXMubmV3UmVzb3VyY2VUeXBlO1xuICB9XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIHJlc291cmNlIHdhcyB1cGRhdGVkIGluLXBsYWNlXG4gICAqL1xuICBwdWJsaWMgZ2V0IGlzVXBkYXRlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmlzRGlmZmVyZW50ICYmICF0aGlzLmlzQWRkaXRpb24gJiYgIXRoaXMuaXNSZW1vdmFsO1xuICB9XG5cbiAgcHVibGljIGdldCBvbGRSZXNvdXJjZVR5cGUoKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5yZXNvdXJjZVR5cGVzLm9sZFR5cGU7XG4gIH1cblxuICBwdWJsaWMgZ2V0IG5ld1Jlc291cmNlVHlwZSgpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLnJlc291cmNlVHlwZXMubmV3VHlwZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBbGwgYWN0dWFsIHByb3BlcnR5IHVwZGF0ZXNcbiAgICovXG4gIHB1YmxpYyBnZXQgcHJvcGVydHlVcGRhdGVzKCk6IHsgW2tleTogc3RyaW5nXTogUHJvcGVydHlEaWZmZXJlbmNlPGFueT4gfSB7XG4gICAgcmV0dXJuIG9ubHlDaGFuZ2VzKHRoaXMucHJvcGVydHlEaWZmcyk7XG4gIH1cblxuICAvKipcbiAgICogQWxsIGFjdHVhbCBcIm90aGVyXCIgdXBkYXRlc1xuICAgKi9cbiAgcHVibGljIGdldCBvdGhlckNoYW5nZXMoKTogeyBba2V5OiBzdHJpbmddOiBEaWZmZXJlbmNlPGFueT4gfSB7XG4gICAgcmV0dXJuIG9ubHlDaGFuZ2VzKHRoaXMub3RoZXJEaWZmcyk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIHdoZXRoZXIgdGhlIHJlc291cmNlIHR5cGUgd2FzIGNoYW5nZWQgaW4gdGhpcyBkaWZmXG4gICAqXG4gICAqIFRoaXMgaXMgbm90IGEgdmFsaWQgb3BlcmF0aW9uIGluIENsb3VkRm9ybWF0aW9uIGJ1dCB0byBiZSBkZWZlbnNpdmUgd2UncmUgZ29pbmdcbiAgICogdG8gYmUgYXdhcmUgb2YgaXQgYW55d2F5LlxuICAgKi9cbiAgcHVibGljIGdldCByZXNvdXJjZVR5cGVDaGFuZ2VkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAodGhpcy5yZXNvdXJjZVR5cGVzLm9sZFR5cGUgIT09IHVuZGVmaW5lZFxuICAgICAgICAmJiB0aGlzLnJlc291cmNlVHlwZXMubmV3VHlwZSAhPT0gdW5kZWZpbmVkXG4gICAgICAgICYmIHRoaXMucmVzb3VyY2VUeXBlcy5vbGRUeXBlICE9PSB0aGlzLnJlc291cmNlVHlwZXMubmV3VHlwZSk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIHRoZSByZXNvdXJjZSB0eXBlIGlmIGl0IHdhcyB1bmNoYW5nZWRcbiAgICpcbiAgICogSWYgdGhlIHJlc291cmNlIHR5cGUgd2FzIGNoYW5nZWQsIGl0J3MgYW4gZXJyb3IgdG8gY2FsbCB0aGlzLlxuICAgKi9cbiAgcHVibGljIGdldCByZXNvdXJjZVR5cGUoKTogc3RyaW5nIHtcbiAgICBpZiAodGhpcy5yZXNvdXJjZVR5cGVDaGFuZ2VkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0Nhbm5vdCBnZXQgLnJlc291cmNlVHlwZSwgYmVjYXVzZSB0aGUgdHlwZSB3YXMgY2hhbmdlZCcpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5yZXNvdXJjZVR5cGVzLm9sZFR5cGUgfHwgdGhpcy5yZXNvdXJjZVR5cGVzLm5ld1R5cGUhO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlcGxhY2UgYSBQcm9wZXJ0eUNoYW5nZSBpbiB0aGlzIG9iamVjdFxuICAgKlxuICAgKiBUaGlzIGFmZmVjdHMgdGhlIHByb3BlcnR5IGRpZmYgYXMgaXQgaXMgc3VtbWFyaXplZCB0byB1c2VycywgYnV0IGl0IERPRVNcbiAgICogTk9UIGFmZmVjdCBlaXRoZXIgdGhlIFwib2xkVmFsdWVcIiBvciBcIm5ld1ZhbHVlXCIgdmFsdWVzOyB0aG9zZSBzdGlsbCBjb250YWluXG4gICAqIHRoZSBhY3R1YWwgdGVtcGxhdGUgdmFsdWVzIGFzIHByb3ZpZGVkIGJ5IHRoZSB1c2VyICh0aGV5IG1pZ2h0IHN0aWxsIGJlXG4gICAqIHVzZWQgZm9yIGRvd25zdHJlYW0gcHJvY2Vzc2luZykuXG4gICAqL1xuICBwdWJsaWMgc2V0UHJvcGVydHlDaGFuZ2UocHJvcGVydHlOYW1lOiBzdHJpbmcsIGNoYW5nZTogUHJvcGVydHlEaWZmZXJlbmNlPGFueT4pIHtcbiAgICB0aGlzLnByb3BlcnR5RGlmZnNbcHJvcGVydHlOYW1lXSA9IGNoYW5nZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgY2hhbmdlSW1wYWN0KCk6IFJlc291cmNlSW1wYWN0IHtcbiAgICAvLyBDaGVjayB0aGUgVHlwZSBmaXJzdFxuICAgIGlmICh0aGlzLnJlc291cmNlVHlwZXMub2xkVHlwZSAhPT0gdGhpcy5yZXNvdXJjZVR5cGVzLm5ld1R5cGUpIHtcbiAgICAgIGlmICh0aGlzLnJlc291cmNlVHlwZXMub2xkVHlwZSA9PT0gdW5kZWZpbmVkKSB7IHJldHVybiBSZXNvdXJjZUltcGFjdC5XSUxMX0NSRUFURTsgfVxuICAgICAgaWYgKHRoaXMucmVzb3VyY2VUeXBlcy5uZXdUeXBlID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMub2xkVmFsdWUhLkRlbGV0aW9uUG9saWN5ID09PSAnUmV0YWluJ1xuICAgICAgICAgID8gUmVzb3VyY2VJbXBhY3QuV0lMTF9PUlBIQU5cbiAgICAgICAgICA6IFJlc291cmNlSW1wYWN0LldJTExfREVTVFJPWTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBSZXNvdXJjZUltcGFjdC5XSUxMX1JFUExBQ0U7XG4gICAgfVxuXG4gICAgLy8gQmFzZSBpbXBhY3QgKGJlZm9yZSB3ZSBtaXggaW4gdGhlIHdvcnN0IG9mIHRoZSBwcm9wZXJ0eSBpbXBhY3RzKTtcbiAgICAvLyBXSUxMX1VQREFURSBpZiB3ZSBoYXZlIFwib3RoZXJcIiBjaGFuZ2VzLCBOT19DSEFOR0UgaWYgdGhlcmUgYXJlIG5vIFwib3RoZXJcIiBjaGFuZ2VzLlxuICAgIGNvbnN0IGJhc2VJbXBhY3QgPSBPYmplY3Qua2V5cyh0aGlzLm90aGVyQ2hhbmdlcykubGVuZ3RoID4gMCA/IFJlc291cmNlSW1wYWN0LldJTExfVVBEQVRFIDogUmVzb3VyY2VJbXBhY3QuTk9fQ0hBTkdFO1xuXG4gICAgcmV0dXJuIE9iamVjdC52YWx1ZXModGhpcy5wcm9wZXJ0eURpZmZzKVxuICAgICAgLm1hcChlbHQgPT4gZWx0LmNoYW5nZUltcGFjdClcbiAgICAgIC5yZWR1Y2Uod29yc3RJbXBhY3QsIGJhc2VJbXBhY3QpO1xuICB9XG5cbiAgLyoqXG4gICAqIENvdW50IG9mIGFjdHVhbCBkaWZmZXJlbmNlcyAobm90IG9mIGVsZW1lbnRzKVxuICAgKi9cbiAgcHVibGljIGdldCBkaWZmZXJlbmNlQ291bnQoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gT2JqZWN0LnZhbHVlcyh0aGlzLnByb3BlcnR5VXBkYXRlcykubGVuZ3RoXG4gICAgICArIE9iamVjdC52YWx1ZXModGhpcy5vdGhlckNoYW5nZXMpLmxlbmd0aDtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbnZva2UgYSBjYWxsYmFjayBmb3IgZWFjaCBhY3R1YWwgZGlmZmVyZW5jZVxuICAgKi9cbiAgcHVibGljIGZvckVhY2hEaWZmZXJlbmNlKGNiOiAodHlwZTogJ1Byb3BlcnR5JyB8ICdPdGhlcicsIG5hbWU6IHN0cmluZywgdmFsdWU6IERpZmZlcmVuY2U8YW55PiB8IFByb3BlcnR5RGlmZmVyZW5jZTxhbnk+KSA9PiBhbnkpIHtcbiAgICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyh0aGlzLnByb3BlcnR5VXBkYXRlcykuc29ydCgpKSB7XG4gICAgICBjYignUHJvcGVydHknLCBrZXksIHRoaXMucHJvcGVydHlVcGRhdGVzW2tleV0pO1xuICAgIH1cbiAgICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyh0aGlzLm90aGVyQ2hhbmdlcykuc29ydCgpKSB7XG4gICAgICBjYignT3RoZXInLCBrZXksIHRoaXMub3RoZXJEaWZmc1trZXldKTtcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzUHJvcGVydHlEaWZmZXJlbmNlPFQ+KGRpZmY6IERpZmZlcmVuY2U8VD4pOiBkaWZmIGlzIFByb3BlcnR5RGlmZmVyZW5jZTxUPiB7XG4gIHJldHVybiAoZGlmZiBhcyBQcm9wZXJ0eURpZmZlcmVuY2U8VD4pLmNoYW5nZUltcGFjdCAhPT0gdW5kZWZpbmVkO1xufVxuXG4vKipcbiAqIEZpbHRlciBhIG1hcCBvZiBJRGlmZmVyZW5jZXMgZG93biB0byBvbmx5IHJldGFpbiB0aGUgYWN0dWFsIGNoYW5nZXNcbiAqL1xuZnVuY3Rpb24gb25seUNoYW5nZXM8ViwgVCBleHRlbmRzIElEaWZmZXJlbmNlPFY+Pih4czoge1trZXk6IHN0cmluZ106IFR9KToge1trZXk6IHN0cmluZ106IFR9IHtcbiAgY29uc3QgcmV0OiB7IFtrZXk6IHN0cmluZ106IFQgfSA9IHt9O1xuICBmb3IgKGNvbnN0IFtrZXksIGRpZmZdIG9mIE9iamVjdC5lbnRyaWVzKHhzKSkge1xuICAgIGlmIChkaWZmLmlzRGlmZmVyZW50KSB7XG4gICAgICByZXRba2V5XSA9IGRpZmY7XG4gICAgfVxuICB9XG4gIHJldHVybiByZXQ7XG59XG4iXX0=
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Compares two objects for equality, deeply. The function handles arguments that are
|
|
3
|
+
* +null+, +undefined+, arrays and objects. For objects, the function will not take the
|
|
4
|
+
* object prototype into account for the purpose of the comparison, only the values of
|
|
5
|
+
* properties reported by +Object.keys+.
|
|
6
|
+
*
|
|
7
|
+
* If both operands can be parsed to equivalent numbers, will return true.
|
|
8
|
+
* This makes diff consistent with CloudFormation, where a numeric 10 and a literal "10"
|
|
9
|
+
* are considered equivalent.
|
|
10
|
+
*
|
|
11
|
+
* @param lvalue the left operand of the equality comparison.
|
|
12
|
+
* @param rvalue the right operand of the equality comparison.
|
|
13
|
+
*
|
|
14
|
+
* @returns +true+ if both +lvalue+ and +rvalue+ are equivalent to each other.
|
|
15
|
+
*/
|
|
16
|
+
export declare function deepEqual(lvalue: any, rvalue: any): boolean;
|
|
17
|
+
/**
|
|
18
|
+
* Produce the differences between two maps, as a map, using a specified diff function.
|
|
19
|
+
*
|
|
20
|
+
* @param oldValue the old map.
|
|
21
|
+
* @param newValue the new map.
|
|
22
|
+
* @param elementDiff the diff function.
|
|
23
|
+
*
|
|
24
|
+
* @returns a map representing the differences between +oldValue+ and +newValue+.
|
|
25
|
+
*/
|
|
26
|
+
export declare function diffKeyedEntities<T>(oldValue: {
|
|
27
|
+
[key: string]: any;
|
|
28
|
+
} | undefined, newValue: {
|
|
29
|
+
[key: string]: any;
|
|
30
|
+
} | undefined, elementDiff: (oldElement: any, newElement: any, key: string) => T): {
|
|
31
|
+
[name: string]: T;
|
|
32
|
+
};
|
|
33
|
+
/**
|
|
34
|
+
* Computes the union of two sets of strings.
|
|
35
|
+
*
|
|
36
|
+
* @param lv the left set of strings.
|
|
37
|
+
* @param rv the right set of strings.
|
|
38
|
+
*
|
|
39
|
+
* @returns a new array containing all elemebts from +lv+ and +rv+, with no duplicates.
|
|
40
|
+
*/
|
|
41
|
+
export declare function unionOf(lv: string[] | Set<string>, rv: string[] | Set<string>): string[];
|