aws-cdk 2.9.0 → 2.13.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CONTRIBUTING.md +1 -1
- package/README.md +3 -2
- package/bin/cdk.d.ts +1 -3
- package/bin/cdk.js +3 -511
- package/build-info.json +2 -2
- package/lib/api/aws-auth/sdk.d.ts +2 -0
- package/lib/api/aws-auth/sdk.js +4 -1
- package/lib/api/cloudformation-deployments.d.ts +8 -5
- package/lib/api/cloudformation-deployments.js +90 -38
- package/lib/api/cxapp/cloud-executable.js +12 -8
- package/lib/api/evaluate-cloudformation-template.js +34 -2
- package/lib/api/hotswap/appsync-mapping-templates.d.ts +3 -0
- package/lib/api/hotswap/appsync-mapping-templates.js +69 -0
- package/lib/api/hotswap/lambda-functions.js +48 -13
- package/lib/api/hotswap-deployments.js +3 -1
- package/lib/api/toolkit-info.js +5 -5
- package/lib/api/util/placeholders.d.ts +6 -0
- package/lib/api/util/placeholders.js +25 -0
- package/lib/assets.js +2 -1
- package/lib/cdk-toolkit.js +3 -3
- package/lib/cli.d.ts +3 -0
- package/lib/cli.js +545 -0
- package/lib/commands/context.d.ts +0 -16
- package/lib/commands/context.js +2 -20
- package/lib/commands/docs.d.ts +0 -13
- package/lib/commands/docs.js +2 -19
- package/lib/commands/doctor.d.ts +0 -5
- package/lib/commands/doctor.js +2 -9
- package/lib/context-providers/ami.d.ts +1 -1
- package/lib/context-providers/ami.js +3 -3
- package/lib/context-providers/availability-zones.d.ts +1 -1
- package/lib/context-providers/availability-zones.js +3 -3
- package/lib/context-providers/endpoint-service-availability-zones.d.ts +1 -1
- package/lib/context-providers/endpoint-service-availability-zones.js +3 -3
- package/lib/context-providers/hosted-zones.d.ts +1 -1
- package/lib/context-providers/hosted-zones.js +3 -3
- package/lib/context-providers/index.d.ts +6 -0
- package/lib/context-providers/index.js +18 -5
- package/lib/context-providers/keys.d.ts +1 -1
- package/lib/context-providers/keys.js +3 -3
- package/lib/context-providers/load-balancers.d.ts +1 -1
- package/lib/context-providers/load-balancers.js +4 -4
- package/lib/context-providers/security-groups.d.ts +1 -1
- package/lib/context-providers/security-groups.js +3 -3
- package/lib/context-providers/ssm-parameters.d.ts +1 -1
- package/lib/context-providers/ssm-parameters.js +3 -3
- package/lib/context-providers/vpcs.d.ts +1 -1
- package/lib/context-providers/vpcs.js +6 -3
- package/lib/index.d.ts +3 -0
- package/lib/index.js +17 -0
- package/lib/init-templates/v1/app/csharp/cdk.template.json +1 -1
- package/lib/init-templates/v1/app/fsharp/cdk.template.json +1 -1
- package/lib/init-templates/v1/app/javascript/README.md +5 -5
- package/lib/init-templates/v1/app/typescript/README.md +7 -7
- package/lib/init-templates/v1/lib/typescript/README.template.md +4 -4
- package/lib/init-templates/v1/sample-app/csharp/cdk.template.json +1 -1
- package/lib/init-templates/v1/sample-app/fsharp/cdk.template.json +1 -1
- package/lib/init-templates/v1/sample-app/javascript/README.template.md +7 -6
- package/lib/init-templates/v1/sample-app/typescript/README.template.md +9 -9
- package/lib/init-templates/v2/app/csharp/cdk.template.json +1 -1
- package/lib/init-templates/v2/app/fsharp/cdk.template.json +1 -1
- package/lib/init-templates/v2/app/javascript/README.md +5 -5
- package/lib/init-templates/v2/app/typescript/README.md +7 -7
- package/lib/init-templates/v2/lib/typescript/README.template.md +4 -4
- package/lib/init-templates/v2/sample-app/csharp/cdk.template.json +1 -1
- package/lib/init-templates/v2/sample-app/fsharp/cdk.template.json +1 -1
- package/lib/init-templates/v2/sample-app/javascript/README.template.md +5 -5
- package/lib/init-templates/v2/sample-app/typescript/README.template.md +7 -7
- package/lib/plugin.d.ts +15 -1
- package/lib/plugin.js +17 -3
- package/lib/util/asset-publishing.d.ts +1 -1
- package/lib/util/asset-publishing.js +4 -4
- package/npm-shrinkwrap.json +96 -52
- package/package.json +16 -15
- package/test/api/cloud-executable.test.js +57 -32
- package/test/api/cloudformation-deployments.test.js +643 -1
- package/test/api/hotswap/appsync-mapping-templates-hotswap-deployments.test.d.ts +1 -0
- package/test/api/hotswap/appsync-mapping-templates-hotswap-deployments.test.js +336 -0
- package/test/api/hotswap/hotswap-deployments.test.js +2 -2
- package/test/api/hotswap/hotswap-test-setup.d.ts +7 -1
- package/test/api/hotswap/hotswap-test-setup.js +22 -3
- package/test/api/hotswap/lambda-functions-docker-hotswap-deployments.test.js +59 -2
- package/test/api/hotswap/lambda-functions-hotswap-deployments.test.js +175 -2
- package/test/api/hotswap/lambda-functions-inline-hotswap-deployments.test.js +2 -2
- package/test/api/hotswap/lambda-versions-aliases-hotswap-deployments.test.js +2 -2
- package/test/api/hotswap/state-machine-hotswap-deployments.test.js +72 -1
- package/test/api/logs/logs-monitor.test.js +9 -13
- package/test/cdk-docs.test.js +4 -7
- package/test/cdk-doctor.test.js +3 -4
- package/test/context-providers/generic.test.js +7 -6
- package/test/context-providers/vpcs.test.js +132 -1
- package/test/diff-nested-stacks-templates/one-output-one-param-stack.nested.template.json +20 -0
- package/test/diff-nested-stacks-templates/one-resource-one-stack-stack.nested.template.json +19 -0
- package/test/diff-nested-stacks-templates/one-resource-stack.nested.template.json +10 -0
- package/test/diff-nested-stacks-templates/one-resource-two-stacks-stack.nested.template.json +28 -0
- package/test/diff.test.js +215 -96
- package/test/util/mock-sdk.d.ts +9 -1
- package/test/util/mock-sdk.js +13 -3
- package/test/util.js +18 -1
|
@@ -443,4 +443,75 @@ test("will not perform a hotswap deployment if it doesn't know how to handle a s
|
|
|
443
443
|
// THEN
|
|
444
444
|
await expect(() => hotswapMockSdkProvider.tryHotswapDeployment(cdkStackArtifact)).rejects.toThrow("We don't support the 'UnknownAttribute' attribute of the 'AWS::S3::Bucket' resource. This is a CDK limitation. Please report it at https://github.com/aws/aws-cdk/issues/new/choose");
|
|
445
445
|
});
|
|
446
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhdGUtbWFjaGluZS1ob3Rzd2FwLWRlcGxveW1lbnRzLnRlc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJzdGF0ZS1tYWNoaW5lLWhvdHN3YXAtZGVwbG95bWVudHMudGVzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUNBLDhDQUE4QztBQUU5QyxJQUFJLDJCQUFrSSxDQUFDO0FBQ3ZJLElBQUksc0JBQW9ELENBQUM7QUFFekQsVUFBVSxDQUFDLEdBQUcsRUFBRTtJQUNkLHNCQUFzQixHQUFHLEtBQUssQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO0lBQ25ELDJCQUEyQixHQUFHLElBQUksQ0FBQyxFQUFFLEVBQUUsQ0FBQztJQUN4QyxzQkFBc0IsQ0FBQyx5QkFBeUIsQ0FBQywyQkFBMkIsQ0FBQyxDQUFDO0FBQ2hGLENBQUMsQ0FBQyxDQUFDO0FBRUgsSUFBSSxDQUFDLGlFQUFpRSxFQUFFLEtBQUssSUFBSSxFQUFFO0lBQ2pGLFFBQVE7SUFDUixNQUFNLGdCQUFnQixHQUFHLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQztRQUNoRCxRQUFRLEVBQUU7WUFDUixTQUFTLEVBQUU7Z0JBQ1QsT0FBTyxFQUFFO29CQUNQLElBQUksRUFBRSxrQ0FBa0M7aUJBQ3pDO2FBQ0Y7U0FDRjtLQUNGLENBQUMsQ0FBQztJQUVILE9BQU87SUFDUCxNQUFNLGlCQUFpQixHQUFHLE1BQU0sc0JBQXNCLENBQUMsb0JBQW9CLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztJQUU5RixPQUFPO0lBQ1AsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUMsYUFBYSxFQUFFLENBQUM7QUFDNUMsQ0FBQyxDQUFDLENBQUM7QUFFSCxJQUFJLENBQUMsd0hBQXdILEVBQUUsS0FBSyxJQUFJLEVBQUU7SUFDeEksUUFBUTtJQUNSLEtBQUssQ0FBQywwQkFBMEIsQ0FBQztRQUMvQixTQUFTLEVBQUU7WUFDVCxPQUFPLEVBQUU7Z0JBQ1AsSUFBSSxFQUFFLGtDQUFrQztnQkFDeEMsVUFB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QUM5RCxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMscUxBQXFMLENBQUMsQ0FBQztBQUMzTSxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFN0ZXBGdW5jdGlvbnMgfSBmcm9tICdhd3Mtc2RrJztcbmltcG9ydCAqIGFzIHNldHVwIGZyb20gJy4vaG90c3dhcC10ZXN0LXNldHVwJztcblxubGV0IG1vY2tVcGRhdGVNYWNoaW5lRGVmaW5pdGlvbjogKHBhcmFtczogU3RlcEZ1bmN0aW9ucy5UeXBlcy5VcGRhdGVTdGF0ZU1hY2hpbmVJbnB1dCkgPT4gU3RlcEZ1bmN0aW9ucy5UeXBlcy5VcGRhdGVTdGF0ZU1hY2hpbmVPdXRwdXQ7XG5sZXQgaG90c3dhcE1vY2tTZGtQcm92aWRlcjogc2V0dXAuSG90c3dhcE1vY2tTZGtQcm92aWRlcjtcblxuYmVmb3JlRWFjaCgoKSA9PiB7XG4gIGhvdHN3YXBNb2NrU2RrUHJvdmlkZXIgPSBzZXR1cC5zZXR1cEhvdHN3YXBUZXN0cygpO1xuICBtb2NrVXBkYXRlTWFjaGluZURlZmluaXRpb24gPSBqZXN0LmZuKCk7XG4gIGhvdHN3YXBNb2NrU2RrUHJvdmlkZXIuc2V0VXBkYXRlU3RhdGVNYWNoaW5lTW9jayhtb2NrVXBkYXRlTWFjaGluZURlZmluaXRpb24pO1xufSk7XG5cbnRlc3QoJ3JldHVybnMgdW5kZWZpbmVkIHdoZW4gYSBuZXcgU3RhdGVNYWNoaW5lIGlzIGFkZGVkIHRvIHRoZSBTdGFjaycsIGFzeW5jICgpID0+IHtcbiAgLy8gR0lWRU5cbiAgY29uc3QgY2RrU3RhY2tBcnRpZmFjdCA9IHNldHVwLmNka1N0YWNrQXJ0aWZhY3RPZih7XG4gICAgdGVtcGxhdGU6IHtcbiAgICAgIFJlc291cmNlczoge1xuICAgICAgICBNYWNoaW5lOiB7XG4gICAgICAgICAgVHlwZTogJ0FXUzo6U3RlcEZ1bmN0aW9uczo6U3RhdGVNYWNoaW5lJyxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfSxcbiAgfSk7XG5cbiAgLy8gV0hFTlxuICBjb25zdCBkZXBsb3lTdGFja1Jlc3VsdCA9IGF3YWl0IGhvdHN3YXBNb2NrU2RrUHJvdmlkZXIudHJ5SG90c3dhcERlcGxveW1lbnQoY2RrU3RhY2tBcnRpZmFjdCk7XG5cbiAgLy8gVEhFTlxuICBleHBlY3QoZGVwbG95U3RhY2tSZXN1bHQpLnRvQmVVbmRlZmluZWQoKTtcbn0pO1xuXG50ZXN0KCdjYWxscyB0aGUgdXBkYXRlU3RhdGVNYWNoaW5lKCkgQVBJIHdoZW4gaXQgcmVjZWl2ZXMgb25seSBhIGRlZmluaXRpb25TdHJpbmcgY2hhbmdlIHdpdGhvdXQgRm46OkpvaW4gaW4gYSBzdGF0ZSBtYWNoaW5lJywgYXN5bmMgKCkgPT4ge1xuICAvLyBHSVZFTlxuICBzZXR1cC5zZXRDdXJyZW50Q2ZuU3RhY2tUZW1wbGF0ZSh7XG4gICAgUmVzb3VyY2VzOiB7XG4gICAgICBNYWNoaW5lOiB7XG4gICAgICAgIFR5cGU6ICdBV1M6OlN0ZXBGdW5jdGlvbnM6OlN0YXRlTWFjaGluZScsXG4gICAgICAgIFByb3BlcnRpZXM6IHtcbiAgICAgICAgICBEZWZpbml0aW9uU3RyaW5nOiAneyBQcm9wOiBcIm9sZC12YWx1ZVwiIH0nLFxuICAgICAgICAgIFN0YXRlTWFjaGluZU5hbWU6ICdteS1tYWNoaW5lJyxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfSxcbiAgfSk7XG4gIGNvbnN0IGNka1N0YWNrQXJ0aWZhY3QgPSBzZXR1cC5jZGtTdGFja0FydGlmYWN0T2Yoe1xuICAgIHRlbXBsYXRlOiB7XG4gICAgICBSZXNvdXJjZXM6IHtcbiAgICAgICAgTWFjaGluZToge1xuICAgICAgICAgIFR5cGU6ICdBV1M6OlN0ZXBGdW5jdGlvbnM6OlN0YXRlTWFjaGluZScsXG4gICAgICAgICAgUHJvcGVydGllczoge1xuICAgICAgICAgICAgRGVmaW5pdGlvblN0cmluZzogJ3sgUHJvcDogXCJuZXctdmFsdWVcIiB9JyxcbiAgICAgICAgICAgIFN0YXRlTWFjaGluZU5hbWU6ICdteS1tYWNoaW5lJyxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9LFxuICB9KTtcblxuICAvLyBXSEVOXG4gIGNvbnN0IGRlcGxveVN0YWNrUmVzdWx0ID0gYXdhaXQgaG90c3dhcE1vY2tTZGtQcm92aWRlci50cnlIb3Rzd2FwRGVwbG95bWVudChjZGtTdGFja0FydGlmYWN0KTtcblxuICAvLyBUSEVOXG4gIGV4cGVjdChkZXBsb3lTdGFja1Jlc3VsdCkubm90LnRvQmVVbmRlZmluZWQoKTtcbiAgZXhwZWN0KG1vY2tVcGRhdGVNYWNoaW5lRGVmaW5pdGlvbikudG9IYXZlQmVlbkNhbGxlZFdpdGgoe1xuICAgIGRlZmluaXRpb246ICd7IFByb3A6IFwibmV3LXZhbHVlXCIgfScsXG4gICAgc3RhdGVNYWNoaW5lQXJuOiAnYXJuOmF3czpzdGF0ZXM6aGVyZToxMjM0NTY3ODkwMTI6c3RhdGVNYWNoaW5lOm15LW1hY2hpbmUnLFxuICB9KTtcbn0pO1xuXG50ZXN0KCdjYWxscyB0aGUgdXBkYXRlU3RhdGVNYWNoaW5lKCkgQVBJIHdoZW4gaXQgcmVjZWl2ZXMgb25seSBhIGRlZmluaXRpb25TdHJpbmcgY2hhbmdlIHdpdGggRm46OkpvaW4gaW4gYSBzdGF0ZSBtYWNoaW5lJywgYXN5bmMgKCkgPT4ge1xuICAvLyBHSVZFTlxuICBzZXR1cC5zZXRDdXJyZW50Q2ZuU3RhY2tUZW1wbGF0ZSh7XG4gICAgUmVzb3VyY2VzOiB7XG4gICAgICBNYWNoaW5lOiB7XG4gICAgICAgIFR5cGU6ICdBV1M6OlN0ZXBGdW5jdGlvbnM6OlN0YXRlTWFjaGluZScsXG4gICAgICAgIFByb3BlcnRpZXM6IHtcbiAgICAgICAgICBEZWZpbml0aW9uU3RyaW5nOiB7XG4gICAgICAgICAgICAnRm46OkpvaW4nOiBbXG4gICAgICAgICAgICAgICdcXG4nLFxuICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgJ3snLFxuICAgICAgICAgICAgICAgICcgIFwiU3RhcnRBdFwiIDogXCJTdWNjZXNzU3RhdGVcIicsXG4gICAgICAgICAgICAgICAgJyAgXCJTdGF0ZXNcIiA6IHsnLFxuICAgICAgICAgICAgICAgICcgICAgXCJTdWNjZXNzU3RhdGVcIjogeycsXG4gICAgICAgICAgICAgICAgJyAgICAgIFwiVHlwZVwiOiBcIlBhc3NcIicsXG4gICAgICAgICAgICAgICAgJyAgICAgIFwiUmVzdWx0XCI6IFwiU3VjY2Vzc1wiJyxcbiAgICAgICAgICAgICAgICAnICAgICAgXCJFbmRcIjogdHJ1ZScsXG4gICAgICAgICAgICAgICAgJyAgICB9JyxcbiAgICAgICAgICAgICAgICAnICB9JyxcbiAgICAgICAgICAgICAgICAnfScsXG4gICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgU3RhdGVNYWNoaW5lTmFtZTogJ215LW1hY2hpbmUnLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9LFxuICB9KTtcbiAgY29uc3QgY2RrU3RhY2tBcnRpZmFjdCA9IHNldHVwLmNka1N0YWNrQXJ0aWZhY3RPZih7XG4gICAgdGVtcGxhdGU6IHtcbiAgICAgIFJlc291cmNlczoge1xuICAgICAgICBNYWNoaW5lOiB7XG4gICAgICAgICAgVHlwZTogJ0FXUzo6U3RlcEZ1bmN0aW9uczo6U3RhdGVNYWNoaW5lJyxcbiAgICAgICAgICBQcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgICBEZWZpbml0aW9uU3RyaW5nOiB7XG4gICAgICAgICAgICAgICdGbjo6Sm9pbic6IFtcbiAgICAgICAgICAgICAgICAnXFxuJyxcbiAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAneycsXG4gICAgICAgICAgICAgICAgICAnICBcIlN0YXJ0QXRcIjogXCJTdWNjZXNzU3RhdGVcIiwnLFxuICAgICAgICAgICAgICAgICAgJyAgXCJTdGF0ZXNcIjogeycsXG4gICAgICAgICAgICAgICAgICAnICAgIFwiU3VjY2Vzc1N0YXRlXCI6IHsnLFxuICAgICAgICAgICAgICAgICAgJyAgICAgIFwiVHlwZVwiOiBcIlN1Y2NlZWRcIicsXG4gICAgICAgICAgICAgICAgICAnICAgIH0nLFxuICAgICAgICAgICAgICAgICAgJyAgfScsXG4gICAgICAgICAgICAgICAgICAnfScsXG4gICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBTdGF0ZU1hY2hpbmVOYW1lOiAnbXktbWFjaGluZScsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfSxcbiAgfSk7XG5cbiAgLy8gV0hFTlxuICBjb25zdCBkZXBsb3lTdGFja1Jlc3VsdCA9IGF3YWl0IGhvdHN3YXBNb2NrU2RrUHJvdmlkZXIudHJ5SG90c3dhcERlcGxveW1lbnQoY2RrU3RhY2tBcnRpZmFjdCk7XG5cbiAgLy8gVEhFTlxuICBleHBlY3QoZGVwbG95U3RhY2tSZXN1bHQpLm5vdC50b0JlVW5kZWZpbmVkKCk7XG4gIGV4cGVjdChtb2NrVXBkYXRlTWFjaGluZURlZmluaXRpb24pLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKHtcbiAgICBkZWZpbml0aW9uOiBKU09OLnN0cmluZ2lmeSh7XG4gICAgICBTdGFydEF0OiAnU3VjY2Vzc1N0YXRlJyxcbiAgICAgIFN0YXRlczoge1xuICAgICAgICBTdWNjZXNzU3RhdGU6IHtcbiAgICAgICAgICBUeXBlOiAnU3VjY2VlZCcsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH0sIG51bGwsIDIpLFxuICAgIHN0YXRlTWFjaGluZUFybjogJ2Fybjphd3M6c3RhdGVzOmhlcmU6MTIzNDU2Nzg5MDEyOnN0YXRlTWFjaGluZTpteS1tYWNoaW5lJyxcbiAgfSk7XG59KTtcblxudGVzdCgnY2FsbHMgdGhlIHVwZGF0ZVN0YXRlTWFjaGluZSgpIEFQSSB3aGVuIGl0IHJlY2VpdmVzIGEgY2hhbmdlIHRvIHRoZSBkZWZpbml0aW9uU3RyaW5nIGluIGEgc3RhdGUgbWFjaGluZSB0aGF0IGhhcyBubyBuYW1lJywgYXN5bmMgKCkgPT4ge1xuICAvLyBHSVZFTlxuICBzZXR1cC5zZXRDdXJyZW50Q2ZuU3RhY2tUZW1wbGF0ZSh7XG4gICAgUmVzb3VyY2VzOiB7XG4gICAgICBNYWNoaW5lOiB7XG4gICAgICAgIFR5cGU6ICdBV1M6OlN0ZXBGdW5jdGlvbnM6OlN0YXRlTWFjaGluZScsXG4gICAgICAgIFByb3BlcnRpZXM6IHtcbiAgICAgICAgICBEZWZpbml0aW9uU3RyaW5nOiAneyBcIlByb3BcIiA6IFwib2xkLXZhbHVlXCIgfScsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH0sXG4gIH0pO1xuICBjb25zdCBjZGtTdGFja0FydGlmYWN0ID0gc2V0dXAuY2RrU3RhY2tBcnRpZmFjdE9mKHtcbiAgICB0ZW1wbGF0ZToge1xuICAgICAgUmVzb3VyY2VzOiB7XG4gICAgICAgIE1hY2hpbmU6IHtcbiAgICAgICAgICBUeXBlOiAnQVdTOjpTdGVwRnVuY3Rpb25zOjpTdGF0ZU1hY2hpbmUnLFxuICAgICAgICAgIFByb3BlcnRpZXM6IHtcbiAgICAgICAgICAgIERlZmluaXRpb25TdHJpbmc6ICd7IFwiUHJvcFwiIDogXCJuZXctdmFsdWVcIiB9JyxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9LFxuICB9KTtcblxuICAvLyBXSEVOXG4gIHNldHVwLnB1c2hTdGFja1Jlc291cmNlU3VtbWFyaWVzKHNldHVwLnN0YWNrU3VtbWFyeU9mKCdNYWNoaW5lJywgJ0FXUzo6U3RlcEZ1bmN0aW9uczo6U3RhdGVNYWNoaW5lJywgJ2Fybjphd3M6c3RhdGVzOmhlcmU6MTIzNDU2Nzg5MDEyOnN0YXRlTWFjaGluZTpteS1tYWNoaW5lJykpO1xuICBjb25zdCBkZXBsb3lTdGFja1Jlc3VsdCA9IGF3YWl0IGhvdHN3YXBNb2NrU2RrUHJvdmlkZXIudHJ5SG90c3dhcERlcGxveW1lbnQoY2RrU3RhY2tBcnRpZmFjdCk7XG5cbiAgLy8gVEhFTlxuICBleHBlY3QoZGVwbG95U3RhY2tSZXN1bHQpLm5vdC50b0JlVW5kZWZpbmVkKCk7XG4gIGV4cGVjdChtb2NrVXBkYXRlTWFjaGluZURlZmluaXRpb24pLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKHtcbiAgICBkZWZpbml0aW9uOiAneyBcIlByb3BcIiA6IFwibmV3LXZhbHVlXCIgfScsXG4gICAgc3RhdGVNYWNoaW5lQXJuOiAnYXJuOmF3czpzdGF0ZXM6aGVyZToxMjM0NTY3ODkwMTI6c3RhdGVNYWNoaW5lOm15LW1hY2hpbmUnLFxuICB9KTtcbn0pO1xuXG50ZXN0KCdkb2VzIG5vdCBjYWxsIHRoZSB1cGRhdGVTdGF0ZU1hY2hpbmUoKSBBUEkgd2hlbiBpdCByZWNlaXZlcyBhIGNoYW5nZSB0byBhIHByb3BlcnR5IHRoYXQgaXMgbm90IHRoZSBkZWZpbml0aW9uU3RyaW5nIGluIGEgc3RhdGUgbWFjaGluZScsIGFzeW5jICgpID0+IHtcbiAgLy8gR0lWRU5cbiAgc2V0dXAuc2V0Q3VycmVudENmblN0YWNrVGVtcGxhdGUoe1xuICAgIFJlc291cmNlczoge1xuICAgICAgTWFjaGluZToge1xuICAgICAgICBUeXBlOiAnQVdTOjpTdGVwRnVuY3Rpb25zOjpTdGF0ZU1hY2hpbmUnLFxuICAgICAgICBQcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgRGVmaW5pdGlvblN0cmluZzogJ3sgXCJQcm9wXCIgOiBcIm9sZC12YWx1ZVwiIH0nLFxuICAgICAgICAgIExvZ2dpbmdDb25maWd1cmF0aW9uOiB7IC8vIG5vbi1kZWZpbml0aW9uU3RyaW5nIHByb3BlcnR5XG4gICAgICAgICAgICBJbmNsdWRlRXhlY3V0aW9uRGF0YTogdHJ1ZSxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9LFxuICB9KTtcbiAgY29uc3QgY2RrU3RhY2tBcnRpZmFjdCA9IHNldHVwLmNka1N0YWNrQXJ0aWZhY3RPZih7XG4gICAgdGVtcGxhdGU6IHtcbiAgICAgIFJlc291cmNlczoge1xuICAgICAgICBNYWNoaW5lOiB7XG4gICAgICAgICAgVHlwZTogJ0FXUzo6U3RlcEZ1bmN0aW9uczo6U3RhdGVNYWNoaW5lJyxcbiAgICAgICAgICBQcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgICBEZWZpbml0aW9uU3RyaW5nOiAneyBcIlByb3BcIiA6IFwibmV3LXZhbHVlXCIgfScsXG4gICAgICAgICAgICBMb2dnaW5nQ29uZmlndXJhdGlvbjoge1xuICAgICAgICAgICAgICBJbmNsdWRlRXhlY3V0aW9uRGF0YTogZmFsc2UsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH0sXG4gIH0pO1xuXG4gIC8vIFdIRU5cbiAgY29uc3QgZGVwbG95U3RhY2tSZXN1bHQgPSBhd2FpdCBob3Rzd2FwTW9ja1Nka1Byb3ZpZGVyLnRyeUhvdHN3YXBEZXBsb3ltZW50KGNka1N0YWNrQXJ0aWZhY3QpO1xuXG4gIC8vIFRIRU5cbiAgZXhwZWN0KGRlcGxveVN0YWNrUmVzdWx0KS50b0JlVW5kZWZpbmVkKCk7XG4gIGV4cGVjdChtb2NrVXBkYXRlTWFjaGluZURlZmluaXRpb24pLm5vdC50b0hhdmVCZWVuQ2FsbGVkKCk7XG59KTtcblxudGVzdCgnZG9lcyBub3QgY2FsbCB0aGUgdXBkYXRlU3RhdGVNYWNoaW5lKCkgQVBJIHdoZW4gYSByZXNvdXJjZSBoYXMgYSBEZWZpbml0aW9uU3RyaW5nIHByb3BlcnR5IGJ1dCBpcyBub3QgYW4gQVdTOjpTdGVwRnVuY3Rpb25zOjpTdGF0ZU1hY2hpbmUgaXMgY2hhbmdlZCcsIGFzeW5jICgpID0+IHtcbiAgLy8gR0lWRU5cbiAgc2V0dXAuc2V0Q3VycmVudENmblN0YWNrVGVtcGxhdGUoe1xuICAgIFJlc291cmNlczoge1xuICAgICAgTWFjaGluZToge1xuICAgICAgICBUeXBlOiAnQVdTOjpOb3RTdGVwRnVuY3Rpb25zOjpOb3RTdGF0ZU1hY2hpbmUnLFxuICAgICAgICBQcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgRGVmaW5pdGlvblN0cmluZzogJ3sgUHJvcDogXCJvbGQtdmFsdWVcIiB9JyxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfSxcbiAgfSk7XG4gIGNvbnN0IGNka1N0YWNrQXJ0aWZhY3QgPSBzZXR1cC5jZGtTdGFja0FydGlmYWN0T2Yoe1xuICAgIHRlbXBsYXRlOiB7XG4gICAgICBSZXNvdXJjZXM6IHtcbiAgICAgICAgTWFjaGluZToge1xuICAgICAgICAgIFR5cGU6ICdBV1M6Ok5vdFN0ZXBGdW5jdGlvbnM6Ok5vdFN0YXRlTWFjaGluZScsXG4gICAgICAgICAgUHJvcGVydGllczoge1xuICAgICAgICAgICAgRGVmaW5pdGlvblN0cmluZzogJ3sgUHJvcDogXCJuZXctdmFsdWVcIiB9JyxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9LFxuICB9KTtcblxuICAvLyBXSEVOXG4gIGNvbnN0IGRlcGxveVN0YWNrUmVzdWx0ID0gYXdhaXQgaG90c3dhcE1vY2tTZGtQcm92aWRlci50cnlIb3Rzd2FwRGVwbG95bWVudChjZGtTdGFja0FydGlmYWN0KTtcblxuICAvLyBUSEVOXG4gIGV4cGVjdChkZXBsb3lTdGFja1Jlc3VsdCkudG9CZVVuZGVmaW5lZCgpO1xuICBleHBlY3QobW9ja1VwZGF0ZU1hY2hpbmVEZWZpbml0aW9uKS5ub3QudG9IYXZlQmVlbkNhbGxlZCgpO1xufSk7XG5cbnRlc3QoJ2NhbiBjb3JyZWN0bHkgaG90c3dhcCBvbGQgc3R5bGUgc3ludGggY2hhbmdlcycsIGFzeW5jICgpID0+IHtcbiAgLy8gR0lWRU5cbiAgc2V0dXAuc2V0Q3VycmVudENmblN0YWNrVGVtcGxhdGUoe1xuICAgIFBhcmFtZXRlcnM6IHsgQXNzZXRQYXJhbTE6IHsgVHlwZTogJ1N0cmluZycgfSB9LFxuICAgIFJlc291cmNlczoge1xuICAgICAgTWFjaGluZToge1xuICAgICAgICBUeXBlOiAnQVdTOjpTdGVwRnVuY3Rpb25zOjpTdGF0ZU1hY2hpbmUnLFxuICAgICAgICBQcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgRGVmaW5pdGlvblN0cmluZzogeyBSZWY6ICdBc3NldFBhcmFtMScgfSxcbiAgICAgICAgICBTdGF0ZU1hY2hpbmVOYW1lOiAnbWFjaGluZS1uYW1lJyxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfSxcbiAgfSk7XG4gIGNvbnN0IGNka1N0YWNrQXJ0aWZhY3QgPSBzZXR1cC5jZGtTdGFja0FydGlmYWN0T2Yoe1xuICAgIHRlbXBsYXRlOiB7XG4gICAgICBQYXJhbWV0ZXJzOiB7IEFzc2V0UGFyYW0yOiB7IFR5cGU6IFN0cmluZyB9IH0sXG4gICAgICBSZXNvdXJjZXM6IHtcbiAgICAgICAgTWFjaGluZToge1xuICAgICAgICAgIFR5cGU6ICdBV1M6OlN0ZXBGdW5jdGlvbnM6OlN0YXRlTWFjaGluZScsXG4gICAgICAgICAgUHJvcGVydGllczoge1xuICAgICAgICAgICAgRGVmaW5pdGlvblN0cmluZzogeyBSZWY6ICdBc3NldFBhcmFtMicgfSxcbiAgICAgICAgICAgIFN0YXRlTWFjaGluZU5hbWU6ICdtYWNoaW5lLW5hbWUnLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH0sXG4gIH0pO1xuXG4gIC8vIFdIRU5cbiAgc2V0dXAucHVzaFN0YWNrUmVzb3VyY2VTdW1tYXJpZXMoc2V0dXAuc3RhY2tTdW1tYXJ5T2YoJ01hY2hpbmUnLCAnQVdTOjpTdGVwRnVuY3Rpb25zOjpTdGF0ZU1hY2hpbmUnLCAnYXJuOmF3czpzdGF0ZXM6aGVyZToxMjM0NTY3ODkwMTI6c3RhdGVNYWNoaW5lOm15LW1hY2hpbmUnKSk7XG4gIGNvbnN0IGRlcGxveVN0YWNrUmVzdWx0ID0gYXdhaXQgaG90c3dhcE1vY2tTZGtQcm92aWRlci50cnlIb3Rzd2FwRGVwbG95bWVudChjZGtTdGFja0FydGlmYWN0LCB7IEFzc2V0UGFyYW0yOiAnYXNzZXQtcGFyYW0tMicgfSk7XG5cbiAgLy8gVEhFTlxuICBleHBlY3QoZGVwbG95U3RhY2tSZXN1bHQpLm5vdC50b0JlVW5kZWZpbmVkKCk7XG4gIGV4cGVjdChtb2NrVXBkYXRlTWFjaGluZURlZmluaXRpb24pLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKHtcbiAgICBkZWZpbml0aW9uOiAnYXNzZXQtcGFyYW0tMicsXG4gICAgc3RhdGVNYWNoaW5lQXJuOiAnYXJuOmF3czpzdGF0ZXM6aGVyZToxMjM0NTY3ODkwMTI6c3RhdGVNYWNoaW5lOm1hY2hpbmUtbmFtZScsXG4gIH0pO1xufSk7XG5cbnRlc3QoJ2NhbGxzIHRoZSB1cGRhdGVTdGF0ZU1hY2hpbmUoKSBBUEkgd2hlbiBpdCByZWNlaXZlcyBhIGNoYW5nZSB0byB0aGUgZGVmaW5pdGlvblN0cmluZyB0aGF0IHVzZXMgQXR0cmlidXRlcyBpbiBhIHN0YXRlIG1hY2hpbmUnLCBhc3luYyAoKSA9PiB7XG4gIC8vIEdJVkVOXG4gIHNldHVwLnNldEN1cnJlbnRDZm5TdGFja1RlbXBsYXRlKHtcbiAgICBSZXNvdXJjZXM6IHtcbiAgICAgIEZ1bmM6IHtcbiAgICAgICAgVHlwZTogJ0FXUzo6TGFtYmRhOjpGdW5jdGlvbicsXG4gICAgICB9LFxuICAgICAgTWFjaGluZToge1xuICAgICAgICBUeXBlOiAnQVdTOjpTdGVwRnVuY3Rpb25zOjpTdGF0ZU1hY2hpbmUnLFxuICAgICAgICBQcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgRGVmaW5pdGlvblN0cmluZzoge1xuICAgICAgICAgICAgJ0ZuOjpKb2luJzogW1xuICAgICAgICAgICAgICAnXFxuJyxcbiAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICd7JyxcbiAgICAgICAgICAgICAgICAnICBcIlN0YXJ0QXRcIiA6IFwiU3VjY2Vzc1N0YXRlXCInLFxuICAgICAgICAgICAgICAgICcgIFwiU3RhdGVzXCIgOiB7JyxcbiAgICAgICAgICAgICAgICAnICAgIFwiU3VjY2Vzc1N0YXRlXCI6IHsnLFxuICAgICAgICAgICAgICAgICcgICAgICBcIlR5cGVcIjogXCJTdWNjZWVkXCInLFxuICAgICAgICAgICAgICAgICcgICAgfScsXG4gICAgICAgICAgICAgICAgJyAgfScsXG4gICAgICAgICAgICAgICAgJ30nLFxuICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIFN0YXRlTWFjaGluZU5hbWU6ICdteS1tYWNoaW5lJyxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfSxcbiAgfSk7XG4gIGNvbnN0IGNka1N0YWNrQXJ0aWZhY3QgPSBzZXR1cC5jZGtTdGFja0FydGlmYWN0T2Yoe1xuICAgIHRlbXBsYXRlOiB7XG4gICAgICBSZXNvdXJjZXM6IHtcbiAgICAgICAgRnVuYzoge1xuICAgICAgICAgIFR5cGU6ICdBV1M6OkxhbWJkYTo6RnVuY3Rpb24nLFxuICAgICAgICB9LFxuICAgICAgICBNYWNoaW5lOiB7XG4gICAgICAgICAgVHlwZTogJ0FXUzo6U3RlcEZ1bmN0aW9uczo6U3RhdGVNYWNoaW5lJyxcbiAgICAgICAgICBQcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgICBEZWZpbml0aW9uU3RyaW5nOiB7XG4gICAgICAgICAgICAgICdGbjo6Sm9pbic6IFtcbiAgICAgICAgICAgICAgICAnJyxcbiAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAnXCJSZXNvdXJjZVwiOiAnLFxuICAgICAgICAgICAgICAgICAgeyAnRm46OkdldEF0dCc6IFsnRnVuYycsICdBcm4nXSB9LFxuICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgU3RhdGVNYWNoaW5lTmFtZTogJ215LW1hY2hpbmUnLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH0sXG4gIH0pO1xuXG4gIC8vIFdIRU5cbiAgc2V0dXAucHVzaFN0YWNrUmVzb3VyY2VTdW1tYXJpZXMoXG4gICAgc2V0dXAuc3RhY2tTdW1tYXJ5T2YoJ01hY2hpbmUnLCAnQVdTOjpTdGVwRnVuY3Rpb25zOjpTdGF0ZU1hY2hpbmUnLCAnYXJuOmF3czpzdGF0ZXM6aGVyZToxMjM0NTY3ODkwMTI6c3RhdGVNYWNoaW5lOm15LW1hY2hpbmUnKSxcbiAgICBzZXR1cC5zdGFja1N1bW1hcnlPZignRnVuYycsICdBV1M6OkxhbWJkYTo6RnVuY3Rpb24nLCAnbXktZnVuYycpLFxuICApO1xuICBjb25zdCBkZXBsb3lTdGFja1Jlc3VsdCA9IGF3YWl0IGhvdHN3YXBNb2NrU2RrUHJvdmlkZXIudHJ5SG90c3dhcERlcGxveW1lbnQoY2RrU3RhY2tBcnRpZmFjdCk7XG5cbiAgLy8gVEhFTlxuICBleHBlY3QoZGVwbG95U3RhY2tSZXN1bHQpLm5vdC50b0JlVW5kZWZpbmVkKCk7XG4gIGV4cGVjdChtb2NrVXBkYXRlTWFjaGluZURlZmluaXRpb24pLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKHtcbiAgICBkZWZpbml0aW9uOiAnXCJSZXNvdXJjZVwiOiBhcm46YXdzOmxhbWJkYTpoZXJlOjEyMzQ1Njc4OTAxMjpmdW5jdGlvbjpteS1mdW5jJyxcbiAgICBzdGF0ZU1hY2hpbmVBcm46ICdhcm46YXdzOnN0YXRlczpoZXJlOjEyMzQ1Njc4OTAxMjpzdGF0ZU1hY2hpbmU6bXktbWFjaGluZScsXG4gIH0pO1xufSk7XG5cbnRlc3QoXCJ3aWxsIG5vdCBwZXJmb3JtIGEgaG90c3dhcCBkZXBsb3ltZW50IGlmIGl0IGNhbm5vdCBmaW5kIGEgUmVmIHRhcmdldCAob3V0c2lkZSB0aGUgc3RhdGUgbWFjaGluZSdzIG5hbWUpXCIsIGFzeW5jICgpID0+IHtcbiAgLy8gR0lWRU5cbiAgc2V0dXAuc2V0Q3VycmVudENmblN0YWNrVGVtcGxhdGUoe1xuICAgIFBhcmFtZXRlcnM6IHtcbiAgICAgIFBhcmFtMTogeyBUeXBlOiAnU3RyaW5nJyB9LFxuICAgIH0sXG4gICAgUmVzb3VyY2VzOiB7XG4gICAgICBNYWNoaW5lOiB7XG4gICAgICAgIFR5cGU6ICdBV1M6OlN0ZXBGdW5jdGlvbnM6OlN0YXRlTWFjaGluZScsXG4gICAgICAgIFByb3BlcnRpZXM6IHtcbiAgICAgICAgICBEZWZpbml0aW9uU3RyaW5nOiB7XG4gICAgICAgICAgICAnRm46OkpvaW4nOiBbXG4gICAgICAgICAgICAgICcnLFxuICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgJ3sgUHJvcDogXCJvbGQtdmFsdWVcIiB9LCAnLFxuICAgICAgICAgICAgICAgICd7IFwiUGFyYW1cIiA6ICcsXG4gICAgICAgICAgICAgICAgeyAnRm46OlN1Yic6ICcke1BhcmFtMX0nIH0sXG4gICAgICAgICAgICAgICAgJyB9JyxcbiAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfSxcbiAgfSk7XG4gIHNldHVwLnB1c2hTdGFja1Jlc291cmNlU3VtbWFyaWVzKHNldHVwLnN0YWNrU3VtbWFyeU9mKCdNYWNoaW5lJywgJ0FXUzo6U3RlcEZ1bmN0aW9uczo6U3RhdGVNYWNoaW5lJywgJ215LW1hY2hpbmUnKSk7XG4gIGNvbnN0IGNka1N0YWNrQXJ0aWZhY3QgPSBzZXR1cC5jZGtTdGFja0FydGlmYWN0T2Yoe1xuICAgIHRlbXBsYXRlOiB7XG4gICAgICBQYXJhbWV0ZXJzOiB7XG4gICAgICAgIFBhcmFtMTogeyBUeXBlOiAnU3RyaW5nJyB9LFxuICAgICAgfSxcbiAgICAgIFJlc291cmNlczoge1xuICAgICAgICBNYWNoaW5lOiB7XG4gICAgICAgICAgVHlwZTogJ0FXUzo6U3RlcEZ1bmN0aW9uczo6U3RhdGVNYWNoaW5lJyxcbiAgICAgICAgICBQcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgICBEZWZpbml0aW9uU3RyaW5nOiB7XG4gICAgICAgICAgICAgICdGbjo6Sm9pbic6IFtcbiAgICAgICAgICAgICAgICAnJyxcbiAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAneyBQcm9wOiBcIm5ldy12YWx1ZVwiIH0sICcsXG4gICAgICAgICAgICAgICAgICAneyBcIlBhcmFtXCIgOiAnLFxuICAgICAgICAgICAgICAgICAgeyAnRm46OlN1Yic6ICcke1BhcmFtMX0nIH0sXG4gICAgICAgICAgICAgICAgICAnIH0nLFxuICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH0sXG4gIH0pO1xuXG4gIC8vIFRIRU5cbiAgYXdhaXQgZXhwZWN0KCgpID0+XG4gICAgaG90c3dhcE1vY2tTZGtQcm92aWRlci50cnlIb3Rzd2FwRGVwbG95bWVudChjZGtTdGFja0FydGlmYWN0KSxcbiAgKS5yZWplY3RzLnRvVGhyb3coL1BhcmFtZXRlciBvciByZXNvdXJjZSAnUGFyYW0xJyBjb3VsZCBub3QgYmUgZm91bmQgZm9yIGV2YWx1YXRpb24vKTtcbn0pO1xuXG50ZXN0KFwid2lsbCBub3QgcGVyZm9ybSBhIGhvdHN3YXAgZGVwbG95bWVudCBpZiBpdCBkb2Vzbid0IGtub3cgaG93IHRvIGhhbmRsZSBhIHNwZWNpZmljIGF0dHJpYnV0ZSAob3V0c2lkZSB0aGUgc3RhdGUgbWFjaGluZXMncyBuYW1lKVwiLCBhc3luYyAoKSA9PiB7XG4gIC8vIEdJVkVOXG4gIHNldHVwLnNldEN1cnJlbnRDZm5TdGFja1RlbXBsYXRlKHtcbiAgICBSZXNvdXJjZXM6IHtcbiAgICAgIEJ1Y2tldDoge1xuICAgICAgICBUeXBlOiAnQVdTOjpTMzo6QnVja2V0JyxcbiAgICAgIH0sXG4gICAgICBNYWNoaW5lOiB7XG4gICAgICAgIFR5cGU6ICdBV1M6OlN0ZXBGdW5jdGlvbnM6OlN0YXRlTWFjaGluZScsXG4gICAgICAgIFByb3BlcnRpZXM6IHtcbiAgICAgICAgICBEZWZpbml0aW9uU3RyaW5nOiB7XG4gICAgICAgICAgICAnRm46OkpvaW4nOiBbXG4gICAgICAgICAgICAgICcnLFxuICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgJ3sgUHJvcDogXCJvbGQtdmFsdWVcIiB9LCAnLFxuICAgICAgICAgICAgICAgICd7IFwiUzNCdWNrZXRcIiA6ICcsXG4gICAgICAgICAgICAgICAgeyAnRm46OkdldEF0dCc6IFsnQnVja2V0JywgJ1Vua25vd25BdHRyaWJ1dGUnXSB9LFxuICAgICAgICAgICAgICAgICcgfScsXG4gICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgU3RhdGVNYWNoaW5lTmFtZTogJ215LW1hY2hpbmUnLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9LFxuICB9KTtcbiAgc2V0dXAucHVzaFN0YWNrUmVzb3VyY2VTdW1tYXJpZXMoXG4gICAgc2V0dXAuc3RhY2tTdW1tYXJ5T2YoJ01hY2hpbmUnLCAnQVdTOjpTdGVwRnVuY3Rpb25zOjpTdGF0ZU1hY2hpbmUnLCAnYXJuOmF3czpzdGF0ZXM6aGVyZToxMjM0NTY3ODkwMTI6c3RhdGVNYWNoaW5lOm15LW1hY2hpbmUnKSxcbiAgICBzZXR1cC5zdGFja1N1bW1hcnlPZignQnVja2V0JywgJ0FXUzo6UzM6OkJ1Y2tldCcsICdteS1idWNrZXQnKSxcbiAgKTtcbiAgY29uc3QgY2RrU3RhY2tBcnRpZmFjdCA9IHNldHVwLmNka1N0YWNrQXJ0aWZhY3RPZih7XG4gICAgdGVtcGxhdGU6IHtcbiAgICAgIFJlc291cmNlczoge1xuICAgICAgICBCdWNrZXQ6IHtcbiAgICAgICAgICBUeXBlOiAnQVdTOjpMYW1iZGE6OkZ1bmN0aW9uJyxcbiAgICAgICAgfSxcbiAgICAgICAgTWFjaGluZToge1xuICAgICAgICAgIFR5cGU6ICdBV1M6OlN0ZXBGdW5jdGlvbnM6OlN0YXRlTWFjaGluZScsXG4gICAgICAgICAgUHJvcGVydGllczoge1xuICAgICAgICAgICAgRGVmaW5pdGlvblN0cmluZzoge1xuICAgICAgICAgICAgICAnRm46OkpvaW4nOiBbXG4gICAgICAgICAgICAgICAgJycsXG4gICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgJ3sgUHJvcDogXCJuZXctdmFsdWVcIiB9LCAnLFxuICAgICAgICAgICAgICAgICAgJ3sgXCJTM0J1Y2tldFwiIDogJyxcbiAgICAgICAgICAgICAgICAgIHsgJ0ZuOjpHZXRBdHQnOiBbJ0J1Y2tldCcsICdVbmtub3duQXR0cmlidXRlJ10gfSxcbiAgICAgICAgICAgICAgICAgICcgfScsXG4gICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBTdGF0ZU1hY2hpbmVOYW1lOiAnbXktbWFjaGluZScsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfSxcbiAgfSk7XG5cbiAgLy8gVEhFTlxuICBhd2FpdCBleHBlY3QoKCkgPT5cbiAgICBob3Rzd2FwTW9ja1Nka1Byb3ZpZGVyLnRyeUhvdHN3YXBEZXBsb3ltZW50KGNka1N0YWNrQXJ0aWZhY3QpLFxuICApLnJlamVjdHMudG9UaHJvdyhcIldlIGRvbid0IHN1cHBvcnQgdGhlICdVbmtub3duQXR0cmlidXRlJyBhdHRyaWJ1dGUgb2YgdGhlICdBV1M6OlMzOjpCdWNrZXQnIHJlc291cmNlLiBUaGlzIGlzIGEgQ0RLIGxpbWl0YXRpb24uIFBsZWFzZSByZXBvcnQgaXQgYXQgaHR0cHM6Ly9naXRodWIuY29tL2F3cy9hd3MtY2RrL2lzc3Vlcy9uZXcvY2hvb3NlXCIpO1xufSk7XG4iXX0=
|
|
446
|
+
test('knows how to handle attributes of the AWS::Events::EventBus resource', async () => {
|
|
447
|
+
// GIVEN
|
|
448
|
+
setup.setCurrentCfnStackTemplate({
|
|
449
|
+
Resources: {
|
|
450
|
+
EventBus: {
|
|
451
|
+
Type: 'AWS::Events::EventBus',
|
|
452
|
+
Properties: {
|
|
453
|
+
Name: 'my-event-bus',
|
|
454
|
+
},
|
|
455
|
+
},
|
|
456
|
+
Machine: {
|
|
457
|
+
Type: 'AWS::StepFunctions::StateMachine',
|
|
458
|
+
Properties: {
|
|
459
|
+
DefinitionString: {
|
|
460
|
+
'Fn::Join': ['', [
|
|
461
|
+
'{"EventBus1Arn":"',
|
|
462
|
+
{ 'Fn::GetAtt': ['EventBus', 'Arn'] },
|
|
463
|
+
'","EventBus1Name":"',
|
|
464
|
+
{ 'Fn::GetAtt': ['EventBus', 'Name'] },
|
|
465
|
+
'","EventBus1Ref":"',
|
|
466
|
+
{ Ref: 'EventBus' },
|
|
467
|
+
'"}',
|
|
468
|
+
]],
|
|
469
|
+
},
|
|
470
|
+
StateMachineName: 'my-machine',
|
|
471
|
+
},
|
|
472
|
+
},
|
|
473
|
+
},
|
|
474
|
+
});
|
|
475
|
+
setup.pushStackResourceSummaries(setup.stackSummaryOf('EventBus', 'AWS::Events::EventBus', 'my-event-bus'));
|
|
476
|
+
const cdkStackArtifact = setup.cdkStackArtifactOf({
|
|
477
|
+
template: {
|
|
478
|
+
Resources: {
|
|
479
|
+
EventBus: {
|
|
480
|
+
Type: 'AWS::Events::EventBus',
|
|
481
|
+
Properties: {
|
|
482
|
+
Name: 'my-event-bus',
|
|
483
|
+
},
|
|
484
|
+
},
|
|
485
|
+
Machine: {
|
|
486
|
+
Type: 'AWS::StepFunctions::StateMachine',
|
|
487
|
+
Properties: {
|
|
488
|
+
DefinitionString: {
|
|
489
|
+
'Fn::Join': ['', [
|
|
490
|
+
'{"EventBus2Arn":"',
|
|
491
|
+
{ 'Fn::GetAtt': ['EventBus', 'Arn'] },
|
|
492
|
+
'","EventBus2Name":"',
|
|
493
|
+
{ 'Fn::GetAtt': ['EventBus', 'Name'] },
|
|
494
|
+
'","EventBus2Ref":"',
|
|
495
|
+
{ Ref: 'EventBus' },
|
|
496
|
+
'"}',
|
|
497
|
+
]],
|
|
498
|
+
},
|
|
499
|
+
StateMachineName: 'my-machine',
|
|
500
|
+
},
|
|
501
|
+
},
|
|
502
|
+
},
|
|
503
|
+
},
|
|
504
|
+
});
|
|
505
|
+
// THEN
|
|
506
|
+
const result = await hotswapMockSdkProvider.tryHotswapDeployment(cdkStackArtifact);
|
|
507
|
+
expect(result).not.toBeUndefined();
|
|
508
|
+
expect(mockUpdateMachineDefinition).toHaveBeenCalledWith({
|
|
509
|
+
stateMachineArn: 'arn:aws:states:here:123456789012:stateMachine:my-machine',
|
|
510
|
+
definition: JSON.stringify({
|
|
511
|
+
EventBus2Arn: 'arn:aws:events:here:123456789012:event-bus/my-event-bus',
|
|
512
|
+
EventBus2Name: 'my-event-bus',
|
|
513
|
+
EventBus2Ref: 'my-event-bus',
|
|
514
|
+
}),
|
|
515
|
+
});
|
|
516
|
+
});
|
|
517
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhdGUtbWFjaGluZS1ob3Rzd2FwLWRlcGxveW1lbnRzLnRlc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJzdGF0ZS1tYWNoaW5lLWhvdHN3YXAtZGVwbG95bWVudHMudGVzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUNBLDhDQUE4QztBQUU5QyxJQUFJLDJCQUFrSSxDQUFDO0FBQ3ZJLElBQUksc0JBQW9ELENBQUM7QUFFekQsVUFBVSxDQUFDLEdBQUcsRUFBRTtJQUNkLHNCQUFzQixHQUFHLEtBQUssQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO0lBQ25ELDJCQUEyQixHQUFHLElBQUksQ0FBQyxFQUFFLEVBQUUsQ0FBQztJQUN4QyxzQkFBc0IsQ0FBQyx5QkFBeUIsQ0FBQywyQkFBMkIsQ0FBQyxDQUFDO0FBQ2hGLENBQUMsQ0FBQyxDQUFDO0FBRUgsSUFBSSxDQUFDLGlFQUFpRSxFQUFFLEtBQUssSUFBSSxFQUFFO0lBQ2pGLFFBQVE7SUFDUixNQUFNLGdCQUFnQixHQUFHLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQztRQUNoRCxRQUFRLEVBQUU7WUFDUixTQUFTLEVBQUU7Z0JBQ1QsT0FBTyxFQUFFO29CQUNQLElBQUksRUFBRSxrQ0FBa0M7aUJBQ3pDO2FBQ0Y7U0FDRjtLQUNGLENBQUMsQ0FBQztJQUVILE9BQU87SUFDUCxNQUFNLGlCQUFpQixHQUFHLE1BQU0sc0JBQXNCLENBQUMsb0JBQW9CLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztJQUU5RixPQUFPO0lBQ1AsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUMsYUFBYSxFQUFFLENBQUM7QUFDNUMsQ0FBQyxDQUFDLENBQUM7QUFFSCxJQUFJLENBQUMsd0hBQXdILEVBQUUsS0FBSyxJQUFJLEVBQUU7SUFDeEksUUFBUTtJQUNSLEtBQUssQ0FBQywwQkFBMEIsQ0FBQztRQUMvQixTQUFTLEVBQUU7WUFDVCxPQUFPLEVBQUU7Z0JBQ1AsSUFBSSxFQUFFLGtDQUFrQztnQkFDeEMsVUFB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LEVBQUUsa0NBQWtDO29CQUN4QyxVQUFVLEVBQUU7d0JBQ1YsZ0JBQWdCLEVBQUU7NEJBQ2hCLFVBQVUsRUFBRSxDQUFDLEVBQUUsRUFBRTtvQ0FDZixtQkFBbUI7b0NBQ25CLEVBQUUsWUFBWSxFQUFFLENBQUMsVUFBVSxFQUFFLEtBQUssQ0FBQyxFQUFFO29DQUNyQyxxQkFBcUI7b0NBQ3JCLEVBQUUsWUFBWSxFQUFFLENBQUMsVUFBVSxFQUFFLE1BQU0sQ0FBQyxFQUFFO29DQUN0QyxvQkFBb0I7b0NBQ3BCLEVBQUUsR0FBRyxFQUFFLFVBQVUsRUFBRTtvQ0FDbkIsSUFBSTtpQ0FDTCxDQUFDO3lCQUNIO3dCQUNELGdCQUFnQixFQUFFLFlBQVk7cUJBQy9CO2lCQUNGO2FBQ0Y7U0FDRjtLQUNGLENBQUMsQ0FBQztJQUVILE9BQU87SUFDUCxNQUFNLE1BQU0sR0FBRyxNQUFNLHNCQUFzQixDQUFDLG9CQUFvQixDQUFDLGdCQUFnQixDQUFDLENBQUM7SUFFbkYsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUNuQyxNQUFNLENBQUMsMkJBQTJCLENBQUMsQ0FBQyxvQkFBb0IsQ0FBQztRQUN2RCxlQUFlLEVBQUUsMERBQTBEO1FBQzNFLFVBQVUsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDO1lBQ3pCLFlBQVksRUFBRSx5REFBeUQ7WUFDdkUsYUFBYSxFQUFFLGNBQWM7WUFDN0IsWUFBWSxFQUFFLGNBQWM7U0FDN0IsQ0FBQztLQUNILENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU3RlcEZ1bmN0aW9ucyB9IGZyb20gJ2F3cy1zZGsnO1xuaW1wb3J0ICogYXMgc2V0dXAgZnJvbSAnLi9ob3Rzd2FwLXRlc3Qtc2V0dXAnO1xuXG5sZXQgbW9ja1VwZGF0ZU1hY2hpbmVEZWZpbml0aW9uOiAocGFyYW1zOiBTdGVwRnVuY3Rpb25zLlR5cGVzLlVwZGF0ZVN0YXRlTWFjaGluZUlucHV0KSA9PiBTdGVwRnVuY3Rpb25zLlR5cGVzLlVwZGF0ZVN0YXRlTWFjaGluZU91dHB1dDtcbmxldCBob3Rzd2FwTW9ja1Nka1Byb3ZpZGVyOiBzZXR1cC5Ib3Rzd2FwTW9ja1Nka1Byb3ZpZGVyO1xuXG5iZWZvcmVFYWNoKCgpID0+IHtcbiAgaG90c3dhcE1vY2tTZGtQcm92aWRlciA9IHNldHVwLnNldHVwSG90c3dhcFRlc3RzKCk7XG4gIG1vY2tVcGRhdGVNYWNoaW5lRGVmaW5pdGlvbiA9IGplc3QuZm4oKTtcbiAgaG90c3dhcE1vY2tTZGtQcm92aWRlci5zZXRVcGRhdGVTdGF0ZU1hY2hpbmVNb2NrKG1vY2tVcGRhdGVNYWNoaW5lRGVmaW5pdGlvbik7XG59KTtcblxudGVzdCgncmV0dXJucyB1bmRlZmluZWQgd2hlbiBhIG5ldyBTdGF0ZU1hY2hpbmUgaXMgYWRkZWQgdG8gdGhlIFN0YWNrJywgYXN5bmMgKCkgPT4ge1xuICAvLyBHSVZFTlxuICBjb25zdCBjZGtTdGFja0FydGlmYWN0ID0gc2V0dXAuY2RrU3RhY2tBcnRpZmFjdE9mKHtcbiAgICB0ZW1wbGF0ZToge1xuICAgICAgUmVzb3VyY2VzOiB7XG4gICAgICAgIE1hY2hpbmU6IHtcbiAgICAgICAgICBUeXBlOiAnQVdTOjpTdGVwRnVuY3Rpb25zOjpTdGF0ZU1hY2hpbmUnLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9LFxuICB9KTtcblxuICAvLyBXSEVOXG4gIGNvbnN0IGRlcGxveVN0YWNrUmVzdWx0ID0gYXdhaXQgaG90c3dhcE1vY2tTZGtQcm92aWRlci50cnlIb3Rzd2FwRGVwbG95bWVudChjZGtTdGFja0FydGlmYWN0KTtcblxuICAvLyBUSEVOXG4gIGV4cGVjdChkZXBsb3lTdGFja1Jlc3VsdCkudG9CZVVuZGVmaW5lZCgpO1xufSk7XG5cbnRlc3QoJ2NhbGxzIHRoZSB1cGRhdGVTdGF0ZU1hY2hpbmUoKSBBUEkgd2hlbiBpdCByZWNlaXZlcyBvbmx5IGEgZGVmaW5pdGlvblN0cmluZyBjaGFuZ2Ugd2l0aG91dCBGbjo6Sm9pbiBpbiBhIHN0YXRlIG1hY2hpbmUnLCBhc3luYyAoKSA9PiB7XG4gIC8vIEdJVkVOXG4gIHNldHVwLnNldEN1cnJlbnRDZm5TdGFja1RlbXBsYXRlKHtcbiAgICBSZXNvdXJjZXM6IHtcbiAgICAgIE1hY2hpbmU6IHtcbiAgICAgICAgVHlwZTogJ0FXUzo6U3RlcEZ1bmN0aW9uczo6U3RhdGVNYWNoaW5lJyxcbiAgICAgICAgUHJvcGVydGllczoge1xuICAgICAgICAgIERlZmluaXRpb25TdHJpbmc6ICd7IFByb3A6IFwib2xkLXZhbHVlXCIgfScsXG4gICAgICAgICAgU3RhdGVNYWNoaW5lTmFtZTogJ215LW1hY2hpbmUnLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9LFxuICB9KTtcbiAgY29uc3QgY2RrU3RhY2tBcnRpZmFjdCA9IHNldHVwLmNka1N0YWNrQXJ0aWZhY3RPZih7XG4gICAgdGVtcGxhdGU6IHtcbiAgICAgIFJlc291cmNlczoge1xuICAgICAgICBNYWNoaW5lOiB7XG4gICAgICAgICAgVHlwZTogJ0FXUzo6U3RlcEZ1bmN0aW9uczo6U3RhdGVNYWNoaW5lJyxcbiAgICAgICAgICBQcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgICBEZWZpbml0aW9uU3RyaW5nOiAneyBQcm9wOiBcIm5ldy12YWx1ZVwiIH0nLFxuICAgICAgICAgICAgU3RhdGVNYWNoaW5lTmFtZTogJ215LW1hY2hpbmUnLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH0sXG4gIH0pO1xuXG4gIC8vIFdIRU5cbiAgY29uc3QgZGVwbG95U3RhY2tSZXN1bHQgPSBhd2FpdCBob3Rzd2FwTW9ja1Nka1Byb3ZpZGVyLnRyeUhvdHN3YXBEZXBsb3ltZW50KGNka1N0YWNrQXJ0aWZhY3QpO1xuXG4gIC8vIFRIRU5cbiAgZXhwZWN0KGRlcGxveVN0YWNrUmVzdWx0KS5ub3QudG9CZVVuZGVmaW5lZCgpO1xuICBleHBlY3QobW9ja1VwZGF0ZU1hY2hpbmVEZWZpbml0aW9uKS50b0hhdmVCZWVuQ2FsbGVkV2l0aCh7XG4gICAgZGVmaW5pdGlvbjogJ3sgUHJvcDogXCJuZXctdmFsdWVcIiB9JyxcbiAgICBzdGF0ZU1hY2hpbmVBcm46ICdhcm46YXdzOnN0YXRlczpoZXJlOjEyMzQ1Njc4OTAxMjpzdGF0ZU1hY2hpbmU6bXktbWFjaGluZScsXG4gIH0pO1xufSk7XG5cbnRlc3QoJ2NhbGxzIHRoZSB1cGRhdGVTdGF0ZU1hY2hpbmUoKSBBUEkgd2hlbiBpdCByZWNlaXZlcyBvbmx5IGEgZGVmaW5pdGlvblN0cmluZyBjaGFuZ2Ugd2l0aCBGbjo6Sm9pbiBpbiBhIHN0YXRlIG1hY2hpbmUnLCBhc3luYyAoKSA9PiB7XG4gIC8vIEdJVkVOXG4gIHNldHVwLnNldEN1cnJlbnRDZm5TdGFja1RlbXBsYXRlKHtcbiAgICBSZXNvdXJjZXM6IHtcbiAgICAgIE1hY2hpbmU6IHtcbiAgICAgICAgVHlwZTogJ0FXUzo6U3RlcEZ1bmN0aW9uczo6U3RhdGVNYWNoaW5lJyxcbiAgICAgICAgUHJvcGVydGllczoge1xuICAgICAgICAgIERlZmluaXRpb25TdHJpbmc6IHtcbiAgICAgICAgICAgICdGbjo6Sm9pbic6IFtcbiAgICAgICAgICAgICAgJ1xcbicsXG4gICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAneycsXG4gICAgICAgICAgICAgICAgJyAgXCJTdGFydEF0XCIgOiBcIlN1Y2Nlc3NTdGF0ZVwiJyxcbiAgICAgICAgICAgICAgICAnICBcIlN0YXRlc1wiIDogeycsXG4gICAgICAgICAgICAgICAgJyAgICBcIlN1Y2Nlc3NTdGF0ZVwiOiB7JyxcbiAgICAgICAgICAgICAgICAnICAgICAgXCJUeXBlXCI6IFwiUGFzc1wiJyxcbiAgICAgICAgICAgICAgICAnICAgICAgXCJSZXN1bHRcIjogXCJTdWNjZXNzXCInLFxuICAgICAgICAgICAgICAgICcgICAgICBcIkVuZFwiOiB0cnVlJyxcbiAgICAgICAgICAgICAgICAnICAgIH0nLFxuICAgICAgICAgICAgICAgICcgIH0nLFxuICAgICAgICAgICAgICAgICd9JyxcbiAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgfSxcbiAgICAgICAgICBTdGF0ZU1hY2hpbmVOYW1lOiAnbXktbWFjaGluZScsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH0sXG4gIH0pO1xuICBjb25zdCBjZGtTdGFja0FydGlmYWN0ID0gc2V0dXAuY2RrU3RhY2tBcnRpZmFjdE9mKHtcbiAgICB0ZW1wbGF0ZToge1xuICAgICAgUmVzb3VyY2VzOiB7XG4gICAgICAgIE1hY2hpbmU6IHtcbiAgICAgICAgICBUeXBlOiAnQVdTOjpTdGVwRnVuY3Rpb25zOjpTdGF0ZU1hY2hpbmUnLFxuICAgICAgICAgIFByb3BlcnRpZXM6IHtcbiAgICAgICAgICAgIERlZmluaXRpb25TdHJpbmc6IHtcbiAgICAgICAgICAgICAgJ0ZuOjpKb2luJzogW1xuICAgICAgICAgICAgICAgICdcXG4nLFxuICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICd7JyxcbiAgICAgICAgICAgICAgICAgICcgIFwiU3RhcnRBdFwiOiBcIlN1Y2Nlc3NTdGF0ZVwiLCcsXG4gICAgICAgICAgICAgICAgICAnICBcIlN0YXRlc1wiOiB7JyxcbiAgICAgICAgICAgICAgICAgICcgICAgXCJTdWNjZXNzU3RhdGVcIjogeycsXG4gICAgICAgICAgICAgICAgICAnICAgICAgXCJUeXBlXCI6IFwiU3VjY2VlZFwiJyxcbiAgICAgICAgICAgICAgICAgICcgICAgfScsXG4gICAgICAgICAgICAgICAgICAnICB9JyxcbiAgICAgICAgICAgICAgICAgICd9JyxcbiAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIFN0YXRlTWFjaGluZU5hbWU6ICdteS1tYWNoaW5lJyxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9LFxuICB9KTtcblxuICAvLyBXSEVOXG4gIGNvbnN0IGRlcGxveVN0YWNrUmVzdWx0ID0gYXdhaXQgaG90c3dhcE1vY2tTZGtQcm92aWRlci50cnlIb3Rzd2FwRGVwbG95bWVudChjZGtTdGFja0FydGlmYWN0KTtcblxuICAvLyBUSEVOXG4gIGV4cGVjdChkZXBsb3lTdGFja1Jlc3VsdCkubm90LnRvQmVVbmRlZmluZWQoKTtcbiAgZXhwZWN0KG1vY2tVcGRhdGVNYWNoaW5lRGVmaW5pdGlvbikudG9IYXZlQmVlbkNhbGxlZFdpdGgoe1xuICAgIGRlZmluaXRpb246IEpTT04uc3RyaW5naWZ5KHtcbiAgICAgIFN0YXJ0QXQ6ICdTdWNjZXNzU3RhdGUnLFxuICAgICAgU3RhdGVzOiB7XG4gICAgICAgIFN1Y2Nlc3NTdGF0ZToge1xuICAgICAgICAgIFR5cGU6ICdTdWNjZWVkJyxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfSwgbnVsbCwgMiksXG4gICAgc3RhdGVNYWNoaW5lQXJuOiAnYXJuOmF3czpzdGF0ZXM6aGVyZToxMjM0NTY3ODkwMTI6c3RhdGVNYWNoaW5lOm15LW1hY2hpbmUnLFxuICB9KTtcbn0pO1xuXG50ZXN0KCdjYWxscyB0aGUgdXBkYXRlU3RhdGVNYWNoaW5lKCkgQVBJIHdoZW4gaXQgcmVjZWl2ZXMgYSBjaGFuZ2UgdG8gdGhlIGRlZmluaXRpb25TdHJpbmcgaW4gYSBzdGF0ZSBtYWNoaW5lIHRoYXQgaGFzIG5vIG5hbWUnLCBhc3luYyAoKSA9PiB7XG4gIC8vIEdJVkVOXG4gIHNldHVwLnNldEN1cnJlbnRDZm5TdGFja1RlbXBsYXRlKHtcbiAgICBSZXNvdXJjZXM6IHtcbiAgICAgIE1hY2hpbmU6IHtcbiAgICAgICAgVHlwZTogJ0FXUzo6U3RlcEZ1bmN0aW9uczo6U3RhdGVNYWNoaW5lJyxcbiAgICAgICAgUHJvcGVydGllczoge1xuICAgICAgICAgIERlZmluaXRpb25TdHJpbmc6ICd7IFwiUHJvcFwiIDogXCJvbGQtdmFsdWVcIiB9JyxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfSxcbiAgfSk7XG4gIGNvbnN0IGNka1N0YWNrQXJ0aWZhY3QgPSBzZXR1cC5jZGtTdGFja0FydGlmYWN0T2Yoe1xuICAgIHRlbXBsYXRlOiB7XG4gICAgICBSZXNvdXJjZXM6IHtcbiAgICAgICAgTWFjaGluZToge1xuICAgICAgICAgIFR5cGU6ICdBV1M6OlN0ZXBGdW5jdGlvbnM6OlN0YXRlTWFjaGluZScsXG4gICAgICAgICAgUHJvcGVydGllczoge1xuICAgICAgICAgICAgRGVmaW5pdGlvblN0cmluZzogJ3sgXCJQcm9wXCIgOiBcIm5ldy12YWx1ZVwiIH0nLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH0sXG4gIH0pO1xuXG4gIC8vIFdIRU5cbiAgc2V0dXAucHVzaFN0YWNrUmVzb3VyY2VTdW1tYXJpZXMoc2V0dXAuc3RhY2tTdW1tYXJ5T2YoJ01hY2hpbmUnLCAnQVdTOjpTdGVwRnVuY3Rpb25zOjpTdGF0ZU1hY2hpbmUnLCAnYXJuOmF3czpzdGF0ZXM6aGVyZToxMjM0NTY3ODkwMTI6c3RhdGVNYWNoaW5lOm15LW1hY2hpbmUnKSk7XG4gIGNvbnN0IGRlcGxveVN0YWNrUmVzdWx0ID0gYXdhaXQgaG90c3dhcE1vY2tTZGtQcm92aWRlci50cnlIb3Rzd2FwRGVwbG95bWVudChjZGtTdGFja0FydGlmYWN0KTtcblxuICAvLyBUSEVOXG4gIGV4cGVjdChkZXBsb3lTdGFja1Jlc3VsdCkubm90LnRvQmVVbmRlZmluZWQoKTtcbiAgZXhwZWN0KG1vY2tVcGRhdGVNYWNoaW5lRGVmaW5pdGlvbikudG9IYXZlQmVlbkNhbGxlZFdpdGgoe1xuICAgIGRlZmluaXRpb246ICd7IFwiUHJvcFwiIDogXCJuZXctdmFsdWVcIiB9JyxcbiAgICBzdGF0ZU1hY2hpbmVBcm46ICdhcm46YXdzOnN0YXRlczpoZXJlOjEyMzQ1Njc4OTAxMjpzdGF0ZU1hY2hpbmU6bXktbWFjaGluZScsXG4gIH0pO1xufSk7XG5cbnRlc3QoJ2RvZXMgbm90IGNhbGwgdGhlIHVwZGF0ZVN0YXRlTWFjaGluZSgpIEFQSSB3aGVuIGl0IHJlY2VpdmVzIGEgY2hhbmdlIHRvIGEgcHJvcGVydHkgdGhhdCBpcyBub3QgdGhlIGRlZmluaXRpb25TdHJpbmcgaW4gYSBzdGF0ZSBtYWNoaW5lJywgYXN5bmMgKCkgPT4ge1xuICAvLyBHSVZFTlxuICBzZXR1cC5zZXRDdXJyZW50Q2ZuU3RhY2tUZW1wbGF0ZSh7XG4gICAgUmVzb3VyY2VzOiB7XG4gICAgICBNYWNoaW5lOiB7XG4gICAgICAgIFR5cGU6ICdBV1M6OlN0ZXBGdW5jdGlvbnM6OlN0YXRlTWFjaGluZScsXG4gICAgICAgIFByb3BlcnRpZXM6IHtcbiAgICAgICAgICBEZWZpbml0aW9uU3RyaW5nOiAneyBcIlByb3BcIiA6IFwib2xkLXZhbHVlXCIgfScsXG4gICAgICAgICAgTG9nZ2luZ0NvbmZpZ3VyYXRpb246IHsgLy8gbm9uLWRlZmluaXRpb25TdHJpbmcgcHJvcGVydHlcbiAgICAgICAgICAgIEluY2x1ZGVFeGVjdXRpb25EYXRhOiB0cnVlLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH0sXG4gIH0pO1xuICBjb25zdCBjZGtTdGFja0FydGlmYWN0ID0gc2V0dXAuY2RrU3RhY2tBcnRpZmFjdE9mKHtcbiAgICB0ZW1wbGF0ZToge1xuICAgICAgUmVzb3VyY2VzOiB7XG4gICAgICAgIE1hY2hpbmU6IHtcbiAgICAgICAgICBUeXBlOiAnQVdTOjpTdGVwRnVuY3Rpb25zOjpTdGF0ZU1hY2hpbmUnLFxuICAgICAgICAgIFByb3BlcnRpZXM6IHtcbiAgICAgICAgICAgIERlZmluaXRpb25TdHJpbmc6ICd7IFwiUHJvcFwiIDogXCJuZXctdmFsdWVcIiB9JyxcbiAgICAgICAgICAgIExvZ2dpbmdDb25maWd1cmF0aW9uOiB7XG4gICAgICAgICAgICAgIEluY2x1ZGVFeGVjdXRpb25EYXRhOiBmYWxzZSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfSxcbiAgfSk7XG5cbiAgLy8gV0hFTlxuICBjb25zdCBkZXBsb3lTdGFja1Jlc3VsdCA9IGF3YWl0IGhvdHN3YXBNb2NrU2RrUHJvdmlkZXIudHJ5SG90c3dhcERlcGxveW1lbnQoY2RrU3RhY2tBcnRpZmFjdCk7XG5cbiAgLy8gVEhFTlxuICBleHBlY3QoZGVwbG95U3RhY2tSZXN1bHQpLnRvQmVVbmRlZmluZWQoKTtcbiAgZXhwZWN0KG1vY2tVcGRhdGVNYWNoaW5lRGVmaW5pdGlvbikubm90LnRvSGF2ZUJlZW5DYWxsZWQoKTtcbn0pO1xuXG50ZXN0KCdkb2VzIG5vdCBjYWxsIHRoZSB1cGRhdGVTdGF0ZU1hY2hpbmUoKSBBUEkgd2hlbiBhIHJlc291cmNlIGhhcyBhIERlZmluaXRpb25TdHJpbmcgcHJvcGVydHkgYnV0IGlzIG5vdCBhbiBBV1M6OlN0ZXBGdW5jdGlvbnM6OlN0YXRlTWFjaGluZSBpcyBjaGFuZ2VkJywgYXN5bmMgKCkgPT4ge1xuICAvLyBHSVZFTlxuICBzZXR1cC5zZXRDdXJyZW50Q2ZuU3RhY2tUZW1wbGF0ZSh7XG4gICAgUmVzb3VyY2VzOiB7XG4gICAgICBNYWNoaW5lOiB7XG4gICAgICAgIFR5cGU6ICdBV1M6Ok5vdFN0ZXBGdW5jdGlvbnM6Ok5vdFN0YXRlTWFjaGluZScsXG4gICAgICAgIFByb3BlcnRpZXM6IHtcbiAgICAgICAgICBEZWZpbml0aW9uU3RyaW5nOiAneyBQcm9wOiBcIm9sZC12YWx1ZVwiIH0nLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9LFxuICB9KTtcbiAgY29uc3QgY2RrU3RhY2tBcnRpZmFjdCA9IHNldHVwLmNka1N0YWNrQXJ0aWZhY3RPZih7XG4gICAgdGVtcGxhdGU6IHtcbiAgICAgIFJlc291cmNlczoge1xuICAgICAgICBNYWNoaW5lOiB7XG4gICAgICAgICAgVHlwZTogJ0FXUzo6Tm90U3RlcEZ1bmN0aW9uczo6Tm90U3RhdGVNYWNoaW5lJyxcbiAgICAgICAgICBQcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgICBEZWZpbml0aW9uU3RyaW5nOiAneyBQcm9wOiBcIm5ldy12YWx1ZVwiIH0nLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH0sXG4gIH0pO1xuXG4gIC8vIFdIRU5cbiAgY29uc3QgZGVwbG95U3RhY2tSZXN1bHQgPSBhd2FpdCBob3Rzd2FwTW9ja1Nka1Byb3ZpZGVyLnRyeUhvdHN3YXBEZXBsb3ltZW50KGNka1N0YWNrQXJ0aWZhY3QpO1xuXG4gIC8vIFRIRU5cbiAgZXhwZWN0KGRlcGxveVN0YWNrUmVzdWx0KS50b0JlVW5kZWZpbmVkKCk7XG4gIGV4cGVjdChtb2NrVXBkYXRlTWFjaGluZURlZmluaXRpb24pLm5vdC50b0hhdmVCZWVuQ2FsbGVkKCk7XG59KTtcblxudGVzdCgnY2FuIGNvcnJlY3RseSBob3Rzd2FwIG9sZCBzdHlsZSBzeW50aCBjaGFuZ2VzJywgYXN5bmMgKCkgPT4ge1xuICAvLyBHSVZFTlxuICBzZXR1cC5zZXRDdXJyZW50Q2ZuU3RhY2tUZW1wbGF0ZSh7XG4gICAgUGFyYW1ldGVyczogeyBBc3NldFBhcmFtMTogeyBUeXBlOiAnU3RyaW5nJyB9IH0sXG4gICAgUmVzb3VyY2VzOiB7XG4gICAgICBNYWNoaW5lOiB7XG4gICAgICAgIFR5cGU6ICdBV1M6OlN0ZXBGdW5jdGlvbnM6OlN0YXRlTWFjaGluZScsXG4gICAgICAgIFByb3BlcnRpZXM6IHtcbiAgICAgICAgICBEZWZpbml0aW9uU3RyaW5nOiB7IFJlZjogJ0Fzc2V0UGFyYW0xJyB9LFxuICAgICAgICAgIFN0YXRlTWFjaGluZU5hbWU6ICdtYWNoaW5lLW5hbWUnLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9LFxuICB9KTtcbiAgY29uc3QgY2RrU3RhY2tBcnRpZmFjdCA9IHNldHVwLmNka1N0YWNrQXJ0aWZhY3RPZih7XG4gICAgdGVtcGxhdGU6IHtcbiAgICAgIFBhcmFtZXRlcnM6IHsgQXNzZXRQYXJhbTI6IHsgVHlwZTogU3RyaW5nIH0gfSxcbiAgICAgIFJlc291cmNlczoge1xuICAgICAgICBNYWNoaW5lOiB7XG4gICAgICAgICAgVHlwZTogJ0FXUzo6U3RlcEZ1bmN0aW9uczo6U3RhdGVNYWNoaW5lJyxcbiAgICAgICAgICBQcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgICBEZWZpbml0aW9uU3RyaW5nOiB7IFJlZjogJ0Fzc2V0UGFyYW0yJyB9LFxuICAgICAgICAgICAgU3RhdGVNYWNoaW5lTmFtZTogJ21hY2hpbmUtbmFtZScsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfSxcbiAgfSk7XG5cbiAgLy8gV0hFTlxuICBzZXR1cC5wdXNoU3RhY2tSZXNvdXJjZVN1bW1hcmllcyhzZXR1cC5zdGFja1N1bW1hcnlPZignTWFjaGluZScsICdBV1M6OlN0ZXBGdW5jdGlvbnM6OlN0YXRlTWFjaGluZScsICdhcm46YXdzOnN0YXRlczpoZXJlOjEyMzQ1Njc4OTAxMjpzdGF0ZU1hY2hpbmU6bXktbWFjaGluZScpKTtcbiAgY29uc3QgZGVwbG95U3RhY2tSZXN1bHQgPSBhd2FpdCBob3Rzd2FwTW9ja1Nka1Byb3ZpZGVyLnRyeUhvdHN3YXBEZXBsb3ltZW50KGNka1N0YWNrQXJ0aWZhY3QsIHsgQXNzZXRQYXJhbTI6ICdhc3NldC1wYXJhbS0yJyB9KTtcblxuICAvLyBUSEVOXG4gIGV4cGVjdChkZXBsb3lTdGFja1Jlc3VsdCkubm90LnRvQmVVbmRlZmluZWQoKTtcbiAgZXhwZWN0KG1vY2tVcGRhdGVNYWNoaW5lRGVmaW5pdGlvbikudG9IYXZlQmVlbkNhbGxlZFdpdGgoe1xuICAgIGRlZmluaXRpb246ICdhc3NldC1wYXJhbS0yJyxcbiAgICBzdGF0ZU1hY2hpbmVBcm46ICdhcm46YXdzOnN0YXRlczpoZXJlOjEyMzQ1Njc4OTAxMjpzdGF0ZU1hY2hpbmU6bWFjaGluZS1uYW1lJyxcbiAgfSk7XG59KTtcblxudGVzdCgnY2FsbHMgdGhlIHVwZGF0ZVN0YXRlTWFjaGluZSgpIEFQSSB3aGVuIGl0IHJlY2VpdmVzIGEgY2hhbmdlIHRvIHRoZSBkZWZpbml0aW9uU3RyaW5nIHRoYXQgdXNlcyBBdHRyaWJ1dGVzIGluIGEgc3RhdGUgbWFjaGluZScsIGFzeW5jICgpID0+IHtcbiAgLy8gR0lWRU5cbiAgc2V0dXAuc2V0Q3VycmVudENmblN0YWNrVGVtcGxhdGUoe1xuICAgIFJlc291cmNlczoge1xuICAgICAgRnVuYzoge1xuICAgICAgICBUeXBlOiAnQVdTOjpMYW1iZGE6OkZ1bmN0aW9uJyxcbiAgICAgIH0sXG4gICAgICBNYWNoaW5lOiB7XG4gICAgICAgIFR5cGU6ICdBV1M6OlN0ZXBGdW5jdGlvbnM6OlN0YXRlTWFjaGluZScsXG4gICAgICAgIFByb3BlcnRpZXM6IHtcbiAgICAgICAgICBEZWZpbml0aW9uU3RyaW5nOiB7XG4gICAgICAgICAgICAnRm46OkpvaW4nOiBbXG4gICAgICAgICAgICAgICdcXG4nLFxuICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgJ3snLFxuICAgICAgICAgICAgICAgICcgIFwiU3RhcnRBdFwiIDogXCJTdWNjZXNzU3RhdGVcIicsXG4gICAgICAgICAgICAgICAgJyAgXCJTdGF0ZXNcIiA6IHsnLFxuICAgICAgICAgICAgICAgICcgICAgXCJTdWNjZXNzU3RhdGVcIjogeycsXG4gICAgICAgICAgICAgICAgJyAgICAgIFwiVHlwZVwiOiBcIlN1Y2NlZWRcIicsXG4gICAgICAgICAgICAgICAgJyAgICB9JyxcbiAgICAgICAgICAgICAgICAnICB9JyxcbiAgICAgICAgICAgICAgICAnfScsXG4gICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgU3RhdGVNYWNoaW5lTmFtZTogJ215LW1hY2hpbmUnLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9LFxuICB9KTtcbiAgY29uc3QgY2RrU3RhY2tBcnRpZmFjdCA9IHNldHVwLmNka1N0YWNrQXJ0aWZhY3RPZih7XG4gICAgdGVtcGxhdGU6IHtcbiAgICAgIFJlc291cmNlczoge1xuICAgICAgICBGdW5jOiB7XG4gICAgICAgICAgVHlwZTogJ0FXUzo6TGFtYmRhOjpGdW5jdGlvbicsXG4gICAgICAgIH0sXG4gICAgICAgIE1hY2hpbmU6IHtcbiAgICAgICAgICBUeXBlOiAnQVdTOjpTdGVwRnVuY3Rpb25zOjpTdGF0ZU1hY2hpbmUnLFxuICAgICAgICAgIFByb3BlcnRpZXM6IHtcbiAgICAgICAgICAgIERlZmluaXRpb25TdHJpbmc6IHtcbiAgICAgICAgICAgICAgJ0ZuOjpKb2luJzogW1xuICAgICAgICAgICAgICAgICcnLFxuICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICdcIlJlc291cmNlXCI6ICcsXG4gICAgICAgICAgICAgICAgICB7ICdGbjo6R2V0QXR0JzogWydGdW5jJywgJ0FybiddIH0sXG4gICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBTdGF0ZU1hY2hpbmVOYW1lOiAnbXktbWFjaGluZScsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfSxcbiAgfSk7XG5cbiAgLy8gV0hFTlxuICBzZXR1cC5wdXNoU3RhY2tSZXNvdXJjZVN1bW1hcmllcyhcbiAgICBzZXR1cC5zdGFja1N1bW1hcnlPZignTWFjaGluZScsICdBV1M6OlN0ZXBGdW5jdGlvbnM6OlN0YXRlTWFjaGluZScsICdhcm46YXdzOnN0YXRlczpoZXJlOjEyMzQ1Njc4OTAxMjpzdGF0ZU1hY2hpbmU6bXktbWFjaGluZScpLFxuICAgIHNldHVwLnN0YWNrU3VtbWFyeU9mKCdGdW5jJywgJ0FXUzo6TGFtYmRhOjpGdW5jdGlvbicsICdteS1mdW5jJyksXG4gICk7XG4gIGNvbnN0IGRlcGxveVN0YWNrUmVzdWx0ID0gYXdhaXQgaG90c3dhcE1vY2tTZGtQcm92aWRlci50cnlIb3Rzd2FwRGVwbG95bWVudChjZGtTdGFja0FydGlmYWN0KTtcblxuICAvLyBUSEVOXG4gIGV4cGVjdChkZXBsb3lTdGFja1Jlc3VsdCkubm90LnRvQmVVbmRlZmluZWQoKTtcbiAgZXhwZWN0KG1vY2tVcGRhdGVNYWNoaW5lRGVmaW5pdGlvbikudG9IYXZlQmVlbkNhbGxlZFdpdGgoe1xuICAgIGRlZmluaXRpb246ICdcIlJlc291cmNlXCI6IGFybjphd3M6bGFtYmRhOmhlcmU6MTIzNDU2Nzg5MDEyOmZ1bmN0aW9uOm15LWZ1bmMnLFxuICAgIHN0YXRlTWFjaGluZUFybjogJ2Fybjphd3M6c3RhdGVzOmhlcmU6MTIzNDU2Nzg5MDEyOnN0YXRlTWFjaGluZTpteS1tYWNoaW5lJyxcbiAgfSk7XG59KTtcblxudGVzdChcIndpbGwgbm90IHBlcmZvcm0gYSBob3Rzd2FwIGRlcGxveW1lbnQgaWYgaXQgY2Fubm90IGZpbmQgYSBSZWYgdGFyZ2V0IChvdXRzaWRlIHRoZSBzdGF0ZSBtYWNoaW5lJ3MgbmFtZSlcIiwgYXN5bmMgKCkgPT4ge1xuICAvLyBHSVZFTlxuICBzZXR1cC5zZXRDdXJyZW50Q2ZuU3RhY2tUZW1wbGF0ZSh7XG4gICAgUGFyYW1ldGVyczoge1xuICAgICAgUGFyYW0xOiB7IFR5cGU6ICdTdHJpbmcnIH0sXG4gICAgfSxcbiAgICBSZXNvdXJjZXM6IHtcbiAgICAgIE1hY2hpbmU6IHtcbiAgICAgICAgVHlwZTogJ0FXUzo6U3RlcEZ1bmN0aW9uczo6U3RhdGVNYWNoaW5lJyxcbiAgICAgICAgUHJvcGVydGllczoge1xuICAgICAgICAgIERlZmluaXRpb25TdHJpbmc6IHtcbiAgICAgICAgICAgICdGbjo6Sm9pbic6IFtcbiAgICAgICAgICAgICAgJycsXG4gICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAneyBQcm9wOiBcIm9sZC12YWx1ZVwiIH0sICcsXG4gICAgICAgICAgICAgICAgJ3sgXCJQYXJhbVwiIDogJyxcbiAgICAgICAgICAgICAgICB7ICdGbjo6U3ViJzogJyR7UGFyYW0xfScgfSxcbiAgICAgICAgICAgICAgICAnIH0nLFxuICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9LFxuICB9KTtcbiAgc2V0dXAucHVzaFN0YWNrUmVzb3VyY2VTdW1tYXJpZXMoc2V0dXAuc3RhY2tTdW1tYXJ5T2YoJ01hY2hpbmUnLCAnQVdTOjpTdGVwRnVuY3Rpb25zOjpTdGF0ZU1hY2hpbmUnLCAnbXktbWFjaGluZScpKTtcbiAgY29uc3QgY2RrU3RhY2tBcnRpZmFjdCA9IHNldHVwLmNka1N0YWNrQXJ0aWZhY3RPZih7XG4gICAgdGVtcGxhdGU6IHtcbiAgICAgIFBhcmFtZXRlcnM6IHtcbiAgICAgICAgUGFyYW0xOiB7IFR5cGU6ICdTdHJpbmcnIH0sXG4gICAgICB9LFxuICAgICAgUmVzb3VyY2VzOiB7XG4gICAgICAgIE1hY2hpbmU6IHtcbiAgICAgICAgICBUeXBlOiAnQVdTOjpTdGVwRnVuY3Rpb25zOjpTdGF0ZU1hY2hpbmUnLFxuICAgICAgICAgIFByb3BlcnRpZXM6IHtcbiAgICAgICAgICAgIERlZmluaXRpb25TdHJpbmc6IHtcbiAgICAgICAgICAgICAgJ0ZuOjpKb2luJzogW1xuICAgICAgICAgICAgICAgICcnLFxuICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICd7IFByb3A6IFwibmV3LXZhbHVlXCIgfSwgJyxcbiAgICAgICAgICAgICAgICAgICd7IFwiUGFyYW1cIiA6ICcsXG4gICAgICAgICAgICAgICAgICB7ICdGbjo6U3ViJzogJyR7UGFyYW0xfScgfSxcbiAgICAgICAgICAgICAgICAgICcgfScsXG4gICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfSxcbiAgfSk7XG5cbiAgLy8gVEhFTlxuICBhd2FpdCBleHBlY3QoKCkgPT5cbiAgICBob3Rzd2FwTW9ja1Nka1Byb3ZpZGVyLnRyeUhvdHN3YXBEZXBsb3ltZW50KGNka1N0YWNrQXJ0aWZhY3QpLFxuICApLnJlamVjdHMudG9UaHJvdygvUGFyYW1ldGVyIG9yIHJlc291cmNlICdQYXJhbTEnIGNvdWxkIG5vdCBiZSBmb3VuZCBmb3IgZXZhbHVhdGlvbi8pO1xufSk7XG5cbnRlc3QoXCJ3aWxsIG5vdCBwZXJmb3JtIGEgaG90c3dhcCBkZXBsb3ltZW50IGlmIGl0IGRvZXNuJ3Qga25vdyBob3cgdG8gaGFuZGxlIGEgc3BlY2lmaWMgYXR0cmlidXRlIChvdXRzaWRlIHRoZSBzdGF0ZSBtYWNoaW5lcydzIG5hbWUpXCIsIGFzeW5jICgpID0+IHtcbiAgLy8gR0lWRU5cbiAgc2V0dXAuc2V0Q3VycmVudENmblN0YWNrVGVtcGxhdGUoe1xuICAgIFJlc291cmNlczoge1xuICAgICAgQnVja2V0OiB7XG4gICAgICAgIFR5cGU6ICdBV1M6OlMzOjpCdWNrZXQnLFxuICAgICAgfSxcbiAgICAgIE1hY2hpbmU6IHtcbiAgICAgICAgVHlwZTogJ0FXUzo6U3RlcEZ1bmN0aW9uczo6U3RhdGVNYWNoaW5lJyxcbiAgICAgICAgUHJvcGVydGllczoge1xuICAgICAgICAgIERlZmluaXRpb25TdHJpbmc6IHtcbiAgICAgICAgICAgICdGbjo6Sm9pbic6IFtcbiAgICAgICAgICAgICAgJycsXG4gICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAneyBQcm9wOiBcIm9sZC12YWx1ZVwiIH0sICcsXG4gICAgICAgICAgICAgICAgJ3sgXCJTM0J1Y2tldFwiIDogJyxcbiAgICAgICAgICAgICAgICB7ICdGbjo6R2V0QXR0JzogWydCdWNrZXQnLCAnVW5rbm93bkF0dHJpYnV0ZSddIH0sXG4gICAgICAgICAgICAgICAgJyB9JyxcbiAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgfSxcbiAgICAgICAgICBTdGF0ZU1hY2hpbmVOYW1lOiAnbXktbWFjaGluZScsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH0sXG4gIH0pO1xuICBzZXR1cC5wdXNoU3RhY2tSZXNvdXJjZVN1bW1hcmllcyhcbiAgICBzZXR1cC5zdGFja1N1bW1hcnlPZignTWFjaGluZScsICdBV1M6OlN0ZXBGdW5jdGlvbnM6OlN0YXRlTWFjaGluZScsICdhcm46YXdzOnN0YXRlczpoZXJlOjEyMzQ1Njc4OTAxMjpzdGF0ZU1hY2hpbmU6bXktbWFjaGluZScpLFxuICAgIHNldHVwLnN0YWNrU3VtbWFyeU9mKCdCdWNrZXQnLCAnQVdTOjpTMzo6QnVja2V0JywgJ215LWJ1Y2tldCcpLFxuICApO1xuICBjb25zdCBjZGtTdGFja0FydGlmYWN0ID0gc2V0dXAuY2RrU3RhY2tBcnRpZmFjdE9mKHtcbiAgICB0ZW1wbGF0ZToge1xuICAgICAgUmVzb3VyY2VzOiB7XG4gICAgICAgIEJ1Y2tldDoge1xuICAgICAgICAgIFR5cGU6ICdBV1M6OkxhbWJkYTo6RnVuY3Rpb24nLFxuICAgICAgICB9LFxuICAgICAgICBNYWNoaW5lOiB7XG4gICAgICAgICAgVHlwZTogJ0FXUzo6U3RlcEZ1bmN0aW9uczo6U3RhdGVNYWNoaW5lJyxcbiAgICAgICAgICBQcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgICBEZWZpbml0aW9uU3RyaW5nOiB7XG4gICAgICAgICAgICAgICdGbjo6Sm9pbic6IFtcbiAgICAgICAgICAgICAgICAnJyxcbiAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAneyBQcm9wOiBcIm5ldy12YWx1ZVwiIH0sICcsXG4gICAgICAgICAgICAgICAgICAneyBcIlMzQnVja2V0XCIgOiAnLFxuICAgICAgICAgICAgICAgICAgeyAnRm46OkdldEF0dCc6IFsnQnVja2V0JywgJ1Vua25vd25BdHRyaWJ1dGUnXSB9LFxuICAgICAgICAgICAgICAgICAgJyB9JyxcbiAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIFN0YXRlTWFjaGluZU5hbWU6ICdteS1tYWNoaW5lJyxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9LFxuICB9KTtcblxuICAvLyBUSEVOXG4gIGF3YWl0IGV4cGVjdCgoKSA9PlxuICAgIGhvdHN3YXBNb2NrU2RrUHJvdmlkZXIudHJ5SG90c3dhcERlcGxveW1lbnQoY2RrU3RhY2tBcnRpZmFjdCksXG4gICkucmVqZWN0cy50b1Rocm93KFwiV2UgZG9uJ3Qgc3VwcG9ydCB0aGUgJ1Vua25vd25BdHRyaWJ1dGUnIGF0dHJpYnV0ZSBvZiB0aGUgJ0FXUzo6UzM6OkJ1Y2tldCcgcmVzb3VyY2UuIFRoaXMgaXMgYSBDREsgbGltaXRhdGlvbi4gUGxlYXNlIHJlcG9ydCBpdCBhdCBodHRwczovL2dpdGh1Yi5jb20vYXdzL2F3cy1jZGsvaXNzdWVzL25ldy9jaG9vc2VcIik7XG59KTtcblxudGVzdCgna25vd3MgaG93IHRvIGhhbmRsZSBhdHRyaWJ1dGVzIG9mIHRoZSBBV1M6OkV2ZW50czo6RXZlbnRCdXMgcmVzb3VyY2UnLCBhc3luYyAoKSA9PiB7XG4gIC8vIEdJVkVOXG4gIHNldHVwLnNldEN1cnJlbnRDZm5TdGFja1RlbXBsYXRlKHtcbiAgICBSZXNvdXJjZXM6IHtcbiAgICAgIEV2ZW50QnVzOiB7XG4gICAgICAgIFR5cGU6ICdBV1M6OkV2ZW50czo6RXZlbnRCdXMnLFxuICAgICAgICBQcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgTmFtZTogJ215LWV2ZW50LWJ1cycsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgTWFjaGluZToge1xuICAgICAgICBUeXBlOiAnQVdTOjpTdGVwRnVuY3Rpb25zOjpTdGF0ZU1hY2hpbmUnLFxuICAgICAgICBQcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgRGVmaW5pdGlvblN0cmluZzoge1xuICAgICAgICAgICAgJ0ZuOjpKb2luJzogWycnLCBbXG4gICAgICAgICAgICAgICd7XCJFdmVudEJ1czFBcm5cIjpcIicsXG4gICAgICAgICAgICAgIHsgJ0ZuOjpHZXRBdHQnOiBbJ0V2ZW50QnVzJywgJ0FybiddIH0sXG4gICAgICAgICAgICAgICdcIixcIkV2ZW50QnVzMU5hbWVcIjpcIicsXG4gICAgICAgICAgICAgIHsgJ0ZuOjpHZXRBdHQnOiBbJ0V2ZW50QnVzJywgJ05hbWUnXSB9LFxuICAgICAgICAgICAgICAnXCIsXCJFdmVudEJ1czFSZWZcIjpcIicsXG4gICAgICAgICAgICAgIHsgUmVmOiAnRXZlbnRCdXMnIH0sXG4gICAgICAgICAgICAgICdcIn0nLFxuICAgICAgICAgICAgXV0sXG4gICAgICAgICAgfSxcbiAgICAgICAgICBTdGF0ZU1hY2hpbmVOYW1lOiAnbXktbWFjaGluZScsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH0sXG4gIH0pO1xuICBzZXR1cC5wdXNoU3RhY2tSZXNvdXJjZVN1bW1hcmllcyhcbiAgICBzZXR1cC5zdGFja1N1bW1hcnlPZignRXZlbnRCdXMnLCAnQVdTOjpFdmVudHM6OkV2ZW50QnVzJywgJ215LWV2ZW50LWJ1cycpLFxuICApO1xuICBjb25zdCBjZGtTdGFja0FydGlmYWN0ID0gc2V0dXAuY2RrU3RhY2tBcnRpZmFjdE9mKHtcbiAgICB0ZW1wbGF0ZToge1xuICAgICAgUmVzb3VyY2VzOiB7XG4gICAgICAgIEV2ZW50QnVzOiB7XG4gICAgICAgICAgVHlwZTogJ0FXUzo6RXZlbnRzOjpFdmVudEJ1cycsXG4gICAgICAgICAgUHJvcGVydGllczoge1xuICAgICAgICAgICAgTmFtZTogJ215LWV2ZW50LWJ1cycsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgICAgTWFjaGluZToge1xuICAgICAgICAgIFR5cGU6ICdBV1M6OlN0ZXBGdW5jdGlvbnM6OlN0YXRlTWFjaGluZScsXG4gICAgICAgICAgUHJvcGVydGllczoge1xuICAgICAgICAgICAgRGVmaW5pdGlvblN0cmluZzoge1xuICAgICAgICAgICAgICAnRm46OkpvaW4nOiBbJycsIFtcbiAgICAgICAgICAgICAgICAne1wiRXZlbnRCdXMyQXJuXCI6XCInLFxuICAgICAgICAgICAgICAgIHsgJ0ZuOjpHZXRBdHQnOiBbJ0V2ZW50QnVzJywgJ0FybiddIH0sXG4gICAgICAgICAgICAgICAgJ1wiLFwiRXZlbnRCdXMyTmFtZVwiOlwiJyxcbiAgICAgICAgICAgICAgICB7ICdGbjo6R2V0QXR0JzogWydFdmVudEJ1cycsICdOYW1lJ10gfSxcbiAgICAgICAgICAgICAgICAnXCIsXCJFdmVudEJ1czJSZWZcIjpcIicsXG4gICAgICAgICAgICAgICAgeyBSZWY6ICdFdmVudEJ1cycgfSxcbiAgICAgICAgICAgICAgICAnXCJ9JyxcbiAgICAgICAgICAgICAgXV0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgU3RhdGVNYWNoaW5lTmFtZTogJ215LW1hY2hpbmUnLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH0sXG4gIH0pO1xuXG4gIC8vIFRIRU5cbiAgY29uc3QgcmVzdWx0ID0gYXdhaXQgaG90c3dhcE1vY2tTZGtQcm92aWRlci50cnlIb3Rzd2FwRGVwbG95bWVudChjZGtTdGFja0FydGlmYWN0KTtcblxuICBleHBlY3QocmVzdWx0KS5ub3QudG9CZVVuZGVmaW5lZCgpO1xuICBleHBlY3QobW9ja1VwZGF0ZU1hY2hpbmVEZWZpbml0aW9uKS50b0hhdmVCZWVuQ2FsbGVkV2l0aCh7XG4gICAgc3RhdGVNYWNoaW5lQXJuOiAnYXJuOmF3czpzdGF0ZXM6aGVyZToxMjM0NTY3ODkwMTI6c3RhdGVNYWNoaW5lOm15LW1hY2hpbmUnLFxuICAgIGRlZmluaXRpb246IEpTT04uc3RyaW5naWZ5KHtcbiAgICAgIEV2ZW50QnVzMkFybjogJ2Fybjphd3M6ZXZlbnRzOmhlcmU6MTIzNDU2Nzg5MDEyOmV2ZW50LWJ1cy9teS1ldmVudC1idXMnLFxuICAgICAgRXZlbnRCdXMyTmFtZTogJ215LWV2ZW50LWJ1cycsXG4gICAgICBFdmVudEJ1czJSZWY6ICdteS1ldmVudC1idXMnLFxuICAgIH0pLFxuICB9KTtcbn0pO1xuIl19
|
|
@@ -16,18 +16,13 @@ afterAll(() => {
|
|
|
16
16
|
stderrMock.mockRestore();
|
|
17
17
|
monitor.deactivate();
|
|
18
18
|
});
|
|
19
|
-
let TIMESTAMP;
|
|
20
|
-
let HUMAN_TIME;
|
|
21
|
-
beforeAll(() => {
|
|
22
|
-
TIMESTAMP = new Date().getTime();
|
|
23
|
-
HUMAN_TIME = new Date(TIMESTAMP).toLocaleTimeString();
|
|
24
|
-
});
|
|
25
19
|
test('continue to the next page if it exists', async () => {
|
|
26
20
|
// GIVEN
|
|
21
|
+
const eventDate = new Date(T0 + 102 * 1000);
|
|
27
22
|
sdk.stubCloudWatchLogs({
|
|
28
23
|
filterLogEvents() {
|
|
29
24
|
return {
|
|
30
|
-
events: [event(102, 'message')],
|
|
25
|
+
events: [event(102, 'message', eventDate)],
|
|
31
26
|
nextToken: 'some-token',
|
|
32
27
|
};
|
|
33
28
|
},
|
|
@@ -42,18 +37,19 @@ test('continue to the next page if it exists', async () => {
|
|
|
42
37
|
// need time for the log processing to occur
|
|
43
38
|
await aws_1.sleep(1000);
|
|
44
39
|
// THEN
|
|
40
|
+
const expectedLocaleTimeString = eventDate.toLocaleTimeString();
|
|
45
41
|
expect(stderrMock).toHaveBeenCalledTimes(2);
|
|
46
|
-
expect(stderrMock.mock.calls[0][0]).toContain(`[${chalk_1.blue('loggroup')}] ${chalk_1.yellow(
|
|
47
|
-
expect(stderrMock.mock.calls[1][0]).toContain(`[${chalk_1.blue('loggroup')}] ${chalk_1.yellow(
|
|
42
|
+
expect(stderrMock.mock.calls[0][0]).toContain(`[${chalk_1.blue('loggroup')}] ${chalk_1.yellow(expectedLocaleTimeString)} message`);
|
|
43
|
+
expect(stderrMock.mock.calls[1][0]).toContain(`[${chalk_1.blue('loggroup')}] ${chalk_1.yellow(expectedLocaleTimeString)} >>> \`watch\` shows only the first 100 log messages - the rest have been truncated...`);
|
|
48
44
|
});
|
|
49
45
|
const T0 = 1597837230504;
|
|
50
46
|
const T100 = T0 + 100 * 1000;
|
|
51
|
-
function event(nr, message) {
|
|
47
|
+
function event(nr, message, timestamp) {
|
|
52
48
|
return {
|
|
53
49
|
eventId: `${nr}`,
|
|
54
50
|
message,
|
|
55
|
-
timestamp:
|
|
56
|
-
ingestionTime:
|
|
51
|
+
timestamp: timestamp.getTime(),
|
|
52
|
+
ingestionTime: timestamp.getTime(),
|
|
57
53
|
};
|
|
58
54
|
}
|
|
59
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
55
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9ncy1tb25pdG9yLnRlc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJsb2dzLW1vbml0b3IudGVzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLGlDQUFxQztBQUNyQyxxRUFBK0U7QUFDL0UsaURBQWdEO0FBQ2hELGtEQUE4QztBQUU5QyxJQUFJLEdBQVksQ0FBQztBQUNqQixJQUFJLFVBQTRCLENBQUM7QUFDakMsSUFBSSxPQUFrQyxDQUFDO0FBQ3ZDLFVBQVUsQ0FBQyxHQUFHLEVBQUU7SUFDZCxPQUFPLEdBQUcsSUFBSSx3Q0FBeUIsQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ3hELFVBQVUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDLENBQUMsa0JBQWtCLENBQUMsR0FBRyxFQUFFLEdBQUcsT0FBTyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM1RixHQUFHLEdBQUcsSUFBSSxrQkFBTyxFQUFFLENBQUM7QUFDdEIsQ0FBQyxDQUFDLENBQUM7QUFFSCxRQUFRLENBQUMsR0FBRyxFQUFFO0lBQ1osVUFBVSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ3pCLE9BQU8sQ0FBQyxVQUFVLEVBQUUsQ0FBQztBQUN2QixDQUFDLENBQUMsQ0FBQztBQUVILElBQUksQ0FBQyx3Q0FBd0MsRUFBRSxLQUFLLElBQUksRUFBRTtJQUN4RCxRQUFRO0lBQ1IsTUFBTSxTQUFTLEdBQUcsSUFBSSxJQUFJLENBQUMsRUFBRSxHQUFHLEdBQUcsR0FBRyxJQUFJLENBQUMsQ0FBQztJQUM1QyxHQUFHLENBQUMsa0JBQWtCLENBQUM7UUFDckIsZUFBZTtZQUNiLE9BQU87Z0JBQ0wsTUFBTSxFQUFFLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxTQUFTLEVBQUUsU0FBUyxDQUFDLENBQUM7Z0JBQzFDLFNBQVMsRUFBRSxZQUFZO2FBQ3hCLENBQUM7UUFDSixDQUFDO0tBQ0YsQ0FBQyxDQUFDO0lBQ0gsT0FBTyxDQUFDLFlBQVksQ0FDbEI7UUFDRSxJQUFJLEVBQUUsTUFBTTtRQUNaLE9BQU8sRUFBRSxhQUFhO1FBQ3RCLE1BQU0sRUFBRSxXQUFXO0tBQ3BCLEVBQ0QsR0FBRyxFQUNILENBQUMsVUFBVSxDQUFDLENBQ2IsQ0FBQztJQUNGLE9BQU87SUFDUCxPQUFPLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDbkIsNENBQTRDO0lBQzVDLE1BQU0sV0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBRWxCLE9BQU87SUFDUCxNQUFNLHdCQUF3QixHQUFHLFNBQVMsQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO0lBQ2hFLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM1QyxNQUFNLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQzNDLElBQUksWUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLGNBQU0sQ0FBQyx3QkFBd0IsQ0FBQyxVQUFVLENBQ3BFLENBQUM7SUFDRixNQUFNLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQzNDLElBQUksWUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLGNBQU0sQ0FBQyx3QkFBd0IsQ0FBQyx3RkFBd0YsQ0FDbEosQ0FBQztBQUNKLENBQUMsQ0FBQyxDQUFDO0FBRUgsTUFBTSxFQUFFLEdBQUcsYUFBYSxDQUFDO0FBQ3pCLE1BQU0sSUFBSSxHQUFHLEVBQUUsR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDO0FBQzdCLFNBQVMsS0FBSyxDQUFDLEVBQVUsRUFBRSxPQUFlLEVBQUUsU0FBZTtJQUN6RCxPQUFPO1FBQ0wsT0FBTyxFQUFFLEdBQUcsRUFBRSxFQUFFO1FBQ2hCLE9BQU87UUFDUCxTQUFTLEVBQUUsU0FBUyxDQUFDLE9BQU8sRUFBRTtRQUM5QixhQUFhLEVBQUUsU0FBUyxDQUFDLE9BQU8sRUFBRTtLQUNuQyxDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGJsdWUsIHllbGxvdyB9IGZyb20gJ2NoYWxrJztcbmltcG9ydCB7IENsb3VkV2F0Y2hMb2dFdmVudE1vbml0b3IgfSBmcm9tICcuLi8uLi8uLi9saWIvYXBpL2xvZ3MvbG9ncy1tb25pdG9yJztcbmltcG9ydCB7IHNsZWVwIH0gZnJvbSAnLi4vLi4vaW50ZWcvaGVscGVycy9hd3MnO1xuaW1wb3J0IHsgTW9ja1NkayB9IGZyb20gJy4uLy4uL3V0aWwvbW9jay1zZGsnO1xuXG5sZXQgc2RrOiBNb2NrU2RrO1xubGV0IHN0ZGVyck1vY2s6IGplc3QuU3B5SW5zdGFuY2U7XG5sZXQgbW9uaXRvcjogQ2xvdWRXYXRjaExvZ0V2ZW50TW9uaXRvcjtcbmJlZm9yZUVhY2goKCkgPT4ge1xuICBtb25pdG9yID0gbmV3IENsb3VkV2F0Y2hMb2dFdmVudE1vbml0b3IobmV3IERhdGUoVDEwMCkpO1xuICBzdGRlcnJNb2NrID0gamVzdC5zcHlPbihwcm9jZXNzLnN0ZGVyciwgJ3dyaXRlJykubW9ja0ltcGxlbWVudGF0aW9uKCgpID0+IHsgcmV0dXJuIHRydWU7IH0pO1xuICBzZGsgPSBuZXcgTW9ja1NkaygpO1xufSk7XG5cbmFmdGVyQWxsKCgpID0+IHtcbiAgc3RkZXJyTW9jay5tb2NrUmVzdG9yZSgpO1xuICBtb25pdG9yLmRlYWN0aXZhdGUoKTtcbn0pO1xuXG50ZXN0KCdjb250aW51ZSB0byB0aGUgbmV4dCBwYWdlIGlmIGl0IGV4aXN0cycsIGFzeW5jICgpID0+IHtcbiAgLy8gR0lWRU5cbiAgY29uc3QgZXZlbnREYXRlID0gbmV3IERhdGUoVDAgKyAxMDIgKiAxMDAwKTtcbiAgc2RrLnN0dWJDbG91ZFdhdGNoTG9ncyh7XG4gICAgZmlsdGVyTG9nRXZlbnRzKCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZXZlbnRzOiBbZXZlbnQoMTAyLCAnbWVzc2FnZScsIGV2ZW50RGF0ZSldLFxuICAgICAgICBuZXh0VG9rZW46ICdzb21lLXRva2VuJyxcbiAgICAgIH07XG4gICAgfSxcbiAgfSk7XG4gIG1vbml0b3IuYWRkTG9nR3JvdXBzKFxuICAgIHtcbiAgICAgIG5hbWU6ICduYW1lJyxcbiAgICAgIGFjY291bnQ6ICcxMTExMTExMTExMScsXG4gICAgICByZWdpb246ICd1cy1lYXN0LTEnLFxuICAgIH0sXG4gICAgc2RrLFxuICAgIFsnbG9nZ3JvdXAnXSxcbiAgKTtcbiAgLy8gV0hFTlxuICBtb25pdG9yLmFjdGl2YXRlKCk7XG4gIC8vIG5lZWQgdGltZSBmb3IgdGhlIGxvZyBwcm9jZXNzaW5nIHRvIG9jY3VyXG4gIGF3YWl0IHNsZWVwKDEwMDApO1xuXG4gIC8vIFRIRU5cbiAgY29uc3QgZXhwZWN0ZWRMb2NhbGVUaW1lU3RyaW5nID0gZXZlbnREYXRlLnRvTG9jYWxlVGltZVN0cmluZygpO1xuICBleHBlY3Qoc3RkZXJyTW9jaykudG9IYXZlQmVlbkNhbGxlZFRpbWVzKDIpO1xuICBleHBlY3Qoc3RkZXJyTW9jay5tb2NrLmNhbGxzWzBdWzBdKS50b0NvbnRhaW4oXG4gICAgYFske2JsdWUoJ2xvZ2dyb3VwJyl9XSAke3llbGxvdyhleHBlY3RlZExvY2FsZVRpbWVTdHJpbmcpfSBtZXNzYWdlYCxcbiAgKTtcbiAgZXhwZWN0KHN0ZGVyck1vY2subW9jay5jYWxsc1sxXVswXSkudG9Db250YWluKFxuICAgIGBbJHtibHVlKCdsb2dncm91cCcpfV0gJHt5ZWxsb3coZXhwZWN0ZWRMb2NhbGVUaW1lU3RyaW5nKX0gPj4+IFxcYHdhdGNoXFxgIHNob3dzIG9ubHkgdGhlIGZpcnN0IDEwMCBsb2cgbWVzc2FnZXMgLSB0aGUgcmVzdCBoYXZlIGJlZW4gdHJ1bmNhdGVkLi4uYCxcbiAgKTtcbn0pO1xuXG5jb25zdCBUMCA9IDE1OTc4MzcyMzA1MDQ7XG5jb25zdCBUMTAwID0gVDAgKyAxMDAgKiAxMDAwO1xuZnVuY3Rpb24gZXZlbnQobnI6IG51bWJlciwgbWVzc2FnZTogc3RyaW5nLCB0aW1lc3RhbXA6IERhdGUpOiBBV1MuQ2xvdWRXYXRjaExvZ3MuRmlsdGVyZWRMb2dFdmVudCB7XG4gIHJldHVybiB7XG4gICAgZXZlbnRJZDogYCR7bnJ9YCxcbiAgICBtZXNzYWdlLFxuICAgIHRpbWVzdGFtcDogdGltZXN0YW1wLmdldFRpbWUoKSxcbiAgICBpbmdlc3Rpb25UaW1lOiB0aW1lc3RhbXAuZ2V0VGltZSgpLFxuICB9O1xufVxuIl19
|
package/test/cdk-docs.test.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
const mockery = require("mockery");
|
|
4
|
+
const docs_1 = require("../lib/commands/docs");
|
|
4
5
|
const argv = {
|
|
5
6
|
browser: 'echo %u',
|
|
6
7
|
commandHandler: undefined,
|
|
@@ -22,9 +23,7 @@ describe('`cdk docs`', () => {
|
|
|
22
23
|
done();
|
|
23
24
|
});
|
|
24
25
|
test('exits with 0 when everything is OK', async () => {
|
|
25
|
-
|
|
26
|
-
require('../lib/commands/docs').handler(argv);
|
|
27
|
-
const result = await argv.commandHandler({ args: argv });
|
|
26
|
+
const result = await docs_1.realHandler({ args: argv });
|
|
28
27
|
expect(result).toBe(0);
|
|
29
28
|
});
|
|
30
29
|
test('exits with 0 when opening the browser fails', async () => {
|
|
@@ -33,10 +32,8 @@ describe('`cdk docs`', () => {
|
|
|
33
32
|
cb(new Error('TEST'));
|
|
34
33
|
},
|
|
35
34
|
});
|
|
36
|
-
|
|
37
|
-
require('../lib/commands/docs').handler(argv);
|
|
38
|
-
const result = await argv.commandHandler({ args: argv });
|
|
35
|
+
const result = await docs_1.realHandler({ args: argv });
|
|
39
36
|
expect(result).toBe(0);
|
|
40
37
|
});
|
|
41
38
|
});
|
|
42
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
39
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2RrLWRvY3MudGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImNkay1kb2NzLnRlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxtQ0FBbUM7QUFFbkMsK0NBQW1EO0FBRW5ELE1BQU0sSUFBSSxHQUFHO0lBQ1gsT0FBTyxFQUFFLFNBQVM7SUFDbEIsY0FBYyxFQUFFLFNBQXlDO0NBQzFELENBQUM7QUFFRixRQUFRLENBQUMsWUFBWSxFQUFFLEdBQUcsRUFBRTtJQUMxQixVQUFVLENBQUMsSUFBSSxDQUFDLEVBQUU7UUFDaEIsT0FBTyxDQUFDLFlBQVksQ0FBQyxtQkFBbUIsRUFBRTtZQUN4QyxLQUFLLEtBQUssT0FBTyxDQUFDLENBQUM7WUFDbkIsS0FBSyxLQUFLLE9BQU8sQ0FBQyxDQUFDO1lBQ25CLEtBQUssS0FBSyxPQUFPLENBQUMsQ0FBQztZQUNuQixPQUFPLEtBQUssT0FBTyxDQUFDLENBQUM7U0FDdEIsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxDQUFDLE1BQU0sQ0FBQyxFQUFFLGFBQWEsRUFBRSxJQUFJLEVBQUUsYUFBYSxFQUFFLElBQUksRUFBRSxrQkFBa0IsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO1FBQ3hGLElBQUksRUFBRSxDQUFDO0lBQ1QsQ0FBQyxDQUFDLENBQUM7SUFFSCxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUU7UUFDZCxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDbEIsT0FBTyxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ3hCLElBQUksRUFBRSxDQUFDO0lBQ1QsQ0FBQyxDQUFDLENBQUM7SUFFSCxJQUFJLENBQUMsb0NBQW9DLEVBQUUsS0FBSyxJQUFJLEVBQUU7UUFDcEQsTUFBTSxNQUFNLEdBQUcsTUFBTSxrQkFBVyxDQUFDLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBUyxDQUFDLENBQUM7UUFDeEQsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN6QixDQUFDLENBQUMsQ0FBQztJQUVILElBQUksQ0FBQyw2Q0FBNkMsRUFBRSxLQUFLLElBQUksRUFBRTtRQUM3RCxPQUFPLENBQUMsWUFBWSxDQUFDLGVBQWUsRUFBRTtZQUNwQyxJQUFJLENBQUMsQ0FBUyxFQUFFLEVBQTBEO2dCQUN4RSxFQUFFLENBQUMsSUFBSSxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztZQUN4QixDQUFDO1NBQ0YsQ0FBQyxDQUFDO1FBQ0gsTUFBTSxNQUFNLEdBQUcsTUFBTSxrQkFBVyxDQUFDLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBUyxDQUFDLENBQUM7UUFDeEQsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN6QixDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgbW9ja2VyeSBmcm9tICdtb2NrZXJ5JztcbmltcG9ydCB7IENvbW1hbmRIYW5kbGVyIH0gZnJvbSAnLi4vbGliL2NvbW1hbmQtYXBpJztcbmltcG9ydCB7IHJlYWxIYW5kbGVyIH0gZnJvbSAnLi4vbGliL2NvbW1hbmRzL2RvY3MnO1xuXG5jb25zdCBhcmd2ID0ge1xuICBicm93c2VyOiAnZWNobyAldScsXG4gIGNvbW1hbmRIYW5kbGVyOiB1bmRlZmluZWQgYXMgKENvbW1hbmRIYW5kbGVyIHwgdW5kZWZpbmVkKSxcbn07XG5cbmRlc2NyaWJlKCdgY2RrIGRvY3NgJywgKCkgPT4ge1xuICBiZWZvcmVFYWNoKGRvbmUgPT4ge1xuICAgIG1vY2tlcnkucmVnaXN0ZXJNb2NrKCcuLi8uLi9saWIvbG9nZ2luZycsIHtcbiAgICAgIGRlYnVnKCkgeyByZXR1cm47IH0sXG4gICAgICBlcnJvcigpIHsgcmV0dXJuOyB9LFxuICAgICAgcHJpbnQoKSB7IHJldHVybjsgfSxcbiAgICAgIHdhcm5pbmcoKSB7IHJldHVybjsgfSxcbiAgICB9KTtcbiAgICBtb2NrZXJ5LmVuYWJsZSh7IHVzZUNsZWFuQ2FjaGU6IHRydWUsIHdhcm5PblJlcGxhY2U6IHRydWUsIHdhcm5PblVucmVnaXN0ZXJlZDogZmFsc2UgfSk7XG4gICAgZG9uZSgpO1xuICB9KTtcblxuICBhZnRlckFsbChkb25lID0+IHtcbiAgICBtb2NrZXJ5LmRpc2FibGUoKTtcbiAgICBtb2NrZXJ5LmRlcmVnaXN0ZXJBbGwoKTtcbiAgICBkb25lKCk7XG4gIH0pO1xuXG4gIHRlc3QoJ2V4aXRzIHdpdGggMCB3aGVuIGV2ZXJ5dGhpbmcgaXMgT0snLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgcmVhbEhhbmRsZXIoeyBhcmdzOiBhcmd2IH0gYXMgYW55KTtcbiAgICBleHBlY3QocmVzdWx0KS50b0JlKDApO1xuICB9KTtcblxuICB0ZXN0KCdleGl0cyB3aXRoIDAgd2hlbiBvcGVuaW5nIHRoZSBicm93c2VyIGZhaWxzJywgYXN5bmMgKCkgPT4ge1xuICAgIG1vY2tlcnkucmVnaXN0ZXJNb2NrKCdjaGlsZF9wcm9jZXNzJywge1xuICAgICAgZXhlYyhfOiBzdHJpbmcsIGNiOiAoZXJyOiBFcnJvciwgc3Rkb3V0Pzogc3RyaW5nLCBzdGRlcnI/OiBzdHJpbmcpID0+IHZvaWQpIHtcbiAgICAgICAgY2IobmV3IEVycm9yKCdURVNUJykpO1xuICAgICAgfSxcbiAgICB9KTtcbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCByZWFsSGFuZGxlcih7IGFyZ3M6IGFyZ3YgfSBhcyBhbnkpO1xuICAgIGV4cGVjdChyZXN1bHQpLnRvQmUoMCk7XG4gIH0pO1xufSk7XG4iXX0=
|
package/test/cdk-doctor.test.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
const mockery = require("mockery");
|
|
4
|
+
const doctor_1 = require("../lib/commands/doctor");
|
|
4
5
|
describe('`cdk doctor`', () => {
|
|
5
6
|
beforeEach(done => {
|
|
6
7
|
mockery.registerMock('../../lib/logging', {
|
|
@@ -16,10 +17,8 @@ describe('`cdk doctor`', () => {
|
|
|
16
17
|
});
|
|
17
18
|
test('exits with 0 when everything is OK', async () => {
|
|
18
19
|
const argv = {};
|
|
19
|
-
|
|
20
|
-
require('../lib/commands/doctor').handler(argv);
|
|
21
|
-
const result = await argv.commandHandler({ args: argv });
|
|
20
|
+
const result = await doctor_1.realHandler({ args: argv });
|
|
22
21
|
expect(result).toBe(0);
|
|
23
22
|
});
|
|
24
23
|
});
|
|
25
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
24
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2RrLWRvY3Rvci50ZXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiY2RrLWRvY3Rvci50ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsbUNBQW1DO0FBQ25DLG1EQUFxRDtBQUVyRCxRQUFRLENBQUMsY0FBYyxFQUFFLEdBQUcsRUFBRTtJQUM1QixVQUFVLENBQUMsSUFBSSxDQUFDLEVBQUU7UUFDaEIsT0FBTyxDQUFDLFlBQVksQ0FBQyxtQkFBbUIsRUFBRTtZQUN4QyxLQUFLLEVBQUUsR0FBRyxFQUFFLENBQUMsU0FBUztTQUN2QixDQUFDLENBQUM7UUFDSCxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUUsYUFBYSxFQUFFLElBQUksRUFBRSxhQUFhLEVBQUUsSUFBSSxFQUFFLGtCQUFrQixFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7UUFDeEYsSUFBSSxFQUFFLENBQUM7SUFDVCxDQUFDLENBQUMsQ0FBQztJQUVILFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRTtRQUNmLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUNsQixPQUFPLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDeEIsSUFBSSxFQUFFLENBQUM7SUFDVCxDQUFDLENBQUMsQ0FBQztJQUVILElBQUksQ0FBQyxvQ0FBb0MsRUFBRSxLQUFLLElBQUksRUFBRTtRQUNwRCxNQUFNLElBQUksR0FBUSxFQUFFLENBQUM7UUFDckIsTUFBTSxNQUFNLEdBQUcsTUFBTSxvQkFBVyxDQUFDLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBUyxDQUFDLENBQUM7UUFDeEQsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN6QixDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgbW9ja2VyeSBmcm9tICdtb2NrZXJ5JztcbmltcG9ydCB7IHJlYWxIYW5kbGVyIH0gZnJvbSAnLi4vbGliL2NvbW1hbmRzL2RvY3Rvcic7XG5cbmRlc2NyaWJlKCdgY2RrIGRvY3RvcmAnLCAoKSA9PiB7XG4gIGJlZm9yZUVhY2goZG9uZSA9PiB7XG4gICAgbW9ja2VyeS5yZWdpc3Rlck1vY2soJy4uLy4uL2xpYi9sb2dnaW5nJywge1xuICAgICAgcHJpbnQ6ICgpID0+IHVuZGVmaW5lZCxcbiAgICB9KTtcbiAgICBtb2NrZXJ5LmVuYWJsZSh7IHVzZUNsZWFuQ2FjaGU6IHRydWUsIHdhcm5PblJlcGxhY2U6IHRydWUsIHdhcm5PblVucmVnaXN0ZXJlZDogZmFsc2UgfSk7XG4gICAgZG9uZSgpO1xuICB9KTtcblxuICBhZnRlckVhY2goZG9uZSA9PiB7XG4gICAgbW9ja2VyeS5kaXNhYmxlKCk7XG4gICAgbW9ja2VyeS5kZXJlZ2lzdGVyQWxsKCk7XG4gICAgZG9uZSgpO1xuICB9KTtcblxuICB0ZXN0KCdleGl0cyB3aXRoIDAgd2hlbiBldmVyeXRoaW5nIGlzIE9LJywgYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IGFyZ3Y6IGFueSA9IHt9O1xuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHJlYWxIYW5kbGVyKHsgYXJnczogYXJndiB9IGFzIGFueSk7XG4gICAgZXhwZWN0KHJlc3VsdCkudG9CZSgwKTtcbiAgfSk7XG59KTtcbiJdfQ==
|
|
@@ -6,6 +6,7 @@ const settings_1 = require("../../lib/settings");
|
|
|
6
6
|
const mock_sdk_1 = require("../util/mock-sdk");
|
|
7
7
|
const mockSDK = new mock_sdk_1.MockSdkProvider();
|
|
8
8
|
const TEST_PROVIDER = 'testprovider';
|
|
9
|
+
const PLUGIN_PROVIDER = 'plugin';
|
|
9
10
|
test('errors are reported into the context value', async () => {
|
|
10
11
|
// GIVEN
|
|
11
12
|
contextproviders.registerContextProvider(TEST_PROVIDER, {
|
|
@@ -70,7 +71,7 @@ test('errors are marked transient', async () => {
|
|
|
70
71
|
test('context provider can be registered using PluginHost', async () => {
|
|
71
72
|
let called = false;
|
|
72
73
|
// GIVEN
|
|
73
|
-
plugin_1.PluginHost.instance.registerContextProviderAlpha(
|
|
74
|
+
plugin_1.PluginHost.instance.registerContextProviderAlpha('prov', {
|
|
74
75
|
async getValue(_) {
|
|
75
76
|
called = true;
|
|
76
77
|
return '';
|
|
@@ -79,14 +80,14 @@ test('context provider can be registered using PluginHost', async () => {
|
|
|
79
80
|
const context = new settings_1.Context();
|
|
80
81
|
// WHEN
|
|
81
82
|
await contextproviders.provideContextValues([
|
|
82
|
-
{ key: 'asdf', props: { account: '1234', region: 'us-east-1' }, provider:
|
|
83
|
+
{ key: 'asdf', props: { account: '1234', region: 'us-east-1', pluginName: 'prov' }, provider: PLUGIN_PROVIDER },
|
|
83
84
|
], context, mockSDK);
|
|
84
85
|
// THEN - error is marked transient
|
|
85
86
|
expect(called).toEqual(true);
|
|
86
87
|
});
|
|
87
|
-
test('context provider can be called without account/region', async () => {
|
|
88
|
+
test('plugin context provider can be called without account/region', async () => {
|
|
88
89
|
// GIVEN
|
|
89
|
-
plugin_1.PluginHost.instance.registerContextProviderAlpha(
|
|
90
|
+
plugin_1.PluginHost.instance.registerContextProviderAlpha('prov', {
|
|
90
91
|
async getValue(_) {
|
|
91
92
|
return 'yay';
|
|
92
93
|
},
|
|
@@ -94,9 +95,9 @@ test('context provider can be called without account/region', async () => {
|
|
|
94
95
|
const context = new settings_1.Context();
|
|
95
96
|
// WHEN
|
|
96
97
|
await contextproviders.provideContextValues([
|
|
97
|
-
{ key: 'asdf', props: { banana: 'yellow' }, provider:
|
|
98
|
+
{ key: 'asdf', props: { banana: 'yellow', pluginName: 'prov' }, provider: PLUGIN_PROVIDER },
|
|
98
99
|
], context, mockSDK);
|
|
99
100
|
// THEN - error is marked transient
|
|
100
101
|
expect(context.get('asdf')).toEqual('yay');
|
|
101
102
|
});
|
|
102
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
103
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJpYy50ZXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiZ2VuZXJpYy50ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsNkNBQThDO0FBQzlDLGdFQUFnRTtBQUNoRSxpREFBb0U7QUFDcEUsK0NBQW1EO0FBRW5ELE1BQU0sT0FBTyxHQUFHLElBQUksMEJBQWUsRUFBRSxDQUFDO0FBRXRDLE1BQU0sYUFBYSxHQUFRLGNBQWMsQ0FBQztBQUMxQyxNQUFNLGVBQWUsR0FBUSxRQUFRLENBQUM7QUFFdEMsSUFBSSxDQUFDLDRDQUE0QyxFQUFFLEtBQUssSUFBSSxFQUFFO0lBQzVELFFBQVE7SUFDUixnQkFBZ0IsQ0FBQyx1QkFBdUIsQ0FBQyxhQUFhLEVBQUU7UUFDdEQsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUF1QjtZQUNwQyxNQUFNLElBQUksS0FBSyxDQUFDLHNCQUFzQixDQUFDLENBQUM7UUFDMUMsQ0FBQztLQUNGLENBQUMsQ0FBQztJQUNILE1BQU0sT0FBTyxHQUFHLElBQUksa0JBQU8sRUFBRSxDQUFDO0lBRTlCLE9BQU87SUFDUCxNQUFNLGdCQUFnQixDQUFDLG9CQUFvQixDQUFDO1FBQzFDLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxXQUFXLEVBQUUsRUFBRSxRQUFRLEVBQUUsYUFBYSxFQUFFO0tBQzFGLEVBQUUsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBRXJCLGlDQUFpQztJQUVqQyxrRUFBa0U7SUFDbEUseUJBQXlCO0lBQ3pCLE1BQU0sQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLGNBQWMsQ0FBQyxDQUFDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO0FBQzFFLENBQUMsQ0FBQyxDQUFDO0FBRUgsSUFBSSxDQUFDLDZCQUE2QixFQUFFLEtBQUssSUFBSSxFQUFFO0lBQzdDLFFBQVE7SUFD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QixDQUFDLENBQUMsQ0FBQztBQUVILElBQUksQ0FBQyw4REFBOEQsRUFBRSxLQUFLLElBQUksRUFBRTtJQUM5RSxRQUFRO0lBQ1IsbUJBQVUsQ0FBQyxRQUFRLENBQUMsNEJBQTRCLENBQUMsTUFBTSxFQUFFO1FBQ3ZELEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBdUI7WUFDcEMsT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDO0tBQ0YsQ0FBQyxDQUFDO0lBQ0gsTUFBTSxPQUFPLEdBQUcsSUFBSSxrQkFBTyxFQUFFLENBQUM7SUFFOUIsT0FBTztJQUNQLE1BQU0sZ0JBQWdCLENBQUMsb0JBQW9CLENBQUM7UUFDMUMsRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBUyxFQUFFLFFBQVEsRUFBRSxlQUFlLEVBQUU7S0FDbkcsRUFBRSxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFFckIsbUNBQW1DO0lBQ25DLE1BQU0sQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQzdDLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGx1Z2luSG9zdCB9IGZyb20gJy4uLy4uL2xpYi9wbHVnaW4nO1xuaW1wb3J0ICogYXMgY29udGV4dHByb3ZpZGVycyBmcm9tICcuLi8uLi9saWIvY29udGV4dC1wcm92aWRlcnMnO1xuaW1wb3J0IHsgQ29udGV4dCwgVFJBTlNJRU5UX0NPTlRFWFRfS0VZIH0gZnJvbSAnLi4vLi4vbGliL3NldHRpbmdzJztcbmltcG9ydCB7IE1vY2tTZGtQcm92aWRlciB9IGZyb20gJy4uL3V0aWwvbW9jay1zZGsnO1xuXG5jb25zdCBtb2NrU0RLID0gbmV3IE1vY2tTZGtQcm92aWRlcigpO1xuXG5jb25zdCBURVNUX1BST1ZJREVSOiBhbnkgPSAndGVzdHByb3ZpZGVyJztcbmNvbnN0IFBMVUdJTl9QUk9WSURFUjogYW55ID0gJ3BsdWdpbic7XG5cbnRlc3QoJ2Vycm9ycyBhcmUgcmVwb3J0ZWQgaW50byB0aGUgY29udGV4dCB2YWx1ZScsIGFzeW5jICgpID0+IHtcbiAgLy8gR0lWRU5cbiAgY29udGV4dHByb3ZpZGVycy5yZWdpc3RlckNvbnRleHRQcm92aWRlcihURVNUX1BST1ZJREVSLCB7XG4gICAgYXN5bmMgZ2V0VmFsdWUoXzoge1trZXk6IHN0cmluZ106IGFueX0pOiBQcm9taXNlPGFueT4ge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdTb21ldGhpbmcgd2VudCB3cm9uZycpO1xuICAgIH0sXG4gIH0pO1xuICBjb25zdCBjb250ZXh0ID0gbmV3IENvbnRleHQoKTtcblxuICAvLyBXSEVOXG4gIGF3YWl0IGNvbnRleHRwcm92aWRlcnMucHJvdmlkZUNvbnRleHRWYWx1ZXMoW1xuICAgIHsga2V5OiAnYXNkZicsIHByb3BzOiB7IGFjY291bnQ6ICcxMjM0JywgcmVnaW9uOiAndXMtZWFzdC0xJyB9LCBwcm92aWRlcjogVEVTVF9QUk9WSURFUiB9LFxuICBdLCBjb250ZXh0LCBtb2NrU0RLKTtcblxuICAvLyBUSEVOIC0gZXJyb3IgaXMgbm93IGluIGNvbnRleHRcblxuICAvLyBOT1RFOiBlcnJvciBrZXkgaXMgaW5saW5lZCBoZXJlIGJlY2F1c2UgaXQncyBwYXJ0IG9mIHRoZSBDWC1BUElcbiAgLy8gY29tcGF0aWJpbGl0eSBzdXJmYWNlLlxuICBleHBlY3QoY29udGV4dC5nZXQoJ2FzZGYnKS4kcHJvdmlkZXJFcnJvcikudG9CZSgnU29tZXRoaW5nIHdlbnQgd3JvbmcnKTtcbn0pO1xuXG50ZXN0KCdsb29rdXAgcm9sZSBBUk4gaXMgcmVzb2x2ZWQnLCBhc3luYyAoKSA9PiB7XG4gIC8vIEdJVkVOXG4gIGNvbnRleHRwcm92aWRlcnMucmVnaXN0ZXJDb250ZXh0UHJvdmlkZXIoVEVTVF9QUk9WSURFUiwge1xuICAgIGFzeW5jIGdldFZhbHVlKGFyZ3M6IHtba2V5OiBzdHJpbmddOiBhbnl9KTogUHJvbWlzZTxhbnk+IHtcbiAgICAgIGlmIChhcmdzLmxvb2t1cFJvbGVBcm4gPT0gbnVsbCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIGxvb2t1cFJvbGVBcm4nKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGFyZ3MubG9va3VwUm9sZUFybi5pbmNsdWRlcygnJHtBV1M6OlBhcnRpdGlvbn0nKSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1BhcnRpdGlvbiBub3QgcmVzb2x2ZWQnKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuICdzb21lIHJlc29sdmVkIHZhbHVlJztcbiAgICB9LFxuICB9KTtcbiAgY29uc3QgY29udGV4dCA9IG5ldyBDb250ZXh0KCk7XG5cbiAgLy8gV0hFTlxuICBhd2FpdCBjb250ZXh0cHJvdmlkZXJzLnByb3ZpZGVDb250ZXh0VmFsdWVzKFtcbiAgICB7XG4gICAgICBrZXk6ICdhc2RmJyxcbiAgICAgIHByb3BzOiB7XG4gICAgICAgIGFjY291bnQ6ICcxMjM0JyxcbiAgICAgICAgcmVnaW9uOiAndXMtZWFzdC0xJyxcbiAgICAgICAgbG9va3VwUm9sZUFybjogJ2Fybjoke0FXUzo6UGFydGl0aW9ufTppYW06OjI4MDYxOTk0Nzc5MTpyb2xlL2Nkay1obmI2NTlmZHMtbG9va3VwLXJvbGUtMjgwNjE5OTQ3NzkxLXVzLWVhc3QtMScsXG4gICAgICB9LFxuICAgICAgcHJvdmlkZXI6IFRFU1RfUFJPVklERVIsXG4gICAgfSxcbiAgXSwgY29udGV4dCwgbW9ja1NESyk7XG5cbiAgLy8gVEhFTiAtIFZhbHVlIGdldHMgcmVzb2x2ZWRcbiAgZXhwZWN0KGNvbnRleHQuZ2V0KCdhc2RmJykpLnRvRXF1YWwoJ3NvbWUgcmVzb2x2ZWQgdmFsdWUnKTtcbn0pO1xuXG50ZXN0KCdlcnJvcnMgYXJlIG1hcmtlZCB0cmFuc2llbnQnLCBhc3luYyAoKSA9PiB7XG4gIC8vIEdJVkVOXG4gIGNvbnRleHRwcm92aWRlcnMucmVnaXN0ZXJDb250ZXh0UHJvdmlkZXIoVEVTVF9QUk9WSURFUiwge1xuICAgIGFzeW5jIGdldFZhbHVlKF86IHtba2V5OiBzdHJpbmddOiBhbnl9KTogUHJvbWlzZTxhbnk+IHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignU29tZXRoaW5nIHdlbnQgd3JvbmcnKTtcbiAgICB9LFxuICB9KTtcbiAgY29uc3QgY29udGV4dCA9IG5ldyBDb250ZXh0KCk7XG5cbiAgLy8gV0hFTlxuICBhd2FpdCBjb250ZXh0cHJvdmlkZXJzLnByb3ZpZGVDb250ZXh0VmFsdWVzKFtcbiAgICB7IGtleTogJ2FzZGYnLCBwcm9wczogeyBhY2NvdW50OiAnMTIzNCcsIHJlZ2lvbjogJ3VzLWVhc3QtMScgfSwgcHJvdmlkZXI6IFRFU1RfUFJPVklERVIgfSxcbiAgXSwgY29udGV4dCwgbW9ja1NESyk7XG5cbiAgLy8gVEhFTiAtIGVycm9yIGlzIG1hcmtlZCB0cmFuc2llbnRcbiAgZXhwZWN0KGNvbnRleHQuZ2V0KCdhc2RmJylbVFJBTlNJRU5UX0NPTlRFWFRfS0VZXSkudG9CZVRydXRoeSgpO1xufSk7XG5cbnRlc3QoJ2NvbnRleHQgcHJvdmlkZXIgY2FuIGJlIHJlZ2lzdGVyZWQgdXNpbmcgUGx1Z2luSG9zdCcsIGFzeW5jICgpID0+IHtcbiAgbGV0IGNhbGxlZCA9IGZhbHNlO1xuXG4gIC8vIEdJVkVOXG4gIFBsdWdpbkhvc3QuaW5zdGFuY2UucmVnaXN0ZXJDb250ZXh0UHJvdmlkZXJBbHBoYSgncHJvdicsIHtcbiAgICBhc3luYyBnZXRWYWx1ZShfOiB7W2tleTogc3RyaW5nXTogYW55fSk6IFByb21pc2U8YW55PiB7XG4gICAgICBjYWxsZWQgPSB0cnVlO1xuICAgICAgcmV0dXJuICcnO1xuICAgIH0sXG4gIH0pO1xuICBjb25zdCBjb250ZXh0ID0gbmV3IENvbnRleHQoKTtcblxuICAvLyBXSEVOXG4gIGF3YWl0IGNvbnRleHRwcm92aWRlcnMucHJvdmlkZUNvbnRleHRWYWx1ZXMoW1xuICAgIHsga2V5OiAnYXNkZicsIHByb3BzOiB7IGFjY291bnQ6ICcxMjM0JywgcmVnaW9uOiAndXMtZWFzdC0xJywgcGx1Z2luTmFtZTogJ3Byb3YnIH0sIHByb3ZpZGVyOiBQTFVHSU5fUFJPVklERVIgfSxcbiAgXSwgY29udGV4dCwgbW9ja1NESyk7XG5cbiAgLy8gVEhFTiAtIGVycm9yIGlzIG1hcmtlZCB0cmFuc2llbnRcbiAgZXhwZWN0KGNhbGxlZCkudG9FcXVhbCh0cnVlKTtcbn0pO1xuXG50ZXN0KCdwbHVnaW4gY29udGV4dCBwcm92aWRlciBjYW4gYmUgY2FsbGVkIHdpdGhvdXQgYWNjb3VudC9yZWdpb24nLCBhc3luYyAoKSA9PiB7XG4gIC8vIEdJVkVOXG4gIFBsdWdpbkhvc3QuaW5zdGFuY2UucmVnaXN0ZXJDb250ZXh0UHJvdmlkZXJBbHBoYSgncHJvdicsIHtcbiAgICBhc3luYyBnZXRWYWx1ZShfOiB7W2tleTogc3RyaW5nXTogYW55fSk6IFByb21pc2U8YW55PiB7XG4gICAgICByZXR1cm4gJ3lheSc7XG4gICAgfSxcbiAgfSk7XG4gIGNvbnN0IGNvbnRleHQgPSBuZXcgQ29udGV4dCgpO1xuXG4gIC8vIFdIRU5cbiAgYXdhaXQgY29udGV4dHByb3ZpZGVycy5wcm92aWRlQ29udGV4dFZhbHVlcyhbXG4gICAgeyBrZXk6ICdhc2RmJywgcHJvcHM6IHsgYmFuYW5hOiAneWVsbG93JywgcGx1Z2luTmFtZTogJ3Byb3YnIH0gYXMgYW55LCBwcm92aWRlcjogUExVR0lOX1BST1ZJREVSIH0sXG4gIF0sIGNvbnRleHQsIG1vY2tTREspO1xuXG4gIC8vIFRIRU4gLSBlcnJvciBpcyBtYXJrZWQgdHJhbnNpZW50XG4gIGV4cGVjdChjb250ZXh0LmdldCgnYXNkZicpKS50b0VxdWFsKCd5YXknKTtcbn0pO1xuIl19
|